From b066a4128d0971c16ab88ef1673115e4a7d16a54 Mon Sep 17 00:00:00 2001 From: Kris Date: Wed, 6 Nov 2019 14:00:29 -0500 Subject: [PATCH 001/408] Adding a text-overflow: ellipsis; mixin and related cleanup --- .../stylesheets/common/admin/admin_base.scss | 8 ++------ .../common/admin/admin_report_counters.scss | 4 +--- .../common/admin/admin_report_table.scss | 15 ++++---------- .../stylesheets/common/admin/customize.scss | 6 +++++- .../stylesheets/common/admin/emails.scss | 8 ++------ .../stylesheets/common/admin/users.scss | 4 +--- .../common/base/category-list.scss | 15 +++----------- .../stylesheets/common/base/compose.scss | 12 +++-------- app/assets/stylesheets/common/base/emoji.scss | 4 +--- .../stylesheets/common/base/header.scss | 20 +++++-------------- .../stylesheets/common/base/lightbox.scss | 4 +--- .../stylesheets/common/base/menu-panel.scss | 8 +------- .../stylesheets/common/base/onebox.scss | 9 +++------ .../stylesheets/common/base/reviewables.scss | 7 ++----- .../stylesheets/common/base/search-menu.scss | 8 ++------ .../stylesheets/common/base/tagging.scss | 4 +--- .../stylesheets/common/base/topic-post.scss | 4 +--- app/assets/stylesheets/common/base/topic.scss | 4 +--- app/assets/stylesheets/common/base/user.scss | 6 +----- .../common/components/user-card.scss | 16 +++------------ .../common/components/user-info.scss | 4 +--- .../common/components/user-stream-item.scss | 8 ++------ .../stylesheets/common/foundation/mixins.scss | 6 ++++++ .../select-kit/dropdown-select-box.scss | 4 +--- .../common/select-kit/select-kit.scss | 4 +--- .../stylesheets/desktop/category-list.scss | 4 +--- app/assets/stylesheets/desktop/user.scss | 8 ++------ .../mobile/components/user-card.scss | 4 +--- app/assets/stylesheets/mobile/compose.scss | 4 +--- app/assets/stylesheets/mobile/header.scss | 4 +--- .../common/discourse-local-dates.scss | 4 +--- 31 files changed, 61 insertions(+), 159 deletions(-) diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss index 9b72049a89..a45e49ac60 100644 --- a/app/assets/stylesheets/common/admin/admin_base.scss +++ b/app/assets/stylesheets/common/admin/admin_base.scss @@ -313,9 +313,7 @@ $mobile-breakpoint: 700px; } td.x-value { max-width: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + @include ellipsis; } } .bar-container { @@ -861,9 +859,7 @@ table#user-badges { .value-list { .value { padding: 0.125em 0; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; display: flex; &:last-child { diff --git a/app/assets/stylesheets/common/admin/admin_report_counters.scss b/app/assets/stylesheets/common/admin/admin_report_counters.scss index 0496e7dd3b..1731ef65cb 100644 --- a/app/assets/stylesheets/common/admin/admin_report_counters.scss +++ b/app/assets/stylesheets/common/admin/admin_report_counters.scss @@ -37,9 +37,7 @@ &.title { text-align: left; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; + @include ellipsis; .d-icon { color: $primary-low-mid; diff --git a/app/assets/stylesheets/common/admin/admin_report_table.scss b/app/assets/stylesheets/common/admin/admin_report_table.scss index e63330355a..2de64f7326 100644 --- a/app/assets/stylesheets/common/admin/admin_report_table.scss +++ b/app/assets/stylesheets/common/admin/admin_report_table.scss @@ -2,9 +2,7 @@ &.two-columns { .table .admin-report-table-cell:first-child, .table .admin-report-table-header:first-child { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; + @include ellipsis; text-align: left; width: 80%; } @@ -32,8 +30,7 @@ outline: none; background: none; padding: 3px 8px; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } &.is-current-sort { @@ -106,9 +103,7 @@ } .admin-report-table-cell.term { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; + @include ellipsis; } } @@ -132,9 +127,7 @@ .admin-report-table-cell.post, .admin-report-table-cell.edit_reason { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; + @include ellipsis; } } diff --git a/app/assets/stylesheets/common/admin/customize.scss b/app/assets/stylesheets/common/admin/customize.scss index 7bc0de21ac..4495cf2ded 100644 --- a/app/assets/stylesheets/common/admin/customize.scss +++ b/app/assets/stylesheets/common/admin/customize.scss @@ -589,7 +589,11 @@ .category, .external_url, .post { - text-overflow: ellipsis; + @include ellipsis; + max-width: 100px; + @include breakpoint(tablet) { + max-width: 100%; + } } &.grid tr.admin-list-item { diff --git a/app/assets/stylesheets/common/admin/emails.scss b/app/assets/stylesheets/common/admin/emails.scss index cb71da61aa..4684d98500 100644 --- a/app/assets/stylesheets/common/admin/emails.scss +++ b/app/assets/stylesheets/common/admin/emails.scss @@ -15,16 +15,12 @@ } .username div { max-width: 180px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .addresses p { margin: 2px 0; max-width: 200px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } } diff --git a/app/assets/stylesheets/common/admin/users.scss b/app/assets/stylesheets/common/admin/users.scss index 87bf9bffa9..29f430a5de 100644 --- a/app/assets/stylesheets/common/admin/users.scss +++ b/app/assets/stylesheets/common/admin/users.scss @@ -102,10 +102,8 @@ .admin-users-list { td.username { - white-space: nowrap; + @include ellipsis; overflow-wrap: break-word; - overflow: hidden; - text-overflow: ellipsis; } @media screen and (max-width: 970px) and (min-width: 768px) { td.username { diff --git a/app/assets/stylesheets/common/base/category-list.scss b/app/assets/stylesheets/common/base/category-list.scss index ba256cc086..7ad6f5044b 100644 --- a/app/assets/stylesheets/common/base/category-list.scss +++ b/app/assets/stylesheets/common/base/category-list.scss @@ -7,8 +7,7 @@ .category-name { display: inline-block; max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; vertical-align: text-top; line-height: $line-height-medium; } @@ -109,8 +108,6 @@ color: dark-light-choose($primary-medium, $secondary-high); .overflow { max-height: 6em; - overflow: hidden; - text-overflow: ellipsis; } } @@ -122,7 +119,6 @@ text-align: center; color: $primary; overflow: hidden; - text-overflow: ellipsis; } .subcategories { @@ -131,9 +127,7 @@ .subcategory { display: flex; align-items: center; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + @include ellipsis; margin-right: 1em; margin-bottom: 0.6em; .subcategory-image-placeholder { @@ -142,8 +136,7 @@ } .subcategory-link { min-width: 0; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .logo img { display: inline-block; @@ -166,7 +159,6 @@ font-size: $font-up-2; text-align: center; overflow: hidden; - text-overflow: ellipsis; } .category-box-heading { @@ -192,7 +184,6 @@ .overflow { max-height: 3em; overflow: hidden; - text-overflow: ellipsis; } .d-icon { margin-right: 0.15em; diff --git a/app/assets/stylesheets/common/base/compose.scss b/app/assets/stylesheets/common/base/compose.scss index ff516a3c3a..f6505c1b4d 100644 --- a/app/assets/stylesheets/common/base/compose.scss +++ b/app/assets/stylesheets/common/base/compose.scss @@ -122,9 +122,7 @@ } .action-title { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .topic-link, @@ -136,9 +134,7 @@ .username { margin-right: 5px; max-width: 100px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + @include ellipsis; @media screen and (max-width: 500px) { display: none; } @@ -358,9 +354,7 @@ a { padding: 5px; display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; span.username { color: $primary; diff --git a/app/assets/stylesheets/common/base/emoji.scss b/app/assets/stylesheets/common/base/emoji.scss index cf3869e3df..0c59b17842 100644 --- a/app/assets/stylesheets/common/base/emoji.scss +++ b/app/assets/stylesheets/common/base/emoji.scss @@ -106,10 +106,8 @@ sup img.emoji { } .emoji-picker .info { - text-overflow: ellipsis; + @include ellipsis; padding-left: 8px; - white-space: nowrap; - overflow: hidden; font-weight: 700; max-width: 125px; } diff --git a/app/assets/stylesheets/common/base/header.scss b/app/assets/stylesheets/common/base/header.scss index 603585af54..f95b8ded1e 100644 --- a/app/assets/stylesheets/common/base/header.scss +++ b/app/assets/stylesheets/common/base/header.scss @@ -245,9 +245,7 @@ .topic-link { color: $header_primary; display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .topic-statuses { .d-icon { @@ -275,9 +273,7 @@ flex: 0 1 auto; min-width: 1px; .badge-wrapper { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + @include ellipsis; } } .badge-wrapper { @@ -305,9 +301,7 @@ flex: 1 0 0%; // unit on flex-basis is required for IE11 .discourse-tags { color: $header_primary-high; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + @include ellipsis; .discourse-tag { display: inline; // tags need to stay inline in order for them to truncate } @@ -357,9 +351,7 @@ $mobile-avatar-height: 1.532em; padding: 0 5px; border: 1px solid $primary-low; border-radius: 0.25em; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + @include ellipsis; .icon { display: flex; @@ -376,9 +368,7 @@ $mobile-avatar-height: 1.532em; } span { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + @include ellipsis; } } diff --git a/app/assets/stylesheets/common/base/lightbox.scss b/app/assets/stylesheets/common/base/lightbox.scss index 20ed8ebea6..dc75b54a07 100644 --- a/app/assets/stylesheets/common/base/lightbox.scss +++ b/app/assets/stylesheets/common/base/lightbox.scss @@ -47,9 +47,7 @@ $meta-element-margin: 6px; .filename { margin: $meta-element-margin; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + @include ellipsis; } .d-icon { diff --git a/app/assets/stylesheets/common/base/menu-panel.scss b/app/assets/stylesheets/common/base/menu-panel.scss index a02fccf8b8..d03cb2cb99 100644 --- a/app/assets/stylesheets/common/base/menu-panel.scss +++ b/app/assets/stylesheets/common/base/menu-panel.scss @@ -115,8 +115,6 @@ line-height: $line-height-large; } .badge-wrapper { - overflow: hidden; - text-overflow: ellipsis; &.bar, &.bullet { color: $primary; @@ -143,8 +141,6 @@ span.badge-category { max-width: 100px; - overflow: hidden; - text-overflow: ellipsis; } div.discourse-tags { @@ -341,9 +337,7 @@ div.menu-links-header { span.d-label { display: block; max-width: 130px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + @include ellipsis; } @include breakpoint(mobile-medium) { diff --git a/app/assets/stylesheets/common/base/onebox.scss b/app/assets/stylesheets/common/base/onebox.scss index e44e7d2d7f..c09bfb54b6 100644 --- a/app/assets/stylesheets/common/base/onebox.scss +++ b/app/assets/stylesheets/common/base/onebox.scss @@ -562,21 +562,18 @@ aside.onebox.twitterstatus .onebox-body { .outer-box { position: absolute; z-index: z("base"); - overflow: hidden; font-size: $font-down-1; color: #fff; background-color: rgba(0, 0, 0, 0.6); - text-overflow: ellipsis; - max-width: 100%; + @include ellipsis; + max-width: 690px; padding: 5px 0; .inner-box { padding-left: 10px; padding-right: 10px; overflow: hidden; - text-overflow: ellipsis; - word-wrap: normal; - white-space: nowrap; + @include ellipsis; .album-title { width: 100%; diff --git a/app/assets/stylesheets/common/base/reviewables.scss b/app/assets/stylesheets/common/base/reviewables.scss index e47cb5287f..6adae41eda 100644 --- a/app/assets/stylesheets/common/base/reviewables.scss +++ b/app/assets/stylesheets/common/base/reviewables.scss @@ -284,7 +284,6 @@ .reviewed-by { display: flex; align-items: center; - white-space: nowrap; } .user-flag-percentage { @@ -309,8 +308,7 @@ &.user a, &.reviewed-by a { max-width: 150px; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } } @@ -327,8 +325,7 @@ padding: 0.5em 1em 0.5em 0; } @include breakpoint("mobile-large") { - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; padding-right: 0.5em; } } diff --git a/app/assets/stylesheets/common/base/search-menu.scss b/app/assets/stylesheets/common/base/search-menu.scss index 0ba64993ba..04d4714463 100644 --- a/app/assets/stylesheets/common/base/search-menu.scss +++ b/app/assets/stylesheets/common/base/search-menu.scss @@ -153,9 +153,7 @@ .name, .slug { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .name { @@ -207,9 +205,7 @@ .username, .name { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .username { diff --git a/app/assets/stylesheets/common/base/tagging.scss b/app/assets/stylesheets/common/base/tagging.scss index 0802a3a8f5..0502b68717 100644 --- a/app/assets/stylesheets/common/base/tagging.scss +++ b/app/assets/stylesheets/common/base/tagging.scss @@ -71,9 +71,7 @@ $tag-color: $primary-medium; .discourse-tag { max-width: 14em; display: inline-block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; vertical-align: middle; } diff --git a/app/assets/stylesheets/common/base/topic-post.scss b/app/assets/stylesheets/common/base/topic-post.scss index 03c00c58ed..b2fd2b5db1 100644 --- a/app/assets/stylesheets/common/base/topic-post.scss +++ b/app/assets/stylesheets/common/base/topic-post.scss @@ -53,9 +53,7 @@ font-size: $font-0; margin-right: 8px; display: inline-block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; vertical-align: middle; a { color: dark-light-choose($primary-high, $secondary-low); diff --git a/app/assets/stylesheets/common/base/topic.scss b/app/assets/stylesheets/common/base/topic.scss index 88c3c8e1dd..a4f1bdc34b 100644 --- a/app/assets/stylesheets/common/base/topic.scss +++ b/app/assets/stylesheets/common/base/topic.scss @@ -220,9 +220,7 @@ a.badge-category { display: flex; align-items: center; span:not(.badge) { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + @include ellipsis; } } ul { diff --git a/app/assets/stylesheets/common/base/user.scss b/app/assets/stylesheets/common/base/user.scss index 872661991c..8fdafe020f 100644 --- a/app/assets/stylesheets/common/base/user.scss +++ b/app/assets/stylesheets/common/base/user.scss @@ -143,8 +143,6 @@ dd { padding: 0; margin: 0 15px 0 0; - overflow: hidden; - text-overflow: ellipsis; color: $primary; &.groups { @@ -182,9 +180,7 @@ h2 { font-weight: normal; max-width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } h3 { diff --git a/app/assets/stylesheets/common/components/user-card.scss b/app/assets/stylesheets/common/components/user-card.scss index c1132c06e5..21e15ec0b7 100644 --- a/app/assets/stylesheets/common/components/user-card.scss +++ b/app/assets/stylesheets/common/components/user-card.scss @@ -119,9 +119,7 @@ $avatar_margin: -50px; // negative margin makes avatars extend above cards h2, h3 { margin: 0; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } h1, h2 { @@ -201,9 +199,7 @@ $avatar_margin: -50px; // negative margin makes avatars extend above cards } .website-name a, .location span { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + @include ellipsis; color: $primary; } .location { @@ -226,17 +222,11 @@ $avatar_margin: -50px; // negative margin makes avatars extend above cards display: flex; align-items: flex-start; .user-badge { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; background: $primary-very-low; border: 1px solid $primary-low; color: $primary; } - .badge-display-name { - overflow: hidden; - text-overflow: ellipsis; - } .more-user-badges { a { @extend .user-badge; diff --git a/app/assets/stylesheets/common/components/user-info.scss b/app/assets/stylesheets/common/components/user-info.scss index fee047c488..b92b452882 100644 --- a/app/assets/stylesheets/common/components/user-info.scss +++ b/app/assets/stylesheets/common/components/user-info.scss @@ -24,9 +24,7 @@ } .name-line { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .username a { diff --git a/app/assets/stylesheets/common/components/user-stream-item.scss b/app/assets/stylesheets/common/components/user-stream-item.scss index 817225165f..284d0ba479 100644 --- a/app/assets/stylesheets/common/components/user-stream-item.scss +++ b/app/assets/stylesheets/common/components/user-stream-item.scss @@ -66,18 +66,14 @@ } .title { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; display: block; } .name { font-size: $font-0; max-width: 400px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .edit-reason { diff --git a/app/assets/stylesheets/common/foundation/mixins.scss b/app/assets/stylesheets/common/foundation/mixins.scss index 99f7634547..b2ce6a55f7 100644 --- a/app/assets/stylesheets/common/foundation/mixins.scss +++ b/app/assets/stylesheets/common/foundation/mixins.scss @@ -57,6 +57,12 @@ $breakpoints: ( } } +@mixin ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + // // -------------------------------------------------- diff --git a/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss b/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss index d257494c44..d1ef732cfd 100644 --- a/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss +++ b/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss @@ -78,9 +78,7 @@ font-size: $font-0; color: $primary; padding: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + @include ellipsis; max-width: 100%; } diff --git a/app/assets/stylesheets/common/select-kit/select-kit.scss b/app/assets/stylesheets/common/select-kit/select-kit.scss index c0d86c737b..8cb552acb1 100644 --- a/app/assets/stylesheets/common/select-kit/select-kit.scss +++ b/app/assets/stylesheets/common/select-kit/select-kit.scss @@ -71,9 +71,7 @@ text-align: left; flex: 0 1 auto; padding: 1px 0; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; + @include ellipsis; color: inherit; } diff --git a/app/assets/stylesheets/desktop/category-list.scss b/app/assets/stylesheets/desktop/category-list.scss index 2fc738478c..8e6e8afc9d 100644 --- a/app/assets/stylesheets/desktop/category-list.scss +++ b/app/assets/stylesheets/desktop/category-list.scss @@ -80,9 +80,7 @@ color: dark-light-choose($primary-medium, $secondary-high); } .title { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; flex: 0 1 auto; } .topic-statuses { diff --git a/app/assets/stylesheets/desktop/user.scss b/app/assets/stylesheets/desktop/user.scss index b951457984..a7c73db6c5 100644 --- a/app/assets/stylesheets/desktop/user.scss +++ b/app/assets/stylesheets/desktop/user.scss @@ -124,16 +124,12 @@ } h1 { max-width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } .location-and-website { display: flex; max-width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + @include ellipsis; .user-profile-location { margin-right: 1em; } diff --git a/app/assets/stylesheets/mobile/components/user-card.scss b/app/assets/stylesheets/mobile/components/user-card.scss index 5d87399f9d..0345aaf743 100644 --- a/app/assets/stylesheets/mobile/components/user-card.scss +++ b/app/assets/stylesheets/mobile/components/user-card.scss @@ -28,9 +28,7 @@ $avatar_width: 120px; border-left: 0.5em solid transparent; } button { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } } } diff --git a/app/assets/stylesheets/mobile/compose.scss b/app/assets/stylesheets/mobile/compose.scss index 2f25202bbc..3919886d80 100644 --- a/app/assets/stylesheets/mobile/compose.scss +++ b/app/assets/stylesheets/mobile/compose.scss @@ -71,9 +71,7 @@ } .draft-text { width: calc(100% - 40px); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; } } diff --git a/app/assets/stylesheets/mobile/header.scss b/app/assets/stylesheets/mobile/header.scss index 43e9813f2e..413d753fc6 100644 --- a/app/assets/stylesheets/mobile/header.scss +++ b/app/assets/stylesheets/mobile/header.scss @@ -8,9 +8,7 @@ // some protection for text-only site titles .title { max-width: 75%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; -webkit-animation: fadein 0.5s; animation: fadein 0.5s; // This acts as a placeholder if for some reason the small logo takes a while diff --git a/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss b/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss index c4edbf91a9..66593514d7 100644 --- a/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss +++ b/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss @@ -198,9 +198,7 @@ border: 0; outline: none; flex: 1; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + @include ellipsis; width: 100%; text-align: left; } From 9ef97ff44fb73ef5c9b89ebb9fcf29cf4a90fb85 Mon Sep 17 00:00:00 2001 From: Kris Date: Wed, 6 Nov 2019 14:16:23 -0500 Subject: [PATCH 002/408] fix for 1aa96a5 --- app/assets/stylesheets/wizard.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/wizard.scss b/app/assets/stylesheets/wizard.scss index a5d2019184..ae333551f3 100644 --- a/app/assets/stylesheets/wizard.scss +++ b/app/assets/stylesheets/wizard.scss @@ -2,6 +2,7 @@ @import "vendor/sweetalert"; @import "common/foundation/colors"; @import "common/foundation/variables"; +@import "common/foundation/mixins"; @import "common/select-kit/*"; @import "common/components/svg"; From 61e35ce5dcf5c361109db1924d5329463c5c0027 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Wed, 6 Nov 2019 14:45:18 -0500 Subject: [PATCH 003/408] DEV: Ignore renames when diffing theme changes (take 2) Better fix than ca6adfbd --- lib/theme_store/git_importer.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/theme_store/git_importer.rb b/lib/theme_store/git_importer.rb index b844547e7d..ac91cdec13 100644 --- a/lib/theme_store/git_importer.rb +++ b/lib/theme_store/git_importer.rb @@ -38,9 +38,9 @@ class ThemeStore::GitImporter Discourse::Utils.execute_command("rm -rf ./*/") Discourse::Utils.execute_command("cp", "-rf", "#{local_temp_folder}/#{exporter.export_name}/.", @temp_folder) Discourse::Utils.execute_command("git", "checkout", "about.json") - # adding and diffing on staged so that we catch uploads + # add + diff staged to catch uploads but exclude renamed assets Discourse::Utils.execute_command("git", "add", "-A") - return Discourse::Utils.execute_command("git", "diff", "--staged", "--no-renames") + return Discourse::Utils.execute_command("git", "diff", "--staged", "--diff-filter=r") end ensure FileUtils.rm_rf local_temp_folder if local_temp_folder From 6c9af6d81e6d5daaca7c232ca11ee61e0a007544 Mon Sep 17 00:00:00 2001 From: Kris Date: Wed, 6 Nov 2019 15:07:51 -0500 Subject: [PATCH 004/408] FIX: Too much blank padding in video oneboxes --- app/assets/stylesheets/desktop/topic-post.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/assets/stylesheets/desktop/topic-post.scss b/app/assets/stylesheets/desktop/topic-post.scss index 0ec4d3446b..4abaa8d21a 100644 --- a/app/assets/stylesheets/desktop/topic-post.scss +++ b/app/assets/stylesheets/desktop/topic-post.scss @@ -495,6 +495,14 @@ video { max-height: 500px; } +.video { + // Height determined by aspect-ratio + max-height: 500px; + > video { + max-height: unset; + } +} + @-webkit-keyframes fadein { from { opacity: 0; From bf778d66b510bf54910d875ff57020503030ae24 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Wed, 6 Nov 2019 14:25:45 -0600 Subject: [PATCH 005/408] FIX: unicode group names encoded for url (#8302) --- app/controllers/list_controller.rb | 3 +++ spec/requests/list_controller_spec.rb | 33 +++++++++++++++++++-------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb index bba2d3c9b6..d0477377dd 100644 --- a/app/controllers/list_controller.rb +++ b/app/controllers/list_controller.rb @@ -385,6 +385,9 @@ class ListController < ApplicationController end opts = opts.dup + if SiteSetting.unicode_usernames && opts[:group_name] + opts[:group_name] = URI.encode(opts[:group_name]) + end opts.delete(:category) if page_params.include?(:category_slug_path_with_id) public_send(method, opts.merge(page_params)).sub('.json?', '?') diff --git a/spec/requests/list_controller_spec.rb b/spec/requests/list_controller_spec.rb index 5148a6e07d..eb5ce4d2b6 100644 --- a/spec/requests/list_controller_spec.rb +++ b/spec/requests/list_controller_spec.rb @@ -195,19 +195,34 @@ RSpec.describe ListController do user end - let!(:topic) do - Fabricate(:private_message_topic, - allowed_groups: [group], - ) + describe 'with unicode_usernames' do + before { SiteSetting.unicode_usernames = false } + + it 'should return the right response' do + group.add(user) + topic = Fabricate(:private_message_topic, allowed_groups: [group]) + get "/topics/private-messages-group/#{user.username}/#{group.name}.json" + + expect(response.status).to eq(200) + + expect(JSON.parse(response.body)["topic_list"]["topics"].first["id"]) + .to eq(topic.id) + end end - it 'should return the right response' do - get "/topics/private-messages-group/#{user.username}/#{group.name}.json" + describe 'with unicode_usernames' do + before { SiteSetting.unicode_usernames = true } - expect(response.status).to eq(200) + it 'Returns a 200 with unicode group name' do + unicode_group = Fabricate(:group, name: '群群组') + unicode_group.add(user) + topic = Fabricate(:private_message_topic, allowed_groups: [unicode_group]) + get "/topics/private-messages-group/#{user.username}/#{URI.escape(unicode_group.name)}.json" + expect(response.status).to eq(200) - expect(JSON.parse(response.body)["topic_list"]["topics"].first["id"]) - .to eq(topic.id) + expect(JSON.parse(response.body)["topic_list"]["topics"].first["id"]) + .to eq(topic.id) + end end end From 17366d3bcc8ac27980e4fb3b7cfdc1ed86c6ab02 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Thu, 7 Nov 2019 08:20:15 +1100 Subject: [PATCH 006/408] FEATURE: notify tag watchers when tag was added to post (#8299) Issue was mentioned in this [meta topic](https://meta.discourse.org/t/send-a-notification-to-watching-users-when-adding-tag/125314) It is working well when category is changed because NotifyCategoryChange job already got that code: ``` if post&.topic&.visible? post_alerter = PostAlerter.new post_alerter.notify_post_users(post, User.where(id: args[:notified_user_ids])) post_alerter.notify_first_post_watchers(post, post_alerter.category_watchers(post.topic)) end ``` For NotifyTagChange job notify post users were missing so it worked only when your notification was set to `watching first post` --- app/jobs/regular/notify_tag_change.rb | 1 + lib/post_revisor.rb | 3 ++- spec/jobs/notify_tag_change_spec.rb | 28 +++++++++++++++++++++++++++ spec/services/post_alerter_spec.rb | 2 +- 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 spec/jobs/notify_tag_change_spec.rb diff --git a/app/jobs/regular/notify_tag_change.rb b/app/jobs/regular/notify_tag_change.rb index 4725896cd4..fe4f85052b 100644 --- a/app/jobs/regular/notify_tag_change.rb +++ b/app/jobs/regular/notify_tag_change.rb @@ -7,6 +7,7 @@ module Jobs if post&.topic&.visible? post_alerter = PostAlerter.new + post_alerter.notify_post_users(post, User.where(id: args[:notified_user_ids])) post_alerter.notify_first_post_watchers(post, post_alerter.tag_watchers(post.topic)) end end diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb index cd68bf7bb0..3c954d47b1 100644 --- a/lib/post_revisor.rb +++ b/lib/post_revisor.rb @@ -94,7 +94,8 @@ class PostRevisor tc.record_change('tags', prev_tags, tags) DB.after_commit do post = tc.topic.ordered_posts.first - Jobs.enqueue(:notify_tag_change, post_id: post.id) + notified_user_ids = [post.user_id, post.last_editor_id].uniq + Jobs.enqueue(:notify_tag_change, post_id: post.id, notified_user_ids: notified_user_ids) end end end diff --git a/spec/jobs/notify_tag_change_spec.rb b/spec/jobs/notify_tag_change_spec.rb new file mode 100644 index 0000000000..3f22cde400 --- /dev/null +++ b/spec/jobs/notify_tag_change_spec.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ::Jobs::NotifyTagChange do + + fab!(:user) { Fabricate(:user) } + fab!(:regular_user) { Fabricate(:trust_level_4) } + fab!(:post) { Fabricate(:post, user: regular_user) } + fab!(:tag) { Fabricate(:tag, name: 'test') } + + it "creates notification for watched tag" do + TagUser.create!( + user_id: user.id, + tag_id: tag.id, + notification_level: NotificationLevels.topic_levels[:watching] + ) + TopicTag.create!( + topic_id: post.topic.id, + tag_id: tag.id + ) + + expect { described_class.new.execute(post_id: post.id, notified_user_ids: [regular_user.id]) }.to change { Notification.count } + notification = Notification.last + expect(notification.user_id).to eq(user.id) + expect(notification.topic_id).to eq(post.topic_id) + end +end diff --git a/spec/services/post_alerter_spec.rb b/spec/services/post_alerter_spec.rb index dd7cc23415..22f6052820 100644 --- a/spec/services/post_alerter_spec.rb +++ b/spec/services/post_alerter_spec.rb @@ -1003,7 +1003,7 @@ describe PostAlerter do it "triggers a notification" do expect(user.notifications.where(notification_type: Notification.types[:watching_first_post]).count).to eq(0) - expect { PostRevisor.new(post).revise!(Fabricate(:user), tags: [other_tag.name, watched_tag.name]) }.to change { Notification.count }.by(1) + expect { PostRevisor.new(post).revise!(Fabricate(:user), tags: [other_tag.name, watched_tag.name]) }.to change { Notification.where(user_id: user.id).count }.by(1) expect(user.notifications.where(notification_type: Notification.types[:watching_first_post]).count).to eq(1) expect { PostRevisor.new(post).revise!(Fabricate(:user), tags: [watched_tag.name, other_tag.name]) }.to change { Notification.count }.by(0) From ee5b56914cec8c71758c6c3d6e8cbe2a5036f500 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Wed, 6 Nov 2019 22:30:40 +0100 Subject: [PATCH 007/408] FIX: Use long version of month names in date formats Otherwise we'd need to add `date.abbr_month_names` to `server.en.yml` --- config/locales/server.pl_PL.yml | 2 +- config/locales/server.vi.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml index c6924dcdee..75f2d44231 100644 --- a/config/locales/server.pl_PL.yml +++ b/config/locales/server.pl_PL.yml @@ -14,7 +14,7 @@ pl_PL: formats: short: "%d.%m.%Y" short_no_year: "%-d %B" - date_only: "%-d %b %Y" + date_only: "%-d %B %Y" long: "%B %-d, %Y, %l:%M%P" no_day: "%B %Y" date: diff --git a/config/locales/server.vi.yml b/config/locales/server.vi.yml index c195f1791a..8880a66aab 100644 --- a/config/locales/server.vi.yml +++ b/config/locales/server.vi.yml @@ -14,7 +14,7 @@ vi: formats: short: "%m-%d-%Y" short_no_year: "%B %-d" - date_only: "%b %-d, %Y" + date_only: "%B %-d, %Y" date: month_names: [~, Tháng Một, Tháng Hai, Tháng Ba, Tháng Tư, Tháng Năm, Tháng Sáu, Tháng Bảy, Tháng Tám, Tháng Chín, Tháng Mười, Tháng Mười Một, Tháng Mười Hai] <<: *datetime_formats From 1d1dd2a4d436944a7b088f2d4a471c62b8fa4de2 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 7 Nov 2019 12:12:24 +1100 Subject: [PATCH 008/408] PERF: cache static assets in NGINX for longer Previously our cache would expire any asset that was not accessed for 10 minutes. This is way too short and was never intended. All the assets we are serving are usually very long living assets like avatars and css files 1 day is a reasonable setting here cause it offers far better protection. I would consider upping this to a week though longer term. Maximum disk space of cache was increased as well to 600m. Very unlikely to ever hit this except on very large sites. Additionally, this places all the cached assets in nested directories, we never want cached files to be in one giant directory cause it is inefficient --- config/nginx.sample.conf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/nginx.sample.conf b/config/nginx.sample.conf index 5e67988416..538e29fab4 100644 --- a/config/nginx.sample.conf +++ b/config/nginx.sample.conf @@ -10,7 +10,10 @@ upstream discourse { server unix:/var/www/discourse/tmp/sockets/thin.3.sock; } -proxy_cache_path /var/nginx/cache keys_zone=one:10m max_size=200m; +# inactive means we keep stuff around for 1440m minutes regardless of last access (1 week) +# levels means it is a 2 deep heirarchy cause we can have lots of files +# max_size limits the size of the cache +proxy_cache_path /var/nginx/cache inactive=1440m levels=1:2 keys_zone=one:10m max_size=600m; # see: https://meta.discourse.org/t/x/74060 proxy_buffer_size 8k; From c5df853dea38629f3342b036c42817096dc73ed0 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Thu, 7 Nov 2019 10:03:12 +0530 Subject: [PATCH 009/408] Bump onebox version. - fix for gfycat onebox in email --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index f728eef550..2e1ce26cc9 100644 --- a/Gemfile +++ b/Gemfile @@ -41,7 +41,7 @@ gem 'redis-namespace' gem 'active_model_serializers', '~> 0.8.3' -gem 'onebox', '1.9.21' +gem 'onebox', '1.9.22' gem 'http_accept_language', '~>2.0.5', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 4176a30f6e..9d848819b5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -243,7 +243,7 @@ GEM omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack - onebox (1.9.21) + onebox (1.9.22) htmlentities (~> 4.3) multi_json (~> 1.11) mustache @@ -497,7 +497,7 @@ DEPENDENCIES omniauth-oauth2 omniauth-openid omniauth-twitter - onebox (= 1.9.21) + onebox (= 1.9.22) openid-redis-store parallel_tests pg From cf0f2c70cd368babce23dcc1fcbf1bdd6ee44718 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 7 Nov 2019 16:09:41 +1100 Subject: [PATCH 010/408] FIX: regression not showing excerpts in mobile timeline I think this is a result of: 87f0b56191f38a5d3 --- .../discourse/widgets/topic-timeline.js.es6 | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 index 813a390ec5..36db3959ba 100644 --- a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 @@ -188,11 +188,7 @@ createWidget("timeline-scrollarea", { if (this.state.position !== result.scrollPosition) { this.state.position = result.scrollPosition; - this.sendWidgetAction( - "updatePosition", - result.position, - result.scrollPosition - ); + this.sendWidgetAction("updatePosition", current); } return result; @@ -391,7 +387,7 @@ export default createWidget("topic-timeline", { return { position: null, excerpt: null }; }, - updatePosition(postIdx, scrollPosition) { + updatePosition(scrollPosition) { if (!this.attrs.fullScreen) { return; } @@ -407,8 +403,7 @@ export default createWidget("topic-timeline", { } // we have an off by one, stream is zero based, - // postIdx is 1 based - stream.excerpt(postIdx - 1).then(info => { + stream.excerpt(scrollPosition - 1).then(info => { if (info && this.state.position === scrollPosition) { let excerpt = ""; From 5d42f052bcd44f17c563d827e1edd0e8bfe2a8df Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 7 Nov 2019 11:39:17 +0530 Subject: [PATCH 011/408] Minor copy edit 671f303b5355d2da239d20cfad6032ef74084301 --- config/locales/server.en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index fded4fd68d..0e313715f2 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2680,7 +2680,7 @@ en: welcome_staff: title: "Welcome Staff" - subject_template: "Congratulations, you’re now a %{role}!" + subject_template: "Congratulations, you’ve been granted %{role} status!" text_body_template: | You’ve been granted %{role} status by a fellow staff member. From 7d25d65ccb37a137891195a81d0ebdf3c73d53bb Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 7 Nov 2019 10:15:05 +0100 Subject: [PATCH 012/408] DEV: adds support for input/change events on widgets (#8309) --- .../javascripts/discourse/widgets/hooks.js.es6 | 12 ++++++++++++ .../javascripts/discourse/widgets/widget.js.es6 | 12 +++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/widgets/hooks.js.es6 b/app/assets/javascripts/discourse/widgets/hooks.js.es6 index d4796d5bb9..fb14a220b0 100644 --- a/app/assets/javascripts/discourse/widgets/hooks.js.es6 +++ b/app/assets/javascripts/discourse/widgets/hooks.js.es6 @@ -7,6 +7,8 @@ const MOUSE_DOWN_OUTSIDE_ATTRIBUTE_NAME = const KEY_UP_ATTRIBUTE_NAME = "_discourse_key_up_widget"; const KEY_DOWN_ATTRIBUTE_NAME = "_discourse_key_down_widget"; const DRAG_ATTRIBUTE_NAME = "_discourse_drag_widget"; +const INPUT_ATTRIBUTE_NAME = "_discourse_input_widget"; +const CHANGE_ATTRIBUTE_NAME = "_discourse_change_widget"; function buildHook(attributeName, setAttr) { return class { @@ -42,6 +44,8 @@ export const WidgetMouseDownOutsideHook = buildHook( export const WidgetKeyUpHook = buildHook(KEY_UP_ATTRIBUTE_NAME); export const WidgetKeyDownHook = buildHook(KEY_DOWN_ATTRIBUTE_NAME); export const WidgetDragHook = buildHook(DRAG_ATTRIBUTE_NAME); +export const WidgetInputHook = buildHook(INPUT_ATTRIBUTE_NAME); +export const WidgetChangeHook = buildHook(CHANGE_ATTRIBUTE_NAME); function nodeCallback(node, attrName, cb) { const widget = findWidget(node, attrName); @@ -168,5 +172,13 @@ WidgetClickHook.setupDocumentCallback = function() { nodeCallback(e.target, KEY_DOWN_ATTRIBUTE_NAME, w => w.keyDown(e)); }); + $(document).on("input.discourse-widget", e => { + nodeCallback(e.target, INPUT_ATTRIBUTE_NAME, w => w.input(e)); + }); + + $(document).on("change.discourse-widget", e => { + nodeCallback(e.target, CHANGE_ATTRIBUTE_NAME, w => w.change(e)); + }); + _watchingDocument = true; }; diff --git a/app/assets/javascripts/discourse/widgets/widget.js.es6 b/app/assets/javascripts/discourse/widgets/widget.js.es6 index ed848faa0d..d24df97963 100644 --- a/app/assets/javascripts/discourse/widgets/widget.js.es6 +++ b/app/assets/javascripts/discourse/widgets/widget.js.es6 @@ -4,7 +4,9 @@ import { WidgetKeyUpHook, WidgetKeyDownHook, WidgetMouseDownOutsideHook, - WidgetDragHook + WidgetDragHook, + WidgetInputHook, + WidgetChangeHook } from "discourse/widgets/hooks"; import { h } from "virtual-dom"; import DecoratorHelper from "discourse/widgets/decorator-helper"; @@ -370,6 +372,14 @@ export default class Widget { properties["widget-drag"] = new WidgetDragHook(this); } + if (this.input) { + properties["widget-input"] = new WidgetInputHook(this); + } + + if (this.change) { + properties["widget-change"] = new WidgetChangeHook(this); + } + const attributes = properties["attributes"] || {}; properties.attributes = attributes; From 00c406520e48a76ae51f072b8d11af7ca1c3aca6 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Thu, 7 Nov 2019 14:44:43 +0530 Subject: [PATCH 013/408] FEATURE: allow FinalDestination to use custom user agent for specific hosts --- lib/final_destination.rb | 4 +++- lib/oneboxer.rb | 11 ++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/final_destination.rb b/lib/final_destination.rb index f0829d1416..549f3df2f4 100644 --- a/lib/final_destination.rb +++ b/lib/final_destination.rb @@ -37,6 +37,7 @@ class FinalDestination @opts = opts || {} @force_get_hosts = @opts[:force_get_hosts] || [] @preserve_fragment_url_hosts = @opts[:preserve_fragment_url_hosts] || [] + @force_custom_user_agent_hosts = @opts[:force_custom_user_agent_hosts] || [] @opts[:max_redirects] ||= 5 @opts[:lookup_ip] ||= lambda { |host| FinalDestination.lookup_ip(host) } @@ -66,6 +67,7 @@ class FinalDestination @timeout = @opts[:timeout] || nil @preserve_fragment_url = @preserve_fragment_url_hosts.any? { |host| hostname_matches?(host) } @validate_uri = @opts.fetch(:validate_uri) { true } + @user_agent = @force_custom_user_agent_hosts.any? { |host| hostname_matches?(host) } ? Onebox.options.user_agent : "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" end def self.connection_timeout @@ -82,7 +84,7 @@ class FinalDestination def request_headers result = { - "User-Agent" => "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", + "User-Agent" => @user_agent, "Accept" => "*/*", "Host" => @uri.hostname } diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index 54a1a3c934..96245cf820 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -30,6 +30,10 @@ module Oneboxer @force_get_hosts ||= ['http://us.battle.net'] end + def self.force_custom_user_agent_hosts + @force_custom_user_agent_hosts ||= ['http://codepen.io'] + end + def self.allowed_post_types @allowed_post_types ||= [Post.types[:regular], Post.types[:moderator_action]] end @@ -270,7 +274,12 @@ module Oneboxer def self.external_onebox(url) Rails.cache.fetch(onebox_cache_key(url), expires_in: 1.day) do - fd = FinalDestination.new(url, ignore_redirects: ignore_redirects, ignore_hostnames: blacklisted_domains, force_get_hosts: force_get_hosts, preserve_fragment_url_hosts: preserve_fragment_url_hosts) + fd = FinalDestination.new(url, + ignore_redirects: ignore_redirects, + ignore_hostnames: blacklisted_domains, + force_get_hosts: force_get_hosts, + force_custom_user_agent_hosts: force_custom_user_agent_hosts, + preserve_fragment_url_hosts: preserve_fragment_url_hosts) uri = fd.resolve return blank_onebox if uri.blank? || blacklisted_domains.map { |hostname| uri.hostname.match?(hostname) }.any? From 9c1a713c6e6f9afb6ce1e078a80ec1a124def540 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 7 Nov 2019 09:46:00 +0000 Subject: [PATCH 014/408] FIX: The internal position on the topic timeline is a scroll position ... instead of a post index. This is so that updatePosition is called when switching between the last two scroll positions. --- .../discourse/widgets/topic-timeline.js.es6 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 index 36db3959ba..a43e9fca54 100644 --- a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 @@ -187,8 +187,11 @@ createWidget("timeline-scrollarea", { } if (this.state.position !== result.scrollPosition) { - this.state.position = result.scrollPosition; - this.sendWidgetAction("updatePosition", current); + this.sendWidgetAction( + "updatePosition", + result.current, + result.scrollPosition + ); } return result; @@ -387,7 +390,7 @@ export default createWidget("topic-timeline", { return { position: null, excerpt: null }; }, - updatePosition(scrollPosition) { + updatePosition(postIdx, scrollPosition) { if (!this.attrs.fullScreen) { return; } @@ -403,7 +406,8 @@ export default createWidget("topic-timeline", { } // we have an off by one, stream is zero based, - stream.excerpt(scrollPosition - 1).then(info => { + // postIdx is 1 based + stream.excerpt(postIdx - 1).then(info => { if (info && this.state.position === scrollPosition) { let excerpt = ""; From 6a417c308f8abf30b0dec712426a009cabce859e Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Thu, 7 Nov 2019 15:42:11 +0530 Subject: [PATCH 015/408] FIX: include onebox default options in development environment --- config/initializers/100-onebox_options.rb | 19 ++++++++++++++----- lib/oneboxer.rb | 4 ---- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/config/initializers/100-onebox_options.rb b/config/initializers/100-onebox_options.rb index e9d0f21c71..d98886e2ba 100644 --- a/config/initializers/100-onebox_options.rb +++ b/config/initializers/100-onebox_options.rb @@ -1,7 +1,16 @@ # frozen_string_literal: true -Onebox.options = { - twitter_client: TwitterApi, - redirect_limit: 3, - user_agent: "Discourse Forum Onebox v#{Discourse::VERSION::STRING}" -} +if Rails.env.development? && SiteSetting.port.to_i > 0 + Onebox.options = { + twitter_client: TwitterApi, + redirect_limit: 3, + user_agent: "Discourse Forum Onebox v#{Discourse::VERSION::STRING}", + allowed_ports: [80, 443, SiteSetting.port.to_i] + } +else + Onebox.options = { + twitter_client: TwitterApi, + redirect_limit: 3, + user_agent: "Discourse Forum Onebox v#{Discourse::VERSION::STRING}" + } +end diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index 96245cf820..fba6704045 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -290,10 +290,6 @@ module Oneboxer options[:cookie] = fd.cookie if fd.cookie - if Rails.env.development? && SiteSetting.port.to_i > 0 - Onebox.options = { allowed_ports: [80, 443, SiteSetting.port.to_i] } - end - r = Onebox.preview(uri.to_s, options) { onebox: r.to_s, preview: r&.placeholder_html.to_s } From 063a1d40776a61851e04342e5720911426e82197 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 7 Nov 2019 11:04:39 +0000 Subject: [PATCH 016/408] Revert "FIX: The internal position on the topic timeline is a scroll position" This reverts commit 9c1a713c6e6f9afb6ce1e078a80ec1a124def540. --- .../discourse/widgets/topic-timeline.js.es6 | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 index a43e9fca54..36db3959ba 100644 --- a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 @@ -187,11 +187,8 @@ createWidget("timeline-scrollarea", { } if (this.state.position !== result.scrollPosition) { - this.sendWidgetAction( - "updatePosition", - result.current, - result.scrollPosition - ); + this.state.position = result.scrollPosition; + this.sendWidgetAction("updatePosition", current); } return result; @@ -390,7 +387,7 @@ export default createWidget("topic-timeline", { return { position: null, excerpt: null }; }, - updatePosition(postIdx, scrollPosition) { + updatePosition(scrollPosition) { if (!this.attrs.fullScreen) { return; } @@ -406,8 +403,7 @@ export default createWidget("topic-timeline", { } // we have an off by one, stream is zero based, - // postIdx is 1 based - stream.excerpt(postIdx - 1).then(info => { + stream.excerpt(scrollPosition - 1).then(info => { if (info && this.state.position === scrollPosition) { let excerpt = ""; From f79796fcacb683287951bc39c7828feaa78ae3ab Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 7 Nov 2019 08:35:21 -0600 Subject: [PATCH 017/408] DEV: Bump loofah version due to vulnerability --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9d848819b5..704a6e0e5b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -91,7 +91,7 @@ GEM cppjieba_rb (0.3.3) crack (0.4.3) safe_yaml (~> 1.0.0) - crass (1.0.4) + crass (1.0.5) css_parser (1.7.0) addressable debug_inspector (0.0.3) @@ -173,7 +173,7 @@ GEM logstash-logger (0.26.1) logstash-event (~> 1.2) logster (2.4.1) - loofah (2.2.3) + loofah (2.3.1) crass (~> 1.0.2) nokogiri (>= 1.5.9) lru_redux (1.1.0) From 60a235d128e78b43e33a859b2c9534d0d96ebce3 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Thu, 7 Nov 2019 15:47:16 +0000 Subject: [PATCH 018/408] DEV: Allow execute_command to receive a block (#8303) This makes it easy to run multiple commands with the same keyword arguments. The main use is for using `chdir` across multiple commands. The `Dir.chdir` method is not concurrency safe because it switches the working directory of the entire process. --- lib/discourse.rb | 46 ++++++++++++++++++++++++++----- spec/components/discourse_spec.rb | 38 +++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 7 deletions(-) diff --git a/lib/discourse.rb b/lib/discourse.rb index 759a01a935..8e8d7f9b5b 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -23,20 +23,52 @@ module Discourse end class Utils - def self.execute_command(*command, failure_message: "", success_status_codes: [0], chdir: ".") - stdout, stderr, status = Open3.capture3(*command, chdir: chdir) + # Usage: + # Discourse::Utils.execute_command("pwd", chdir: 'mydirectory') + # or with a block + # Discourse::Utils.execute_command(chdir: 'mydirectory') do |runner| + # runner.exec("pwd") + # end + def self.execute_command(*command, **args) + runner = CommandRunner.new(**args) - if !status.exited? || !success_status_codes.include?(status.exitstatus) - failure_message = "#{failure_message}\n" if !failure_message.blank? - raise "#{caller[0]}: #{failure_message}#{stderr}" + if block_given? + raise RuntimeError.new("Cannot pass command and block to execute_command") if command.present? + yield runner + else + runner.exec(*command) end - - stdout end def self.pretty_logs(logs) logs.join("\n".freeze) end + + private + + class CommandRunner + def initialize(**init_params) + @init_params = init_params + end + + def exec(*command, **exec_params) + raise RuntimeError.new("Cannot specify same parameters at block and command level") if (@init_params.keys & exec_params.keys).present? + execute_command(*command, **@init_params.merge(exec_params)) + end + + private + + def execute_command(*command, failure_message: "", success_status_codes: [0], chdir: ".") + stdout, stderr, status = Open3.capture3(*command, chdir: chdir) + + if !status.exited? || !success_status_codes.include?(status.exitstatus) + failure_message = "#{failure_message}\n" if !failure_message.blank? + raise "#{caller[0]}: #{failure_message}#{stderr}" + end + + stdout + end + end end # Log an exception. diff --git a/spec/components/discourse_spec.rb b/spec/components/discourse_spec.rb index 705195d53c..0049e1de99 100644 --- a/spec/components/discourse_spec.rb +++ b/spec/components/discourse_spec.rb @@ -391,4 +391,42 @@ describe Discourse do end end + describe "Utils.execute_command" do + it "works for individual commands" do + expect(Discourse::Utils.execute_command("pwd").strip).to eq(Rails.root.to_s) + expect(Discourse::Utils.execute_command("pwd", chdir: "plugins").strip).to eq("#{Rails.root.to_s}/plugins") + end + + it "works with a block" do + Discourse::Utils.execute_command do |runner| + expect(runner.exec("pwd").strip).to eq(Rails.root.to_s) + end + + result = Discourse::Utils.execute_command(chdir: "plugins") do |runner| + expect(runner.exec("pwd").strip).to eq("#{Rails.root.to_s}/plugins") + runner.exec("pwd") + end + + # Should return output of block + expect(result.strip).to eq("#{Rails.root.to_s}/plugins") + end + + it "does not leak chdir between threads" do + has_done_chdir = false + has_checked_chdir = false + + thread = Thread.new do + Discourse::Utils.execute_command(chdir: "plugins") do + has_done_chdir = true + sleep(0.01) until has_checked_chdir + end + end + + sleep(0.01) until has_done_chdir + expect(Discourse::Utils.execute_command("pwd").strip).to eq(Rails.root.to_s) + has_checked_chdir = true + thread.join + end + end + end From 9ffdbf912f76dcc58d081ce1f0c41afa0e40d500 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 7 Nov 2019 11:20:35 -0600 Subject: [PATCH 019/408] DEV: Import ember ENV instead of Ember.testing (#8305) --- .../javascripts/admin/components/admin-report.js.es6 | 5 +++-- .../admin/components/themes-list-item.js.es6 | 3 ++- .../javascripts/admin/components/themes-list.js.es6 | 3 ++- .../admin/routes/admin-badges-show.js.es6 | 3 ++- .../discourse-common/config/environment.js.es6 | 1 + app/assets/javascripts/discourse-loader.js | 3 +++ .../discourse/components/composer-editor.js.es6 | 3 ++- .../discourse/components/composer-title.js.es6 | 3 ++- .../javascripts/discourse/components/d-button.js.es6 | 4 ++-- .../javascripts/discourse/components/d-editor.js.es6 | 3 ++- .../discourse/components/date-time-input.js.es6 | 1 + .../discourse/components/emoji-picker.js.es6 | 4 +++- .../discourse/components/topic-timer-info.js.es6 | 3 ++- .../discourse/components/user-card-contents.js.es6 | 3 ++- .../discourse/controllers/composer.js.es6 | 3 ++- .../javascripts/discourse/controllers/topic.js.es6 | 3 ++- .../discourse/initializers/live-development.js.es6 | 3 ++- .../initializers/subscribe-user-notifications.js.es6 | 3 ++- .../javascripts/discourse/lib/click-track.js.es6 | 3 ++- .../discourse/lib/desktop-notifications.js.es6 | 12 ++++++++---- app/assets/javascripts/discourse/lib/eyeline.js.es6 | 6 ++++-- app/assets/javascripts/discourse/lib/mobile.js.es6 | 3 ++- .../lib/register-topic-footer-button.js.es6 | 6 ++++-- .../javascripts/discourse/mapping-router.js.es6 | 3 ++- .../javascripts/discourse/mixins/scroll-top.js.es6 | 3 ++- .../discourse/routes/topic-from-params.js.es6 | 3 ++- .../javascripts/discourse/widgets/connector.js.es6 | 4 ++-- app/assets/javascripts/discourse/widgets/glue.js.es6 | 3 ++- .../javascripts/discourse/widgets/post-menu.js.es6 | 3 ++- .../javascripts/discourse/widgets/widget.js.es6 | 3 ++- app/assets/javascripts/locales/i18n.js | 3 ++- app/assets/javascripts/wizard/router.js.es6 | 3 ++- 32 files changed, 75 insertions(+), 37 deletions(-) create mode 100644 app/assets/javascripts/discourse-common/config/environment.js.es6 diff --git a/app/assets/javascripts/admin/components/admin-report.js.es6 b/app/assets/javascripts/admin/components/admin-report.js.es6 index db06feecfc..59aaf29c3b 100644 --- a/app/assets/javascripts/admin/components/admin-report.js.es6 +++ b/app/assets/javascripts/admin/components/admin-report.js.es6 @@ -9,6 +9,7 @@ import { outputExportResult } from "discourse/lib/export-result"; import { isNumeric } from "discourse/lib/utilities"; import { SCHEMA_VERSION, default as Report } from "admin/models/report"; import computed from "ember-addons/ember-computed-decorators"; +import ENV from "discourse-common/config/environment"; const TABLE_OPTIONS = { perPage: 8, @@ -162,8 +163,8 @@ export default Component.extend({ let reportKey = "reports:"; reportKey += [ dataSourceName, - Ember.testing ? "start" : startDate.replace(/-/g, ""), - Ember.testing ? "end" : endDate.replace(/-/g, ""), + ENV.environment === "test" ? "start" : startDate.replace(/-/g, ""), + ENV.environment === "test" ? "end" : endDate.replace(/-/g, ""), "[:prev_period]", this.get("reportOptions.table.limit"), customFilters diff --git a/app/assets/javascripts/admin/components/themes-list-item.js.es6 b/app/assets/javascripts/admin/components/themes-list-item.js.es6 index af30e5a398..06ee549d51 100644 --- a/app/assets/javascripts/admin/components/themes-list-item.js.es6 +++ b/app/assets/javascripts/admin/components/themes-list-item.js.es6 @@ -7,6 +7,7 @@ import { } from "ember-addons/ember-computed-decorators"; import { iconHTML } from "discourse-common/lib/icon-library"; import { escape } from "pretty-text/sanitizer"; +import ENV from "discourse-common/config/environment"; const MAX_COMPONENTS = 4; @@ -43,7 +44,7 @@ export default Component.extend({ animate(isInitial) { const $container = $(this.element); const $list = $(this.element.querySelector(".components-list")); - if ($list.length === 0 || Ember.testing) { + if ($list.length === 0 || ENV.environment === 'test') { return; } const duration = 300; diff --git a/app/assets/javascripts/admin/components/themes-list.js.es6 b/app/assets/javascripts/admin/components/themes-list.js.es6 index 357e4f756c..1a420eeba8 100644 --- a/app/assets/javascripts/admin/components/themes-list.js.es6 +++ b/app/assets/javascripts/admin/components/themes-list.js.es6 @@ -2,6 +2,7 @@ import { gt, equal } from "@ember/object/computed"; import Component from "@ember/component"; import { THEMES, COMPONENTS } from "admin/models/theme"; import { default as computed } from "ember-addons/ember-computed-decorators"; +import { getOwner } from "@ember/application"; export default Component.extend({ THEMES: THEMES, @@ -70,7 +71,7 @@ export default Component.extend({ } }, navigateToTheme(theme) { - Ember.getOwner(this) + getOwner(this) .lookup("router:main") .transitionTo("adminCustomizeThemes.show", theme); } diff --git a/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 b/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 index 36043f6096..64ef45aebe 100644 --- a/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 @@ -51,7 +51,8 @@ export default Route.extend({ }) .catch(function(error) { badge.set("preview_loading", false); - Ember.Logger.error(error); + // eslint-disable-next-line no-console + console.error(error); bootbox.alert("Network error"); }); } diff --git a/app/assets/javascripts/discourse-common/config/environment.js.es6 b/app/assets/javascripts/discourse-common/config/environment.js.es6 new file mode 100644 index 0000000000..3bfa2c38c5 --- /dev/null +++ b/app/assets/javascripts/discourse-common/config/environment.js.es6 @@ -0,0 +1 @@ +export default { environment: Ember.testing ? "test" : "development" }; diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index 5052771e91..cb402832e8 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -96,6 +96,9 @@ var define, requirejs; }, "@ember/component/helper": { default: Ember.Helper + }, + "@ember/error": { + default: Ember.error } }; } diff --git a/app/assets/javascripts/discourse/components/composer-editor.js.es6 b/app/assets/javascripts/discourse/components/composer-editor.js.es6 index 876851b658..d1aa32d046 100644 --- a/app/assets/javascripts/discourse/components/composer-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-editor.js.es6 @@ -48,6 +48,7 @@ import { INLINE_ONEBOX_LOADING_CSS_CLASS, INLINE_ONEBOX_CSS_CLASS } from "pretty-text/context/inline-onebox-css-classes"; +import ENV from "discourse-common/config/environment"; const REBUILD_SCROLL_MAP_EVENTS = ["composer:resized", "composer:typed-reply"]; @@ -911,7 +912,7 @@ export default Component.extend({ // need to wait a bit for the "slide down" transition of the composer later( () => this.appEvents.trigger("composer:closed"), - Ember.testing ? 0 : 400 + ENV.environment === "test" ? 0 : 400 ); }); diff --git a/app/assets/javascripts/discourse/components/composer-title.js.es6 b/app/assets/javascripts/discourse/components/composer-title.js.es6 index 556b24bda8..ecbe5216bc 100644 --- a/app/assets/javascripts/discourse/components/composer-title.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-title.js.es6 @@ -12,6 +12,7 @@ import { load } from "pretty-text/oneboxer"; import { lookupCache } from "pretty-text/oneboxer-cache"; import { ajax } from "discourse/lib/ajax"; import afterTransition from "discourse/lib/after-transition"; +import ENV from "discourse-common/config/environment"; export default Component.extend({ classNames: ["title-input"], @@ -83,7 +84,7 @@ export default Component.extend({ return; } - if (Ember.testing) { + if (ENV.environment === "test") { next(() => // not ideal but we don't want to run this in current // runloop to avoid an error in console diff --git a/app/assets/javascripts/discourse/components/d-button.js.es6 b/app/assets/javascripts/discourse/components/d-button.js.es6 index 359d058d24..130e4ae458 100644 --- a/app/assets/javascripts/discourse/components/d-button.js.es6 +++ b/app/assets/javascripts/discourse/components/d-button.js.es6 @@ -1,4 +1,4 @@ -import { notEmpty, empty } from "@ember/object/computed"; +import { notEmpty, empty, equal } from "@ember/object/computed"; import Component from "@ember/component"; import { default as computed } from "ember-addons/ember-computed-decorators"; import DiscourseURL from "discourse/lib/url"; @@ -24,7 +24,7 @@ export default Component.extend({ btnIcon: notEmpty("icon"), - btnLink: Ember.computed.equal("display", "link"), + btnLink: equal("display", "link"), @computed("icon", "translatedLabel") btnType(icon, translatedLabel) { diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index 3d926b9783..b60fdf88a3 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -30,6 +30,7 @@ import { emojiSearch, isSkinTonableEmoji } from "pretty-text/emoji"; import { emojiUrlFor } from "discourse/lib/text"; import showModal from "discourse/lib/show-modal"; import { Promise } from "rsvp"; +import ENV from "discourse-common/config/environment"; // Our head can be a static string or a function that returns a string // based on input (like for numbered lists). @@ -375,7 +376,7 @@ export default Component.extend({ } // Debouncing in test mode is complicated - if (Ember.testing) { + if (ENV.environment === "test") { this._updatePreview(); } else { debounce(this, this._updatePreview, 30); diff --git a/app/assets/javascripts/discourse/components/date-time-input.js.es6 b/app/assets/javascripts/discourse/components/date-time-input.js.es6 index 41b41a8d32..c83483bc7d 100644 --- a/app/assets/javascripts/discourse/components/date-time-input.js.es6 +++ b/app/assets/javascripts/discourse/components/date-time-input.js.es6 @@ -1,4 +1,5 @@ import Component from "@ember/component"; + export default Component.extend({ classNames: ["d-date-time-input"], date: null, diff --git a/app/assets/javascripts/discourse/components/emoji-picker.js.es6 b/app/assets/javascripts/discourse/components/emoji-picker.js.es6 index 52f9e8add4..6ad97bebc8 100644 --- a/app/assets/javascripts/discourse/components/emoji-picker.js.es6 +++ b/app/assets/javascripts/discourse/components/emoji-picker.js.es6 @@ -10,6 +10,8 @@ import { emojiSearch } from "pretty-text/emoji"; import { safariHacksDisabled } from "discourse/lib/utilities"; +import ENV from "discourse-common/config/environment"; + const { run } = Ember; const PER_ROW = 11; @@ -509,7 +511,7 @@ export default Component.extend({ this.$picker.css(_.merge(attributes, options)); }; - if (Ember.testing || !this.automaticPositioning) { + if (ENV.environment === "test" || !this.automaticPositioning) { desktopPositioning(); return; } diff --git a/app/assets/javascripts/discourse/components/topic-timer-info.js.es6 b/app/assets/javascripts/discourse/components/topic-timer-info.js.es6 index bb26e0caba..3f219f3143 100644 --- a/app/assets/javascripts/discourse/components/topic-timer-info.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-timer-info.js.es6 @@ -6,6 +6,7 @@ import { bufferedRender } from "discourse-common/lib/buffered-render"; import Category from "discourse/models/category"; import computed from "ember-addons/ember-computed-decorators"; import { REMINDER_TYPE } from "discourse/controllers/edit-topic-timer"; +import ENV from "discourse-common/config/environment"; export default Component.extend( bufferedRender({ @@ -86,7 +87,7 @@ export default Component.extend( buffer.push(""); // TODO Sam: concerned this can cause a heavy rerender loop - if (!Ember.testing) { + if (ENV.environment !== "test") { this._delayedRerender = later(this, this.rerender, rerenderDelay); } } diff --git a/app/assets/javascripts/discourse/components/user-card-contents.js.es6 b/app/assets/javascripts/discourse/components/user-card-contents.js.es6 index d7c6eac785..9163d36d53 100644 --- a/app/assets/javascripts/discourse/components/user-card-contents.js.es6 +++ b/app/assets/javascripts/discourse/components/user-card-contents.js.es6 @@ -14,6 +14,7 @@ import CardContentsBase from "discourse/mixins/card-contents-base"; import CleansUp from "discourse/mixins/cleans-up"; import { prioritizeNameInUx } from "discourse/lib/settings"; import { set } from "@ember/object"; +import { getOwner } from "@ember/application"; export default Component.extend(CardContentsBase, CanCheckEmails, CleansUp, { elementId: "user-card", @@ -174,7 +175,7 @@ export default Component.extend(CardContentsBase, CanCheckEmails, CleansUp, { composePM(user, post) { this._close(); - Ember.getOwner(this) + getOwner(this) .lookup("router:main") .send("composePrivateMessage", user, post); }, diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index df26812280..cbdba44623 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -25,6 +25,7 @@ import { emojiUnescape } from "discourse/lib/text"; import { shortDate } from "discourse/lib/formatter"; import { SAVE_LABELS, SAVE_ICONS } from "discourse/models/composer"; import { Promise } from "rsvp"; +import ENV from "discourse-common/config/environment"; function loadDraft(store, opts) { opts = opts || {}; @@ -67,7 +68,7 @@ function loadDraft(store, opts) { const _popupMenuOptionsCallbacks = []; -let _checkDraftPopup = !Ember.testing; +let _checkDraftPopup = !ENV.environment === "test"; export function toggleCheckDraftPopup(enabled) { _checkDraftPopup = enabled; diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index af63f140be..730bd8fefe 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -1360,7 +1360,8 @@ export default Controller.extend(bufferedProperty("model"), { if (callback) { callback(this, data); } else { - Ember.Logger.warn("unknown topic bus message type", data); + // eslint-disable-next-line no-console + console.warn("unknown topic bus message type", data); } } } diff --git a/app/assets/javascripts/discourse/initializers/live-development.js.es6 b/app/assets/javascripts/discourse/initializers/live-development.js.es6 index 8104bdfd0a..5c2d973d31 100644 --- a/app/assets/javascripts/discourse/initializers/live-development.js.es6 +++ b/app/assets/javascripts/discourse/initializers/live-development.js.es6 @@ -1,5 +1,6 @@ import DiscourseURL from "discourse/lib/url"; import { currentThemeIds, refreshCSS } from "discourse/lib/theme-selector"; +import ENV from "discourse-common/config/environment"; // Use the message bus for live reloading of components for faster development. export default { @@ -43,7 +44,7 @@ export default { }); // Useful to export this for debugging purposes - if (Discourse.Environment === "development" && !Ember.testing) { + if (Discourse.Environment === "development" && ENV.environment !== "test") { window.DiscourseURL = DiscourseURL; } diff --git a/app/assets/javascripts/discourse/initializers/subscribe-user-notifications.js.es6 b/app/assets/javascripts/discourse/initializers/subscribe-user-notifications.js.es6 index c79a94ceaf..8efb204c36 100644 --- a/app/assets/javascripts/discourse/initializers/subscribe-user-notifications.js.es6 +++ b/app/assets/javascripts/discourse/initializers/subscribe-user-notifications.js.es6 @@ -12,6 +12,7 @@ import { isPushNotificationsEnabled } from "discourse/lib/push-notifications"; import { set } from "@ember/object"; +import ENV from "discourse-common/config/environment"; export default { name: "subscribe-user-notifications", @@ -127,7 +128,7 @@ export default { Discourse.set("assetVersion", data) ); - if (!Ember.testing) { + if (ENV.environment !== "test") { bus.subscribe(alertChannel(user), data => onNotification(data, user)); initDesktopNotifications(bus, appEvents); diff --git a/app/assets/javascripts/discourse/lib/click-track.js.es6 b/app/assets/javascripts/discourse/lib/click-track.js.es6 index 12abc76152..aeb83f8fe9 100644 --- a/app/assets/javascripts/discourse/lib/click-track.js.es6 +++ b/app/assets/javascripts/discourse/lib/click-track.js.es6 @@ -4,6 +4,7 @@ import DiscourseURL from "discourse/lib/url"; import { wantsNewWindow } from "discourse/lib/intercept-click"; import { selectedText } from "discourse/lib/utilities"; import { Promise } from "rsvp"; +import ENV from "discourse-common/config/environment"; export function isValidLink($link) { // Do not track: @@ -99,7 +100,7 @@ export default { let trackPromise = Promise.resolve(); if (tracking) { - if (!Ember.testing && navigator.sendBeacon) { + if (ENV.environment !== "test" && navigator.sendBeacon) { const data = new FormData(); data.append("url", href); data.append("post_id", postId); diff --git a/app/assets/javascripts/discourse/lib/desktop-notifications.js.es6 b/app/assets/javascripts/discourse/lib/desktop-notifications.js.es6 index 52c0449285..ba40f8246f 100644 --- a/app/assets/javascripts/discourse/lib/desktop-notifications.js.es6 +++ b/app/assets/javascripts/discourse/lib/desktop-notifications.js.es6 @@ -28,14 +28,16 @@ function init(messageBus, appEvents) { try { keyValueStore.getItem(focusTrackerKey); } catch (e) { - Ember.Logger.info( + // eslint-disable-next-line no-console + console.info( "Discourse desktop notifications are disabled - localStorage denied." ); return; } if (!("Notification" in window)) { - Ember.Logger.info( + // eslint-disable-next-line no-console + console.info( "Discourse desktop notifications are disabled - not supported by browser" ); return; @@ -49,7 +51,8 @@ function init(messageBus, appEvents) { return; } } catch (e) { - Ember.Logger.warn( + // eslint-disable-next-line no-console + console.warn( "Unexpected error, Notification is defined on window but not a responding correctly " + e ); @@ -60,7 +63,8 @@ function init(messageBus, appEvents) { // Preliminary checks passed, continue with setup setupNotifications(appEvents); } catch (e) { - Ember.Logger.error(e); + // eslint-disable-next-line no-console + console.error(e); } } diff --git a/app/assets/javascripts/discourse/lib/eyeline.js.es6 b/app/assets/javascripts/discourse/lib/eyeline.js.es6 index f49801f099..03c8092cc5 100644 --- a/app/assets/javascripts/discourse/lib/eyeline.js.es6 +++ b/app/assets/javascripts/discourse/lib/eyeline.js.es6 @@ -1,10 +1,12 @@ +import ENV from "discourse-common/config/environment"; + // Track visible elemnts on the screen. const Eyeline = function Eyeline(selector) { this.selector = selector; }; Eyeline.prototype.update = function() { - if (Ember.testing) { + if (ENV.environment === "test") { return; } @@ -61,7 +63,7 @@ Eyeline.prototype.update = function() { // Call this when we know aren't loading any more elements. Mark the rest as seen Eyeline.prototype.flushRest = function() { - if (Ember.testing) { + if (ENV.environment === "test") { return; } diff --git a/app/assets/javascripts/discourse/lib/mobile.js.es6 b/app/assets/javascripts/discourse/lib/mobile.js.es6 index de9a10697b..96ee5f7099 100644 --- a/app/assets/javascripts/discourse/lib/mobile.js.es6 +++ b/app/assets/javascripts/discourse/lib/mobile.js.es6 @@ -1,4 +1,5 @@ import deprecated from "discourse-common/lib/deprecated"; +import ENV from "discourse-common/config/environment"; let mobileForced = false; @@ -12,7 +13,7 @@ const Mobile = { this.isMobileDevice = mobileForced || $html.hasClass("mobile-device"); this.mobileView = mobileForced || $html.hasClass("mobile-view"); - if (Ember.testing || mobileForced) { + if (ENV.environment === "test" || mobileForced) { return; } diff --git a/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 b/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 index b6e5c5c5e9..65b687ac7c 100644 --- a/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 +++ b/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 @@ -1,8 +1,10 @@ +import error from "@ember/error"; + let _topicFooterButtons = {}; export function registerTopicFooterButton(button) { if (!button.id) { - Ember.error(`Attempted to register a topic button: ${button} with no id.`); + error(`Attempted to register a topic button: ${button} with no id.`); return; } @@ -52,7 +54,7 @@ export function registerTopicFooterButton(button) { !normalizedButton.title && !normalizedButton.translatedTitle ) { - Ember.error( + error( `Attempted to register a topic button: ${button.id} with no icon or title.` ); return; diff --git a/app/assets/javascripts/discourse/mapping-router.js.es6 b/app/assets/javascripts/discourse/mapping-router.js.es6 index 52d25f5479..f115ddf239 100644 --- a/app/assets/javascripts/discourse/mapping-router.js.es6 +++ b/app/assets/javascripts/discourse/mapping-router.js.es6 @@ -1,11 +1,12 @@ import { defaultHomepage } from "discourse/lib/utilities"; import { rewritePath } from "discourse/lib/url"; +import ENV from "discourse-common/config/environment"; const rootURL = Discourse.BaseUri; const BareRouter = Ember.Router.extend({ rootURL, - location: Ember.testing ? "none" : "discourse-location", + location: ENV.environment === "test" ? "none" : "discourse-location", handleURL(url) { url = rewritePath(url); diff --git a/app/assets/javascripts/discourse/mixins/scroll-top.js.es6 b/app/assets/javascripts/discourse/mixins/scroll-top.js.es6 index 82ae1c0479..d636c2333f 100644 --- a/app/assets/javascripts/discourse/mixins/scroll-top.js.es6 +++ b/app/assets/javascripts/discourse/mixins/scroll-top.js.es6 @@ -2,10 +2,11 @@ import { scheduleOnce } from "@ember/runloop"; import DiscourseURL from "discourse/lib/url"; import { deprecated } from "discourse/mixins/scroll-top"; import Mixin from "@ember/object/mixin"; +import ENV from "discourse-common/config/environment"; const context = { _scrollTop() { - if (Ember.testing) { + if (ENV.environment === "test") { return; } $(document).scrollTop(0); diff --git a/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 b/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 index 08c4671236..dd2215520f 100644 --- a/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 +++ b/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 @@ -3,6 +3,7 @@ import { scheduleOnce } from "@ember/runloop"; import DiscourseRoute from "discourse/routes/discourse"; import DiscourseURL from "discourse/lib/url"; import Draft from "discourse/models/draft"; +import ENV from "discourse-common/config/environment"; // This route is used for retrieving a topic based on params export default DiscourseRoute.extend({ @@ -80,7 +81,7 @@ export default DiscourseRoute.extend({ } }) .catch(e => { - if (!Ember.testing) { + if (ENV.environment !== "test") { // eslint-disable-next-line no-console console.log("Could not view topic", e); } diff --git a/app/assets/javascripts/discourse/widgets/connector.js.es6 b/app/assets/javascripts/discourse/widgets/connector.js.es6 index e3c0d9b628..02d5ec6e9c 100644 --- a/app/assets/javascripts/discourse/widgets/connector.js.es6 +++ b/app/assets/javascripts/discourse/widgets/connector.js.es6 @@ -22,8 +22,8 @@ export default class Connector { ); } - const container = Ember.getOwner - ? Ember.getOwner(mounted) + const container = getOwner + ? getOwner(mounted) : mounted.container; let view; diff --git a/app/assets/javascripts/discourse/widgets/glue.js.es6 b/app/assets/javascripts/discourse/widgets/glue.js.es6 index c3a6af4b80..93c5b35ec4 100644 --- a/app/assets/javascripts/discourse/widgets/glue.js.es6 +++ b/app/assets/javascripts/discourse/widgets/glue.js.es6 @@ -3,6 +3,7 @@ import { scheduleOnce } from "@ember/runloop"; import { diff, patch } from "virtual-dom"; import { queryRegistry } from "discourse/widgets/widget"; import DirtyKeys from "discourse/lib/dirty-keys"; +import ENV from "discourse-common/config/environment"; export default class WidgetGlue { constructor(name, register, attrs) { @@ -34,7 +35,7 @@ export default class WidgetGlue { cancel(this._timeout); // in test mode return early if store cannot be found - if (Ember.testing) { + if (ENV.environment === "test") { try { this.register.lookup("service:store"); } catch (e) { diff --git a/app/assets/javascripts/discourse/widgets/post-menu.js.es6 b/app/assets/javascripts/discourse/widgets/post-menu.js.es6 index 780cb20e1f..2039ed446f 100644 --- a/app/assets/javascripts/discourse/widgets/post-menu.js.es6 +++ b/app/assets/javascripts/discourse/widgets/post-menu.js.es6 @@ -5,11 +5,12 @@ import { avatarAtts } from "discourse/widgets/actions-summary"; import { h } from "virtual-dom"; import showModal from "discourse/lib/show-modal"; import { Promise } from "rsvp"; +import ENV from "discourse-common/config/environment"; const LIKE_ACTION = 2; function animateHeart($elem, start, end, complete) { - if (Ember.testing) { + if (ENV.environment === "test") { return run(this, complete); } diff --git a/app/assets/javascripts/discourse/widgets/widget.js.es6 b/app/assets/javascripts/discourse/widgets/widget.js.es6 index d24df97963..b131f2a4e2 100644 --- a/app/assets/javascripts/discourse/widgets/widget.js.es6 +++ b/app/assets/javascripts/discourse/widgets/widget.js.es6 @@ -11,6 +11,7 @@ import { import { h } from "virtual-dom"; import DecoratorHelper from "discourse/widgets/decorator-helper"; import { Promise } from "rsvp"; +import ENV from "discourse-common/config/environment"; const _registry = {}; @@ -118,7 +119,7 @@ export default class Widget { this.keyValueStore = register.lookup("key-value-store:main"); // Helps debug widgets - if (Discourse.Environment === "development" || Ember.testing) { + if (Discourse.Environment === "development" || ENV.environment === "test") { const ds = this.defaultState(attrs); if (typeof ds !== "object") { throw new Error(`defaultState must return an object`); diff --git a/app/assets/javascripts/locales/i18n.js b/app/assets/javascripts/locales/i18n.js index 68657e28b6..ec33b0c523 100644 --- a/app/assets/javascripts/locales/i18n.js +++ b/app/assets/javascripts/locales/i18n.js @@ -319,7 +319,8 @@ I18n.enableVerboseLocalization = function() { if (!_.isEmpty(value)) { message += ", parameters: " + JSON.stringify(value); } - Ember.Logger.info(message); + // eslint-disable-next-line no-console + console.info(message); } return t.apply(I18n, [scope, value]) + " (#" + current + ")"; }; diff --git a/app/assets/javascripts/wizard/router.js.es6 b/app/assets/javascripts/wizard/router.js.es6 index 5a1596b8cd..05921b0a5d 100644 --- a/app/assets/javascripts/wizard/router.js.es6 +++ b/app/assets/javascripts/wizard/router.js.es6 @@ -1,8 +1,9 @@ import getUrl from "discourse-common/lib/get-url"; +import ENV from "discourse-common/config/environment"; const Router = Ember.Router.extend({ rootURL: getUrl("/wizard/"), - location: Ember.testing ? "none" : "history" + location: ENV.environment === "test" ? "none" : "history" }); Router.map(function() { From 54fe887c4435d2a042f95b4ca966002d3f8ac2e9 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Thu, 7 Nov 2019 17:22:54 +0000 Subject: [PATCH 020/408] DEV: Remove prototype theme-watcher script This has been superseded by the Theme CLI: https://meta.discourse.org/t/82950 --- script/theme-watcher | 186 ------------------------------------------- 1 file changed, 186 deletions(-) delete mode 100755 script/theme-watcher diff --git a/script/theme-watcher b/script/theme-watcher deleted file mode 100755 index 208691fbf7..0000000000 --- a/script/theme-watcher +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -require 'fileutils' -require 'pathname' -require 'tempfile' -require 'securerandom' -require 'minitar' -require 'zlib' -require 'find' -require 'net/http' -require 'net/http/post/multipart' -require 'uri' -require 'listen' -require 'json' - -# Work in progress theme watcher for Discourse -# -# Monitor a theme directory locally and automatically keep it in sync with Discourse - -def usage - puts "Usage: theme-watcher DIR SITE" - exit 1 -end - -WATCHER_SETTINGS_FILE = File.expand_path("~/.discourse-theme-watcher") - -$api_key = ENV['DISCOURSE_API_KEY'] -$dir = ARGV[0] -$site = ARGV[1] -$theme_id = nil - -if $site !~ /https?:\/\//i - $site = "http://#{$site}" -end - -puts "Watching #{$dir} and uploading changes to #{$site}" - -if !$api_key && File.exist?(WATCHER_SETTINGS_FILE) - $api_key = File.read(WATCHER_SETTINGS_FILE).strip - puts "Using previously stored api key in #{WATCHER_SETTINGS_FILE}" -end - -if !$api_key - puts "No API key found in DISCOURSE_API_KEY env var enter your API key: " - $api_key = STDIN.gets.strip - puts "Would you like me to store this API key in #{WATCHER_SETTINGS_FILE}? (Yes|No)" - answer = STDIN.gets.strip - if answer =~ /y(es)?/i - File.write WATCHER_SETTINGS_FILE, $api_key - end -end - -if !File.exist?("#{$dir}/about.json") - puts "No about.json file found in #{dir}!" - puts - usage -end - -def compress_dir(gzip, dir) - sgz = Zlib::GzipWriter.new(File.open(gzip, 'wb')) - tar = Archive::Tar::Minitar::Output.new(sgz) - - Dir.chdir(dir + "/../") do - Find.find(File.basename(dir)) do |x| - Find.prune if File.basename(x)[0] == ?. - next if File.directory?(x) - - Minitar.pack_file(x, tar) - end - end -ensure - tar.close - sgz.close -end - -def diagnose_errors(json) - count = 0 - json["theme"]["theme_fields"].each do |row| - if (error = row["error"]) && error.length > 0 - if count == 0 - puts - end - count += 1 - puts - puts "Error in #{row["target"]} #{row["name"]}: #{row["error"]}" - puts - end - end - count -end - -def upload_theme_field(target: , name: , type_id: , value:) - args = { - theme: { - theme_fields: [{ - name: name, - target: target, - type_id: type_id, - value: value - }] - } - } - - uri = URI.parse($site + "/admin/themes/#{$theme_id}?api_key=#{$api_key}") - - http = Net::HTTP.new(uri.host, uri.port) - request = Net::HTTP::Put.new(uri.request_uri, 'Content-Type' => 'application/json') - request.body = args.to_json - - http.start do |h| - response = h.request(request) - if response.code.to_i == 200 - json = JSON.parse(response.body) - if diagnose_errors(json) == 0 - puts "(done)" - end - else - puts "Error importing field status: #{response.code}" - end - end -end - -def upload_full_theme(dir, site) - filename = "#{Pathname.new(Dir.tmpdir).realpath}/bundle_#{SecureRandom.hex}.tar.gz" - compress_dir(filename, dir) - - # new full upload endpoint - uri = URI.parse(site + "/admin/themes/import.json?api_key=#{$api_key}") - http = Net::HTTP.new(uri.host, uri.port) - File.open(filename) do |tgz| - - request = Net::HTTP::Post::Multipart.new( - uri.request_uri, - "bundle" => UploadIO.new(tgz, "application/tar+gzip", "bundle.tar.gz"), - ) - response = http.request(request) - if response.code.to_i == 201 - json = JSON.parse(response.body) - $theme_id = json["theme"]["id"] - if diagnose_errors(json) == 0 - puts "(done)" - end - else - puts "Error importing theme status: #{response.code}" - end - end - -ensure - FileUtils.rm_f filename -end - -print "Uploading theme: " -upload_full_theme($dir, $site) - -def resolve_file(path) - dir_len = File.expand_path($dir).length - name = File.expand_path(path)[dir_len + 1..-1] - - target, file = name.split("/") - - if ["common", "desktop", "mobile"].include?(target) - if file = "#{target}.scss" - # a CSS file - return [target, "scss", 1] - end - end - - nil -end - -listener = Listen.to($dir) do |modified, added, removed| - if modified.length == 1 && - added.length == 0 && - removed.length == 0 && - (target, name, type_id = resolve_file(modified[0])) - print "Updating #{target} #{name}: " - upload_theme_field(target: target, name: name, value: File.read(modified[0]), type_id: type_id) - else - print "Full re-sync is required, re-uploading theme: " - upload_full_theme($dir, $site) - end -end - -listener.start -sleep From b3e8fbe7d4a7b87d28b06482232aa0c7a4dab8d5 Mon Sep 17 00:00:00 2001 From: Simon Cossar Date: Thu, 7 Nov 2019 12:26:28 -0500 Subject: [PATCH 021/408] FIX: downcase SSO external email before checking against Discourse email (#8306) * Downcase single_sign_on_record.external_email before checking against Discourse email * Use &.downcase --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index ccd5928853..2ecea38aad 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -908,7 +908,7 @@ class User < ActiveRecord::Base def email_confirmed? email_tokens.where(email: email, confirmed: true).present? || email_tokens.empty? || - single_sign_on_record&.external_email == email + single_sign_on_record&.external_email&.downcase == email end def activate From f8d69253e811c29703334eccd6288f3df3700327 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 7 Nov 2019 12:07:08 -0600 Subject: [PATCH 022/408] FIX: Prettier to fix build (#8311) --- .../javascripts/admin/components/themes-list-item.js.es6 | 2 +- app/assets/javascripts/discourse/widgets/connector.js.es6 | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/admin/components/themes-list-item.js.es6 b/app/assets/javascripts/admin/components/themes-list-item.js.es6 index 06ee549d51..2c4a5265b8 100644 --- a/app/assets/javascripts/admin/components/themes-list-item.js.es6 +++ b/app/assets/javascripts/admin/components/themes-list-item.js.es6 @@ -44,7 +44,7 @@ export default Component.extend({ animate(isInitial) { const $container = $(this.element); const $list = $(this.element.querySelector(".components-list")); - if ($list.length === 0 || ENV.environment === 'test') { + if ($list.length === 0 || ENV.environment === "test") { return; } const duration = 300; diff --git a/app/assets/javascripts/discourse/widgets/connector.js.es6 b/app/assets/javascripts/discourse/widgets/connector.js.es6 index 02d5ec6e9c..9701f4c80a 100644 --- a/app/assets/javascripts/discourse/widgets/connector.js.es6 +++ b/app/assets/javascripts/discourse/widgets/connector.js.es6 @@ -22,9 +22,7 @@ export default class Connector { ); } - const container = getOwner - ? getOwner(mounted) - : mounted.container; + const container = getOwner ? getOwner(mounted) : mounted.container; let view; From 9d457fa51fa978a872bc0358b849ce8d7322c09e Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 7 Nov 2019 15:25:58 -0500 Subject: [PATCH 023/408] REFACTOR: Remove `Discourse.TrustLevel` constant --- app/assets/javascripts/application.js | 1 + app/assets/javascripts/discourse/models/site.js.es6 | 5 ++--- .../tilt/es6_module_transpiler_template.rb | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 033e043d43..46bf682576 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -49,6 +49,7 @@ //= require ./discourse/models/permission-type //= require ./discourse/models/user-action-group //= require ./discourse/models/input-validation +//= require ./discourse/models/trust-level //= require ./discourse/lib/search //= require ./discourse/lib/user-search //= require ./discourse/lib/export-csv diff --git a/app/assets/javascripts/discourse/models/site.js.es6 b/app/assets/javascripts/discourse/models/site.js.es6 index 07dc4d72b3..bb76b07a0e 100644 --- a/app/assets/javascripts/discourse/models/site.js.es6 +++ b/app/assets/javascripts/discourse/models/site.js.es6 @@ -7,6 +7,7 @@ import Archetype from "discourse/models/archetype"; import PostActionType from "discourse/models/post-action-type"; import Singleton from "discourse/mixins/singleton"; import RestModel from "discourse/models/rest"; +import TrustLevel from "discourse/models/trust-level"; import PreloadStore from "preload-store"; const Site = RestModel.extend({ @@ -176,9 +177,7 @@ Site.reopenClass(Singleton, { } if (result.trust_levels) { - result.trustLevels = result.trust_levels.map(tl => - Discourse.TrustLevel.create(tl) - ); + result.trustLevels = result.trust_levels.map(tl => TrustLevel.create(tl)); delete result.trust_levels; } diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index 21e786665f..dd9392764d 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -89,7 +89,6 @@ JS "discourse/models/user-action", "discourse/routes/discourse", "discourse/models/category", - "discourse/models/trust-level", "discourse/models/site", "discourse/models/user", "discourse/models/session", From d74546f50efea388d0da7c87608b381609ed4efe Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 7 Nov 2019 15:46:58 -0500 Subject: [PATCH 024/408] REFACTOR: Remove `Discourse.Topic` constant --- .../javascripts/discourse/controllers/change-owner.js.es6 | 6 ++---- .../javascripts/discourse/controllers/composer.js.es6 | 4 ++-- .../discourse/controllers/discovery/topics.js.es6 | 3 ++- .../discourse/controllers/topic-bulk-actions.js.es6 | 3 ++- .../discourse/mixins/bulk-topic-selection.js.es6 | 5 +++-- .../javascripts/discourse/models/category-list.js.es6 | 3 ++- app/assets/javascripts/discourse/models/user-badge.js.es6 | 3 ++- .../tilt/es6_module_transpiler_template.rb | 1 - 8 files changed, 15 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 index 10ed05c04f..9a738881d5 100644 --- a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 +++ b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 @@ -5,6 +5,7 @@ import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import DiscourseURL from "discourse/lib/url"; +import Topic from "discourse/models/topic"; import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(ModalFunctionality, { @@ -37,10 +38,7 @@ export default Controller.extend(ModalFunctionality, { username: this.new_user }; - Discourse.Topic.changeOwners( - this.get("topicController.model.id"), - options - ).then( + Topic.changeOwners(this.get("topicController.model.id"), options).then( () => { this.send("closeModal"); this.topicController.send("deselectAll"); diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index cbdba44623..ce4b607add 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -758,8 +758,8 @@ export default Controller.extend({ @method open @param {Object} opts Options for creating a post @param {String} opts.action The action we're performing: edit, reply or createTopic - @param {Discourse.Post} [opts.post] The post we're replying to - @param {Discourse.Topic} [opts.topic] The topic we're replying to + @param {Post} [opts.post] The post we're replying to + @param {Topic} [opts.topic] The topic we're replying to @param {String} [opts.quote] If we're opening a reply from a quote, the quote we're making **/ open(opts) { diff --git a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 index 447e2ead37..3d1d4b9348 100644 --- a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 @@ -8,6 +8,7 @@ import showModal from "discourse/lib/show-modal"; import { userPath } from "discourse/lib/url"; import TopicList from "discourse/models/topic-list"; import computed from "ember-addons/ember-computed-decorators"; +import Topic from "discourse/models/topic"; const controllerOpts = { discovery: inject(), @@ -83,7 +84,7 @@ const controllerOpts = { resetNew() { this.topicTrackingState.resetNew(); - Discourse.Topic.resetNew().then(() => this.send("refresh")); + Topic.resetNew().then(() => this.send("refresh")); }, dismissReadPosts() { diff --git a/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 b/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 index d2a809fc6e..bd78a3002b 100644 --- a/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 @@ -1,6 +1,7 @@ import { empty, alias } from "@ember/object/computed"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; +import Topic from "discourse/models/topic"; const _buttons = []; @@ -88,7 +89,7 @@ export default Controller.extend(ModalFunctionality, { this.set("loading", true); const topics = this.get("model.topics"); - return Discourse.Topic.bulkOperation(topics, operation) + return Topic.bulkOperation(topics, operation) .then(result => { this.set("loading", false); if (result && result.topic_ids) { diff --git a/app/assets/javascripts/discourse/mixins/bulk-topic-selection.js.es6 b/app/assets/javascripts/discourse/mixins/bulk-topic-selection.js.es6 index 311e47661d..a4772fb594 100644 --- a/app/assets/javascripts/discourse/mixins/bulk-topic-selection.js.es6 +++ b/app/assets/javascripts/discourse/mixins/bulk-topic-selection.js.es6 @@ -2,6 +2,7 @@ import { alias } from "@ember/object/computed"; import { NotificationLevels } from "discourse/lib/notification-levels"; import { on } from "ember-addons/ember-computed-decorators"; import Mixin from "@ember/object/mixin"; +import Topic from "discourse/models/topic"; export default Mixin.create({ bulkSelectEnabled: false, @@ -33,9 +34,9 @@ export default Mixin.create({ let promise; if (this.selected.length > 0) { - promise = Discourse.Topic.bulkOperation(this.selected, operation); + promise = Topic.bulkOperation(this.selected, operation); } else { - promise = Discourse.Topic.bulkOperationByFilter( + promise = Topic.bulkOperationByFilter( "unread", operation, this.get("category.id"), diff --git a/app/assets/javascripts/discourse/models/category-list.js.es6 b/app/assets/javascripts/discourse/models/category-list.js.es6 index aff72e7fa3..227dc14894 100644 --- a/app/assets/javascripts/discourse/models/category-list.js.es6 +++ b/app/assets/javascripts/discourse/models/category-list.js.es6 @@ -1,5 +1,6 @@ import PreloadStore from "preload-store"; import { ajax } from "discourse/lib/ajax"; +import Topic from "discourse/models/topic"; const CategoryList = Ember.ArrayProxy.extend({ init() { @@ -39,7 +40,7 @@ CategoryList.reopenClass({ if (c.topics) { c.topics = c.topics.map(t => { - const topic = Discourse.Topic.create(t); + const topic = Topic.create(t); topic.set("category", c); return topic; }); diff --git a/app/assets/javascripts/discourse/models/user-badge.js.es6 b/app/assets/javascripts/discourse/models/user-badge.js.es6 index 69e88caf2e..511ed71de2 100644 --- a/app/assets/javascripts/discourse/models/user-badge.js.es6 +++ b/app/assets/javascripts/discourse/models/user-badge.js.es6 @@ -2,6 +2,7 @@ import { ajax } from "discourse/lib/ajax"; import Badge from "discourse/models/badge"; import computed from "ember-addons/ember-computed-decorators"; import { Promise } from "rsvp"; +import Topic from "discourse/models/topic"; const UserBadge = Discourse.Model.extend({ @computed @@ -35,7 +36,7 @@ UserBadge.reopenClass({ } var topics = {}; json.topics.forEach(function(topicJson) { - topics[topicJson.id] = Discourse.Topic.create(topicJson); + topics[topicJson.id] = Topic.create(topicJson); }); // Create the badges. diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index dd9392764d..ee18d1d6d2 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -93,7 +93,6 @@ JS "discourse/models/user", "discourse/models/session", "discourse/models/model", - "discourse/models/topic", "discourse/models/post", "discourse/views/grouped"] ) From 6275c05c0de4da501bf9e5ba40a82280c79ec6a8 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 7 Nov 2019 15:38:28 -0600 Subject: [PATCH 025/408] DEV: Move computed to discourseComputed (#8312) --- .../admin/components/ace-editor.js.es6 | 2 +- .../components/admin-backups-logs.js.es6 | 2 +- .../admin-report-storage-stats.js.es6 | 14 ++-- .../components/admin-report-table-cell.js.es6 | 4 +- .../admin-report-table-header.js.es6 | 6 +- .../components/admin-report-table.js.es6 | 32 ++++++---- .../admin/components/admin-report.js.es6 | 18 +++--- .../components/admin-theme-editor.js.es6 | 20 +++--- .../components/admin-user-field-item.js.es6 | 10 +-- .../admin-web-hook-event-chooser.js.es6 | 10 +-- .../components/admin-web-hook-event.js.es6 | 12 ++-- .../components/admin-web-hook-status.js.es6 | 8 +-- .../components/email-styles-editor.js.es6 | 8 +-- .../admin/components/embeddable-host.js.es6 | 6 +- .../admin/components/embedding-setting.js.es6 | 10 +-- .../admin/components/highlighted-code.js.es6 | 2 +- .../components/inline-edit-checkbox.js.es6 | 8 +-- .../admin/components/ip-lookup.js.es6 | 4 +- .../components/penalty-post-action.js.es6 | 4 +- .../admin/components/permalink-form.js.es6 | 4 +- .../components/report-filters/category.js.es6 | 4 +- .../components/report-filters/group.js.es6 | 6 +- .../admin/components/resumable-upload.js.es6 | 8 +-- .../admin/components/save-controls.js.es6 | 4 +- .../screened-ip-address-form.js.es6 | 8 +-- .../admin/components/secret-value-list.js.es6 | 2 +- .../components/site-settings/bool.js.es6 | 4 +- .../site-settings/category-list.js.es6 | 4 +- .../site-settings/group-list.js.es6 | 4 +- .../components/site-settings/tag-list.js.es6 | 4 +- .../admin/components/site-text-summary.js.es6 | 2 +- .../admin/components/themes-list-item.js.es6 | 10 +-- .../admin/components/themes-list.js.es6 | 8 +-- .../admin/components/value-list.js.es6 | 6 +- .../admin/components/watched-word-form.js.es6 | 8 +-- .../components/watched-word-uploader.js.es6 | 4 +- .../controllers/admin-api-keys-new.js.es6 | 6 +- .../controllers/admin-backups-index.js.es6 | 4 +- .../controllers/admin-badges-show.js.es6 | 4 +- .../admin-customize-colors-show.js.es6 | 4 +- .../controllers/admin-customize-colors.js.es6 | 8 +-- .../admin-customize-email-style-edit.js.es6 | 6 +- ...dmin-customize-email-templates-edit.js.es6 | 6 +- .../admin-customize-themes-edit.js.es6 | 8 +-- .../admin-customize-themes-show.js.es6 | 22 +++---- .../controllers/admin-customize-themes.js.es6 | 8 +-- .../admin-dashboard-general.js.es6 | 18 +++--- .../admin-dashboard-moderation.js.es6 | 10 +-- .../admin-dashboard-reports.js.es6 | 5 +- .../admin/controllers/admin-dashboard.js.es6 | 6 +- .../admin/controllers/admin-embedding.js.es6 | 6 +- .../admin-logs-staff-action-logs.js.es6 | 6 +- .../admin/controllers/admin-plugins.js.es6 | 4 +- .../controllers/admin-reports-show.js.es6 | 4 +- .../admin-site-settings-category.js.es6 | 6 +- .../controllers/admin-site-text-edit.js.es6 | 4 +- .../controllers/admin-user-badges.js.es6 | 4 +- .../admin/controllers/admin-user-index.js.es6 | 22 ++++--- .../controllers/admin-users-list-show.js.es6 | 4 +- .../admin-watched-words-action.js.es6 | 10 +-- .../admin-web-hooks-show-events.js.es6 | 4 +- .../controllers/admin-web-hooks-show.js.es6 | 14 ++-- .../admin/controllers/admin.js.es6 | 8 +-- .../modals/admin-add-upload.js.es6 | 8 +-- .../modals/admin-badge-preview.js.es6 | 8 +-- .../modals/admin-edit-badge-groupings.js.es6 | 2 +- .../modals/admin-incoming-email.js.es6 | 4 +- .../modals/admin-install-theme.js.es6 | 16 ++--- .../modals/admin-silence-user.js.es6 | 4 +- .../modals/admin-suspend-user.js.es6 | 4 +- .../modals/admin-uploaded-image-list.js.es6 | 2 +- .../modals/admin-watched-word-test.js.es6 | 4 +- .../admin/mixins/period-computation.js.es6 | 12 ++-- .../admin/mixins/setting-component.js.es6 | 18 +++--- .../admin/mixins/setting-object.js.es6 | 8 +-- .../admin/models/admin-user.js.es6 | 18 +++--- .../javascripts/admin/models/api-key.js.es6 | 8 +-- .../admin/models/backup-status.js.es6 | 4 +- .../admin/models/color-scheme-color.js.es6 | 16 ++--- .../admin/models/color-scheme.js.es6 | 8 +-- .../javascripts/admin/models/flag-type.js.es6 | 4 +- .../javascripts/admin/models/report.js.es6 | 59 +++++++++-------- .../admin/models/screened-email.js.es6 | 4 +- .../admin/models/screened-ip-address.js.es6 | 6 +- .../admin/models/screened-url.js.es6 | 4 +- .../admin/models/staff-action-log.js.es6 | 10 +-- .../javascripts/admin/models/theme.js.es6 | 26 ++++---- .../admin/models/tl3-requirements.js.es6 | 8 +-- .../admin/models/version-check.js.es6 | 12 ++-- .../javascripts/admin/models/web-hook.js.es6 | 10 +-- app/assets/javascripts/application.js | 3 +- .../lib/raw-handlebars.js.es6 | 2 +- .../utils/decorators.js.es6} | 14 ++-- app/assets/javascripts/discourse-loader.js | 11 +++- app/assets/javascripts/discourse.js.es6 | 8 +-- .../add-category-tag-classes.js.es6 | 2 +- .../discourse/components/avatar-flair.js.es6 | 2 +- .../components/avatar-uploader.js.es6 | 4 +- .../discourse/components/backup-codes.js.es6 | 6 +- .../components/backup-uploader.js.es6 | 4 +- .../discourse/components/badge-button.js.es6 | 4 +- .../discourse/components/badge-card.js.es6 | 8 +-- .../components/badge-selector.js.es6 | 6 +- .../discourse/components/badge-title.js.es6 | 4 +- .../components/basic-topic-list.js.es6 | 6 +- .../discourse/components/bread-crumbs.js.es6 | 10 +-- .../components/categories-boxes-topic.js.es6 | 4 +- .../categories-boxes-with-topics.js.es6 | 4 +- .../components/categories-boxes.js.es6 | 6 +- .../discourse/components/cdn-img.js.es6 | 6 +- .../components/choose-message.js.es6 | 2 +- .../discourse/components/choose-topic.js.es6 | 2 +- .../components/color-picker-choice.js.es6 | 8 +-- .../components/composer-action-title.js.es6 | 4 +- .../discourse/components/composer-body.js.es6 | 8 +-- .../components/composer-editor.js.es6 | 17 +++-- .../components/composer-message.js.es6 | 4 +- .../components/composer-title.js.es6 | 10 +-- .../components/composer-toggles.js.es6 | 10 +-- .../components/composer-user-selector.js.es6 | 10 +-- .../conditional-loading-spinner.js.es6 | 4 +- .../components/create-topics-notice.js.es6 | 15 +++-- .../discourse/components/csv-uploader.js.es6 | 6 +- .../discourse/components/d-button.js.es6 | 8 +-- .../discourse/components/d-editor.js.es6 | 8 +-- .../discourse/components/d-modal.js.es6 | 2 +- .../discourse/components/d-navigation.js.es6 | 12 ++-- .../discourse/components/date-input.js.es6 | 8 +-- .../discourse/components/date-picker.js.es6 | 8 +-- .../desktop-notification-config.js.es6 | 16 ++--- .../components/directory-toggle.js.es6 | 4 +- .../components/discourse-banner.js.es6 | 4 +- .../components/discourse-linked-text.js.es6 | 4 +- .../components/discourse-tag-bound.js.es6 | 6 +- .../components/discourse-topic.js.es6 | 2 +- .../components/discovery-categories.js.es6 | 2 +- .../components/discovery-topics-list.js.es6 | 2 +- .../components/edit-category-general.js.es6 | 16 ++--- .../components/edit-category-images.js.es6 | 6 +- .../components/edit-category-security.js.es6 | 2 +- .../components/edit-category-settings.js.es6 | 14 ++-- .../components/edit-category-tab.js.es6 | 6 +- .../components/edit-topic-timer-form.js.es6 | 9 ++- .../discourse/components/emoji-picker.js.es6 | 3 +- .../components/emoji-uploader.js.es6 | 4 +- .../components/expanding-text-area.js.es6 | 2 +- .../components/flag-action-type.js.es6 | 19 ++++-- .../components/flag-selection.js.es6 | 2 +- .../discourse/components/flat-button.js.es6 | 4 +- .../discourse/components/footer-nav.js.es6 | 2 +- .../components/future-date-input.js.es6 | 14 ++-- .../discourse/components/global-notice.js.es6 | 2 +- .../discourse/components/google-search.js.es6 | 4 +- .../components/group-card-contents.js.es6 | 8 +-- .../components/group-flair-inputs.js.es6 | 18 +++--- .../group-manage-logs-filter.js.es6 | 6 +- .../group-manage-save-button.js.es6 | 4 +- .../components/group-member-dropdown.js.es6 | 4 +- .../components/group-members-input.js.es6 | 8 +-- .../components/group-membership-button.js.es6 | 10 +-- .../discourse/components/group-post.js.es6 | 4 +- .../components/group-selector.js.es6 | 6 +- .../groups-form-interaction-fields.js.es6 | 8 ++- .../groups-form-membership-fields.js.es6 | 9 ++- .../groups-form-profile-fields.js.es6 | 6 +- .../discourse/components/groups-info.js.es6 | 4 +- .../components/honeypot-input.js.es6 | 2 +- .../components/image-uploader.js.es6 | 12 ++-- .../components/images-uploader.js.es6 | 4 +- .../discourse/components/invite-panel.js.es6 | 30 ++++----- .../discourse/components/login-buttons.js.es6 | 6 +- .../discourse/components/mobile-nav.js.es6 | 2 +- .../discourse/components/nav-item.js.es6 | 6 +- .../components/navigation-bar.js.es6 | 6 +- .../components/navigation-item.js.es6 | 4 +- .../notification-consent-banner.js.es6 | 8 +-- .../discourse/components/number-field.js.es6 | 6 +- .../components/plugin-connector.js.es6 | 2 +- .../components/popup-input-tip.js.es6 | 6 +- .../components/preference-checkbox.js.es6 | 4 +- .../components/pwa-install-banner.js.es6 | 8 +-- .../discourse/components/radio-button.js.es6 | 4 +- .../components/related-messages.js.es6 | 8 +-- .../reviewable-claimed-topic.js.es6 | 4 +- .../components/reviewable-flagged-post.js.es6 | 6 +- .../components/reviewable-item.js.es6 | 15 +++-- .../components/reviewable-user.js.es6 | 4 +- .../components/search-advanced-options.js.es6 | 2 +- .../components/search-text-field.js.es6 | 6 +- .../components/second-factor-form.js.es6 | 10 +-- .../components/second-factor-input.js.es6 | 8 +-- .../discourse/components/share-panel.js.es6 | 8 +-- .../discourse/components/share-popup.js.es6 | 10 +-- .../components/shared-draft-controls.js.es6 | 4 +- .../discourse/components/site-header.js.es6 | 2 +- .../components/suggested-topics.js.es6 | 6 +- .../discourse/components/tag-drop-link.js.es6 | 6 +- .../components/tag-groups-form.js.es6 | 4 +- .../discourse/components/tag-list.js.es6 | 10 +-- .../discourse/components/text-field.js.es6 | 6 +- .../components/top-period-buttons.js.es6 | 4 +- .../components/topic-entrance.js.es6 | 12 ++-- .../components/topic-footer-buttons.js.es6 | 18 +++--- .../components/topic-join-group-notice.js.es6 | 6 +- .../components/topic-list-item.js.es6 | 14 ++-- .../discourse/components/topic-list.js.es6 | 12 ++-- .../components/topic-navigation.js.es6 | 2 +- .../components/topic-progress.js.es6 | 16 ++--- .../discourse/components/topic-status.js.es6 | 4 +- .../components/topic-timeline.js.es6 | 2 +- .../components/topic-timer-info.js.es6 | 4 +- .../discourse/components/user-badge.js.es6 | 6 +- .../components/user-card-contents.js.es6 | 26 ++++---- .../discourse/components/user-field.js.es6 | 6 +- .../components/user-flag-percentage.js.es6 | 6 +- .../discourse/components/user-info.js.es6 | 6 +- .../user-notifications-large.js.es6 | 2 +- .../discourse/components/user-selector.js.es6 | 2 +- .../user-summary-category-search.js.es6 | 4 +- .../user-summary-topics-list.js.es6 | 4 +- .../discourse/controllers/about.js.es6 | 4 +- .../account-created-edit-email.js.es6 | 4 +- .../controllers/activation-edit.js.es6 | 4 +- .../controllers/add-post-notice.js.es6 | 4 +- .../discourse/controllers/application.js.es6 | 8 +-- .../controllers/avatar-selector.js.es6 | 8 +-- .../discourse/controllers/badges/index.js.es6 | 4 +- .../discourse/controllers/badges/show.js.es6 | 20 +++--- .../bulk-notification-level.js.es6 | 4 +- .../discourse/controllers/change-owner.js.es6 | 4 +- .../controllers/change-timestamp.js.es6 | 10 +-- .../discourse/controllers/composer.js.es6 | 42 ++++++------ .../controllers/create-account.js.es6 | 22 ++++--- .../controllers/discovery/categories.js.es6 | 6 +- .../controllers/discovery/topics.js.es6 | 12 ++-- .../controllers/edit-category.js.es6 | 14 ++-- .../controllers/edit-topic-timer.js.es6 | 14 ++-- .../discourse/controllers/email-login.js.es6 | 6 +- .../discourse/controllers/exception.js.es6 | 12 ++-- .../controllers/feature-topic.js.es6 | 26 ++++---- .../discourse/controllers/flag.js.es6 | 20 +++--- .../controllers/forgot-password.js.es6 | 4 +- .../controllers/full-page-search.js.es6 | 32 +++++----- .../discourse/controllers/grant-badge.js.es6 | 8 +-- .../controllers/group-activity-posts.js.es6 | 2 +- .../controllers/group-add-members.js.es6 | 4 +- .../controllers/group-bulk-add.js.es6 | 4 +- .../discourse/controllers/group-index.js.es6 | 12 ++-- .../controllers/group-manage-logs.js.es6 | 6 +- .../discourse/controllers/group-manage.js.es6 | 4 +- .../controllers/group-requests.js.es6 | 8 +-- .../discourse/controllers/group.js.es6 | 16 ++--- .../discourse/controllers/groups-index.js.es6 | 6 +- .../discourse/controllers/history.js.es6 | 48 ++++++++------ .../discourse/controllers/invites-show.js.es6 | 12 ++-- .../discourse/controllers/login.js.es6 | 18 +++--- .../controllers/move-to-topic.js.es6 | 10 +-- .../controllers/navigation/categories.js.es6 | 7 +- .../controllers/navigation/default.js.es6 | 4 +- .../controllers/password-reset.js.es6 | 8 +-- .../controllers/preferences/account.js.es6 | 16 ++--- .../controllers/preferences/categories.js.es6 | 8 +-- .../controllers/preferences/email.js.es6 | 10 +-- .../controllers/preferences/emails.js.es6 | 8 +-- .../controllers/preferences/interface.js.es6 | 26 ++++---- .../controllers/preferences/profile.js.es6 | 6 +- .../preferences/second-factor.js.es6 | 6 +- .../controllers/preferences/tags.js.es6 | 4 +- .../controllers/preferences/username.js.es6 | 6 +- .../discourse/controllers/rename-tag.js.es6 | 4 +- .../controllers/reorder-categories.js.es6 | 8 +-- .../request-group-membership-form.js.es6 | 6 +- .../discourse/controllers/review-index.js.es6 | 12 ++-- .../discourse/controllers/search-help.js.es6 | 4 +- .../second-factor-backup-edit.js.es6 | 4 +- .../discourse/controllers/static.js.es6 | 6 +- .../discourse/controllers/tags-index.js.es6 | 6 +- .../discourse/controllers/tags-show.js.es6 | 16 ++--- .../discourse/controllers/topic.js.es6 | 49 ++++++++------ .../controllers/upload-selector.js.es6 | 10 +-- .../controllers/user-invited-show.js.es6 | 10 +-- .../controllers/user-notifications.js.es6 | 8 +-- .../controllers/user-private-messages.js.es6 | 8 +-- .../discourse/controllers/user-summary.js.es6 | 10 +-- .../controllers/user-topics-list.js.es6 | 4 +- .../discourse/controllers/user.js.es6 | 35 +++++----- .../helpers/reviewable-status.js.es6 | 1 - .../javascripts/discourse/lib/computed.js.es6 | 12 ++-- .../lib/posts-with-placeholders.js.es6 | 4 +- .../lib/register-topic-footer-button.js.es6 | 26 ++++---- .../mixins/add-archetype-class.js.es6 | 2 +- .../mixins/bulk-topic-selection.js.es6 | 2 +- .../mixins/grant-badge-controller.js.es6 | 6 +- .../discourse/mixins/load-more.js.es6 | 2 +- .../discourse/mixins/name-validation.js.es6 | 6 +- .../mixins/password-validation.js.es6 | 8 +-- .../mixins/preferences-tab-controller.js.es6 | 4 +- .../discourse/mixins/upload.js.es6 | 1 - .../mixins/user-fields-validation.js.es6 | 6 +- .../mixins/username-validation.js.es6 | 6 +- .../discourse/models/badge-grouping.js.es6 | 6 +- .../javascripts/discourse/models/badge.js.es6 | 6 +- .../discourse/models/category.js.es6 | 36 +++++------ .../discourse/models/composer.js.es6 | 56 +++++++++------- .../discourse/models/group-history.js.es6 | 4 +- .../javascripts/discourse/models/group.js.es6 | 18 +++--- .../discourse/models/login-method.js.es6 | 8 +-- .../discourse/models/nav-item.js.es6 | 18 +++--- .../discourse/models/permission-type.js.es6 | 4 +- .../discourse/models/post-stream.js.es6 | 28 ++++---- .../javascripts/discourse/models/post.js.es6 | 20 +++--- .../discourse/models/result-set.js.es6 | 4 +- .../discourse/models/reviewable.js.es6 | 4 +- .../javascripts/discourse/models/site.js.es6 | 12 ++-- .../discourse/models/tag-group.js.es6 | 4 +- .../javascripts/discourse/models/tag.js.es6 | 6 +- .../discourse/models/topic-details.js.es6 | 4 +- .../models/topic-tracking-state.js.es6 | 6 +- .../javascripts/discourse/models/topic.js.es6 | 64 +++++++++---------- .../discourse/models/user-action-stat.js.es6 | 6 +- .../discourse/models/user-action.js.es6 | 22 +++---- .../discourse/models/user-badge.js.es6 | 4 +- .../discourse/models/user-draft.js.es6 | 11 ++-- .../models/user-drafts-stream.js.es6 | 4 +- .../discourse/models/user-posts-stream.js.es6 | 2 +- .../discourse/models/user-stream.js.es6 | 8 +-- .../javascripts/discourse/models/user.js.es6 | 62 +++++++++--------- .../list/post-count-or-badges.js.es6 | 4 +- .../raw-views/list/posts-count-column.js.es6 | 8 +-- .../raw-views/list/visited-line.js.es6 | 4 +- .../raw-views/topic-list-header-column.js.es6 | 10 +-- .../discourse/raw-views/topic-status.js.es6 | 6 +- .../discourse/services/logs-notice.js.es6 | 14 ++-- .../discourse/services/search.js.es6 | 6 +- .../components/reviewable-score.js.es6 | 4 +- .../ember-addons/decorator-alias.js.es6 | 2 +- .../engines/discourse-markdown/onebox.js.es6 | 1 - .../components/admin-group-selector.js.es6 | 5 +- .../components/category-chooser.js.es6 | 4 +- .../components/category-drop.js.es6 | 17 +++-- .../category-drop/category-drop-header.js.es6 | 10 +-- .../select-kit/components/category-row.js.es6 | 26 ++++---- .../color-palettes/color-palettes-row.js.es6 | 4 +- .../select-kit/components/combo-box.js.es6 | 6 +- .../components/composer-actions.js.es6 | 4 +- .../components/dropdown-select-box.js.es6 | 2 +- .../dropdown-select-box-header.js.es6 | 4 +- .../components/group-dropdown.js.es6 | 6 +- .../components/mini-tag-chooser.js.es6 | 10 +-- .../select-kit/components/multi-select.js.es6 | 22 ++++--- .../multi-select/multi-select-filter.js.es6 | 6 +- .../multi-select/multi-select-header.js.es6 | 8 +-- .../multi-select/selected-category.js.es6 | 4 +- .../multi-select/selected-color.js.es6 | 4 +- .../multi-select/selected-name.js.es6 | 8 +-- .../components/none-category-row.js.es6 | 4 +- .../components/notifications-button.js.es6 | 8 +-- .../notifications-button-row.js.es6 | 15 +++-- .../components/period-chooser.js.es6 | 4 +- .../period-chooser/period-chooser-row.js.es6 | 4 +- .../components/pinned-button.js.es6 | 6 +- .../components/pinned-options.js.es6 | 2 +- .../select-kit/components/select-kit.js.es6 | 45 ++++++++----- .../select-kit/select-kit-filter.js.es6 | 7 +- .../select-kit/select-kit-header.js.es6 | 9 +-- .../select-kit/select-kit-row.js.es6 | 15 +++-- .../components/single-select.js.es6 | 19 ++++-- .../select-kit/components/tag-chooser.js.es6 | 6 +- .../select-kit/components/tag-drop.js.es6 | 22 +++---- .../components/tag-group-chooser.js.es6 | 7 +- .../tag-notifications-button.js.es6 | 4 +- .../components/timezone-input.js.es6 | 4 +- .../toolbar-popup-menu-options.js.es6 | 4 +- .../topic-notifications-options.js.es6 | 6 +- .../user-notifications-dropdown.js.es6 | 6 +- .../select-kit/mixins/dom-helpers.js.es6 | 2 +- .../select-kit/mixins/events.js.es6 | 2 +- app/assets/javascripts/wizard-application.js | 2 +- .../wizard/components/homepage-preview.js.es6 | 2 +- .../components/image-preview-favicon.js.es6 | 3 +- .../image-preview-large-icon.js.es6 | 2 +- .../image-preview-logo-small.js.es6 | 3 +- .../components/image-preview-logo.js.es6 | 3 +- .../wizard/components/invite-list-user.js.es6 | 4 +- .../wizard/components/radio-button.js.es6 | 2 +- .../wizard/components/staff-count.js.es6 | 4 +- .../wizard/components/theme-preview.js.es6 | 7 +- .../components/wizard-field-image.js.es6 | 4 +- .../wizard/components/wizard-field.js.es6 | 8 +-- .../wizard/components/wizard-step-form.js.es6 | 4 +- .../wizard/components/wizard-step.js.es6 | 18 +++--- .../wizard/controllers/application.js.es6 | 4 +- .../wizard/mixins/valid-state.js.es6 | 8 +-- .../javascripts/wizard/models/step.js.es6 | 6 +- .../javascripts/wizard/models/wizard.js.es6 | 4 +- 395 files changed, 1770 insertions(+), 1649 deletions(-) rename app/assets/javascripts/{ember-addons/ember-computed-decorators.js.es6 => discourse-common/utils/decorators.js.es6} (82%) diff --git a/app/assets/javascripts/admin/components/ace-editor.js.es6 b/app/assets/javascripts/admin/components/ace-editor.js.es6 index 60498a0bdb..4fc881dae4 100644 --- a/app/assets/javascripts/admin/components/ace-editor.js.es6 +++ b/app/assets/javascripts/admin/components/ace-editor.js.es6 @@ -1,6 +1,6 @@ import Component from "@ember/component"; import loadScript from "discourse/lib/load-script"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import { on } from "@ember/object/evented"; export default Component.extend({ diff --git a/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 b/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 index ccacb2e705..72706af79f 100644 --- a/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 +++ b/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 @@ -4,7 +4,7 @@ import debounce from "discourse/lib/debounce"; import { renderSpinner } from "discourse/helpers/loading-spinner"; import { escapeExpression } from "discourse/lib/utilities"; import { bufferedRender } from "discourse-common/lib/buffered-render"; -import { observes, on } from "ember-addons/ember-computed-decorators"; +import { observes, on } from "discourse-common/utils/decorators"; export default Component.extend( bufferedRender({ diff --git a/app/assets/javascripts/admin/components/admin-report-storage-stats.js.es6 b/app/assets/javascripts/admin/components/admin-report-storage-stats.js.es6 index 948ecf1e87..61629c626e 100644 --- a/app/assets/javascripts/admin/components/admin-report-storage-stats.js.es6 +++ b/app/assets/javascripts/admin/components/admin-report-storage-stats.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; import { setting } from "discourse/lib/computed"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["admin-report-storage-stats"], @@ -10,32 +10,32 @@ export default Component.extend({ backupStats: alias("model.data.backups"), uploadStats: alias("model.data.uploads"), - @computed("backupStats") + @discourseComputed("backupStats") showBackupStats(stats) { return stats && this.currentUser.admin; }, - @computed("backupLocation") + @discourseComputed("backupLocation") backupLocationName(backupLocation) { return I18n.t(`admin.backups.location.${backupLocation}`); }, - @computed("backupStats.used_bytes") + @discourseComputed("backupStats.used_bytes") usedBackupSpace(bytes) { return I18n.toHumanSize(bytes); }, - @computed("backupStats.free_bytes") + @discourseComputed("backupStats.free_bytes") freeBackupSpace(bytes) { return I18n.toHumanSize(bytes); }, - @computed("uploadStats.used_bytes") + @discourseComputed("uploadStats.used_bytes") usedUploadSpace(bytes) { return I18n.toHumanSize(bytes); }, - @computed("uploadStats.free_bytes") + @discourseComputed("uploadStats.free_bytes") freeUploadSpace(bytes) { return I18n.toHumanSize(bytes); } diff --git a/app/assets/javascripts/admin/components/admin-report-table-cell.js.es6 b/app/assets/javascripts/admin/components/admin-report-table-cell.js.es6 index f83a33dbfb..e7bf688f2f 100644 --- a/app/assets/javascripts/admin/components/admin-report-table-cell.js.es6 +++ b/app/assets/javascripts/admin/components/admin-report-table-cell.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "td", @@ -8,7 +8,7 @@ export default Component.extend({ classNameBindings: ["type", "property"], options: null, - @computed("label", "data", "options") + @discourseComputed("label", "data", "options") computedLabel(label, data, options) { return label.compute(data, options || {}); }, diff --git a/app/assets/javascripts/admin/components/admin-report-table-header.js.es6 b/app/assets/javascripts/admin/components/admin-report-table-header.js.es6 index 9317ef1f66..bc5633b21d 100644 --- a/app/assets/javascripts/admin/components/admin-report-table-header.js.es6 +++ b/app/assets/javascripts/admin/components/admin-report-table-header.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "th", @@ -7,12 +7,12 @@ export default Component.extend({ classNameBindings: ["label.mainProperty", "label.type", "isCurrentSort"], attributeBindings: ["label.title:title"], - @computed("currentSortLabel.sortProperty", "label.sortProperty") + @discourseComputed("currentSortLabel.sortProperty", "label.sortProperty") isCurrentSort(currentSortField, labelSortField) { return currentSortField === labelSortField; }, - @computed("currentSortDirection") + @discourseComputed("currentSortDirection") sortIcon(currentSortDirection) { return currentSortDirection === 1 ? "caret-up" : "caret-down"; } diff --git a/app/assets/javascripts/admin/components/admin-report-table.js.es6 b/app/assets/javascripts/admin/components/admin-report-table.js.es6 index 38e00c8ab8..aa636224d4 100644 --- a/app/assets/javascripts/admin/components/admin-report-table.js.es6 +++ b/app/assets/javascripts/admin/components/admin-report-table.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { makeArray } from "discourse-common/lib/helpers"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; const PAGES_LIMIT = 8; @@ -13,12 +13,16 @@ export default Component.extend({ perPage: alias("options.perPage"), page: 0, - @computed("model.computedLabels.length") + @discourseComputed("model.computedLabels.length") twoColumns(labelsLength) { return labelsLength === 2; }, - @computed("totalsForSample", "options.total", "model.dates_filtering") + @discourseComputed( + "totalsForSample", + "options.total", + "model.dates_filtering" + ) showTotalForSample(totalsForSample, total, datesFiltering) { // check if we have at least one cell which contains a value const sum = totalsForSample @@ -29,12 +33,16 @@ export default Component.extend({ return sum >= 1 && total && datesFiltering; }, - @computed("model.total", "options.total", "twoColumns") + @discourseComputed("model.total", "options.total", "twoColumns") showTotal(reportTotal, total, twoColumns) { return reportTotal && total && twoColumns; }, - @computed("model.{average,data}", "totalsForSample.1.value", "twoColumns") + @discourseComputed( + "model.{average,data}", + "totalsForSample.1.value", + "twoColumns" + ) showAverage(model, sampleTotalValue, hasTwoColumns) { return ( model.average && @@ -44,17 +52,17 @@ export default Component.extend({ ); }, - @computed("totalsForSample.1.value", "model.data.length") + @discourseComputed("totalsForSample.1.value", "model.data.length") averageForSample(totals, count) { return (totals / count).toFixed(0); }, - @computed("model.data.length") + @discourseComputed("model.data.length") showSortingUI(dataLength) { return dataLength >= 5; }, - @computed("totalsForSampleRow", "model.computedLabels") + @discourseComputed("totalsForSampleRow", "model.computedLabels") totalsForSample(row, labels) { return labels.map(label => { const computedLabel = label.compute(row); @@ -64,7 +72,7 @@ export default Component.extend({ }); }, - @computed("model.data", "model.computedLabels") + @discourseComputed("model.data", "model.computedLabels") totalsForSampleRow(rows, labels) { if (!rows || !rows.length) return {}; @@ -90,7 +98,7 @@ export default Component.extend({ return totalsRow; }, - @computed("sortLabel", "sortDirection", "model.data.[]") + @discourseComputed("sortLabel", "sortDirection", "model.data.[]") sortedData(sortLabel, sortDirection, data) { data = makeArray(data); @@ -110,7 +118,7 @@ export default Component.extend({ return data; }, - @computed("sortedData.[]", "perPage", "page") + @discourseComputed("sortedData.[]", "perPage", "page") paginatedData(data, perPage, page) { if (perPage < data.length) { const start = perPage * page; @@ -120,7 +128,7 @@ export default Component.extend({ return data; }, - @computed("model.data", "perPage", "page") + @discourseComputed("model.data", "perPage", "page") pages(data, perPage, page) { if (!data || data.length <= perPage) return []; diff --git a/app/assets/javascripts/admin/components/admin-report.js.es6 b/app/assets/javascripts/admin/components/admin-report.js.es6 index 59aaf29c3b..cb70fc07ff 100644 --- a/app/assets/javascripts/admin/components/admin-report.js.es6 +++ b/app/assets/javascripts/admin/components/admin-report.js.es6 @@ -1,3 +1,4 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { makeArray } from "discourse-common/lib/helpers"; import { alias, or, and, reads, equal, notEmpty } from "@ember/object/computed"; import EmberObject from "@ember/object"; @@ -8,7 +9,6 @@ import { exportEntity } from "discourse/lib/export-csv"; import { outputExportResult } from "discourse/lib/export-result"; import { isNumeric } from "discourse/lib/utilities"; import { SCHEMA_VERSION, default as Report } from "admin/models/report"; -import computed from "ember-addons/ember-computed-decorators"; import ENV from "discourse-common/config/environment"; const TABLE_OPTIONS = { @@ -90,23 +90,23 @@ export default Component.extend({ hasData: notEmpty("model.data"), - @computed("dataSourceName", "model.type") + @discourseComputed("dataSourceName", "model.type") dasherizedDataSourceName(dataSourceName, type) { return (dataSourceName || type || "undefined").replace(/_/g, "-"); }, - @computed("dataSourceName", "model.type") + @discourseComputed("dataSourceName", "model.type") dataSource(dataSourceName, type) { dataSourceName = dataSourceName || type; return `/admin/reports/${dataSourceName}`; }, - @computed("displayedModes.length") + @discourseComputed("displayedModes.length") showModes(displayedModesLength) { return displayedModesLength > 1; }, - @computed("currentMode", "model.modes", "forcedModes") + @discourseComputed("currentMode", "model.modes", "forcedModes") displayedModes(currentMode, reportModes, forcedModes) { const modes = forcedModes ? forcedModes.split(",") : reportModes; @@ -122,12 +122,12 @@ export default Component.extend({ }); }, - @computed("currentMode") + @discourseComputed("currentMode") modeComponent(currentMode) { return `admin-report-${currentMode}`; }, - @computed("startDate") + @discourseComputed("startDate") normalizedStartDate(startDate) { return startDate && typeof startDate.isValid === "function" ? moment @@ -139,7 +139,7 @@ export default Component.extend({ .format("YYYYMMDD"); }, - @computed("endDate") + @discourseComputed("endDate") normalizedEndDate(endDate) { return endDate && typeof endDate.isValid === "function" ? moment @@ -151,7 +151,7 @@ export default Component.extend({ .format("YYYYMMDD"); }, - @computed( + @discourseComputed( "dataSourceName", "normalizedStartDate", "normalizedEndDate", diff --git a/app/assets/javascripts/admin/components/admin-theme-editor.js.es6 b/app/assets/javascripts/admin/components/admin-theme-editor.js.es6 index 1dec9fce37..381ac0ca47 100644 --- a/app/assets/javascripts/admin/components/admin-theme-editor.js.es6 +++ b/app/assets/javascripts/admin/components/admin-theme-editor.js.es6 @@ -1,10 +1,10 @@ import { next } from "@ember/runloop"; import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { fmt } from "discourse/lib/computed"; export default Component.extend({ - @computed("theme.targets", "onlyOverridden", "showAdvanced") + @discourseComputed("theme.targets", "onlyOverridden", "showAdvanced") visibleTargets(targets, onlyOverridden, showAdvanced) { return targets.filter(target => { if (target.advanced && !showAdvanced) { @@ -17,7 +17,7 @@ export default Component.extend({ }); }, - @computed("currentTargetName", "onlyOverridden", "theme.fields") + @discourseComputed("currentTargetName", "onlyOverridden", "theme.fields") visibleFields(targetName, onlyOverridden, fields) { fields = fields[targetName]; if (onlyOverridden) { @@ -26,14 +26,14 @@ export default Component.extend({ return fields; }, - @computed("currentTargetName", "fieldName") + @discourseComputed("currentTargetName", "fieldName") activeSectionMode(targetName, fieldName) { if (["settings", "translations"].includes(targetName)) return "yaml"; if (["extra_scss"].includes(targetName)) return "scss"; return fieldName && fieldName.indexOf("scss") > -1 ? "scss" : "html"; }, - @computed("fieldName", "currentTargetName", "theme") + @discourseComputed("fieldName", "currentTargetName", "theme") activeSection: { get(fieldName, target, model) { return model.getField(target, fieldName); @@ -46,17 +46,21 @@ export default Component.extend({ editorId: fmt("fieldName", "currentTargetName", "%@|%@"), - @computed("maximized") + @discourseComputed("maximized") maximizeIcon(maximized) { return maximized ? "discourse-compress" : "discourse-expand"; }, - @computed("currentTargetName", "theme.targets") + @discourseComputed("currentTargetName", "theme.targets") showAddField(currentTargetName, targets) { return targets.find(t => t.name === currentTargetName).customNames; }, - @computed("currentTargetName", "fieldName", "theme.theme_fields.@each.error") + @discourseComputed( + "currentTargetName", + "fieldName", + "theme.theme_fields.@each.error" + ) error(target, fieldName) { return this.theme.getError(target, fieldName); }, diff --git a/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 b/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 index 23bfac19b4..a392196f8a 100644 --- a/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 +++ b/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 @@ -8,10 +8,10 @@ import { popupAjaxError } from "discourse/lib/ajax-error"; import { propertyEqual } from "discourse/lib/computed"; import { i18n } from "discourse/lib/computed"; import { - default as computed, + default as discourseComputed, observes, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Component.extend(bufferedProperty("userField"), { editing: empty("userField.id"), @@ -22,7 +22,7 @@ export default Component.extend(bufferedProperty("userField"), { userFieldsDescription: i18n("admin.user_fields.description"), - @computed("buffered.field_type") + @discourseComputed("buffered.field_type") bufferedFieldType(fieldType) { return UserField.fieldTypeById(fieldType); }, @@ -39,12 +39,12 @@ export default Component.extend(bufferedProperty("userField"), { $(".user-field-name").select(); }, - @computed("userField.field_type") + @discourseComputed("userField.field_type") fieldName(fieldType) { return UserField.fieldTypeById(fieldType).get("name"); }, - @computed( + @discourseComputed( "userField.editable", "userField.required", "userField.show_on_profile", diff --git a/app/assets/javascripts/admin/components/admin-web-hook-event-chooser.js.es6 b/app/assets/javascripts/admin/components/admin-web-hook-event-chooser.js.es6 index 1c7f6f05a0..a38695c735 100644 --- a/app/assets/javascripts/admin/components/admin-web-hook-event-chooser.js.es6 +++ b/app/assets/javascripts/admin/components/admin-web-hook-event-chooser.js.es6 @@ -1,27 +1,27 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["hook-event"], typeName: alias("type.name"), - @computed("typeName") + @discourseComputed("typeName") name(typeName) { return I18n.t(`admin.web_hooks.${typeName}_event.name`); }, - @computed("typeName") + @discourseComputed("typeName") details(typeName) { return I18n.t(`admin.web_hooks.${typeName}_event.details`); }, - @computed("model.[]", "typeName") + @discourseComputed("model.[]", "typeName") eventTypeExists(eventTypes, typeName) { return eventTypes.any(event => event.name === typeName); }, - @computed("eventTypeExists") + @discourseComputed("eventTypeExists") enabled: { get(eventTypeExists) { return eventTypeExists; diff --git a/app/assets/javascripts/admin/components/admin-web-hook-event.js.es6 b/app/assets/javascripts/admin/components/admin-web-hook-event.js.es6 index 693e6502ff..365e22aa67 100644 --- a/app/assets/javascripts/admin/components/admin-web-hook-event.js.es6 +++ b/app/assets/javascripts/admin/components/admin-web-hook-event.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { ensureJSON, plainJSON, prettyJSON } from "discourse/lib/formatter"; @@ -10,7 +10,7 @@ export default Component.extend({ expandDetailsRequestKey: "request", expandDetailsResponseKey: "response", - @computed("model.status") + @discourseComputed("model.status") statusColorClasses(status) { if (!status) return ""; @@ -21,25 +21,25 @@ export default Component.extend({ } }, - @computed("model.created_at") + @discourseComputed("model.created_at") createdAt(createdAt) { return moment(createdAt).format("YYYY-MM-DD HH:mm:ss"); }, - @computed("model.duration") + @discourseComputed("model.duration") completion(duration) { const seconds = Math.floor(duration / 10.0) / 100.0; return I18n.t("admin.web_hooks.events.completed_in", { count: seconds }); }, - @computed("expandDetails") + @discourseComputed("expandDetails") expandRequestIcon(expandDetails) { return expandDetails === this.expandDetailsRequestKey ? "ellipsis-h" : "ellipsis-v"; }, - @computed("expandDetails") + @discourseComputed("expandDetails") expandResponseIcon(expandDetails) { return expandDetails === this.expandDetailsResponseKey ? "ellipsis-h" diff --git a/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 b/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 index 0d8e80cc81..b023a330c7 100644 --- a/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 +++ b/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { iconHTML } from "discourse-common/lib/icon-library"; import { bufferedRender } from "discourse-common/lib/buffered-render"; @@ -8,17 +8,17 @@ export default Component.extend( classes: ["text-muted", "text-danger", "text-successful", "text-muted"], icons: ["far-circle", "times-circle", "circle", "circle"], - @computed("deliveryStatuses", "model.last_delivery_status") + @discourseComputed("deliveryStatuses", "model.last_delivery_status") status(deliveryStatuses, lastDeliveryStatus) { return deliveryStatuses.find(s => s.id === lastDeliveryStatus); }, - @computed("status.id", "icons") + @discourseComputed("status.id", "icons") icon(statusId, icons) { return icons[statusId - 1]; }, - @computed("status.id", "classes") + @discourseComputed("status.id", "classes") class(statusId, classes) { return classes[statusId - 1]; }, diff --git a/app/assets/javascripts/admin/components/email-styles-editor.js.es6 b/app/assets/javascripts/admin/components/email-styles-editor.js.es6 index e465c04cba..ef5cdb077e 100644 --- a/app/assets/javascripts/admin/components/email-styles-editor.js.es6 +++ b/app/assets/javascripts/admin/components/email-styles-editor.js.es6 @@ -1,16 +1,16 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { reads } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ editorId: reads("fieldName"), - @computed("fieldName") + @discourseComputed("fieldName") currentEditorMode(fieldName) { return fieldName === "css" ? "scss" : fieldName; }, - @computed("fieldName", "styles.html", "styles.css") + @discourseComputed("fieldName", "styles.html", "styles.css") resetDisabled(fieldName) { return ( this.get(`styles.${fieldName}`) === @@ -18,7 +18,7 @@ export default Component.extend({ ); }, - @computed("styles", "fieldName") + @discourseComputed("styles", "fieldName") editorContents: { get(styles, fieldName) { return styles[fieldName]; diff --git a/app/assets/javascripts/admin/components/embeddable-host.js.es6 b/app/assets/javascripts/admin/components/embeddable-host.js.es6 index 57829b45fb..054acc744c 100644 --- a/app/assets/javascripts/admin/components/embeddable-host.js.es6 +++ b/app/assets/javascripts/admin/components/embeddable-host.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { or } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import { bufferedProperty } from "discourse/mixins/buffered-content"; -import computed from "ember-addons/ember-computed-decorators"; -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; export default Component.extend(bufferedProperty("host"), { @@ -22,7 +22,7 @@ export default Component.extend(bufferedProperty("host"), { }); }, - @computed("buffered.host", "host.isSaving") + @discourseComputed("buffered.host", "host.isSaving") cantSave(host, isSaving) { return isSaving || isEmpty(host); }, diff --git a/app/assets/javascripts/admin/components/embedding-setting.js.es6 b/app/assets/javascripts/admin/components/embedding-setting.js.es6 index da7f9abb7f..517e37f4f9 100644 --- a/app/assets/javascripts/admin/components/embedding-setting.js.es6 +++ b/app/assets/javascripts/admin/components/embedding-setting.js.es6 @@ -1,25 +1,25 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["embed-setting"], - @computed("field") + @discourseComputed("field") inputId(field) { return field.dasherize(); }, - @computed("field") + @discourseComputed("field") translationKey(field) { return `admin.embedding.${field}`; }, - @computed("type") + @discourseComputed("type") isCheckbox(type) { return type === "checkbox"; }, - @computed("value") + @discourseComputed("value") checked: { get(value) { return !!value; diff --git a/app/assets/javascripts/admin/components/highlighted-code.js.es6 b/app/assets/javascripts/admin/components/highlighted-code.js.es6 index d182d7e2a1..9159bb574a 100644 --- a/app/assets/javascripts/admin/components/highlighted-code.js.es6 +++ b/app/assets/javascripts/admin/components/highlighted-code.js.es6 @@ -1,5 +1,5 @@ import Component from "@ember/component"; -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; import highlightSyntax from "discourse/lib/highlight-syntax"; export default Component.extend({ diff --git a/app/assets/javascripts/admin/components/inline-edit-checkbox.js.es6 b/app/assets/javascripts/admin/components/inline-edit-checkbox.js.es6 index e88c2bc3b7..ff3cb98ffc 100644 --- a/app/assets/javascripts/admin/components/inline-edit-checkbox.js.es6 +++ b/app/assets/javascripts/admin/components/inline-edit-checkbox.js.es6 @@ -1,8 +1,8 @@ import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Component.extend({ classNames: ["inline-edit"], @@ -21,12 +21,12 @@ export default Component.extend({ this.set("checkedInternal", this.checked); }, - @computed("labelKey") + @discourseComputed("labelKey") label(key) { return I18n.t(key); }, - @computed("checked", "checkedInternal") + @discourseComputed("checked", "checkedInternal") changed(checked, checkedInternal) { return !!checked !== !!checkedInternal; }, diff --git a/app/assets/javascripts/admin/components/ip-lookup.js.es6 b/app/assets/javascripts/admin/components/ip-lookup.js.es6 index 8438a4ee5c..06421e2e90 100644 --- a/app/assets/javascripts/admin/components/ip-lookup.js.es6 +++ b/app/assets/javascripts/admin/components/ip-lookup.js.es6 @@ -1,7 +1,7 @@ import EmberObject from "@ember/object"; import { later } from "@ember/runloop"; import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; import AdminUser from "admin/models/admin-user"; import copyText from "discourse/lib/copy-text"; @@ -9,7 +9,7 @@ import copyText from "discourse/lib/copy-text"; export default Component.extend({ classNames: ["ip-lookup"], - @computed("other_accounts.length", "totalOthersWithSameIP") + @discourseComputed("other_accounts.length", "totalOthersWithSameIP") otherAccountsToDelete(otherAccountsLength, totalOthersWithSameIP) { // can only delete up to 50 accounts at a time const total = Math.min(50, totalOthersWithSameIP || 0); diff --git a/app/assets/javascripts/admin/components/penalty-post-action.js.es6 b/app/assets/javascripts/admin/components/penalty-post-action.js.es6 index 8af1f83b16..6a703105fb 100644 --- a/app/assets/javascripts/admin/components/penalty-post-action.js.es6 +++ b/app/assets/javascripts/admin/components/penalty-post-action.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { equal } from "@ember/object/computed"; import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; const ACTIONS = ["delete", "delete_replies", "edit", "none"]; @@ -10,7 +10,7 @@ export default Component.extend({ postAction: null, postEdit: null, - @computed + @discourseComputed penaltyActions() { return ACTIONS.map(id => { return { id, name: I18n.t(`admin.user.penalty_post_${id}`) }; diff --git a/app/assets/javascripts/admin/components/permalink-form.js.es6 b/app/assets/javascripts/admin/components/permalink-form.js.es6 index b1f82ea295..5a90dd9913 100644 --- a/app/assets/javascripts/admin/components/permalink-form.js.es6 +++ b/app/assets/javascripts/admin/components/permalink-form.js.es6 @@ -1,6 +1,6 @@ import { schedule } from "@ember/runloop"; import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { fmt } from "discourse/lib/computed"; import Permalink from "admin/models/permalink"; @@ -10,7 +10,7 @@ export default Component.extend({ permalinkType: "topic_id", permalinkTypePlaceholder: fmt("permalinkType", "admin.permalink.%@"), - @computed + @discourseComputed permalinkTypes() { return [ { id: "topic_id", name: I18n.t("admin.permalink.topic_id") }, diff --git a/app/assets/javascripts/admin/components/report-filters/category.js.es6 b/app/assets/javascripts/admin/components/report-filters/category.js.es6 index 7efdd4a465..60fb61be9b 100644 --- a/app/assets/javascripts/admin/components/report-filters/category.js.es6 +++ b/app/assets/javascripts/admin/components/report-filters/category.js.es6 @@ -1,5 +1,5 @@ import Category from "discourse/models/category"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import FilterComponent from "admin/components/report-filters/filter"; export default FilterComponent.extend({ @@ -7,7 +7,7 @@ export default FilterComponent.extend({ layoutName: "admin/templates/components/report-filters/category", - @computed("filter.default") + @discourseComputed("filter.default") category(categoryId) { return Category.findById(categoryId); }, diff --git a/app/assets/javascripts/admin/components/report-filters/group.js.es6 b/app/assets/javascripts/admin/components/report-filters/group.js.es6 index 54523f9446..0821cb084e 100644 --- a/app/assets/javascripts/admin/components/report-filters/group.js.es6 +++ b/app/assets/javascripts/admin/components/report-filters/group.js.es6 @@ -1,19 +1,19 @@ import FilterComponent from "admin/components/report-filters/filter"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default FilterComponent.extend({ classNames: ["group-filter"], layoutName: "admin/templates/components/report-filters/group", - @computed() + @discourseComputed() groupOptions() { return (this.site.groups || []).map(group => { return { name: group["name"], value: group["id"] }; }); }, - @computed("filter.default") + @discourseComputed("filter.default") groupId(filterDefault) { return filterDefault ? parseInt(filterDefault, 10) : null; } diff --git a/app/assets/javascripts/admin/components/resumable-upload.js.es6 b/app/assets/javascripts/admin/components/resumable-upload.js.es6 index d63a1a651d..925bdf0de9 100644 --- a/app/assets/javascripts/admin/components/resumable-upload.js.es6 +++ b/app/assets/javascripts/admin/components/resumable-upload.js.es6 @@ -4,9 +4,9 @@ import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; import { bufferedRender } from "discourse-common/lib/buffered-render"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; /*global Resumable:true */ @@ -91,12 +91,12 @@ export default Component.extend( } }, - @computed("title", "text") + @discourseComputed("title", "text") translatedTitle(title, text) { return title ? I18n.t(title) : text; }, - @computed("isUploading", "progress") + @discourseComputed("isUploading", "progress") text(isUploading, progress) { if (isUploading) { return progress + " %"; diff --git a/app/assets/javascripts/admin/components/save-controls.js.es6 b/app/assets/javascripts/admin/components/save-controls.js.es6 index b039b0158c..9da4e49fe2 100644 --- a/app/assets/javascripts/admin/components/save-controls.js.es6 +++ b/app/assets/javascripts/admin/components/save-controls.js.es6 @@ -1,13 +1,13 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { or } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["controls"], buttonDisabled: or("model.isSaving", "saveDisabled"), - @computed("model.isSaving") + @discourseComputed("model.isSaving") savingText(saving) { return saving ? "saving" : "save"; } diff --git a/app/assets/javascripts/admin/components/screened-ip-address-form.js.es6 b/app/assets/javascripts/admin/components/screened-ip-address-form.js.es6 index 8b6db57764..48b92641b4 100644 --- a/app/assets/javascripts/admin/components/screened-ip-address-form.js.es6 +++ b/app/assets/javascripts/admin/components/screened-ip-address-form.js.es6 @@ -1,3 +1,4 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; /** @@ -12,20 +13,19 @@ import Component from "@ember/component"; **/ import ScreenedIpAddress from "admin/models/screened-ip-address"; -import computed from "ember-addons/ember-computed-decorators"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; export default Component.extend({ classNames: ["screened-ip-address-form"], formSubmitted: false, actionName: "block", - @computed + @discourseComputed adminWhitelistEnabled() { return Discourse.SiteSettings.use_admin_ip_whitelist; }, - @computed("adminWhitelistEnabled") + @discourseComputed("adminWhitelistEnabled") actionNames(adminWhitelistEnabled) { if (adminWhitelistEnabled) { return [ diff --git a/app/assets/javascripts/admin/components/secret-value-list.js.es6 b/app/assets/javascripts/admin/components/secret-value-list.js.es6 index 4327f62f80..ea4ecf792c 100644 --- a/app/assets/javascripts/admin/components/secret-value-list.js.es6 +++ b/app/assets/javascripts/admin/components/secret-value-list.js.es6 @@ -1,6 +1,6 @@ import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import { set } from "@ember/object"; export default Component.extend({ diff --git a/app/assets/javascripts/admin/components/site-settings/bool.js.es6 b/app/assets/javascripts/admin/components/site-settings/bool.js.es6 index 2b2fdaca8e..88f4387601 100644 --- a/app/assets/javascripts/admin/components/site-settings/bool.js.es6 +++ b/app/assets/javascripts/admin/components/site-settings/bool.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ - @computed("value") + @discourseComputed("value") enabled: { get(value) { if (isEmpty(value)) { diff --git a/app/assets/javascripts/admin/components/site-settings/category-list.js.es6 b/app/assets/javascripts/admin/components/site-settings/category-list.js.es6 index d4476ddf13..5d4b68b19b 100644 --- a/app/assets/javascripts/admin/components/site-settings/category-list.js.es6 +++ b/app/assets/javascripts/admin/components/site-settings/category-list.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ - @computed("value") + @discourseComputed("value") selectedCategories: { get(value) { return Discourse.Category.findByIds(value.split("|")); diff --git a/app/assets/javascripts/admin/components/site-settings/group-list.js.es6 b/app/assets/javascripts/admin/components/site-settings/group-list.js.es6 index 21af030269..97736c36ca 100644 --- a/app/assets/javascripts/admin/components/site-settings/group-list.js.es6 +++ b/app/assets/javascripts/admin/components/site-settings/group-list.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ - @computed() + @discourseComputed() groupChoices() { return this.site.get("groups").map(g => { return { name: g.name, id: g.id.toString() }; diff --git a/app/assets/javascripts/admin/components/site-settings/tag-list.js.es6 b/app/assets/javascripts/admin/components/site-settings/tag-list.js.es6 index 417ad622cb..c8a8e0a06f 100644 --- a/app/assets/javascripts/admin/components/site-settings/tag-list.js.es6 +++ b/app/assets/javascripts/admin/components/site-settings/tag-list.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ - @computed("value") + @discourseComputed("value") selectedTags: { get(value) { return value.split("|"); diff --git a/app/assets/javascripts/admin/components/site-text-summary.js.es6 b/app/assets/javascripts/admin/components/site-text-summary.js.es6 index 4467a092d1..11c6bc45eb 100644 --- a/app/assets/javascripts/admin/components/site-text-summary.js.es6 +++ b/app/assets/javascripts/admin/components/site-text-summary.js.es6 @@ -1,5 +1,5 @@ import Component from "@ember/component"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; export default Component.extend({ classNames: ["site-text"], diff --git a/app/assets/javascripts/admin/components/themes-list-item.js.es6 b/app/assets/javascripts/admin/components/themes-list-item.js.es6 index 2c4a5265b8..cfc1b63a36 100644 --- a/app/assets/javascripts/admin/components/themes-list-item.js.es6 +++ b/app/assets/javascripts/admin/components/themes-list-item.js.es6 @@ -2,9 +2,9 @@ import { gt, and } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { iconHTML } from "discourse-common/lib/icon-library"; import { escape } from "pretty-text/sanitizer"; import ENV from "discourse-common/config/environment"; @@ -55,7 +55,7 @@ export default Component.extend({ } }, - @computed( + @discourseComputed( "theme.component", "theme.childThemes.@each.name", "theme.childThemes.length", @@ -76,12 +76,12 @@ export default Component.extend({ }); }, - @computed("children") + @discourseComputed("children") childrenString(children) { return children.join(", "); }, - @computed( + @discourseComputed( "theme.childThemes.length", "theme.component", "childrenExpanded", diff --git a/app/assets/javascripts/admin/components/themes-list.js.es6 b/app/assets/javascripts/admin/components/themes-list.js.es6 index 1a420eeba8..ae883a115d 100644 --- a/app/assets/javascripts/admin/components/themes-list.js.es6 +++ b/app/assets/javascripts/admin/components/themes-list.js.es6 @@ -1,7 +1,7 @@ import { gt, equal } from "@ember/object/computed"; import Component from "@ember/component"; import { THEMES, COMPONENTS } from "admin/models/theme"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { getOwner } from "@ember/application"; export default Component.extend({ @@ -17,7 +17,7 @@ export default Component.extend({ themesTabActive: equal("currentTab", THEMES), componentsTabActive: equal("currentTab", COMPONENTS), - @computed("themes", "components", "currentTab") + @discourseComputed("themes", "components", "currentTab") themesList(themes, components) { if (this.themesTabActive) { return themes; @@ -26,7 +26,7 @@ export default Component.extend({ } }, - @computed( + @discourseComputed( "themesList", "currentTab", "themesList.@each.user_selectable", @@ -41,7 +41,7 @@ export default Component.extend({ ); }, - @computed( + @discourseComputed( "themesList", "currentTab", "themesList.@each.user_selectable", diff --git a/app/assets/javascripts/admin/components/value-list.js.es6 b/app/assets/javascripts/admin/components/value-list.js.es6 index 31ef93932e..6582f20e7f 100644 --- a/app/assets/javascripts/admin/components/value-list.js.es6 +++ b/app/assets/javascripts/admin/components/value-list.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { makeArray } from "discourse-common/lib/helpers"; import { empty, alias } from "@ember/object/computed"; import Component from "@ember/component"; -import { on } from "ember-addons/ember-computed-decorators"; -import computed from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; export default Component.extend({ classNameBindings: [":value-list"], @@ -30,7 +30,7 @@ export default Component.extend({ ); }, - @computed("choices.[]", "collection.[]") + @discourseComputed("choices.[]", "collection.[]") filteredChoices(choices, collection) { return makeArray(choices).filter(i => collection.indexOf(i) < 0); }, diff --git a/app/assets/javascripts/admin/components/watched-word-form.js.es6 b/app/assets/javascripts/admin/components/watched-word-form.js.es6 index 629c5a2b6a..2359320ad6 100644 --- a/app/assets/javascripts/admin/components/watched-word-form.js.es6 +++ b/app/assets/javascripts/admin/components/watched-word-form.js.es6 @@ -3,10 +3,10 @@ import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import WatchedWord from "admin/models/watched-word"; import { - default as computed, + default as discourseComputed, on, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Component.extend({ classNames: ["watched-word-form"], @@ -14,7 +14,7 @@ export default Component.extend({ actionKey: null, showMessage: false, - @computed("regularExpressions") + @discourseComputed("regularExpressions") placeholderKey(regularExpressions) { return ( "admin.watched_words.form.placeholder" + @@ -29,7 +29,7 @@ export default Component.extend({ } }, - @computed("word") + @discourseComputed("word") isUniqueWord(word) { const words = this.filteredContent || []; const filtered = words.filter(content => content.action === this.actionKey); diff --git a/app/assets/javascripts/admin/components/watched-word-uploader.js.es6 b/app/assets/javascripts/admin/components/watched-word-uploader.js.es6 index 417f3d5bbf..05dc41c207 100644 --- a/app/assets/javascripts/admin/components/watched-word-uploader.js.es6 +++ b/app/assets/javascripts/admin/components/watched-word-uploader.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import UploadMixin from "discourse/mixins/upload"; export default Component.extend(UploadMixin, { @@ -13,7 +13,7 @@ export default Component.extend(UploadMixin, { return { skipValidation: true }; }, - @computed("actionKey") + @discourseComputed("actionKey") data(actionKey) { return { action_key: actionKey }; }, diff --git a/app/assets/javascripts/admin/controllers/admin-api-keys-new.js.es6 b/app/assets/javascripts/admin/controllers/admin-api-keys-new.js.es6 index f4d56c0a05..c04e6abec9 100644 --- a/app/assets/javascripts/admin/controllers/admin-api-keys-new.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-api-keys-new.js.es6 @@ -1,4 +1,4 @@ -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; export default Ember.Controller.extend({ @@ -7,12 +7,12 @@ export default Ember.Controller.extend({ { id: "single", name: I18n.t("admin.api.single_user") } ], - @computed("userMode") + @discourseComputed("userMode") showUserSelector(mode) { return mode === "single"; }, - @computed("model.description", "model.username", "userMode") + @discourseComputed("model.description", "model.username", "userMode") saveDisabled(description, username, userMode) { if (Ember.isBlank(description)) return true; if (userMode === "single" && Ember.isBlank(username)) return true; diff --git a/app/assets/javascripts/admin/controllers/admin-backups-index.js.es6 b/app/assets/javascripts/admin/controllers/admin-backups-index.js.es6 index 6b69eaea72..e4e7c24d43 100644 --- a/app/assets/javascripts/admin/controllers/admin-backups-index.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-backups-index.js.es6 @@ -2,7 +2,7 @@ import { alias, equal } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { ajax } from "discourse/lib/ajax"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { setting, i18n } from "discourse/lib/computed"; export default Controller.extend({ @@ -12,7 +12,7 @@ export default Controller.extend({ backupLocation: setting("backup_location"), localBackupStorage: equal("backupLocation", "local"), - @computed("status.allowRestore", "status.isOperationRunning") + @discourseComputed("status.allowRestore", "status.isOperationRunning") restoreTitle(allowRestore, isOperationRunning) { if (!allowRestore) { return "admin.backups.operations.restore.is_disabled"; diff --git a/app/assets/javascripts/admin/controllers/admin-badges-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-badges-show.js.es6 index 733f4589fe..2511dcead1 100644 --- a/app/assets/javascripts/admin/controllers/admin-badges-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-badges-show.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { bufferedProperty } from "discourse/mixins/buffered-content"; import { propertyNotEqual } from "discourse/lib/computed"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(bufferedProperty("model"), { adminBadges: inject(), @@ -19,7 +19,7 @@ export default Controller.extend(bufferedProperty("model"), { readOnly: alias("buffered.system"), showDisplayName: propertyNotEqual("name", "displayName"), - @computed("model.query", "buffered.query") + @discourseComputed("model.query", "buffered.query") hasQuery(modelQuery, bufferedQuery) { if (bufferedQuery) { return bufferedQuery.trim().length > 0; diff --git a/app/assets/javascripts/admin/controllers/admin-customize-colors-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-colors-show.js.es6 index ce99c2cfea..9cdca3f098 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-colors-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-colors-show.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { later } from "@ember/runloop"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ - @computed("model.colors", "onlyOverridden") + @discourseComputed("model.colors", "onlyOverridden") colors(allColors, onlyOverridden) { if (onlyOverridden) { return allColors.filter(color => color.get("overridden")); diff --git a/app/assets/javascripts/admin/controllers/admin-customize-colors.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-colors.js.es6 index 21c628be24..4fc2cf34f0 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-colors.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-colors.js.es6 @@ -1,20 +1,20 @@ import EmberObject from "@ember/object"; import Controller from "@ember/controller"; import showModal from "discourse/lib/show-modal"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default Controller.extend({ - @computed("model.@each.id") + @discourseComputed("model.@each.id") baseColorScheme() { return this.model.findBy("is_base", true); }, - @computed("model.@each.id") + @discourseComputed("model.@each.id") baseColorSchemes() { return this.model.filterBy("is_base", true); }, - @computed("baseColorScheme") + @discourseComputed("baseColorScheme") baseColors(baseColorScheme) { const baseColorsHash = EmberObject.create({}); baseColorScheme.get("colors").forEach(color => { diff --git a/app/assets/javascripts/admin/controllers/admin-customize-email-style-edit.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-email-style-edit.js.es6 index f48f46eff0..d534792b00 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-email-style-edit.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-email-style-edit.js.es6 @@ -1,13 +1,13 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ - @computed("model.isSaving") + @discourseComputed("model.isSaving") saveButtonText(isSaving) { return isSaving ? I18n.t("saving") : I18n.t("admin.customize.save"); }, - @computed("model.changed", "model.isSaving") + @discourseComputed("model.changed", "model.isSaving") saveDisabled(changed, isSaving) { return !changed || isSaving; }, diff --git a/app/assets/javascripts/admin/controllers/admin-customize-email-templates-edit.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-email-templates-edit.js.es6 index 5ec405594a..3617edca75 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-email-templates-edit.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-email-templates-edit.js.es6 @@ -1,19 +1,19 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { bufferedProperty } from "discourse/mixins/buffered-content"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(bufferedProperty("emailTemplate"), { saved: false, - @computed("buffered.body", "buffered.subject") + @discourseComputed("buffered.body", "buffered.subject") saveDisabled(body, subject) { return ( this.emailTemplate.body === body && this.emailTemplate.subject === subject ); }, - @computed("buffered") + @discourseComputed("buffered") hasMultipleSubjects(buffered) { if (buffered.getProperties("subject")["subject"]) { return false; diff --git a/app/assets/javascripts/admin/controllers/admin-customize-themes-edit.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-themes-edit.js.es6 index a5a286bf80..75d7a486f2 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-themes-edit.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-themes-edit.js.es6 @@ -1,6 +1,6 @@ import Controller from "@ember/controller"; import { url } from "discourse/lib/computed"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default Controller.extend({ section: null, @@ -16,7 +16,7 @@ export default Controller.extend({ this.set("currentTarget", target && target.id); }, - @computed("currentTarget") + @discourseComputed("currentTarget") currentTargetName(id) { const target = this.get("model.targets").find( t => t.id === parseInt(id, 10) @@ -24,12 +24,12 @@ export default Controller.extend({ return target && target.name; }, - @computed("model.isSaving") + @discourseComputed("model.isSaving") saveButtonText(isSaving) { return isSaving ? I18n.t("saving") : I18n.t("admin.customize.save"); }, - @computed("model.changed", "model.isSaving") + @discourseComputed("model.changed", "model.isSaving") saveDisabled(changed, isSaving) { return !changed || isSaving; }, diff --git a/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 index d4622e21d8..aa4c32ce33 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 @@ -1,7 +1,7 @@ import { makeArray } from "discourse-common/lib/helpers"; import { empty, notEmpty, match } from "@ember/object/computed"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { url } from "discourse/lib/computed"; import { popupAjaxError } from "discourse/lib/ajax-error"; import showModal from "discourse/lib/show-modal"; @@ -16,7 +16,7 @@ export default Controller.extend({ addButtonDisabled: empty("selectedChildThemeId"), editRouteName: "adminCustomizeThemes.edit", - @computed("model.editedFields") + @discourseComputed("model.editedFields") editedFieldsFormatted() { const descriptions = []; ["common", "desktop", "mobile"].forEach(target => { @@ -34,13 +34,13 @@ export default Controller.extend({ return descriptions; }, - @computed("colorSchemeId", "model.color_scheme_id") + @discourseComputed("colorSchemeId", "model.color_scheme_id") colorSchemeChanged(colorSchemeId, existingId) { colorSchemeId = colorSchemeId === null ? null : parseInt(colorSchemeId); return colorSchemeId !== existingId; }, - @computed("availableChildThemes", "model.childThemes.[]", "model") + @discourseComputed("availableChildThemes", "model.childThemes.[]", "model") selectableChildThemes(available, childThemes) { if (available) { const themes = !childThemes @@ -50,7 +50,7 @@ export default Controller.extend({ } }, - @computed("allThemes", "model.component", "model") + @discourseComputed("allThemes", "model.component", "model") availableChildThemes(allThemes) { if (!this.get("model.component")) { const themeId = this.get("model.id"); @@ -60,38 +60,38 @@ export default Controller.extend({ } }, - @computed("model.component") + @discourseComputed("model.component") convertKey(component) { const type = component ? "component" : "theme"; return `admin.customize.theme.convert_${type}`; }, - @computed("model.component") + @discourseComputed("model.component") convertIcon(component) { return component ? "cube" : ""; }, - @computed("model.component") + @discourseComputed("model.component") convertTooltip(component) { const type = component ? "component" : "theme"; return `admin.customize.theme.convert_${type}_tooltip`; }, - @computed("model.settings") + @discourseComputed("model.settings") settings(settings) { return settings.map(setting => ThemeSettings.create(setting)); }, hasSettings: notEmpty("settings"), - @computed("model.translations") + @discourseComputed("model.translations") translations(translations) { return translations.map(setting => ThemeSettings.create(setting)); }, hasTranslations: notEmpty("translations"), - @computed("model.remoteError", "updatingRemote") + @discourseComputed("model.remoteError", "updatingRemote") showRemoteError(errorMessage, updating) { return errorMessage && !updating; }, diff --git a/app/assets/javascripts/admin/controllers/admin-customize-themes.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-themes.js.es6 index 6727df97f3..f1d1f0d715 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-themes.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-themes.js.es6 @@ -1,21 +1,21 @@ import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { THEMES } from "admin/models/theme"; export default Controller.extend({ currentTab: THEMES, - @computed("model", "model.@each.component") + @discourseComputed("model", "model.@each.component") fullThemes(themes) { return themes.filter(t => !t.get("component")); }, - @computed("model", "model.@each.component") + @discourseComputed("model", "model.@each.component") childThemes(themes) { return themes.filter(t => t.get("component")); }, - @computed("model", "model.@each.component") + @discourseComputed("model", "model.@each.component") installedThemes(themes) { return themes.map(t => t.name); } diff --git a/app/assets/javascripts/admin/controllers/admin-dashboard-general.js.es6 b/app/assets/javascripts/admin/controllers/admin-dashboard-general.js.es6 index 24884b0ba6..c91f09350d 100644 --- a/app/assets/javascripts/admin/controllers/admin-dashboard-general.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-dashboard-general.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { makeArray } from "discourse-common/lib/helpers"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { setting } from "discourse/lib/computed"; -import computed from "ember-addons/ember-computed-decorators"; import AdminDashboard from "admin/models/admin-dashboard"; import Report from "admin/models/report"; import PeriodComputationMixin from "admin/mixins/period-computation"; @@ -20,12 +20,12 @@ export default Controller.extend(PeriodComputationMixin, { logSearchQueriesEnabled: setting("log_search_queries"), basePath: Discourse.BaseUri, - @computed("siteSettings.dashboard_general_tab_activity_metrics") + @discourseComputed("siteSettings.dashboard_general_tab_activity_metrics") activityMetrics(metrics) { return (metrics || "").split("|").filter(m => m); }, - @computed + @discourseComputed activityMetricsFilters() { return { startDate: this.lastMonth, @@ -33,14 +33,14 @@ export default Controller.extend(PeriodComputationMixin, { }; }, - @computed + @discourseComputed topReferredTopicsOptions() { return { table: { total: false, limit: 8 } }; }, - @computed + @discourseComputed topReferredTopicsFilters() { return { startDate: moment() @@ -50,7 +50,7 @@ export default Controller.extend(PeriodComputationMixin, { }; }, - @computed + @discourseComputed trendingSearchFilters() { return { startDate: moment() @@ -60,14 +60,14 @@ export default Controller.extend(PeriodComputationMixin, { }; }, - @computed + @discourseComputed trendingSearchOptions() { return { table: { total: false, limit: 8 } }; }, - @computed + @discourseComputed trendingSearchDisabledLabel() { return I18n.t("admin.dashboard.reports.trending_search.disabled", { basePath: Discourse.BaseUri @@ -107,7 +107,7 @@ export default Controller.extend(PeriodComputationMixin, { } }, - @computed("startDate", "endDate") + @discourseComputed("startDate", "endDate") filters(startDate, endDate) { return { startDate, endDate }; }, diff --git a/app/assets/javascripts/admin/controllers/admin-dashboard-moderation.js.es6 b/app/assets/javascripts/admin/controllers/admin-dashboard-moderation.js.es6 index e5d8dae25a..8925825fba 100644 --- a/app/assets/javascripts/admin/controllers/admin-dashboard-moderation.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-dashboard-moderation.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import PeriodComputationMixin from "admin/mixins/period-computation"; export default Controller.extend(PeriodComputationMixin, { - @computed + @discourseComputed flagsStatusOptions() { return { table: { @@ -13,7 +13,7 @@ export default Controller.extend(PeriodComputationMixin, { }; }, - @computed + @discourseComputed userFlaggingRatioOptions() { return { table: { @@ -23,12 +23,12 @@ export default Controller.extend(PeriodComputationMixin, { }; }, - @computed("startDate", "endDate") + @discourseComputed("startDate", "endDate") filters(startDate, endDate) { return { startDate, endDate }; }, - @computed("lastWeek", "endDate") + @discourseComputed("lastWeek", "endDate") lastWeekfilters(startDate, endDate) { return { startDate, endDate }; }, diff --git a/app/assets/javascripts/admin/controllers/admin-dashboard-reports.js.es6 b/app/assets/javascripts/admin/controllers/admin-dashboard-reports.js.es6 index b582f733aa..9a57b9cf32 100644 --- a/app/assets/javascripts/admin/controllers/admin-dashboard-reports.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-dashboard-reports.js.es6 @@ -1,12 +1,13 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { debounce } from "@ember/runloop"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; + const { get } = Ember; export default Controller.extend({ filter: null, - @computed("model.[]", "filter") + @discourseComputed("model.[]", "filter") filterReports(reports, filter) { if (filter) { filter = filter.toLowerCase(); diff --git a/app/assets/javascripts/admin/controllers/admin-dashboard.js.es6 b/app/assets/javascripts/admin/controllers/admin-dashboard.js.es6 index 0f214d6f2d..bd8561abc1 100644 --- a/app/assets/javascripts/admin/controllers/admin-dashboard.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-dashboard.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { setting } from "discourse/lib/computed"; -import computed from "ember-addons/ember-computed-decorators"; import AdminDashboard from "admin/models/admin-dashboard"; import VersionCheck from "admin/models/version-check"; @@ -13,7 +13,7 @@ export default Controller.extend({ exceptionController: inject("exception"), showVersionChecks: setting("version_checks"), - @computed("problems.length") + @discourseComputed("problems.length") foundProblems(problemsLength) { return this.currentUser.get("admin") && (problemsLength || 0) > 0; }, @@ -77,7 +77,7 @@ export default Controller.extend({ .finally(() => this.set("loadingProblems", false)); }, - @computed("problemsFetchedAt") + @discourseComputed("problemsFetchedAt") problemsTimestamp(problemsFetchedAt) { return moment(problemsFetchedAt) .locale("en") diff --git a/app/assets/javascripts/admin/controllers/admin-embedding.js.es6 b/app/assets/javascripts/admin/controllers/admin-embedding.js.es6 index 7e185e9d12..b71c173e36 100644 --- a/app/assets/javascripts/admin/controllers/admin-embedding.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-embedding.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; export default Controller.extend({ @@ -7,13 +7,13 @@ export default Controller.extend({ embedding: null, // show settings if we have at least one created host - @computed("embedding.embeddable_hosts.@each.isCreated") + @discourseComputed("embedding.embeddable_hosts.@each.isCreated") showSecondary() { const hosts = this.get("embedding.embeddable_hosts"); return hosts.length && hosts.findBy("isCreated"); }, - @computed("embedding.base_url") + @discourseComputed("embedding.base_url") embeddingCode(baseUrl) { const html = `
diff --git a/app/assets/javascripts/admin/controllers/admin-logs-staff-action-logs.js.es6 b/app/assets/javascripts/admin/controllers/admin-logs-staff-action-logs.js.es6 index a375379fc0..e559bc846f 100644 --- a/app/assets/javascripts/admin/controllers/admin-logs-staff-action-logs.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-logs-staff-action-logs.js.es6 @@ -5,9 +5,9 @@ import Controller from "@ember/controller"; import { exportEntity } from "discourse/lib/export-csv"; import { outputExportResult } from "discourse/lib/export-result"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Controller.extend({ model: null, @@ -15,7 +15,7 @@ export default Controller.extend({ filtersExists: gt("filterCount", 0), userHistoryActions: null, - @computed("filters.action_name") + @discourseComputed("filters.action_name") actionFilter(name) { return name ? I18n.t("admin.logs.staff_actions.actions." + name) : null; }, diff --git a/app/assets/javascripts/admin/controllers/admin-plugins.js.es6 b/app/assets/javascripts/admin/controllers/admin-plugins.js.es6 index c0322317e5..f9b34e70a4 100644 --- a/app/assets/javascripts/admin/controllers/admin-plugins.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-plugins.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ - @computed + @discourseComputed adminRoutes: function() { return this.model .map(p => { diff --git a/app/assets/javascripts/admin/controllers/admin-reports-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-reports-show.js.es6 index 359be15f1d..6d302204ce 100644 --- a/app/assets/javascripts/admin/controllers/admin-reports-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-reports-show.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ queryParams: ["start_date", "end_date", "filters"], @@ -7,7 +7,7 @@ export default Controller.extend({ end_date: null, filters: null, - @computed("model.type") + @discourseComputed("model.type") reportOptions(type) { let options = { table: { perPage: 50, limit: 50, formatNumbers: false } }; diff --git a/app/assets/javascripts/admin/controllers/admin-site-settings-category.js.es6 b/app/assets/javascripts/admin/controllers/admin-site-settings-category.js.es6 index 3fd10f15d1..bfd727e6ea 100644 --- a/app/assets/javascripts/admin/controllers/admin-site-settings-category.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-site-settings-category.js.es6 @@ -1,17 +1,17 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ categoryNameKey: null, adminSiteSettings: inject(), - @computed("adminSiteSettings.visibleSiteSettings", "categoryNameKey") + @discourseComputed("adminSiteSettings.visibleSiteSettings", "categoryNameKey") category(categories, nameKey) { return (categories || []).findBy("nameKey", nameKey); }, - @computed("category") + @discourseComputed("category") filteredContent(category) { return category ? category.siteSettings : []; } diff --git a/app/assets/javascripts/admin/controllers/admin-site-text-edit.js.es6 b/app/assets/javascripts/admin/controllers/admin-site-text-edit.js.es6 index cd815b9ae8..d24a172910 100644 --- a/app/assets/javascripts/admin/controllers/admin-site-text-edit.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-site-text-edit.js.es6 @@ -1,12 +1,12 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { bufferedProperty } from "discourse/mixins/buffered-content"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(bufferedProperty("siteText"), { saved: false, - @computed("buffered.value") + @discourseComputed("buffered.value") saveDisabled(value) { return this.siteText.value === value; }, diff --git a/app/assets/javascripts/admin/controllers/admin-user-badges.js.es6 b/app/assets/javascripts/admin/controllers/admin-user-badges.js.es6 index fac3436c6e..3bedafb45c 100644 --- a/app/assets/javascripts/admin/controllers/admin-user-badges.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-user-badges.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias, sort } from "@ember/object/computed"; import { next } from "@ember/runloop"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import GrantBadgeController from "discourse/mixins/grant-badge-controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(GrantBadgeController, { adminUser: inject(), @@ -19,7 +19,7 @@ export default Controller.extend(GrantBadgeController, { this.badgeSortOrder = ["granted_at:desc"]; }, - @computed("model", "model.[]", "model.expandedBadges.[]") + @discourseComputed("model", "model.[]", "model.expandedBadges.[]") groupedBadges() { const allBadges = this.model; diff --git a/app/assets/javascripts/admin/controllers/admin-user-index.js.es6 b/app/assets/javascripts/admin/controllers/admin-user-index.js.es6 index de2e37668f..765e8d3686 100644 --- a/app/assets/javascripts/admin/controllers/admin-user-index.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-user-index.js.es6 @@ -6,7 +6,7 @@ import CanCheckEmails from "discourse/mixins/can-check-emails"; import { propertyNotEqual, setting } from "discourse/lib/computed"; import { userPath } from "discourse/lib/url"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { fmt } from "discourse/lib/computed"; import { htmlSafe } from "@ember/template"; @@ -30,12 +30,12 @@ export default Controller.extend(CanCheckEmails, { "model.can_disable_second_factor" ), - @computed("model.customGroups") + @discourseComputed("model.customGroups") customGroupIds(customGroups) { return customGroups.mapBy("id"); }, - @computed("customGroupIdsBuffer", "customGroupIds") + @discourseComputed("customGroupIdsBuffer", "customGroupIds") customGroupsDirty(buffer, original) { if (buffer === null) return false; @@ -44,7 +44,7 @@ export default Controller.extend(CanCheckEmails, { : true; }, - @computed("model.automaticGroups") + @discourseComputed("model.automaticGroups") automaticGroups(automaticGroups) { return automaticGroups .map(group => { @@ -54,26 +54,30 @@ export default Controller.extend(CanCheckEmails, { .join(", "); }, - @computed("model.associated_accounts") + @discourseComputed("model.associated_accounts") associatedAccountsLoaded(associatedAccounts) { return typeof associatedAccounts !== "undefined"; }, - @computed("model.associated_accounts") + @discourseComputed("model.associated_accounts") associatedAccounts(associatedAccounts) { return associatedAccounts .map(provider => `${provider.name} (${provider.description})`) .join(", "); }, - @computed("model.user_fields.[]") + @discourseComputed("model.user_fields.[]") userFields(userFields) { return this.site.collectUserFields(userFields); }, preferencesPath: fmt("model.username_lower", userPath("%@/preferences")), - @computed("model.can_delete_all_posts", "model.staff", "model.post_count") + @discourseComputed( + "model.can_delete_all_posts", + "model.staff", + "model.post_count" + ) deleteAllPostsExplanation(canDeleteAllPosts, staff, postCount) { if (canDeleteAllPosts) { return null; @@ -93,7 +97,7 @@ export default Controller.extend(CanCheckEmails, { } }, - @computed("model.canBeDeleted", "model.staff") + @discourseComputed("model.canBeDeleted", "model.staff") deleteExplanation(canBeDeleted, staff) { if (canBeDeleted) { return null; diff --git a/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6 index 944b0d9485..87380235e3 100644 --- a/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; import debounce from "discourse/lib/debounce"; import { i18n } from "discourse/lib/computed"; import AdminUser from "admin/models/admin-user"; import CanCheckEmails from "discourse/mixins/can-check-emails"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(CanCheckEmails, { model: null, @@ -24,7 +24,7 @@ export default Controller.extend(CanCheckEmails, { this._canLoadMore = true; }, - @computed("query") + @discourseComputed("query") title(query) { return I18n.t("admin.users.titles." + query); }, diff --git a/app/assets/javascripts/admin/controllers/admin-watched-words-action.js.es6 b/app/assets/javascripts/admin/controllers/admin-watched-words-action.js.es6 index 1726446d8c..d6f52c13fd 100644 --- a/app/assets/javascripts/admin/controllers/admin-watched-words-action.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-watched-words-action.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { or } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import WatchedWord from "admin/models/watched-word"; import { ajax } from "discourse/lib/ajax"; import { fmt } from "discourse/lib/computed"; @@ -27,22 +27,22 @@ export default Controller.extend({ ); }, - @computed("actionNameKey", "adminWatchedWords.model") + @discourseComputed("actionNameKey", "adminWatchedWords.model") currentAction(actionName) { return this.findAction(actionName); }, - @computed("currentAction.words.[]", "adminWatchedWords.model") + @discourseComputed("currentAction.words.[]", "adminWatchedWords.model") filteredContent(words) { return words || []; }, - @computed("actionNameKey") + @discourseComputed("actionNameKey") actionDescription(actionNameKey) { return I18n.t("admin.watched_words.action_descriptions." + actionNameKey); }, - @computed("currentAction.count") + @discourseComputed("currentAction.count") wordCount(count) { return count || 0; }, diff --git a/app/assets/javascripts/admin/controllers/admin-web-hooks-show-events.js.es6 b/app/assets/javascripts/admin/controllers/admin-web-hooks-show-events.js.es6 index e550a79069..6cd94efb68 100644 --- a/app/assets/javascripts/admin/controllers/admin-web-hooks-show-events.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-web-hooks-show-events.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Controller from "@ember/controller"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ pingDisabled: false, @@ -14,7 +14,7 @@ export default Controller.extend({ this.incomingEventIds = []; }, - @computed("incomingCount") + @discourseComputed("incomingCount") hasIncoming(incomingCount) { return incomingCount > 0; }, diff --git a/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 index 83de79e1f0..b07806f6fa 100644 --- a/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { extractDomainFromUrl } from "discourse/lib/utilities"; -import computed from "ember-addons/ember-computed-decorators"; import InputValidation from "discourse/models/input-validation"; export default Controller.extend({ @@ -13,12 +13,12 @@ export default Controller.extend({ defaultEventTypes: alias("adminWebHooks.defaultEventTypes"), contentTypes: alias("adminWebHooks.contentTypes"), - @computed + @discourseComputed showTagsFilter() { return this.siteSettings.tagging_enabled; }, - @computed("model.isSaving", "saved", "saveButtonDisabled") + @discourseComputed("model.isSaving", "saved", "saveButtonDisabled") savingStatus(isSaving, saved, saveButtonDisabled) { if (isSaving) { return I18n.t("saving"); @@ -30,14 +30,14 @@ export default Controller.extend({ return ""; }, - @computed("model.isNew") + @discourseComputed("model.isNew") saveButtonText(isNew) { return isNew ? I18n.t("admin.web_hooks.create") : I18n.t("admin.web_hooks.save"); }, - @computed("model.secret") + @discourseComputed("model.secret") secretValidation(secret) { if (!isEmpty(secret)) { if (secret.indexOf(" ") !== -1) { @@ -56,7 +56,7 @@ export default Controller.extend({ } }, - @computed("model.wildcard_web_hook", "model.web_hook_event_types.[]") + @discourseComputed("model.wildcard_web_hook", "model.web_hook_event_types.[]") eventTypeValidation(isWildcard, eventTypes) { if (!isWildcard && isEmpty(eventTypes)) { return InputValidation.create({ @@ -66,7 +66,7 @@ export default Controller.extend({ } }, - @computed( + @discourseComputed( "model.isSaving", "secretValidation", "eventTypeValidation", diff --git a/app/assets/javascripts/admin/controllers/admin.js.es6 b/app/assets/javascripts/admin/controllers/admin.js.es6 index f01a898b0c..641643d573 100644 --- a/app/assets/javascripts/admin/controllers/admin.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin.js.es6 @@ -1,22 +1,22 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject as service } from "@ember/service"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { dasherize } from "@ember/string"; export default Controller.extend({ router: service(), - @computed("siteSettings.enable_group_directory") + @discourseComputed("siteSettings.enable_group_directory") showGroups(enableGroupDirectory) { return !enableGroupDirectory; }, - @computed("siteSettings.enable_badges") + @discourseComputed("siteSettings.enable_badges") showBadges(enableBadges) { return this.currentUser.get("admin") && enableBadges; }, - @computed("router._router.currentPath") + @discourseComputed("router._router.currentPath") adminContentsClassName(currentPath) { let cssClasses = currentPath .split(".") diff --git a/app/assets/javascripts/admin/controllers/modals/admin-add-upload.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-add-upload.js.es6 index d53278c856..bd246d9371 100644 --- a/app/assets/javascripts/admin/controllers/modals/admin-add-upload.js.es6 +++ b/app/assets/javascripts/admin/controllers/modals/admin-add-upload.js.es6 @@ -5,9 +5,9 @@ import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { ajax } from "discourse/lib/ajax"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; const THEME_FIELD_VARIABLE_TYPE_IDS = [2, 3, 4]; @@ -69,7 +69,7 @@ export default Controller.extend(ModalFunctionality, { enabled: and("nameValid", "fileSelected"), disabled: not("enabled"), - @computed("name", "adminCustomizeThemesShow.model.theme_fields") + @discourseComputed("name", "adminCustomizeThemesShow.model.theme_fields") errorMessage(name, themeFields) { if (name) { if (!name.match(/^[a-z_][a-z0-9_-]*$/i)) { @@ -94,7 +94,7 @@ export default Controller.extend(ModalFunctionality, { return null; }, - @computed("errorMessage") + @discourseComputed("errorMessage") nameValid(errorMessage) { return null === errorMessage; }, diff --git a/app/assets/javascripts/admin/controllers/modals/admin-badge-preview.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-badge-preview.js.es6 index b6419c8e04..67450978d7 100644 --- a/app/assets/javascripts/admin/controllers/modals/admin-badge-preview.js.es6 +++ b/app/assets/javascripts/admin/controllers/modals/admin-badge-preview.js.es6 @@ -1,6 +1,6 @@ import { alias, map } from "@ember/object/computed"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { escapeExpression } from "discourse/lib/utilities"; export default Controller.extend({ @@ -8,7 +8,7 @@ export default Controller.extend({ errors: alias("model.errors"), count: alias("model.grant_count"), - @computed("count", "sample.length") + @discourseComputed("count", "sample.length") countWarning(count, sampleLength) { if (count <= 10) { return sampleLength !== count; @@ -17,12 +17,12 @@ export default Controller.extend({ } }, - @computed("model.query_plan") + @discourseComputed("model.query_plan") hasQueryPlan(queryPlan) { return !!queryPlan; }, - @computed("model.query_plan") + @discourseComputed("model.query_plan") queryPlanHtml(queryPlan) { let output = `
`;
 
diff --git a/app/assets/javascripts/admin/controllers/modals/admin-edit-badge-groupings.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-edit-badge-groupings.js.es6
index 4d0c66143c..1629aab70b 100644
--- a/app/assets/javascripts/admin/controllers/modals/admin-edit-badge-groupings.js.es6
+++ b/app/assets/javascripts/admin/controllers/modals/admin-edit-badge-groupings.js.es6
@@ -1,7 +1,7 @@
 import Controller from "@ember/controller";
 import { ajax } from "discourse/lib/ajax";
 import ModalFunctionality from "discourse/mixins/modal-functionality";
-import { observes } from "ember-addons/ember-computed-decorators";
+import { observes } from "discourse-common/utils/decorators";
 
 export default Controller.extend(ModalFunctionality, {
   @observes("model")
diff --git a/app/assets/javascripts/admin/controllers/modals/admin-incoming-email.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-incoming-email.js.es6
index 210d664cda..cca2cc54bf 100644
--- a/app/assets/javascripts/admin/controllers/modals/admin-incoming-email.js.es6
+++ b/app/assets/javascripts/admin/controllers/modals/admin-incoming-email.js.es6
@@ -1,12 +1,12 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import Controller from "@ember/controller";
 import ModalFunctionality from "discourse/mixins/modal-functionality";
 import IncomingEmail from "admin/models/incoming-email";
-import computed from "ember-addons/ember-computed-decorators";
 import { longDate } from "discourse/lib/formatter";
 import { popupAjaxError } from "discourse/lib/ajax-error";
 
 export default Controller.extend(ModalFunctionality, {
-  @computed("model.date")
+  @discourseComputed("model.date")
   date(d) {
     return longDate(d);
   },
diff --git a/app/assets/javascripts/admin/controllers/modals/admin-install-theme.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-install-theme.js.es6
index 81055d733d..9aee44f72e 100644
--- a/app/assets/javascripts/admin/controllers/modals/admin-install-theme.js.es6
+++ b/app/assets/javascripts/admin/controllers/modals/admin-install-theme.js.es6
@@ -5,9 +5,9 @@ import ModalFunctionality from "discourse/mixins/modal-functionality";
 import { ajax } from "discourse/lib/ajax";
 import { popupAjaxError } from "discourse/lib/ajax-error";
 import {
-  default as computed,
+  default as discourseComputed,
   observes
-} from "ember-addons/ember-computed-decorators";
+} from "discourse-common/utils/decorators";
 import { THEMES, COMPONENTS } from "admin/models/theme";
 import { POPULAR_THEMES } from "discourse-common/helpers/popular-themes";
 import { set } from "@ember/object";
@@ -43,7 +43,7 @@ export default Controller.extend(ModalFunctionality, {
     ];
   },
 
-  @computed("themesController.installedThemes")
+  @discourseComputed("themesController.installedThemes")
   themes(installedThemes) {
     return POPULAR_THEMES.map(t => {
       if (installedThemes.includes(t.name)) {
@@ -53,7 +53,7 @@ export default Controller.extend(ModalFunctionality, {
     });
   },
 
-  @computed(
+  @discourseComputed(
     "loading",
     "remote",
     "uploadUrl",
@@ -102,12 +102,12 @@ export default Controller.extend(ModalFunctionality, {
     }
   },
 
-  @computed("name")
+  @discourseComputed("name")
   nameTooShort(name) {
     return !name || name.length < MIN_NAME_LENGTH;
   },
 
-  @computed("component")
+  @discourseComputed("component")
   placeholder(component) {
     if (component) {
       return I18n.t("admin.customize.theme.component_name");
@@ -116,14 +116,14 @@ export default Controller.extend(ModalFunctionality, {
     }
   },
 
-  @computed("selection")
+  @discourseComputed("selection")
   submitLabel(selection) {
     return `admin.customize.theme.${
       selection === "create" ? "create" : "install"
     }`;
   },
 
-  @computed("privateChecked", "checkPrivate", "publicKey")
+  @discourseComputed("privateChecked", "checkPrivate", "publicKey")
   showPublicKey(privateChecked, checkPrivate, publicKey) {
     return privateChecked && checkPrivate && publicKey;
   },
diff --git a/app/assets/javascripts/admin/controllers/modals/admin-silence-user.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-silence-user.js.es6
index 5c04066941..d15264f46b 100644
--- a/app/assets/javascripts/admin/controllers/modals/admin-silence-user.js.es6
+++ b/app/assets/javascripts/admin/controllers/modals/admin-silence-user.js.es6
@@ -1,6 +1,6 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { isEmpty } from "@ember/utils";
 import Controller from "@ember/controller";
-import computed from "ember-addons/ember-computed-decorators";
 import PenaltyController from "admin/mixins/penalty-controller";
 
 export default Controller.extend(PenaltyController, {
@@ -12,7 +12,7 @@ export default Controller.extend(PenaltyController, {
     this.setProperties({ silenceUntil: null, silencing: false });
   },
 
-  @computed("silenceUntil", "reason", "silencing")
+  @discourseComputed("silenceUntil", "reason", "silencing")
   submitDisabled(silenceUntil, reason, silencing) {
     return silencing || isEmpty(silenceUntil) || !reason || reason.length < 1;
   },
diff --git a/app/assets/javascripts/admin/controllers/modals/admin-suspend-user.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-suspend-user.js.es6
index c5afea9d88..03fa9fbc83 100644
--- a/app/assets/javascripts/admin/controllers/modals/admin-suspend-user.js.es6
+++ b/app/assets/javascripts/admin/controllers/modals/admin-suspend-user.js.es6
@@ -1,6 +1,6 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { isEmpty } from "@ember/utils";
 import Controller from "@ember/controller";
-import computed from "ember-addons/ember-computed-decorators";
 import PenaltyController from "admin/mixins/penalty-controller";
 
 export default Controller.extend(PenaltyController, {
@@ -12,7 +12,7 @@ export default Controller.extend(PenaltyController, {
     this.setProperties({ suspendUntil: null, suspending: false });
   },
 
-  @computed("suspendUntil", "reason", "suspending")
+  @discourseComputed("suspendUntil", "reason", "suspending")
   submitDisabled(suspendUntil, reason, suspending) {
     return suspending || isEmpty(suspendUntil) || !reason || reason.length < 1;
   },
diff --git a/app/assets/javascripts/admin/controllers/modals/admin-uploaded-image-list.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-uploaded-image-list.js.es6
index a5ac891c21..08e1e178e4 100644
--- a/app/assets/javascripts/admin/controllers/modals/admin-uploaded-image-list.js.es6
+++ b/app/assets/javascripts/admin/controllers/modals/admin-uploaded-image-list.js.es6
@@ -1,5 +1,5 @@
 import Controller from "@ember/controller";
-import { on, observes } from "ember-addons/ember-computed-decorators";
+import { on, observes } from "discourse-common/utils/decorators";
 import ModalFunctionality from "discourse/mixins/modal-functionality";
 
 export default Controller.extend(ModalFunctionality, {
diff --git a/app/assets/javascripts/admin/controllers/modals/admin-watched-word-test.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-watched-word-test.js.es6
index 10f90ee615..9d9b73072d 100644
--- a/app/assets/javascripts/admin/controllers/modals/admin-watched-word-test.js.es6
+++ b/app/assets/javascripts/admin/controllers/modals/admin-watched-word-test.js.es6
@@ -1,9 +1,9 @@
 import Controller from "@ember/controller";
-import { default as computed } from "ember-addons/ember-computed-decorators";
+import { default as discourseComputed } from "discourse-common/utils/decorators";
 import ModalFunctionality from "discourse/mixins/modal-functionality";
 
 export default Controller.extend(ModalFunctionality, {
-  @computed("value", "model.compiledRegularExpression")
+  @discourseComputed("value", "model.compiledRegularExpression")
   matches(value, regexpString) {
     if (!value || !regexpString) return;
     let censorRegexp = new RegExp(regexpString, "ig");
diff --git a/app/assets/javascripts/admin/mixins/period-computation.js.es6 b/app/assets/javascripts/admin/mixins/period-computation.js.es6
index 354fd0ad85..c7af0e4cb3 100644
--- a/app/assets/javascripts/admin/mixins/period-computation.js.es6
+++ b/app/assets/javascripts/admin/mixins/period-computation.js.es6
@@ -1,5 +1,5 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import DiscourseURL from "discourse/lib/url";
-import computed from "ember-addons/ember-computed-decorators";
 import Mixin from "@ember/object/mixin";
 
 export default Mixin.create({
@@ -12,7 +12,7 @@ export default Mixin.create({
     this.availablePeriods = ["yearly", "quarterly", "monthly", "weekly"];
   },
 
-  @computed("period")
+  @discourseComputed("period")
   startDate(period) {
     let fullDay = moment()
       .locale("en")
@@ -37,7 +37,7 @@ export default Mixin.create({
     }
   },
 
-  @computed()
+  @discourseComputed()
   lastWeek() {
     return moment()
       .locale("en")
@@ -46,7 +46,7 @@ export default Mixin.create({
       .subtract(1, "week");
   },
 
-  @computed()
+  @discourseComputed()
   lastMonth() {
     return moment()
       .locale("en")
@@ -55,7 +55,7 @@ export default Mixin.create({
       .subtract(1, "month");
   },
 
-  @computed()
+  @discourseComputed()
   endDate() {
     return moment()
       .locale("en")
@@ -64,7 +64,7 @@ export default Mixin.create({
       .endOf("day");
   },
 
-  @computed()
+  @discourseComputed()
   today() {
     return moment()
       .locale("en")
diff --git a/app/assets/javascripts/admin/mixins/setting-component.js.es6 b/app/assets/javascripts/admin/mixins/setting-component.js.es6
index 762d5cfa2b..eaf5b356b6 100644
--- a/app/assets/javascripts/admin/mixins/setting-component.js.es6
+++ b/app/assets/javascripts/admin/mixins/setting-component.js.es6
@@ -1,5 +1,5 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { alias, oneWay } from "@ember/object/computed";
-import computed from "ember-addons/ember-computed-decorators";
 import { categoryLinkHTML } from "discourse/helpers/category-link";
 import { on } from "@ember/object/evented";
 import Mixin from "@ember/object/mixin";
@@ -32,7 +32,7 @@ export default Mixin.create({
   validationMessage: null,
   isSecret: oneWay("setting.secret"),
 
-  @computed("buffered.value", "setting.value")
+  @discourseComputed("buffered.value", "setting.value")
   dirty(bufferVal, settingVal) {
     if (bufferVal === null || bufferVal === undefined) bufferVal = "";
     if (settingVal === null || settingVal === undefined) settingVal = "";
@@ -40,7 +40,7 @@ export default Mixin.create({
     return bufferVal.toString() !== settingVal.toString();
   },
 
-  @computed("setting", "buffered.value")
+  @discourseComputed("setting", "buffered.value")
   preview(setting, value) {
     // A bit hacky, but allows us to use helpers
     if (setting.get("setting") === "category_style") {
@@ -62,22 +62,22 @@ export default Mixin.create({
     }
   },
 
-  @computed("componentType")
+  @discourseComputed("componentType")
   typeClass(componentType) {
     return componentType.replace(/\_/g, "-");
   },
 
-  @computed("setting.setting")
+  @discourseComputed("setting.setting")
   settingName(setting) {
     return setting.replace(/\_/g, " ");
   },
 
-  @computed("type")
+  @discourseComputed("type")
   componentType(type) {
     return CUSTOM_TYPES.indexOf(type) !== -1 ? type : "string";
   },
 
-  @computed("setting")
+  @discourseComputed("setting")
   type(setting) {
     if (setting.type === "list" && setting.list_type) {
       return `${setting.list_type}_list`;
@@ -86,12 +86,12 @@ export default Mixin.create({
     return setting.type;
   },
 
-  @computed("typeClass")
+  @discourseComputed("typeClass")
   componentName(typeClass) {
     return "site-settings/" + typeClass;
   },
 
-  @computed("setting.default", "buffered.value")
+  @discourseComputed("setting.default", "buffered.value")
   overridden(settingDefault, bufferedValue) {
     return settingDefault !== bufferedValue;
   },
diff --git a/app/assets/javascripts/admin/mixins/setting-object.js.es6 b/app/assets/javascripts/admin/mixins/setting-object.js.es6
index c02004cea8..f0296e6c55 100644
--- a/app/assets/javascripts/admin/mixins/setting-object.js.es6
+++ b/app/assets/javascripts/admin/mixins/setting-object.js.es6
@@ -1,8 +1,8 @@
-import computed from "ember-addons/ember-computed-decorators";
+import discourseComputed from "discourse-common/utils/decorators";
 import Mixin from "@ember/object/mixin";
 
 export default Mixin.create({
-  @computed("value", "default")
+  @discourseComputed("value", "default")
   overridden(val, defaultVal) {
     if (val === null) val = "";
     if (defaultVal === null) defaultVal = "";
@@ -10,7 +10,7 @@ export default Mixin.create({
     return val.toString() !== defaultVal.toString();
   },
 
-  @computed("valid_values")
+  @discourseComputed("valid_values")
   validValues(validValues) {
     const vals = [],
       translateNames = this.translate_names;
@@ -25,7 +25,7 @@ export default Mixin.create({
     return vals;
   },
 
-  @computed("valid_values")
+  @discourseComputed("valid_values")
   allowsNone(validValues) {
     if (validValues && validValues.indexOf("") >= 0) {
       return "admin.settings.none";
diff --git a/app/assets/javascripts/admin/models/admin-user.js.es6 b/app/assets/javascripts/admin/models/admin-user.js.es6
index 880cb44c39..5447070185 100644
--- a/app/assets/javascripts/admin/models/admin-user.js.es6
+++ b/app/assets/javascripts/admin/models/admin-user.js.es6
@@ -1,7 +1,7 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { filter, or, gt, lt, not } from "@ember/object/computed";
 import { iconHTML } from "discourse-common/lib/icon-library";
 import { ajax } from "discourse/lib/ajax";
-import computed from "ember-addons/ember-computed-decorators";
 import { propertyNotEqual } from "discourse/lib/computed";
 import { popupAjaxError } from "discourse/lib/ajax-error";
 import Group from "discourse/models/group";
@@ -17,7 +17,7 @@ const AdminUser = Discourse.User.extend({
 
   canViewProfile: or("active", "staged"),
 
-  @computed("bounce_score", "reset_bounce_score_after")
+  @discourseComputed("bounce_score", "reset_bounce_score_after")
   bounceScore(bounce_score, reset_bounce_score_after) {
     if (bounce_score > 0) {
       return `${bounce_score} - ${moment(reset_bounce_score_after).format(
@@ -28,7 +28,7 @@ const AdminUser = Discourse.User.extend({
     }
   },
 
-  @computed("bounce_score")
+  @discourseComputed("bounce_score")
   bounceScoreExplanation(bounce_score) {
     if (bounce_score === 0) {
       return I18n.t("admin.user.bounce_score_explanation.none");
@@ -39,7 +39,7 @@ const AdminUser = Discourse.User.extend({
     }
   },
 
-  @computed
+  @discourseComputed
   bounceLink() {
     return Discourse.getURL("/admin/email/bounced");
   },
@@ -278,7 +278,7 @@ const AdminUser = Discourse.User.extend({
 
   canSuspend: not("staff"),
 
-  @computed("suspended_till", "suspended_at")
+  @discourseComputed("suspended_till", "suspended_at")
   suspendDuration(suspendedTill, suspendedAt) {
     suspendedAt = moment(suspendedAt);
     suspendedTill = moment(suspendedTill);
@@ -513,20 +513,20 @@ const AdminUser = Discourse.User.extend({
     });
   },
 
-  @computed("tl3_requirements")
+  @discourseComputed("tl3_requirements")
   tl3Requirements(requirements) {
     if (requirements) {
       return this.store.createRecord("tl3Requirements", requirements);
     }
   },
 
-  @computed("suspended_by")
+  @discourseComputed("suspended_by")
   suspendedBy: wrapAdmin,
 
-  @computed("silenced_by")
+  @discourseComputed("silenced_by")
   silencedBy: wrapAdmin,
 
-  @computed("approved_by")
+  @discourseComputed("approved_by")
   approvedBy: wrapAdmin,
 
   _formatError(event) {
diff --git a/app/assets/javascripts/admin/models/api-key.js.es6 b/app/assets/javascripts/admin/models/api-key.js.es6
index 95d8e1914c..4b77e23c4a 100644
--- a/app/assets/javascripts/admin/models/api-key.js.es6
+++ b/app/assets/javascripts/admin/models/api-key.js.es6
@@ -1,7 +1,7 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import AdminUser from "admin/models/admin-user";
 import RestModel from "discourse/models/rest";
 import { ajax } from "discourse/lib/ajax";
-import computed from "ember-addons/ember-computed-decorators";
 
 const ApiKey = RestModel.extend({
   user: Ember.computed("_user", {
@@ -18,12 +18,12 @@ const ApiKey = RestModel.extend({
     }
   }),
 
-  @computed("key")
+  @discourseComputed("key")
   shortKey(key) {
     return `${key.substring(0, 4)}...`;
   },
 
-  @computed("description")
+  @discourseComputed("description")
   shortDescription(description) {
     if (!description || description.length < 40) return description;
     return `${description.substring(0, 40)}...`;
@@ -45,7 +45,7 @@ const ApiKey = RestModel.extend({
     return this.getProperties("description", "username");
   },
 
-  @computed()
+  @discourseComputed()
   basePath() {
     return this.store
       .adapterFor("api-key")
diff --git a/app/assets/javascripts/admin/models/backup-status.js.es6 b/app/assets/javascripts/admin/models/backup-status.js.es6
index b7deec1c10..b31d1cb176 100644
--- a/app/assets/javascripts/admin/models/backup-status.js.es6
+++ b/app/assets/javascripts/admin/models/backup-status.js.es6
@@ -1,10 +1,10 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { not } from "@ember/object/computed";
-import computed from "ember-addons/ember-computed-decorators";
 
 export default Discourse.Model.extend({
   restoreDisabled: not("restoreEnabled"),
 
-  @computed("allowRestore", "isOperationRunning")
+  @discourseComputed("allowRestore", "isOperationRunning")
   restoreEnabled(allowRestore, isOperationRunning) {
     return allowRestore && !isOperationRunning;
   }
diff --git a/app/assets/javascripts/admin/models/color-scheme-color.js.es6 b/app/assets/javascripts/admin/models/color-scheme-color.js.es6
index a3b22d23bc..d023295ce5 100644
--- a/app/assets/javascripts/admin/models/color-scheme-color.js.es6
+++ b/app/assets/javascripts/admin/models/color-scheme-color.js.es6
@@ -1,8 +1,8 @@
 import {
-  default as computed,
+  default as discourseComputed,
   observes,
   on
-} from "ember-addons/ember-computed-decorators";
+} from "discourse-common/utils/decorators";
 import { propertyNotEqual } from "discourse/lib/computed";
 
 const ColorSchemeColor = Discourse.Model.extend({
@@ -15,7 +15,7 @@ const ColorSchemeColor = Discourse.Model.extend({
   },
 
   // Whether value has changed since it was last saved.
-  @computed("hex")
+  @discourseComputed("hex")
   changed(hex) {
     if (!this.originals) return false;
     if (hex !== this.originals.hex) return true;
@@ -27,7 +27,7 @@ const ColorSchemeColor = Discourse.Model.extend({
   overridden: propertyNotEqual("hex", "default_hex"),
 
   // Whether the saved value is different than Discourse's default color scheme.
-  @computed("default_hex", "hex")
+  @discourseComputed("default_hex", "hex")
   savedIsOverriden(defaultHex) {
     return this.originals.hex !== defaultHex;
   },
@@ -42,7 +42,7 @@ const ColorSchemeColor = Discourse.Model.extend({
     }
   },
 
-  @computed("name")
+  @discourseComputed("name")
   translatedName(name) {
     if (!this.is_advanced) {
       return I18n.t(`admin.customize.colors.${name}.name`);
@@ -51,7 +51,7 @@ const ColorSchemeColor = Discourse.Model.extend({
     }
   },
 
-  @computed("name")
+  @discourseComputed("name")
   description(name) {
     if (!this.is_advanced) {
       return I18n.t(`admin.customize.colors.${name}.description`);
@@ -66,7 +66,7 @@ const ColorSchemeColor = Discourse.Model.extend({
 
     @property brightness
   **/
-  @computed("hex")
+  @discourseComputed("hex")
   brightness(hex) {
     if (hex.length === 6 || hex.length === 3) {
       if (hex.length === 3) {
@@ -94,7 +94,7 @@ const ColorSchemeColor = Discourse.Model.extend({
     }
   },
 
-  @computed("hex")
+  @discourseComputed("hex")
   valid(hex) {
     return hex.match(/^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/) !== null;
   }
diff --git a/app/assets/javascripts/admin/models/color-scheme.js.es6 b/app/assets/javascripts/admin/models/color-scheme.js.es6
index 8875bf2e5e..5d0550d2e0 100644
--- a/app/assets/javascripts/admin/models/color-scheme.js.es6
+++ b/app/assets/javascripts/admin/models/color-scheme.js.es6
@@ -1,7 +1,7 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { not } from "@ember/object/computed";
 import { ajax } from "discourse/lib/ajax";
 import ColorSchemeColor from "admin/models/color-scheme-color";
-import computed from "ember-addons/ember-computed-decorators";
 
 const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
   init() {
@@ -10,7 +10,7 @@ const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
     this.startTrackingChanges();
   },
 
-  @computed
+  @discourseComputed
   description() {
     return "" + this.name;
   },
@@ -42,7 +42,7 @@ const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
     return newScheme;
   },
 
-  @computed("name", "colors.@each.changed", "saving")
+  @discourseComputed("name", "colors.@each.changed", "saving")
   changed(name) {
     if (!this.originals) return false;
     if (this.originals.name !== name) return true;
@@ -51,7 +51,7 @@ const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
     return false;
   },
 
-  @computed("changed")
+  @discourseComputed("changed")
   disableSave(changed) {
     if (this.theme_id) {
       return false;
diff --git a/app/assets/javascripts/admin/models/flag-type.js.es6 b/app/assets/javascripts/admin/models/flag-type.js.es6
index b1bf1ca828..93fb2eacc9 100644
--- a/app/assets/javascripts/admin/models/flag-type.js.es6
+++ b/app/assets/javascripts/admin/models/flag-type.js.es6
@@ -1,8 +1,8 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import RestModel from "discourse/models/rest";
-import computed from "ember-addons/ember-computed-decorators";
 
 export default RestModel.extend({
-  @computed("id")
+  @discourseComputed("id")
   name(id) {
     return I18n.t(`admin.flags.summary.action_type_${id}`, { count: 1 });
   }
diff --git a/app/assets/javascripts/admin/models/report.js.es6 b/app/assets/javascripts/admin/models/report.js.es6
index 37c495e06f..bb745b1302 100644
--- a/app/assets/javascripts/admin/models/report.js.es6
+++ b/app/assets/javascripts/admin/models/report.js.es6
@@ -1,3 +1,4 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { makeArray } from "discourse-common/lib/helpers";
 import { isEmpty } from "@ember/utils";
 import EmberObject from "@ember/object";
@@ -9,7 +10,6 @@ import {
   formatUsername,
   toNumber
 } from "discourse/lib/utilities";
-import computed from "ember-addons/ember-computed-decorators";
 import { number, durationTiny } from "discourse/lib/formatter";
 import { renderAvatar } from "discourse/helpers/user-avatar";
 
@@ -22,12 +22,12 @@ const Report = Discourse.Model.extend({
   percent: false,
   higher_is_better: true,
 
-  @computed("modes")
+  @discourseComputed("modes")
   isTable(modes) {
     return modes.some(mode => mode === "table");
   },
 
-  @computed("type", "start_date", "end_date")
+  @discourseComputed("type", "start_date", "end_date")
   reportUrl(type, start_date, end_date) {
     start_date = moment
       .utc(start_date)
@@ -83,32 +83,32 @@ const Report = Discourse.Model.extend({
     }
   },
 
-  @computed("data", "average")
+  @discourseComputed("data", "average")
   todayCount() {
     return this.valueAt(0);
   },
 
-  @computed("data", "average")
+  @discourseComputed("data", "average")
   yesterdayCount() {
     return this.valueAt(1);
   },
 
-  @computed("data", "average")
+  @discourseComputed("data", "average")
   sevenDaysAgoCount() {
     return this.valueAt(7);
   },
 
-  @computed("data", "average")
+  @discourseComputed("data", "average")
   thirtyDaysAgoCount() {
     return this.valueAt(30);
   },
 
-  @computed("data", "average")
+  @discourseComputed("data", "average")
   lastSevenDaysCount() {
     return this.averageCount(7, this.valueFor(1, 7));
   },
 
-  @computed("data", "average")
+  @discourseComputed("data", "average")
   lastThirtyDaysCount() {
     return this.averageCount(30, this.valueFor(1, 30));
   },
@@ -117,12 +117,12 @@ const Report = Discourse.Model.extend({
     return this.average ? value / count : value;
   },
 
-  @computed("yesterdayCount", "higher_is_better")
+  @discourseComputed("yesterdayCount", "higher_is_better")
   yesterdayTrend(yesterdayCount, higherIsBetter) {
     return this._computeTrend(this.valueAt(2), yesterdayCount, higherIsBetter);
   },
 
-  @computed("lastSevenDaysCount", "higher_is_better")
+  @discourseComputed("lastSevenDaysCount", "higher_is_better")
   sevenDaysTrend(lastSevenDaysCount, higherIsBetter) {
     return this._computeTrend(
       this.valueFor(8, 14),
@@ -131,50 +131,55 @@ const Report = Discourse.Model.extend({
     );
   },
 
-  @computed("data")
+  @discourseComputed("data")
   currentTotal(data) {
     return data.reduce((cur, pair) => cur + pair.y, 0);
   },
 
-  @computed("data", "currentTotal")
+  @discourseComputed("data", "currentTotal")
   currentAverage(data, total) {
     return makeArray(data).length === 0
       ? 0
       : parseFloat((total / parseFloat(data.length)).toFixed(1));
   },
 
-  @computed("trend", "higher_is_better")
+  @discourseComputed("trend", "higher_is_better")
   trendIcon(trend, higherIsBetter) {
     return this._iconForTrend(trend, higherIsBetter);
   },
 
-  @computed("sevenDaysTrend", "higher_is_better")
+  @discourseComputed("sevenDaysTrend", "higher_is_better")
   sevenDaysTrendIcon(sevenDaysTrend, higherIsBetter) {
     return this._iconForTrend(sevenDaysTrend, higherIsBetter);
   },
 
-  @computed("thirtyDaysTrend", "higher_is_better")
+  @discourseComputed("thirtyDaysTrend", "higher_is_better")
   thirtyDaysTrendIcon(thirtyDaysTrend, higherIsBetter) {
     return this._iconForTrend(thirtyDaysTrend, higherIsBetter);
   },
 
-  @computed("yesterdayTrend", "higher_is_better")
+  @discourseComputed("yesterdayTrend", "higher_is_better")
   yesterdayTrendIcon(yesterdayTrend, higherIsBetter) {
     return this._iconForTrend(yesterdayTrend, higherIsBetter);
   },
 
-  @computed("prev_period", "currentTotal", "currentAverage", "higher_is_better")
+  @discourseComputed(
+    "prev_period",
+    "currentTotal",
+    "currentAverage",
+    "higher_is_better"
+  )
   trend(prev, currentTotal, currentAverage, higherIsBetter) {
     const total = this.average ? currentAverage : currentTotal;
     return this._computeTrend(prev, total, higherIsBetter);
   },
 
-  @computed("prev30Days", "lastThirtyDaysCount", "higher_is_better")
+  @discourseComputed("prev30Days", "lastThirtyDaysCount", "higher_is_better")
   thirtyDaysTrend(prev30Days, lastThirtyDaysCount, higherIsBetter) {
     return this._computeTrend(prev30Days, lastThirtyDaysCount, higherIsBetter);
   },
 
-  @computed("type")
+  @discourseComputed("type")
   method(type) {
     if (type === "time_to_first_response") {
       return "average";
@@ -195,7 +200,7 @@ const Report = Discourse.Model.extend({
     }
   },
 
-  @computed("prev_period", "currentTotal", "currentAverage")
+  @discourseComputed("prev_period", "currentTotal", "currentAverage")
   trendTitle(prev, currentTotal, currentAverage) {
     let current = this.average ? currentAverage : currentTotal;
     let percent = this.percentChangeString(prev, current);
@@ -228,12 +233,12 @@ const Report = Discourse.Model.extend({
     return title;
   },
 
-  @computed("yesterdayCount")
+  @discourseComputed("yesterdayCount")
   yesterdayCountTitle(yesterdayCount) {
     return this.changeTitle(this.valueAt(2), yesterdayCount, "two days ago");
   },
 
-  @computed("lastSevenDaysCount")
+  @discourseComputed("lastSevenDaysCount")
   sevenDaysCountTitle(lastSevenDaysCount) {
     return this.changeTitle(
       this.valueFor(8, 14),
@@ -242,7 +247,7 @@ const Report = Discourse.Model.extend({
     );
   },
 
-  @computed("prev30Days", "lastThirtyDaysCount")
+  @discourseComputed("prev30Days", "lastThirtyDaysCount")
   thirtyDaysCountTitle(prev30Days, lastThirtyDaysCount) {
     return this.changeTitle(
       prev30Days,
@@ -251,18 +256,18 @@ const Report = Discourse.Model.extend({
     );
   },
 
-  @computed("data")
+  @discourseComputed("data")
   sortedData(data) {
     return this.xAxisIsDate ? data.toArray().reverse() : data.toArray();
   },
 
-  @computed("data")
+  @discourseComputed("data")
   xAxisIsDate() {
     if (!this.data[0]) return false;
     return this.data && this.data[0].x.match(/\d{4}-\d{1,2}-\d{1,2}/);
   },
 
-  @computed("labels")
+  @discourseComputed("labels")
   computedLabels(labels) {
     return labels.map(label => {
       const type = label.type || "string";
diff --git a/app/assets/javascripts/admin/models/screened-email.js.es6 b/app/assets/javascripts/admin/models/screened-email.js.es6
index 6eb014c484..0d20f2c7d1 100644
--- a/app/assets/javascripts/admin/models/screened-email.js.es6
+++ b/app/assets/javascripts/admin/models/screened-email.js.es6
@@ -1,8 +1,8 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { ajax } from "discourse/lib/ajax";
-import computed from "ember-addons/ember-computed-decorators";
 
 const ScreenedEmail = Discourse.Model.extend({
-  @computed("action")
+  @discourseComputed("action")
   actionName(action) {
     return I18n.t("admin.logs.screened_actions." + action);
   },
diff --git a/app/assets/javascripts/admin/models/screened-ip-address.js.es6 b/app/assets/javascripts/admin/models/screened-ip-address.js.es6
index 0449a666f3..e2b60a2108 100644
--- a/app/assets/javascripts/admin/models/screened-ip-address.js.es6
+++ b/app/assets/javascripts/admin/models/screened-ip-address.js.es6
@@ -1,16 +1,16 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { equal } from "@ember/object/computed";
 import { ajax } from "discourse/lib/ajax";
-import computed from "ember-addons/ember-computed-decorators";
 
 const ScreenedIpAddress = Discourse.Model.extend({
-  @computed("action_name")
+  @discourseComputed("action_name")
   actionName(actionName) {
     return I18n.t(`admin.logs.screened_ips.actions.${actionName}`);
   },
 
   isBlocked: equal("action_name", "block"),
 
-  @computed("ip_address")
+  @discourseComputed("ip_address")
   isRange(ipAddress) {
     return ipAddress.indexOf("/") > 0;
   },
diff --git a/app/assets/javascripts/admin/models/screened-url.js.es6 b/app/assets/javascripts/admin/models/screened-url.js.es6
index b899c61962..515ef6e82c 100644
--- a/app/assets/javascripts/admin/models/screened-url.js.es6
+++ b/app/assets/javascripts/admin/models/screened-url.js.es6
@@ -1,8 +1,8 @@
+import discourseComputed from "discourse-common/utils/decorators";
 import { ajax } from "discourse/lib/ajax";
-import computed from "ember-addons/ember-computed-decorators";
 
 const ScreenedUrl = Discourse.Model.extend({
-  @computed("action")
+  @discourseComputed("action")
   actionName(action) {
     return I18n.t("admin.logs.screened_actions." + action);
   }
diff --git a/app/assets/javascripts/admin/models/staff-action-log.js.es6 b/app/assets/javascripts/admin/models/staff-action-log.js.es6
index 2d63019dda..45330b13fc 100644
--- a/app/assets/javascripts/admin/models/staff-action-log.js.es6
+++ b/app/assets/javascripts/admin/models/staff-action-log.js.es6
@@ -1,4 +1,4 @@
-import computed from "ember-addons/ember-computed-decorators";
+import discourseComputed from "discourse-common/utils/decorators";
 import { ajax } from "discourse/lib/ajax";
 import AdminUser from "admin/models/admin-user";
 import { escapeExpression } from "discourse/lib/utilities";
@@ -13,12 +13,12 @@ function format(label, value, escape = true) {
 const StaffActionLog = RestModel.extend({
   showFullDetails: false,
 
-  @computed("action_name")
+  @discourseComputed("action_name")
   actionName(actionName) {
     return I18n.t(`admin.logs.staff_actions.actions.${actionName}`);
   },
 
-  @computed(
+  @discourseComputed(
     "email",
     "ip_address",
     "topic_id",
@@ -69,12 +69,12 @@ const StaffActionLog = RestModel.extend({
     return formatted.length > 0 ? formatted + "
" : ""; }, - @computed("details") + @discourseComputed("details") useModalForDetails(details) { return details && details.length > 100; }, - @computed("action_name") + @discourseComputed("action_name") useCustomModalForDetails(actionName) { return ["change_theme", "delete_theme"].includes(actionName); } diff --git a/app/assets/javascripts/admin/models/theme.js.es6 b/app/assets/javascripts/admin/models/theme.js.es6 index 4ea3d3e216..94ccf5f9b0 100644 --- a/app/assets/javascripts/admin/models/theme.js.es6 +++ b/app/assets/javascripts/admin/models/theme.js.es6 @@ -2,7 +2,7 @@ import { get } from "@ember/object"; import { isEmpty } from "@ember/utils"; import { or, gt } from "@ember/object/computed"; import RestModel from "discourse/models/rest"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { ajax } from "discourse/lib/ajax"; import { escapeExpression } from "discourse/lib/utilities"; @@ -20,7 +20,7 @@ const Theme = RestModel.extend({ isPendingUpdates: gt("remote_theme.commits_behind", 0), hasEditedFields: gt("editedFields.length", 0), - @computed("theme_fields.[]") + @discourseComputed("theme_fields.[]") targets() { return [ { id: 0, name: "common" }, @@ -48,7 +48,7 @@ const Theme = RestModel.extend({ }); }, - @computed("theme_fields.[]") + @discourseComputed("theme_fields.[]") fieldNames() { const common = [ "scss", @@ -82,7 +82,11 @@ const Theme = RestModel.extend({ }; }, - @computed("fieldNames", "theme_fields.[]", "theme_fields.@each.error") + @discourseComputed( + "fieldNames", + "theme_fields.[]", + "theme_fields.@each.error" + ) fields(fieldNames) { const hash = {}; Object.keys(fieldNames).forEach(target => { @@ -112,7 +116,7 @@ const Theme = RestModel.extend({ return hash; }, - @computed("theme_fields") + @discourseComputed("theme_fields") themeFields(fields) { if (!fields) { this.set("theme_fields", []); @@ -128,7 +132,7 @@ const Theme = RestModel.extend({ return hash; }, - @computed("theme_fields", "theme_fields.[]") + @discourseComputed("theme_fields", "theme_fields.[]") uploads(fields) { if (!fields) { return []; @@ -138,19 +142,19 @@ const Theme = RestModel.extend({ ); }, - @computed("theme_fields", "theme_fields.@each.error") + @discourseComputed("theme_fields", "theme_fields.@each.error") isBroken(fields) { return fields && fields.any(field => field.error && field.error.length > 0); }, - @computed("theme_fields.[]") + @discourseComputed("theme_fields.[]") editedFields(fields) { return fields.filter( field => !Ember.isBlank(field.value) && field.type_id !== SETTINGS_TYPE_ID ); }, - @computed("remote_theme.last_error_text") + @discourseComputed("remote_theme.last_error_text") remoteError(errorText) { if (errorText && errorText.length > 0) { return errorText; @@ -241,7 +245,7 @@ const Theme = RestModel.extend({ } }, - @computed("childThemes.[]") + @discourseComputed("childThemes.[]") child_theme_ids(childThemes) { if (childThemes) { return childThemes.map(theme => get(theme, "id")); @@ -265,7 +269,7 @@ const Theme = RestModel.extend({ return this.saveChanges("child_theme_ids"); }, - @computed("name", "default") + @discourseComputed("name", "default") description: function(name, isDefault) { if (isDefault) { return I18n.t("admin.customize.theme.default_name", { name: name }); diff --git a/app/assets/javascripts/admin/models/tl3-requirements.js.es6 b/app/assets/javascripts/admin/models/tl3-requirements.js.es6 index 222c8077d7..966410b41c 100644 --- a/app/assets/javascripts/admin/models/tl3-requirements.js.es6 +++ b/app/assets/javascripts/admin/models/tl3-requirements.js.es6 @@ -1,17 +1,17 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default Discourse.Model.extend({ - @computed("days_visited", "time_period") + @discourseComputed("days_visited", "time_period") days_visited_percent(daysVisited, timePeriod) { return Math.round((daysVisited * 100) / timePeriod); }, - @computed("min_days_visited", "time_period") + @discourseComputed("min_days_visited", "time_period") min_days_visited_percent(minDaysVisited, timePeriod) { return Math.round((minDaysVisited * 100) / timePeriod); }, - @computed( + @discourseComputed( "days_visited", "min_days_visited", "num_topics_replied_to", diff --git a/app/assets/javascripts/admin/models/version-check.js.es6 b/app/assets/javascripts/admin/models/version-check.js.es6 index 2012d0ff08..54ef9844fe 100644 --- a/app/assets/javascripts/admin/models/version-check.js.es6 +++ b/app/assets/javascripts/admin/models/version-check.js.es6 @@ -1,30 +1,30 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; -import computed from "ember-addons/ember-computed-decorators"; const VersionCheck = Discourse.Model.extend({ - @computed("updated_at") + @discourseComputed("updated_at") noCheckPerformed(updatedAt) { return updatedAt === null; }, - @computed("missing_versions_count") + @discourseComputed("missing_versions_count") upToDate(missingVersionsCount) { return missingVersionsCount === 0 || missingVersionsCount === null; }, - @computed("missing_versions_count") + @discourseComputed("missing_versions_count") behindByOneVersion(missingVersionsCount) { return missingVersionsCount === 1; }, - @computed("installed_sha") + @discourseComputed("installed_sha") gitLink(installedSHA) { if (installedSHA) { return `https://github.com/discourse/discourse/commits/${installedSHA}`; } }, - @computed("installed_sha") + @discourseComputed("installed_sha") shortSha(installedSHA) { if (installedSHA) { return installedSHA.substr(0, 10); diff --git a/app/assets/javascripts/admin/models/web-hook.js.es6 b/app/assets/javascripts/admin/models/web-hook.js.es6 index 84111591fa..df3ac54918 100644 --- a/app/assets/javascripts/admin/models/web-hook.js.es6 +++ b/app/assets/javascripts/admin/models/web-hook.js.es6 @@ -3,9 +3,9 @@ import RestModel from "discourse/models/rest"; import Category from "discourse/models/category"; import Group from "discourse/models/group"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default RestModel.extend({ content_type: 1, // json @@ -16,7 +16,7 @@ export default RestModel.extend({ web_hook_event_types: null, groupsFilterInName: null, - @computed("wildcard_web_hook") + @discourseComputed("wildcard_web_hook") webHookType: { get(wildcard) { return wildcard ? "wildcard" : "individual"; @@ -26,7 +26,7 @@ export default RestModel.extend({ } }, - @computed("category_ids") + @discourseComputed("category_ids") categories(categoryIds) { return Category.findByIds(categoryIds); }, @@ -49,7 +49,7 @@ export default RestModel.extend({ return Group.findAll({ term: term, ignore_automatic: false }); }, - @computed("wildcard_web_hook", "web_hook_event_types.[]") + @discourseComputed("wildcard_web_hook", "web_hook_event_types.[]") description(isWildcardWebHook, types) { let desc = ""; diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 46bf682576..290f920789 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -1,10 +1,9 @@ //= require_tree ./ember-addons/utils +//= require_tree ./discourse-common //= require ./ember-addons/decorator-alias //= require ./ember-addons/macro-alias -//= require ./ember-addons/ember-computed-decorators //= require ./ember-addons/fmt //= require ./polyfills -//= require_tree ./discourse-common //= require_tree ./select-kit //= require ./discourse //= require ./deprecated diff --git a/app/assets/javascripts/discourse-common/lib/raw-handlebars.js.es6 b/app/assets/javascripts/discourse-common/lib/raw-handlebars.js.es6 index eed8ec09a0..ca08cfd476 100644 --- a/app/assets/javascripts/discourse-common/lib/raw-handlebars.js.es6 +++ b/app/assets/javascripts/discourse-common/lib/raw-handlebars.js.es6 @@ -1,6 +1,6 @@ // This is a mechanism for quickly rendering templates which is Ember aware // templates are highly compatible with Ember so you don't need to worry about calling "get" -// and computed properties function, additionally it uses stringParams like Ember does +// and discourseComputed properties function, additionally it uses stringParams like Ember does const RawHandlebars = Handlebars.create(); diff --git a/app/assets/javascripts/ember-addons/ember-computed-decorators.js.es6 b/app/assets/javascripts/discourse-common/utils/decorators.js.es6 similarity index 82% rename from app/assets/javascripts/ember-addons/ember-computed-decorators.js.es6 rename to app/assets/javascripts/discourse-common/utils/decorators.js.es6 index eaa78d5063..053eefe341 100644 --- a/app/assets/javascripts/ember-addons/ember-computed-decorators.js.es6 +++ b/app/assets/javascripts/discourse-common/utils/decorators.js.es6 @@ -1,9 +1,9 @@ -import handleDescriptor from "./utils/handle-descriptor"; -import isDescriptor from "./utils/is-descriptor"; -import extractValue from "./utils/extract-value"; +import handleDescriptor from "ember-addons/utils/handle-descriptor"; +import isDescriptor from "ember-addons/utils/is-descriptor"; +import extractValue from "ember-addons/utils/extract-value"; -export default function computedDecorator(...params) { - // determine if user called as @computed('blah', 'blah') or @computed +export default function discourseComputedDecorator(...params) { + // determine if user called as @discourseComputed('blah', 'blah') or @discourseComputed if (isDescriptor(params[params.length - 1])) { return handleDescriptor(...arguments); } else { @@ -25,7 +25,7 @@ export function readOnly(target, name, desc) { }; } -import decoratorAlias from "./decorator-alias"; +import decoratorAlias from "ember-addons/decorator-alias"; export var on = decoratorAlias(Ember.on, "Can not `on` without event names"); export var observes = decoratorAlias( @@ -33,7 +33,7 @@ export var observes = decoratorAlias( "Can not `observe` without property names" ); -import macroAlias from "./macro-alias"; +import macroAlias from "ember-addons/macro-alias"; export var alias = macroAlias(Ember.computed.alias); export var and = macroAlias(Ember.computed.and); diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index cb402832e8..fc3a0613f8 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -3,6 +3,10 @@ var define, requirejs; (function() { // In future versions of ember we don't need this var EMBER_MODULES = {}; + var ALIASES = { + "ember-addons/ember-computed-decorators": + "discourse-common/utils/decorators" + }; if (typeof Ember !== "undefined") { EMBER_MODULES = { jquery: { default: $ }, @@ -76,7 +80,7 @@ var define, requirejs; "@ember/utils": { isEmpty: Ember.isEmpty }, - "rsvp": { + rsvp: { Promise: Ember.RSVP.Promise, hash: Ember.RSVP.hash, all: Ember.RSVP.all @@ -213,6 +217,7 @@ var define, requirejs; } function requireFrom(name, origin) { + name = checkForAlias(name); var mod = EMBER_MODULES[name] || registry[name]; if (!mod) { throw new Error( @@ -226,6 +231,10 @@ var define, requirejs; throw new Error("Could not find module " + name); } + function checkForAlias(name) { + return ALIASES[name] ? ALIASES[name] : name; + } + requirejs = require = function(name) { if (EMBER_MODULES[name]) { return EMBER_MODULES[name]; diff --git a/app/assets/javascripts/discourse.js.es6 b/app/assets/javascripts/discourse.js.es6 index d993e3b983..2f45653ed1 100644 --- a/app/assets/javascripts/discourse.js.es6 +++ b/app/assets/javascripts/discourse.js.es6 @@ -1,9 +1,9 @@ /*global Mousetrap:true*/ import { buildResolver } from "discourse-common/resolver"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import FocusEvent from "discourse-common/mixins/focus-event"; const _pluginCallbacks = []; @@ -66,7 +66,7 @@ const Discourse = Ember.Application.extend(FocusEvent, { document.title = title; }, - @computed("contextCount", "notificationCount") + @discourseComputed("contextCount", "notificationCount") displayCount() { return Discourse.User.current() && Discourse.User.currentProp("title_count_mode") === "notifications" @@ -179,7 +179,7 @@ const Discourse = Ember.Application.extend(FocusEvent, { }); }, - @computed("currentAssetVersion", "desiredAssetVersion") + @discourseComputed("currentAssetVersion", "desiredAssetVersion") requiresRefresh(currentAssetVersion, desiredAssetVersion) { return desiredAssetVersion && currentAssetVersion !== desiredAssetVersion; }, diff --git a/app/assets/javascripts/discourse/components/add-category-tag-classes.js.es6 b/app/assets/javascripts/discourse/components/add-category-tag-classes.js.es6 index d4a75e6ebe..50d93f3a95 100644 --- a/app/assets/javascripts/discourse/components/add-category-tag-classes.js.es6 +++ b/app/assets/javascripts/discourse/components/add-category-tag-classes.js.es6 @@ -1,6 +1,6 @@ import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; export default Component.extend({ _slug: null, diff --git a/app/assets/javascripts/discourse/components/avatar-flair.js.es6 b/app/assets/javascripts/discourse/components/avatar-flair.js.es6 index 4d0bd2e131..f25d596ba7 100644 --- a/app/assets/javascripts/discourse/components/avatar-flair.js.es6 +++ b/app/assets/javascripts/discourse/components/avatar-flair.js.es6 @@ -1,4 +1,4 @@ -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import MountWidget from "discourse/components/mount-widget"; export default MountWidget.extend({ diff --git a/app/assets/javascripts/discourse/components/avatar-uploader.js.es6 b/app/assets/javascripts/discourse/components/avatar-uploader.js.es6 index 3350ddff31..f9144abe59 100644 --- a/app/assets/javascripts/discourse/components/avatar-uploader.js.es6 +++ b/app/assets/javascripts/discourse/components/avatar-uploader.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import UploadMixin from "discourse/mixins/upload"; export default Component.extend(UploadMixin, { @@ -21,7 +21,7 @@ export default Component.extend(UploadMixin, { this.done(); }, - @computed("user_id") + @discourseComputed("user_id") data(user_id) { return { user_id }; } diff --git a/app/assets/javascripts/discourse/components/backup-codes.js.es6 b/app/assets/javascripts/discourse/components/backup-codes.js.es6 index 5e80cc3e3b..1109c4cde6 100644 --- a/app/assets/javascripts/discourse/components/backup-codes.js.es6 +++ b/app/assets/javascripts/discourse/components/backup-codes.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; // https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding function b64EncodeUnicode(str) { @@ -32,10 +32,10 @@ export default Component.extend({ } }, - @computed("formattedBackupCodes") + @discourseComputed("formattedBackupCodes") base64BackupCode: b64EncodeUnicode, - @computed("backupCodes") + @discourseComputed("backupCodes") formattedBackupCodes(backupCodes) { if (!backupCodes) return null; diff --git a/app/assets/javascripts/discourse/components/backup-uploader.js.es6 b/app/assets/javascripts/discourse/components/backup-uploader.js.es6 index e75470439d..331684ee25 100644 --- a/app/assets/javascripts/discourse/components/backup-uploader.js.es6 +++ b/app/assets/javascripts/discourse/components/backup-uploader.js.es6 @@ -1,14 +1,14 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; import UploadMixin from "discourse/mixins/upload"; import { on } from "@ember/object/evented"; export default Component.extend(UploadMixin, { tagName: "span", - @computed("uploading", "uploadProgress") + @discourseComputed("uploading", "uploadProgress") uploadButtonText(uploading, progress) { return uploading ? I18n.t("admin.backups.upload.uploading_progress", { progress }) diff --git a/app/assets/javascripts/discourse/components/badge-button.js.es6 b/app/assets/javascripts/discourse/components/badge-button.js.es6 index dde5bfb804..9204a1cf7b 100644 --- a/app/assets/javascripts/discourse/components/badge-button.js.es6 +++ b/app/assets/javascripts/discourse/components/badge-button.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "span", @@ -10,7 +10,7 @@ export default Component.extend({ "badge.enabled::disabled" ], - @computed("badge.description") + @discourseComputed("badge.description") title(badgeDescription) { return $("
" + badgeDescription + "
").text(); }, diff --git a/app/assets/javascripts/discourse/components/badge-card.js.es6 b/app/assets/javascripts/discourse/components/badge-card.js.es6 index f9380b11eb..e0b192895b 100644 --- a/app/assets/javascripts/discourse/components/badge-card.js.es6 +++ b/app/assets/javascripts/discourse/components/badge-card.js.es6 @@ -1,17 +1,17 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { sanitize, emojiUnescape } from "discourse/lib/text"; export default Component.extend({ size: "medium", classNameBindings: [":badge-card", "size", "badge.slug"], - @computed("badge.url", "filterUser", "username") + @discourseComputed("badge.url", "filterUser", "username") url(badgeUrl, filterUser, username) { return filterUser ? `${badgeUrl}?username=${username}` : badgeUrl; }, - @computed("count", "badge.grant_count") + @discourseComputed("count", "badge.grant_count") displayCount(count, grantCount) { if (count == null) { return grantCount; @@ -21,7 +21,7 @@ export default Component.extend({ } }, - @computed("size") + @discourseComputed("size") summary(size) { if (size === "large") { const longDescription = this.get("badge.long_description"); diff --git a/app/assets/javascripts/discourse/components/badge-selector.js.es6 b/app/assets/javascripts/discourse/components/badge-selector.js.es6 index 94c08c95ca..3e02b0740e 100644 --- a/app/assets/javascripts/discourse/components/badge-selector.js.es6 +++ b/app/assets/javascripts/discourse/components/badge-selector.js.es6 @@ -2,13 +2,13 @@ import Component from "@ember/component"; import { on, observes, - default as computed -} from "ember-addons/ember-computed-decorators"; + default as discourseComputed +} from "discourse-common/utils/decorators"; import { findRawTemplate } from "discourse/lib/raw-templates"; const { makeArray } = Ember; export default Component.extend({ - @computed("placeholderKey") + @discourseComputed("placeholderKey") placeholder(placeholderKey) { return placeholderKey ? I18n.t(placeholderKey) : ""; }, diff --git a/app/assets/javascripts/discourse/components/badge-title.js.es6 b/app/assets/javascripts/discourse/components/badge-title.js.es6 index d7fd08c318..7f1292e2e7 100644 --- a/app/assets/javascripts/discourse/components/badge-title.js.es6 +++ b/app/assets/javascripts/discourse/components/badge-title.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { ajax } from "discourse/lib/ajax"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["badge-title"], @@ -8,7 +8,7 @@ export default Component.extend({ saved: false, saving: false, - @computed("selectableUserBadges", "selectedUserBadgeId") + @discourseComputed("selectableUserBadges", "selectedUserBadgeId") selectedUserBadge(selectableUserBadges, selectedUserBadgeId) { return selectableUserBadges.findBy("id", parseInt(selectedUserBadgeId)); }, diff --git a/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 b/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 index 64942198ed..c9ce38c339 100644 --- a/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 +++ b/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 @@ -1,12 +1,12 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias, not } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ loadingMore: alias("topicList.loadingMore"), loading: not("loaded"), - @computed("topicList.loaded") + @discourseComputed("topicList.loaded") loaded() { var topicList = this.topicList; if (topicList) { @@ -73,7 +73,7 @@ export default Component.extend({ }); }, - @computed("topics") + @discourseComputed("topics") showUnreadIndicator(topics) { return topics.some( topic => typeof topic.unread_by_group_member !== "undefined" diff --git a/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 b/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 index e420fcce7c..c1e013cac9 100644 --- a/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 +++ b/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 @@ -1,6 +1,6 @@ import { alias, filter, or } from "@ember/object/computed"; import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; // A breadcrumb including category drop downs export default Component.extend({ @@ -21,7 +21,7 @@ export default Component.extend({ return !c.get("parentCategory"); }), - @computed("parentCategories") + @discourseComputed("parentCategories") parentCategoriesSorted(parentCategories) { if (this.siteSettings.fixed_category_positions) { return parentCategories; @@ -30,20 +30,20 @@ export default Component.extend({ return parentCategories.sortBy("totalTopicCount").reverse(); }, - @computed("category") + @discourseComputed("category") hidden(category) { return this.site.mobileView && !category; }, firstCategory: or("{parentCategory,category}"), - @computed("category", "parentCategory") + @discourseComputed("category", "parentCategory") secondCategory(category, parentCategory) { if (parentCategory) return category; return null; }, - @computed("firstCategory", "hideSubcategories") + @discourseComputed("firstCategory", "hideSubcategories") childCategories(firstCategory, hideSubcategories) { if (hideSubcategories) { return []; diff --git a/app/assets/javascripts/discourse/components/categories-boxes-topic.js.es6 b/app/assets/javascripts/discourse/components/categories-boxes-topic.js.es6 index b5536923ec..ed2af66cad 100644 --- a/app/assets/javascripts/discourse/components/categories-boxes-topic.js.es6 +++ b/app/assets/javascripts/discourse/components/categories-boxes-topic.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "li", - @computed("topic.pinned", "topic.closed", "topic.archived") + @discourseComputed("topic.pinned", "topic.closed", "topic.archived") topicStatusIcon(pinned, closed, archived) { if (pinned) { return "thumbtack"; diff --git a/app/assets/javascripts/discourse/components/categories-boxes-with-topics.js.es6 b/app/assets/javascripts/discourse/components/categories-boxes-with-topics.js.es6 index 40b16d03fa..ffd3a77ca8 100644 --- a/app/assets/javascripts/discourse/components/categories-boxes-with-topics.js.es6 +++ b/app/assets/javascripts/discourse/components/categories-boxes-with-topics.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "section", @@ -9,7 +9,7 @@ export default Component.extend({ "anyLogos:with-logos:no-logos" ], - @computed("categories.[].uploaded_logo.url") + @discourseComputed("categories.[].uploaded_logo.url") anyLogos() { return this.categories.any(c => { return !isEmpty(c.get("uploaded_logo.url")); diff --git a/app/assets/javascripts/discourse/components/categories-boxes.js.es6 b/app/assets/javascripts/discourse/components/categories-boxes.js.es6 index 11b76ed1d4..b4dcfde7e8 100644 --- a/app/assets/javascripts/discourse/components/categories-boxes.js.es6 +++ b/app/assets/javascripts/discourse/components/categories-boxes.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import DiscourseURL from "discourse/lib/url"; export default Component.extend({ @@ -11,12 +11,12 @@ export default Component.extend({ "hasSubcategories:with-subcategories" ], - @computed("categories.[].uploaded_logo.url") + @discourseComputed("categories.[].uploaded_logo.url") anyLogos() { return this.categories.any(c => !isEmpty(c.get("uploaded_logo.url"))); }, - @computed("categories.[].subcategories") + @discourseComputed("categories.[].subcategories") hasSubcategories() { return this.categories.any(c => !isEmpty(c.get("subcategories"))); }, diff --git a/app/assets/javascripts/discourse/components/cdn-img.js.es6 b/app/assets/javascripts/discourse/components/cdn-img.js.es6 index 338c71a1ee..a5c7a2642a 100644 --- a/app/assets/javascripts/discourse/components/cdn-img.js.es6 +++ b/app/assets/javascripts/discourse/components/cdn-img.js.es6 @@ -1,16 +1,16 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { htmlSafe } from "@ember/template"; export default Component.extend({ tagName: "", - @computed("src") + @discourseComputed("src") cdnSrc(src) { return Discourse.getURLWithCDN(src); }, - @computed("width", "height") + @discourseComputed("width", "height") style(width, height) { if (width && height) { return htmlSafe(`--aspect-ratio: ${width / height};`); diff --git a/app/assets/javascripts/discourse/components/choose-message.js.es6 b/app/assets/javascripts/discourse/components/choose-message.js.es6 index cb6c251355..e47618dbef 100644 --- a/app/assets/javascripts/discourse/components/choose-message.js.es6 +++ b/app/assets/javascripts/discourse/components/choose-message.js.es6 @@ -4,7 +4,7 @@ import { next } from "@ember/runloop"; import Component from "@ember/component"; import debounce from "discourse/lib/debounce"; import { searchForTerm } from "discourse/lib/search"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; export default Component.extend({ loading: null, diff --git a/app/assets/javascripts/discourse/components/choose-topic.js.es6 b/app/assets/javascripts/discourse/components/choose-topic.js.es6 index f2d4792414..557b30d9a0 100644 --- a/app/assets/javascripts/discourse/components/choose-topic.js.es6 +++ b/app/assets/javascripts/discourse/components/choose-topic.js.es6 @@ -3,7 +3,7 @@ import { next } from "@ember/runloop"; import Component from "@ember/component"; import debounce from "discourse/lib/debounce"; import { searchForTerm } from "discourse/lib/search"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; export default Component.extend({ loading: null, diff --git a/app/assets/javascripts/discourse/components/color-picker-choice.js.es6 b/app/assets/javascripts/discourse/components/color-picker-choice.js.es6 index a1933193d2..a384ca1920 100644 --- a/app/assets/javascripts/discourse/components/color-picker-choice.js.es6 +++ b/app/assets/javascripts/discourse/components/color-picker-choice.js.es6 @@ -1,22 +1,22 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "button", attributeBindings: ["style", "title"], classNameBindings: [":colorpicker", "isUsed:used-color:unused-color"], - @computed("color", "usedColors") + @discourseComputed("color", "usedColors") isUsed(color, usedColors) { return (usedColors || []).indexOf(color.toUpperCase()) >= 0; }, - @computed("isUsed") + @discourseComputed("isUsed") title(isUsed) { return isUsed ? I18n.t("category.already_used") : null; }, - @computed("color") + @discourseComputed("color") style(color) { return `background-color: #${color};`.htmlSafe(); }, diff --git a/app/assets/javascripts/discourse/components/composer-action-title.js.es6 b/app/assets/javascripts/discourse/components/composer-action-title.js.es6 index 8e4fd6c9f7..996b409f6b 100644 --- a/app/assets/javascripts/discourse/components/composer-action-title.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-action-title.js.es6 @@ -1,6 +1,6 @@ import { alias, equal } from "@ember/object/computed"; import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { PRIVATE_MESSAGE, CREATE_TOPIC, @@ -24,7 +24,7 @@ export default Component.extend({ action: alias("model.action"), isEditing: equal("action", EDIT), - @computed("options", "action") + @discourseComputed("options", "action") actionTitle(opts, action) { if (TITLES[action]) { return I18n.t(TITLES[action]); diff --git a/app/assets/javascripts/discourse/components/composer-body.js.es6 b/app/assets/javascripts/discourse/components/composer-body.js.es6 index f265917279..f2a6ae3bc8 100644 --- a/app/assets/javascripts/discourse/components/composer-body.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-body.js.es6 @@ -5,9 +5,9 @@ import { scheduleOnce } from "@ember/runloop"; import { later } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import Composer from "discourse/models/composer"; import afterTransition from "discourse/lib/after-transition"; import positioningWorkaround from "discourse/lib/safari-hacks"; @@ -42,12 +42,12 @@ export default Component.extend(KeyEnterEscape, { "currentUserPrimaryGroupClass" ], - @computed("currentUser.primary_group_name") + @discourseComputed("currentUser.primary_group_name") currentUserPrimaryGroupClass(primaryGroupName) { return primaryGroupName && `group-${primaryGroupName}`; }, - @computed("composer.composeState") + @discourseComputed("composer.composeState") composeState(composeState) { return composeState || Composer.CLOSED; }, diff --git a/app/assets/javascripts/discourse/components/composer-editor.js.es6 b/app/assets/javascripts/discourse/components/composer-editor.js.es6 index d1aa32d046..75f8edd4f0 100644 --- a/app/assets/javascripts/discourse/components/composer-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-editor.js.es6 @@ -6,10 +6,10 @@ import { later } from "@ember/runloop"; import Component from "@ember/component"; import userSearch from "discourse/lib/user-search"; import { - default as computed, + default as discourseComputed, observes, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { linkSeenMentions, fetchUnseenMentions @@ -43,7 +43,6 @@ import { cacheShortUploadUrl, resolveAllShortUrls } from "pretty-text/upload-short-url"; - import { INLINE_ONEBOX_LOADING_CSS_CLASS, INLINE_ONEBOX_CSS_CLASS @@ -69,7 +68,7 @@ export default Component.extend({ scrollMap: null, uploadFilenamePlaceholder: null, - @computed("uploadFilenamePlaceholder") + @discourseComputed("uploadFilenamePlaceholder") uploadPlaceholder(uploadFilenamePlaceholder) { const clipboard = I18n.t("clipboard"); const filename = uploadFilenamePlaceholder @@ -78,7 +77,7 @@ export default Component.extend({ return `[${I18n.t("uploading_filename", { filename })}]() `; }, - @computed("composer.requiredCategoryMissing") + @discourseComputed("composer.requiredCategoryMissing") replyPlaceholder(requiredCategoryMissing) { if (requiredCategoryMissing) { return "composer.reply_placeholder_choose_category"; @@ -90,14 +89,14 @@ export default Component.extend({ } }, - @computed + @discourseComputed showLink() { return ( this.currentUser && this.currentUser.get("link_posting_access") !== "none" ); }, - @computed("composer.requiredCategoryMissing", "composer.replyLength") + @discourseComputed("composer.requiredCategoryMissing", "composer.replyLength") disableTextarea(requiredCategoryMissing, replyLength) { return requiredCategoryMissing && replyLength === 0; }, @@ -123,7 +122,7 @@ export default Component.extend({ } }, - @computed + @discourseComputed markdownOptions() { return { previewing: true, @@ -214,7 +213,7 @@ export default Component.extend({ this.appEvents.trigger("composer:will-open"); }, - @computed( + @discourseComputed( "composer.reply", "composer.replyLength", "composer.missingReplyCharacters", diff --git a/app/assets/javascripts/discourse/components/composer-message.js.es6 b/app/assets/javascripts/discourse/components/composer-message.js.es6 index 6cb98b8018..ce42d201c9 100644 --- a/app/assets/javascripts/discourse/components/composer-message.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-message.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { getOwner } from "discourse-common/lib/get-owner"; export default Component.extend({ classNameBindings: [":composer-popup", ":hidden", "message.extraClass"], - @computed("message.templateName") + @discourseComputed("message.templateName") layout(templateName) { return getOwner(this).lookup(`template:composer/${templateName}`); }, diff --git a/app/assets/javascripts/discourse/components/composer-title.js.es6 b/app/assets/javascripts/discourse/components/composer-title.js.es6 index ecbe5216bc..da012442f7 100644 --- a/app/assets/javascripts/discourse/components/composer-title.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-title.js.es6 @@ -4,9 +4,9 @@ import { debounce } from "@ember/runloop"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import InputValidation from "discourse/models/input-validation"; import { load } from "pretty-text/oneboxer"; import { lookupCache } from "pretty-text/oneboxer-cache"; @@ -34,7 +34,7 @@ export default Component.extend({ } }, - @computed( + @discourseComputed( "composer.titleLength", "composer.missingTitleCharacters", "composer.minimumTitleLength", @@ -68,7 +68,7 @@ export default Component.extend({ } }, - @computed("watchForLink") + @discourseComputed("watchForLink") titleMaxLength() { // maxLength gets in the way of pasting long links, so don't use it if featured links are allowed. // Validation will display a message if titles are too long. @@ -182,7 +182,7 @@ export default Component.extend({ } }, - @computed("composer.title", "composer.titleLength") + @discourseComputed("composer.title", "composer.titleLength") isAbsoluteUrl(title, titleLength) { return ( titleLength > 0 && diff --git a/app/assets/javascripts/discourse/components/composer-toggles.js.es6 b/app/assets/javascripts/discourse/components/composer-toggles.js.es6 index 9f0547d641..e08e50fa3f 100644 --- a/app/assets/javascripts/discourse/components/composer-toggles.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-toggles.js.es6 @@ -1,17 +1,17 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "", - @computed("composeState") + @discourseComputed("composeState") toggleTitle(composeState) { return composeState === "draft" || composeState === "saving" ? "composer.abandon" : "composer.collapse"; }, - @computed("composeState") + @discourseComputed("composeState") fullscreenTitle(composeState) { return composeState === "draft" ? "composer.open" @@ -20,14 +20,14 @@ export default Component.extend({ : "composer.enter_fullscreen"; }, - @computed("composeState") + @discourseComputed("composeState") toggleIcon(composeState) { return composeState === "draft" || composeState === "saving" ? "times" : "chevron-down"; }, - @computed("composeState") + @discourseComputed("composeState") fullscreenIcon(composeState) { return composeState === "draft" ? "chevron-up" diff --git a/app/assets/javascripts/discourse/components/composer-user-selector.js.es6 b/app/assets/javascripts/discourse/components/composer-user-selector.js.es6 index 3e9aa03784..14ca7e3556 100644 --- a/app/assets/javascripts/discourse/components/composer-user-selector.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-user-selector.js.es6 @@ -1,9 +1,9 @@ import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Component.extend({ showSelector: true, @@ -58,17 +58,17 @@ export default Component.extend({ } }, - @computed("usernames") + @discourseComputed("usernames") splitUsernames(usernames) { return usernames.split(","); }, - @computed("splitUsernames", "defaultUsernameCount") + @discourseComputed("splitUsernames", "defaultUsernameCount") limitedUsernames(splitUsernames, count) { return splitUsernames.slice(0, count).join(", "); }, - @computed("splitUsernames", "defaultUsernameCount") + @discourseComputed("splitUsernames", "defaultUsernameCount") hiddenUsersCount(splitUsernames, count) { return `${splitUsernames.length - count} ${I18n.t("more")}`; }, diff --git a/app/assets/javascripts/discourse/components/conditional-loading-spinner.js.es6 b/app/assets/javascripts/discourse/components/conditional-loading-spinner.js.es6 index 1c6e37ec03..c98075275f 100644 --- a/app/assets/javascripts/discourse/components/conditional-loading-spinner.js.es6 +++ b/app/assets/javascripts/discourse/components/conditional-loading-spinner.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNameBindings: [ @@ -8,7 +8,7 @@ export default Component.extend({ "condition:visible" ], - @computed("size") + @discourseComputed("size") containerClass(size) { return size === "small" ? "inline-spinner" : undefined; } diff --git a/app/assets/javascripts/discourse/components/create-topics-notice.js.es6 b/app/assets/javascripts/discourse/components/create-topics-notice.js.es6 index 96c29f9081..5622cfab94 100644 --- a/app/assets/javascripts/discourse/components/create-topics-notice.js.es6 +++ b/app/assets/javascripts/discourse/components/create-topics-notice.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import LivePostCounts from "discourse/models/live-post-counts"; export default Component.extend({ @@ -36,7 +36,7 @@ export default Component.extend({ } }, - @computed() + @discourseComputed() shouldSee() { const user = this.currentUser; return ( @@ -47,7 +47,12 @@ export default Component.extend({ ); }, - @computed("enabled", "shouldSee", "publicTopicCount", "publicPostCount") + @discourseComputed( + "enabled", + "shouldSee", + "publicTopicCount", + "publicPostCount" + ) hidden() { return ( !this.enabled || @@ -57,7 +62,7 @@ export default Component.extend({ ); }, - @computed( + @discourseComputed( "publicTopicCount", "publicPostCount", "topicTrackingState.incomingCount" diff --git a/app/assets/javascripts/discourse/components/csv-uploader.js.es6 b/app/assets/javascripts/discourse/components/csv-uploader.js.es6 index 6fa3792d36..b3bb4e8d1f 100644 --- a/app/assets/javascripts/discourse/components/csv-uploader.js.es6 +++ b/app/assets/javascripts/discourse/components/csv-uploader.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import UploadMixin from "discourse/mixins/upload"; import { on } from "@ember/object/evented"; @@ -12,14 +12,14 @@ export default Component.extend(UploadMixin, { return { csvOnly: true }; }, - @computed("uploading") + @discourseComputed("uploading") uploadButtonText(uploading) { return uploading ? I18n.t("uploading") : I18n.t("user.invited.bulk_invite.text"); }, - @computed("uploading") + @discourseComputed("uploading") uploadButtonDisabled(uploading) { // https://github.com/emberjs/ember.js/issues/10976#issuecomment-132417731 return uploading ? true : null; diff --git a/app/assets/javascripts/discourse/components/d-button.js.es6 b/app/assets/javascripts/discourse/components/d-button.js.es6 index 130e4ae458..1d0c9d04f8 100644 --- a/app/assets/javascripts/discourse/components/d-button.js.es6 +++ b/app/assets/javascripts/discourse/components/d-button.js.es6 @@ -1,6 +1,6 @@ import { notEmpty, empty, equal } from "@ember/object/computed"; import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import DiscourseURL from "discourse/lib/url"; export default Component.extend({ @@ -26,7 +26,7 @@ export default Component.extend({ btnLink: equal("display", "link"), - @computed("icon", "translatedLabel") + @discourseComputed("icon", "translatedLabel") btnType(icon, translatedLabel) { if (icon) { return translatedLabel ? "btn-icon-text" : "btn-icon"; @@ -37,7 +37,7 @@ export default Component.extend({ noText: empty("translatedLabel"), - @computed("title") + @discourseComputed("title") translatedTitle: { get() { if (this._translatedTitle) return this._translatedTitle; @@ -48,7 +48,7 @@ export default Component.extend({ } }, - @computed("label") + @discourseComputed("label") translatedLabel: { get() { if (this._translatedLabel) return this._translatedLabel; diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index b60fdf88a3..f102a47886 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -7,10 +7,10 @@ import { inject as service } from "@ember/service"; import Component from "@ember/component"; /*global Mousetrap:true */ import { - default as computed, + default as discourseComputed, on, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { categoryHashtagTriggerRule } from "discourse/lib/category-hashtags"; import { search as searchCategoryTag } from "discourse/lib/category-tag-search"; import { cookAsync } from "discourse/lib/text"; @@ -229,7 +229,7 @@ export default Component.extend({ emojiPickerIsActive: false, emojiStore: service("emoji-store"), - @computed("placeholder") + @discourseComputed("placeholder") placeholderTranslated(placeholder) { if (placeholder) return I18n.t(placeholder); return null; @@ -327,7 +327,7 @@ export default Component.extend({ $(this.element.querySelector(".d-editor-preview")).off("click.preview"); }, - @computed + @discourseComputed toolbar() { const toolbar = new Toolbar( this.getProperties("site", "siteSettings", "showLink") diff --git a/app/assets/javascripts/discourse/components/d-modal.js.es6 b/app/assets/javascripts/discourse/components/d-modal.js.es6 index 19d4d2264c..300a3e585c 100644 --- a/app/assets/javascripts/discourse/components/d-modal.js.es6 +++ b/app/assets/javascripts/discourse/components/d-modal.js.es6 @@ -1,5 +1,5 @@ import { next } from "@ember/runloop"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import Component from "@ember/component"; export default Component.extend({ diff --git a/app/assets/javascripts/discourse/components/d-navigation.js.es6 b/app/assets/javascripts/discourse/components/d-navigation.js.es6 index b44ad95efd..0fe007a1ed 100644 --- a/app/assets/javascripts/discourse/components/d-navigation.js.es6 +++ b/app/assets/javascripts/discourse/components/d-navigation.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject as service } from "@ember/service"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ router: service(), @@ -8,25 +8,25 @@ export default Component.extend({ tagName: "", - @computed("category") + @discourseComputed("category") showCategoryNotifications(category) { return category && this.currentUser; }, - @computed() + @discourseComputed() categories() { return this.site.get("categoriesList"); }, - @computed("hasDraft") + @discourseComputed("hasDraft") createTopicLabel(hasDraft) { return hasDraft ? "topic.open_draft" : "topic.create"; }, - @computed("category.can_edit") + @discourseComputed("category.can_edit") showCategoryEdit: canEdit => canEdit, - @computed("filterMode", "category", "noSubcategories") + @discourseComputed("filterMode", "category", "noSubcategories") navItems(filterMode, category, noSubcategories) { // we don't want to show the period in the navigation bar since it's in a dropdown if (filterMode.indexOf("top/") === 0) { diff --git a/app/assets/javascripts/discourse/components/date-input.js.es6 b/app/assets/javascripts/discourse/components/date-input.js.es6 index 927be37881..b095781b82 100644 --- a/app/assets/javascripts/discourse/components/date-input.js.es6 +++ b/app/assets/javascripts/discourse/components/date-input.js.es6 @@ -3,16 +3,16 @@ import Component from "@ember/component"; /* global Pikaday:true */ import loadScript from "discourse/lib/load-script"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Component.extend({ classNames: ["d-date-input"], date: null, _picker: null, - @computed("site.mobileView") + @discourseComputed("site.mobileView") inputType(mobileView) { return mobileView ? "date" : "text"; }, @@ -92,7 +92,7 @@ export default Component.extend({ this._picker = null; }, - @computed() + @discourseComputed() placeholder() { return I18n.t("dates.placeholder"); }, diff --git a/app/assets/javascripts/discourse/components/date-picker.js.es6 b/app/assets/javascripts/discourse/components/date-picker.js.es6 index e9403326bb..8ca644e952 100644 --- a/app/assets/javascripts/discourse/components/date-picker.js.es6 +++ b/app/assets/javascripts/discourse/components/date-picker.js.es6 @@ -3,9 +3,9 @@ import Component from "@ember/component"; /* global Pikaday:true */ import loadScript from "discourse/lib/load-script"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; const DATE_FORMAT = "YYYY-MM-DD"; @@ -14,7 +14,7 @@ export default Component.extend({ _picker: null, value: null, - @computed("site.mobileView") + @discourseComputed("site.mobileView") inputType(mobileView) { return mobileView ? "date" : "text"; }, @@ -83,7 +83,7 @@ export default Component.extend({ } }, - @computed() + @discourseComputed() placeholder() { return I18n.t("dates.placeholder"); }, diff --git a/app/assets/javascripts/discourse/components/desktop-notification-config.js.es6 b/app/assets/javascripts/discourse/components/desktop-notification-config.js.es6 index 112723ba12..ecd11c2a6e 100644 --- a/app/assets/javascripts/discourse/components/desktop-notification-config.js.es6 +++ b/app/assets/javascripts/discourse/components/desktop-notification-config.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { or } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import KeyValueStore from "discourse/lib/key-value-store"; import { context, @@ -19,12 +19,12 @@ const keyValueStore = new KeyValueStore(context); export default Component.extend({ classNames: ["controls"], - @computed("isNotSupported") + @discourseComputed("isNotSupported") notificationsPermission(isNotSupported) { return isNotSupported ? "" : Notification.permission; }, - @computed + @discourseComputed notificationsDisabled: { set(value) { keyValueStore.setItem("notifications-disabled", value); @@ -35,27 +35,27 @@ export default Component.extend({ } }, - @computed + @discourseComputed isNotSupported() { return typeof window.Notification === "undefined"; }, - @computed("isNotSupported", "notificationsPermission") + @discourseComputed("isNotSupported", "notificationsPermission") isDeniedPermission(isNotSupported, notificationsPermission) { return isNotSupported ? false : notificationsPermission === "denied"; }, - @computed("isNotSupported", "notificationsPermission") + @discourseComputed("isNotSupported", "notificationsPermission") isGrantedPermission(isNotSupported, notificationsPermission) { return isNotSupported ? false : notificationsPermission === "granted"; }, - @computed("isGrantedPermission", "notificationsDisabled") + @discourseComputed("isGrantedPermission", "notificationsDisabled") isEnabledDesktop(isGrantedPermission, notificationsDisabled) { return isGrantedPermission ? !notificationsDisabled : false; }, - @computed + @discourseComputed isEnabledPush: { set(value) { const user = this.currentUser; diff --git a/app/assets/javascripts/discourse/components/directory-toggle.js.es6 b/app/assets/javascripts/discourse/components/directory-toggle.js.es6 index d45e9ce9e7..2b761c99b9 100644 --- a/app/assets/javascripts/discourse/components/directory-toggle.js.es6 +++ b/app/assets/javascripts/discourse/components/directory-toggle.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; import { bufferedRender } from "discourse-common/lib/buffered-render"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend( bufferedRender({ @@ -11,7 +11,7 @@ export default Component.extend( rerenderTriggers: ["order", "asc"], labelKey: null, - @computed("field", "labelKey") + @discourseComputed("field", "labelKey") title(field, labelKey) { if (!labelKey) { labelKey = `directory.${this.field}`; diff --git a/app/assets/javascripts/discourse/components/discourse-banner.js.es6 b/app/assets/javascripts/discourse/components/discourse-banner.js.es6 index 6c8b18ea1e..9182998d76 100644 --- a/app/assets/javascripts/discourse/components/discourse-banner.js.es6 +++ b/app/assets/javascripts/discourse/components/discourse-banner.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ - @computed("user.dismissed_banner_key", "banner.key", "hide") + @discourseComputed("user.dismissed_banner_key", "banner.key", "hide") visible(dismissedBannerKey, bannerKey, hide) { dismissedBannerKey = dismissedBannerKey || this.keyValueStore.get("dismissed_banner_key"); diff --git a/app/assets/javascripts/discourse/components/discourse-linked-text.js.es6 b/app/assets/javascripts/discourse/components/discourse-linked-text.js.es6 index fe4e7fd9c8..85d6fd3cb9 100644 --- a/app/assets/javascripts/discourse/components/discourse-linked-text.js.es6 +++ b/app/assets/javascripts/discourse/components/discourse-linked-text.js.es6 @@ -1,10 +1,10 @@ import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default Component.extend({ tagName: "span", - @computed("text") + @discourseComputed("text") translatedText(text) { if (text) return I18n.t(text); }, diff --git a/app/assets/javascripts/discourse/components/discourse-tag-bound.js.es6 b/app/assets/javascripts/discourse/components/discourse-tag-bound.js.es6 index ea07e0d5fe..57e5c1841a 100644 --- a/app/assets/javascripts/discourse/components/discourse-tag-bound.js.es6 +++ b/app/assets/javascripts/discourse/components/discourse-tag-bound.js.es6 @@ -1,17 +1,17 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "a", classNameBindings: [":discourse-tag", "style", "tagClass"], attributeBindings: ["href"], - @computed("tagRecord.id") + @discourseComputed("tagRecord.id") tagClass(tagRecordId) { return "tag-" + tagRecordId; }, - @computed("tagRecord.id") + @discourseComputed("tagRecord.id") href(tagRecordId) { return Discourse.getURL("/tags/" + tagRecordId); } diff --git a/app/assets/javascripts/discourse/components/discourse-topic.js.es6 b/app/assets/javascripts/discourse/components/discourse-topic.js.es6 index c9484f6264..83e7bf6fa1 100644 --- a/app/assets/javascripts/discourse/components/discourse-topic.js.es6 +++ b/app/assets/javascripts/discourse/components/discourse-topic.js.es6 @@ -9,7 +9,7 @@ import AddArchetypeClass from "discourse/mixins/add-archetype-class"; import ClickTrack from "discourse/lib/click-track"; import Scrolling from "discourse/mixins/scrolling"; import MobileScrollDirection from "discourse/mixins/mobile-scroll-direction"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; const MOBILE_SCROLL_DIRECTION_CHECK_THROTTLE = 300; diff --git a/app/assets/javascripts/discourse/components/discovery-categories.js.es6 b/app/assets/javascripts/discourse/components/discovery-categories.js.es6 index d5c70bbf9a..bd4f34a2e7 100644 --- a/app/assets/javascripts/discourse/components/discovery-categories.js.es6 +++ b/app/assets/javascripts/discourse/components/discovery-categories.js.es6 @@ -1,6 +1,6 @@ import Component from "@ember/component"; import UrlRefresh from "discourse/mixins/url-refresh"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; const CATEGORIES_LIST_BODY_CLASS = "categories-list"; diff --git a/app/assets/javascripts/discourse/components/discovery-topics-list.js.es6 b/app/assets/javascripts/discourse/components/discovery-topics-list.js.es6 index 6706cacd4a..f4329ba2f2 100644 --- a/app/assets/javascripts/discourse/components/discovery-topics-list.js.es6 +++ b/app/assets/javascripts/discourse/components/discovery-topics-list.js.es6 @@ -1,7 +1,7 @@ import { schedule } from "@ember/runloop"; import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; import LoadMore from "discourse/mixins/load-more"; import UrlRefresh from "discourse/mixins/url-refresh"; diff --git a/app/assets/javascripts/discourse/components/edit-category-general.js.es6 b/app/assets/javascripts/discourse/components/edit-category-general.js.es6 index e94e2a77d2..a1f95d117a 100644 --- a/app/assets/javascripts/discourse/components/edit-category-general.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-general.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { not } from "@ember/object/computed"; import { buildCategoryPanel } from "discourse/components/edit-category-panel"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; import Category from "discourse/models/category"; -import computed from "ember-addons/ember-computed-decorators"; export default buildCategoryPanel("general", { init() { @@ -21,7 +21,7 @@ export default buildCategoryPanel("general", { ), // background colors are available as a pipe-separated string - @computed + @discourseComputed backgroundColors() { const categories = this.site.get("categoriesList"); return this.siteSettings.category_colors @@ -37,12 +37,12 @@ export default buildCategoryPanel("general", { .uniq(); }, - @computed + @discourseComputed noCategoryStyle() { return this.siteSettings.category_style === "none"; }, - @computed("category.id", "category.color") + @discourseComputed("category.id", "category.color") usedBackgroundColors(categoryId, categoryColor) { const categories = this.site.get("categoriesList"); @@ -57,14 +57,14 @@ export default buildCategoryPanel("general", { .compact(); }, - @computed + @discourseComputed parentCategories() { return this.site .get("categoriesList") .filter(c => !c.get("parentCategory")); }, - @computed( + @discourseComputed( "category.parent_category_id", "category.categoryName", "category.color", @@ -83,7 +83,7 @@ export default buildCategoryPanel("general", { }, // We can change the parent if there are no children - @computed("category.id") + @discourseComputed("category.id") subCategories(categoryId) { if (isEmpty(categoryId)) { return null; @@ -91,7 +91,7 @@ export default buildCategoryPanel("general", { return Category.list().filterBy("parent_category_id", categoryId); }, - @computed("category.isUncategorizedCategory", "category.id") + @discourseComputed("category.isUncategorizedCategory", "category.id") showDescription(isUncategorizedCategory, categoryId) { return !isUncategorizedCategory && categoryId; }, diff --git a/app/assets/javascripts/discourse/components/edit-category-images.js.es6 b/app/assets/javascripts/discourse/components/edit-category-images.js.es6 index 2e12268885..94956edf36 100644 --- a/app/assets/javascripts/discourse/components/edit-category-images.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-images.js.es6 @@ -1,14 +1,14 @@ import EmberObject from "@ember/object"; import { buildCategoryPanel } from "discourse/components/edit-category-panel"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default buildCategoryPanel("images").extend({ - @computed("category.uploaded_background.url") + @discourseComputed("category.uploaded_background.url") backgroundImageUrl(uploadedBackgroundUrl) { return uploadedBackgroundUrl || ""; }, - @computed("category.uploaded_logo.url") + @discourseComputed("category.uploaded_logo.url") logoImageUrl(uploadedLogoUrl) { return uploadedLogoUrl || ""; }, diff --git a/app/assets/javascripts/discourse/components/edit-category-security.js.es6 b/app/assets/javascripts/discourse/components/edit-category-security.js.es6 index be41b0a09c..013e620671 100644 --- a/app/assets/javascripts/discourse/components/edit-category-security.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-security.js.es6 @@ -1,6 +1,6 @@ import { buildCategoryPanel } from "discourse/components/edit-category-panel"; import PermissionType from "discourse/models/permission-type"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; export default buildCategoryPanel("security", { editingPermissions: false, diff --git a/app/assets/javascripts/discourse/components/edit-category-settings.js.es6 b/app/assets/javascripts/discourse/components/edit-category-settings.js.es6 index 5d692cc6eb..29556d2c9a 100644 --- a/app/assets/javascripts/discourse/components/edit-category-settings.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-settings.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { empty, and } from "@ember/object/computed"; import { setting } from "discourse/lib/computed"; import { buildCategoryPanel } from "discourse/components/edit-category-panel"; -import computed from "ember-addons/ember-computed-decorators"; import { searchPriorities } from "discourse/components/concerns/category-search-priorities"; import Group from "discourse/models/group"; @@ -20,7 +20,7 @@ export default buildCategoryPanel("settings", { ), isDefaultSortOrder: empty("category.sort_order"), - @computed + @discourseComputed availableSubcategoryListStyles() { return [ { name: I18n.t("category.subcategory_list_styles.rows"), value: "rows" }, @@ -47,7 +47,7 @@ export default buildCategoryPanel("settings", { return Group.findAll({ term, ignore_automatic: true }); }, - @computed + @discourseComputed availableViews() { return [ { name: I18n.t("filters.latest.title"), value: "latest" }, @@ -55,7 +55,7 @@ export default buildCategoryPanel("settings", { ]; }, - @computed + @discourseComputed availableTopPeriods() { return ["all", "yearly", "quarterly", "monthly", "weekly", "daily"].map( p => { @@ -64,7 +64,7 @@ export default buildCategoryPanel("settings", { ); }, - @computed + @discourseComputed searchPrioritiesOptions() { const options = []; @@ -80,7 +80,7 @@ export default buildCategoryPanel("settings", { return options; }, - @computed + @discourseComputed availableSorts() { return [ "likes", @@ -97,7 +97,7 @@ export default buildCategoryPanel("settings", { .sort((a, b) => a.name.localeCompare(b.name)); }, - @computed + @discourseComputed sortAscendingOptions() { return [ { name: I18n.t("category.sort_ascending"), value: "true" }, diff --git a/app/assets/javascripts/discourse/components/edit-category-tab.js.es6 b/app/assets/javascripts/discourse/components/edit-category-tab.js.es6 index 42be7233af..9fa7984533 100644 --- a/app/assets/javascripts/discourse/components/edit-category-tab.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-tab.js.es6 @@ -1,20 +1,20 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; import { propertyEqual } from "discourse/lib/computed"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "li", classNameBindings: ["active", "tabClassName"], - @computed("tab") + @discourseComputed("tab") tabClassName(tab) { return "edit-category-" + tab; }, active: propertyEqual("selectedTab", "tab"), - @computed("tab") + @discourseComputed("tab") title(tab) { return I18n.t("category." + tab.replace("-", "_")); }, diff --git a/app/assets/javascripts/discourse/components/edit-topic-timer-form.js.es6 b/app/assets/javascripts/discourse/components/edit-topic-timer-form.js.es6 index 5b774ca667..00fa6b2bad 100644 --- a/app/assets/javascripts/discourse/components/edit-topic-timer-form.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-topic-timer-form.js.es6 @@ -3,11 +3,10 @@ import { alias, equal, or } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes, on -} from "ember-addons/ember-computed-decorators"; - +} from "discourse-common/utils/decorators"; import { PUBLISH_TO_CATEGORY_STATUS_TYPE, OPEN_STATUS_TYPE, @@ -27,7 +26,7 @@ export default Component.extend({ reminder: equal("selection", REMINDER_TYPE), showTimeOnly: or("autoOpen", "autoDelete", "reminder", "autoBump"), - @computed( + @discourseComputed( "topicTimer.updateTime", "loading", "publishToCategory", @@ -41,7 +40,7 @@ export default Component.extend({ ); }, - @computed("topic.visible") + @discourseComputed("topic.visible") excludeCategoryId(visible) { if (visible) return this.get("topic.category_id"); }, diff --git a/app/assets/javascripts/discourse/components/emoji-picker.js.es6 b/app/assets/javascripts/discourse/components/emoji-picker.js.es6 index 6ad97bebc8..7d4d92e7ee 100644 --- a/app/assets/javascripts/discourse/components/emoji-picker.js.es6 +++ b/app/assets/javascripts/discourse/components/emoji-picker.js.es6 @@ -1,9 +1,8 @@ import { inject as service } from "@ember/service"; import Component from "@ember/component"; -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; import { findRawTemplate } from "discourse/lib/raw-templates"; import { emojiUrlFor } from "discourse/lib/text"; - import { extendedEmojiList, isSkinTonableEmoji, diff --git a/app/assets/javascripts/discourse/components/emoji-uploader.js.es6 b/app/assets/javascripts/discourse/components/emoji-uploader.js.es6 index 37dfd5ea10..fa7ee8fd10 100644 --- a/app/assets/javascripts/discourse/components/emoji-uploader.js.es6 +++ b/app/assets/javascripts/discourse/components/emoji-uploader.js.es6 @@ -1,6 +1,6 @@ import { notEmpty, not } from "@ember/object/computed"; import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import UploadMixin from "discourse/mixins/upload"; export default Component.extend(UploadMixin, { @@ -15,7 +15,7 @@ export default Component.extend(UploadMixin, { }; }, - @computed("hasName", "name") + @discourseComputed("hasName", "name") data(hasName, name) { return hasName ? { name } : {}; }, diff --git a/app/assets/javascripts/discourse/components/expanding-text-area.js.es6 b/app/assets/javascripts/discourse/components/expanding-text-area.js.es6 index d2b980a8f2..4c3432f277 100644 --- a/app/assets/javascripts/discourse/components/expanding-text-area.js.es6 +++ b/app/assets/javascripts/discourse/components/expanding-text-area.js.es6 @@ -1,5 +1,5 @@ import { scheduleOnce } from "@ember/runloop"; -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; import autosize from "discourse/lib/autosize"; export default Ember.TextArea.extend({ diff --git a/app/assets/javascripts/discourse/components/flag-action-type.js.es6 b/app/assets/javascripts/discourse/components/flag-action-type.js.es6 index c42818914d..a88356c9a9 100644 --- a/app/assets/javascripts/discourse/components/flag-action-type.js.es6 +++ b/app/assets/javascripts/discourse/components/flag-action-type.js.es6 @@ -1,17 +1,22 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { and, not, equal } from "@ember/object/computed"; import Component from "@ember/component"; import { MAX_MESSAGE_LENGTH } from "discourse/models/post-action-type"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["flag-action-type"], - @computed("flag.name_key") + @discourseComputed("flag.name_key") customPlaceholder(nameKey) { return I18n.t("flagging.custom_placeholder_" + nameKey); }, - @computed("flag.name", "flag.name_key", "flag.is_custom_flag", "username") + @discourseComputed( + "flag.name", + "flag.name_key", + "flag.is_custom_flag", + "username" + ) formattedName(name, nameKey, isCustomFlag, username) { if (isCustomFlag) { return name.replace("{{username}}", username); @@ -20,7 +25,7 @@ export default Component.extend({ } }, - @computed("flag", "selectedFlag") + @discourseComputed("flag", "selectedFlag") selected(flag, selectedFlag) { return flag === selectedFlag; }, @@ -29,12 +34,12 @@ export default Component.extend({ showDescription: not("showMessageInput"), isNotifyUser: equal("flag.name_key", "notify_user"), - @computed("flag.description", "flag.short_description") + @discourseComputed("flag.description", "flag.short_description") description(long_description, short_description) { return this.site.mobileView ? short_description : long_description; }, - @computed("message.length") + @discourseComputed("message.length") customMessageLengthClasses(messageLength) { return messageLength < Discourse.SiteSettings.min_personal_message_post_length @@ -42,7 +47,7 @@ export default Component.extend({ : "ok"; }, - @computed("message.length") + @discourseComputed("message.length") customMessageLength(messageLength) { const len = messageLength || 0; const minLen = Discourse.SiteSettings.min_personal_message_post_length; diff --git a/app/assets/javascripts/discourse/components/flag-selection.js.es6 b/app/assets/javascripts/discourse/components/flag-selection.js.es6 index b52f544907..39548b045f 100644 --- a/app/assets/javascripts/discourse/components/flag-selection.js.es6 +++ b/app/assets/javascripts/discourse/components/flag-selection.js.es6 @@ -1,6 +1,6 @@ import { next } from "@ember/runloop"; import Component from "@ember/component"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; // Mostly hacks because `flag.hbs` didn't use `radio-button` export default Component.extend({ diff --git a/app/assets/javascripts/discourse/components/flat-button.js.es6 b/app/assets/javascripts/discourse/components/flat-button.js.es6 index 1348836907..af44422025 100644 --- a/app/assets/javascripts/discourse/components/flat-button.js.es6 +++ b/app/assets/javascripts/discourse/components/flat-button.js.es6 @@ -1,12 +1,12 @@ import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default Component.extend({ tagName: "button", classNames: ["btn-flat"], attributeBindings: ["disabled", "translatedTitle:title"], - @computed("title") + @discourseComputed("title") translatedTitle(title) { if (title) return I18n.t(title); }, diff --git a/app/assets/javascripts/discourse/components/footer-nav.js.es6 b/app/assets/javascripts/discourse/components/footer-nav.js.es6 index d94910364e..c4d412346e 100644 --- a/app/assets/javascripts/discourse/components/footer-nav.js.es6 +++ b/app/assets/javascripts/discourse/components/footer-nav.js.es6 @@ -2,7 +2,7 @@ import { throttle } from "@ember/runloop"; import MountWidget from "discourse/components/mount-widget"; import MobileScrollDirection from "discourse/mixins/mobile-scroll-direction"; import Scrolling from "discourse/mixins/scrolling"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import { isAppWebview, postRNWebviewMessage } from "discourse/lib/utilities"; const MOBILE_SCROLL_DIRECTION_CHECK_THROTTLE = 150; diff --git a/app/assets/javascripts/discourse/components/future-date-input.js.es6 b/app/assets/javascripts/discourse/components/future-date-input.js.es6 index 8746cfb0ef..05313f8ea0 100644 --- a/app/assets/javascripts/discourse/components/future-date-input.js.es6 +++ b/app/assets/javascripts/discourse/components/future-date-input.js.es6 @@ -2,9 +2,9 @@ import { isEmpty } from "@ember/utils"; import { equal, and, empty } from "@ember/object/computed"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { FORMAT } from "select-kit/components/future-date-input-selector"; import { PUBLISH_TO_CATEGORY_STATUS_TYPE } from "discourse/controllers/edit-topic-timer"; @@ -59,7 +59,7 @@ export default Component.extend({ this.set("basedOnLastPost", this.isBasedOnLastPost); }, - @computed("input", "isBasedOnLastPost") + @discourseComputed("input", "isBasedOnLastPost") duration(input, isBasedOnLastPost) { const now = moment(); @@ -70,7 +70,7 @@ export default Component.extend({ } }, - @computed("input", "isBasedOnLastPost") + @discourseComputed("input", "isBasedOnLastPost") executeAt(input, isBasedOnLastPost) { if (isBasedOnLastPost) { return moment() @@ -87,7 +87,7 @@ export default Component.extend({ if (this.label) this.set("displayLabel", I18n.t(this.label)); }, - @computed( + @discourseComputed( "statusType", "input", "isCustom", @@ -118,7 +118,7 @@ export default Component.extend({ } }, - @computed("isBasedOnLastPost", "input", "lastPostedAt") + @discourseComputed("isBasedOnLastPost", "input", "lastPostedAt") willCloseImmediately(isBasedOnLastPost, input, lastPostedAt) { if (isBasedOnLastPost && input) { let closeDate = moment(lastPostedAt); @@ -127,7 +127,7 @@ export default Component.extend({ } }, - @computed("isBasedOnLastPost", "lastPostedAt") + @discourseComputed("isBasedOnLastPost", "lastPostedAt") willCloseI18n(isBasedOnLastPost, lastPostedAt) { if (isBasedOnLastPost) { const diff = Math.round( diff --git a/app/assets/javascripts/discourse/components/global-notice.js.es6 b/app/assets/javascripts/discourse/components/global-notice.js.es6 index e16243f207..c7006016a6 100644 --- a/app/assets/javascripts/discourse/components/global-notice.js.es6 +++ b/app/assets/javascripts/discourse/components/global-notice.js.es6 @@ -1,6 +1,6 @@ import { bind } from "@ember/runloop"; import Component from "@ember/component"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import { iconHTML } from "discourse-common/lib/icon-library"; import LogsNotice from "discourse/services/logs-notice"; import { bufferedRender } from "discourse-common/lib/buffered-render"; diff --git a/app/assets/javascripts/discourse/components/google-search.js.es6 b/app/assets/javascripts/discourse/components/google-search.js.es6 index 246e7ab2a3..43db648e81 100644 --- a/app/assets/javascripts/discourse/components/google-search.js.es6 +++ b/app/assets/javascripts/discourse/components/google-search.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["google-search-form"], @@ -8,7 +8,7 @@ export default Component.extend({ hidden: alias("siteSettings.login_required"), - @computed + @discourseComputed siteUrl() { return `${location.protocol}//${location.host}${Discourse.getURL("/")}`; } diff --git a/app/assets/javascripts/discourse/components/group-card-contents.js.es6 b/app/assets/javascripts/discourse/components/group-card-contents.js.es6 index bd6d029e49..50ea8b9ab2 100644 --- a/app/assets/javascripts/discourse/components/group-card-contents.js.es6 +++ b/app/assets/javascripts/discourse/components/group-card-contents.js.es6 @@ -1,7 +1,7 @@ import { alias, match, gt, or } from "@ember/object/computed"; import Component from "@ember/component"; import { setting } from "discourse/lib/computed"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import CardContentsBase from "discourse/mixins/card-contents-base"; import CleansUp from "discourse/mixins/cleans-up"; import { groupPath } from "discourse/lib/url"; @@ -34,14 +34,14 @@ export default Component.extend(CardContentsBase, CleansUp, { group: null, - @computed("group.user_count", "group.members.length") + @discourseComputed("group.user_count", "group.members.length") moreMembersCount: (memberCount, maxMemberDisplay) => memberCount - maxMemberDisplay, - @computed("group.name") + @discourseComputed("group.name") groupClass: name => (name ? `group-card-${name}` : ""), - @computed("group") + @discourseComputed("group") groupPath(group) { return groupPath(group.name); }, diff --git a/app/assets/javascripts/discourse/components/group-flair-inputs.js.es6 b/app/assets/javascripts/discourse/components/group-flair-inputs.js.es6 index 7b2b7110a0..81b17bcb8d 100644 --- a/app/assets/javascripts/discourse/components/group-flair-inputs.js.es6 +++ b/app/assets/javascripts/discourse/components/group-flair-inputs.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { debounce } from "@ember/runloop"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import { escapeExpression } from "discourse/lib/utilities"; import { convertIconClass } from "discourse-common/lib/icon-library"; import { ajax } from "discourse/lib/ajax"; @@ -10,17 +10,17 @@ import { htmlSafe } from "@ember/template"; export default Component.extend({ classNames: ["group-flair-inputs"], - @computed + @discourseComputed demoAvatarUrl() { return Discourse.getURL("/images/avatar.png"); }, - @computed("model.flair_url") + @discourseComputed("model.flair_url") flairPreviewIcon(flairURL) { return flairURL && /fa(r|b?)-/.test(flairURL); }, - @computed("model.flair_url", "flairPreviewIcon") + @discourseComputed("model.flair_url", "flairPreviewIcon") flairPreviewIconUrl(flairURL, flairPreviewIcon) { return flairPreviewIcon ? convertIconClass(flairURL) : ""; }, @@ -49,12 +49,12 @@ export default Component.extend({ } }, - @computed("model.flair_url", "flairPreviewIcon") + @discourseComputed("model.flair_url", "flairPreviewIcon") flairPreviewImage(flairURL, flairPreviewIcon) { return flairURL && !flairPreviewIcon; }, - @computed( + @discourseComputed( "model.flair_url", "flairPreviewImage", "model.flairBackgroundHexColor", @@ -81,12 +81,12 @@ export default Component.extend({ return htmlSafe(style); }, - @computed("model.flairBackgroundHexColor") + @discourseComputed("model.flairBackgroundHexColor") flairPreviewClasses(flairBackgroundHexColor) { if (flairBackgroundHexColor) return "rounded"; }, - @computed("flairPreviewImage") + @discourseComputed("flairPreviewImage") flairPreviewLabel(flairPreviewImage) { const key = flairPreviewImage ? "image" : "icon"; return I18n.t(`groups.flair_preview_${key}`); diff --git a/app/assets/javascripts/discourse/components/group-manage-logs-filter.js.es6 b/app/assets/javascripts/discourse/components/group-manage-logs-filter.js.es6 index a6712bf498..98e0c16cdd 100644 --- a/app/assets/javascripts/discourse/components/group-manage-logs-filter.js.es6 +++ b/app/assets/javascripts/discourse/components/group-manage-logs-filter.js.es6 @@ -1,15 +1,15 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "", - @computed("type") + @discourseComputed("type") label(type) { return I18n.t(`groups.manage.logs.${type}`); }, - @computed("value", "type") + @discourseComputed("value", "type") filterText(value, type) { return type === "action" ? I18n.t(`group_histories.actions.${value}`) diff --git a/app/assets/javascripts/discourse/components/group-manage-save-button.js.es6 b/app/assets/javascripts/discourse/components/group-manage-save-button.js.es6 index 726bfede36..9adcf9ea82 100644 --- a/app/assets/javascripts/discourse/components/group-manage-save-button.js.es6 +++ b/app/assets/javascripts/discourse/components/group-manage-save-button.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ saving: null, - @computed("saving") + @discourseComputed("saving") savingText(saving) { if (saving) return I18n.t("saving"); return saving ? I18n.t("saving") : I18n.t("save"); diff --git a/app/assets/javascripts/discourse/components/group-member-dropdown.js.es6 b/app/assets/javascripts/discourse/components/group-member-dropdown.js.es6 index 5cb7099058..7a860c29de 100644 --- a/app/assets/javascripts/discourse/components/group-member-dropdown.js.es6 +++ b/app/assets/javascripts/discourse/components/group-member-dropdown.js.es6 @@ -1,4 +1,4 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; export default DropdownSelectBoxComponent.extend({ @@ -16,7 +16,7 @@ export default DropdownSelectBoxComponent.extend({ autoHighlight() {}, - @computed("member.owner") + @discourseComputed("member.owner") content(isOwner) { const items = [ { diff --git a/app/assets/javascripts/discourse/components/group-members-input.js.es6 b/app/assets/javascripts/discourse/components/group-members-input.js.es6 index e1f701f96c..aedb43f2a6 100644 --- a/app/assets/javascripts/discourse/components/group-members-input.js.es6 +++ b/app/assets/javascripts/discourse/components/group-members-input.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { lte } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { propertyEqual } from "discourse/lib/computed"; @@ -9,7 +9,7 @@ export default Component.extend({ classNames: ["group-members-input"], addButton: true, - @computed("model.limit", "model.offset", "model.user_count") + @discourseComputed("model.limit", "model.offset", "model.user_count") currentPage(limit, offset, userCount) { if (userCount === 0) { return 0; @@ -18,7 +18,7 @@ export default Component.extend({ return Math.floor(offset / limit) + 1; }, - @computed("model.limit", "model.user_count") + @discourseComputed("model.limit", "model.user_count") totalPages(limit, userCount) { if (userCount === 0) { return 0; @@ -26,7 +26,7 @@ export default Component.extend({ return Math.ceil(userCount / limit); }, - @computed("model.usernames") + @discourseComputed("model.usernames") disableAddButton(usernames) { return !usernames || !(usernames.length > 0); }, diff --git a/app/assets/javascripts/discourse/components/group-membership-button.js.es6 b/app/assets/javascripts/discourse/components/group-membership-button.js.es6 index 6b58c5370d..7c4abeda18 100644 --- a/app/assets/javascripts/discourse/components/group-membership-button.js.es6 +++ b/app/assets/javascripts/discourse/components/group-membership-button.js.es6 @@ -1,27 +1,27 @@ import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; import showModal from "discourse/lib/show-modal"; export default Component.extend({ classNames: ["group-membership-button"], - @computed("model.public_admission", "userIsGroupUser") + @discourseComputed("model.public_admission", "userIsGroupUser") canJoinGroup(publicAdmission, userIsGroupUser) { return publicAdmission && !userIsGroupUser; }, - @computed("model.public_exit", "userIsGroupUser") + @discourseComputed("model.public_exit", "userIsGroupUser") canLeaveGroup(publicExit, userIsGroupUser) { return publicExit && userIsGroupUser; }, - @computed("model.allow_membership_requests", "userIsGroupUser") + @discourseComputed("model.allow_membership_requests", "userIsGroupUser") canRequestMembership(allowMembershipRequests, userIsGroupUser) { return allowMembershipRequests && !userIsGroupUser; }, - @computed("model.is_group_user") + @discourseComputed("model.is_group_user") userIsGroupUser(isGroupUser) { return !!isGroupUser; }, diff --git a/app/assets/javascripts/discourse/components/group-post.js.es6 b/app/assets/javascripts/discourse/components/group-post.js.es6 index 5a3a096f49..34c83529ef 100644 --- a/app/assets/javascripts/discourse/components/group-post.js.es6 +++ b/app/assets/javascripts/discourse/components/group-post.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ - @computed("post.url") + @discourseComputed("post.url") postUrl: Discourse.getURL }); diff --git a/app/assets/javascripts/discourse/components/group-selector.js.es6 b/app/assets/javascripts/discourse/components/group-selector.js.es6 index 4d4b431888..54b789664b 100644 --- a/app/assets/javascripts/discourse/components/group-selector.js.es6 +++ b/app/assets/javascripts/discourse/components/group-selector.js.es6 @@ -3,12 +3,12 @@ import Component from "@ember/component"; import { on, observes, - default as computed -} from "ember-addons/ember-computed-decorators"; + default as discourseComputed +} from "discourse-common/utils/decorators"; import { findRawTemplate } from "discourse/lib/raw-templates"; export default Component.extend({ - @computed("placeholderKey") + @discourseComputed("placeholderKey") placeholder(placeholderKey) { return placeholderKey ? I18n.t(placeholderKey) : ""; }, diff --git a/app/assets/javascripts/discourse/components/groups-form-interaction-fields.js.es6 b/app/assets/javascripts/discourse/components/groups-form-interaction-fields.js.es6 index e4d1e6bb79..f3ba2d92a4 100644 --- a/app/assets/javascripts/discourse/components/groups-form-interaction-fields.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-form-interaction-fields.js.es6 @@ -1,5 +1,5 @@ import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default Component.extend({ init() { @@ -46,7 +46,11 @@ export default Component.extend({ ]; }, - @computed("siteSettings.email_in", "model.automatic", "currentUser.admin") + @discourseComputed( + "siteSettings.email_in", + "model.automatic", + "currentUser.admin" + ) showEmailSettings(emailIn, automatic, isAdmin) { return emailIn && isAdmin && !automatic; } diff --git a/app/assets/javascripts/discourse/components/groups-form-membership-fields.js.es6 b/app/assets/javascripts/discourse/components/groups-form-membership-fields.js.es6 index 1115786b08..1b5be47e6a 100644 --- a/app/assets/javascripts/discourse/components/groups-form-membership-fields.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-form-membership-fields.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ init() { @@ -17,13 +17,16 @@ export default Component.extend({ ]; }, - @computed("model.visibility_level", "model.public_admission") + @discourseComputed("model.visibility_level", "model.public_admission") disableMembershipRequestSetting(visibility_level, publicAdmission) { visibility_level = parseInt(visibility_level); return publicAdmission || visibility_level > 1; }, - @computed("model.visibility_level", "model.allow_membership_requests") + @discourseComputed( + "model.visibility_level", + "model.allow_membership_requests" + ) disablePublicSetting(visibility_level, allowMembershipRequests) { visibility_level = parseInt(visibility_level); return allowMembershipRequests || visibility_level > 1; diff --git a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 index 98eabcea3f..082cfcc584 100644 --- a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 @@ -2,9 +2,9 @@ import { isEmpty } from "@ember/utils"; import { not } from "@ember/object/computed"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import Group from "discourse/models/group"; import InputValidation from "discourse/models/input-validation"; import debounce from "discourse/lib/debounce"; @@ -26,7 +26,7 @@ export default Component.extend({ canEdit: not("model.automatic"), - @computed("basicNameValidation", "uniqueNameValidation") + @discourseComputed("basicNameValidation", "uniqueNameValidation") nameValidation(basicNameValidation, uniqueNameValidation) { return uniqueNameValidation ? uniqueNameValidation : basicNameValidation; }, diff --git a/app/assets/javascripts/discourse/components/groups-info.js.es6 b/app/assets/javascripts/discourse/components/groups-info.js.es6 index cf439ef7d0..336e826b80 100644 --- a/app/assets/javascripts/discourse/components/groups-info.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-info.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "span", classNames: ["group-info-details"], - @computed("group.full_name", "group.title") + @discourseComputed("group.full_name", "group.title") showFullName(fullName, title) { return fullName && fullName.length && fullName !== title; } diff --git a/app/assets/javascripts/discourse/components/honeypot-input.js.es6 b/app/assets/javascripts/discourse/components/honeypot-input.js.es6 index 06895b0586..8231303da5 100644 --- a/app/assets/javascripts/discourse/components/honeypot-input.js.es6 +++ b/app/assets/javascripts/discourse/components/honeypot-input.js.es6 @@ -1,4 +1,4 @@ -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; export default Ember.TextField.extend({ @on("init") diff --git a/app/assets/javascripts/discourse/components/image-uploader.js.es6 b/app/assets/javascripts/discourse/components/image-uploader.js.es6 index 514a985223..6db47602ad 100644 --- a/app/assets/javascripts/discourse/components/image-uploader.js.es6 +++ b/app/assets/javascripts/discourse/components/image-uploader.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { next } from "@ember/runloop"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import UploadMixin from "discourse/mixins/upload"; import lightbox from "discourse/lib/lightbox"; import { ajax } from "discourse/lib/ajax"; @@ -24,12 +24,12 @@ export default Component.extend(UploadMixin, { } }, - @computed("imageUrl", "placeholderUrl") + @discourseComputed("imageUrl", "placeholderUrl") showingPlaceholder(imageUrl, placeholderUrl) { return !imageUrl && placeholderUrl; }, - @computed("placeholderUrl") + @discourseComputed("placeholderUrl") placeholderStyle(url) { if (isEmpty(url)) { return "".htmlSafe(); @@ -37,7 +37,7 @@ export default Component.extend(UploadMixin, { return `background-image: url(${url})`.htmlSafe(); }, - @computed("imageUrl") + @discourseComputed("imageUrl") imageCDNURL(url) { if (isEmpty(url)) { return "".htmlSafe(); @@ -46,12 +46,12 @@ export default Component.extend(UploadMixin, { return Discourse.getURLWithCDN(url); }, - @computed("imageCDNURL") + @discourseComputed("imageCDNURL") backgroundStyle(url) { return `background-image: url(${url})`.htmlSafe(); }, - @computed("imageUrl") + @discourseComputed("imageUrl") imageBaseName(imageUrl) { if (isEmpty(imageUrl)) return; return imageUrl.split("/").slice(-1)[0]; diff --git a/app/assets/javascripts/discourse/components/images-uploader.js.es6 b/app/assets/javascripts/discourse/components/images-uploader.js.es6 index d3a9d6c3b7..4e68324b0c 100644 --- a/app/assets/javascripts/discourse/components/images-uploader.js.es6 +++ b/app/assets/javascripts/discourse/components/images-uploader.js.es6 @@ -1,12 +1,12 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import UploadMixin from "discourse/mixins/upload"; export default Component.extend(UploadMixin, { type: "avatar", tagName: "span", - @computed("uploading") + @discourseComputed("uploading") uploadButtonText(uploading) { return uploading ? I18n.t("uploading") : I18n.t("upload"); }, diff --git a/app/assets/javascripts/discourse/components/invite-panel.js.es6 b/app/assets/javascripts/discourse/components/invite-panel.js.es6 index b1743d4f99..8056a92dcd 100644 --- a/app/assets/javascripts/discourse/components/invite-panel.js.es6 +++ b/app/assets/javascripts/discourse/components/invite-panel.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { alias, and, equal } from "@ember/object/computed"; import EmberObject from "@ember/object"; import Component from "@ember/component"; import { emailValid } from "discourse/lib/utilities"; -import computed from "ember-addons/ember-computed-decorators"; import Group from "discourse/models/group"; import Invite from "discourse/models/invite"; import { i18n } from "discourse/lib/computed"; @@ -30,7 +30,7 @@ export default Component.extend({ this.reset(); }, - @computed( + @discourseComputed( "isAdmin", "emailOrUsername", "invitingToTopic", @@ -73,7 +73,7 @@ export default Component.extend({ return false; }, - @computed( + @discourseComputed( "isAdmin", "emailOrUsername", "inviteModel.saving", @@ -113,24 +113,24 @@ export default Component.extend({ return false; }, - @computed("inviteModel.saving") + @discourseComputed("inviteModel.saving") buttonTitle(saving) { return saving ? "topic.inviting" : "topic.invite_reply.action"; }, // We are inviting to a topic if the topic isn't the current user. // The current user would mean we are inviting to the forum in general. - @computed("inviteModel") + @discourseComputed("inviteModel") invitingToTopic(inviteModel) { return inviteModel !== this.currentUser; }, - @computed("inviteModel", "inviteModel.details.can_invite_via_email") + @discourseComputed("inviteModel", "inviteModel.details.can_invite_via_email") canInviteViaEmail(inviteModel, canInviteViaEmail) { return this.inviteModel === this.currentUser ? true : canInviteViaEmail; }, - @computed("isPM", "canInviteViaEmail") + @discourseComputed("isPM", "canInviteViaEmail") showCopyInviteButton(isPM, canInviteViaEmail) { return canInviteViaEmail && !isPM; }, @@ -148,7 +148,7 @@ export default Component.extend({ // scope to allowed usernames allowExistingMembers: alias("invitingToTopic"), - @computed("isAdmin", "inviteModel.group_users") + @discourseComputed("isAdmin", "inviteModel.group_users") isGroupOwnerOrAdmin(isAdmin, groupUsers) { return ( isAdmin || (groupUsers && groupUsers.some(groupUser => groupUser.owner)) @@ -156,7 +156,7 @@ export default Component.extend({ }, // Show Groups? (add invited user to private group) - @computed( + @discourseComputed( "isGroupOwnerOrAdmin", "emailOrUsername", "isPrivateTopic", @@ -180,13 +180,13 @@ export default Component.extend({ ); }, - @computed("emailOrUsername") + @discourseComputed("emailOrUsername") showCustomMessage(emailOrUsername) { return this.inviteModel === this.currentUser || emailValid(emailOrUsername); }, // Instructional text for the modal. - @computed( + @discourseComputed( "isPM", "invitingToTopic", "emailOrUsername", @@ -231,7 +231,7 @@ export default Component.extend({ } }, - @computed("isPrivateTopic") + @discourseComputed("isPrivateTopic") showGroupsClass(isPrivateTopic) { return isPrivateTopic ? "required" : "optional"; }, @@ -240,7 +240,7 @@ export default Component.extend({ return Group.findAll({ term, ignore_automatic: true }); }, - @computed("isPM", "emailOrUsername", "invitingExistingUserToTopic") + @discourseComputed("isPM", "emailOrUsername", "invitingExistingUserToTopic") successMessage(isPM, emailOrUsername, invitingExistingUserToTopic) { if (this.hasGroups) { return I18n.t("topic.invite_private.success_group"); @@ -257,14 +257,14 @@ export default Component.extend({ } }, - @computed("isPM") + @discourseComputed("isPM") errorMessage(isPM) { return isPM ? I18n.t("topic.invite_private.error") : I18n.t("topic.invite_reply.error"); }, - @computed("canInviteViaEmail") + @discourseComputed("canInviteViaEmail") placeholderKey(canInviteViaEmail) { return canInviteViaEmail ? "topic.invite_private.email_or_username_placeholder" diff --git a/app/assets/javascripts/discourse/components/login-buttons.js.es6 b/app/assets/javascripts/discourse/components/login-buttons.js.es6 index a5a0967411..1073dd3ec0 100644 --- a/app/assets/javascripts/discourse/components/login-buttons.js.es6 +++ b/app/assets/javascripts/discourse/components/login-buttons.js.es6 @@ -1,17 +1,17 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { findAll } from "discourse/models/login-method"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ elementId: "login-buttons", classNameBindings: ["hidden"], - @computed("buttons.length", "showLoginWithEmailLink") + @discourseComputed("buttons.length", "showLoginWithEmailLink") hidden(buttonsCount, showLoginWithEmailLink) { return buttonsCount === 0 && !showLoginWithEmailLink; }, - @computed + @discourseComputed buttons() { return findAll(); }, diff --git a/app/assets/javascripts/discourse/components/mobile-nav.js.es6 b/app/assets/javascripts/discourse/components/mobile-nav.js.es6 index a47c09c5c4..02d35f53d3 100644 --- a/app/assets/javascripts/discourse/components/mobile-nav.js.es6 +++ b/app/assets/javascripts/discourse/components/mobile-nav.js.es6 @@ -1,6 +1,6 @@ import { next } from "@ember/runloop"; import Component from "@ember/component"; -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; export default Component.extend({ @on("init") diff --git a/app/assets/javascripts/discourse/components/nav-item.js.es6 b/app/assets/javascripts/discourse/components/nav-item.js.es6 index d648e892d3..7358e2ded6 100644 --- a/app/assets/javascripts/discourse/components/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/components/nav-item.js.es6 @@ -1,15 +1,15 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject as service } from "@ember/service"; import Component from "@ember/component"; /* You might be looking for navigation-item. */ import { iconHTML } from "discourse-common/lib/icon-library"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "li", classNameBindings: ["active"], router: service(), - @computed("label", "i18nLabel", "icon") + @discourseComputed("label", "i18nLabel", "icon") contents(label, i18nLabel, icon) { let text = i18nLabel || I18n.t(label); if (icon) { @@ -18,7 +18,7 @@ export default Component.extend({ return text; }, - @computed("route", "router.currentRoute") + @discourseComputed("route", "router.currentRoute") active(route, currentRoute) { if (!route) { return; diff --git a/app/assets/javascripts/discourse/components/navigation-bar.js.es6 b/app/assets/javascripts/discourse/components/navigation-bar.js.es6 index eb8cb454b3..6f262ce05c 100644 --- a/app/assets/javascripts/discourse/components/navigation-bar.js.es6 +++ b/app/assets/javascripts/discourse/components/navigation-bar.js.es6 @@ -1,9 +1,9 @@ import { next } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import DiscourseURL from "discourse/lib/url"; import { renderedConnectorsFor } from "discourse/lib/plugin-connectors"; @@ -17,7 +17,7 @@ export default Component.extend({ this.set("connectors", renderedConnectorsFor("extra-nav-item", null, this)); }, - @computed("filterMode", "navItems") + @discourseComputed("filterMode", "navItems") selectedNavItem(filterMode, navItems) { if (filterMode.indexOf("top/") === 0) { filterMode = "top"; diff --git a/app/assets/javascripts/discourse/components/navigation-item.js.es6 b/app/assets/javascripts/discourse/components/navigation-item.js.es6 index 6d55112a94..98742db3d4 100644 --- a/app/assets/javascripts/discourse/components/navigation-item.js.es6 +++ b/app/assets/javascripts/discourse/components/navigation-item.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { bufferedRender } from "discourse-common/lib/buffered-render"; export default Component.extend( @@ -15,7 +15,7 @@ export default Component.extend( hidden: false, rerenderTriggers: ["content.count"], - @computed("content.filterMode", "filterMode", "content.active") + @discourseComputed("content.filterMode", "filterMode", "content.active") active(contentFilterMode, filterMode, active) { if (active !== undefined) { return active; diff --git a/app/assets/javascripts/discourse/components/notification-consent-banner.js.es6 b/app/assets/javascripts/discourse/components/notification-consent-banner.js.es6 index 8d20705f04..1ffb99c0c2 100644 --- a/app/assets/javascripts/discourse/components/notification-consent-banner.js.es6 +++ b/app/assets/javascripts/discourse/components/notification-consent-banner.js.es6 @@ -1,13 +1,11 @@ -import { default as computed } from "ember-addons/ember-computed-decorators"; - +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { keyValueStore as pushNotificationKeyValueStore } from "discourse/lib/push-notifications"; - import { default as DesktopNotificationConfig } from "discourse/components/desktop-notification-config"; const userDismissedPromptKey = "dismissed-prompt"; export default DesktopNotificationConfig.extend({ - @computed + @discourseComputed bannerDismissed: { set(value) { pushNotificationKeyValueStore.setItem(userDismissedPromptKey, value); @@ -18,7 +16,7 @@ export default DesktopNotificationConfig.extend({ } }, - @computed( + @discourseComputed( "isNotSupported", "isEnabled", "bannerDismissed", diff --git a/app/assets/javascripts/discourse/components/number-field.js.es6 b/app/assets/javascripts/discourse/components/number-field.js.es6 index 1399de713e..9de92f0afe 100644 --- a/app/assets/javascripts/discourse/components/number-field.js.es6 +++ b/app/assets/javascripts/discourse/components/number-field.js.es6 @@ -1,9 +1,9 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default Ember.TextField.extend({ classNameBindings: ["invalid"], - @computed("number") + @discourseComputed("number") value: { get(number) { return parseInt(number); @@ -21,7 +21,7 @@ export default Ember.TextField.extend({ } }, - @computed("placeholderKey") + @discourseComputed("placeholderKey") placeholder(key) { return key ? I18n.t(key) : ""; } diff --git a/app/assets/javascripts/discourse/components/plugin-connector.js.es6 b/app/assets/javascripts/discourse/components/plugin-connector.js.es6 index 715cb62965..a844ebbf9d 100644 --- a/app/assets/javascripts/discourse/components/plugin-connector.js.es6 +++ b/app/assets/javascripts/discourse/components/plugin-connector.js.es6 @@ -1,5 +1,5 @@ import Component from "@ember/component"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; export default Component.extend({ init() { diff --git a/app/assets/javascripts/discourse/components/popup-input-tip.js.es6 b/app/assets/javascripts/discourse/components/popup-input-tip.js.es6 index 38930d57e4..3f3c3d514b 100644 --- a/app/assets/javascripts/discourse/components/popup-input-tip.js.es6 +++ b/app/assets/javascripts/discourse/components/popup-input-tip.js.es6 @@ -2,9 +2,9 @@ import { alias, not } from "@ember/object/computed"; import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { bufferedRender } from "discourse-common/lib/buffered-render"; export default Component.extend( @@ -23,7 +23,7 @@ export default Component.extend( bad: alias("validation.failed"), good: not("bad"), - @computed("shownAt", "validation.lastShownAt") + @discourseComputed("shownAt", "validation.lastShownAt") lastShownAt(shownAt, lastShownAt) { return shownAt || lastShownAt; }, diff --git a/app/assets/javascripts/discourse/components/preference-checkbox.js.es6 b/app/assets/javascripts/discourse/components/preference-checkbox.js.es6 index 7ae299f5de..83ad27853f 100644 --- a/app/assets/javascripts/discourse/components/preference-checkbox.js.es6 +++ b/app/assets/javascripts/discourse/components/preference-checkbox.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["controls"], - @computed("labelKey") + @discourseComputed("labelKey") label(labelKey) { return I18n.t(labelKey); }, diff --git a/app/assets/javascripts/discourse/components/pwa-install-banner.js.es6 b/app/assets/javascripts/discourse/components/pwa-install-banner.js.es6 index e2e60f3d88..cb11ef38b7 100644 --- a/app/assets/javascripts/discourse/components/pwa-install-banner.js.es6 +++ b/app/assets/javascripts/discourse/components/pwa-install-banner.js.es6 @@ -1,9 +1,9 @@ import { bind } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; const USER_DISMISSED_PROMPT_KEY = "dismissed-pwa-install-banner"; @@ -28,7 +28,7 @@ export default Component.extend({ window.removeEventListener("beforeinstallprompt", this._promptEventHandler); }, - @computed + @discourseComputed bannerDismissed: { set(value) { this.keyValueStore.set({ key: USER_DISMISSED_PROMPT_KEY, value }); @@ -39,7 +39,7 @@ export default Component.extend({ } }, - @computed("deferredInstallPromptEvent", "bannerDismissed") + @discourseComputed("deferredInstallPromptEvent", "bannerDismissed") showPWAInstallBanner() { const launchedFromDiscourseHub = window.location.search.indexOf("discourse_app=1") !== -1; diff --git a/app/assets/javascripts/discourse/components/radio-button.js.es6 b/app/assets/javascripts/discourse/components/radio-button.js.es6 index b6d44b4a99..1094aca2c7 100644 --- a/app/assets/javascripts/discourse/components/radio-button.js.es6 +++ b/app/assets/javascripts/discourse/components/radio-button.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "input", @@ -25,7 +25,7 @@ export default Component.extend({ } }, - @computed("value", "selection") + @discourseComputed("value", "selection") checked(value, selection) { return value === selection; } diff --git a/app/assets/javascripts/discourse/components/related-messages.js.es6 b/app/assets/javascripts/discourse/components/related-messages.js.es6 index bf95279941..5fec6f28ba 100644 --- a/app/assets/javascripts/discourse/components/related-messages.js.es6 +++ b/app/assets/javascripts/discourse/components/related-messages.js.es6 @@ -1,12 +1,12 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { iconHTML } from "discourse-common/lib/icon-library"; export default Component.extend({ elementId: "related-messages", classNames: ["suggested-topics"], - @computed("topic") + @discourseComputed("topic") targetUser(topic) { if (!topic || !topic.isPrivateMessage) { return; @@ -23,14 +23,14 @@ export default Component.extend({ } }, - @computed + @discourseComputed searchLink() { return Discourse.getURL( `/search?expanded=true&q=%40${this.targetUser.username}%20in%3Apersonal-direct` ); }, - @computed("topic") + @discourseComputed("topic") relatedTitle(topic) { const href = this.currentUser && this.currentUser.pmPath(topic); return href diff --git a/app/assets/javascripts/discourse/components/reviewable-claimed-topic.js.es6 b/app/assets/javascripts/discourse/components/reviewable-claimed-topic.js.es6 index 0583a4605f..273b51afa7 100644 --- a/app/assets/javascripts/discourse/components/reviewable-claimed-topic.js.es6 +++ b/app/assets/javascripts/discourse/components/reviewable-claimed-topic.js.es6 @@ -1,12 +1,12 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { ajax } from "discourse/lib/ajax"; export default Component.extend({ tagName: "", - @computed + @discourseComputed enabled() { return this.siteSettings.reviewable_claiming !== "disabled"; }, diff --git a/app/assets/javascripts/discourse/components/reviewable-flagged-post.js.es6 b/app/assets/javascripts/discourse/components/reviewable-flagged-post.js.es6 index 58c48d1bbf..d432beece9 100644 --- a/app/assets/javascripts/discourse/components/reviewable-flagged-post.js.es6 +++ b/app/assets/javascripts/discourse/components/reviewable-flagged-post.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { gt } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { longDate } from "discourse/lib/formatter"; import { historyHeat } from "discourse/widgets/post-edits-indicator"; import showModal from "discourse/lib/show-modal"; @@ -8,12 +8,12 @@ import showModal from "discourse/lib/show-modal"; export default Component.extend({ hasEdits: gt("reviewable.post_version", 1), - @computed("reviewable.post_updated_at") + @discourseComputed("reviewable.post_updated_at") historyClass(updatedAt) { return historyHeat(this.siteSettings, new Date(updatedAt)); }, - @computed("reviewable.post_updated_at") + @discourseComputed("reviewable.post_updated_at") editedDate(updatedAt) { return longDate(updatedAt); }, diff --git a/app/assets/javascripts/discourse/components/reviewable-item.js.es6 b/app/assets/javascripts/discourse/components/reviewable-item.js.es6 index c5aaba8b7b..ef6626ebec 100644 --- a/app/assets/javascripts/discourse/components/reviewable-item.js.es6 +++ b/app/assets/javascripts/discourse/components/reviewable-item.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; import Category from "discourse/models/category"; import optionalService from "discourse/lib/optional-service"; import showModal from "discourse/lib/show-modal"; @@ -17,17 +17,17 @@ export default Component.extend({ editing: false, _updates: null, - @computed("reviewable.type") + @discourseComputed("reviewable.type") customClass(type) { return type.dasherize(); }, - @computed("siteSettings.reviewable_claiming", "reviewable.topic") + @discourseComputed("siteSettings.reviewable_claiming", "reviewable.topic") claimEnabled(claimMode, topic) { return claimMode !== "disabled" && !!topic; }, - @computed( + @discourseComputed( "claimEnabled", "siteSettings.reviewable_claiming", "reviewable.claimed_by" @@ -44,7 +44,10 @@ export default Component.extend({ return claimMode !== "required"; }, - @computed("siteSettings.reviewable_claiming", "reviewable.claimed_by") + @discourseComputed( + "siteSettings.reviewable_claiming", + "reviewable.claimed_by" + ) claimHelp(claimMode, claimedBy) { if (claimedBy) { return claimedBy.id === this.currentUser.id @@ -61,7 +64,7 @@ export default Component.extend({ // Find a component to render, if one exists. For example: // `ReviewableUser` will return `reviewable-user` - @computed("reviewable.type") + @discourseComputed("reviewable.type") reviewableComponent(type) { if (_components[type] !== undefined) { return _components[type]; diff --git a/app/assets/javascripts/discourse/components/reviewable-user.js.es6 b/app/assets/javascripts/discourse/components/reviewable-user.js.es6 index ec065a0bde..3dd3043371 100644 --- a/app/assets/javascripts/discourse/components/reviewable-user.js.es6 +++ b/app/assets/javascripts/discourse/components/reviewable-user.js.es6 @@ -1,8 +1,8 @@ import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default Component.extend({ - @computed("reviewable.user_fields") + @discourseComputed("reviewable.user_fields") userFields(fields) { return this.site.collectUserFields(fields); } diff --git a/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 b/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 index 8f1779487d..42e85897ea 100644 --- a/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 +++ b/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 @@ -1,7 +1,7 @@ import { debounce } from "@ember/runloop"; import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import { escapeExpression } from "discourse/lib/utilities"; import Group from "discourse/models/group"; import Badge from "discourse/models/badge"; diff --git a/app/assets/javascripts/discourse/components/search-text-field.js.es6 b/app/assets/javascripts/discourse/components/search-text-field.js.es6 index 349918e22e..fc6ca86c08 100644 --- a/app/assets/javascripts/discourse/components/search-text-field.js.es6 +++ b/app/assets/javascripts/discourse/components/search-text-field.js.es6 @@ -1,12 +1,12 @@ -import computed from "ember-addons/ember-computed-decorators"; -import { on } from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; +import { on } from "discourse-common/utils/decorators"; import TextField from "discourse/components/text-field"; import { applySearchAutocomplete } from "discourse/lib/search"; export default TextField.extend({ autocomplete: "discourse", - @computed("searchService.searchContextEnabled") + @discourseComputed("searchService.searchContextEnabled") placeholder(searchContextEnabled) { return searchContextEnabled ? "" : I18n.t("search.full_page_title"); }, diff --git a/app/assets/javascripts/discourse/components/second-factor-form.js.es6 b/app/assets/javascripts/discourse/components/second-factor-form.js.es6 index ce332c23b1..47bd68a487 100644 --- a/app/assets/javascripts/discourse/components/second-factor-form.js.es6 +++ b/app/assets/javascripts/discourse/components/second-factor-form.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { SECOND_FACTOR_METHODS } from "discourse/models/user"; export default Component.extend({ - @computed("secondFactorMethod") + @discourseComputed("secondFactorMethod") secondFactorTitle(secondFactorMethod) { switch (secondFactorMethod) { case SECOND_FACTOR_METHODS.TOTP: @@ -15,7 +15,7 @@ export default Component.extend({ } }, - @computed("secondFactorMethod") + @discourseComputed("secondFactorMethod") secondFactorDescription(secondFactorMethod) { switch (secondFactorMethod) { case SECOND_FACTOR_METHODS.TOTP: @@ -27,7 +27,7 @@ export default Component.extend({ } }, - @computed("secondFactorMethod", "isLogin") + @discourseComputed("secondFactorMethod", "isLogin") linkText(secondFactorMethod, isLogin) { if (isLogin) { return secondFactorMethod === SECOND_FACTOR_METHODS.TOTP @@ -40,7 +40,7 @@ export default Component.extend({ } }, - @computed("backupEnabled", "secondFactorMethod") + @discourseComputed("backupEnabled", "secondFactorMethod") showToggleMethodLink(backupEnabled, secondFactorMethod) { return ( backupEnabled && secondFactorMethod !== SECOND_FACTOR_METHODS.SECURITY_KEY diff --git a/app/assets/javascripts/discourse/components/second-factor-input.js.es6 b/app/assets/javascripts/discourse/components/second-factor-input.js.es6 index 97ce1a4fa7..45ed1f4b9e 100644 --- a/app/assets/javascripts/discourse/components/second-factor-input.js.es6 +++ b/app/assets/javascripts/discourse/components/second-factor-input.js.es6 @@ -1,22 +1,22 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { SECOND_FACTOR_METHODS } from "discourse/models/user"; export default Component.extend({ - @computed("secondFactorMethod") + @discourseComputed("secondFactorMethod") type(secondFactorMethod) { if (secondFactorMethod === SECOND_FACTOR_METHODS.TOTP) return "tel"; if (secondFactorMethod === SECOND_FACTOR_METHODS.BACKUP_CODE) return "text"; }, - @computed("secondFactorMethod") + @discourseComputed("secondFactorMethod") pattern(secondFactorMethod) { if (secondFactorMethod === SECOND_FACTOR_METHODS.TOTP) return "[0-9]{6}"; if (secondFactorMethod === SECOND_FACTOR_METHODS.BACKUP_CODE) return "[a-z0-9]{16}"; }, - @computed("secondFactorMethod") + @discourseComputed("secondFactorMethod") maxlength(secondFactorMethod) { if (secondFactorMethod === SECOND_FACTOR_METHODS.TOTP) return "6"; if (secondFactorMethod === SECOND_FACTOR_METHODS.BACKUP_CODE) return "16"; diff --git a/app/assets/javascripts/discourse/components/share-panel.js.es6 b/app/assets/javascripts/discourse/components/share-panel.js.es6 index 3a7b94b645..97e09c225e 100644 --- a/app/assets/javascripts/discourse/components/share-panel.js.es6 +++ b/app/assets/javascripts/discourse/components/share-panel.js.es6 @@ -3,7 +3,7 @@ import { alias } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import { escapeExpression } from "discourse/lib/utilities"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import Sharing from "discourse/lib/sharing"; export default Component.extend({ @@ -13,18 +13,18 @@ export default Component.extend({ topic: alias("panel.model.topic"), - @computed + @discourseComputed sources() { return Sharing.activeSources(this.siteSettings.share_links); }, - @computed("type", "topic.title") + @discourseComputed("type", "topic.title") shareTitle(type, topicTitle) { topicTitle = escapeExpression(topicTitle); return I18n.t("share.topic_html", { topicTitle }); }, - @computed("panel.model.shareUrl", "topic.shareUrl") + @discourseComputed("panel.model.shareUrl", "topic.shareUrl") shareUrl(forcedShareUrl, shareUrl) { shareUrl = forcedShareUrl || shareUrl; diff --git a/app/assets/javascripts/discourse/components/share-popup.js.es6 b/app/assets/javascripts/discourse/components/share-popup.js.es6 index 4f9d0b9792..c2174068bd 100644 --- a/app/assets/javascripts/discourse/components/share-popup.js.es6 +++ b/app/assets/javascripts/discourse/components/share-popup.js.es6 @@ -5,9 +5,9 @@ import Component from "@ember/component"; import { wantsNewWindow } from "discourse/lib/intercept-click"; import { longDateNoYear } from "discourse/lib/formatter"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import Sharing from "discourse/lib/sharing"; import { nativeShare } from "discourse/lib/pwa-utils"; @@ -17,12 +17,12 @@ export default Component.extend({ link: null, visible: null, - @computed + @discourseComputed sources() { return Sharing.activeSources(this.siteSettings.share_links); }, - @computed("type", "postNumber") + @discourseComputed("type", "postNumber") shareTitle(type, postNumber) { if (type === "topic") { return I18n.t("share.topic"); @@ -33,7 +33,7 @@ export default Component.extend({ return I18n.t("share.topic"); }, - @computed("date") + @discourseComputed("date") displayDate(date) { return longDateNoYear(new Date(date)); }, diff --git a/app/assets/javascripts/discourse/components/shared-draft-controls.js.es6 b/app/assets/javascripts/discourse/components/shared-draft-controls.js.es6 index b408ee87a1..0b988e75cf 100644 --- a/app/assets/javascripts/discourse/components/shared-draft-controls.js.es6 +++ b/app/assets/javascripts/discourse/components/shared-draft-controls.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "", publishing: false, - @computed("topic.destination_category_id") + @discourseComputed("topic.destination_category_id") validCategory(destCatId) { return destCatId && destCatId !== this.site.shared_drafts_category_id; }, diff --git a/app/assets/javascripts/discourse/components/site-header.js.es6 b/app/assets/javascripts/discourse/components/site-header.js.es6 index b7b82071c1..9bdd8f0d8b 100644 --- a/app/assets/javascripts/discourse/components/site-header.js.es6 +++ b/app/assets/javascripts/discourse/components/site-header.js.es6 @@ -2,7 +2,7 @@ import { cancel } from "@ember/runloop"; import { schedule } from "@ember/runloop"; import { later } from "@ember/runloop"; import MountWidget from "discourse/components/mount-widget"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import Docking from "discourse/mixins/docking"; import PanEvents, { SWIPE_VELOCITY, diff --git a/app/assets/javascripts/discourse/components/suggested-topics.js.es6 b/app/assets/javascripts/discourse/components/suggested-topics.js.es6 index 11b6cbf20d..8351aa984b 100644 --- a/app/assets/javascripts/discourse/components/suggested-topics.js.es6 +++ b/app/assets/javascripts/discourse/components/suggested-topics.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { get } from "@ember/object"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; import { iconHTML } from "discourse-common/lib/icon-library"; @@ -8,7 +8,7 @@ export default Component.extend({ elementId: "suggested-topics", classNames: ["suggested-topics"], - @computed("topic") + @discourseComputed("topic") suggestedTitle(topic) { const href = this.currentUser && this.currentUser.pmPath(topic); return topic.get("isPrivateMessage") && href @@ -20,7 +20,7 @@ export default Component.extend({ : I18n.t("suggested_topics.title"); }, - @computed("topic", "topicTrackingState.messageCount") + @discourseComputed("topic", "topicTrackingState.messageCount") browseMoreMessage(topic) { // TODO decide what to show for pms if (topic.get("isPrivateMessage")) { diff --git a/app/assets/javascripts/discourse/components/tag-drop-link.js.es6 b/app/assets/javascripts/discourse/components/tag-drop-link.js.es6 index 73d20d7922..e8cfada41a 100644 --- a/app/assets/javascripts/discourse/components/tag-drop-link.js.es6 +++ b/app/assets/javascripts/discourse/components/tag-drop-link.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import DiscourseURL from "discourse/lib/url"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "a", @@ -12,7 +12,7 @@ export default Component.extend({ ], attributeBindings: ["href"], - @computed("tagId", "category") + @discourseComputed("tagId", "category") href(tagId, category) { var url = "/tags"; if (category) { @@ -21,7 +21,7 @@ export default Component.extend({ return url + "/" + tagId; }, - @computed("tagId") + @discourseComputed("tagId") tagClass(tagId) { return "tag-" + tagId; }, diff --git a/app/assets/javascripts/discourse/components/tag-groups-form.js.es6 b/app/assets/javascripts/discourse/components/tag-groups-form.js.es6 index 2dddb086e8..b77220cd08 100644 --- a/app/assets/javascripts/discourse/components/tag-groups-form.js.es6 +++ b/app/assets/javascripts/discourse/components/tag-groups-form.js.es6 @@ -1,13 +1,13 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { bufferedProperty } from "discourse/mixins/buffered-content"; import PermissionType from "discourse/models/permission-type"; export default Component.extend(bufferedProperty("model"), { tagName: "", - @computed("buffered.isSaving", "buffered.name", "buffered.tag_names") + @discourseComputed("buffered.isSaving", "buffered.name", "buffered.tag_names") savingDisabled(isSaving, name, tagNames) { return isSaving || isEmpty(name) || isEmpty(tagNames); }, diff --git a/app/assets/javascripts/discourse/components/tag-list.js.es6 b/app/assets/javascripts/discourse/components/tag-list.js.es6 index 551b70c93d..ee6de7fa3a 100644 --- a/app/assets/javascripts/discourse/components/tag-list.js.es6 +++ b/app/assets/javascripts/discourse/components/tag-list.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { sort } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNameBindings: [":tag-list", "categoryClass", "tagGroupNameClass"], @@ -8,22 +8,22 @@ export default Component.extend({ isPrivateMessage: false, sortedTags: sort("tags", "sortProperties"), - @computed("titleKey") + @discourseComputed("titleKey") title(titleKey) { return titleKey && I18n.t(titleKey); }, - @computed("categoryId") + @discourseComputed("categoryId") category(categoryId) { return categoryId && Discourse.Category.findById(categoryId); }, - @computed("category.fullSlug") + @discourseComputed("category.fullSlug") categoryClass(slug) { return slug && `tag-list-${slug}`; }, - @computed("tagGroupName") + @discourseComputed("tagGroupName") tagGroupNameClass(groupName) { if (groupName) { groupName = groupName diff --git a/app/assets/javascripts/discourse/components/text-field.js.es6 b/app/assets/javascripts/discourse/components/text-field.js.es6 index eca66af1d3..1978cd0ab2 100644 --- a/app/assets/javascripts/discourse/components/text-field.js.es6 +++ b/app/assets/javascripts/discourse/components/text-field.js.es6 @@ -1,4 +1,4 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { siteDir, isRTL, isLTR } from "discourse/lib/text-direction"; export default Ember.TextField.extend({ @@ -10,7 +10,7 @@ export default Ember.TextField.extend({ "dir" ], - @computed + @discourseComputed dir() { if (this.siteSettings.support_mixed_text_direction) { let val = this.value; @@ -37,7 +37,7 @@ export default Ember.TextField.extend({ } }, - @computed("placeholderKey") + @discourseComputed("placeholderKey") placeholder: { get() { if (this._placeholder) return this._placeholder; diff --git a/app/assets/javascripts/discourse/components/top-period-buttons.js.es6 b/app/assets/javascripts/discourse/components/top-period-buttons.js.es6 index 9c01cf1a1d..0eaf69a992 100644 --- a/app/assets/javascripts/discourse/components/top-period-buttons.js.es6 +++ b/app/assets/javascripts/discourse/components/top-period-buttons.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNames: ["top-title-buttons"], - @computed("period") + @discourseComputed("period") periods(period) { return this.site.get("periods").filter(p => p !== period); }, diff --git a/app/assets/javascripts/discourse/components/topic-entrance.js.es6 b/app/assets/javascripts/discourse/components/topic-entrance.js.es6 index ead6913e82..3cfa8feb6a 100644 --- a/app/assets/javascripts/discourse/components/topic-entrance.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-entrance.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; import DiscourseURL from "discourse/lib/url"; import CleansUp from "discourse/mixins/cleans-up"; -import computed from "ember-addons/ember-computed-decorators"; function entranceDate(dt, showTime) { const today = new Date(); @@ -34,23 +34,23 @@ export default Component.extend(CleansUp, { topic: null, visible: null, - @computed("topic.created_at") + @discourseComputed("topic.created_at") createdDate: createdAt => new Date(createdAt), - @computed("topic.bumped_at") + @discourseComputed("topic.bumped_at") bumpedDate: bumpedAt => new Date(bumpedAt), - @computed("createdDate", "bumpedDate") + @discourseComputed("createdDate", "bumpedDate") showTime(createdDate, bumpedDate) { return ( bumpedDate.getTime() - createdDate.getTime() < 1000 * 60 * 60 * 24 * 2 ); }, - @computed("createdDate", "showTime") + @discourseComputed("createdDate", "showTime") topDate: (createdDate, showTime) => entranceDate(createdDate, showTime), - @computed("bumpedDate", "showTime") + @discourseComputed("bumpedDate", "showTime") bottomDate: (bumpedDate, showTime) => entranceDate(bumpedDate, showTime), didInsertElement() { diff --git a/app/assets/javascripts/discourse/components/topic-footer-buttons.js.es6 b/app/assets/javascripts/discourse/components/topic-footer-buttons.js.es6 index 7c13728bff..5f4592aeed 100644 --- a/app/assets/javascripts/discourse/components/topic-footer-buttons.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-footer-buttons.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias, or, and } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { getTopicFooterButtons } from "discourse/lib/register-topic-footer-button"; export default Component.extend({ @@ -9,25 +9,25 @@ export default Component.extend({ // Allow us to extend it layoutName: "components/topic-footer-buttons", - @computed("topic.isPrivateMessage") + @discourseComputed("topic.isPrivateMessage") canArchive(isPM) { return this.siteSettings.enable_personal_messages && isPM; }, buttons: getTopicFooterButtons(), - @computed("buttons.[]") + @discourseComputed("buttons.[]") inlineButtons(buttons) { return buttons.filter(button => !button.dropdown); }, // topic.assigned_to_user is for backward plugin support - @computed("buttons.[]", "topic.assigned_to_user") + @discourseComputed("buttons.[]", "topic.assigned_to_user") dropdownButtons(buttons) { return buttons.filter(button => button.dropdown); }, - @computed("topic.isPrivateMessage") + @discourseComputed("topic.isPrivateMessage") showNotificationsButton(isPM) { return !isPM || this.siteSettings.enable_personal_messages; }, @@ -38,7 +38,7 @@ export default Component.extend({ inviteDisabled: or("topic.archived", "topic.closed", "topic.deleted"), - @computed + @discourseComputed showAdminButton() { return ( !this.site.mobileView && @@ -49,14 +49,14 @@ export default Component.extend({ showEditOnFooter: and("topic.isPrivateMessage", "site.can_tag_pms"), - @computed("topic.message_archived") + @discourseComputed("topic.message_archived") archiveIcon: archived => (archived ? "envelope" : "folder"), - @computed("topic.message_archived") + @discourseComputed("topic.message_archived") archiveTitle: archived => archived ? "topic.move_to_inbox.help" : "topic.archive_message.help", - @computed("topic.message_archived") + @discourseComputed("topic.message_archived") archiveLabel: archived => archived ? "topic.move_to_inbox.title" : "topic.archive_message.title" }); diff --git a/app/assets/javascripts/discourse/components/topic-join-group-notice.js.es6 b/app/assets/javascripts/discourse/components/topic-join-group-notice.js.es6 index 114e02aa04..4a55fb8886 100644 --- a/app/assets/javascripts/discourse/components/topic-join-group-notice.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-join-group-notice.js.es6 @@ -1,17 +1,17 @@ import Component from "@ember/component"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default Component.extend({ classNames: ["topic-notice"], - @computed("model.group.{full_name,name,allow_membership_requests}") + @discourseComputed("model.group.{full_name,name,allow_membership_requests}") accessViaGroupText(group) { const name = group.full_name || group.name; const suffix = group.allow_membership_requests ? "request" : "join"; return I18n.t(`topic.group_${suffix}`, { name }); }, - @computed("model.group.allow_membership_requests") + @discourseComputed("model.group.allow_membership_requests") accessViaGroupButtonText(allowRequest) { return `groups.${allowRequest ? "request" : "join"}`; } diff --git a/app/assets/javascripts/discourse/components/topic-list-item.js.es6 b/app/assets/javascripts/discourse/components/topic-list-item.js.es6 index 10161d7b51..670d45b64c 100644 --- a/app/assets/javascripts/discourse/components/topic-list-item.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-list-item.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; import DiscourseURL from "discourse/lib/url"; -import computed from "ember-addons/ember-computed-decorators"; import { bufferedRender } from "discourse-common/lib/buffered-render"; import { findRawTemplate } from "discourse/lib/raw-templates"; import { wantsNewWindow } from "discourse/lib/intercept-click"; @@ -64,29 +64,29 @@ export const ListItemDefaults = { } }, - @computed("topic.id") + @discourseComputed("topic.id") unreadIndicatorChannel(topicId) { return `/private-messages/unread-indicator/${topicId}`; }, - @computed("topic.unread_by_group_member") + @discourseComputed("topic.unread_by_group_member") unreadClass(unreadByGroupMember) { return unreadByGroupMember ? "" : "read"; }, - @computed("topic.unread_by_group_member") + @discourseComputed("topic.unread_by_group_member") includeUnreadIndicator(unreadByGroupMember) { return typeof unreadByGroupMember !== "undefined"; }, - @computed + @discourseComputed newDotText() { return this.currentUser && this.currentUser.trust_level > 0 ? "" : I18n.t("filters.new.lower_title"); }, - @computed("topic", "lastVisitedTopic") + @discourseComputed("topic", "lastVisitedTopic") unboundClassNames(topic, lastVisitedTopic) { let classes = []; @@ -131,7 +131,7 @@ export const ListItemDefaults = { return this.get("topic.op_like_count") > 0; }, - @computed + @discourseComputed expandPinned: function() { const pinned = this.get("topic.pinned"); if (!pinned) { diff --git a/app/assets/javascripts/discourse/components/topic-list.js.es6 b/app/assets/javascripts/discourse/components/topic-list.js.es6 index 6d3ea337e2..d744b28a70 100644 --- a/app/assets/javascripts/discourse/components/topic-list.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-list.js.es6 @@ -2,9 +2,9 @@ import { alias, reads } from "@ember/object/computed"; import { schedule } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import LoadMore from "discourse/mixins/load-more"; import { on } from "@ember/object/evented"; @@ -24,24 +24,24 @@ export default Component.extend(LoadMore, { this.refreshLastVisited(); }), - @computed("bulkSelectEnabled") + @discourseComputed("bulkSelectEnabled") toggleInTitle(bulkSelectEnabled) { return !bulkSelectEnabled && this.canBulkSelect; }, - @computed + @discourseComputed sortable() { return !!this.changeSort; }, skipHeader: reads("site.mobileView"), - @computed("order") + @discourseComputed("order") showLikes(order) { return order === "likes"; }, - @computed("order") + @discourseComputed("order") showOpLikes(order) { return order === "op_likes"; }, diff --git a/app/assets/javascripts/discourse/components/topic-navigation.js.es6 b/app/assets/javascripts/discourse/components/topic-navigation.js.es6 index b2115e755d..3324814bf6 100644 --- a/app/assets/javascripts/discourse/components/topic-navigation.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-navigation.js.es6 @@ -2,7 +2,7 @@ import EmberObject from "@ember/object"; import { scheduleOnce } from "@ember/runloop"; import { later } from "@ember/runloop"; import Component from "@ember/component"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import showModal from "discourse/lib/show-modal"; import PanEvents, { SWIPE_VELOCITY, diff --git a/app/assets/javascripts/discourse/components/topic-progress.js.es6 b/app/assets/javascripts/discourse/components/topic-progress.js.es6 index 9d5cb2103f..3e055c96ed 100644 --- a/app/assets/javascripts/discourse/components/topic-progress.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-progress.js.es6 @@ -2,9 +2,9 @@ import { alias } from "@ember/object/computed"; import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Component.extend({ elementId: "topic-progress-wrapper", @@ -14,12 +14,12 @@ export default Component.extend({ postStream: alias("topic.postStream"), _streamPercentage: null, - @computed("progressPosition") + @discourseComputed("progressPosition") jumpTopDisabled(progressPosition) { return progressPosition <= 3; }, - @computed( + @discourseComputed( "postStream.filteredPostsCount", "topic.highest_post_number", "progressPosition" @@ -31,7 +31,7 @@ export default Component.extend({ ); }, - @computed( + @discourseComputed( "postStream.loaded", "topic.currentPost", "postStream.filteredPostsCount" @@ -44,14 +44,14 @@ export default Component.extend({ ); }, - @computed("postStream.filteredPostsCount") + @discourseComputed("postStream.filteredPostsCount") hugeNumberOfPosts(filteredPostsCount) { return ( filteredPostsCount >= this.siteSettings.short_progress_text_threshold ); }, - @computed("hugeNumberOfPosts", "topic.highest_post_number") + @discourseComputed("hugeNumberOfPosts", "topic.highest_post_number") jumpToBottomTitle(hugeNumberOfPosts, highestPostNumber) { if (hugeNumberOfPosts) { return I18n.t("topic.progress.jump_bottom_with_number", { @@ -62,7 +62,7 @@ export default Component.extend({ } }, - @computed("progressPosition", "topic.last_read_post_id") + @discourseComputed("progressPosition", "topic.last_read_post_id") showBackButton(position, lastReadId) { if (!lastReadId) { return; diff --git a/app/assets/javascripts/discourse/components/topic-status.js.es6 b/app/assets/javascripts/discourse/components/topic-status.js.es6 index dc3e0d14f6..dd1f6c5066 100644 --- a/app/assets/javascripts/discourse/components/topic-status.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-status.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; import { bufferedRender } from "discourse-common/lib/buffered-render"; import { escapeExpression } from "discourse/lib/utilities"; import TopicStatusIcons from "discourse/helpers/topic-status-icons"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend( bufferedRender({ @@ -28,7 +28,7 @@ export default Component.extend( return false; }, - @computed("disableActions") + @discourseComputed("disableActions") canAct(disableActions) { return this.currentUser && !disableActions; }, diff --git a/app/assets/javascripts/discourse/components/topic-timeline.js.es6 b/app/assets/javascripts/discourse/components/topic-timeline.js.es6 index 9aa6541065..b802d47586 100644 --- a/app/assets/javascripts/discourse/components/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-timeline.js.es6 @@ -1,7 +1,7 @@ import { next } from "@ember/runloop"; import MountWidget from "discourse/components/mount-widget"; import Docking from "discourse/mixins/docking"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import optionalService from "discourse/lib/optional-service"; const headerPadding = () => { diff --git a/app/assets/javascripts/discourse/components/topic-timer-info.js.es6 b/app/assets/javascripts/discourse/components/topic-timer-info.js.es6 index 3f219f3143..487307f624 100644 --- a/app/assets/javascripts/discourse/components/topic-timer-info.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-timer-info.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { cancel } from "@ember/runloop"; import { later } from "@ember/runloop"; import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; import { bufferedRender } from "discourse-common/lib/buffered-render"; import Category from "discourse/models/category"; -import computed from "ember-addons/ember-computed-decorators"; import { REMINDER_TYPE } from "discourse/controllers/edit-topic-timer"; import ENV from "discourse-common/config/environment"; @@ -22,7 +22,7 @@ export default Component.extend( "categoryId" ], - @computed("statusType") + @discourseComputed("statusType") canRemoveTimer(type) { if (type === REMINDER_TYPE) return true; return this.currentUser && this.currentUser.get("canManageTopic"); diff --git a/app/assets/javascripts/discourse/components/user-badge.js.es6 b/app/assets/javascripts/discourse/components/user-badge.js.es6 index 85de291634..6f9c4850b5 100644 --- a/app/assets/javascripts/discourse/components/user-badge.js.es6 +++ b/app/assets/javascripts/discourse/components/user-badge.js.es6 @@ -1,15 +1,15 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "span", - @computed("count") + @discourseComputed("count") showGrantCount(count) { return count && count > 1; }, - @computed("badge", "user") + @discourseComputed("badge", "user") badgeUrl() { // NOTE: I tried using a link-to helper here but the queryParams mean it fails var username = this.get("user.username_lower") || ""; diff --git a/app/assets/javascripts/discourse/components/user-card-contents.js.es6 b/app/assets/javascripts/discourse/components/user-card-contents.js.es6 index 9163d36d53..255e494f21 100644 --- a/app/assets/javascripts/discourse/components/user-card-contents.js.es6 +++ b/app/assets/javascripts/discourse/components/user-card-contents.js.es6 @@ -3,9 +3,9 @@ import { alias, gte, and, gt, not, or } from "@ember/object/computed"; import EmberObject from "@ember/object"; import Component from "@ember/component"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import User from "discourse/models/user"; import { propertyNotEqual, setting } from "discourse/lib/computed"; import { durationTiny } from "discourse/lib/formatter"; @@ -50,26 +50,26 @@ export default Component.extend(CardContentsBase, CanCheckEmails, CleansUp, { // If inside a topic topicPostCount: null, - @computed("user.staff") + @discourseComputed("user.staff") staff: isStaff => (isStaff ? "staff" : ""), - @computed("user.trust_level") + @discourseComputed("user.trust_level") newUser: trustLevel => (trustLevel === 0 ? "new-user" : ""), - @computed("user.name") + @discourseComputed("user.name") nameFirst(name) { return prioritizeNameInUx(name, this.siteSettings); }, - @computed("username") + @discourseComputed("username") usernameClass: username => (username ? `user-card-${username}` : ""), - @computed("username", "topicPostCount") + @discourseComputed("username", "topicPostCount") togglePostsLabel(username, count) { return I18n.t("topic.filter_to", { username, count }); }, - @computed("user.user_fields.@each.value") + @discourseComputed("user.user_fields.@each.value") publicUserFields() { const siteUserFields = this.site.get("user_fields"); if (!isEmpty(siteUserFields)) { @@ -86,25 +86,25 @@ export default Component.extend(CardContentsBase, CanCheckEmails, CleansUp, { } }, - @computed("user.trust_level") + @discourseComputed("user.trust_level") removeNoFollow(trustLevel) { return trustLevel > 2 && !this.siteSettings.tl3_links_no_follow; }, - @computed("user.badge_count", "user.featured_user_badges.length") + @discourseComputed("user.badge_count", "user.featured_user_badges.length") moreBadgesCount: (badgeCount, badgeLength) => badgeCount - badgeLength, - @computed("user.time_read", "user.recent_time_read") + @discourseComputed("user.time_read", "user.recent_time_read") showRecentTimeRead(timeRead, recentTimeRead) { return timeRead !== recentTimeRead && recentTimeRead !== 0; }, - @computed("user.recent_time_read") + @discourseComputed("user.recent_time_read") recentTimeRead(recentTimeReadSeconds) { return durationTiny(recentTimeReadSeconds); }, - @computed("showRecentTimeRead", "user.time_read", "recentTimeRead") + @discourseComputed("showRecentTimeRead", "user.time_read", "recentTimeRead") timeReadTooltip(showRecent, timeRead, recentTimeRead) { if (showRecent) { return I18n.t("time_read_recently_tooltip", { diff --git a/app/assets/javascripts/discourse/components/user-field.js.es6 b/app/assets/javascripts/discourse/components/user-field.js.es6 index b54cbafd0a..f8e2554ab0 100644 --- a/app/assets/javascripts/discourse/components/user-field.js.es6 +++ b/app/assets/javascripts/discourse/components/user-field.js.es6 @@ -1,17 +1,17 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { fmt } from "discourse/lib/computed"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ classNameBindings: [":user-field", "field.field_type", "customFieldClass"], layoutName: fmt("field.field_type", "components/user-fields/%@"), - @computed + @discourseComputed noneLabel() { return "user_fields.none"; }, - @computed("field.name") + @discourseComputed("field.name") customFieldClass(fieldName) { if (fieldName) { fieldName = fieldName diff --git a/app/assets/javascripts/discourse/components/user-flag-percentage.js.es6 b/app/assets/javascripts/discourse/components/user-flag-percentage.js.es6 index 5c24fb70af..60e3c4ccef 100644 --- a/app/assets/javascripts/discourse/components/user-flag-percentage.js.es6 +++ b/app/assets/javascripts/discourse/components/user-flag-percentage.js.es6 @@ -1,16 +1,16 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "", - @computed("percentage") + @discourseComputed("percentage") showPercentage(percentage) { return percentage.total >= 3; }, // We do a little logic to choose which icon to display and which text - @computed("agreed", "disagreed", "ignored") + @discourseComputed("agreed", "disagreed", "ignored") percentage(agreed, disagreed, ignored) { let total = agreed + disagreed + ignored; let result = { total }; diff --git a/app/assets/javascripts/discourse/components/user-info.js.es6 b/app/assets/javascripts/discourse/components/user-info.js.es6 index 5873829a25..2de553d13d 100644 --- a/app/assets/javascripts/discourse/components/user-info.js.es6 +++ b/app/assets/javascripts/discourse/components/user-info.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; import { userPath } from "discourse/lib/url"; export function normalize(name) { @@ -12,7 +12,7 @@ export default Component.extend({ attributeBindings: ["data-username"], size: "small", - @computed("user.username") + @discourseComputed("user.username") userPath(username) { return userPath(username); }, @@ -22,7 +22,7 @@ export default Component.extend({ // TODO: In later ember releases `hasBlock` works without this hasBlock: alias("template"), - @computed("user.name", "user.username") + @discourseComputed("user.name", "user.username") name(name, username) { if (name && normalize(username) !== normalize(name)) { return name; diff --git a/app/assets/javascripts/discourse/components/user-notifications-large.js.es6 b/app/assets/javascripts/discourse/components/user-notifications-large.js.es6 index de804fb75e..3d2a2112b5 100644 --- a/app/assets/javascripts/discourse/components/user-notifications-large.js.es6 +++ b/app/assets/javascripts/discourse/components/user-notifications-large.js.es6 @@ -1,5 +1,5 @@ import MountWidget from "discourse/components/mount-widget"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; export default MountWidget.extend({ widget: "user-notifications-large", diff --git a/app/assets/javascripts/discourse/components/user-selector.js.es6 b/app/assets/javascripts/discourse/components/user-selector.js.es6 index 772777543c..e6170b81ed 100644 --- a/app/assets/javascripts/discourse/components/user-selector.js.es6 +++ b/app/assets/javascripts/discourse/components/user-selector.js.es6 @@ -1,5 +1,5 @@ import { isEmpty } from "@ember/utils"; -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; import TextField from "discourse/components/text-field"; import userSearch from "discourse/lib/user-search"; import { findRawTemplate } from "discourse/lib/raw-templates"; diff --git a/app/assets/javascripts/discourse/components/user-summary-category-search.js.es6 b/app/assets/javascripts/discourse/components/user-summary-category-search.js.es6 index 5206a83988..202ee1eb58 100644 --- a/app/assets/javascripts/discourse/components/user-summary-category-search.js.es6 +++ b/app/assets/javascripts/discourse/components/user-summary-category-search.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "", - @computed("user", "category") + @discourseComputed("user", "category") searchParams() { return `@${this.get("user.username")} #${this.get("category.slug")}`; } diff --git a/app/assets/javascripts/discourse/components/user-summary-topics-list.js.es6 b/app/assets/javascripts/discourse/components/user-summary-topics-list.js.es6 index 39970994da..5cee1e00e9 100644 --- a/app/assets/javascripts/discourse/components/user-summary-topics-list.js.es6 +++ b/app/assets/javascripts/discourse/components/user-summary-topics-list.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; // should be kept in sync with 'UserSummary::MAX_SUMMARY_RESULTS' const MAX_SUMMARY_RESULTS = 6; @@ -7,7 +7,7 @@ const MAX_SUMMARY_RESULTS = 6; export default Component.extend({ tagName: "", - @computed("items.length") + @discourseComputed("items.length") hasMore(length) { return length >= MAX_SUMMARY_RESULTS; } diff --git a/app/assets/javascripts/discourse/controllers/about.js.es6 b/app/assets/javascripts/discourse/controllers/about.js.es6 index 85f26757ae..9225421995 100644 --- a/app/assets/javascripts/discourse/controllers/about.js.es6 +++ b/app/assets/javascripts/discourse/controllers/about.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { gt } from "@ember/object/computed"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ faqOverriden: gt("siteSettings.faq_url.length", 0), - @computed + @discourseComputed contactInfo() { if (this.siteSettings.contact_url) { return I18n.t("about.contact_info", { diff --git a/app/assets/javascripts/discourse/controllers/account-created-edit-email.js.es6 b/app/assets/javascripts/discourse/controllers/account-created-edit-email.js.es6 index 1002a90752..dd3314110b 100644 --- a/app/assets/javascripts/discourse/controllers/account-created-edit-email.js.es6 +++ b/app/assets/javascripts/discourse/controllers/account-created-edit-email.js.es6 @@ -1,13 +1,13 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; import { changeEmail } from "discourse/lib/user-activation"; -import computed from "ember-addons/ember-computed-decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; export default Controller.extend({ accountCreated: null, newEmail: null, - @computed("newEmail", "accountCreated.email") + @discourseComputed("newEmail", "accountCreated.email") submitDisabled(newEmail, currentEmail) { return newEmail === currentEmail; }, diff --git a/app/assets/javascripts/discourse/controllers/activation-edit.js.es6 b/app/assets/javascripts/discourse/controllers/activation-edit.js.es6 index 8fc90f6cf0..010878f720 100644 --- a/app/assets/javascripts/discourse/controllers/activation-edit.js.es6 +++ b/app/assets/javascripts/discourse/controllers/activation-edit.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { extractError } from "discourse/lib/ajax-error"; import { changeEmail } from "discourse/lib/user-activation"; @@ -12,7 +12,7 @@ export default Controller.extend(ModalFunctionality, { newEmail: null, password: null, - @computed("newEmail", "currentEmail") + @discourseComputed("newEmail", "currentEmail") submitDisabled(newEmail, currentEmail) { return newEmail === currentEmail; }, diff --git a/app/assets/javascripts/discourse/controllers/add-post-notice.js.es6 b/app/assets/javascripts/discourse/controllers/add-post-notice.js.es6 index 83883ca5aa..b0c92b3a81 100644 --- a/app/assets/javascripts/discourse/controllers/add-post-notice.js.es6 +++ b/app/assets/javascripts/discourse/controllers/add-post-notice.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; -import computed from "ember-addons/ember-computed-decorators"; import { cookAsync } from "discourse/lib/text"; export default Controller.extend(ModalFunctionality, { @@ -12,7 +12,7 @@ export default Controller.extend(ModalFunctionality, { notice: null, saving: false, - @computed("saving", "notice") + @discourseComputed("saving", "notice") disabled(saving, notice) { return saving || isEmpty(notice); }, diff --git a/app/assets/javascripts/discourse/controllers/application.js.es6 b/app/assets/javascripts/discourse/controllers/application.js.es6 index 610e745e64..c96c10c6e0 100644 --- a/app/assets/javascripts/discourse/controllers/application.js.es6 +++ b/app/assets/javascripts/discourse/controllers/application.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject as service } from "@ember/service"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { isAppWebview, isiOSPWA } from "discourse/lib/utilities"; export default Controller.extend({ @@ -8,7 +8,7 @@ export default Controller.extend({ showFooter: false, router: service(), - @computed + @discourseComputed canSignUp() { return ( !Discourse.SiteSettings.invite_only && @@ -17,12 +17,12 @@ export default Controller.extend({ ); }, - @computed + @discourseComputed loginRequired() { return Discourse.SiteSettings.login_required && !this.currentUser; }, - @computed + @discourseComputed showFooterNav() { return isAppWebview() || isiOSPWA(); } diff --git a/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 b/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 index 1a23033580..59c28e6932 100644 --- a/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 +++ b/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 @@ -1,12 +1,12 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { ajax } from "discourse/lib/ajax"; import { allowsImages } from "discourse/lib/utilities"; import { popupAjaxError } from "discourse/lib/ajax-error"; export default Controller.extend(ModalFunctionality, { - @computed( + @discourseComputed( "selected", "user.system_avatar_upload_id", "user.gravatar_avatar_upload_id", @@ -23,7 +23,7 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed( + @discourseComputed( "selected", "user.system_avatar_template", "user.gravatar_avatar_template", @@ -40,7 +40,7 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed() + @discourseComputed() allowAvatarUpload() { return this.siteSettings.allow_uploaded_avatars && allowsImages(); }, diff --git a/app/assets/javascripts/discourse/controllers/badges/index.js.es6 b/app/assets/javascripts/discourse/controllers/badges/index.js.es6 index c1c4d8db27..e056401703 100644 --- a/app/assets/javascripts/discourse/controllers/badges/index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/badges/index.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ - @computed("model") + @discourseComputed("model") badgeGroups(model) { var sorted = _.sortBy(model, function(badge) { var pos = badge.get("badge_grouping.position"); diff --git a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 index d1093c13bc..807ea2b596 100644 --- a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 @@ -4,9 +4,9 @@ import Controller from "@ember/controller"; import Badge from "discourse/models/badge"; import UserBadge from "discourse/models/user-badge"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Controller.extend({ queryParams: ["username"], @@ -15,12 +15,12 @@ export default Controller.extend({ application: inject(), hiddenSetTitle: true, - @computed("userBadgesAll") + @discourseComputed("userBadgesAll") filteredList(userBadgesAll) { return userBadgesAll.filterBy("badge.allow_title", true); }, - @computed("filteredList") + @discourseComputed("filteredList") selectableUserBadges(filteredList) { return [ EmberObject.create({ @@ -30,24 +30,24 @@ export default Controller.extend({ ]; }, - @computed("username") + @discourseComputed("username") user(username) { if (username) { return this.userBadges[0].get("user"); } }, - @computed("username", "model.grant_count", "userBadges.grant_count") + @discourseComputed("username", "model.grant_count", "userBadges.grant_count") grantCount(username, modelCount, userCount) { return username ? userCount : modelCount; }, - @computed("model.grant_count", "userBadges.grant_count") + @discourseComputed("model.grant_count", "userBadges.grant_count") othersCount(modelCount, userCount) { return modelCount - userCount; }, - @computed("model.allow_title", "model.has_badge", "model") + @discourseComputed("model.allow_title", "model.has_badge", "model") canSelectTitle(hasTitleBadges, hasBadge) { return this.siteSettings.enable_badges && hasTitleBadges && hasBadge; }, @@ -81,7 +81,7 @@ export default Controller.extend({ } }, - @computed("noMoreBadges", "grantCount", "userBadges.length") + @discourseComputed("noMoreBadges", "grantCount", "userBadges.length") canLoadMore(noMoreBadges, grantCount, userBadgeLength) { if (noMoreBadges) { return false; @@ -89,7 +89,7 @@ export default Controller.extend({ return grantCount > (userBadgeLength || 0); }, - @computed("user", "model.grant_count") + @discourseComputed("user", "model.grant_count") canShowOthers(user, grantCount) { return !!user && grantCount > 1; }, diff --git a/app/assets/javascripts/discourse/controllers/bulk-notification-level.js.es6 b/app/assets/javascripts/discourse/controllers/bulk-notification-level.js.es6 index 0d8ac58ca2..d9627ee47f 100644 --- a/app/assets/javascripts/discourse/controllers/bulk-notification-level.js.es6 +++ b/app/assets/javascripts/discourse/controllers/bulk-notification-level.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { empty } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { topicLevels } from "discourse/lib/notification-levels"; // Support for changing the notification level of various topics @@ -9,7 +9,7 @@ export default Controller.extend({ topicBulkActions: inject(), notificationLevelId: null, - @computed + @discourseComputed notificationLevels() { return topicLevels.map(level => { return { diff --git a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 index 9a738881d5..0380faf86c 100644 --- a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 +++ b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 @@ -1,3 +1,4 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import { next } from "@ember/runloop"; @@ -6,7 +7,6 @@ import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import DiscourseURL from "discourse/lib/url"; import Topic from "discourse/models/topic"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(ModalFunctionality, { topicController: inject("topic"), @@ -17,7 +17,7 @@ export default Controller.extend(ModalFunctionality, { selectedPostsCount: alias("topicController.selectedPostsCount"), selectedPostsUsername: alias("topicController.selectedPostsUsername"), - @computed("saving", "new_user") + @discourseComputed("saving", "new_user") buttonDisabled(saving, newUser) { return saving || isEmpty(newUser); }, diff --git a/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6 b/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6 index 9a29c747d7..5cb6bdba53 100644 --- a/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6 +++ b/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { next } from "@ember/runloop"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; -import computed from "ember-addons/ember-computed-decorators"; import DiscourseURL from "discourse/lib/url"; import Topic from "discourse/models/topic"; @@ -14,22 +14,22 @@ export default Controller.extend(ModalFunctionality, { date: "", time: "", - @computed("saving") + @discourseComputed("saving") buttonTitle(saving) { return saving ? I18n.t("saving") : I18n.t("topic.change_timestamp.action"); }, - @computed("date", "time") + @discourseComputed("date", "time") createdAt(date, time) { return moment(`${date} ${time}`, "YYYY-MM-DD HH:mm:ss"); }, - @computed("createdAt") + @discourseComputed("createdAt") validTimestamp(createdAt) { return moment().diff(createdAt, "minutes") < 0; }, - @computed("saving", "date", "validTimestamp") + @discourseComputed("saving", "date", "validTimestamp") buttonDisabled(saving, date, validTimestamp) { if (saving || validTimestamp) return true; return isEmpty(date); diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index ce4b607add..818f70c089 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -9,10 +9,10 @@ import Quote from "discourse/lib/quote"; import Draft from "discourse/models/draft"; import Composer from "discourse/models/composer"; import { - default as computed, + default as discourseComputed, observes, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import InputValidation from "discourse/models/input-validation"; import { getOwner } from "discourse-common/lib/get-owner"; import { @@ -110,7 +110,7 @@ export default Controller.extend({ this.set("showPreview", val === "true"); }, - @computed("showPreview") + @discourseComputed("showPreview") toggleText(showPreview) { return showPreview ? I18n.t("composer.hide_preview") @@ -127,7 +127,7 @@ export default Controller.extend({ } }, - @computed( + @discourseComputed( "model.replyingToTopic", "model.creatingPrivateMessage", "model.targetUsernames", @@ -184,7 +184,7 @@ export default Controller.extend({ topicModel: alias("topicController.model"), - @computed("model.canEditTitle", "model.creatingPrivateMessage") + @discourseComputed("model.canEditTitle", "model.creatingPrivateMessage") canEditTags(canEditTitle, creatingPrivateMessage) { return ( this.site.can_tag_topics && @@ -194,12 +194,12 @@ export default Controller.extend({ ); }, - @computed("model.editingPost", "model.topic.details.can_edit") + @discourseComputed("model.editingPost", "model.topic.details.can_edit") disableCategoryChooser(editingPost, canEditTopic) { return editingPost && !canEditTopic; }, - @computed("model.editingPost", "model.topic.canEditTags") + @discourseComputed("model.editingPost", "model.topic.canEditTags") disableTagsChooser(editingPost, canEditTags) { return editingPost && !canEditTags; }, @@ -208,12 +208,12 @@ export default Controller.extend({ canUnlistTopic: and("model.creatingTopic", "isStaffUser"), - @computed("canWhisper", "replyingToWhisper") + @discourseComputed("canWhisper", "replyingToWhisper") showWhisperToggle(canWhisper, replyingToWhisper) { return canWhisper && !replyingToWhisper; }, - @computed("model.post") + @discourseComputed("model.post") replyingToWhisper(repliedToPost) { return ( repliedToPost && repliedToPost.post_type === this.site.post_types.whisper @@ -222,14 +222,14 @@ export default Controller.extend({ isWhispering: or("replyingToWhisper", "model.whisper"), - @computed("model.action", "isWhispering") + @discourseComputed("model.action", "isWhispering") saveIcon(action, isWhispering) { if (isWhispering) return "far-eye-slash"; return SAVE_ICONS[action]; }, - @computed("model.action", "isWhispering", "model.editConflict") + @discourseComputed("model.action", "isWhispering", "model.editConflict") saveLabel(action, isWhispering, editConflict) { if (editConflict) return "composer.overwrite_edit"; else if (isWhispering) return "composer.create_whisper"; @@ -237,7 +237,7 @@ export default Controller.extend({ return SAVE_LABELS[action]; }, - @computed("isStaffUser", "model.action") + @discourseComputed("isStaffUser", "model.action") canWhisper(isStaffUser, action) { return ( this.siteSettings.enable_whispers && @@ -260,7 +260,7 @@ export default Controller.extend({ return option; }, - @computed("model.composeState", "model.creatingTopic", "model.post") + @discourseComputed("model.composeState", "model.creatingTopic", "model.post") popupMenuOptions(composeState) { if (composeState === "open" || composeState === "fullscreen") { const options = []; @@ -295,7 +295,7 @@ export default Controller.extend({ } }, - @computed("model.creatingPrivateMessage", "model.targetUsernames") + @discourseComputed("model.creatingPrivateMessage", "model.targetUsernames") showWarning(creatingPrivateMessage, usernames) { if (!this.get("currentUser.staff")) { return false; @@ -315,17 +315,17 @@ export default Controller.extend({ return creatingPrivateMessage; }, - @computed("model.topic.title") + @discourseComputed("model.topic.title") draftTitle(topicTitle) { return emojiUnescape(escapeExpression(topicTitle)); }, - @computed + @discourseComputed allowUpload() { return authorizesOneOrMoreExtensions(); }, - @computed() + @discourseComputed() uploadIcon: () => uploadIcon(), actions: { @@ -1054,7 +1054,7 @@ export default Controller.extend({ debounce(this, this._saveDraft, 2000); }, - @computed("model.categoryId", "lastValidatedAt") + @discourseComputed("model.categoryId", "lastValidatedAt") categoryValidation(categoryId, lastValidatedAt) { if (!this.siteSettings.allow_uncategorized_topics && !categoryId) { return InputValidation.create({ @@ -1065,7 +1065,7 @@ export default Controller.extend({ } }, - @computed("model.category", "model.tags", "lastValidatedAt") + @discourseComputed("model.category", "model.tags", "lastValidatedAt") tagValidation(category, tags, lastValidatedAt) { const tagsArray = tags || []; if ( @@ -1112,12 +1112,12 @@ export default Controller.extend({ $(".d-editor-input").autocomplete({ cancel: true }); }, - @computed("model.action") + @discourseComputed("model.action") canEdit(action) { return action === "edit" && this.currentUser.can_edit; }, - @computed("model.composeState") + @discourseComputed("model.composeState") visible(state) { return state && state !== "closed"; } diff --git a/app/assets/javascripts/discourse/controllers/create-account.js.es6 b/app/assets/javascripts/discourse/controllers/create-account.js.es6 index beb87d2d3a..96abb66d22 100644 --- a/app/assets/javascripts/discourse/controllers/create-account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/create-account.js.es6 @@ -6,9 +6,9 @@ import { ajax } from "discourse/lib/ajax"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { setting } from "discourse/lib/computed"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { emailValid } from "discourse/lib/utilities"; import InputValidation from "discourse/models/input-validation"; import PasswordValidation from "discourse/mixins/password-validation"; @@ -58,7 +58,7 @@ export default Controller.extend( this._createUserFields(); }, - @computed( + @discourseComputed( "passwordRequired", "nameValidation.failed", "emailValidation.failed", @@ -82,7 +82,7 @@ export default Controller.extend( usernameRequired: not("authOptions.omit_username"), - @computed + @discourseComputed fullnameRequired() { return ( this.get("siteSettings.full_name_required") || @@ -90,12 +90,12 @@ export default Controller.extend( ); }, - @computed("authOptions.auth_provider") + @discourseComputed("authOptions.auth_provider") passwordRequired(authProvider) { return isEmpty(authProvider); }, - @computed + @discourseComputed disclaimerHtml() { return I18n.t("create_account.disclaimer", { tos_link: this.get("siteSettings.tos_url") || Discourse.getURL("/tos"), @@ -106,7 +106,7 @@ export default Controller.extend( }, // Check the email address - @computed("accountEmail", "rejectedEmails.[]") + @discourseComputed("accountEmail", "rejectedEmails.[]") emailValidation(email, rejectedEmails) { // If blank, fail without a reason if (isEmpty(email)) { @@ -149,7 +149,11 @@ export default Controller.extend( }); }, - @computed("accountEmail", "authOptions.email", "authOptions.email_valid") + @discourseComputed( + "accountEmail", + "authOptions.email", + "authOptions.email_valid" + ) emailValidated() { return ( this.get("authOptions.email") === this.accountEmail && @@ -187,7 +191,7 @@ export default Controller.extend( }.observes("emailValidation", "accountEmail"), // Determines whether at least one login button is enabled - @computed + @discourseComputed hasAtLeastOneLoginButton() { return findAll().length > 0; }, diff --git a/app/assets/javascripts/discourse/controllers/discovery/categories.js.es6 b/app/assets/javascripts/discourse/controllers/discovery/categories.js.es6 index 81542214ef..69e59db2a9 100644 --- a/app/assets/javascripts/discourse/controllers/discovery/categories.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery/categories.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { reads } from "@ember/object/computed"; import { inject } from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import DiscoveryController from "discourse/controllers/discovery"; import { dasherize } from "@ember/string"; @@ -19,7 +19,7 @@ export default DiscoveryController.extend({ canEdit: reads("currentUser.staff"), - @computed("model.categories.[].featuredTopics.length") + @discourseComputed("model.categories.[].featuredTopics.length") latestTopicOnly() { return ( this.get("model.categories").find( @@ -28,7 +28,7 @@ export default DiscoveryController.extend({ ); }, - @computed("model.parentCategory") + @discourseComputed("model.parentCategory") categoryPageStyle(parentCategory) { let style = this.site.mobileView ? "categories_with_featured_topics" diff --git a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 index 3d1d4b9348..9e4d81cedd 100644 --- a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 @@ -1,3 +1,4 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias, not, gt, empty, notEmpty, equal } from "@ember/object/computed"; import { inject } from "@ember/controller"; import DiscoveryController from "discourse/controllers/discovery"; @@ -7,7 +8,6 @@ import { endWith } from "discourse/lib/computed"; import showModal from "discourse/lib/show-modal"; import { userPath } from "discourse/lib/url"; import TopicList from "discourse/models/topic-list"; -import computed from "ember-addons/ember-computed-decorators"; import Topic from "discourse/models/topic"; const controllerOpts = { @@ -99,17 +99,17 @@ const controllerOpts = { return filter.match(new RegExp(filterType + "$", "gi")) ? true : false; }, - @computed("model.filter", "model.topics.length") + @discourseComputed("model.filter", "model.topics.length") showDismissRead(filter, topicsLength) { return this.isFilterPage(filter, "unread") && topicsLength > 0; }, - @computed("model.filter", "model.topics.length") + @discourseComputed("model.filter", "model.topics.length") showResetNew(filter, topicsLength) { return filter === "new" && topicsLength > 0; }, - @computed("model.filter", "model.topics.length") + @discourseComputed("model.filter", "model.topics.length") showDismissAtTop(filter, topicsLength) { return ( (this.isFilterPage(filter, "new") || @@ -129,7 +129,7 @@ const controllerOpts = { weekly: equal("period", "weekly"), daily: equal("period", "daily"), - @computed("allLoaded", "model.topics.length") + @discourseComputed("allLoaded", "model.topics.length") footerMessage(allLoaded, topicsLength) { if (!allLoaded) return; @@ -152,7 +152,7 @@ const controllerOpts = { } }, - @computed("allLoaded", "model.topics.length") + @discourseComputed("allLoaded", "model.topics.length") footerEducation(allLoaded, topicsLength) { if (!allLoaded || topicsLength > 0 || !this.currentUser) { return; diff --git a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 index 87c1378ffe..21b1e5c5ac 100644 --- a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 +++ b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 @@ -4,10 +4,10 @@ import ModalFunctionality from "discourse/mixins/modal-functionality"; import DiscourseURL from "discourse/lib/url"; import { extractError } from "discourse/lib/ajax-error"; import { - default as computed, + default as discourseComputed, on, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Controller.extend(ModalFunctionality, { selectedTab: null, @@ -39,7 +39,7 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed("model.{id,name}") + @discourseComputed("model.{id,name}") title(model) { if (model.id) { return I18n.t("category.edit_dialog_title", { @@ -54,7 +54,7 @@ export default Controller.extend(ModalFunctionality, { this.set("modal.title", this.title); }, - @computed("saving", "model.name", "model.color", "deleting") + @discourseComputed("saving", "model.name", "model.color", "deleting") disabled(saving, name, color, deleting) { if (saving || deleting) return true; if (!name) return true; @@ -62,18 +62,18 @@ export default Controller.extend(ModalFunctionality, { return false; }, - @computed("saving", "deleting") + @discourseComputed("saving", "deleting") deleteDisabled(saving, deleting) { return deleting || saving || false; }, - @computed("name") + @discourseComputed("name") categoryName(name) { name = name || ""; return name.trim().length > 0 ? name : I18n.t("preview"); }, - @computed("saving", "model.id") + @discourseComputed("saving", "model.id") saveLabel(saving, id) { if (saving) return "saving"; return id ? "category.save" : "category.create"; diff --git a/app/assets/javascripts/discourse/controllers/edit-topic-timer.js.es6 b/app/assets/javascripts/discourse/controllers/edit-topic-timer.js.es6 index 7dc26c632c..c1473509f2 100644 --- a/app/assets/javascripts/discourse/controllers/edit-topic-timer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/edit-topic-timer.js.es6 @@ -1,6 +1,6 @@ import EmberObject from "@ember/object"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import TopicTimer from "discourse/models/topic-timer"; import { popupAjaxError } from "discourse/lib/ajax-error"; @@ -17,7 +17,7 @@ export default Controller.extend(ModalFunctionality, { loading: false, isPublic: "true", - @computed("model.closed") + @discourseComputed("model.closed") publicTimerTypes(closed) { let types = [ { @@ -50,17 +50,21 @@ export default Controller.extend(ModalFunctionality, { return types; }, - @computed() + @discourseComputed() privateTimerTypes() { return [{ id: REMINDER_TYPE, name: I18n.t("topic.reminder.title") }]; }, - @computed("isPublic", "publicTimerTypes", "privateTimerTypes") + @discourseComputed("isPublic", "publicTimerTypes", "privateTimerTypes") selections(isPublic, publicTimerTypes, privateTimerTypes) { return "true" === isPublic ? publicTimerTypes : privateTimerTypes; }, - @computed("isPublic", "model.topic_timer", "model.private_topic_timer") + @discourseComputed( + "isPublic", + "model.topic_timer", + "model.private_topic_timer" + ) topicTimer(isPublic, publicTopicTimer, privateTopicTimer) { return "true" === isPublic ? publicTopicTimer : privateTopicTimer; }, diff --git a/app/assets/javascripts/discourse/controllers/email-login.js.es6 b/app/assets/javascripts/discourse/controllers/email-login.js.es6 index 78ab74f239..01612c766f 100644 --- a/app/assets/javascripts/discourse/controllers/email-login.js.es6 +++ b/app/assets/javascripts/discourse/controllers/email-login.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { SECOND_FACTOR_METHODS } from "discourse/models/user"; import { ajax } from "discourse/lib/ajax"; import DiscourseURL from "discourse/lib/url"; @@ -9,12 +9,12 @@ import { getWebauthnCredential } from "discourse/lib/webauthn"; export default Controller.extend({ lockImageUrl: Discourse.getURL("/images/lock.svg"), - @computed("model") + @discourseComputed("model") secondFactorRequired(model) { return model.security_key_required || model.second_factor_required; }, - @computed("model") + @discourseComputed("model") secondFactorMethod(model) { return model.security_key_required ? SECOND_FACTOR_METHODS.SECURITY_KEY diff --git a/app/assets/javascripts/discourse/controllers/exception.js.es6 b/app/assets/javascripts/discourse/controllers/exception.js.es6 index 7967f2d24a..f53eff91fd 100644 --- a/app/assets/javascripts/discourse/controllers/exception.js.es6 +++ b/app/assets/javascripts/discourse/controllers/exception.js.es6 @@ -3,8 +3,8 @@ import { schedule } from "@ember/runloop"; import Controller from "@ember/controller"; import { on, - default as computed -} from "ember-addons/ember-computed-decorators"; + default as discourseComputed +} from "discourse-common/utils/decorators"; const ButtonBackBright = { classes: "btn-primary", @@ -33,7 +33,7 @@ export default Controller.extend({ thrown: null, lastTransition: null, - @computed + @discourseComputed isNetwork() { // never made it on the wire if (this.get("thrown.readyState") === 0) return true; @@ -60,7 +60,7 @@ export default Controller.extend({ this.set("loading", false); }, - @computed("isNetwork", "isServer", "isUnknown") + @discourseComputed("isNetwork", "isServer", "isUnknown") reason() { if (this.isNetwork) { return I18n.t("errors.reasons.network"); @@ -78,7 +78,7 @@ export default Controller.extend({ requestUrl: alias("thrown.requestedUrl"), - @computed("networkFixed", "isNetwork", "isServer", "isUnknown") + @discourseComputed("networkFixed", "isNetwork", "isServer", "isUnknown") desc() { if (this.networkFixed) { return I18n.t("errors.desc.network_fixed"); @@ -96,7 +96,7 @@ export default Controller.extend({ } }, - @computed("networkFixed", "isNetwork", "isServer", "isUnknown") + @discourseComputed("networkFixed", "isNetwork", "isServer", "isUnknown") enabledButtons() { if (this.networkFixed) { return [ButtonLoadPage]; diff --git a/app/assets/javascripts/discourse/controllers/feature-topic.js.es6 b/app/assets/javascripts/discourse/controllers/feature-topic.js.es6 index 48ca403722..3535e355ce 100644 --- a/app/assets/javascripts/discourse/controllers/feature-topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/feature-topic.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { ajax } from "discourse/lib/ajax"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { categoryLinkHTML } from "discourse/helpers/category-link"; -import computed from "ember-addons/ember-computed-decorators"; import InputValidation from "discourse/models/input-validation"; export default Controller.extend(ModalFunctionality, { @@ -23,12 +23,16 @@ export default Controller.extend(ModalFunctionality, { }); }, - @computed("model.category") + @discourseComputed("model.category") categoryLink(category) { return categoryLinkHTML(category, { allowUncategorized: true }); }, - @computed("categoryLink", "model.pinned_globally", "model.pinned_until") + @discourseComputed( + "categoryLink", + "model.pinned_globally", + "model.pinned_until" + ) unPinMessage(categoryLink, pinnedGlobally, pinnedUntil) { let name = "topic.feature_topic.unpin"; if (pinnedGlobally) name += "_globally"; @@ -38,12 +42,12 @@ export default Controller.extend(ModalFunctionality, { return I18n.t(name, { categoryLink, until }); }, - @computed("categoryLink") + @discourseComputed("categoryLink") pinMessage(categoryLink) { return I18n.t("topic.feature_topic.pin", { categoryLink }); }, - @computed("categoryLink", "pinnedInCategoryCount") + @discourseComputed("categoryLink", "pinnedInCategoryCount") alreadyPinnedMessage(categoryLink, count) { const key = count === 0 @@ -52,27 +56,27 @@ export default Controller.extend(ModalFunctionality, { return I18n.t(key, { categoryLink, count }); }, - @computed("parsedPinnedInCategoryUntil") + @discourseComputed("parsedPinnedInCategoryUntil") pinDisabled(parsedPinnedInCategoryUntil) { return !this._isDateValid(parsedPinnedInCategoryUntil); }, - @computed("parsedPinnedGloballyUntil") + @discourseComputed("parsedPinnedGloballyUntil") pinGloballyDisabled(parsedPinnedGloballyUntil) { return !this._isDateValid(parsedPinnedGloballyUntil); }, - @computed("model.pinnedInCategoryUntil") + @discourseComputed("model.pinnedInCategoryUntil") parsedPinnedInCategoryUntil(pinnedInCategoryUntil) { return this._parseDate(pinnedInCategoryUntil); }, - @computed("model.pinnedGloballyUntil") + @discourseComputed("model.pinnedGloballyUntil") parsedPinnedGloballyUntil(pinnedGloballyUntil) { return this._parseDate(pinnedGloballyUntil); }, - @computed("pinDisabled") + @discourseComputed("pinDisabled") pinInCategoryValidation(pinDisabled) { if (pinDisabled) { return InputValidation.create({ @@ -82,7 +86,7 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed("pinGloballyDisabled") + @discourseComputed("pinGloballyDisabled") pinGloballyValidation(pinGloballyDisabled) { if (pinGloballyDisabled) { return InputValidation.create({ diff --git a/app/assets/javascripts/discourse/controllers/flag.js.es6 b/app/assets/javascripts/discourse/controllers/flag.js.es6 index 8f3c49ebc5..9eb3ae711d 100644 --- a/app/assets/javascripts/discourse/controllers/flag.js.es6 +++ b/app/assets/javascripts/discourse/controllers/flag.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { not } from "@ember/object/computed"; import EmberObject from "@ember/object"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import ActionSummary from "discourse/models/action-summary"; import { MAX_MESSAGE_LENGTH } from "discourse/models/post-action-type"; -import computed from "ember-addons/ember-computed-decorators"; import optionalService from "discourse/lib/optional-service"; import { popupAjaxError } from "discourse/lib/ajax-error"; @@ -32,17 +32,17 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed("spammerDetails.canDelete", "selected.name_key") + @discourseComputed("spammerDetails.canDelete", "selected.name_key") showDeleteSpammer(canDeleteSpammer, nameKey) { return canDeleteSpammer && nameKey === "spam"; }, - @computed("flagTopic") + @discourseComputed("flagTopic") title(flagTopic) { return flagTopic ? "flagging_topic.title" : "flagging.title"; }, - @computed("post", "flagTopic", "model.actions_summary.@each.can_act") + @discourseComputed("post", "flagTopic", "model.actions_summary.@each.can_act") flagsAvailable() { if (!this.flagTopic) { // flagging post @@ -77,7 +77,7 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed("post", "flagTopic", "model.actions_summary.@each.can_act") + @discourseComputed("post", "flagTopic", "model.actions_summary.@each.can_act") staffFlagsAvailable() { return ( this.get("model.flagsAvailable") && @@ -85,7 +85,7 @@ export default Controller.extend(ModalFunctionality, { ); }, - @computed("selected.is_custom_flag", "message.length") + @discourseComputed("selected.is_custom_flag", "message.length") submitEnabled() { const selected = this.selected; if (!selected) return false; @@ -103,17 +103,17 @@ export default Controller.extend(ModalFunctionality, { submitDisabled: not("submitEnabled"), // Staff accounts can "take action" - @computed("flagTopic", "selected.is_custom_flag") + @discourseComputed("flagTopic", "selected.is_custom_flag") canTakeAction(flagTopic, isCustomFlag) { return !flagTopic && !isCustomFlag && this.currentUser.get("staff"); }, - @computed("selected.is_custom_flag") + @discourseComputed("selected.is_custom_flag") submitIcon(isCustomFlag) { return isCustomFlag ? "envelope" : "flag"; }, - @computed("selected.is_custom_flag", "flagTopic") + @discourseComputed("selected.is_custom_flag", "flagTopic") submitLabel(isCustomFlag, flagTopic) { if (isCustomFlag) { return flagTopic @@ -193,7 +193,7 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed("flagTopic", "selected.name_key") + @discourseComputed("flagTopic", "selected.name_key") canSendWarning(flagTopic, nameKey) { return ( !flagTopic && this.currentUser.get("staff") && nameKey === "notify_user" diff --git a/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 b/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 index ae5d53679d..0f667683ad 100644 --- a/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 +++ b/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 @@ -1,16 +1,16 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; import { ajax } from "discourse/lib/ajax"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { escapeExpression } from "discourse/lib/utilities"; import { extractError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(ModalFunctionality, { offerHelp: null, helpSeen: false, - @computed("accountEmailOrUsername", "disabled") + @discourseComputed("accountEmailOrUsername", "disabled") submitDisabled(accountEmailOrUsername, disabled) { return isEmpty((accountEmailOrUsername || "").trim()) || disabled; }, diff --git a/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 b/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 index 0b37bead27..d62a2a8177 100644 --- a/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 +++ b/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 @@ -10,9 +10,9 @@ import { isValidSearchTerm } from "discourse/lib/search"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import Category from "discourse/models/category"; import { escapeExpression } from "discourse/lib/utilities"; import { setTransient } from "discourse/lib/page-tracker"; @@ -47,17 +47,17 @@ export default Controller.extend({ page: 1, resultCount: null, - @computed("resultCount") + @discourseComputed("resultCount") hasResults(resultCount) { return (resultCount || 0) > 0; }, - @computed("q") + @discourseComputed("q") hasAutofocus(q) { return isEmpty(q); }, - @computed("q") + @discourseComputed("q") highlightQuery(q) { if (!q) { return; @@ -66,7 +66,7 @@ export default Controller.extend({ return _.reject(q.split(/\s+/), t => t === "l").join(" "); }, - @computed("skip_context", "context") + @discourseComputed("skip_context", "context") searchContextEnabled: { get(skip, context) { return (!skip && context) || skip === "false"; @@ -76,7 +76,7 @@ export default Controller.extend({ } }, - @computed("context", "context_id") + @discourseComputed("context", "context_id") searchContextDescription(context, id) { var name = id; if (context === "category") { @@ -90,18 +90,18 @@ export default Controller.extend({ return searchContextDescription(context, name); }, - @computed("q") + @discourseComputed("q") searchActive(q) { return isValidSearchTerm(q); }, - @computed("q") + @discourseComputed("q") noSortQ(q) { q = this.cleanTerm(q); return escapeExpression(q); }, - @computed("canCreateTopic", "siteSettings.login_required") + @discourseComputed("canCreateTopic", "siteSettings.login_required") showSuggestion(canCreateTopic, loginRequired) { return canCreateTopic || !loginRequired; }, @@ -146,7 +146,7 @@ export default Controller.extend({ } }, - @computed("q") + @discourseComputed("q") showLikeCount(q) { return q && q.indexOf("order:likes") > -1; }, @@ -160,7 +160,7 @@ export default Controller.extend({ } }, - @computed("q") + @discourseComputed("q") isPrivateMessage(q) { return ( q && @@ -177,7 +177,7 @@ export default Controller.extend({ this.set("application.showFooter", !this.loading); }, - @computed("resultCount", "noSortQ") + @discourseComputed("resultCount", "noSortQ") resultCountLabel(count, term) { const plus = count % 50 === 0 ? "+" : ""; return I18n.t("search.result_count", { count, plus, term }); @@ -188,17 +188,17 @@ export default Controller.extend({ this.set("resultCount", this.get("model.posts.length")); }, - @computed("hasResults") + @discourseComputed("hasResults") canBulkSelect(hasResults) { return this.currentUser && this.currentUser.staff && hasResults; }, - @computed("model.grouped_search_result.can_create_topic") + @discourseComputed("model.grouped_search_result.can_create_topic") canCreateTopic(userCanCreateTopic) { return this.currentUser && userCanCreateTopic; }, - @computed("page") + @discourseComputed("page") isLastPage(page) { return page === PAGE_LIMIT; }, diff --git a/app/assets/javascripts/discourse/controllers/grant-badge.js.es6 b/app/assets/javascripts/discourse/controllers/grant-badge.js.es6 index 287b6a6994..a3cd4e11e8 100644 --- a/app/assets/javascripts/discourse/controllers/grant-badge.js.es6 +++ b/app/assets/javascripts/discourse/controllers/grant-badge.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { extractError } from "discourse/lib/ajax-error"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import GrantBadgeController from "discourse/mixins/grant-badge-controller"; @@ -21,12 +21,12 @@ export default Controller.extend(ModalFunctionality, GrantBadgeController, { this.userBadges = []; }, - @computed("topicController.selectedPosts") + @discourseComputed("topicController.selectedPosts") post() { return this.get("topicController.selectedPosts")[0]; }, - @computed("post") + @discourseComputed("post") badgeReason(post) { const url = post.get("url"); const protocolAndHost = @@ -35,7 +35,7 @@ export default Controller.extend(ModalFunctionality, GrantBadgeController, { return url.indexOf("/") === 0 ? protocolAndHost + url : url; }, - @computed("saving", "selectedBadgeGrantable") + @discourseComputed("saving", "selectedBadgeGrantable") buttonDisabled(saving, selectedBadgeGrantable) { return saving || !selectedBadgeGrantable; }, diff --git a/app/assets/javascripts/discourse/controllers/group-activity-posts.js.es6 b/app/assets/javascripts/discourse/controllers/group-activity-posts.js.es6 index ed648a3dec..d73bf08d2f 100644 --- a/app/assets/javascripts/discourse/controllers/group-activity-posts.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-activity-posts.js.es6 @@ -1,6 +1,6 @@ import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import { fmt } from "discourse/lib/computed"; export default Controller.extend({ diff --git a/app/assets/javascripts/discourse/controllers/group-add-members.js.es6 b/app/assets/javascripts/discourse/controllers/group-add-members.js.es6 index 53c1327c42..9b1f888113 100644 --- a/app/assets/javascripts/discourse/controllers/group-add-members.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-add-members.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { extractError } from "discourse/lib/ajax-error"; import ModalFunctionality from "discourse/mixins/modal-functionality"; @@ -8,7 +8,7 @@ export default Controller.extend(ModalFunctionality, { loading: false, setAsOwner: false, - @computed("model.usernames", "loading") + @discourseComputed("model.usernames", "loading") disableAddButton(usernames, loading) { return loading || !usernames || !(usernames.length > 0); }, diff --git a/app/assets/javascripts/discourse/controllers/group-bulk-add.js.es6 b/app/assets/javascripts/discourse/controllers/group-bulk-add.js.es6 index bef9d535f4..0310d4e309 100644 --- a/app/assets/javascripts/discourse/controllers/group-bulk-add.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-bulk-add.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { extractError } from "discourse/lib/ajax-error"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { ajax } from "discourse/lib/ajax"; @@ -8,7 +8,7 @@ import { ajax } from "discourse/lib/ajax"; export default Controller.extend(ModalFunctionality, { loading: false, - @computed("input", "loading", "result") + @discourseComputed("input", "loading", "result") disableAddButton(input, loading, result) { return loading || isEmpty(input) || input.length <= 0 || result; }, diff --git a/app/assets/javascripts/discourse/controllers/group-index.js.es6 b/app/assets/javascripts/discourse/controllers/group-index.js.es6 index 2cc94f9f4e..05df6fa12e 100644 --- a/app/assets/javascripts/discourse/controllers/group-index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-index.js.es6 @@ -4,9 +4,9 @@ import Controller from "@ember/controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; import Group from "discourse/models/group"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import debounce from "discourse/lib/debounce"; export default Controller.extend({ @@ -43,22 +43,22 @@ export default Controller.extend({ } }, - @computed("order", "desc", "filter") + @discourseComputed("order", "desc", "filter") memberParams(order, desc, filter) { return { order, desc, filter }; }, - @computed("model.members") + @discourseComputed("model.members") hasMembers(members) { return members && members.length > 0; }, - @computed("model") + @discourseComputed("model") canManageGroup(model) { return this.currentUser && this.currentUser.canManageGroup(model); }, - @computed + @discourseComputed filterPlaceholder() { if (this.currentUser && this.currentUser.admin) { return "groups.members.filter_placeholder_admin"; diff --git a/app/assets/javascripts/discourse/controllers/group-manage-logs.js.es6 b/app/assets/javascripts/discourse/controllers/group-manage-logs.js.es6 index f5c3ba48f3..3aaf3fdb87 100644 --- a/app/assets/javascripts/discourse/controllers/group-manage-logs.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-manage-logs.js.es6 @@ -2,9 +2,9 @@ import { inject } from "@ember/controller"; import EmberObject from "@ember/object"; import Controller from "@ember/controller"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Controller.extend({ group: inject(), @@ -17,7 +17,7 @@ export default Controller.extend({ this.set("filters", EmberObject.create()); }, - @computed( + @discourseComputed( "filters.action", "filters.acting_user", "filters.target_user", diff --git a/app/assets/javascripts/discourse/controllers/group-manage.js.es6 b/app/assets/javascripts/discourse/controllers/group-manage.js.es6 index dab05b6dbc..b99f8a70f9 100644 --- a/app/assets/javascripts/discourse/controllers/group-manage.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-manage.js.es6 @@ -1,11 +1,11 @@ import { inject as service } from "@ember/service"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default Controller.extend({ router: service(), - @computed("model.automatic") + @discourseComputed("model.automatic") tabs(automatic) { const defaultTabs = [ { route: "group.manage.profile", title: "groups.manage.profile.title" }, diff --git a/app/assets/javascripts/discourse/controllers/group-requests.js.es6 b/app/assets/javascripts/discourse/controllers/group-requests.js.es6 index 246fd0cf9a..5be58b2d60 100644 --- a/app/assets/javascripts/discourse/controllers/group-requests.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-requests.js.es6 @@ -4,9 +4,9 @@ import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; import Group from "discourse/models/group"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import debounce from "discourse/lib/debounce"; export default Controller.extend({ @@ -70,12 +70,12 @@ export default Controller.extend({ }); }, - @computed("model.requesters") + @discourseComputed("model.requesters") hasRequesters(requesters) { return requesters && requesters.length > 0; }, - @computed + @discourseComputed filterPlaceholder() { if (this.currentUser && this.currentUser.admin) { return "groups.members.filter_placeholder_admin"; diff --git a/app/assets/javascripts/discourse/controllers/group.js.es6 b/app/assets/javascripts/discourse/controllers/group.js.es6 index 322e7ab12c..bd79392b85 100644 --- a/app/assets/javascripts/discourse/controllers/group.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group.js.es6 @@ -1,7 +1,7 @@ import EmberObject from "@ember/object"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; const Tab = EmberObject.extend({ init() { @@ -18,7 +18,7 @@ export default Controller.extend({ showing: "members", destroying: null, - @computed( + @discourseComputed( "showMessages", "model.user_count", "canManageGroup", @@ -68,7 +68,7 @@ export default Controller.extend({ return defaultTabs; }, - @computed("model.is_group_user") + @discourseComputed("model.is_group_user") showMessages(isGroupUser) { if (!this.siteSettings.enable_personal_messages) { return false; @@ -77,17 +77,17 @@ export default Controller.extend({ return isGroupUser || (this.currentUser && this.currentUser.admin); }, - @computed("model.is_group_owner", "model.automatic") + @discourseComputed("model.is_group_owner", "model.automatic") canEditGroup(isGroupOwner, automatic) { return !automatic && isGroupOwner; }, - @computed("model.displayName", "model.full_name") + @discourseComputed("model.displayName", "model.full_name") groupName(displayName, fullName) { return (fullName || displayName).capitalize(); }, - @computed( + @discourseComputed( "model.name", "model.flair_url", "model.flair_bg_color", @@ -102,12 +102,12 @@ export default Controller.extend({ }; }, - @computed("model.messageable") + @discourseComputed("model.messageable") displayGroupMessageButton(messageable) { return this.currentUser && messageable; }, - @computed("model", "model.automatic") + @discourseComputed("model", "model.automatic") canManageGroup(model, automatic) { return ( this.currentUser && diff --git a/app/assets/javascripts/discourse/controllers/groups-index.js.es6 b/app/assets/javascripts/discourse/controllers/groups-index.js.es6 index a466572b26..9758b30ad5 100644 --- a/app/assets/javascripts/discourse/controllers/groups-index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/groups-index.js.es6 @@ -2,9 +2,9 @@ import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import debounce from "discourse/lib/debounce"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Controller.extend({ application: inject(), @@ -14,7 +14,7 @@ export default Controller.extend({ filter: "", type: null, - @computed("model.extras.type_filters") + @discourseComputed("model.extras.type_filters") types(typeFilters) { const types = []; diff --git a/app/assets/javascripts/discourse/controllers/history.js.es6 b/app/assets/javascripts/discourse/controllers/history.js.es6 index 69ea502d41..79203ed563 100644 --- a/app/assets/javascripts/discourse/controllers/history.js.es6 +++ b/app/assets/javascripts/discourse/controllers/history.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias, gt, not, or, equal } from "@ember/object/computed"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; -import computed from "ember-addons/ember-computed-decorators"; import { propertyGreaterThan, propertyLessThan } from "discourse/lib/computed"; -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; import { sanitizeAsync } from "discourse/lib/text"; import { iconHTML } from "discourse-common/lib/icon-library"; @@ -39,7 +39,11 @@ export default Controller.extend(ModalFunctionality, { previousTagChanges: customTagArray("model.tags_changes.previous"), currentTagChanges: customTagArray("model.tags_changes.current"), - @computed("previousVersion", "model.current_version", "model.version_count") + @discourseComputed( + "previousVersion", + "model.current_version", + "model.version_count" + ) revisionsText(previous, current, total) { return I18n.t( "post.revisions.controls.comparing_previous_to_current_out_of_total", @@ -101,17 +105,17 @@ export default Controller.extend(ModalFunctionality, { }); }, - @computed("model.created_at") + @discourseComputed("model.created_at") createdAtDate(createdAt) { return moment(createdAt).format("LLLL"); }, - @computed("model.current_version") + @discourseComputed("model.current_version") previousVersion(current) { return current - 1; }, - @computed("model.current_revision", "model.previous_revision") + @discourseComputed("model.current_revision", "model.previous_revision") displayGoToPrevious(current, prev) { return prev && current > prev; }, @@ -140,17 +144,17 @@ export default Controller.extend(ModalFunctionality, { loadNextDisabled: or("loading", "hideGoToNext"), loadLastDisabled: or("loading", "hideGoToLast"), - @computed("model.previous_hidden") + @discourseComputed("model.previous_hidden") displayShow(prevHidden) { return prevHidden && this.currentUser && this.currentUser.get("staff"); }, - @computed("model.previous_hidden") + @discourseComputed("model.previous_hidden") displayHide(prevHidden) { return !prevHidden && this.currentUser && this.currentUser.get("staff"); }, - @computed( + @discourseComputed( "model.last_revision", "model.current_revision", "model.can_edit", @@ -160,19 +164,23 @@ export default Controller.extend(ModalFunctionality, { return !!(canEdit && topicController && lastRevision === currentRevision); }, - @computed("model.wiki") + @discourseComputed("model.wiki") editButtonLabel(wiki) { return `post.revisions.controls.${wiki ? "edit_wiki" : "edit_post"}`; }, - @computed() + @discourseComputed() displayRevert() { return this.currentUser && this.currentUser.get("staff"); }, isEitherRevisionHidden: or("model.previous_hidden", "model.current_hidden"), - @computed("model.previous_hidden", "model.current_hidden", "displayingInline") + @discourseComputed( + "model.previous_hidden", + "model.current_hidden", + "displayingInline" + ) hiddenClasses(prevHidden, currentHidden, displayingInline) { if (displayingInline) { return this.isEitherRevisionHidden ? "hidden-revision-either" : null; @@ -192,22 +200,22 @@ export default Controller.extend(ModalFunctionality, { displayingSideBySide: equal("viewMode", "side_by_side"), displayingSideBySideMarkdown: equal("viewMode", "side_by_side_markdown"), - @computed("displayingInline") + @discourseComputed("displayingInline") inlineClass(displayingInline) { return displayingInline ? "btn-danger" : "btn-flat"; }, - @computed("displayingSideBySide") + @discourseComputed("displayingSideBySide") sideBySideClass(displayingSideBySide) { return displayingSideBySide ? "btn-danger" : "btn-flat"; }, - @computed("displayingSideBySideMarkdown") + @discourseComputed("displayingSideBySideMarkdown") sideBySideMarkdownClass(displayingSideBySideMarkdown) { return displayingSideBySideMarkdown ? "btn-danger" : "btn-flat"; }, - @computed("model.category_id_changes") + @discourseComputed("model.category_id_changes") previousCategory(changes) { if (changes) { var category = Discourse.Category.findById(changes["previous"]); @@ -215,7 +223,7 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed("model.category_id_changes") + @discourseComputed("model.category_id_changes") currentCategory(changes) { if (changes) { var category = Discourse.Category.findById(changes["current"]); @@ -223,12 +231,12 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed("model.wiki_changes") + @discourseComputed("model.wiki_changes") wikiDisabled(changes) { return changes && !changes["current"]; }, - @computed("model.post_type_changes") + @discourseComputed("model.post_type_changes") postTypeDisabled(changes) { return ( changes && @@ -236,7 +244,7 @@ export default Controller.extend(ModalFunctionality, { ); }, - @computed("viewMode", "model.title_changes") + @discourseComputed("viewMode", "model.title_changes") titleDiff(viewMode) { if (viewMode === "side_by_side_markdown") { viewMode = "side_by_side"; diff --git a/app/assets/javascripts/discourse/controllers/invites-show.js.es6 b/app/assets/javascripts/discourse/controllers/invites-show.js.es6 index 1b1c99de7d..f6e0ced4fd 100644 --- a/app/assets/javascripts/discourse/controllers/invites-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/invites-show.js.es6 @@ -1,7 +1,7 @@ import { isEmpty } from "@ember/utils"; import { alias, notEmpty } from "@ember/object/computed"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import getUrl from "discourse-common/lib/get-url"; import DiscourseURL from "discourse/lib/url"; import { ajax } from "discourse/lib/ajax"; @@ -26,24 +26,24 @@ export default Controller.extend( userFields: null, inviteImageUrl: getUrl("/images/envelope.svg"), - @computed + @discourseComputed welcomeTitle() { return I18n.t("invites.welcome_to", { site_name: this.siteSettings.title }); }, - @computed("email") + @discourseComputed("email") yourEmailMessage(email) { return I18n.t("invites.your_email", { email: email }); }, - @computed + @discourseComputed externalAuthsEnabled() { return findLoginMethods().length > 0; }, - @computed( + @discourseComputed( "usernameValidation.failed", "passwordValidation.failed", "nameValidation.failed", @@ -58,7 +58,7 @@ export default Controller.extend( return usernameFailed || passwordFailed || nameFailed || userFieldsFailed; }, - @computed + @discourseComputed fullnameRequired() { return ( this.siteSettings.full_name_required || this.siteSettings.enable_names diff --git a/app/assets/javascripts/discourse/controllers/login.js.es6 b/app/assets/javascripts/discourse/controllers/login.js.es6 index 19fbc21fb7..701d410256 100644 --- a/app/assets/javascripts/discourse/controllers/login.js.es6 +++ b/app/assets/javascripts/discourse/controllers/login.js.es6 @@ -1,3 +1,4 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { alias, or, readOnly } from "@ember/object/computed"; import EmberObject from "@ember/object"; @@ -13,7 +14,6 @@ import { findAll } from "discourse/models/login-method"; import { escape } from "pretty-text/sanitizer"; import { escapeExpression, areCookiesEnabled } from "discourse/lib/utilities"; import { extractError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; import { SECOND_FACTOR_METHODS } from "discourse/models/user"; import { getWebauthnCredential } from "discourse/lib/webauthn"; @@ -55,17 +55,17 @@ export default Controller.extend(ModalFunctionality, { }); }, - @computed("showSecondFactor", "showSecurityKey") + @discourseComputed("showSecondFactor", "showSecurityKey") credentialsClass(showSecondFactor, showSecurityKey) { return showSecondFactor || showSecurityKey ? "hidden" : ""; }, - @computed("showSecondFactor", "showSecurityKey") + @discourseComputed("showSecondFactor", "showSecurityKey") secondFactorClass(showSecondFactor, showSecurityKey) { return showSecondFactor || showSecurityKey ? "" : "hidden"; }, - @computed("awaitingApproval", "hasAtLeastOneLoginButton") + @discourseComputed("awaitingApproval", "hasAtLeastOneLoginButton") modalBodyClasses(awaitingApproval, hasAtLeastOneLoginButton) { const classes = ["login-modal"]; if (awaitingApproval) classes.push("awaiting-approval"); @@ -73,31 +73,31 @@ export default Controller.extend(ModalFunctionality, { return classes.join(" "); }, - @computed("showSecondFactor", "showSecurityKey") + @discourseComputed("showSecondFactor", "showSecurityKey") disableLoginFields(showSecondFactor, showSecurityKey) { return showSecondFactor || showSecurityKey; }, - @computed("canLoginLocalWithEmail") + @discourseComputed("canLoginLocalWithEmail") hasAtLeastOneLoginButton(canLoginLocalWithEmail) { return findAll().length > 0 || canLoginLocalWithEmail; }, - @computed("loggingIn") + @discourseComputed("loggingIn") loginButtonLabel(loggingIn) { return loggingIn ? "login.logging_in" : "login.title"; }, loginDisabled: or("loggingIn", "loggedIn"), - @computed("loggingIn", "application.canSignUp") + @discourseComputed("loggingIn", "application.canSignUp") showSignupLink(loggingIn, canSignUp) { return canSignUp && !loggingIn; }, showSpinner: readOnly("loggingIn"), - @computed("canLoginLocalWithEmail", "processingEmailLink") + @discourseComputed("canLoginLocalWithEmail", "processingEmailLink") showLoginWithEmailLink(canLoginLocalWithEmail, processingEmailLink) { return canLoginLocalWithEmail && !processingEmailLink; }, diff --git a/app/assets/javascripts/discourse/controllers/move-to-topic.js.es6 b/app/assets/javascripts/discourse/controllers/move-to-topic.js.es6 index c8934801cb..609ae2cf2d 100644 --- a/app/assets/javascripts/discourse/controllers/move-to-topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/move-to-topic.js.es6 @@ -6,7 +6,7 @@ import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { movePosts, mergeTopic } from "discourse/models/topic"; import DiscourseURL from "discourse/lib/url"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { extractError } from "discourse/lib/ajax-error"; export default Controller.extend(ModalFunctionality, { @@ -46,12 +46,12 @@ export default Controller.extend(ModalFunctionality, { selectedAllPosts: alias("topicController.selectedAllPosts"), selectedPosts: alias("topicController.selectedPosts"), - @computed("saving", "selectedTopicId", "topicName") + @discourseComputed("saving", "selectedTopicId", "topicName") buttonDisabled(saving, selectedTopicId, topicName) { return saving || (isEmpty(selectedTopicId) && isEmpty(topicName)); }, - @computed( + @discourseComputed( "saving", "newTopic", "existingTopic", @@ -95,7 +95,7 @@ export default Controller.extend(ModalFunctionality, { } }, - @computed("selectedAllPosts", "selectedPosts", "selectedPosts.[]") + @discourseComputed("selectedAllPosts", "selectedPosts", "selectedPosts.[]") canSplitTopic(selectedAllPosts, selectedPosts) { return ( !selectedAllPosts && @@ -105,7 +105,7 @@ export default Controller.extend(ModalFunctionality, { ); }, - @computed("canSplitTopic") + @discourseComputed("canSplitTopic") canSplitToPM(canSplitTopic) { return canSplitTopic && (this.currentUser && this.currentUser.admin); }, diff --git a/app/assets/javascripts/discourse/controllers/navigation/categories.js.es6 b/app/assets/javascripts/discourse/controllers/navigation/categories.js.es6 index 216ca0448f..db7ac2bae9 100644 --- a/app/assets/javascripts/discourse/controllers/navigation/categories.js.es6 +++ b/app/assets/javascripts/discourse/controllers/navigation/categories.js.es6 @@ -1,11 +1,14 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import NavigationDefaultController from "discourse/controllers/navigation/default"; -import computed from "ember-addons/ember-computed-decorators"; export default NavigationDefaultController.extend({ discoveryCategories: inject("discovery/categories"), - @computed("discoveryCategories.model", "discoveryCategories.model.draft") + @discourseComputed( + "discoveryCategories.model", + "discoveryCategories.model.draft" + ) draft() { return this.get("discoveryCategories.model.draft"); } diff --git a/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 b/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 index 9d4d051974..23220761c1 100644 --- a/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 +++ b/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 @@ -1,12 +1,12 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ discovery: inject(), discoveryTopics: inject("discovery/topics"), - @computed("discoveryTopics.model", "discoveryTopics.model.draft") + @discourseComputed("discoveryTopics.model", "discoveryTopics.model.draft") draft: function() { return this.get("discoveryTopics.model.draft"); } diff --git a/app/assets/javascripts/discourse/controllers/password-reset.js.es6 b/app/assets/javascripts/discourse/controllers/password-reset.js.es6 index b7a4545aed..7f3718482e 100644 --- a/app/assets/javascripts/discourse/controllers/password-reset.js.es6 +++ b/app/assets/javascripts/discourse/controllers/password-reset.js.es6 @@ -1,6 +1,6 @@ import { alias, or } from "@ember/object/computed"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import DiscourseURL from "discourse/lib/url"; import { ajax } from "discourse/lib/ajax"; import PasswordValidation from "discourse/mixins/password-validation"; @@ -18,7 +18,7 @@ export default Controller.extend(PasswordValidation, { "model.second_factor_required", "model.security_key_required" ), - @computed("model.security_key_required") + @discourseComputed("model.security_key_required") secondFactorMethod(security_key_required) { return security_key_required ? SECOND_FACTOR_METHODS.SECURITY_KEY @@ -30,14 +30,14 @@ export default Controller.extend(PasswordValidation, { requiresApproval: false, redirected: false, - @computed() + @discourseComputed() continueButtonText() { return I18n.t("password_reset.continue", { site_name: this.siteSettings.title }); }, - @computed("redirectTo") + @discourseComputed("redirectTo") redirectHref(redirectTo) { return Discourse.getURL(redirectTo || "/"); }, diff --git a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 index e30386afdf..337cac9db1 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 @@ -3,7 +3,7 @@ import { not, or, gt } from "@ember/object/computed"; import Controller from "@ember/controller"; import { iconHTML } from "discourse-common/lib/icon-library"; import CanCheckEmails from "discourse/mixins/can-check-emails"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import PreferencesTabController from "discourse/mixins/preferences-tab-controller"; import { propertyNotEqual, setting } from "discourse/lib/computed"; import { popupAjaxError } from "discourse/lib/ajax-error"; @@ -43,7 +43,7 @@ export default Controller.extend(CanCheckEmails, PreferencesTabController, { this.set("passwordProgress", null); }, - @computed() + @discourseComputed() nameInstructions() { return I18n.t( this.siteSettings.full_name_required @@ -54,7 +54,7 @@ export default Controller.extend(CanCheckEmails, PreferencesTabController, { canSelectTitle: gt("model.availableTitles.length", 0), - @computed("model.filteredGroups") + @discourseComputed("model.filteredGroups") canSelectPrimaryGroup(primaryGroupOptions) { return ( primaryGroupOptions.length > 0 && @@ -62,7 +62,7 @@ export default Controller.extend(CanCheckEmails, PreferencesTabController, { ); }, - @computed("model.is_anonymous") + @discourseComputed("model.is_anonymous") canChangePassword(isAnonymous) { if (isAnonymous) { return false; @@ -73,12 +73,12 @@ export default Controller.extend(CanCheckEmails, PreferencesTabController, { } }, - @computed("model.associated_accounts") + @discourseComputed("model.associated_accounts") associatedAccountsLoaded(associatedAccounts) { return typeof associatedAccounts !== "undefined"; }, - @computed("model.associated_accounts.[]") + @discourseComputed("model.associated_accounts.[]") authProviders(accounts) { const allMethods = findAll(); @@ -94,7 +94,7 @@ export default Controller.extend(CanCheckEmails, PreferencesTabController, { disableConnectButtons: propertyNotEqual("model.id", "currentUser.id"), - @computed( + @discourseComputed( "model.second_factor_enabled", "canCheckEmails", "model.is_anonymous" @@ -110,7 +110,7 @@ export default Controller.extend(CanCheckEmails, PreferencesTabController, { return findAll().length > 0; }, - @computed("showAllAuthTokens", "model.user_auth_tokens") + @discourseComputed("showAllAuthTokens", "model.user_auth_tokens") authTokens(showAllAuthTokens, tokens) { tokens.sort((a, b) => { if (a.is_active) { diff --git a/app/assets/javascripts/discourse/controllers/preferences/categories.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/categories.js.es6 index 8f86974e38..4628234524 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/categories.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/categories.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { or } from "@ember/object/computed"; import Controller from "@ember/controller"; import PreferencesTabController from "discourse/mixins/preferences-tab-controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(PreferencesTabController, { init() { @@ -16,7 +16,7 @@ export default Controller.extend(PreferencesTabController, { ]; }, - @computed( + @discourseComputed( "model.watchedCategories", "model.watchedFirstPostCategories", "model.trackedCategories", @@ -26,12 +26,12 @@ export default Controller.extend(PreferencesTabController, { return [].concat(watched, watchedFirst, tracked, muted).filter(t => t); }, - @computed + @discourseComputed canSee() { return this.get("currentUser.id") === this.get("model.id"); }, - @computed("siteSettings.remove_muted_tags_from_latest") + @discourseComputed("siteSettings.remove_muted_tags_from_latest") hideMutedTags() { return this.siteSettings.remove_muted_tags_from_latest !== "never"; }, diff --git a/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 index c25db36a43..94a13ae596 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { empty, or } from "@ember/object/computed"; import Controller from "@ember/controller"; import { propertyEqual } from "discourse/lib/computed"; import InputValidation from "discourse/models/input-validation"; import { emailValid } from "discourse/lib/utilities"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ taken: false, @@ -24,23 +24,23 @@ export default Controller.extend({ unchanged: propertyEqual("newEmailLower", "currentUser.email"), - @computed("newEmail") + @discourseComputed("newEmail") newEmailLower(newEmail) { return newEmail.toLowerCase().trim(); }, - @computed("saving") + @discourseComputed("saving") saveButtonText(saving) { if (saving) return I18n.t("saving"); return I18n.t("user.change"); }, - @computed("newEmail") + @discourseComputed("newEmail") invalidEmail(newEmail) { return !emailValid(newEmail); }, - @computed("invalidEmail") + @discourseComputed("invalidEmail") emailValidation(invalidEmail) { if (invalidEmail) { return InputValidation.create({ diff --git a/app/assets/javascripts/discourse/controllers/preferences/emails.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/emails.js.es6 index a2001457e5..008ed9c8cd 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/emails.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/emails.js.es6 @@ -1,7 +1,7 @@ import { equal } from "@ember/object/computed"; import Controller from "@ember/controller"; import PreferencesTabController from "discourse/mixins/preferences-tab-controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; const EMAIL_LEVELS = { @@ -60,7 +60,7 @@ export default Controller.extend(PreferencesTabController, { ]; }, - @computed() + @discourseComputed() frequencyEstimate() { var estimate = this.get("model.mailing_list_posts_per_day"); if (!estimate || estimate < 2) { @@ -72,7 +72,7 @@ export default Controller.extend(PreferencesTabController, { } }, - @computed() + @discourseComputed() mailingListModeOptions() { return [ { name: this.frequencyEstimate, value: 1 }, @@ -80,7 +80,7 @@ export default Controller.extend(PreferencesTabController, { ]; }, - @computed() + @discourseComputed() emailFrequencyInstructions() { if (this.siteSettings.email_time_window_mins) { return I18n.t("user.email.frequency", { diff --git a/app/assets/javascripts/discourse/controllers/preferences/interface.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/interface.js.es6 index 9ef7280fc2..370d5b9a4d 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/interface.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/interface.js.es6 @@ -3,9 +3,9 @@ import Controller from "@ember/controller"; import PreferencesTabController from "discourse/mixins/preferences-tab-controller"; import { setDefaultHomepage } from "discourse/lib/utilities"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { listThemes, previewTheme, @@ -30,7 +30,7 @@ const TEXT_SIZES = ["smaller", "normal", "larger", "largest"]; const TITLE_COUNT_MODES = ["notifications", "contextual"]; export default Controller.extend(PreferencesTabController, { - @computed("makeThemeDefault") + @discourseComputed("makeThemeDefault") saveAttrNames(makeDefault) { let attrs = [ "locale", @@ -55,43 +55,43 @@ export default Controller.extend(PreferencesTabController, { preferencesController: inject("preferences"), - @computed() + @discourseComputed() isiPad() { // TODO: remove this preference checkbox when iOS adoption > 90% // (currently only applies to iOS 12 and below) return isiPad() && !iOSWithVisualViewport(); }, - @computed() + @discourseComputed() disableSafariHacks() { return safariHacksDisabled(); }, - @computed() + @discourseComputed() availableLocales() { return JSON.parse(this.siteSettings.available_locales); }, - @computed + @discourseComputed textSizes() { return TEXT_SIZES.map(value => { return { name: I18n.t(`user.text_size.${value}`), value }; }); }, - @computed + @discourseComputed titleCountModes() { return TITLE_COUNT_MODES.map(value => { return { name: I18n.t(`user.title_count_mode.${value}`), value }; }); }, - @computed + @discourseComputed userSelectableThemes() { return listThemes(this.site); }, - @computed("userSelectableThemes") + @discourseComputed("userSelectableThemes") showThemeSelector(themes) { return themes && themes.length > 1; }, @@ -102,12 +102,12 @@ export default Controller.extend(PreferencesTabController, { previewTheme([id]); }, - @computed("model.user_option.theme_ids", "themeId") + @discourseComputed("model.user_option.theme_ids", "themeId") showThemeSetDefault(userOptionThemes, selectedTheme) { return !userOptionThemes || userOptionThemes[0] !== selectedTheme; }, - @computed("model.user_option.text_size", "textSize") + @discourseComputed("model.user_option.text_size", "textSize") showTextSetDefault(userOptionTextSize, selectedTextSize) { return userOptionTextSize !== selectedTextSize; }, @@ -119,7 +119,7 @@ export default Controller.extend(PreferencesTabController, { setDefaultHomepage(userHome || siteHome); }, - @computed() + @discourseComputed() userSelectableHome() { let homeValues = {}; Object.keys(USER_HOMES).forEach(newValue => { diff --git a/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 index b4e9a46fac..f726f87e17 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 @@ -1,7 +1,7 @@ import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import PreferencesTabController from "discourse/mixins/preferences-tab-controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { cookAsync } from "discourse/lib/text"; @@ -22,7 +22,7 @@ export default Controller.extend(PreferencesTabController, { ]; }, - @computed("model.user_fields.@each.value") + @discourseComputed("model.user_fields.@each.value") userFields() { let siteUserFields = this.site.get("user_fields"); if (!isEmpty(siteUserFields)) { @@ -41,7 +41,7 @@ export default Controller.extend(PreferencesTabController, { } }, - @computed("model.can_change_bio") + @discourseComputed("model.can_change_bio") canChangeBio(canChangeBio) { return canChangeBio; }, diff --git a/app/assets/javascripts/discourse/controllers/preferences/second-factor.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/second-factor.js.es6 index 233ed03390..21e9a55f38 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/second-factor.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/second-factor.js.es6 @@ -1,6 +1,6 @@ import { alias, and } from "@ember/object/computed"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import CanCheckEmails from "discourse/mixins/can-check-emails"; import { default as DiscourseURL, userPath } from "discourse/lib/url"; import { popupAjaxError } from "discourse/lib/ajax-error"; @@ -27,12 +27,12 @@ export default Controller.extend(CanCheckEmails, { this.set("totps", []); }, - @computed + @discourseComputed displayOAuthWarning() { return findAll().length > 0; }, - @computed("currentUser") + @discourseComputed("currentUser") showEnforcedNotice(user) { return user && user.enforcedSecondFactor; }, diff --git a/app/assets/javascripts/discourse/controllers/preferences/tags.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/tags.js.es6 index 85d1241ad3..1aede6792d 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/tags.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/tags.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; import PreferencesTabController from "discourse/mixins/preferences-tab-controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(PreferencesTabController, { init() { @@ -15,7 +15,7 @@ export default Controller.extend(PreferencesTabController, { ]; }, - @computed( + @discourseComputed( "model.watched_tags.[]", "model.watching_first_post_tags.[]", "model.tracked_tags.[]", diff --git a/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 index 954e8c739e..6d3f8ea6cc 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 @@ -2,9 +2,9 @@ import { isEmpty } from "@ember/utils"; import { empty, or } from "@ember/object/computed"; import Controller from "@ember/controller"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { setting, propertyEqual } from "discourse/lib/computed"; import DiscourseURL from "discourse/lib/url"; import { userPath } from "discourse/lib/url"; @@ -55,7 +55,7 @@ export default Controller.extend({ } }, - @computed("saving") + @discourseComputed("saving") saveButtonText(saving) { if (saving) return I18n.t("saving"); return I18n.t("user.change"); diff --git a/app/assets/javascripts/discourse/controllers/rename-tag.js.es6 b/app/assets/javascripts/discourse/controllers/rename-tag.js.es6 index b08bc2d646..4bb35a34ca 100644 --- a/app/assets/javascripts/discourse/controllers/rename-tag.js.es6 +++ b/app/assets/javascripts/discourse/controllers/rename-tag.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; -import computed from "ember-addons/ember-computed-decorators"; import BufferedContent from "discourse/mixins/buffered-content"; import { extractError } from "discourse/lib/ajax-error"; export default Controller.extend(ModalFunctionality, BufferedContent, { - @computed("buffered.id", "id") + @discourseComputed("buffered.id", "id") renameDisabled(inputTagName, currentTagName) { const filterRegexp = new RegExp(this.site.tags_filter_regexp, "g"); const newTagName = inputTagName diff --git a/app/assets/javascripts/discourse/controllers/reorder-categories.js.es6 b/app/assets/javascripts/discourse/controllers/reorder-categories.js.es6 index 06d5f30cca..cf7c2ca7cb 100644 --- a/app/assets/javascripts/discourse/controllers/reorder-categories.js.es6 +++ b/app/assets/javascripts/discourse/controllers/reorder-categories.js.es6 @@ -7,8 +7,8 @@ const BufferedProxy = window.BufferedProxy; // import BufferedProxy from 'ember- import { popupAjaxError } from "discourse/lib/ajax-error"; import { on, - default as computed -} from "ember-addons/ember-computed-decorators"; + default as discourseComputed +} from "discourse-common/utils/decorators"; import Ember from "ember"; export default Controller.extend(ModalFunctionality, Ember.Evented, { @@ -23,7 +23,7 @@ export default Controller.extend(ModalFunctionality, Ember.Evented, { this.fixIndices(); }, - @computed("site.categories") + @discourseComputed("site.categories") categoriesBuffered(categories) { const bufProxy = EmberObjectProxy.extend(BufferedProxy); return categories.map(c => bufProxy.create({ content: c })); @@ -31,7 +31,7 @@ export default Controller.extend(ModalFunctionality, Ember.Evented, { categoriesOrdered: sort("categoriesBuffered", "categoriesSorting"), - @computed("categoriesBuffered.@each.hasBufferedChanges") + @discourseComputed("categoriesBuffered.@each.hasBufferedChanges") showApplyAll() { let anyChanged = false; this.categoriesBuffered.forEach(bc => { diff --git a/app/assets/javascripts/discourse/controllers/request-group-membership-form.js.es6 b/app/assets/javascripts/discourse/controllers/request-group-membership-form.js.es6 index 0f316873ce..bbb54d03dd 100644 --- a/app/assets/javascripts/discourse/controllers/request-group-membership-form.js.es6 +++ b/app/assets/javascripts/discourse/controllers/request-group-membership-form.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; import DiscourseURL from "discourse/lib/url"; import ModalFunctionality from "discourse/mixins/modal-functionality"; @@ -10,12 +10,12 @@ export default Controller.extend(ModalFunctionality, { loading: false, reason: alias("model.membership_request_template"), - @computed("model.name") + @discourseComputed("model.name") title(groupName) { return I18n.t("groups.membership_request.title", { group_name: groupName }); }, - @computed("loading", "reason") + @discourseComputed("loading", "reason") disableSubmit(loading, reason) { return loading || isEmpty(reason); }, diff --git a/app/assets/javascripts/discourse/controllers/review-index.js.es6 b/app/assets/javascripts/discourse/controllers/review-index.js.es6 index 75ab25b4f1..df95f33cfb 100644 --- a/app/assets/javascripts/discourse/controllers/review-index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/review-index.js.es6 @@ -1,5 +1,5 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend({ queryParams: [ @@ -27,7 +27,7 @@ export default Controller.extend({ this.set("filtersExpanded", !this.site.mobileView); }, - @computed("reviewableTypes") + @discourseComputed("reviewableTypes") allTypes() { return (this.reviewableTypes || []).map(type => { return { @@ -37,7 +37,7 @@ export default Controller.extend({ }); }, - @computed + @discourseComputed priorities() { return ["low", "medium", "high"].map(priority => { return { @@ -47,7 +47,7 @@ export default Controller.extend({ }); }, - @computed + @discourseComputed sortOrders() { return ["priority", "priority_asc", "created_at", "created_at_asc"].map( order => { @@ -59,7 +59,7 @@ export default Controller.extend({ ); }, - @computed + @discourseComputed statuses() { return [ "pending", @@ -74,7 +74,7 @@ export default Controller.extend({ }); }, - @computed("filtersExpanded") + @discourseComputed("filtersExpanded") toggleFiltersIcon(filtersExpanded) { return filtersExpanded ? "chevron-up" : "chevron-down"; }, diff --git a/app/assets/javascripts/discourse/controllers/search-help.js.es6 b/app/assets/javascripts/discourse/controllers/search-help.js.es6 index 654722d2c7..1475373480 100644 --- a/app/assets/javascripts/discourse/controllers/search-help.js.es6 +++ b/app/assets/javascripts/discourse/controllers/search-help.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; -import computed from "ember-addons/ember-computed-decorators"; export default Controller.extend(ModalFunctionality, { - @computed + @discourseComputed showGoogleSearch() { return !Discourse.SiteSettings.login_required; } diff --git a/app/assets/javascripts/discourse/controllers/second-factor-backup-edit.js.es6 b/app/assets/javascripts/discourse/controllers/second-factor-backup-edit.js.es6 index 2801056c71..35b24b07df 100644 --- a/app/assets/javascripts/discourse/controllers/second-factor-backup-edit.js.es6 +++ b/app/assets/javascripts/discourse/controllers/second-factor-backup-edit.js.es6 @@ -1,7 +1,7 @@ import { alias } from "@ember/object/computed"; import { later } from "@ember/runloop"; import Controller from "@ember/controller"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { SECOND_FACTOR_METHODS } from "discourse/models/user"; import ModalFunctionality from "discourse/mixins/modal-functionality"; @@ -14,7 +14,7 @@ export default Controller.extend(ModalFunctionality, { backupCodes: null, secondFactorMethod: SECOND_FACTOR_METHODS.TOTP, - @computed("backupEnabled") + @discourseComputed("backupEnabled") generateBackupCodeBtnLabel(backupEnabled) { return backupEnabled ? "user.second_factor_backup.regenerate" diff --git a/app/assets/javascripts/discourse/controllers/static.js.es6 b/app/assets/javascripts/discourse/controllers/static.js.es6 index 587e14da81..ad4f953105 100644 --- a/app/assets/javascripts/discourse/controllers/static.js.es6 +++ b/app/assets/javascripts/discourse/controllers/static.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { equal } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { ajax } from "discourse/lib/ajax"; -import computed from "ember-addons/ember-computed-decorators"; import { userPath } from "discourse/lib/url"; export default Controller.extend({ @@ -10,10 +10,10 @@ export default Controller.extend({ showLoginButton: equal("model.path", "login"), - @computed("model.path") + @discourseComputed("model.path") bodyClass: path => `static-${path}`, - @computed("model.path") + @discourseComputed("model.path") showSignupButton() { return ( this.get("model.path") === "login" && this.get("application.canSignUp") diff --git a/app/assets/javascripts/discourse/controllers/tags-index.js.es6 b/app/assets/javascripts/discourse/controllers/tags-index.js.es6 index c2ec12fda6..14473df9a5 100644 --- a/app/assets/javascripts/discourse/controllers/tags-index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/tags-index.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias, notEmpty } from "@ember/object/computed"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import showModal from "discourse/lib/show-modal"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; @@ -19,7 +19,7 @@ export default Controller.extend({ this.sortProperties = ["totalCount:desc", "id"]; }, - @computed("groupedByCategory", "groupedByTagGroup") + @discourseComputed("groupedByCategory", "groupedByTagGroup") otherTagsTitleKey(groupedByCategory, groupedByTagGroup) { if (!groupedByCategory && !groupedByTagGroup) { return "tagging.all_tags"; @@ -28,7 +28,7 @@ export default Controller.extend({ } }, - @computed + @discourseComputed actionsMapping() { return { manageGroups: () => this.send("showTagGroups"), diff --git a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 index 9d787fe8a4..631f85d7df 100644 --- a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 @@ -2,9 +2,9 @@ import { alias } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import BulkTopicSelection from "discourse/mixins/bulk-topic-selection"; import { default as NavItem, @@ -72,12 +72,12 @@ export default Controller.extend(BulkTopicSelection, { categories: alias("site.categoriesList"), - @computed("list", "list.draft") + @discourseComputed("list", "list.draft") createTopicLabel(list, listDraft) { return listDraft ? "topic.open_draft" : "topic.create"; }, - @computed( + @discourseComputed( "canCreateTopic", "category", "canCreateTopicOnCategory", @@ -108,7 +108,7 @@ export default Controller.extend(BulkTopicSelection, { "q" ], - @computed("category", "tag.id", "filterMode") + @discourseComputed("category", "tag.id", "filterMode") navItems(category, tagId, filterMode) { return NavItem.buildList(category, { tagId, @@ -116,12 +116,12 @@ export default Controller.extend(BulkTopicSelection, { }); }, - @computed("category") + @discourseComputed("category") showTagFilter() { return Discourse.SiteSettings.show_filter_by_tag; }, - @computed("additionalTags", "canAdminTag", "category") + @discourseComputed("additionalTags", "canAdminTag", "category") showAdminControls(additionalTags, canAdminTag, category) { return !additionalTags && canAdminTag && !category; }, @@ -135,7 +135,7 @@ export default Controller.extend(BulkTopicSelection, { this.set("application.showFooter", !this.get("list.canLoadMore")); }, - @computed("navMode", "list.topics.length", "loading") + @discourseComputed("navMode", "list.topics.length", "loading") footerMessage(navMode, listTopicsLength, loading) { if (loading || listTopicsLength !== 0) { return; diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 730bd8fefe..7f2708a789 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -16,9 +16,9 @@ import debounce from "discourse/lib/debounce"; import isElementInViewport from "discourse/lib/is-element-in-viewport"; import { ajax } from "discourse/lib/ajax"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { extractLinkMeta } from "discourse/lib/render-topic-featured-link"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { spinnerHTML } from "discourse/helpers/loading-spinner"; @@ -80,7 +80,7 @@ export default Controller.extend(bufferedProperty("model"), { } }, - @computed("model.details.can_create_post") + @discourseComputed("model.details.can_create_post") embedQuoteButton(canCreatePost) { return ( canCreatePost && @@ -89,28 +89,31 @@ export default Controller.extend(bufferedProperty("model"), { ); }, - @computed("model.postStream.loaded", "model.category_id") + @discourseComputed("model.postStream.loaded", "model.category_id") showSharedDraftControls(loaded, categoryId) { let draftCat = this.site.shared_drafts_category_id; return loaded && draftCat && categoryId && draftCat === categoryId; }, - @computed("site.mobileView", "model.posts_count") + @discourseComputed("site.mobileView", "model.posts_count") showSelectedPostsAtBottom(mobileView, postsCount) { return mobileView && postsCount > 3; }, - @computed("model.postStream.posts", "model.postStream.postsWithPlaceholders") + @discourseComputed( + "model.postStream.posts", + "model.postStream.postsWithPlaceholders" + ) postsToRender(posts, postsWithPlaceholders) { return this.capabilities.isAndroid ? posts : postsWithPlaceholders; }, - @computed("model.postStream.loadingFilter") + @discourseComputed("model.postStream.loadingFilter") androidLoading(loading) { return this.capabilities.isAndroid && loading; }, - @computed("model") + @discourseComputed("model") pmPath(topic) { return this.currentUser && this.currentUser.pmPath(topic); }, @@ -153,12 +156,12 @@ export default Controller.extend(bufferedProperty("model"), { DiscourseURL.routeTo(url); }, - @computed + @discourseComputed selectedQuery() { return post => this.postSelected(post); }, - @computed("model.isPrivateMessage", "model.category.id") + @discourseComputed("model.isPrivateMessage", "model.category.id") canEditTopicFeaturedLink(isPrivateMessage, categoryId) { if (!this.siteSettings.topic_featured_link_enabled || isPrivateMessage) { return false; @@ -174,12 +177,12 @@ export default Controller.extend(bufferedProperty("model"), { ); }, - @computed("model") + @discourseComputed("model") featuredLinkDomain(topic) { return extractLinkMeta(topic).domain; }, - @computed("model.isPrivateMessage") + @discourseComputed("model.isPrivateMessage") canEditTags(isPrivateMessage) { return ( this.site.get("can_tag_topics") && @@ -1157,7 +1160,7 @@ export default Controller.extend(bufferedProperty("model"), { selectedPostsCount: alias("selectedPostIds.length"), - @computed( + @discourseComputed( "selectedPostIds", "model.postStream.posts", "selectedPostIds.[]", @@ -1169,7 +1172,7 @@ export default Controller.extend(bufferedProperty("model"), { .filter(post => post !== undefined); }, - @computed("selectedPostsCount", "selectedPosts", "selectedPosts.[]") + @discourseComputed("selectedPostsCount", "selectedPosts", "selectedPosts.[]") selectedPostsUsername(selectedPostsCount, selectedPosts) { if (selectedPosts.length < 1 || selectedPostsCount > selectedPosts.length) { return undefined; @@ -1180,7 +1183,7 @@ export default Controller.extend(bufferedProperty("model"), { : undefined; }, - @computed( + @discourseComputed( "selectedPostsCount", "model.postStream.isMegaTopic", "model.postStream.stream.length", @@ -1199,14 +1202,14 @@ export default Controller.extend(bufferedProperty("model"), { } }, - @computed("selectedAllPosts", "model.postStream.isMegaTopic") + @discourseComputed("selectedAllPosts", "model.postStream.isMegaTopic") canSelectAll(selectedAllPosts, isMegaTopic) { return isMegaTopic ? false : !selectedAllPosts; }, canDeselectAll: alias("selectedAllPosts"), - @computed( + @discourseComputed( "currentUser.staff", "selectedPostsCount", "selectedAllPosts", @@ -1225,19 +1228,23 @@ export default Controller.extend(bufferedProperty("model"), { ); }, - @computed("model.details.can_move_posts", "selectedPostsCount") + @discourseComputed("model.details.can_move_posts", "selectedPostsCount") canMergeTopic(canMovePosts, selectedPostsCount) { return canMovePosts && selectedPostsCount > 0; }, - @computed("currentUser.admin", "selectedPostsCount", "selectedPostsUsername") + @discourseComputed( + "currentUser.admin", + "selectedPostsCount", + "selectedPostsUsername" + ) canChangeOwner(isAdmin, selectedPostsCount, selectedPostsUsername) { return ( isAdmin && selectedPostsCount > 0 && selectedPostsUsername !== undefined ); }, - @computed( + @discourseComputed( "selectedPostsCount", "selectedPostsUsername", "selectedPosts", @@ -1260,7 +1267,7 @@ export default Controller.extend(bufferedProperty("model"), { return this.selectedAllPost || this.selectedPostIds.includes(post.id); }, - @computed + @discourseComputed loadingHTML() { return spinnerHTML; }, diff --git a/app/assets/javascripts/discourse/controllers/upload-selector.js.es6 b/app/assets/javascripts/discourse/controllers/upload-selector.js.es6 index 87c73494a0..554fe6db2f 100644 --- a/app/assets/javascripts/discourse/controllers/upload-selector.js.es6 +++ b/app/assets/javascripts/discourse/controllers/upload-selector.js.es6 @@ -2,9 +2,9 @@ import { equal } from "@ember/object/computed"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { allowsAttachments, authorizesAllExtensions, @@ -27,13 +27,13 @@ export default Controller.extend(ModalFunctionality, { remote: equal("selection", "remote"), selection: "local", - @computed() + @discourseComputed() uploadIcon: () => uploadIcon(), - @computed() + @discourseComputed() title: () => uploadTranslate("title"), - @computed("selection") + @discourseComputed("selection") tip(selection) { const authorized_extensions = authorizesAllExtensions() ? "" diff --git a/app/assets/javascripts/discourse/controllers/user-invited-show.js.es6 b/app/assets/javascripts/discourse/controllers/user-invited-show.js.es6 index 8a8c102b0e..59d197a875 100644 --- a/app/assets/javascripts/discourse/controllers/user-invited-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-invited-show.js.es6 @@ -4,9 +4,9 @@ import Invite from "discourse/models/invite"; import debounce from "discourse/lib/debounce"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Controller.extend({ user: null, @@ -35,7 +35,7 @@ export default Controller.extend({ inviteRedeemed: equal("filter", "redeemed"), - @computed("filter") + @discourseComputed("filter") showBulkActionButtons(filter) { return ( filter === "pending" && @@ -50,7 +50,7 @@ export default Controller.extend({ showSearch: gte("totalInvites", 10), - @computed("invitesCount.total", "invitesCount.pending") + @discourseComputed("invitesCount.total", "invitesCount.pending") pendingLabel(invitesCountTotal, invitesCountPending) { if (invitesCountTotal > 50) { return I18n.t("user.invited.pending_tab_with_count", { @@ -61,7 +61,7 @@ export default Controller.extend({ } }, - @computed("invitesCount.total", "invitesCount.redeemed") + @discourseComputed("invitesCount.total", "invitesCount.redeemed") redeemedLabel(invitesCountTotal, invitesCountRedeemed) { if (invitesCountTotal > 50) { return I18n.t("user.invited.redeemed_tab_with_count", { diff --git a/app/assets/javascripts/discourse/controllers/user-notifications.js.es6 b/app/assets/javascripts/discourse/controllers/user-notifications.js.es6 index ea5507cc5c..24e61aa73a 100644 --- a/app/assets/javascripts/discourse/controllers/user-notifications.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-notifications.js.es6 @@ -2,9 +2,9 @@ import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { ajax } from "discourse/lib/ajax"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default Controller.extend({ application: inject(), @@ -14,12 +14,12 @@ export default Controller.extend({ this.set("application.showFooter", !this.get("model.canLoadMore")); }, - @computed("model.content.length") + @discourseComputed("model.content.length") hasNotifications(length) { return length > 0; }, - @computed("model.content.@each.read") + @discourseComputed("model.content.@each.read") allNotificationsRead() { return !this.get("model.content").some( notification => !notification.get("read") diff --git a/app/assets/javascripts/discourse/controllers/user-private-messages.js.es6 b/app/assets/javascripts/discourse/controllers/user-private-messages.js.es6 index c6252978c9..724d8b9909 100644 --- a/app/assets/javascripts/discourse/controllers/user-private-messages.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-private-messages.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias, equal, and } from "@ember/object/computed"; import { inject as service } from "@ember/service"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import Topic from "discourse/models/topic"; export default Controller.extend({ @@ -22,17 +22,17 @@ export default Controller.extend({ showNewPM: and("user.viewingSelf", "currentUser.can_send_private_messages"), - @computed("selected.[]", "bulkSelectEnabled") + @discourseComputed("selected.[]", "bulkSelectEnabled") hasSelection(selected, bulkSelectEnabled) { return bulkSelectEnabled && selected && selected.length > 0; }, - @computed("hasSelection", "pmView", "archive") + @discourseComputed("hasSelection", "pmView", "archive") canMoveToInbox(hasSelection, pmView, archive) { return hasSelection && (pmView === "archive" || archive); }, - @computed("hasSelection", "pmView", "archive") + @discourseComputed("hasSelection", "pmView", "archive") canArchive(hasSelection, pmView, archive) { return hasSelection && pmView !== "archive" && !archive; }, diff --git a/app/assets/javascripts/discourse/controllers/user-summary.js.es6 b/app/assets/javascripts/discourse/controllers/user-summary.js.es6 index 7383cfa336..0a1a37572e 100644 --- a/app/assets/javascripts/discourse/controllers/user-summary.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-summary.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { alias } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; import { durationTiny } from "discourse/lib/formatter"; // should be kept in sync with 'UserSummary::MAX_BADGES' @@ -11,22 +11,22 @@ export default Controller.extend({ userController: inject("user"), user: alias("userController.model"), - @computed("model.badges.length") + @discourseComputed("model.badges.length") moreBadges(badgesLength) { return badgesLength >= MAX_BADGES; }, - @computed("model.time_read") + @discourseComputed("model.time_read") timeRead(timeReadSeconds) { return durationTiny(timeReadSeconds); }, - @computed("model.time_read", "model.recent_time_read") + @discourseComputed("model.time_read", "model.recent_time_read") showRecentTimeRead(timeRead, recentTimeRead) { return timeRead !== recentTimeRead && recentTimeRead !== 0; }, - @computed("model.recent_time_read") + @discourseComputed("model.recent_time_read") recentTimeRead(recentTimeReadSeconds) { return recentTimeReadSeconds > 0 ? durationTiny(recentTimeReadSeconds) diff --git a/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 b/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 index 5539500165..6c09d2e36b 100644 --- a/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; // Lists of topics on a user's page. export default Controller.extend({ @@ -26,7 +26,7 @@ export default Controller.extend({ this.set("application.showFooter", !this.get("model.canLoadMore")); }.observes("model.canLoadMore"), - @computed("incomingCount") + @discourseComputed("incomingCount") hasIncoming(incomingCount) { return incomingCount > 0; }, diff --git a/app/assets/javascripts/discourse/controllers/user.js.es6 b/app/assets/javascripts/discourse/controllers/user.js.es6 index e24bf67a68..507ca24690 100644 --- a/app/assets/javascripts/discourse/controllers/user.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user.js.es6 @@ -1,3 +1,4 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { isEmpty } from "@ember/utils"; import { alias, or, gt, not, and } from "@ember/object/computed"; import EmberObject from "@ember/object"; @@ -5,7 +6,6 @@ import { inject as service } from "@ember/service"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import CanCheckEmails from "discourse/mixins/can-check-emails"; -import computed from "ember-addons/ember-computed-decorators"; import User from "discourse/models/user"; import optionalService from "discourse/lib/optional-service"; import { prioritizeNameInUx } from "discourse/lib/settings"; @@ -18,23 +18,28 @@ export default Controller.extend(CanCheckEmails, { currentPath: alias("router._router.currentPath"), adminTools: optionalService(), - @computed("model.username") + @discourseComputed("model.username") viewingSelf(username) { let currentUser = this.currentUser; return currentUser && username === currentUser.get("username"); }, - @computed("viewingSelf", "model.profile_hidden") + @discourseComputed("viewingSelf", "model.profile_hidden") canExpandProfile(viewingSelf, profileHidden) { return !profileHidden && viewingSelf; }, - @computed("model.profileBackgroundUrl") + @discourseComputed("model.profileBackgroundUrl") hasProfileBackgroundUrl(background) { return !isEmpty(background.toString()); }, - @computed("model.profile_hidden", "indexStream", "viewingSelf", "forceExpand") + @discourseComputed( + "model.profile_hidden", + "indexStream", + "viewingSelf", + "forceExpand" + ) collapsedInfo(profileHidden, indexStream, viewingSelf, forceExpand) { if (profileHidden) { return true; @@ -56,58 +61,58 @@ export default Controller.extend(CanCheckEmails, { "hasReceivedWarnings" ), - @computed("model.suspended", "currentUser.staff") + @discourseComputed("model.suspended", "currentUser.staff") isNotSuspendedOrIsStaff(suspended, isStaff) { return !suspended || isStaff; }, linkWebsite: not("model.isBasic"), - @computed("model.trust_level") + @discourseComputed("model.trust_level") removeNoFollow(trustLevel) { return trustLevel > 2 && !this.siteSettings.tl3_links_no_follow; }, - @computed("viewingSelf", "currentUser.admin") + @discourseComputed("viewingSelf", "currentUser.admin") showBookmarks(viewingSelf, isAdmin) { return viewingSelf || isAdmin; }, - @computed("viewingSelf") + @discourseComputed("viewingSelf") showDrafts(viewingSelf) { return viewingSelf; }, - @computed("viewingSelf", "currentUser.admin") + @discourseComputed("viewingSelf", "currentUser.admin") showPrivateMessages(viewingSelf, isAdmin) { return ( this.siteSettings.enable_personal_messages && (viewingSelf || isAdmin) ); }, - @computed("viewingSelf", "currentUser.staff") + @discourseComputed("viewingSelf", "currentUser.staff") showNotificationsTab(viewingSelf, staff) { return viewingSelf || staff; }, - @computed("model.name") + @discourseComputed("model.name") nameFirst(name) { return prioritizeNameInUx(name, this.siteSettings); }, - @computed("model.badge_count") + @discourseComputed("model.badge_count") showBadges(badgeCount) { return Discourse.SiteSettings.enable_badges && badgeCount > 0; }, - @computed() + @discourseComputed() canInviteToForum() { return User.currentProp("can_invite_to_forum"); }, canDeleteUser: and("model.can_be_deleted", "model.can_delete_all_posts"), - @computed("model.user_fields.@each.value") + @discourseComputed("model.user_fields.@each.value") publicUserFields() { const siteUserFields = this.site.get("user_fields"); if (!isEmpty(siteUserFields)) { diff --git a/app/assets/javascripts/discourse/helpers/reviewable-status.js.es6 b/app/assets/javascripts/discourse/helpers/reviewable-status.js.es6 index 5807cb0e64..b024500a0c 100644 --- a/app/assets/javascripts/discourse/helpers/reviewable-status.js.es6 +++ b/app/assets/javascripts/discourse/helpers/reviewable-status.js.es6 @@ -1,6 +1,5 @@ import { htmlHelper } from "discourse-common/lib/helpers"; import { iconHTML } from "discourse-common/lib/icon-library"; - import { PENDING, APPROVED, diff --git a/app/assets/javascripts/discourse/lib/computed.js.es6 b/app/assets/javascripts/discourse/lib/computed.js.es6 index e6a440eb83..992029d293 100644 --- a/app/assets/javascripts/discourse/lib/computed.js.es6 +++ b/app/assets/javascripts/discourse/lib/computed.js.es6 @@ -6,7 +6,7 @@ import addonFmt from "ember-addons/fmt"; @method propertyEqual @params {String} p1 the first property @params {String} p2 the second property - @return {Function} computedProperty function + @return {Function} discourseComputedProperty function **/ export function propertyEqual(p1, p2) { @@ -21,7 +21,7 @@ export function propertyEqual(p1, p2) { @method propertyNotEqual @params {String} p1 the first property @params {String} p2 the second property - @return {Function} computedProperty function + @return {Function} discourseComputedProperty function **/ export function propertyNotEqual(p1, p2) { return Ember.computed(p1, p2, function() { @@ -47,7 +47,7 @@ export function propertyLessThan(p1, p2) { @method i18n @params {String} properties* to format @params {String} format the i18n format string - @return {Function} computedProperty function + @return {Function} discourseComputedProperty function **/ export function i18n(...args) { const format = args.pop(); @@ -63,7 +63,7 @@ export function i18n(...args) { @method fmt @params {String} properties* to format @params {String} format the format string - @return {Function} computedProperty function + @return {Function} discourseComputedProperty function **/ export function fmt(...args) { const format = args.pop(); @@ -79,7 +79,7 @@ export function fmt(...args) { @method url @params {String} properties* to format @params {String} format the format string for the URL - @return {Function} computedProperty function returning a URL + @return {Function} discourseComputedProperty function returning a URL **/ export function url(...args) { const format = args.pop(); @@ -94,7 +94,7 @@ export function url(...args) { @method endWith @params {String} properties* to check @params {String} substring the substring - @return {Function} computedProperty function + @return {Function} discourseComputedProperty function **/ export function endWith() { const args = Array.prototype.slice.call(arguments, 0); diff --git a/app/assets/javascripts/discourse/lib/posts-with-placeholders.js.es6 b/app/assets/javascripts/discourse/lib/posts-with-placeholders.js.es6 index d1b2092445..3bf8c2457c 100644 --- a/app/assets/javascripts/discourse/lib/posts-with-placeholders.js.es6 +++ b/app/assets/javascripts/discourse/lib/posts-with-placeholders.js.es6 @@ -1,5 +1,5 @@ import EmberObject from "@ember/object"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export function Placeholder(viewName) { this.viewName = viewName; @@ -13,7 +13,7 @@ export default EmberObject.extend(Ember.Array, { this._appendingIds = {}; }, - @computed + @discourseComputed length() { return ( this.get("posts.length") + Object.keys(this._appendingIds || {}).length diff --git a/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 b/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 index 65b687ac7c..6b7bdf63b0 100644 --- a/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 +++ b/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 @@ -33,7 +33,7 @@ export function registerTopicFooterButton(button) { // css class appended to the button classNames: [], - // computed properties which should force a button state refresh + // discourseComputed properties which should force a button state refresh // eg: ["topic.bookmarked", "topic.category_id"] dependentKeys: [], @@ -88,37 +88,37 @@ export function getTopicFooterButtons() { return Object.values(_topicFooterButtons) .filter(button => _compute(button, "displayed")) .map(button => { - const computedButon = {}; + const discourseComputedButon = {}; - computedButon.id = button.id; + discourseComputedButon.id = button.id; const label = _compute(button, "label"); - computedButon.label = label + discourseComputedButon.label = label ? I18n.t(label) : _compute(button, "translatedLabel"); const title = _compute(button, "title"); - computedButon.title = title + discourseComputedButon.title = title ? I18n.t(title) : _compute(button, "translatedTitle"); - computedButon.classNames = ( + discourseComputedButon.classNames = ( _compute(button, "classNames") || [] ).join(" "); - computedButon.icon = _compute(button, "icon"); - computedButon.disabled = _compute(button, "disabled"); - computedButon.dropdown = _compute(button, "dropdown"); - computedButon.priority = _compute(button, "priority"); + discourseComputedButon.icon = _compute(button, "icon"); + discourseComputedButon.disabled = _compute(button, "disabled"); + discourseComputedButon.dropdown = _compute(button, "dropdown"); + discourseComputedButon.priority = _compute(button, "priority"); if (_isFunction(button.action)) { - computedButon.action = () => button.action.apply(this); + discourseComputedButon.action = () => button.action.apply(this); } else { const actionName = button.action; - computedButon.action = () => this[actionName](); + discourseComputedButon.action = () => this[actionName](); } - return computedButon; + return discourseComputedButon; }) .sortBy("priority") .reverse(); diff --git a/app/assets/javascripts/discourse/mixins/add-archetype-class.js.es6 b/app/assets/javascripts/discourse/mixins/add-archetype-class.js.es6 index a8a2c3c528..1436f0def6 100644 --- a/app/assets/javascripts/discourse/mixins/add-archetype-class.js.es6 +++ b/app/assets/javascripts/discourse/mixins/add-archetype-class.js.es6 @@ -1,4 +1,4 @@ -import { on, observes } from "ember-addons/ember-computed-decorators"; +import { on, observes } from "discourse-common/utils/decorators"; // Mix this in to a view that has a `archetype` property to automatically // add it to the body as the view is entered / left / model is changed. diff --git a/app/assets/javascripts/discourse/mixins/bulk-topic-selection.js.es6 b/app/assets/javascripts/discourse/mixins/bulk-topic-selection.js.es6 index a4772fb594..cc2dfc1d55 100644 --- a/app/assets/javascripts/discourse/mixins/bulk-topic-selection.js.es6 +++ b/app/assets/javascripts/discourse/mixins/bulk-topic-selection.js.es6 @@ -1,6 +1,6 @@ import { alias } from "@ember/object/computed"; import { NotificationLevels } from "discourse/lib/notification-levels"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; import Topic from "discourse/models/topic"; diff --git a/app/assets/javascripts/discourse/mixins/grant-badge-controller.js.es6 b/app/assets/javascripts/discourse/mixins/grant-badge-controller.js.es6 index 37502e3749..153ba29c01 100644 --- a/app/assets/javascripts/discourse/mixins/grant-badge-controller.js.es6 +++ b/app/assets/javascripts/discourse/mixins/grant-badge-controller.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { empty } from "@ember/object/computed"; -import computed from "ember-addons/ember-computed-decorators"; import UserBadge from "discourse/models/user-badge"; import { convertIconClass } from "discourse-common/lib/icon-library"; import Mixin from "@ember/object/mixin"; export default Mixin.create({ - @computed("allBadges.[]", "userBadges.[]") + @discourseComputed("allBadges.[]", "userBadges.[]") grantableBadges(allBadges, userBadges) { const granted = userBadges.reduce((map, badge) => { map[badge.get("badge_id")] = true; @@ -31,7 +31,7 @@ export default Mixin.create({ noGrantableBadges: empty("grantableBadges"), - @computed("selectedBadgeId", "grantableBadges") + @discourseComputed("selectedBadgeId", "grantableBadges") selectedBadgeGrantable(selectedBadgeId, grantableBadges) { return ( grantableBadges && diff --git a/app/assets/javascripts/discourse/mixins/load-more.js.es6 b/app/assets/javascripts/discourse/mixins/load-more.js.es6 index a7761e1399..f54b563034 100644 --- a/app/assets/javascripts/discourse/mixins/load-more.js.es6 +++ b/app/assets/javascripts/discourse/mixins/load-more.js.es6 @@ -1,6 +1,6 @@ import Eyeline from "discourse/lib/eyeline"; import Scrolling from "discourse/mixins/scrolling"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; // Provides the ability to load more items for a view which is scrolled to the bottom. diff --git a/app/assets/javascripts/discourse/mixins/name-validation.js.es6 b/app/assets/javascripts/discourse/mixins/name-validation.js.es6 index 46f1b4dfae..e447f9fcb6 100644 --- a/app/assets/javascripts/discourse/mixins/name-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/name-validation.js.es6 @@ -1,10 +1,10 @@ import { isEmpty } from "@ember/utils"; import InputValidation from "discourse/models/input-validation"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; export default Mixin.create({ - @computed() + @discourseComputed() nameInstructions() { return I18n.t( this.siteSettings.full_name_required @@ -14,7 +14,7 @@ export default Mixin.create({ }, // Validate the name. - @computed("accountName") + @discourseComputed("accountName") nameValidation() { if (this.siteSettings.full_name_required && isEmpty(this.accountName)) { return InputValidation.create({ failed: true }); diff --git a/app/assets/javascripts/discourse/mixins/password-validation.js.es6 b/app/assets/javascripts/discourse/mixins/password-validation.js.es6 index 3ddf9131f0..ec665cdbe6 100644 --- a/app/assets/javascripts/discourse/mixins/password-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/password-validation.js.es6 @@ -1,6 +1,6 @@ import { isEmpty } from "@ember/utils"; import InputValidation from "discourse/models/input-validation"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; export default Mixin.create({ @@ -12,21 +12,21 @@ export default Mixin.create({ this.set("rejectedPasswordsMessages", new Map()); }, - @computed("passwordMinLength") + @discourseComputed("passwordMinLength") passwordInstructions() { return I18n.t("user.password.instructions", { count: this.passwordMinLength }); }, - @computed("isDeveloper", "admin") + @discourseComputed("isDeveloper", "admin") passwordMinLength(isDeveloper, admin) { return isDeveloper || admin ? this.siteSettings.min_admin_password_length : this.siteSettings.min_password_length; }, - @computed( + @discourseComputed( "accountPassword", "passwordRequired", "rejectedPasswords.[]", diff --git a/app/assets/javascripts/discourse/mixins/preferences-tab-controller.js.es6 b/app/assets/javascripts/discourse/mixins/preferences-tab-controller.js.es6 index 7e49326f41..2e8763097c 100644 --- a/app/assets/javascripts/discourse/mixins/preferences-tab-controller.js.es6 +++ b/app/assets/javascripts/discourse/mixins/preferences-tab-controller.js.es6 @@ -1,10 +1,10 @@ -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; export default Mixin.create({ saved: false, - @computed("model.isSaving") + @discourseComputed("model.isSaving") saveButtonText(isSaving) { return isSaving ? I18n.t("saving") : I18n.t("save"); } diff --git a/app/assets/javascripts/discourse/mixins/upload.js.es6 b/app/assets/javascripts/discourse/mixins/upload.js.es6 index a3b0d8626a..071f749b75 100644 --- a/app/assets/javascripts/discourse/mixins/upload.js.es6 +++ b/app/assets/javascripts/discourse/mixins/upload.js.es6 @@ -2,7 +2,6 @@ import { displayErrorForUpload, validateUploadedFiles } from "discourse/lib/utilities"; - import getUrl from "discourse-common/lib/get-url"; import { on } from "@ember/object/evented"; import Mixin from "@ember/object/mixin"; diff --git a/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 b/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 index ec007c993d..e535043a2d 100644 --- a/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 @@ -3,8 +3,8 @@ import EmberObject from "@ember/object"; import InputValidation from "discourse/models/input-validation"; import { on, - default as computed -} from "ember-addons/ember-computed-decorators"; + default as discourseComputed +} from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; export default Mixin.create({ @@ -24,7 +24,7 @@ export default Mixin.create({ }, // Validate required fields - @computed("userFields.@each.value") + @discourseComputed("userFields.@each.value") userFieldsValidation() { let userFields = this.userFields; if (userFields) { diff --git a/app/assets/javascripts/discourse/mixins/username-validation.js.es6 b/app/assets/javascripts/discourse/mixins/username-validation.js.es6 index 66e86221a9..35ccf6c8cc 100644 --- a/app/assets/javascripts/discourse/mixins/username-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/username-validation.js.es6 @@ -2,7 +2,7 @@ import { isEmpty } from "@ember/utils"; import InputValidation from "discourse/models/input-validation"; import debounce from "discourse/lib/debounce"; import { setting } from "discourse/lib/computed"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; export default Mixin.create({ @@ -27,7 +27,7 @@ export default Mixin.create({ }); }, 500), - @computed("accountUsername") + @discourseComputed("accountUsername") basicUsernameValidation(accountUsername) { this.set("uniqueUsernameValidation", null); @@ -118,7 +118,7 @@ export default Mixin.create({ }, 500), // Actually wait for the async name check before we're 100% sure we're good to go - @computed("uniqueUsernameValidation", "basicUsernameValidation") + @discourseComputed("uniqueUsernameValidation", "basicUsernameValidation") usernameValidation() { const basicValidation = this.basicUsernameValidation; const uniqueUsername = this.uniqueUsernameValidation; diff --git a/app/assets/javascripts/discourse/models/badge-grouping.js.es6 b/app/assets/javascripts/discourse/models/badge-grouping.js.es6 index 573dff223d..6dbaa5c7c6 100644 --- a/app/assets/javascripts/discourse/models/badge-grouping.js.es6 +++ b/app/assets/javascripts/discourse/models/badge-grouping.js.es6 @@ -1,13 +1,13 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import RestModel from "discourse/models/rest"; export default RestModel.extend({ - @computed("name") + @discourseComputed("name") i18nNameKey() { return this.name.toLowerCase().replace(/\s/g, "_"); }, - @computed("name") + @discourseComputed("name") displayName() { const i18nKey = `badges.badge_grouping.${this.i18nNameKey}.name`; return I18n.t(i18nKey, { defaultValue: this.name }); diff --git a/app/assets/javascripts/discourse/models/badge.js.es6 b/app/assets/javascripts/discourse/models/badge.js.es6 index 88203b5084..5b9e46cef9 100644 --- a/app/assets/javascripts/discourse/models/badge.js.es6 +++ b/app/assets/javascripts/discourse/models/badge.js.es6 @@ -1,15 +1,15 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { none } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; import BadgeGrouping from "discourse/models/badge-grouping"; import RestModel from "discourse/models/rest"; -import computed from "ember-addons/ember-computed-decorators"; import { Promise } from "rsvp"; const Badge = RestModel.extend({ newBadge: none("id"), - @computed + @discourseComputed url() { return Discourse.getURL(`/badges/${this.id}/${this.slug}`); }, @@ -27,7 +27,7 @@ const Badge = RestModel.extend({ } }, - @computed("badge_type.name") + @discourseComputed("badge_type.name") badgeTypeClassName(type) { type = type || ""; return `badge-type-${type.toLowerCase()}`; diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 4248f6a8f8..98336dac42 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { get } from "@ember/object"; import { ajax } from "discourse/lib/ajax"; import RestModel from "discourse/models/rest"; -import computed from "ember-addons/ember-computed-decorators"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import PermissionType from "discourse/models/permission-type"; import { NotificationLevels } from "discourse/lib/notification-levels"; @@ -39,7 +39,7 @@ const Category = RestModel.extend({ } }, - @computed + @discourseComputed availablePermissions() { return [ PermissionType.create({ id: PermissionType.FULL }), @@ -48,52 +48,52 @@ const Category = RestModel.extend({ ]; }, - @computed("id") + @discourseComputed("id") searchContext(id) { return { type: "category", id, category: this }; }, - @computed("notification_level") + @discourseComputed("notification_level") isMuted(notificationLevel) { return notificationLevel === NotificationLevels.MUTED; }, - @computed("name") + @discourseComputed("name") url() { return Discourse.getURL("/c/") + Category.slugFor(this); }, - @computed + @discourseComputed fullSlug() { return Category.slugFor(this).replace(/\//g, "-"); }, - @computed("name") + @discourseComputed("name") nameLower(name) { return name.toLowerCase(); }, - @computed("url") + @discourseComputed("url") unreadUrl(url) { return `${url}/l/unread`; }, - @computed("url") + @discourseComputed("url") newUrl(url) { return `${url}/l/new`; }, - @computed("color", "text_color") + @discourseComputed("color", "text_color") style(color, textColor) { return `background-color: #${color}; color: #${textColor}`; }, - @computed("topic_count") + @discourseComputed("topic_count") moreTopics(topicCount) { return topicCount > (this.num_featured_topics || 2); }, - @computed("topic_count", "subcategories") + @discourseComputed("topic_count", "subcategories") totalTopicCount(topicCount, subcats) { let count = topicCount; if (subcats) { @@ -181,26 +181,26 @@ const Category = RestModel.extend({ this.availableGroups.addObject(permission.group_name); }, - @computed("topics") + @discourseComputed("topics") latestTopic(topics) { if (topics && topics.length) { return topics[0]; } }, - @computed("topics") + @discourseComputed("topics") featuredTopics(topics) { if (topics && topics.length) { return topics.slice(0, this.num_featured_topics || 2); } }, - @computed("id", "topicTrackingState.messageCount") + @discourseComputed("id", "topicTrackingState.messageCount") unreadTopics(id) { return this.topicTrackingState.countUnread(id); }, - @computed("id", "topicTrackingState.messageCount") + @discourseComputed("id", "topicTrackingState.messageCount") newTopics(id) { return this.topicTrackingState.countNew(id); }, @@ -211,7 +211,7 @@ const Category = RestModel.extend({ return ajax(url, { data: { notification_level }, type: "POST" }); }, - @computed("id") + @discourseComputed("id") isUncategorizedCategory(id) { return id === Discourse.Site.currentProp("uncategorized_category_id"); } diff --git a/app/assets/javascripts/discourse/models/composer.js.es6 b/app/assets/javascripts/discourse/models/composer.js.es6 index 8e3a1af259..60fb8272a6 100644 --- a/app/assets/javascripts/discourse/models/composer.js.es6 +++ b/app/assets/javascripts/discourse/models/composer.js.es6 @@ -10,10 +10,10 @@ import { throwAjaxError } from "discourse/lib/ajax-error"; import Quote from "discourse/lib/quote"; import Draft from "discourse/models/draft"; import { - default as computed, + default as discourseComputed, observes, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { escapeExpression, tinyAvatar } from "discourse/lib/utilities"; import { propertyNotEqual } from "discourse/lib/computed"; import throttle from "discourse/lib/throttle"; @@ -108,7 +108,7 @@ const Composer = RestModel.extend({ sharedDraft: equal("action", CREATE_SHARED_DRAFT), - @computed + @discourseComputed categoryId: { get() { return this._categoryId; @@ -132,12 +132,12 @@ const Composer = RestModel.extend({ } }, - @computed("categoryId") + @discourseComputed("categoryId") category(categoryId) { return categoryId ? this.site.categories.findBy("id", categoryId) : null; }, - @computed("category") + @discourseComputed("category") minimumRequiredTags(category) { return category && category.minimum_required_tags > 0 ? category.minimum_required_tags @@ -150,18 +150,18 @@ const Composer = RestModel.extend({ notCreatingPrivateMessage: not("creatingPrivateMessage"), notPrivateMessage: not("privateMessage"), - @computed("editingPost", "topic.details.can_edit") + @discourseComputed("editingPost", "topic.details.can_edit") disableTitleInput(editingPost, canEditTopic) { return editingPost && !canEditTopic; }, - @computed("privateMessage", "archetype.hasOptions") + @discourseComputed("privateMessage", "archetype.hasOptions") showCategoryChooser(isPrivateMessage, hasOptions) { const manyCategories = this.site.categories.length > 1; return !isPrivateMessage && (hasOptions || manyCategories); }, - @computed("creatingPrivateMessage", "topic") + @discourseComputed("creatingPrivateMessage", "topic") privateMessage(creatingPrivateMessage, topic) { return ( creatingPrivateMessage || (topic && topic.archetype === "private_message") @@ -170,7 +170,7 @@ const Composer = RestModel.extend({ topicFirstPost: or("creatingTopic", "editingFirstPost"), - @computed("action") + @discourseComputed("action") editingPost: isEdit, replyingToTopic: equal("action", REPLY), @@ -202,7 +202,7 @@ const Composer = RestModel.extend({ } }, - @computed + @discourseComputed composerTime: { get() { let total = this.composerTotalOpened || 0; @@ -216,7 +216,7 @@ const Composer = RestModel.extend({ } }, - @computed("archetypeId") + @discourseComputed("archetypeId") archetype(archetypeId) { return this.archetypes.findBy("id", archetypeId); }, @@ -251,7 +251,7 @@ const Composer = RestModel.extend({ "notPrivateMessage" ), - @computed("canEditTitle", "creatingPrivateMessage", "categoryId") + @discourseComputed("canEditTitle", "creatingPrivateMessage", "categoryId") canEditTopicFeaturedLink(canEditTitle, creatingPrivateMessage, categoryId) { if ( !this.siteSettings.topic_featured_link_enabled || @@ -277,14 +277,14 @@ const Composer = RestModel.extend({ ); }, - @computed("canEditTopicFeaturedLink") + @discourseComputed("canEditTopicFeaturedLink") titlePlaceholder(canEditTopicFeaturedLink) { return canEditTopicFeaturedLink ? "composer.title_or_link_placeholder" : "composer.title_placeholder"; }, - @computed("action", "post", "topic", "topic.title") + @discourseComputed("action", "post", "topic", "topic.title") replyOptions(action, post, topic, topicTitle) { const options = { userLink: null, @@ -334,7 +334,7 @@ const Composer = RestModel.extend({ return options; }, - @computed( + @discourseComputed( "loading", "canEditTitle", "titleLength", @@ -405,7 +405,7 @@ const Composer = RestModel.extend({ } }, - @computed("canCategorize", "categoryId") + @discourseComputed("canCategorize", "categoryId") requiredCategoryMissing(canCategorize, categoryId) { return ( canCategorize && @@ -414,14 +414,14 @@ const Composer = RestModel.extend({ ); }, - @computed("minimumTitleLength", "titleLength", "post.static_doc") + @discourseComputed("minimumTitleLength", "titleLength", "post.static_doc") titleLengthValid(minTitleLength, titleLength, staticDoc) { if (this.user.admin && staticDoc && titleLength > 0) return true; if (titleLength < minTitleLength) return false; return titleLength <= this.siteSettings.max_topic_title_length; }, - @computed("metaData") + @discourseComputed("metaData") hasMetaData(metaData) { return metaData ? isEmpty(Ember.keys(metaData)) : false; }, @@ -430,12 +430,12 @@ const Composer = RestModel.extend({ titleDirty: propertyNotEqual("title", "originalTitle"), - @computed("minimumTitleLength", "titleLength") + @discourseComputed("minimumTitleLength", "titleLength") missingTitleCharacters(minimumTitleLength, titleLength) { return minimumTitleLength - titleLength; }, - @computed("privateMessage") + @discourseComputed("privateMessage") minimumTitleLength(privateMessage) { if (privateMessage) { return this.siteSettings.min_personal_message_title_length; @@ -444,7 +444,11 @@ const Composer = RestModel.extend({ } }, - @computed("minimumPostLength", "replyLength", "canEditTopicFeaturedLink") + @discourseComputed( + "minimumPostLength", + "replyLength", + "canEditTopicFeaturedLink" + ) missingReplyCharacters( minimumPostLength, replyLength, @@ -459,7 +463,11 @@ const Composer = RestModel.extend({ return minimumPostLength - replyLength; }, - @computed("privateMessage", "topicFirstPost", "topic.pm_with_non_human_user") + @discourseComputed( + "privateMessage", + "topicFirstPost", + "topic.pm_with_non_human_user" + ) minimumPostLength(privateMessage, topicFirstPost, pmWithNonHumanUser) { if (pmWithNonHumanUser) { return 1; @@ -473,13 +481,13 @@ const Composer = RestModel.extend({ } }, - @computed("title") + @discourseComputed("title") titleLength(title) { title = title || ""; return title.replace(/\s+/gim, " ").trim().length; }, - @computed("reply") + @discourseComputed("reply") replyLength(reply) { reply = reply || ""; diff --git a/app/assets/javascripts/discourse/models/group-history.js.es6 b/app/assets/javascripts/discourse/models/group-history.js.es6 index 946741ae5d..8c22e9af5f 100644 --- a/app/assets/javascripts/discourse/models/group-history.js.es6 +++ b/app/assets/javascripts/discourse/models/group-history.js.es6 @@ -1,8 +1,8 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import RestModel from "discourse/models/rest"; export default RestModel.extend({ - @computed("action") + @discourseComputed("action") actionTitle(action) { return I18n.t(`group_histories.actions.${action}`); } diff --git a/app/assets/javascripts/discourse/models/group.js.es6 b/app/assets/javascripts/discourse/models/group.js.es6 index b25746471e..f8bed56d59 100644 --- a/app/assets/javascripts/discourse/models/group.js.es6 +++ b/app/assets/javascripts/discourse/models/group.js.es6 @@ -2,9 +2,9 @@ import { isEmpty } from "@ember/utils"; import { notEmpty, equal } from "@ember/object/computed"; import { ajax } from "discourse/lib/ajax"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import GroupHistory from "discourse/models/group-history"; import RestModel from "discourse/models/rest"; import Category from "discourse/models/category"; @@ -26,17 +26,17 @@ const Group = RestModel.extend({ hasOwners: notEmpty("owners"), - @computed("automatic_membership_email_domains") + @discourseComputed("automatic_membership_email_domains") emailDomains(value) { return isEmpty(value) ? "" : value; }, - @computed("automatic") + @discourseComputed("automatic") type(automatic) { return automatic ? "automatic" : "custom"; }, - @computed("user_count") + @discourseComputed("user_count") userCountDisplay(userCount) { // don't display zero its ugly if (userCount > 0) { @@ -119,19 +119,19 @@ const Group = RestModel.extend({ return this.findMembers({ filter: response.usernames.join(",") }); }, - @computed("display_name", "name") + @discourseComputed("display_name", "name") displayName(groupDisplayName, name) { return groupDisplayName || name; }, - @computed("flair_bg_color") + @discourseComputed("flair_bg_color") flairBackgroundHexColor(flairBgColor) { return flairBgColor ? flairBgColor.replace(new RegExp("[^0-9a-fA-F]", "g"), "") : null; }, - @computed("flair_color") + @discourseComputed("flair_color") flairHexColor(flairColor) { return flairColor ? flairColor.replace(new RegExp("[^0-9a-fA-F]", "g"), "") @@ -140,7 +140,7 @@ const Group = RestModel.extend({ canEveryoneMention: equal("mentionable_level", 99), - @computed("visibility_level") + @discourseComputed("visibility_level") isPrivate(visibilityLevel) { return visibilityLevel > 1; }, diff --git a/app/assets/javascripts/discourse/models/login-method.js.es6 b/app/assets/javascripts/discourse/models/login-method.js.es6 index 0bfddf3951..12a4969768 100644 --- a/app/assets/javascripts/discourse/models/login-method.js.es6 +++ b/app/assets/javascripts/discourse/models/login-method.js.es6 @@ -1,20 +1,20 @@ +import discourseComputed from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; -import computed from "ember-addons/ember-computed-decorators"; import { updateCsrfToken } from "discourse/lib/ajax"; import { Promise } from "rsvp"; const LoginMethod = EmberObject.extend({ - @computed + @discourseComputed title() { return this.title_override || I18n.t(`login.${this.name}.title`); }, - @computed + @discourseComputed prettyName() { return this.pretty_name_override || I18n.t(`login.${this.name}.name`); }, - @computed + @discourseComputed message() { return this.message_override || I18n.t(`login.${this.name}.message`); }, diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index 5b36d3b4e4..0eff005189 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { toTitleCase } from "discourse/lib/formatter"; import { emojiUnescape } from "discourse/lib/text"; -import computed from "ember-addons/ember-computed-decorators"; const NavItem = Discourse.Model.extend({ - @computed("categoryName", "name") + @discourseComputed("categoryName", "name") title(categoryName, name) { const extra = {}; @@ -15,7 +15,7 @@ const NavItem = Discourse.Model.extend({ return I18n.t("filters." + name.replace("/", ".") + ".help", extra); }, - @computed("categoryName", "name", "count") + @discourseComputed("categoryName", "name", "count") displayName(categoryName, name, count) { count = count || 0; @@ -39,13 +39,13 @@ const NavItem = Discourse.Model.extend({ ); }, - @computed("name") + @discourseComputed("name") categoryName(name) { const split = name.split("/"); return split[0] === "category" ? split[1] : null; }, - @computed("name") + @discourseComputed("name") categorySlug(name) { const split = name.split("/"); if (split[0] === "category" && split[1]) { @@ -58,7 +58,7 @@ const NavItem = Discourse.Model.extend({ return null; }, - @computed("filterMode") + @discourseComputed("filterMode") href(filterMode) { let customHref = null; @@ -76,7 +76,7 @@ const NavItem = Discourse.Model.extend({ return Discourse.getURL("/") + filterMode; }, - @computed("name", "category", "categorySlug", "noSubcategories") + @discourseComputed("name", "category", "categorySlug", "noSubcategories") filterMode(name, category, categorySlug, noSubcategories) { if (name.split("/")[0] === "category") { return "c/" + categorySlug; @@ -94,7 +94,7 @@ const NavItem = Discourse.Model.extend({ } }, - @computed("name", "category", "topicTrackingState.messageCount") + @discourseComputed("name", "category", "topicTrackingState.messageCount") count(name, category) { const state = this.topicTrackingState; if (state) { @@ -104,7 +104,7 @@ const NavItem = Discourse.Model.extend({ }); const ExtraNavItem = NavItem.extend({ - href: computed("href", { + href: discourseComputed("href", { get() { if (this._href) { return this._href; diff --git a/app/assets/javascripts/discourse/models/permission-type.js.es6 b/app/assets/javascripts/discourse/models/permission-type.js.es6 index 858be5722f..94a9af0401 100644 --- a/app/assets/javascripts/discourse/models/permission-type.js.es6 +++ b/app/assets/javascripts/discourse/models/permission-type.js.es6 @@ -1,7 +1,7 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; const PermissionType = Discourse.Model.extend({ - @computed("id") + @discourseComputed("id") description(id) { var key = ""; diff --git a/app/assets/javascripts/discourse/models/post-stream.js.es6 b/app/assets/javascripts/discourse/models/post-stream.js.es6 index 6baafb909b..1abd6aaa65 100644 --- a/app/assets/javascripts/discourse/models/post-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/post-stream.js.es6 @@ -5,7 +5,7 @@ import { ajax } from "discourse/lib/ajax"; import DiscourseURL from "discourse/lib/url"; import RestModel from "discourse/models/rest"; import PostsWithPlaceholders from "discourse/lib/posts-with-placeholders"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import { loadTopicView } from "discourse/models/topic"; import { Promise } from "rsvp"; @@ -50,17 +50,21 @@ export default RestModel.extend({ loading: or("loadingAbove", "loadingBelow", "loadingFilter", "stagingPost"), notLoading: not("loading"), - @computed("isMegaTopic", "stream.length", "topic.highest_post_number") + @discourseComputed( + "isMegaTopic", + "stream.length", + "topic.highest_post_number" + ) filteredPostsCount(isMegaTopic, streamLength, topicHighestPostNumber) { return isMegaTopic ? topicHighestPostNumber : streamLength; }, - @computed("posts.[]") + @discourseComputed("posts.[]") hasPosts() { return this.get("posts.length") > 0; }, - @computed("hasPosts", "filteredPostsCount") + @discourseComputed("hasPosts", "filteredPostsCount") hasLoadedData(hasPosts, filteredPostsCount) { return hasPosts && filteredPostsCount > 0; }, @@ -68,7 +72,7 @@ export default RestModel.extend({ canAppendMore: and("notLoading", "hasPosts", "lastPostNotLoaded"), canPrependMore: and("notLoading", "hasPosts", "firstPostNotLoaded"), - @computed("hasLoadedData", "firstPostId", "posts.[]") + @discourseComputed("hasLoadedData", "firstPostId", "posts.[]") firstPostPresent(hasLoadedData, firstPostId) { if (!hasLoadedData) { return false; @@ -81,17 +85,17 @@ export default RestModel.extend({ firstId: null, lastId: null, - @computed("isMegaTopic", "stream.firstObject", "firstId") + @discourseComputed("isMegaTopic", "stream.firstObject", "firstId") firstPostId(isMegaTopic, streamFirstId, firstId) { return isMegaTopic ? firstId : streamFirstId; }, - @computed("isMegaTopic", "stream.lastObject", "lastId") + @discourseComputed("isMegaTopic", "stream.lastObject", "lastId") lastPostId(isMegaTopic, streamLastId, lastId) { return isMegaTopic ? lastId : streamLastId; }, - @computed("hasLoadedData", "lastPostId", "posts.@each.id") + @discourseComputed("hasLoadedData", "lastPostId", "posts.@each.id") loadedAllPosts(hasLoadedData, lastPostId) { if (!hasLoadedData) { return false; @@ -109,7 +113,7 @@ export default RestModel.extend({ Returns a JS Object of current stream filter options. It should match the query params for the stream. **/ - @computed("summary", "userFilters.[]") + @discourseComputed("summary", "userFilters.[]") streamFilters(summary) { const result = {}; if (summary) { @@ -124,7 +128,7 @@ export default RestModel.extend({ return result; }, - @computed("streamFilters.[]", "topic.posts_count", "posts.length") + @discourseComputed("streamFilters.[]", "topic.posts_count", "posts.length") hasNoFilters() { const streamFilters = this.streamFilters; return !( @@ -137,7 +141,7 @@ export default RestModel.extend({ Returns the window of posts above the current set in the stream, bound to the top of the stream. This is the collection we'll ask for when scrolling upwards. **/ - @computed("posts.[]", "stream.[]") + @discourseComputed("posts.[]", "stream.[]") previousWindow() { // If we can't find the last post loaded, bail const firstPost = _.first(this.posts); @@ -163,7 +167,7 @@ export default RestModel.extend({ Returns the window of posts below the current set in the stream, bound by the bottom of the stream. This is the collection we use when scrolling downwards. **/ - @computed("posts.lastObject", "stream.[]") + @discourseComputed("posts.lastObject", "stream.[]") nextWindow(lastLoadedPost) { // If we can't find the last post loaded, bail if (!lastLoadedPost) { diff --git a/app/assets/javascripts/discourse/models/post.js.es6 b/app/assets/javascripts/discourse/models/post.js.es6 index 4fbfcdeea0..83a18d9a12 100644 --- a/app/assets/javascripts/discourse/models/post.js.es6 +++ b/app/assets/javascripts/discourse/models/post.js.es6 @@ -1,3 +1,4 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { get } from "@ember/object"; import { isEmpty } from "@ember/utils"; import { equal, and, or, not } from "@ember/object/computed"; @@ -8,7 +9,6 @@ import { popupAjaxError } from "discourse/lib/ajax-error"; import ActionSummary from "discourse/models/action-summary"; import { propertyEqual } from "discourse/lib/computed"; import Quote from "discourse/lib/quote"; -import computed from "ember-addons/ember-computed-decorators"; import { postUrl } from "discourse/lib/utilities"; import { cookAsync } from "discourse/lib/text"; import { userPath } from "discourse/lib/url"; @@ -28,7 +28,7 @@ const Post = RestModel.extend({ } }), - @computed("url") + @discourseComputed("url") shareUrl(url) { const user = Discourse.User.current(); const userSuffix = user ? `?u=${user.username_lower}` : ""; @@ -48,24 +48,24 @@ const Post = RestModel.extend({ deleted: or("deleted_at", "deletedViaTopic"), notDeleted: not("deleted"), - @computed("name", "username") + @discourseComputed("name", "username") showName(name, username) { return ( name && name !== username && Discourse.SiteSettings.display_name_on_posts ); }, - @computed("firstPost", "deleted_by", "topic.deleted_by") + @discourseComputed("firstPost", "deleted_by", "topic.deleted_by") postDeletedBy(firstPost, deletedBy, topicDeletedBy) { return firstPost ? topicDeletedBy : deletedBy; }, - @computed("firstPost", "deleted_at", "topic.deleted_at") + @discourseComputed("firstPost", "deleted_at", "topic.deleted_at") postDeletedAt(firstPost, deletedAt, topicDeletedAt) { return firstPost ? topicDeletedAt : deletedAt; }, - @computed("post_number", "topic_id", "topic.slug") + @discourseComputed("post_number", "topic_id", "topic.slug") url(post_number, topic_id, topicSlug) { return postUrl( topicSlug || this.topic_slug, @@ -75,12 +75,12 @@ const Post = RestModel.extend({ }, // Don't drop the /1 - @computed("post_number", "url") + @discourseComputed("post_number", "url") urlWithNumber(postNumber, baseUrl) { return postNumber === 1 ? `${baseUrl}/1` : baseUrl; }, - @computed("username") + @discourseComputed("username") usernameUrl: userPath, topicOwner: propertyEqual("topic.details.created_by.id", "user_id"), @@ -94,14 +94,14 @@ const Post = RestModel.extend({ .catch(popupAjaxError); }, - @computed("link_counts.@each.internal") + @discourseComputed("link_counts.@each.internal") internalLinks() { if (isEmpty(this.link_counts)) return null; return this.link_counts.filterBy("internal").filterBy("title"); }, - @computed("actions_summary.@each.can_act") + @discourseComputed("actions_summary.@each.can_act") flagsAvailable() { // TODO: Investigate why `this.site` is sometimes null when running // Search - Search with context diff --git a/app/assets/javascripts/discourse/models/result-set.js.es6 b/app/assets/javascripts/discourse/models/result-set.js.es6 index 436abfd2de..56e2c164b5 100644 --- a/app/assets/javascripts/discourse/models/result-set.js.es6 +++ b/app/assets/javascripts/discourse/models/result-set.js.es6 @@ -1,4 +1,4 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { Promise } from "rsvp"; export default Ember.ArrayProxy.extend({ @@ -15,7 +15,7 @@ export default Ember.ArrayProxy.extend({ __type: null, resultSetMeta: null, - @computed("totalRows", "length") + @discourseComputed("totalRows", "length") canLoadMore(totalRows, length) { return length < totalRows; }, diff --git a/app/assets/javascripts/discourse/models/reviewable.js.es6 b/app/assets/javascripts/discourse/models/reviewable.js.es6 index 892822c59e..fd6ad39603 100644 --- a/app/assets/javascripts/discourse/models/reviewable.js.es6 +++ b/app/assets/javascripts/discourse/models/reviewable.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; import RestModel from "discourse/models/rest"; -import computed from "ember-addons/ember-computed-decorators"; import Category from "discourse/models/category"; import { Promise } from "rsvp"; @@ -11,7 +11,7 @@ export const IGNORED = 3; export const DELETED = 4; export default RestModel.extend({ - @computed("type", "topic") + @discourseComputed("type", "topic") humanType(type, topic) { // Display "Queued Topic" if the post will create a topic if (type === "ReviewableQueuedPost" && !topic) { diff --git a/app/assets/javascripts/discourse/models/site.js.es6 b/app/assets/javascripts/discourse/models/site.js.es6 index bb76b07a0e..81d4acca56 100644 --- a/app/assets/javascripts/discourse/models/site.js.es6 +++ b/app/assets/javascripts/discourse/models/site.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { get } from "@ember/object"; import { isEmpty } from "@ember/utils"; import { alias, sort } from "@ember/object/computed"; import EmberObject from "@ember/object"; -import computed from "ember-addons/ember-computed-decorators"; import Archetype from "discourse/models/archetype"; import PostActionType from "discourse/models/post-action-type"; import Singleton from "discourse/mixins/singleton"; @@ -19,7 +19,7 @@ const Site = RestModel.extend({ this.topicCountDesc = ["topic_count:desc"]; }, - @computed("notification_types") + @discourseComputed("notification_types") notificationLookup(notificationTypes) { const result = []; Object.keys(notificationTypes).forEach( @@ -28,7 +28,7 @@ const Site = RestModel.extend({ return result; }, - @computed("post_action_types.[]") + @discourseComputed("post_action_types.[]") flagTypes() { const postActionTypes = this.post_action_types; if (!postActionTypes) return []; @@ -53,7 +53,7 @@ const Site = RestModel.extend({ }, // Sort subcategories under parents - @computed("categoriesByCount", "categories.[]") + @discourseComputed("categoriesByCount", "categories.[]") sortedCategories(cats) { const result = [], remaining = {}; @@ -80,13 +80,13 @@ const Site = RestModel.extend({ return result; }, - @computed + @discourseComputed baseUri() { return Discourse.baseUri; }, // Returns it in the correct order, by setting - @computed + @discourseComputed categoriesList() { return this.siteSettings.fixed_category_positions ? this.categories diff --git a/app/assets/javascripts/discourse/models/tag-group.js.es6 b/app/assets/javascripts/discourse/models/tag-group.js.es6 index e42ccee9dd..18afc52fe7 100644 --- a/app/assets/javascripts/discourse/models/tag-group.js.es6 +++ b/app/assets/javascripts/discourse/models/tag-group.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import RestModel from "discourse/models/rest"; -import computed from "ember-addons/ember-computed-decorators"; import PermissionType from "discourse/models/permission-type"; export default RestModel.extend({ - @computed("permissions") + @discourseComputed("permissions") permissionName(permissions) { if (!permissions) return "public"; diff --git a/app/assets/javascripts/discourse/models/tag.js.es6 b/app/assets/javascripts/discourse/models/tag.js.es6 index c9665111ac..ebfa93d93d 100644 --- a/app/assets/javascripts/discourse/models/tag.js.es6 +++ b/app/assets/javascripts/discourse/models/tag.js.es6 @@ -1,13 +1,13 @@ +import discourseComputed from "discourse-common/utils/decorators"; import RestModel from "discourse/models/rest"; -import computed from "ember-addons/ember-computed-decorators"; export default RestModel.extend({ - @computed("count", "pm_count") + @discourseComputed("count", "pm_count") totalCount(count, pmCount) { return count + pmCount; }, - @computed("count", "pm_count") + @discourseComputed("count", "pm_count") pmOnly(count, pmCount) { return count === 0 && pmCount > 0; } diff --git a/app/assets/javascripts/discourse/models/topic-details.js.es6 b/app/assets/javascripts/discourse/models/topic-details.js.es6 index 0622cacb69..0e0ad21b34 100644 --- a/app/assets/javascripts/discourse/models/topic-details.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-details.js.es6 @@ -1,6 +1,6 @@ +import discourseComputed from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; -import computed from "ember-addons/ember-computed-decorators"; /** A model representing a Topic's details that aren't always present, such as a list of participants. @@ -32,7 +32,7 @@ const TopicDetails = RestModel.extend({ this.set("loaded", true); }, - @computed("notification_level", "notifications_reason_id") + @discourseComputed("notification_level", "notifications_reason_id") notificationReasonText(level, reason) { if (typeof level !== "number") { level = 1; diff --git a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 index 89eab6119a..de53d7c35a 100644 --- a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 @@ -2,9 +2,9 @@ import { get } from "@ember/object"; import { isEmpty } from "@ember/utils"; import { NotificationLevels } from "discourse/lib/notification-levels"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { defaultHomepage } from "discourse/lib/utilities"; import PreloadStore from "preload-store"; @@ -206,7 +206,7 @@ const TopicTrackingState = Discourse.Model.extend({ this.set("incomingCount", 0); }, - @computed("incomingCount") + @discourseComputed("incomingCount") hasIncoming(incomingCount) { return incomingCount && incomingCount > 0; }, diff --git a/app/assets/javascripts/discourse/models/topic.js.es6 b/app/assets/javascripts/discourse/models/topic.js.es6 index f4bf6c6533..9590ffcda8 100644 --- a/app/assets/javascripts/discourse/models/topic.js.es6 +++ b/app/assets/javascripts/discourse/models/topic.js.es6 @@ -14,10 +14,10 @@ import { emojiUnescape } from "discourse/lib/text"; import PreloadStore from "preload-store"; import { userPath } from "discourse/lib/url"; import { - default as computed, + default as discourseComputed, observes, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export function loadTopicView(topic, args) { const data = _.merge({}, args); @@ -42,18 +42,18 @@ const Topic = RestModel.extend({ message: null, errorLoading: false, - @computed("last_read_post_number", "highest_post_number") + @discourseComputed("last_read_post_number", "highest_post_number") visited(lastReadPostNumber, highestPostNumber) { // >= to handle case where there are deleted posts at the end of the topic return lastReadPostNumber >= highestPostNumber; }, - @computed("posters.firstObject") + @discourseComputed("posters.firstObject") creator(poster) { return poster && poster.user; }, - @computed("posters.[]") + @discourseComputed("posters.[]") lastPoster(posters) { let user; if (posters && posters.length > 0) { @@ -65,7 +65,7 @@ const Topic = RestModel.extend({ return user || this.creator; }, - @computed("posters.[]", "participants.[]") + @discourseComputed("posters.[]", "participants.[]") featuredUsers(posters, participants) { let users = posters; const maxUserCount = 5; @@ -95,7 +95,7 @@ const Topic = RestModel.extend({ return users; }, - @computed("fancy_title") + @discourseComputed("fancy_title") fancyTitle(title) { let fancyTitle = censor( emojiUnescape(title || ""), @@ -110,7 +110,7 @@ const Topic = RestModel.extend({ }, // returns createdAt if there's no bumped date - @computed("bumped_at", "createdAt") + @discourseComputed("bumped_at", "createdAt") bumpedAt(bumped_at, createdAt) { if (bumped_at) { return new Date(bumped_at); @@ -119,7 +119,7 @@ const Topic = RestModel.extend({ } }, - @computed("bumpedAt", "createdAt") + @discourseComputed("bumpedAt", "createdAt") bumpedAtTitle(bumpedAt, createdAt) { const firstPost = I18n.t("first_post"); const lastPost = I18n.t("last_post"); @@ -129,12 +129,12 @@ const Topic = RestModel.extend({ return `${firstPost}: ${createdAtDate}\n${lastPost}: ${bumpedAtDate}`; }, - @computed("created_at") + @discourseComputed("created_at") createdAt(created_at) { return new Date(created_at); }, - @computed + @discourseComputed postStream() { return this.store.createRecord("postStream", { id: this.id, @@ -142,7 +142,7 @@ const Topic = RestModel.extend({ }); }, - @computed("tags") + @discourseComputed("tags") visibleListTags(tags) { if (!tags || !Discourse.SiteSettings.suppress_overlapping_tags_in_list) { return tags; @@ -160,7 +160,7 @@ const Topic = RestModel.extend({ return newTags; }, - @computed("related_messages") + @discourseComputed("related_messages") relatedMessages(relatedMessages) { if (relatedMessages) { const store = this.store; @@ -172,7 +172,7 @@ const Topic = RestModel.extend({ } }, - @computed("suggested_topics") + @discourseComputed("suggested_topics") suggestedTopics(suggestedTopics) { if (suggestedTopics) { const store = this.store; @@ -184,12 +184,12 @@ const Topic = RestModel.extend({ } }, - @computed("posts_count") + @discourseComputed("posts_count") replyCount(postsCount) { return postsCount - 1; }, - @computed + @discourseComputed details() { return this.store.createRecord("topicDetails", { id: this.id, @@ -200,7 +200,7 @@ const Topic = RestModel.extend({ invisible: not("visible"), deleted: notEmpty("deleted_at"), - @computed("id") + @discourseComputed("id") searchContext(id) { return { type: "topic", id }; }, @@ -223,12 +223,12 @@ const Topic = RestModel.extend({ categoryClass: fmt("category.fullSlug", "category-%@"), - @computed("tags") + @discourseComputed("tags") tagClasses(tags) { return tags && tags.map(t => `tag-${t}`).join(" "); }, - @computed("url") + @discourseComputed("url") shareUrl(url) { const user = Discourse.User.current(); const userQueryString = user ? `?u=${user.get("username_lower")}` : ""; @@ -237,7 +237,7 @@ const Topic = RestModel.extend({ printUrl: fmt("url", "%@/print"), - @computed("id", "slug") + @discourseComputed("id", "slug") url(id, slug) { slug = slug || ""; if (slug.trim().length === 0) { @@ -255,18 +255,18 @@ const Topic = RestModel.extend({ return url; }, - @computed("new_posts", "unread") + @discourseComputed("new_posts", "unread") totalUnread(newPosts, unread) { const count = (unread || 0) + (newPosts || 0); return count > 0 ? count : null; }, - @computed("last_read_post_number", "url") + @discourseComputed("last_read_post_number", "url") lastReadUrl(lastReadPostNumber) { return this.urlForPostNumber(lastReadPostNumber); }, - @computed("last_read_post_number", "highest_post_number", "url") + @discourseComputed("last_read_post_number", "highest_post_number", "url") lastUnreadUrl(lastReadPostNumber, highestPostNumber) { if (highestPostNumber <= lastReadPostNumber) { if (this.get("category.navigate_to_first_post_after_read")) { @@ -279,23 +279,23 @@ const Topic = RestModel.extend({ } }, - @computed("highest_post_number", "url") + @discourseComputed("highest_post_number", "url") lastPostUrl(highestPostNumber) { return this.urlForPostNumber(highestPostNumber); }, - @computed("url") + @discourseComputed("url") firstPostUrl() { return this.urlForPostNumber(1); }, - @computed("url") + @discourseComputed("url") summaryUrl() { const summaryQueryString = this.has_summary ? "?filter=summary" : ""; return `${this.urlForPostNumber(1)}${summaryQueryString}`; }, - @computed("last_poster.username") + @discourseComputed("last_poster.username") lastPosterUrl(username) { return userPath(username); }, @@ -303,7 +303,7 @@ const Topic = RestModel.extend({ // The amount of new posts to display. It might be different than what the server // tells us if we are still asynchronously flushing our "recently read" data. // So take what the browser has seen into consideration. - @computed("new_posts", "id") + @discourseComputed("new_posts", "id") displayNewPosts(newPosts, id) { const highestSeen = Discourse.Session.currentProp("highestSeenByTopic")[id]; if (highestSeen) { @@ -319,7 +319,7 @@ const Topic = RestModel.extend({ return newPosts; }, - @computed("views") + @discourseComputed("views") viewsHeat(v) { if (v >= Discourse.SiteSettings.topic_views_heat_high) { return "heatmap-high"; @@ -333,7 +333,7 @@ const Topic = RestModel.extend({ return null; }, - @computed("archetype") + @discourseComputed("archetype") archetypeObject(archetype) { return Discourse.Site.currentProp("archetypes").findBy("id", archetype); }, @@ -532,14 +532,14 @@ const Topic = RestModel.extend({ }); }, - @computed("excerpt") + @discourseComputed("excerpt") escapedExcerpt(excerpt) { return emojiUnescape(excerpt); }, hasExcerpt: notEmpty("excerpt"), - @computed("excerpt") + @discourseComputed("excerpt") excerptTruncated(excerpt) { return excerpt && excerpt.substr(excerpt.length - 8, 8) === "…"; }, diff --git a/app/assets/javascripts/discourse/models/user-action-stat.js.es6 b/app/assets/javascripts/discourse/models/user-action-stat.js.es6 index fd531cde9a..0791edd34d 100644 --- a/app/assets/javascripts/discourse/models/user-action-stat.js.es6 +++ b/app/assets/javascripts/discourse/models/user-action-stat.js.es6 @@ -1,10 +1,10 @@ +import discourseComputed from "discourse-common/utils/decorators"; import RestModel from "discourse/models/rest"; import UserAction from "discourse/models/user-action"; import { i18n } from "discourse/lib/computed"; -import computed from "ember-addons/ember-computed-decorators"; export default RestModel.extend({ - @computed("action_type") + @discourseComputed("action_type") isPM(actionType) { return ( actionType === UserAction.TYPES.messages_sent || @@ -14,7 +14,7 @@ export default RestModel.extend({ description: i18n("action_type", "user_action_groups.%@"), - @computed("action_type") + @discourseComputed("action_type") isResponse(actionType) { return ( actionType === UserAction.TYPES.replies || diff --git a/app/assets/javascripts/discourse/models/user-action.js.es6 b/app/assets/javascripts/discourse/models/user-action.js.es6 index 5ca07e7025..183c47e44b 100644 --- a/app/assets/javascripts/discourse/models/user-action.js.es6 +++ b/app/assets/javascripts/discourse/models/user-action.js.es6 @@ -1,7 +1,7 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { or, equal, and } from "@ember/object/computed"; import RestModel from "discourse/models/rest"; -import { on } from "ember-addons/ember-computed-decorators"; -import computed from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import UserActionGroup from "discourse/models/user-action-group"; import { postUrl } from "discourse/lib/utilities"; import { userPath } from "discourse/lib/url"; @@ -35,7 +35,7 @@ const UserAction = RestModel.extend({ } }, - @computed("action_type") + @discourseComputed("action_type") descriptionKey(action) { if (action === null || UserAction.TO_SHOW.indexOf(action) >= 0) { if (this.isPM) { @@ -66,12 +66,12 @@ const UserAction = RestModel.extend({ } }, - @computed("username") + @discourseComputed("username") sameUser(username) { return username === Discourse.User.currentProp("username"); }, - @computed("target_username") + @discourseComputed("target_username") targetUser(targetUsername) { return targetUsername === Discourse.User.currentProp("username"); }, @@ -80,27 +80,27 @@ const UserAction = RestModel.extend({ targetDisplayName: or("target_name", "target_username"), actingDisplayName: or("acting_name", "acting_username"), - @computed("target_username") + @discourseComputed("target_username") targetUserUrl(username) { return userPath(username); }, - @computed("username") + @discourseComputed("username") usernameLower(username) { return username.toLowerCase(); }, - @computed("usernameLower") + @discourseComputed("usernameLower") userUrl(usernameLower) { return userPath(usernameLower); }, - @computed() + @discourseComputed() postUrl() { return postUrl(this.slug, this.topic_id, this.post_number); }, - @computed() + @discourseComputed() replyUrl() { return postUrl(this.slug, this.topic_id, this.reply_to_post_number); }, @@ -145,7 +145,7 @@ const UserAction = RestModel.extend({ } }, - @computed( + @discourseComputed( "childGroups", "childGroups.likes.items", "childGroups.likes.items.[]", diff --git a/app/assets/javascripts/discourse/models/user-badge.js.es6 b/app/assets/javascripts/discourse/models/user-badge.js.es6 index 511ed71de2..3e00072f6e 100644 --- a/app/assets/javascripts/discourse/models/user-badge.js.es6 +++ b/app/assets/javascripts/discourse/models/user-badge.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; import Badge from "discourse/models/badge"; -import computed from "ember-addons/ember-computed-decorators"; import { Promise } from "rsvp"; import Topic from "discourse/models/topic"; const UserBadge = Discourse.Model.extend({ - @computed + @discourseComputed postUrl: function() { if (this.topic_title) { return "/t/-/" + this.topic_id + "/" + this.post_number; diff --git a/app/assets/javascripts/discourse/models/user-draft.js.es6 b/app/assets/javascripts/discourse/models/user-draft.js.es6 index 2ab353e92c..6e31ae3b2f 100644 --- a/app/assets/javascripts/discourse/models/user-draft.js.es6 +++ b/app/assets/javascripts/discourse/models/user-draft.js.es6 @@ -1,33 +1,32 @@ +import discourseComputed from "discourse-common/utils/decorators"; import RestModel from "discourse/models/rest"; -import computed from "ember-addons/ember-computed-decorators"; import { postUrl } from "discourse/lib/utilities"; import { userPath } from "discourse/lib/url"; import User from "discourse/models/user"; - import { NEW_TOPIC_KEY, NEW_PRIVATE_MESSAGE_KEY } from "discourse/models/composer"; export default RestModel.extend({ - @computed("draft_username") + @discourseComputed("draft_username") editableDraft(draftUsername) { return draftUsername === User.currentProp("username"); }, - @computed("username_lower") + @discourseComputed("username_lower") userUrl(usernameLower) { return userPath(usernameLower); }, - @computed("topic_id") + @discourseComputed("topic_id") postUrl(topicId) { if (!topicId) return; return postUrl(this.slug, this.topic_id, this.post_number); }, - @computed("draft_key") + @discourseComputed("draft_key") draftType(draftKey) { switch (draftKey) { case NEW_TOPIC_KEY: diff --git a/app/assets/javascripts/discourse/models/user-drafts-stream.js.es6 b/app/assets/javascripts/discourse/models/user-drafts-stream.js.es6 index ee1d3cccad..7472cc8e67 100644 --- a/app/assets/javascripts/discourse/models/user-drafts-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/user-drafts-stream.js.es6 @@ -1,9 +1,9 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; import { url } from "discourse/lib/computed"; import RestModel from "discourse/models/rest"; import UserDraft from "discourse/models/user-draft"; import { emojiUnescape } from "discourse/lib/text"; -import computed from "ember-addons/ember-computed-decorators"; import { Promise } from "rsvp"; import { NEW_TOPIC_KEY, @@ -38,7 +38,7 @@ export default RestModel.extend({ return this.findItems(); }, - @computed("content.length", "loaded") + @discourseComputed("content.length", "loaded") noContent(contentLength, loaded) { return loaded && contentLength === 0; }, diff --git a/app/assets/javascripts/discourse/models/user-posts-stream.js.es6 b/app/assets/javascripts/discourse/models/user-posts-stream.js.es6 index 74cadcb455..6213d98d14 100644 --- a/app/assets/javascripts/discourse/models/user-posts-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/user-posts-stream.js.es6 @@ -1,4 +1,4 @@ -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; import { url } from "discourse/lib/computed"; import UserAction from "discourse/models/user-action"; diff --git a/app/assets/javascripts/discourse/models/user-stream.js.es6 b/app/assets/javascripts/discourse/models/user-stream.js.es6 index 1a90ebd940..d411b58cee 100644 --- a/app/assets/javascripts/discourse/models/user-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/user-stream.js.es6 @@ -5,9 +5,9 @@ import UserAction from "discourse/models/user-action"; import { emojiUnescape } from "discourse/lib/text"; import { Promise } from "rsvp"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default RestModel.extend({ loaded: false, @@ -17,7 +17,7 @@ export default RestModel.extend({ this.setProperties({ itemsLoaded: 0, content: [] }); }, - @computed("filter") + @discourseComputed("filter") filterParam(filter) { if (filter === Discourse.UserAction.TYPES.replies) { return [UserAction.TYPES.replies, UserAction.TYPES.quotes].join(","); @@ -51,7 +51,7 @@ export default RestModel.extend({ return this.findItems(); }, - @computed("loaded", "content.[]") + @discourseComputed("loaded", "content.[]") noContent(loaded, content) { return loaded && content.length === 0; }, diff --git a/app/assets/javascripts/discourse/models/user.js.es6 b/app/assets/javascripts/discourse/models/user.js.es6 index af2a0dd2fc..8b7289d5ce 100644 --- a/app/assets/javascripts/discourse/models/user.js.es6 +++ b/app/assets/javascripts/discourse/models/user.js.es6 @@ -9,9 +9,9 @@ import UserPostsStream from "discourse/models/user-posts-stream"; import Singleton from "discourse/mixins/singleton"; import { longDate } from "discourse/lib/formatter"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import Badge from "discourse/models/badge"; import UserBadge from "discourse/models/user-badge"; import UserActionStat from "discourse/models/user-action-stat"; @@ -43,22 +43,22 @@ const User = RestModel.extend({ reason: null }, - @computed("can_be_deleted", "post_count") + @discourseComputed("can_be_deleted", "post_count") canBeDeleted(canBeDeleted, postCount) { return canBeDeleted && postCount <= 5; }, - @computed() + @discourseComputed() stream() { return UserStream.create({ user: this }); }, - @computed() + @discourseComputed() postsStream() { return UserPostsStream.create({ user: this }); }, - @computed() + @discourseComputed() userDraftsStream() { return UserDraftsStream.create({ user: this }); }, @@ -78,7 +78,7 @@ const User = RestModel.extend({ return ajax(`/session/${this.username}`, { type: "DELETE" }); }, - @computed("username_lower") + @discourseComputed("username_lower") searchContext(username) { return { type: "user", @@ -87,7 +87,7 @@ const User = RestModel.extend({ }; }, - @computed("username", "name") + @discourseComputed("username", "name") displayName(username, name) { if (Discourse.SiteSettings.enable_names && !isEmpty(name)) { return name; @@ -95,7 +95,7 @@ const User = RestModel.extend({ return username; }, - @computed("profile_background_upload_url") + @discourseComputed("profile_background_upload_url") profileBackgroundUrl(bgUrl) { if (isEmpty(bgUrl) || !Discourse.SiteSettings.allow_profile_backgrounds) { return "".htmlSafe(); @@ -107,13 +107,13 @@ const User = RestModel.extend({ ).htmlSafe(); }, - @computed() + @discourseComputed() path() { // no need to observe, requires a hard refresh to update return userPath(this.username_lower); }, - @computed() + @discourseComputed() userApiKeys() { const keys = this.user_api_keys; if (keys) { @@ -171,33 +171,33 @@ const User = RestModel.extend({ adminPath: url("id", "username_lower", "/admin/users/%@1/%@2"), - @computed() + @discourseComputed() mutedTopicsPath() { return defaultHomepage() === "latest" ? Discourse.getURL("/?state=muted") : Discourse.getURL("/latest?state=muted"); }, - @computed() + @discourseComputed() watchingTopicsPath() { return defaultHomepage() === "latest" ? Discourse.getURL("/?state=watching") : Discourse.getURL("/latest?state=watching"); }, - @computed() + @discourseComputed() trackingTopicsPath() { return defaultHomepage() === "latest" ? Discourse.getURL("/?state=tracking") : Discourse.getURL("/latest?state=tracking"); }, - @computed("username") + @discourseComputed("username") username_lower(username) { return username.toLowerCase(); }, - @computed("trust_level") + @discourseComputed("trust_level") trustLevel(trustLevel) { return Discourse.Site.currentProp("trustLevels").findBy( "id", @@ -210,26 +210,26 @@ const User = RestModel.extend({ isElder: equal("trust_level", 4), canManageTopic: or("staff", "isElder"), - @computed("previous_visit_at") + @discourseComputed("previous_visit_at") previousVisitAt(previous_visit_at) { return new Date(previous_visit_at); }, - @computed("suspended_till") + @discourseComputed("suspended_till") suspended(suspendedTill) { return suspendedTill && moment(suspendedTill).isAfter(); }, - @computed("suspended_till") + @discourseComputed("suspended_till") suspendedForever: isForever, - @computed("silenced_till") + @discourseComputed("silenced_till") silencedForever: isForever, - @computed("suspended_till") + @discourseComputed("suspended_till") suspendedTillDate: longDate, - @computed("silenced_till") + @discourseComputed("silenced_till") silencedTillDate: longDate, changeUsername(new_username) { @@ -492,7 +492,7 @@ const User = RestModel.extend({ numGroupsToDisplay: 2, - @computed("groups.[]") + @discourseComputed("groups.[]") filteredGroups() { const groups = this.groups || []; @@ -501,19 +501,19 @@ const User = RestModel.extend({ }); }, - @computed("filteredGroups", "numGroupsToDisplay") + @discourseComputed("filteredGroups", "numGroupsToDisplay") displayGroups(filteredGroups, numGroupsToDisplay) { const groups = filteredGroups.slice(0, numGroupsToDisplay); return groups.length === 0 ? null : groups; }, - @computed("filteredGroups", "numGroupsToDisplay") + @discourseComputed("filteredGroups", "numGroupsToDisplay") showMoreGroupsLink(filteredGroups, numGroupsToDisplay) { return filteredGroups.length > numGroupsToDisplay; }, // The user's stat count, excluding PMs. - @computed("statsExcludingPms.@each.count") + @discourseComputed("statsExcludingPms.@each.count") statsCountNonPM() { if (isEmpty(this.statsExcludingPms)) return 0; let count = 0; @@ -526,7 +526,7 @@ const User = RestModel.extend({ }, // The user's stats, excluding PMs. - @computed("stats.@each.isPM") + @discourseComputed("stats.@each.isPM") statsExcludingPms() { if (isEmpty(this.stats)) return []; return this.stats.rejectBy("isPM"); @@ -661,7 +661,7 @@ const User = RestModel.extend({ ); }, - @computed("can_delete_account") + @discourseComputed("can_delete_account") canDeleteAccount(canDeleteAccount) { return !Discourse.SiteSettings.enable_sso && canDeleteAccount; }, @@ -768,7 +768,7 @@ const User = RestModel.extend({ : this.admin || group.get("is_group_owner"); }, - @computed("groups.@each.title", "badges.[]") + @discourseComputed("groups.@each.title", "badges.[]") availableTitles() { let titles = []; @@ -794,7 +794,7 @@ const User = RestModel.extend({ }); }, - @computed("user_option.text_size_seq", "user_option.text_size") + @discourseComputed("user_option.text_size_seq", "user_option.text_size") currentTextSize(serverSeq, serverSize) { if ($.cookie("text_size")) { const [cookieSize, cookieSeq] = $.cookie("text_size").split("|"); @@ -817,7 +817,7 @@ const User = RestModel.extend({ } }, - @computed("second_factor_enabled", "staff") + @discourseComputed("second_factor_enabled", "staff") enforcedSecondFactor(secondFactorEnabled, staff) { const enforce = Discourse.SiteSettings.enforce_second_factor; return ( diff --git a/app/assets/javascripts/discourse/raw-views/list/post-count-or-badges.js.es6 b/app/assets/javascripts/discourse/raw-views/list/post-count-or-badges.js.es6 index d7c5f0aa06..20b15a3ebd 100644 --- a/app/assets/javascripts/discourse/raw-views/list/post-count-or-badges.js.es6 +++ b/app/assets/javascripts/discourse/raw-views/list/post-count-or-badges.js.es6 @@ -1,12 +1,12 @@ import { or, and } from "@ember/object/computed"; import EmberObject from "@ember/object"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default EmberObject.extend({ postCountsPresent: or("topic.unread", "topic.displayNewPosts"), showBadges: and("postBadgesEnabled", "postCountsPresent"), - @computed + @discourseComputed newDotText() { return this.currentUser && this.currentUser.trust_level > 0 ? "" diff --git a/app/assets/javascripts/discourse/raw-views/list/posts-count-column.js.es6 b/app/assets/javascripts/discourse/raw-views/list/posts-count-column.js.es6 index 2c7ca4c9b9..12a27f3a22 100644 --- a/app/assets/javascripts/discourse/raw-views/list/posts-count-column.js.es6 +++ b/app/assets/javascripts/discourse/raw-views/list/posts-count-column.js.es6 @@ -1,11 +1,11 @@ +import discourseComputed from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; -import computed from "ember-addons/ember-computed-decorators"; import { fmt } from "discourse/lib/computed"; export default EmberObject.extend({ tagName: "td", - @computed("topic.like_count", "topic.posts_count") + @discourseComputed("topic.like_count", "topic.posts_count") ratio(likeCount, postCount) { const likes = parseFloat(likeCount); const posts = parseFloat(postCount); @@ -17,12 +17,12 @@ export default EmberObject.extend({ return (likes || 0) / posts; }, - @computed("topic.replyCount", "ratioText") + @discourseComputed("topic.replyCount", "ratioText") title(count, ratio) { return I18n.messageFormat("posts_likes_MF", { count, ratio }).trim(); }, - @computed("ratio") + @discourseComputed("ratio") ratioText(ratio) { const settings = this.siteSettings; if (ratio > settings.topic_post_like_heat_high) { diff --git a/app/assets/javascripts/discourse/raw-views/list/visited-line.js.es6 b/app/assets/javascripts/discourse/raw-views/list/visited-line.js.es6 index b2aac57550..2428c81012 100644 --- a/app/assets/javascripts/discourse/raw-views/list/visited-line.js.es6 +++ b/app/assets/javascripts/discourse/raw-views/list/visited-line.js.es6 @@ -1,8 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; -import computed from "ember-addons/ember-computed-decorators"; export default EmberObject.extend({ - @computed + @discourseComputed isLastVisited: function() { return this.lastVisitedTopic === this.topic; } diff --git a/app/assets/javascripts/discourse/raw-views/topic-list-header-column.js.es6 b/app/assets/javascripts/discourse/raw-views/topic-list-header-column.js.es6 index 0ac85216b7..e5b44af68e 100644 --- a/app/assets/javascripts/discourse/raw-views/topic-list-header-column.js.es6 +++ b/app/assets/javascripts/discourse/raw-views/topic-list-header-column.js.es6 @@ -1,8 +1,8 @@ import EmberObject from "@ember/object"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default EmberObject.extend({ - @computed + @discourseComputed localizedName() { if (this.forceName) { return this.forceName; @@ -11,18 +11,18 @@ export default EmberObject.extend({ return this.name ? I18n.t(this.name) : ""; }, - @computed + @discourseComputed sortIcon() { const asc = this.parent.ascending ? "up" : "down"; return `chevron-${asc}`; }, - @computed + @discourseComputed isSorting() { return this.sortable && this.parent.order === this.order; }, - @computed + @discourseComputed className() { const name = []; diff --git a/app/assets/javascripts/discourse/raw-views/topic-status.js.es6 b/app/assets/javascripts/discourse/raw-views/topic-status.js.es6 index 8e7269bbca..d6b2c74999 100644 --- a/app/assets/javascripts/discourse/raw-views/topic-status.js.es6 +++ b/app/assets/javascripts/discourse/raw-views/topic-status.js.es6 @@ -1,15 +1,15 @@ +import discourseComputed from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; -import computed from "ember-addons/ember-computed-decorators"; export default EmberObject.extend({ showDefault: null, - @computed("defaultIcon") + @discourseComputed("defaultIcon") renderDiv(defaultIcon) { return (defaultIcon || this.statuses.length > 0) && !this.noDiv; }, - @computed + @discourseComputed statuses() { const topic = this.topic; const results = []; diff --git a/app/assets/javascripts/discourse/services/logs-notice.js.es6 b/app/assets/javascripts/discourse/services/logs-notice.js.es6 index 73961054a1..9d124edf0b 100644 --- a/app/assets/javascripts/discourse/services/logs-notice.js.es6 +++ b/app/assets/javascripts/discourse/services/logs-notice.js.es6 @@ -1,10 +1,10 @@ import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; import { - default as computed, + default as discourseComputed, on, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { autoUpdatingRelativeAge } from "discourse/lib/formatter"; const LOGS_NOTICE_KEY = "logs-notice-text"; @@ -47,22 +47,22 @@ const LogsNotice = EmberObject.extend({ }); }, - @computed("text") + @discourseComputed("text") isEmpty(text) { return isEmpty(text); }, - @computed("text") + @discourseComputed("text") message(text) { return new Handlebars.SafeString(text); }, - @computed("currentUser") + @discourseComputed("currentUser") isAdmin(currentUser) { return currentUser && currentUser.admin; }, - @computed("isEmpty", "isAdmin") + @discourseComputed("isEmpty", "isAdmin") hidden(thisIsEmpty, isAdmin) { return !isAdmin || thisIsEmpty; }, @@ -72,7 +72,7 @@ const LogsNotice = EmberObject.extend({ this.keyValueStore.setItem(LOGS_NOTICE_KEY, this.text); }, - @computed( + @discourseComputed( "siteSettings.alert_admins_if_errors_per_hour", "siteSettings.alert_admins_if_errors_per_minute" ) diff --git a/app/assets/javascripts/discourse/services/search.js.es6 b/app/assets/javascripts/discourse/services/search.js.es6 index 641e35e482..c9e51f43c8 100644 --- a/app/assets/javascripts/discourse/services/search.js.es6 +++ b/app/assets/javascripts/discourse/services/search.js.es6 @@ -1,9 +1,9 @@ import { get } from "@ember/object"; import EmberObject from "@ember/object"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; export default EmberObject.extend({ searchContextEnabled: false, // checkbox to scope search @@ -16,7 +16,7 @@ export default EmberObject.extend({ this.set("highlightTerm", this.term); }, - @computed("searchContext") + @discourseComputed("searchContext") contextType: { get(searchContext) { if (searchContext) { diff --git a/app/assets/javascripts/discourse/templates/components/reviewable-score.js.es6 b/app/assets/javascripts/discourse/templates/components/reviewable-score.js.es6 index 291db6c238..ee36959c61 100644 --- a/app/assets/javascripts/discourse/templates/components/reviewable-score.js.es6 +++ b/app/assets/javascripts/discourse/templates/components/reviewable-score.js.es6 @@ -1,13 +1,13 @@ +import discourseComputed from "discourse-common/utils/decorators"; import { gt } from "@ember/object/computed"; import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; export default Component.extend({ tagName: "", showStatus: gt("rs.status", 0), - @computed("rs.score_type.title", "reviewable.target_created_by") + @discourseComputed("rs.score_type.title", "reviewable.target_created_by") title(title, targetCreatedBy) { if (title && targetCreatedBy) { return title.replace("{{username}}", targetCreatedBy.username); diff --git a/app/assets/javascripts/ember-addons/decorator-alias.js.es6 b/app/assets/javascripts/ember-addons/decorator-alias.js.es6 index 44d911a1dd..327dc7a2cb 100644 --- a/app/assets/javascripts/ember-addons/decorator-alias.js.es6 +++ b/app/assets/javascripts/ember-addons/decorator-alias.js.es6 @@ -2,7 +2,7 @@ import extractValue from "./utils/extract-value"; export default function decoratorAlias(fn, errorMessage) { return function(...params) { - // determine if user called as @computed('blah', 'blah') or @computed + // determine if user called as @discourseComputed('blah', 'blah') or @discourseComputed if (params.length === 0) { throw new Error(errorMessage); } else { diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown/onebox.js.es6 b/app/assets/javascripts/pretty-text/engines/discourse-markdown/onebox.js.es6 index 3203110c94..7358bdaa06 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown/onebox.js.es6 +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown/onebox.js.es6 @@ -1,6 +1,5 @@ import { lookupCache } from "pretty-text/oneboxer-cache"; import { cachedInlineOnebox } from "pretty-text/inline-oneboxer"; - import { INLINE_ONEBOX_LOADING_CSS_CLASS, INLINE_ONEBOX_CSS_CLASS diff --git a/app/assets/javascripts/select-kit/components/admin-group-selector.js.es6 b/app/assets/javascripts/select-kit/components/admin-group-selector.js.es6 index ddc883ee07..2d99404c0a 100644 --- a/app/assets/javascripts/select-kit/components/admin-group-selector.js.es6 +++ b/app/assets/javascripts/select-kit/components/admin-group-selector.js.es6 @@ -1,5 +1,6 @@ import MultiSelectComponent from "select-kit/components/multi-select"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; + const { makeArray } = Ember; export default MultiSelectComponent.extend({ @@ -10,7 +11,7 @@ export default MultiSelectComponent.extend({ allowAny: false, buffer: null, - @computed("buffer") + @discourseComputed("buffer") values(buffer) { return buffer === null ? makeArray(this.selected).map(s => this.valueForContentItem(s)) diff --git a/app/assets/javascripts/select-kit/components/category-chooser.js.es6 b/app/assets/javascripts/select-kit/components/category-chooser.js.es6 index a1d453aa2a..8a91e9868e 100644 --- a/app/assets/javascripts/select-kit/components/category-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-chooser.js.es6 @@ -1,5 +1,5 @@ import ComboBoxComponent from "select-kit/components/combo-box"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import PermissionType from "discourse/models/permission-type"; import Category from "discourse/models/category"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; @@ -53,7 +53,7 @@ export default ComboBoxComponent.extend({ }); }, - @computed("rootNone", "rootNoneLabel") + @discourseComputed("rootNone", "rootNoneLabel") none(rootNone, rootNoneLabel) { if ( this.siteSettings.allow_uncategorized_topics || diff --git a/app/assets/javascripts/select-kit/components/category-drop.js.es6 b/app/assets/javascripts/select-kit/components/category-drop.js.es6 index 425c2bb038..25f72b2655 100644 --- a/app/assets/javascripts/select-kit/components/category-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-drop.js.es6 @@ -1,6 +1,6 @@ import ComboBoxComponent from "select-kit/components/combo-box"; import DiscourseURL from "discourse/lib/url"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import Category from "discourse/models/category"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; const { isEmpty } = Ember; @@ -23,7 +23,12 @@ export default ComboBoxComponent.extend({ subCategory: false, isAsync: Ember.computed.not("subCategory"), - @computed("categories", "hasSelection", "subCategory", "noSubcategories") + @discourseComputed( + "categories", + "hasSelection", + "subCategory", + "noSubcategories" + ) categoriesWithShortcuts( categories, hasSelection, @@ -70,7 +75,7 @@ export default ComboBoxComponent.extend({ this.forceValue(this.get("category.id")); }, - @computed("content") + @discourseComputed("content") filterable(content) { const contentLength = (content && content.length) || 0; return ( @@ -107,7 +112,7 @@ export default ComboBoxComponent.extend({ return content; }, - @computed("parentCategory.name", "subCategory") + @discourseComputed("parentCategory.name", "subCategory") allCategoriesLabel(categoryName, subCategory) { if (subCategory) { return I18n.t("categories.all_subcategories", { categoryName }); @@ -115,12 +120,12 @@ export default ComboBoxComponent.extend({ return I18n.t("categories.all"); }, - @computed("parentCategory.url", "subCategory") + @discourseComputed("parentCategory.url", "subCategory") allCategoriesUrl(parentCategoryUrl, subCategory) { return Discourse.getURL(subCategory ? parentCategoryUrl || "/" : "/"); }, - @computed("parentCategory.url") + @discourseComputed("parentCategory.url") noCategoriesUrl(parentCategoryUrl) { return Discourse.getURL(`${parentCategoryUrl}/none`); }, diff --git a/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 b/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 index c04fc30840..ad86019a19 100644 --- a/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 @@ -1,6 +1,6 @@ import { isEmpty } from "@ember/utils"; import ComboBoxSelectBoxHeaderComponent from "select-kit/components/combo-box/combo-box-header"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import Category from "discourse/models/category"; export default ComboBoxSelectBoxHeaderComponent.extend({ @@ -11,7 +11,7 @@ export default ComboBoxSelectBoxHeaderComponent.extend({ classNameBindings: ["categoryStyleClass"], categoryStyleClass: Ember.computed.alias("site.category_style"), - @computed("computedContent.value", "computedContent.name") + @discourseComputed("computedContent.value", "computedContent.name") category(value, name) { if (isEmpty(value)) { const uncat = Category.findUncategorized(); @@ -23,17 +23,17 @@ export default ComboBoxSelectBoxHeaderComponent.extend({ } }, - @computed("category.color") + @discourseComputed("category.color") categoryBackgroundColor(categoryColor) { return categoryColor || "#e9e9e9"; }, - @computed("category.text_color") + @discourseComputed("category.text_color") categoryTextColor(categoryTextColor) { return categoryTextColor || "#333"; }, - @computed("category", "categoryBackgroundColor", "categoryTextColor") + @discourseComputed("category", "categoryBackgroundColor", "categoryTextColor") categoryStyle(category, categoryBackgroundColor, categoryTextColor) { const categoryStyle = this.siteSettings.category_style; diff --git a/app/assets/javascripts/select-kit/components/category-row.js.es6 b/app/assets/javascripts/select-kit/components/category-row.js.es6 index 8523bfb07e..d2a548164e 100644 --- a/app/assets/javascripts/select-kit/components/category-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-row.js.es6 @@ -1,6 +1,6 @@ import { isEmpty } from "@ember/utils"; import SelectKitRowComponent from "select-kit/components/select-kit/select-kit-row"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import Category from "discourse/models/category"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; @@ -12,7 +12,7 @@ export default SelectKitRowComponent.extend({ allowUncategorized: Ember.computed.bool("options.allowUncategorized"), categoryLink: Ember.computed.bool("options.categoryLink"), - @computed("options.displayCategoryDescription") + @discourseComputed("options.displayCategoryDescription") displayCategoryDescription(displayCategoryDescription) { if (Ember.isNone(displayCategoryDescription)) { return true; @@ -21,12 +21,12 @@ export default SelectKitRowComponent.extend({ return displayCategoryDescription; }, - @computed("descriptionText", "description", "category.name") + @discourseComputed("descriptionText", "description", "category.name") title(descriptionText, description, name) { return descriptionText || description || name; }, - @computed("computedContent.value", "computedContent.name") + @discourseComputed("computedContent.value", "computedContent.name") category(value, name) { if (isEmpty(value)) { const uncat = Category.findUncategorized(); @@ -38,7 +38,7 @@ export default SelectKitRowComponent.extend({ } }, - @computed("category", "parentCategory") + @discourseComputed("category", "parentCategory") badgeForCategory(category, parentCategory) { return categoryBadgeHTML(category, { link: this.categoryLink, @@ -47,7 +47,7 @@ export default SelectKitRowComponent.extend({ }).htmlSafe(); }, - @computed("parentCategory") + @discourseComputed("parentCategory") badgeForParentCategory(parentCategory) { return categoryBadgeHTML(parentCategory, { link: this.categoryLink, @@ -55,22 +55,22 @@ export default SelectKitRowComponent.extend({ }).htmlSafe(); }, - @computed("parentCategoryid") + @discourseComputed("parentCategoryid") parentCategory(parentCategoryId) { return Category.findById(parentCategoryId); }, - @computed("parentCategoryid") + @discourseComputed("parentCategoryid") hasParentCategory(parentCategoryid) { return !Ember.isNone(parentCategoryid); }, - @computed("category") + @discourseComputed("category") parentCategoryid(category) { return category.get("parent_category_id"); }, - @computed( + @discourseComputed( "category.totalTopicCount", "category.topic_count", "options.countSubcategories" @@ -79,19 +79,19 @@ export default SelectKitRowComponent.extend({ return countSubcats ? totalCount : topicCount; }, - @computed("displayCategoryDescription", "category.description") + @discourseComputed("displayCategoryDescription", "category.description") shouldDisplayDescription(displayCategoryDescription, description) { return displayCategoryDescription && description && description !== "null"; }, - @computed("category.description_text") + @discourseComputed("category.description_text") descriptionText(descriptionText) { if (descriptionText) { return this._formatCategoryDescription(descriptionText); } }, - @computed("category.description") + @discourseComputed("category.description") description(description) { if (description) { return this._formatCategoryDescription(description); diff --git a/app/assets/javascripts/select-kit/components/color-palettes/color-palettes-row.js.es6 b/app/assets/javascripts/select-kit/components/color-palettes/color-palettes-row.js.es6 index e0ae6b7039..7aa53eb596 100644 --- a/app/assets/javascripts/select-kit/components/color-palettes/color-palettes-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/color-palettes/color-palettes-row.js.es6 @@ -1,13 +1,13 @@ import { escapeExpression } from "discourse/lib/utilities"; import SelectKitRowComponent from "select-kit/components/select-kit/select-kit-row"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default SelectKitRowComponent.extend({ layoutName: "select-kit/templates/components/color-palettes/color-palettes-row", classNames: "color-palettes-row", - @computed("computedContent.originalContent.colors") + @discourseComputed("computedContent.originalContent.colors") colors(colors) { return (colors || []).map(color => `#${escapeExpression(color.hex)}`); } diff --git a/app/assets/javascripts/select-kit/components/combo-box.js.es6 b/app/assets/javascripts/select-kit/components/combo-box.js.es6 index 09e8a7c7bd..71928d314f 100644 --- a/app/assets/javascripts/select-kit/components/combo-box.js.es6 +++ b/app/assets/javascripts/select-kit/components/combo-box.js.es6 @@ -1,8 +1,8 @@ import SingleSelectComponent from "select-kit/components/single-select"; import { on, - default as computed -} from "ember-addons/ember-computed-decorators"; + default as discourseComputed +} from "discourse-common/utils/decorators"; export default SingleSelectComponent.extend({ pluginApiIdentifiers: ["combo-box"], @@ -20,7 +20,7 @@ export default SingleSelectComponent.extend({ return content; }, - @computed("isExpanded", "caretUpIcon", "caretDownIcon") + @discourseComputed("isExpanded", "caretUpIcon", "caretDownIcon") caretIcon(isExpanded, caretUpIcon, caretDownIcon) { return isExpanded ? caretUpIcon : caretDownIcon; }, diff --git a/app/assets/javascripts/select-kit/components/composer-actions.js.es6 b/app/assets/javascripts/select-kit/components/composer-actions.js.es6 index 98b1d06410..e36b27f15e 100644 --- a/app/assets/javascripts/select-kit/components/composer-actions.js.es6 +++ b/app/assets/javascripts/select-kit/components/composer-actions.js.es6 @@ -1,5 +1,5 @@ import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { PRIVATE_MESSAGE, CREATE_TOPIC, @@ -76,7 +76,7 @@ export default DropdownSelectBoxComponent.extend({ return content; }, - @computed("options", "canWhisper", "action") + @discourseComputed("options", "canWhisper", "action") content(options, canWhisper, action) { let items = []; diff --git a/app/assets/javascripts/select-kit/components/dropdown-select-box.js.es6 b/app/assets/javascripts/select-kit/components/dropdown-select-box.js.es6 index 1bbf6d510e..77c1927e96 100644 --- a/app/assets/javascripts/select-kit/components/dropdown-select-box.js.es6 +++ b/app/assets/javascripts/select-kit/components/dropdown-select-box.js.es6 @@ -1,5 +1,5 @@ import SingleSelectComponent from "select-kit/components/single-select"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; export default SingleSelectComponent.extend({ pluginApiIdentifiers: ["dropdown-select-box"], diff --git a/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-header.js.es6 b/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-header.js.es6 index 1acccd3067..d83156c018 100644 --- a/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-header.js.es6 @@ -1,5 +1,5 @@ import SelectKitHeaderComponent from "select-kit/components/select-kit/select-kit-header"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default SelectKitHeaderComponent.extend({ layoutName: @@ -9,7 +9,7 @@ export default SelectKitHeaderComponent.extend({ classNameBindings: ["btnClassName"], - @computed("options.showFullTitle") + @discourseComputed("options.showFullTitle") btnClassName(showFullTitle) { return `btn ${showFullTitle ? "btn-icon-text" : "no-text btn-icon"}`; } diff --git a/app/assets/javascripts/select-kit/components/group-dropdown.js.es6 b/app/assets/javascripts/select-kit/components/group-dropdown.js.es6 index 882bf46cb9..a53988a953 100644 --- a/app/assets/javascripts/select-kit/components/group-dropdown.js.es6 +++ b/app/assets/javascripts/select-kit/components/group-dropdown.js.es6 @@ -1,6 +1,6 @@ import ComboBoxComponent from "select-kit/components/combo-box"; import DiscourseURL from "discourse/lib/url"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default ComboBoxComponent.extend({ pluginApiIdentifiers: ["group-dropdown"], @@ -12,7 +12,7 @@ export default ComboBoxComponent.extend({ allowAutoSelectFirst: false, valueAttribute: "name", - @computed("content") + @discourseComputed("content") filterable(content) { return content && content.length >= 10; }, @@ -27,7 +27,7 @@ export default ComboBoxComponent.extend({ return content; }, - @computed + @discourseComputed collectionHeader() { if ( this.siteSettings.enable_group_directory || diff --git a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 index c32e15e19a..5a2fe7a73e 100644 --- a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 @@ -1,7 +1,7 @@ import Category from "discourse/models/category"; import ComboBox from "select-kit/components/combo-box"; import TagsMixin from "select-kit/mixins/tags"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; import renderTag from "discourse/lib/render-tag"; import { escapeExpression } from "discourse/lib/utilities"; import { makeArray } from "discourse-common/lib/helpers"; @@ -55,7 +55,7 @@ export default ComboBox.extend(TagsMixin, { ); }, - @computed( + @discourseComputed( "computedValue", "filter", "collectionComputedContent.[]", @@ -98,12 +98,12 @@ export default ComboBox.extend(TagsMixin, { ); }, - @computed("hasReachedMaximum") + @discourseComputed("hasReachedMaximum") caretIcon(hasReachedMaximum) { return hasReachedMaximum ? null : "plus"; }, - @computed("tags") + @discourseComputed("tags") selection(tags) { return makeArray(tags).map(c => this.computeContentItem(c)); }, @@ -139,7 +139,7 @@ export default ComboBox.extend(TagsMixin, { return true; }, - @computed("tags.[]", "filter", "highlightedSelection.[]") + @discourseComputed("tags.[]", "filter", "highlightedSelection.[]") collectionHeader(tags, filter, highlightedSelection) { if (!isEmpty(tags)) { let output = ""; diff --git a/app/assets/javascripts/select-kit/components/multi-select.js.es6 b/app/assets/javascripts/select-kit/components/multi-select.js.es6 index 2bb2bbb610..40a5dc7f0b 100644 --- a/app/assets/javascripts/select-kit/components/multi-select.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select.js.es6 @@ -1,6 +1,8 @@ import SelectKitComponent from "select-kit/components/select-kit"; -import computed from "ember-addons/ember-computed-decorators"; -import { on } from "ember-addons/ember-computed-decorators"; +import { + default as discourseComputed, + on +} from "discourse-common/utils/decorators"; const { get, isNone, isEmpty, makeArray, run } = Ember; import { applyOnSelectPluginApiCallbacks, @@ -67,7 +69,7 @@ export default SelectKitComponent.extend({ }); }, - @computed("filter", "shouldDisplayCreateRow") + @discourseComputed("filter", "shouldDisplayCreateRow") createRowComputedContent(filter, shouldDisplayCreateRow) { if (shouldDisplayCreateRow) { let content = this.createContentFromInput(filter); @@ -75,12 +77,12 @@ export default SelectKitComponent.extend({ } }, - @computed("filter", "computedValues") + @discourseComputed("filter", "computedValues") shouldDisplayCreateRow(filter, computedValues) { return this._super() && !computedValues.includes(filter); }, - @computed + @discourseComputed shouldDisplayFilter() { return true; }, @@ -126,7 +128,7 @@ export default SelectKitComponent.extend({ }); }, - @computed("computedAsyncContent.[]", "computedValues.[]") + @discourseComputed("computedAsyncContent.[]", "computedValues.[]") filteredAsyncComputedContent(computedAsyncContent, computedValues) { computedAsyncContent = computedAsyncContent.filter(c => { return !computedValues.includes(get(c, "value")); @@ -139,7 +141,7 @@ export default SelectKitComponent.extend({ return computedAsyncContent; }, - @computed("computedContent.[]", "computedValues.[]", "filter") + @discourseComputed("computedContent.[]", "computedValues.[]", "filter") filteredComputedContent(computedContent, computedValues, filter) { computedContent = computedContent.filter(c => { return !computedValues.includes(get(c, "value")); @@ -182,7 +184,7 @@ export default SelectKitComponent.extend({ return content; }, - @computed("filter") + @discourseComputed("filter") templateForCreateRow() { return rowComponent => { return I18n.t("select_kit.create", { @@ -195,7 +197,7 @@ export default SelectKitComponent.extend({ return this._super() && !this.hasReachedMaximum; }, - @computed("computedValues.[]", "computedContent.[]") + @discourseComputed("computedValues.[]", "computedContent.[]") selection(computedValues, computedContent) { const selected = []; @@ -207,7 +209,7 @@ export default SelectKitComponent.extend({ return selected; }, - @computed("selection.[]") + @discourseComputed("selection.[]") hasSelection(selection) { return !isEmpty(selection); }, diff --git a/app/assets/javascripts/select-kit/components/multi-select/multi-select-filter.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/multi-select-filter.js.es6 index e9b9233448..3732ccd914 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/multi-select-filter.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/multi-select-filter.js.es6 @@ -1,4 +1,4 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; const { isEmpty } = Ember; import SelectKitFilterComponent from "select-kit/components/select-kit/select-kit-filter"; @@ -6,8 +6,8 @@ export default SelectKitFilterComponent.extend({ layoutName: "select-kit/templates/components/select-kit/select-kit-filter", classNames: ["multi-select-filter"], - @computed("placeholder", "hasSelection") - computedPlaceholder(placeholder, hasSelection) { + @discourseComputed("placeholder", "hasSelection") + discourseComputedPlaceholder(placeholder, hasSelection) { if (hasSelection) return ""; return isEmpty(placeholder) ? "" : I18n.t(placeholder); } diff --git a/app/assets/javascripts/select-kit/components/multi-select/multi-select-header.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/multi-select-header.js.es6 index b16ed0c290..67c3ac3f9e 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/multi-select-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/multi-select-header.js.es6 @@ -1,6 +1,6 @@ import { makeArray } from "discourse-common/lib/helpers"; -import { on } from "ember-addons/ember-computed-decorators"; -import computed from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import SelectKitHeaderComponent from "select-kit/components/select-kit/select-kit-header"; export default SelectKitHeaderComponent.extend({ @@ -38,14 +38,14 @@ export default SelectKitHeaderComponent.extend({ $filter.width(availableSpace - parentRightPadding * 4); }, - @computed("computedContent.selection.[]") + @discourseComputed("computedContent.selection.[]") names(selection) { return makeArray(selection) .map(s => s.name) .join(","); }, - @computed("computedContent.selection.[]") + @discourseComputed("computedContent.selection.[]") values(selection) { return makeArray(selection) .map(s => s.value) diff --git a/app/assets/javascripts/select-kit/components/multi-select/selected-category.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/selected-category.js.es6 index a24ed6eae3..155506095b 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/selected-category.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/selected-category.js.es6 @@ -1,12 +1,12 @@ import SelectedNameComponent from "select-kit/components/multi-select/selected-name"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; export default SelectedNameComponent.extend({ classNames: "selected-category", layoutName: "select-kit/templates/components/multi-select/selected-category", - @computed("computedContent.originalContent") + @discourseComputed("computedContent.originalContent") badge(category) { return categoryBadgeHTML(category, { allowUncategorized: true, diff --git a/app/assets/javascripts/select-kit/components/multi-select/selected-color.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/selected-color.js.es6 index f75e7a708f..3574550c20 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/selected-color.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/selected-color.js.es6 @@ -1,10 +1,10 @@ import SelectedNameComponent from "select-kit/components/multi-select/selected-name"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default SelectedNameComponent.extend({ classNames: "selected-color", - @computed("name") + @discourseComputed("name") footerContent(name) { return ``.htmlSafe(); } diff --git a/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 index 0c542410fb..6de8c9d0a8 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 @@ -1,5 +1,5 @@ import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default Component.extend({ attributeBindings: [ @@ -16,14 +16,14 @@ export default Component.extend({ tagName: "span", tabindex: -1, - @computed("computedContent") + @discourseComputed("computedContent") guid(computedContent) { return Ember.guidFor(computedContent); }, ariaLabel: Ember.computed.or("computedContent.ariaLabel", "title"), - @computed("computedContent.title", "name") + @discourseComputed("computedContent.title", "name") title(computedContentTitle, name) { if (computedContentTitle) return computedContentTitle; if (name) return name; @@ -41,7 +41,7 @@ export default Component.extend({ return this.getWithDefault("computedContent.locked", false); }), - @computed("computedContent", "highlightedSelection.[]") + @discourseComputed("computedContent", "highlightedSelection.[]") isHighlighted(computedContent, highlightedSelection) { return highlightedSelection.includes(this.computedContent); }, diff --git a/app/assets/javascripts/select-kit/components/none-category-row.js.es6 b/app/assets/javascripts/select-kit/components/none-category-row.js.es6 index 8488a93a4a..7d2aa1ef26 100644 --- a/app/assets/javascripts/select-kit/components/none-category-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/none-category-row.js.es6 @@ -1,12 +1,12 @@ import CategoryRowComponent from "select-kit/components/category-row"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default CategoryRowComponent.extend({ layoutName: "select-kit/templates/components/category-row", classNames: "none category-row", - @computed("category") + @discourseComputed("category") badgeForCategory(category) { return categoryBadgeHTML(category, { link: this.categoryLink, diff --git a/app/assets/javascripts/select-kit/components/notifications-button.js.es6 b/app/assets/javascripts/select-kit/components/notifications-button.js.es6 index fcfe0c5c8c..5c5bec067b 100644 --- a/app/assets/javascripts/select-kit/components/notifications-button.js.es6 +++ b/app/assets/javascripts/select-kit/components/notifications-button.js.es6 @@ -1,9 +1,9 @@ import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; import { - default as computed, + default as discourseComputed, observes, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { buttonDetails } from "discourse/lib/notification-levels"; import { allLevels } from "discourse/lib/notification-levels"; @@ -20,7 +20,7 @@ export default DropdownSelectBoxComponent.extend({ i18nPrefix: "", i18nPostfix: "", - @computed("iconForSelectedDetails") + @discourseComputed("iconForSelectedDetails") headerIcon(iconForSelectedDetails) { return iconForSelectedDetails; }, @@ -47,7 +47,7 @@ export default DropdownSelectBoxComponent.extend({ return content; }, - @computed("computedValue") + @discourseComputed("computedValue") selectedDetails(computedValue) { return buttonDetails(computedValue); } diff --git a/app/assets/javascripts/select-kit/components/notifications-button/notifications-button-row.js.es6 b/app/assets/javascripts/select-kit/components/notifications-button/notifications-button-row.js.es6 index d41133b9b6..e4a3b45bd5 100644 --- a/app/assets/javascripts/select-kit/components/notifications-button/notifications-button-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/notifications-button/notifications-button-row.js.es6 @@ -1,6 +1,6 @@ import DropdownSelectBoxRoxComponent from "select-kit/components/dropdown-select-box/dropdown-select-box-row"; import { buttonDetails } from "discourse/lib/notification-levels"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { iconHTML } from "discourse-common/lib/icon-library"; export default DropdownSelectBoxRoxComponent.extend({ @@ -9,18 +9,21 @@ export default DropdownSelectBoxRoxComponent.extend({ i18nPrefix: Ember.computed.alias("options.i18nPrefix"), i18nPostfix: Ember.computed.alias("options.i18nPostfix"), - @computed("computedContent.value", "i18nPrefix", "i18nPostfix") + @discourseComputed("computedContent.value", "i18nPrefix", "i18nPostfix") title(value, prefix, postfix) { const key = buttonDetails(value).key; return I18n.t(`${prefix}.${key}${postfix}.title`); }, - @computed("computedContent.name", "computedContent.originalContent.icon") + @discourseComputed( + "computedContent.name", + "computedContent.originalContent.icon" + ) icon(contentName, icon) { return iconHTML(icon, { class: contentName.dasherize() }); }, - @computed("_start") + @discourseComputed("_start") description(_start) { if (this.site && this.site.mobileView) { return null; @@ -29,12 +32,12 @@ export default DropdownSelectBoxRoxComponent.extend({ return Handlebars.escapeExpression(I18n.t(`${_start}.description`)); }, - @computed("_start") + @discourseComputed("_start") name(_start) { return Handlebars.escapeExpression(I18n.t(`${_start}.title`)); }, - @computed("i18nPrefix", "i18nPostfix", "computedContent.name") + @discourseComputed("i18nPrefix", "i18nPostfix", "computedContent.name") _start(prefix, postfix, contentName) { return `${prefix}.${contentName}${postfix}`; } diff --git a/app/assets/javascripts/select-kit/components/period-chooser.js.es6 b/app/assets/javascripts/select-kit/components/period-chooser.js.es6 index 56a2079988..bc9befb89a 100644 --- a/app/assets/javascripts/select-kit/components/period-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/period-chooser.js.es6 @@ -1,5 +1,5 @@ import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; -import computed, { on } from "ember-addons/ember-computed-decorators"; +import discourseComputed, { on } from "discourse-common/utils/decorators"; export default DropdownSelectBoxComponent.extend({ classNames: ["period-chooser"], @@ -9,7 +9,7 @@ export default DropdownSelectBoxComponent.extend({ value: Ember.computed.alias("period"), isHidden: Ember.computed.alias("showPeriods"), - @computed("isExpanded") + @discourseComputed("isExpanded") caretIcon(isExpanded) { return isExpanded ? "caret-up" : "caret-down"; }, diff --git a/app/assets/javascripts/select-kit/components/period-chooser/period-chooser-row.js.es6 b/app/assets/javascripts/select-kit/components/period-chooser/period-chooser-row.js.es6 index 18a0b529fa..4cb25af58e 100644 --- a/app/assets/javascripts/select-kit/components/period-chooser/period-chooser-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/period-chooser/period-chooser-row.js.es6 @@ -1,12 +1,12 @@ import DropdownSelectBoxRowComponent from "select-kit/components/dropdown-select-box/dropdown-select-box-row"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default DropdownSelectBoxRowComponent.extend({ layoutName: "select-kit/templates/components/period-chooser/period-chooser-row", classNames: "period-chooser-row", - @computed("computedContent") + @discourseComputed("computedContent") title(computedContent) { return I18n.t(`filters.top.${computedContent.name || "this_week"}`).title; } diff --git a/app/assets/javascripts/select-kit/components/pinned-button.js.es6 b/app/assets/javascripts/select-kit/components/pinned-button.js.es6 index 9002d913b3..8332f0f41a 100644 --- a/app/assets/javascripts/select-kit/components/pinned-button.js.es6 +++ b/app/assets/javascripts/select-kit/components/pinned-button.js.es6 @@ -1,5 +1,5 @@ import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default Component.extend({ pluginApiIdentifiers: ["pinned-button"], @@ -8,7 +8,7 @@ export default Component.extend({ classNameBindings: ["isHidden"], layoutName: "select-kit/templates/components/pinned-button", - @computed("topic.pinned_globally", "pinned") + @discourseComputed("topic.pinned_globally", "pinned") reasonText(pinnedGlobally, pinned) { const globally = pinnedGlobally ? "_globally" : ""; const pinnedKey = pinned ? `pinned${globally}` : "unpinned"; @@ -16,7 +16,7 @@ export default Component.extend({ return I18n.t(key); }, - @computed("pinned", "topic.deleted", "topic.unpinned") + @discourseComputed("pinned", "topic.deleted", "topic.unpinned") isHidden(pinned, deleted, unpinned) { return deleted || (!pinned && !unpinned); } diff --git a/app/assets/javascripts/select-kit/components/pinned-options.js.es6 b/app/assets/javascripts/select-kit/components/pinned-options.js.es6 index a560bff74d..c96856a804 100644 --- a/app/assets/javascripts/select-kit/components/pinned-options.js.es6 +++ b/app/assets/javascripts/select-kit/components/pinned-options.js.es6 @@ -1,5 +1,5 @@ import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import { iconHTML } from "discourse-common/lib/icon-library"; export default DropdownSelectBoxComponent.extend({ diff --git a/app/assets/javascripts/select-kit/components/select-kit.js.es6 b/app/assets/javascripts/select-kit/components/select-kit.js.es6 index 9179e66680..6c2199a5b7 100644 --- a/app/assets/javascripts/select-kit/components/select-kit.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit.js.es6 @@ -1,7 +1,8 @@ +import discourseComputed from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; import Component from "@ember/component"; const { get, isNone, run, isEmpty, makeArray } = Ember; -import computed from "ember-addons/ember-computed-decorators"; + import UtilsMixin from "select-kit/mixins/utils"; import DomHelpersMixin from "select-kit/mixins/dom-helpers"; import EventsMixin from "select-kit/mixins/events"; @@ -223,7 +224,7 @@ export default Component.extend( return this.computeContentItem(contentItem, options); }, - @computed( + @discourseComputed( "isAsync", "isLoading", "filteredAsyncComputedContent.[]", @@ -250,28 +251,28 @@ export default Component.extend( return !this.hasReachedMaximum; }, - @computed("maximum", "selection.[]") + @discourseComputed("maximum", "selection.[]") hasReachedMaximum(maximum, selection) { if (!maximum) return false; selection = makeArray(selection); return selection.length >= maximum; }, - @computed("minimum", "selection.[]") + @discourseComputed("minimum", "selection.[]") hasReachedMinimum(minimum, selection) { if (!minimum) return true; selection = makeArray(selection); return selection.length >= minimum; }, - @computed("shouldFilter", "allowAny") + @discourseComputed("shouldFilter", "allowAny") shouldDisplayFilter(shouldFilter, allowAny) { if (shouldFilter) return true; if (allowAny) return true; return false; }, - @computed("filter", "collectionComputedContent.[]", "isLoading") + @discourseComputed("filter", "collectionComputedContent.[]", "isLoading") noContentRow(filter, collectionComputedContent, isLoading) { if ( filter.length > 0 && @@ -282,7 +283,7 @@ export default Component.extend( } }, - @computed("hasReachedMaximum", "hasReachedMinimum", "isExpanded") + @discourseComputed("hasReachedMaximum", "hasReachedMinimum", "isExpanded") validationMessage(hasReachedMaximum, hasReachedMinimum) { if (hasReachedMaximum && this.maximum) { const key = this.maximumLabel || "select_kit.max_content_reached"; @@ -295,14 +296,19 @@ export default Component.extend( } }, - @computed("allowAny") + @discourseComputed("allowAny") filterPlaceholder(allowAny) { return allowAny ? "select_kit.filter_placeholder_with_any" : "select_kit.filter_placeholder"; }, - @computed("filter", "filterable", "autoFilterable", "renderedFilterOnce") + @discourseComputed( + "filter", + "filterable", + "autoFilterable", + "renderedFilterOnce" + ) shouldFilter(filter, filterable, autoFilterable, renderedFilterOnce) { if (renderedFilterOnce && filterable) return true; if (filterable) return true; @@ -310,7 +316,7 @@ export default Component.extend( return false; }, - @computed( + @discourseComputed( "computedValue", "filter", "collectionComputedContent.[]", @@ -331,7 +337,7 @@ export default Component.extend( return false; }, - @computed("filter", "shouldDisplayCreateRow") + @discourseComputed("filter", "shouldDisplayCreateRow") createRowComputedContent(filter, shouldDisplayCreateRow) { if (shouldDisplayCreateRow) { let content = this.createContentFromInput(filter); @@ -343,17 +349,17 @@ export default Component.extend( } }, - @computed + @discourseComputed templateForRow() { return () => null; }, - @computed + @discourseComputed templateForNoneRow() { return () => null; }, - @computed("filter") + @discourseComputed("filter") templateForCreateRow() { return rowComponent => { return I18n.t("select_kit.create", { @@ -362,7 +368,7 @@ export default Component.extend( }; }, - @computed("none") + @discourseComputed("none") noneRowComputedContent(none) { if (isNone(none)) return null; @@ -427,7 +433,12 @@ export default Component.extend( this._boundaryActionHandler("onStopLoading"); }, - @computed("selection.[]", "isExpanded", "filter", "highlightedSelection.[]") + @discourseComputed( + "selection.[]", + "isExpanded", + "filter", + "highlightedSelection.[]" + ) collectionHeaderComputedContent() { return applyCollectionHeaderCallbacks( this.pluginApiIdentifiers, @@ -436,7 +447,7 @@ export default Component.extend( ); }, - @computed("selection.[]", "isExpanded", "headerIcon") + @discourseComputed("selection.[]", "isExpanded", "headerIcon") headerComputedContent() { return applyHeaderContentPluginApiCallbacks( this.pluginApiIdentifiers, diff --git a/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 b/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 index 9576816708..a239c780cd 100644 --- a/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 @@ -1,5 +1,6 @@ import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; + const { isEmpty } = Ember; export default Component.extend({ @@ -8,8 +9,8 @@ export default Component.extend({ classNameBindings: ["isFocused", "isHidden"], isHidden: Ember.computed.not("shouldDisplayFilter"), - @computed("placeholder") - computedPlaceholder(placeholder) { + @discourseComputed("placeholder") + discourseComputedPlaceholder(placeholder) { return isEmpty(placeholder) ? "" : I18n.t(placeholder); } }); diff --git a/app/assets/javascripts/select-kit/components/select-kit/select-kit-header.js.es6 b/app/assets/javascripts/select-kit/components/select-kit/select-kit-header.js.es6 index 807326c990..fd145162d0 100644 --- a/app/assets/javascripts/select-kit/components/select-kit/select-kit-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit/select-kit-header.js.es6 @@ -1,5 +1,6 @@ import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; + const { isEmpty, makeArray } = Ember; export default Component.extend({ @@ -23,7 +24,7 @@ export default Component.extend({ ariaLabel: Ember.computed.or("computedContent.ariaLabel", "sanitizedTitle"), - @computed("computedContent.title", "name") + @discourseComputed("computedContent.title", "name") title(computedContentTitle, name) { if (computedContentTitle) return computedContentTitle; if (name) return name; @@ -33,7 +34,7 @@ export default Component.extend({ // this might need a more advanced solution // but atm it's the only case we have to handle - @computed("title") + @discourseComputed("title") sanitizedTitle(title) { return String(title).replace("…", ""); }, @@ -44,7 +45,7 @@ export default Component.extend({ value: Ember.computed.alias("computedContent.value"), - @computed("computedContent.icon", "computedContent.icons") + @discourseComputed("computedContent.icon", "computedContent.icons") icons(icon, icons) { return makeArray(icon) .concat(icons) diff --git a/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 b/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 index 5b016fe905..01828a5e94 100644 --- a/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 @@ -1,6 +1,9 @@ import Component from "@ember/component"; -import { on } from "ember-addons/ember-computed-decorators"; -import computed from "ember-addons/ember-computed-decorators"; +import { + default as discourseComputed, + on +} from "discourse-common/utils/decorators"; + const { run, isPresent, makeArray, isEmpty } = Ember; import UtilsMixin from "select-kit/mixins/utils"; @@ -27,7 +30,7 @@ export default Component.extend(UtilsMixin, { ariaLabel: Ember.computed.or("computedContent.ariaLabel", "title"), - @computed("computedContent.title", "name") + @discourseComputed("computedContent.title", "name") title(computedContentTitle, name) { if (computedContentTitle) return computedContentTitle; if (name) return name; @@ -35,7 +38,7 @@ export default Component.extend(UtilsMixin, { return null; }, - @computed("computedContent") + @discourseComputed("computedContent") guid(computedContent) { return Ember.guidFor(computedContent); }, @@ -46,7 +49,7 @@ export default Component.extend(UtilsMixin, { value: Ember.computed.alias("computedContent.value"), - @computed("templateForRow") + @discourseComputed("templateForRow") template(templateForRow) { return templateForRow(this); }, @@ -67,7 +70,7 @@ export default Component.extend(UtilsMixin, { } }, - @computed( + @discourseComputed( "computedContent.icon", "computedContent.icons", "computedContent.originalContent.icon" diff --git a/app/assets/javascripts/select-kit/components/single-select.js.es6 b/app/assets/javascripts/select-kit/components/single-select.js.es6 index 5b4f6cd877..92c86cc4c5 100644 --- a/app/assets/javascripts/select-kit/components/single-select.js.es6 +++ b/app/assets/javascripts/select-kit/components/single-select.js.es6 @@ -1,8 +1,8 @@ import SelectKitComponent from "select-kit/components/select-kit"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; const { get, isNone, isEmpty, isPresent, run, makeArray } = Ember; import { @@ -115,7 +115,7 @@ export default SelectKitComponent.extend({ return content; }, - @computed("computedAsyncContent.[]", "computedValue") + @discourseComputed("computedAsyncContent.[]", "computedValue") filteredAsyncComputedContent(computedAsyncContent, computedValue) { computedAsyncContent = (computedAsyncContent || []).filter(c => { return computedValue !== get(c, "value"); @@ -128,7 +128,12 @@ export default SelectKitComponent.extend({ return computedAsyncContent; }, - @computed("computedContent.[]", "computedValue", "filter", "shouldFilter") + @discourseComputed( + "computedContent.[]", + "computedValue", + "filter", + "shouldFilter" + ) filteredComputedContent( computedContent, computedValue, @@ -150,17 +155,17 @@ export default SelectKitComponent.extend({ return computedContent; }, - @computed("computedValue", "computedContent.[]") + @discourseComputed("computedValue", "computedContent.[]") selection(computedValue, computedContent) { return computedContent.findBy("value", computedValue); }, - @computed("selection") + @discourseComputed("selection") hasSelection(selection) { return selection !== this.noneRowComputedContent && !isNone(selection); }, - @computed( + @discourseComputed( "computedValue", "filter", "collectionComputedContent.[]", diff --git a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 index 3e92b80a88..1ad21b0642 100644 --- a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 @@ -1,7 +1,7 @@ import MultiSelectComponent from "select-kit/components/multi-select"; import TagsMixin from "select-kit/mixins/tags"; import renderTag from "discourse/lib/render-tag"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { makeArray } from "discourse-common/lib/helpers"; const { get, run } = Ember; @@ -55,12 +55,12 @@ export default MultiSelectComponent.extend(TagsMixin, { this.set("tags", values.filter(v => v)); }, - @computed("tags") + @discourseComputed("tags") values(tags) { return makeArray(tags); }, - @computed("tags") + @discourseComputed("tags") content(tags) { return makeArray(tags); }, diff --git a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 index 66958c3452..9fbce57f85 100644 --- a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 @@ -2,7 +2,7 @@ import { makeArray } from "discourse-common/lib/helpers"; import ComboBoxComponent from "select-kit/components/combo-box"; import DiscourseURL from "discourse/lib/url"; import TagsMixin from "select-kit/mixins/tags"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; const { isEmpty, run } = Ember; export default ComboBoxComponent.extend(TagsMixin, { @@ -25,18 +25,18 @@ export default ComboBoxComponent.extend(TagsMixin, { allowContentReplacement: true, isAsync: true, - @computed("tagId") + @discourseComputed("tagId") noTagsSelected() { return this.tagId === "none"; }, - @computed("showFilterByTag", "content") + @discourseComputed("showFilterByTag", "content") isHidden(showFilterByTag, content) { if (showFilterByTag && !isEmpty(content)) return false; return true; }, - @computed("content") + @discourseComputed("content") filterable(content) { return content && content.length >= 15; }, @@ -63,12 +63,12 @@ export default ComboBoxComponent.extend(TagsMixin, { return content; }, - @computed("tagId") + @discourseComputed("tagId") tagClass(tagId) { return tagId ? `tag-${tagId}` : "tag_all"; }, - @computed("firstCategory", "secondCategory") + @discourseComputed("firstCategory", "secondCategory") allTagsUrl() { if (this.currentCategory) { return Discourse.getURL(this.get("currentCategory.url") + "?allTags=1"); @@ -77,7 +77,7 @@ export default ComboBoxComponent.extend(TagsMixin, { } }, - @computed("firstCategory", "secondCategory") + @discourseComputed("firstCategory", "secondCategory") noTagsUrl() { var url = "/tags"; if (this.currentCategory) { @@ -86,17 +86,17 @@ export default ComboBoxComponent.extend(TagsMixin, { return Discourse.getURL(`${url}/none`); }, - @computed("tag") + @discourseComputed("tag") allTagsLabel() { return I18n.t("tagging.selector_all_tags"); }, - @computed("tag") + @discourseComputed("tag") noTagsLabel() { return I18n.t("tagging.selector_no_tags"); }, - @computed("tagId", "allTagsLabel", "noTagsLabel") + @discourseComputed("tagId", "allTagsLabel", "noTagsLabel") shortcuts(tagId, allTagsLabel, noTagsLabel) { const shortcuts = []; @@ -119,7 +119,7 @@ export default ComboBoxComponent.extend(TagsMixin, { return shortcuts; }, - @computed("site.top_tags", "shortcuts") + @discourseComputed("site.top_tags", "shortcuts") content(topTags, shortcuts) { if (this.siteSettings.tags_sort_alphabetically && topTags) { return shortcuts.concat(topTags.sort()); diff --git a/app/assets/javascripts/select-kit/components/tag-group-chooser.js.es6 b/app/assets/javascripts/select-kit/components/tag-group-chooser.js.es6 index c3cb9d0ef3..71d2343b34 100644 --- a/app/assets/javascripts/select-kit/components/tag-group-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-group-chooser.js.es6 @@ -1,7 +1,8 @@ import MultiSelectComponent from "select-kit/components/multi-select"; import TagsMixin from "select-kit/mixins/tags"; import renderTag from "discourse/lib/render-tag"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; + const { get, isEmpty, run, makeArray } = Ember; export default MultiSelectComponent.extend(TagsMixin, { @@ -29,12 +30,12 @@ export default MultiSelectComponent.extend(TagsMixin, { this.set("tagGroups", values.filter(v => v)); }, - @computed("tagGroups") + @discourseComputed("tagGroups") values(tagGroups) { return makeArray(tagGroups); }, - @computed("tagGroups") + @discourseComputed("tagGroups") content(tagGroups) { return makeArray(tagGroups); }, diff --git a/app/assets/javascripts/select-kit/components/tag-notifications-button.js.es6 b/app/assets/javascripts/select-kit/components/tag-notifications-button.js.es6 index 12aef37fac..c163c3d5d9 100644 --- a/app/assets/javascripts/select-kit/components/tag-notifications-button.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-notifications-button.js.es6 @@ -1,5 +1,5 @@ import NotificationOptionsComponent from "select-kit/components/notifications-button"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default NotificationOptionsComponent.extend({ pluginApiIdentifiers: ["tag-notifications-button"], @@ -16,7 +16,7 @@ export default NotificationOptionsComponent.extend({ return this.notificationLevel; }, - @computed("iconForSelectedDetails") + @discourseComputed("iconForSelectedDetails") headerIcon(iconForSelectedDetails) { return iconForSelectedDetails; } diff --git a/app/assets/javascripts/select-kit/components/timezone-input.js.es6 b/app/assets/javascripts/select-kit/components/timezone-input.js.es6 index e141839a1d..cc837e1d66 100644 --- a/app/assets/javascripts/select-kit/components/timezone-input.js.es6 +++ b/app/assets/javascripts/select-kit/components/timezone-input.js.es6 @@ -1,5 +1,5 @@ import ComboBoxComponent from "select-kit/components/combo-box"; -import { default as computed } from "ember-addons/ember-computed-decorators"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; export default ComboBoxComponent.extend({ pluginApiIdentifiers: ["timezone-input"], @@ -9,7 +9,7 @@ export default ComboBoxComponent.extend({ filterable: true, allowAny: false, - @computed + @discourseComputed content() { let timezones; diff --git a/app/assets/javascripts/select-kit/components/toolbar-popup-menu-options.js.es6 b/app/assets/javascripts/select-kit/components/toolbar-popup-menu-options.js.es6 index 39d8348119..0c0ab1f730 100644 --- a/app/assets/javascripts/select-kit/components/toolbar-popup-menu-options.js.es6 +++ b/app/assets/javascripts/select-kit/components/toolbar-popup-menu-options.js.es6 @@ -1,5 +1,5 @@ import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default DropdownSelectBoxComponent.extend({ pluginApiIdentifiers: ["toolbar-popup-menu-options"], @@ -7,7 +7,7 @@ export default DropdownSelectBoxComponent.extend({ isHidden: Ember.computed.empty("computedContent"), showFullTitle: false, - @computed("title") + @discourseComputed("title") collectionHeader(title) { return `

${title}

`; }, diff --git a/app/assets/javascripts/select-kit/components/topic-notifications-options.js.es6 b/app/assets/javascripts/select-kit/components/topic-notifications-options.js.es6 index e59e5d5d34..1001c7884d 100644 --- a/app/assets/javascripts/select-kit/components/topic-notifications-options.js.es6 +++ b/app/assets/javascripts/select-kit/components/topic-notifications-options.js.es6 @@ -1,8 +1,8 @@ import NotificationOptionsComponent from "select-kit/components/notifications-button"; import { - default as computed, + default as discourseComputed, on -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { topicLevels } from "discourse/lib/notification-levels"; export default NotificationOptionsComponent.extend({ @@ -12,7 +12,7 @@ export default NotificationOptionsComponent.extend({ i18nPrefix: "topic.notifications", allowInitialValueMutation: false, - @computed("topic.archetype") + @discourseComputed("topic.archetype") i18nPostfix(archetype) { return archetype === "private_message" ? "_pm" : ""; }, diff --git a/app/assets/javascripts/select-kit/components/user-notifications-dropdown.js.es6 b/app/assets/javascripts/select-kit/components/user-notifications-dropdown.js.es6 index 2289b2f667..2551e20b61 100644 --- a/app/assets/javascripts/select-kit/components/user-notifications-dropdown.js.es6 +++ b/app/assets/javascripts/select-kit/components/user-notifications-dropdown.js.es6 @@ -1,7 +1,7 @@ import DropdownSelectBox from "select-kit/components/dropdown-select-box"; import { popupAjaxError } from "discourse/lib/ajax-error"; import showModal from "discourse/lib/show-modal"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default DropdownSelectBox.extend({ classNames: ["user-notifications", "user-notifications-dropdown"], @@ -36,7 +36,7 @@ export default DropdownSelectBox.extend({ return content; }, - @computed("value") + @discourseComputed("value") headerIcon(value) { return this.computeContent().find(row => row.id === value).icon; }, @@ -53,7 +53,7 @@ export default DropdownSelectBox.extend({ }); }, - @computed("user.ignored", "user.muted") + @discourseComputed("user.ignored", "user.muted") value() { if (this.get("user.ignored")) { return "changeToIgnored"; diff --git a/app/assets/javascripts/select-kit/mixins/dom-helpers.js.es6 b/app/assets/javascripts/select-kit/mixins/dom-helpers.js.es6 index 98e79eba58..8de81dc595 100644 --- a/app/assets/javascripts/select-kit/mixins/dom-helpers.js.es6 +++ b/app/assets/javascripts/select-kit/mixins/dom-helpers.js.es6 @@ -1,6 +1,6 @@ import { next } from "@ember/runloop"; import { schedule } from "@ember/runloop"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; export default Mixin.create({ diff --git a/app/assets/javascripts/select-kit/mixins/events.js.es6 b/app/assets/javascripts/select-kit/mixins/events.js.es6 index 739d0925e3..4c54979d1f 100644 --- a/app/assets/javascripts/select-kit/mixins/events.js.es6 +++ b/app/assets/javascripts/select-kit/mixins/events.js.es6 @@ -3,7 +3,7 @@ import { makeArray } from "discourse-common/lib/helpers"; import { isEmpty } from "@ember/utils"; import { throttle } from "@ember/runloop"; import { schedule } from "@ember/runloop"; -import { on } from "ember-addons/ember-computed-decorators"; +import { on } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; const { bind } = Ember.run; diff --git a/app/assets/javascripts/wizard-application.js b/app/assets/javascripts/wizard-application.js index d5460545ae..3a409952c1 100644 --- a/app/assets/javascripts/wizard-application.js +++ b/app/assets/javascripts/wizard-application.js @@ -1,7 +1,7 @@ //= require_tree ./ember-addons/utils //= require ./ember-addons/decorator-alias //= require ./ember-addons/macro-alias -//= require ./ember-addons/ember-computed-decorators +//= require ./discourse-common/utils/decorators //= require_tree ./discourse-common //= require i18n-patches //= require_tree ./select-kit diff --git a/app/assets/javascripts/wizard/components/homepage-preview.js.es6 b/app/assets/javascripts/wizard/components/homepage-preview.js.es6 index f92f7b04f3..c0de35c55a 100644 --- a/app/assets/javascripts/wizard/components/homepage-preview.js.es6 +++ b/app/assets/javascripts/wizard/components/homepage-preview.js.es6 @@ -1,4 +1,4 @@ -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import { createPreviewComponent, LOREM, diff --git a/app/assets/javascripts/wizard/components/image-preview-favicon.js.es6 b/app/assets/javascripts/wizard/components/image-preview-favicon.js.es6 index 91a72ecda7..31df907e58 100644 --- a/app/assets/javascripts/wizard/components/image-preview-favicon.js.es6 +++ b/app/assets/javascripts/wizard/components/image-preview-favicon.js.es6 @@ -1,5 +1,4 @@ -import { observes } from "ember-addons/ember-computed-decorators"; - +import { observes } from "discourse-common/utils/decorators"; import { createPreviewComponent } from "wizard/lib/preview"; export default createPreviewComponent(371, 124, { diff --git a/app/assets/javascripts/wizard/components/image-preview-large-icon.js.es6 b/app/assets/javascripts/wizard/components/image-preview-large-icon.js.es6 index 17a605c23a..30ad47db87 100644 --- a/app/assets/javascripts/wizard/components/image-preview-large-icon.js.es6 +++ b/app/assets/javascripts/wizard/components/image-preview-large-icon.js.es6 @@ -1,4 +1,4 @@ -import { observes } from "ember-addons/ember-computed-decorators"; +import { observes } from "discourse-common/utils/decorators"; import { createPreviewComponent } from "wizard/lib/preview"; export default createPreviewComponent(325, 125, { diff --git a/app/assets/javascripts/wizard/components/image-preview-logo-small.js.es6 b/app/assets/javascripts/wizard/components/image-preview-logo-small.js.es6 index db498c91ee..64ad289234 100644 --- a/app/assets/javascripts/wizard/components/image-preview-logo-small.js.es6 +++ b/app/assets/javascripts/wizard/components/image-preview-logo-small.js.es6 @@ -1,5 +1,4 @@ -import { observes } from "ember-addons/ember-computed-decorators"; - +import { observes } from "discourse-common/utils/decorators"; import { createPreviewComponent, drawHeader, LOREM } from "wizard/lib/preview"; export default createPreviewComponent(375, 100, { diff --git a/app/assets/javascripts/wizard/components/image-preview-logo.js.es6 b/app/assets/javascripts/wizard/components/image-preview-logo.js.es6 index f8b5d3f39c..3c37019b50 100644 --- a/app/assets/javascripts/wizard/components/image-preview-logo.js.es6 +++ b/app/assets/javascripts/wizard/components/image-preview-logo.js.es6 @@ -1,5 +1,4 @@ -import { observes } from "ember-addons/ember-computed-decorators"; - +import { observes } from "discourse-common/utils/decorators"; import { createPreviewComponent, drawHeader } from "wizard/lib/preview"; export default createPreviewComponent(400, 100, { diff --git a/app/assets/javascripts/wizard/components/invite-list-user.js.es6 b/app/assets/javascripts/wizard/components/invite-list-user.js.es6 index cc07ab1a2d..8cc39470a3 100644 --- a/app/assets/javascripts/wizard/components/invite-list-user.js.es6 +++ b/app/assets/javascripts/wizard/components/invite-list-user.js.es6 @@ -1,10 +1,10 @@ import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default Component.extend({ classNames: ["invite-list-user"], - @computed("user.role") + @discourseComputed("user.role") roleName(role) { return this.roles.findBy("id", role).label; } diff --git a/app/assets/javascripts/wizard/components/radio-button.js.es6 b/app/assets/javascripts/wizard/components/radio-button.js.es6 index e7ceaa898f..6184362bb5 100644 --- a/app/assets/javascripts/wizard/components/radio-button.js.es6 +++ b/app/assets/javascripts/wizard/components/radio-button.js.es6 @@ -1,6 +1,6 @@ import { next } from "@ember/runloop"; import Component from "@ember/component"; -import { observes, on } from "ember-addons/ember-computed-decorators"; +import { observes, on } from "discourse-common/utils/decorators"; export default Component.extend({ tagName: "label", diff --git a/app/assets/javascripts/wizard/components/staff-count.js.es6 b/app/assets/javascripts/wizard/components/staff-count.js.es6 index 2e7db93b3c..d37b291037 100644 --- a/app/assets/javascripts/wizard/components/staff-count.js.es6 +++ b/app/assets/javascripts/wizard/components/staff-count.js.es6 @@ -1,7 +1,7 @@ import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default Component.extend({ - @computed("field.value") + @discourseComputed("field.value") showStaffCount: staffCount => staffCount > 1 }); diff --git a/app/assets/javascripts/wizard/components/theme-preview.js.es6 b/app/assets/javascripts/wizard/components/theme-preview.js.es6 index 2a098fb879..768e2e5522 100644 --- a/app/assets/javascripts/wizard/components/theme-preview.js.es6 +++ b/app/assets/javascripts/wizard/components/theme-preview.js.es6 @@ -1,6 +1,5 @@ -import computed from "ember-addons/ember-computed-decorators"; -import { observes } from "ember-addons/ember-computed-decorators"; - +import discourseComputed from "discourse-common/utils/decorators"; +import { observes } from "discourse-common/utils/decorators"; import { createPreviewComponent, darkLightDiff, @@ -14,7 +13,7 @@ export default createPreviewComponent(305, 165, { classNameBindings: ["isSelected"], - @computed("selectedId", "colorsId") + @discourseComputed("selectedId", "colorsId") isSelected(selectedId, colorsId) { return selectedId === colorsId; }, diff --git a/app/assets/javascripts/wizard/components/wizard-field-image.js.es6 b/app/assets/javascripts/wizard/components/wizard-field-image.js.es6 index a407bd5046..e97137707d 100644 --- a/app/assets/javascripts/wizard/components/wizard-field-image.js.es6 +++ b/app/assets/javascripts/wizard/components/wizard-field-image.js.es6 @@ -1,6 +1,6 @@ import Component from "@ember/component"; import getUrl from "discourse-common/lib/get-url"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { getToken } from "wizard/lib/ajax"; import { getOwner } from "discourse-common/lib/get-owner"; import { dasherize } from "@ember/string"; @@ -9,7 +9,7 @@ export default Component.extend({ classNames: ["wizard-image-row"], uploading: false, - @computed("field.id") + @discourseComputed("field.id") previewComponent(id) { const componentName = `image-preview-${dasherize(id)}`; const exists = getOwner(this).lookup(`component:${componentName}`); diff --git a/app/assets/javascripts/wizard/components/wizard-field.js.es6 b/app/assets/javascripts/wizard/components/wizard-field.js.es6 index 7636eee0d0..d5491a4ef9 100644 --- a/app/assets/javascripts/wizard/components/wizard-field.js.es6 +++ b/app/assets/javascripts/wizard/components/wizard-field.js.es6 @@ -1,17 +1,17 @@ import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import { dasherize } from "@ember/string"; export default Component.extend({ classNameBindings: [":wizard-field", "typeClass", "field.invalid"], - @computed("field.type") + @discourseComputed("field.type") typeClass: type => `${dasherize(type)}-field`, - @computed("field.id") + @discourseComputed("field.id") fieldClass: id => `field-${dasherize(id)} wizard-focusable`, - @computed("field.type", "field.id") + @discourseComputed("field.type", "field.id") inputComponentName(type, id) { return type === "component" ? dasherize(id) : `wizard-field-${type}`; } diff --git a/app/assets/javascripts/wizard/components/wizard-step-form.js.es6 b/app/assets/javascripts/wizard/components/wizard-step-form.js.es6 index 7bc7a8446e..461a5a0d18 100644 --- a/app/assets/javascripts/wizard/components/wizard-step-form.js.es6 +++ b/app/assets/javascripts/wizard/components/wizard-step-form.js.es6 @@ -1,9 +1,9 @@ import Component from "@ember/component"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default Component.extend({ classNameBindings: [":wizard-step-form", "customStepClass"], - @computed("step.id") + @discourseComputed("step.id") customStepClass: stepId => `wizard-step-${stepId}` }); diff --git a/app/assets/javascripts/wizard/components/wizard-step.js.es6 b/app/assets/javascripts/wizard/components/wizard-step.js.es6 index a1a3372473..c5008ac2ac 100644 --- a/app/assets/javascripts/wizard/components/wizard-step.js.es6 +++ b/app/assets/javascripts/wizard/components/wizard-step.js.es6 @@ -2,9 +2,9 @@ import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; import getUrl from "discourse-common/lib/get-url"; import { - default as computed, + default as discourseComputed, observes -} from "ember-addons/ember-computed-decorators"; +} from "discourse-common/utils/decorators"; import { htmlSafe } from "@ember/template"; jQuery.fn.wiggle = function(times, duration) { @@ -34,16 +34,16 @@ export default Component.extend({ this.autoFocus(); }, - @computed("step.index") + @discourseComputed("step.index") showQuitButton: index => index === 0, - @computed("step.displayIndex", "wizard.totalSteps") + @discourseComputed("step.displayIndex", "wizard.totalSteps") showNextButton: (current, total) => current < total, - @computed("step.displayIndex", "wizard.totalSteps") + @discourseComputed("step.displayIndex", "wizard.totalSteps") showDoneButton: (current, total) => current === total, - @computed( + @discourseComputed( "step.index", "step.displayIndex", "wizard.totalSteps", @@ -53,10 +53,10 @@ export default Component.extend({ return index !== 0 && displayIndex !== total && completed; }, - @computed("step.index") + @discourseComputed("step.index") showBackButton: index => index > 0, - @computed("step.banner") + @discourseComputed("step.banner") bannerImage(src) { if (!src) { return; @@ -80,7 +80,7 @@ export default Component.extend({ } }, - @computed("step.index", "wizard.totalSteps") + @discourseComputed("step.index", "wizard.totalSteps") barStyle(displayIndex, totalSteps) { let ratio = parseFloat(displayIndex) / parseFloat(totalSteps - 1); if (ratio < 0) { diff --git a/app/assets/javascripts/wizard/controllers/application.js.es6 b/app/assets/javascripts/wizard/controllers/application.js.es6 index 58aede12a1..ca6d2d3e9e 100644 --- a/app/assets/javascripts/wizard/controllers/application.js.es6 +++ b/app/assets/javascripts/wizard/controllers/application.js.es6 @@ -1,10 +1,10 @@ import Controller from "@ember/controller"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export default Controller.extend({ currentStepId: null, - @computed("currentStepId") + @discourseComputed("currentStepId") showCanvas(currentStepId) { return currentStepId === "finished"; } diff --git a/app/assets/javascripts/wizard/mixins/valid-state.js.es6 b/app/assets/javascripts/wizard/mixins/valid-state.js.es6 index b2dc3e8954..1f82cccb91 100644 --- a/app/assets/javascripts/wizard/mixins/valid-state.js.es6 +++ b/app/assets/javascripts/wizard/mixins/valid-state.js.es6 @@ -1,4 +1,4 @@ -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; export const States = { UNCHECKED: 0, @@ -15,13 +15,13 @@ export default { this.set("_validState", States.UNCHECKED); }, - @computed("_validState") + @discourseComputed("_validState") valid: state => state === States.VALID, - @computed("_validState") + @discourseComputed("_validState") invalid: state => state === States.INVALID, - @computed("_validState") + @discourseComputed("_validState") unchecked: state => state === States.UNCHECKED, setValid(valid, description) { diff --git a/app/assets/javascripts/wizard/models/step.js.es6 b/app/assets/javascripts/wizard/models/step.js.es6 index cbc7edca18..7909d39aaf 100644 --- a/app/assets/javascripts/wizard/models/step.js.es6 +++ b/app/assets/javascripts/wizard/models/step.js.es6 @@ -1,15 +1,15 @@ import EmberObject from "@ember/object"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import ValidState from "wizard/mixins/valid-state"; import { ajax } from "wizard/lib/ajax"; export default EmberObject.extend(ValidState, { id: null, - @computed("index") + @discourseComputed("index") displayIndex: index => index + 1, - @computed("fields.[]") + @discourseComputed("fields.[]") fieldsById(fields) { const lookup = {}; fields.forEach(field => (lookup[field.get("id")] = field)); diff --git a/app/assets/javascripts/wizard/models/wizard.js.es6 b/app/assets/javascripts/wizard/models/wizard.js.es6 index 569a2d5bf7..e907687e11 100644 --- a/app/assets/javascripts/wizard/models/wizard.js.es6 +++ b/app/assets/javascripts/wizard/models/wizard.js.es6 @@ -1,11 +1,11 @@ import Step from "wizard/models/step"; import WizardField from "wizard/models/wizard-field"; import { ajax } from "wizard/lib/ajax"; -import computed from "ember-addons/ember-computed-decorators"; +import discourseComputed from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; const Wizard = EmberObject.extend({ - @computed("steps.length") + @discourseComputed("steps.length") totalSteps: length => length, getTitle() { From 99b0697bd9563ec4cdab2c122c99b2e08a7de881 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Thu, 7 Nov 2019 23:41:43 +0000 Subject: [PATCH 026/408] FIX: Correct display of last used date in API key details UI --- app/assets/javascripts/admin/templates/api-keys-show.hbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/templates/api-keys-show.hbs b/app/assets/javascripts/admin/templates/api-keys-show.hbs index a742cf994a..217a77f778 100644 --- a/app/assets/javascripts/admin/templates/api-keys-show.hbs +++ b/app/assets/javascripts/admin/templates/api-keys-show.hbs @@ -45,8 +45,8 @@ {{/admin-form-row}} {{#admin-form-row label="admin.api.last_used"}} - {{#if k.last_used_at}} - {{format-date k.last_used_at leaveAgo="true"}} + {{#if model.last_used_at}} + {{format-date model.last_used_at leaveAgo="true"}} {{else}} {{i18n "admin.api.never_used"}} {{/if}} From 2db20031879dbafd1a90cbb1a43bca55d51c1b08 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Thu, 7 Nov 2019 16:58:19 -0700 Subject: [PATCH 027/408] DEV: Add deprecation warning of non-header based API auth This change adds a message to the admin panel if it detects an api requests that doesn't use the new header based authentication method. The message is to warn people to switch to header based auth and links to the api documention topic on meta for more info. --- app/models/admin_dashboard_data.rb | 3 ++- config/locales/server.en.yml | 1 + lib/auth/default_current_user_provider.rb | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/admin_dashboard_data.rb b/app/models/admin_dashboard_data.rb index 633b1a0019..0ef9960d1b 100644 --- a/app/models/admin_dashboard_data.rb +++ b/app/models/admin_dashboard_data.rb @@ -84,7 +84,8 @@ class AdminDashboardData @problem_messages = [ 'dashboard.bad_favicon_url', 'dashboard.poll_pop3_timeout', - 'dashboard.poll_pop3_auth_error' + 'dashboard.poll_pop3_auth_error', + 'dashboard.deprecated_api_usage' ] add_problem_check :rails_env_check, :host_names_check, :force_https_check, diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 0e313715f2..ffd59c8380 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1338,6 +1338,7 @@ en: other: "Email polling has generated %{count} errors in the past 24 hours. Look at the logs for more details." missing_mailgun_api_key: "The server is configured to send emails via Mailgun but you haven't provided an API key used to verify the webhook messages." bad_favicon_url: "The favicon is failing to load. Check your favicon setting in Site Settings." + deprecated_api_usage: "We detected an API request using a deprecated authentication method. Please update it to use header based auth." poll_pop3_timeout: "Connection to the POP3 server is timing out. Incoming email could not be retrieved. Please check your POP3 settings and service provider." poll_pop3_auth_error: "Connection to the POP3 server is failing with an authentication error. Please check your POP3 settings." force_https_warning: "Your website is using SSL. But `force_https` is not yet enabled in your site settings." diff --git a/lib/auth/default_current_user_provider.rb b/lib/auth/default_current_user_provider.rb index d7ffdbeb3e..353555880e 100644 --- a/lib/auth/default_current_user_provider.rb +++ b/lib/auth/default_current_user_provider.rb @@ -283,6 +283,10 @@ class Auth::DefaultCurrentUserProvider def lookup_api_user(api_key_value, request) if api_key = ApiKey.active.where(key: api_key_value).includes(:user).first api_username = header_api_key? ? @env[HEADER_API_USERNAME] : request[API_USERNAME] + if !header_api_key? + # Notify admins of deprecated auth method + AdminDashboardData.add_problem_message('dashboard.deprecated_api_usage', 1.day) + end if api_key.allowed_ips.present? && !api_key.allowed_ips.any? { |ip| ip.include?(request.ip) } Rails.logger.warn("[Unauthorized API Access] username: #{api_username}, IP address: #{request.ip}") From deec2cf578ce1c898bcde88117610d8bc945f174 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Fri, 8 Nov 2019 11:44:02 +1100 Subject: [PATCH 028/408] FIX: drafts are unique by draft_key and user_id Previously our index was non unique, causing situations where a user could have multiple drafts stored in the table for the same exact entity. This does not properly reflect reality and needed to change as in certain cases duplicate drafts could be created causing internal data inconsistency --- app/models/draft.rb | 2 +- ...191108000414_add_unique_index_to_drafts.rb | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20191108000414_add_unique_index_to_drafts.rb diff --git a/app/models/draft.rb b/app/models/draft.rb index 2bbc3bcaf6..4f7a03711f 100644 --- a/app/models/draft.rb +++ b/app/models/draft.rb @@ -282,5 +282,5 @@ end # # Indexes # -# index_drafts_on_user_id_and_draft_key (user_id,draft_key) +# index_drafts_on_user_id_and_draft_key (user_id,draft_key) UNIQUE # diff --git a/db/migrate/20191108000414_add_unique_index_to_drafts.rb b/db/migrate/20191108000414_add_unique_index_to_drafts.rb new file mode 100644 index 0000000000..f50d1b7c49 --- /dev/null +++ b/db/migrate/20191108000414_add_unique_index_to_drafts.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class AddUniqueIndexToDrafts < ActiveRecord::Migration[6.0] + def up + + execute <<~SQL + DELETE FROM drafts d1 + USING ( + SELECT MAX(id) as id, draft_key, user_id + FROM drafts + GROUP BY draft_key, user_id + HAVING COUNT(*) > 1 + ) d2 + WHERE + d1.draft_key = d2.draft_key AND + d1.user_id = d2.user_id AND + d1.id <> d2.id + SQL + + remove_index :drafts, [:user_id, :draft_key] + add_index :drafts, [:user_id, :draft_key], unique: true + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end From ba5b78a34874d393440e7eee0aee07f0b213c4ae Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Fri, 8 Nov 2019 08:28:11 +0530 Subject: [PATCH 029/408] FEATURE: support to mute all categories by default. (#8295) Instead of enabling `suppress_from_latest` setting on many categories now we can enable `mute_all_categories_by_default` site setting. Then users should opt-in to categories for them to appear in the latest and categories pages. --- .../templates/preferences/categories.hbs | 18 +++++----- .../discourse/widgets/hamburger-menu.js.es6 | 6 +++- app/models/category_list.rb | 10 ++---- app/models/category_user.rb | 20 +++++++++++ app/models/site.rb | 10 ++---- config/locales/server.en.yml | 1 + config/site_settings.yml | 3 ++ lib/topic_query.rb | 29 +++++++++++++++- spec/components/topic_query_spec.rb | 33 +++++++++++++++++++ spec/models/category_list_spec.rb | 33 +++++++++++++++++-- spec/models/site_spec.rb | 10 ++++++ 11 files changed, 147 insertions(+), 26 deletions(-) diff --git a/app/assets/javascripts/discourse/templates/preferences/categories.hbs b/app/assets/javascripts/discourse/templates/preferences/categories.hbs index e264ef1137..671242a16a 100644 --- a/app/assets/javascripts/discourse/templates/preferences/categories.hbs +++ b/app/assets/javascripts/discourse/templates/preferences/categories.hbs @@ -27,14 +27,16 @@
{{i18n 'user.watched_first_post_categories_instructions'}}
-
- - {{#if canSee}} - {{i18n 'user.tracked_topics_link'}} - {{/if}} - {{category-selector categories=model.mutedCategories blacklist=selectedCategories}} -
-
{{i18n (if hideMutedTags 'user.muted_categories_instructions' 'user.muted_categories_instructions_dont_hide')}}
+ {{#unless siteSettings.mute_all_categories_by_default}} +
+ + {{#if canSee}} + {{i18n 'user.tracked_topics_link'}} + {{/if}} + {{category-selector categories=model.mutedCategories blacklist=selectedCategories}} +
+
{{i18n (if hideMutedTags 'user.muted_categories_instructions' 'user.muted_categories_instructions_dont_hide')}}
+ {{/unless}} {{plugin-outlet name="user-preferences-categories" args=(hash model=model save=(action "save"))}} diff --git a/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 b/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 index b11689796a..be146f4285 100644 --- a/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 +++ b/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 @@ -173,7 +173,7 @@ export default createWidget("hamburger-menu", { listCategories() { const maxCategoriesToDisplay = this.siteSettings .header_dropdown_category_count; - let categories = this.site.get("categoriesByCount"); + let categories = []; if (this.currentUser) { const allCategories = this.site @@ -203,6 +203,10 @@ export default createWidget("hamburger-menu", { .filter(c => !categories.includes(c)) .sort((a, b) => b.topic_count - a.topic_count) ); + } else { + categories = this.site + .get("categoriesByCount") + .filter(c => c.notification_level !== NotificationLevels.MUTED); } if (!this.siteSettings.allow_uncategorized_topics) { diff --git a/app/models/category_list.rb b/app/models/category_list.rb index f1f7b6a0d9..bc1d6a4980 100644 --- a/app/models/category_list.rb +++ b/app/models/category_list.rb @@ -92,16 +92,12 @@ class CategoryList @categories = @categories.to_a - category_user = {} - default_notification_level = nil - unless @guardian.anonymous? - category_user = Hash[*CategoryUser.where(user: @guardian.user).pluck(:category_id, :notification_level).flatten] - default_notification_level = CategoryUser.notification_levels[:regular] - end + notification_levels = CategoryUser.notification_levels_for(@guardian) + default_notification_level = CategoryUser.default_notification_level allowed_topic_create = Set.new(Category.topic_create_allowed(@guardian).pluck(:id)) @categories.each do |category| - category.notification_level = category_user[category.id] || default_notification_level + category.notification_level = notification_levels[category.id] || default_notification_level category.permission = CategoryGroup.permission_types[:full] if allowed_topic_create.include?(category.id) category.has_children = category.subcategories.present? end diff --git a/app/models/category_user.rb b/app/models/category_user.rb index e25f917d32..d2dd1a4d36 100644 --- a/app/models/category_user.rb +++ b/app/models/category_user.rb @@ -197,6 +197,26 @@ class CategoryUser < ActiveRecord::Base SQL end + def self.default_notification_level + SiteSetting.mute_all_categories_by_default ? notification_levels[:muted] : notification_levels[:regular] + end + + def self.notification_levels_for(guardian) + if guardian.anonymous? + notification_levels = [ + SiteSetting.default_categories_watching.split("|"), + SiteSetting.default_categories_tracking.split("|"), + SiteSetting.default_categories_watching_first_post.split("|"), + ].flatten.map { |id| [id.to_i, 1] } + + notification_levels += SiteSetting.default_categories_muted.split("|").map { |id| [id.to_i, 0] } + else + notification_levels = CategoryUser.where(user: guardian.user).pluck(:category_id, :notification_level) + end + + Hash[*notification_levels.flatten] + end + end # == Schema Information diff --git a/app/models/site.rb b/app/models/site.rb index c7330e1e25..d8bddf0a99 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -55,15 +55,11 @@ class Site by_id = {} - category_user = {} - unless @guardian.anonymous? - category_user = Hash[*CategoryUser.where(user: @guardian.user).pluck(:category_id, :notification_level).flatten] - end - - regular = CategoryUser.notification_levels[:regular] + notification_levels = CategoryUser.notification_levels_for(@guardian) + default_notification_level = CategoryUser.default_notification_level categories.each do |category| - category.notification_level = category_user[category.id] || regular + category.notification_level = notification_levels[category.id] || default_notification_level category.permission = CategoryGroup.permission_types[:full] if allowed_topic_create&.include?(category.id) || @guardian.is_admin? category.has_children = with_children.include?(category.id) by_id[category.id] = category diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index ffd59c8380..dac88f2d93 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2067,6 +2067,7 @@ en: default_categories_tracking: "List of categories that are tracked by default." default_categories_muted: "List of categories that are muted by default." default_categories_watching_first_post: "List of categories in which first post in each new topic will be watched by default." + mute_all_categories_by_default: "Set the default notification level of all the categories to muted. Require users opt-in to categories for them to appear in 'latest' and 'categories' pages. If you wish to amend the defaults for anonymous users set 'default_categories_' settings." default_tags_watching: "List of tags that are watched by default." default_tags_tracking: "List of tags that are tracked by default." diff --git a/config/site_settings.yml b/config/site_settings.yml index 63f1aecf1c..02a4ae3386 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -2022,6 +2022,9 @@ user_preferences: default_categories_watching_first_post: type: category_list default: "" + mute_all_categories_by_default: + default: false + client: true default_tags_watching: type: tag_list diff --git a/lib/topic_query.rb b/lib/topic_query.rb index 8a2c4637f3..dec1268030 100644 --- a/lib/topic_query.rb +++ b/lib/topic_query.rb @@ -869,7 +869,34 @@ class TopicQuery def remove_muted_categories(list, user, opts = nil) category_id = get_category_id(opts[:exclude]) if opts - if user + if SiteSetting.mute_all_categories_by_default + if user + list = list.references("cu") + .where(" + NOT EXISTS ( + SELECT 1 + FROM categories c + LEFT OUTER JOIN category_users cu + ON c.id = cu.category_id AND cu.user_id = :user_id + WHERE c.id = topics.category_id + AND c.id <> :category_id + AND (COALESCE(cu.notification_level, :muted) = :muted) + AND (COALESCE(tu.notification_level, :regular) <= :regular) + )", user_id: user.id, + muted: CategoryUser.notification_levels[:muted], + regular: TopicUser.notification_levels[:regular], + category_id: category_id || -1) + else + category_ids = [ + SiteSetting.default_categories_watching.split("|"), + SiteSetting.default_categories_tracking.split("|"), + SiteSetting.default_categories_watching_first_post.split("|") + ].flatten.map(&:to_i) + category_ids << category_id if category_id.present? && category_ids.exclude?(category_id) + + list = list.where("topics.category_id IN (?)", category_ids) if category_ids.present? + end + elsif user list = list.references("cu") .where(" NOT EXISTS ( diff --git a/spec/components/topic_query_spec.rb b/spec/components/topic_query_spec.rb index e3e2ab2724..aac94f9b67 100644 --- a/spec/components/topic_query_spec.rb +++ b/spec/components/topic_query_spec.rb @@ -240,6 +240,39 @@ describe TopicQuery do end end + context 'mute_all_categories_by_default' do + fab!(:category) { Fabricate(:category_with_definition) } + fab!(:topic) { Fabricate(:topic, category: category) } + + before do + SiteSetting.mute_all_categories_by_default = true + end + + it 'should remove all topics from new and latest lists by default' do + expect(topic_query.list_new.topics.map(&:id)).not_to include(topic.id) + expect(topic_query.list_latest.topics.map(&:id)).not_to include(topic.id) + end + + it 'should include tracked category topics in new and latest lists' do + topic = Fabricate(:topic, category: category) + CategoryUser.create!(user_id: user.id, + category_id: category.id, + notification_level: CategoryUser.notification_levels[:tracking]) + expect(topic_query.list_new.topics.map(&:id)).to include(topic.id) + expect(topic_query.list_latest.topics.map(&:id)).to include(topic.id) + end + + it 'should include default watched category topics in latest list for anonymous users' do + SiteSetting.default_categories_watching = category.id.to_s + expect(TopicQuery.new.list_latest.topics.map(&:id)).to include(topic.id) + end + + it 'should include topics when filtered by category' do + topic_query = TopicQuery.new(user, category: topic.category_id) + expect(topic_query.list_latest.topics.map(&:id)).to include(topic.id) + end + end + context 'muted tags' do it 'is removed from new and latest lists' do SiteSetting.tagging_enabled = true diff --git a/spec/models/category_list_spec.rb b/spec/models/category_list_spec.rb index 85f4507894..bc6e03963d 100644 --- a/spec/models/category_list_spec.rb +++ b/spec/models/category_list_spec.rb @@ -65,6 +65,35 @@ describe CategoryList do end end + context "when mute_all_categories_by_default enabled" do + fab!(:category) { Fabricate(:category) } + + before do + SiteSetting.mute_all_categories_by_default = true + end + + it "removes the category by default" do + expect(category_list.categories).not_to include(category) + end + + it "returns correct notification level for user tracking category" do + CategoryUser.set_notification_level_for_category(user, NotificationLevels.all[:tracking], category.id) + notification_level = category_list.categories.find { |c| c.id == category.id }.notification_level + expect(notification_level).to eq(CategoryUser.notification_levels[:tracking]) + end + + it "returns correct notification level in default categories for anonymous" do + SiteSetting.default_categories_watching = category.id.to_s + notification_level = CategoryList.new(Guardian.new).categories.find { |c| c.id == category.id }.notification_level + expect(notification_level).to eq(CategoryUser.notification_levels[:regular]) + end + + it "removes the default muted categories for anonymous" do + SiteSetting.default_categories_muted = category.id.to_s + expect(CategoryList.new(Guardian.new).categories).not_to include(category) + end + end + context "with a category" do fab!(:topic_category) { Fabricate(:category_with_definition, num_featured_topics: 2) } @@ -114,11 +143,11 @@ describe CategoryList do expect(category.notification_level).to eq(NotificationLevels.all[:watching]) end - it "returns no notication level for anonymous users" do + it "returns default notication level for anonymous users" do category_list = CategoryList.new(Guardian.new(nil)) category = category_list.categories.find { |c| c.id == topic_category.id } - expect(category.notification_level).to be_nil + expect(category.notification_level).to eq(NotificationLevels.all[:regular]) end end diff --git a/spec/models/site_spec.rb b/spec/models/site_spec.rb index 53b5f7493e..c97aafe10b 100644 --- a/spec/models/site_spec.rb +++ b/spec/models/site_spec.rb @@ -41,6 +41,16 @@ describe Site do end + it "returns correct notification level for categories" do + category = Fabricate(:category) + guardian = Guardian.new + expect(Site.new(guardian).categories.last.notification_level).to eq(1) + SiteSetting.mute_all_categories_by_default = true + expect(Site.new(guardian).categories.last.notification_level).to eq(0) + SiteSetting.default_categories_tracking = category.id.to_s + expect(Site.new(guardian).categories.last.notification_level).to eq(1) + end + it "omits categories users can not write to from the category list" do category = Fabricate(:category) user = Fabricate(:user) From 64b4a7ba45fae3b688925754c632e458fcacd486 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Fri, 8 Nov 2019 15:11:53 +1000 Subject: [PATCH 030/408] FIX: Ensure enforce 2FA for staff satisfied by security keys (#8316) * If a staff user created only a security key as their single 2FA option. they continued to be prompted to create a 2FA option because we only considered this condition satisfied if a TOTP was added. * The condition is now satisfied if TOTP OR security keys are enabled. --- .../admin_detailed_user_serializer.rb | 2 +- app/serializers/current_user_serializer.rb | 2 +- app/serializers/user_serializer.rb | 2 +- .../current_user_serializer_spec.rb | 32 +++++++++++++++++++ spec/serializers/user_serializer_spec.rb | 30 ++++++++++++++++- 5 files changed, 64 insertions(+), 4 deletions(-) diff --git a/app/serializers/admin_detailed_user_serializer.rb b/app/serializers/admin_detailed_user_serializer.rb index 3555522497..4a83a594b1 100644 --- a/app/serializers/admin_detailed_user_serializer.rb +++ b/app/serializers/admin_detailed_user_serializer.rb @@ -39,7 +39,7 @@ class AdminDetailedUserSerializer < AdminUserSerializer has_many :groups, embed: :object, serializer: BasicGroupSerializer def second_factor_enabled - object.totp_enabled? + object.totp_enabled? || object.security_keys_enabled? end def can_disable_second_factor diff --git a/app/serializers/current_user_serializer.rb b/app/serializers/current_user_serializer.rb index 4ba1a982f8..72363fc3ac 100644 --- a/app/serializers/current_user_serializer.rb +++ b/app/serializers/current_user_serializer.rb @@ -210,6 +210,6 @@ class CurrentUserSerializer < BasicUserSerializer end def second_factor_enabled - object.totp_enabled? + object.totp_enabled? || object.security_keys_enabled? end end diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 52d1214cfd..79111200ef 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -164,7 +164,7 @@ class UserSerializer < BasicUserSerializer end def second_factor_enabled - object.totp_enabled? + object.totp_enabled? || object.security_keys_enabled? end def include_second_factor_backup_enabled? diff --git a/spec/serializers/current_user_serializer_spec.rb b/spec/serializers/current_user_serializer_spec.rb index 9eb2d34c62..30c6a40497 100644 --- a/spec/serializers/current_user_serializer_spec.rb +++ b/spec/serializers/current_user_serializer_spec.rb @@ -68,6 +68,38 @@ RSpec.describe CurrentUserSerializer do end end + context "#second_factor_enabled" do + fab!(:user) { Fabricate(:user) } + let :serializer do + CurrentUserSerializer.new(user, scope: Guardian.new(user), root: false) + end + let(:json) { serializer.as_json } + + it "is false by default" do + expect(json[:second_factor_enabled]).to eq(false) + end + + context "when totp enabled" do + before do + User.any_instance.stubs(:totp_enabled?).returns(true) + end + + it "is true" do + expect(json[:second_factor_enabled]).to eq(true) + end + end + + context "when security_keys enabled" do + before do + User.any_instance.stubs(:security_keys_enabled?).returns(true) + end + + it "is true" do + expect(json[:second_factor_enabled]).to eq(true) + end + end + end + context "#groups" do fab!(:member) { Fabricate(:user) } let :serializer do diff --git a/spec/serializers/user_serializer_spec.rb b/spec/serializers/user_serializer_spec.rb index 262166422a..fbe25589db 100644 --- a/spec/serializers/user_serializer_spec.rb +++ b/spec/serializers/user_serializer_spec.rb @@ -40,8 +40,9 @@ describe UserSerializer do end context "with a user" do + let(:scope) { Guardian.new } fab!(:user) { Fabricate(:user) } - let(:serializer) { UserSerializer.new(user, scope: Guardian.new, root: false) } + let(:serializer) { UserSerializer.new(user, scope: scope, root: false) } let(:json) { serializer.as_json } fab!(:upload) { Fabricate(:upload) } fab!(:upload2) { Fabricate(:upload) } @@ -164,6 +165,33 @@ describe UserSerializer do expect(json[:bio_cooked]).to eq 'my cooked bio' end end + + describe "second_factor_enabled" do + let(:scope) { Guardian.new(user) } + it "is false by default" do + expect(json[:second_factor_enabled]).to eq(false) + end + + context "when totp enabled" do + before do + User.any_instance.stubs(:totp_enabled?).returns(true) + end + + it "is true" do + expect(json[:second_factor_enabled]).to eq(true) + end + end + + context "when security_keys enabled" do + before do + User.any_instance.stubs(:security_keys_enabled?).returns(true) + end + + it "is true" do + expect(json[:second_factor_enabled]).to eq(true) + end + end + end end context "with custom_fields" do From 56d3e29a698e704f647cf2e500d0d94d7d9e21bf Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Fri, 8 Nov 2019 15:34:24 +1000 Subject: [PATCH 031/408] FIX: Badge and user title interaction fixes (#8282) * Fix user title logic when badge name customized * Fix an issue where a user's title was not considered a badge granted title when the user used a badge for their title and the badge name was customized. this affected the effectiveness of revoke_ungranted_titles! which only operates on badge_granted_titles. * When a user's title is set now it is considered a badge_granted_title if the badge name OR the badge custom name from TranslationOverride is the same as the title * When a user's badge is revoked we now also revoke their title if the user's title matches the badge name OR the badge custom name from TranslationOverride * Add a user history log when the title is revoked to remove confusion about why titles are revoked * Add granted_title_badge_id to user_profile, now when we set badge_granted_title on a user profile when updating a user's title based on a badge, we also remember which badge matched the title * When badge name (or custom text) changes update titles of users in a background job * When the name of a badge changes, or in the case of system badges when their custom translation text changes, then we need to update the title of all corresponding users who have a badge_granted_title and matching granted_title_badge_id. In the case of system badges we need to first get the proper badge ID based on the translation key e.g. badges.regular.name * Add migration to backfill all granted_title_badge_ids for both normal badge name titles and titles using custom badge text. --- app/controllers/admin/badges_controller.rb | 9 ++++ .../admin/site_texts_controller.rb | 24 +++++++-- app/controllers/users_controller.rb | 26 +++++++++- app/jobs/regular/bulk_user_title_update.rb | 51 +++++++++++++++++++ app/models/badge.rb | 17 ++++++- app/models/user.rb | 9 +++- app/models/user_history.rb | 6 ++- app/models/user_profile.rb | 4 ++ app/services/badge_granter.rb | 15 +++++- app/services/staff_action_logger.rb | 21 ++++++++ config/locales/client.en.yml | 2 + ..._granted_title_badge_id_to_user_profile.rb | 35 +++++++++++++ .../regular/bulk_user_title_update_spec.rb | 50 ++++++++++++++++++ spec/models/badge_spec.rb | 27 ++++++++++ spec/models/user_spec.rb | 24 +++++++++ spec/requests/admin/badges_controller_spec.rb | 23 +++++++++ .../admin/site_texts_controller_spec.rb | 31 +++++++++++ spec/requests/users_controller_spec.rb | 10 +++- spec/services/badge_granter_spec.rb | 27 ++++++++++ 19 files changed, 397 insertions(+), 14 deletions(-) create mode 100644 app/jobs/regular/bulk_user_title_update.rb create mode 100644 db/migrate/20191031052711_add_granted_title_badge_id_to_user_profile.rb create mode 100644 spec/jobs/regular/bulk_user_title_update_spec.rb diff --git a/app/controllers/admin/badges_controller.rb b/app/controllers/admin/badges_controller.rb index 0a1b741fd4..fe67475e26 100644 --- a/app/controllers/admin/badges_controller.rb +++ b/app/controllers/admin/badges_controller.rb @@ -125,6 +125,15 @@ class Admin::BadgesController < Admin::AdminController badge.save! end + if opts[:new].blank? + Jobs.enqueue( + :bulk_user_title_update, + new_title: badge.name, + granted_badge_id: badge.id, + action: Jobs::BulkUserTitleUpdate::UPDATE_ACTION + ) + end + errors rescue ActiveRecord::RecordInvalid errors.push(*badge.errors.full_messages) diff --git a/app/controllers/admin/site_texts_controller.rb b/app/controllers/admin/site_texts_controller.rb index ef594471d9..0f9d7bad65 100644 --- a/app/controllers/admin/site_texts_controller.rb +++ b/app/controllers/admin/site_texts_controller.rb @@ -59,6 +59,15 @@ class Admin::SiteTextsController < Admin::AdminController if translation_override.errors.empty? StaffActionLogger.new(current_user).log_site_text_change(id, value, old_value) + system_badge_id = Badge.find_system_badge_id_from_translation_key(id) + if system_badge_id.present? + Jobs.enqueue( + :bulk_user_title_update, + new_title: value, + granted_badge_id: system_badge_id, + action: Jobs::BulkUserTitleUpdate::UPDATE_ACTION + ) + end render_serialized(site_text, SiteTextSerializer, root: 'site_text', rest_serializer: true) else render json: failed_json.merge( @@ -69,10 +78,19 @@ class Admin::SiteTextsController < Admin::AdminController def revert site_text = find_site_text - old_text = I18n.t(site_text[:id]) - TranslationOverride.revert!(I18n.locale, site_text[:id]) + id = site_text[:id] + old_text = I18n.t(id) + TranslationOverride.revert!(I18n.locale, id) site_text = find_site_text - StaffActionLogger.new(current_user).log_site_text_change(site_text[:id], site_text[:value], old_text) + StaffActionLogger.new(current_user).log_site_text_change(id, site_text[:value], old_text) + system_badge_id = Badge.find_system_badge_id_from_translation_key(id) + if system_badge_id.present? + Jobs.enqueue( + :bulk_user_title_update, + granted_badge_id: system_badge_id, + action: Jobs::BulkUserTitleUpdate::RESET_ACTION + ) + end render_serialized(site_text, SiteTextSerializer, root: 'site_text', rest_serializer: true) end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 5498a9933b..5a113ca717 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -195,14 +195,36 @@ class UsersController < ApplicationController guardian.ensure_can_edit!(user) user_badge = UserBadge.find_by(id: params[:user_badge_id]) + previous_title = user.title if user_badge && user_badge.user == user && user_badge.badge.allow_title? user.title = user_badge.badge.display_name - user.user_profile.badge_granted_title = true user.save! - user.user_profile.save! + + log_params = { + details: "title matching badge id #{user_badge.badge.id}", + previous_value: previous_title, + new_value: user.title + } + + if current_user.staff? && current_user != user + StaffActionLogger.new(current_user).log_title_change(user, log_params) + else + UserHistory.create!(log_params.merge(target_user_id: user.id, action: UserHistory.actions[:change_title])) + end else user.title = '' user.save! + + log_params = { + revoke_reason: 'user title was same as revoked badge name or custom badge name', + previous_value: previous_title + } + + if current_user.staff? && current_user != user + StaffActionLogger.new(current_user).log_title_revoke(user, log_params) + else + UserHistory.create!(log_params.merge(target_user_id: user.id, action: UserHistory.actions[:revoke_title])) + end end render body: nil diff --git a/app/jobs/regular/bulk_user_title_update.rb b/app/jobs/regular/bulk_user_title_update.rb new file mode 100644 index 0000000000..97d3f68ad5 --- /dev/null +++ b/app/jobs/regular/bulk_user_title_update.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +module Jobs + class BulkUserTitleUpdate < ::Jobs::Base + UPDATE_ACTION = 'update'.freeze + RESET_ACTION = 'reset'.freeze + + def execute(args) + new_title = args[:new_title] + granted_badge_id = args[:granted_badge_id] + action = args[:action] + + case action + when UPDATE_ACTION + update_titles_for_granted_badge(new_title, granted_badge_id) + when RESET_ACTION + reset_titles_for_granted_badge(granted_badge_id) + end + end + + private + + ## + # If a badge name or a system badge TranslationOverride changes + # then we need to set all titles granted based on that badge to + # the new name or custom translation + def update_titles_for_granted_badge(new_title, granted_badge_id) + DB.exec(<<~SQL, granted_title_badge_id: granted_badge_id, title: new_title, updated_at: Time.now) + UPDATE users AS u + SET title = :title, updated_at = :updated_at + FROM user_profiles AS up + WHERE up.user_id = u.id AND up.granted_title_badge_id = :granted_title_badge_id + SQL + end + + ## + # Reset granted titles for a badge back to the original + # badge name. When a system badge has its TranslationOverride + # revoked we want to have all titles based on that translation + # for the badge reset. + def reset_titles_for_granted_badge(granted_badge_id) + DB.exec(<<~SQL, granted_title_badge_id: granted_badge_id, updated_at: Time.now) + UPDATE users AS u + SET title = badges.name, updated_at = :updated_at + FROM user_profiles AS up + INNER JOIN badges ON badges.id = up.granted_title_badge_id + WHERE up.user_id = u.id AND up.granted_title_badge_id = :granted_title_badge_id + SQL + end + end +end diff --git a/app/models/badge.rb b/app/models/badge.rb index 3596190a8a..4db471bcbe 100644 --- a/app/models/badge.rb +++ b/app/models/badge.rb @@ -169,8 +169,17 @@ class Badge < ActiveRecord::Base end def self.display_name(name) - key = "badges.#{i18n_name(name)}.name" - I18n.t(key, default: name) + I18n.t(i18n_key(name), default: name) + end + + def self.i18n_key(name) + "badges.#{i18n_name(name)}.name" + end + + def self.find_system_badge_id_from_translation_key(translation_key) + return unless translation_key.starts_with?('badges.') + badge_name_klass = translation_key.split('.').second.camelize + "Badge::#{badge_name_klass}".constantize end def awarded_for_trust_level? @@ -208,6 +217,10 @@ class Badge < ActiveRecord::Base self.class.display_name(name) end + def translation_key + self.class.i18n_key(name) + end + def long_description key = "badges.#{i18n_name}.long_description" I18n.t(key, default: self[:long_description] || '', base_uri: Discourse.base_uri) diff --git a/app/models/user.rb b/app/models/user.rb index 2ecea38aad..a742682011 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1478,8 +1478,13 @@ class User < ActiveRecord::Base def check_if_title_is_badged_granted if title_changed? && !new_record? && user_profile - badge_granted_title = title.present? && badges.where(allow_title: true, name: title).exists? - user_profile.update_column(:badge_granted_title, badge_granted_title) + badge_matching_title = title && badges.find do |badge| + badge.allow_title? && (badge.display_name == title || badge.name == title) + end + user_profile.update( + badge_granted_title: badge_matching_title.present?, + granted_title_badge_id: badge_matching_title&.id + ) end end diff --git a/app/models/user_history.rb b/app/models/user_history.rb index ec6fec4f11..dcb11d5ea6 100644 --- a/app/models/user_history.rb +++ b/app/models/user_history.rb @@ -101,6 +101,8 @@ class UserHistory < ActiveRecord::Base api_key_create: 80, api_key_update: 81, api_key_destroy: 82, + revoke_title: 83, + change_title: 84 ) end @@ -175,9 +177,11 @@ class UserHistory < ActiveRecord::Base :change_theme_setting, :disable_theme_component, :enable_theme_component, + :revoke_title, + :change_title, :api_key_create, :api_key_update, - :api_key_destroy, + :api_key_destroy ] end diff --git a/app/models/user_profile.rb b/app/models/user_profile.rb index 7f16cfe90e..ed50e90853 100644 --- a/app/models/user_profile.rb +++ b/app/models/user_profile.rb @@ -9,6 +9,7 @@ class UserProfile < ActiveRecord::Base belongs_to :user, inverse_of: :user_profile belongs_to :card_background_upload, class_name: "Upload" belongs_to :profile_background_upload, class_name: "Upload" + belongs_to :granted_title_badge, class_name: "Badge" validates :bio_raw, length: { maximum: 3000 } validates :website, url: true, allow_blank: true, if: Proc.new { |c| c.new_record? || c.website_changed? } @@ -161,15 +162,18 @@ end # views :integer default(0), not null # profile_background_upload_id :integer # card_background_upload_id :integer +# granted_title_badge_id :integer # # Indexes # # index_user_profiles_on_bio_cooked_version (bio_cooked_version) # index_user_profiles_on_card_background (card_background) # index_user_profiles_on_profile_background (profile_background) +# index_user_profiles_on_granted_title_badge_id (granted_title_badge) # # Foreign Keys # # fk_rails_... (card_background_upload_id => uploads.id) # fk_rails_... (profile_background_upload_id => uploads.id) +# fk_rails_... (granted_title_badge_id => badges.id) # diff --git a/app/services/badge_granter.rb b/app/services/badge_granter.rb index b2f302f954..c7c6049ddb 100644 --- a/app/services/badge_granter.rb +++ b/app/services/badge_granter.rb @@ -72,8 +72,19 @@ class BadgeGranter StaffActionLogger.new(options[:revoked_by]).log_badge_revoke(user_badge) end - # If the user's title is the same as the badge name, remove their title. - if user_badge.user.title == user_badge.badge.name + # If the user's title is the same as the badge name OR the custom badge name, remove their title. + custom_badge_name = TranslationOverride.find_by(translation_key: user_badge.badge.translation_key)&.value + user_title_is_badge_name = user_badge.user.title == user_badge.badge.name + user_title_is_custom_badge_name = custom_badge_name.present? && user_badge.user.title == custom_badge_name + + if user_title_is_badge_name || user_title_is_custom_badge_name + if options[:revoked_by] + StaffActionLogger.new(options[:revoked_by]).log_title_revoke( + user_badge.user, + revoke_reason: 'user title was same as revoked badge name or custom badge name', + previous_value: user_badge.user.title + ) + end user_badge.user.title = nil user_badge.user.save! end diff --git a/app/services/staff_action_logger.rb b/app/services/staff_action_logger.rb index f6264da3eb..c6cbb48d0f 100644 --- a/app/services/staff_action_logger.rb +++ b/app/services/staff_action_logger.rb @@ -352,6 +352,27 @@ class StaffActionLogger )) end + def log_title_revoke(user, opts = {}) + raise Discourse::InvalidParameters.new(:user) unless user + UserHistory.create!(params(opts).merge( + action: UserHistory.actions[:revoke_title], + target_user_id: user.id, + details: opts[:revoke_reason], + previous_value: opts[:previous_value] + )) + end + + def log_title_change(user, opts = {}) + raise Discourse::InvalidParameters.new(:user) unless user + UserHistory.create!(params(opts).merge( + action: UserHistory.actions[:change_title], + target_user_id: user.id, + details: opts[:details], + new_value: opts[:new_value], + previous_value: opts[:previous_value] + )) + end + def log_check_email(user, opts = {}) raise Discourse::InvalidParameters.new(:user) unless user UserHistory.create!(params(opts).merge( diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 125fae8223..e2eeb2590d 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -3930,6 +3930,8 @@ en: change_theme_setting: "change theme setting" disable_theme_component: "disable theme component" enable_theme_component: "enable theme component" + revoke_title: "revoke title" + change_title: "change title" api_key_create: "api key create" api_key_update: "api key update" api_key_destroy: "api key destroy" diff --git a/db/migrate/20191031052711_add_granted_title_badge_id_to_user_profile.rb b/db/migrate/20191031052711_add_granted_title_badge_id_to_user_profile.rb new file mode 100644 index 0000000000..f76ea34ef4 --- /dev/null +++ b/db/migrate/20191031052711_add_granted_title_badge_id_to_user_profile.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class AddGrantedTitleBadgeIdToUserProfile < ActiveRecord::Migration[6.0] + def up + add_reference :user_profiles, :granted_title_badge, foreign_key: { to_table: :badges }, index: true, null: true + + # update all the regular badge derived titles based + # on the normal badge name + ActiveRecord::Base.connection.execute <<-SQL + UPDATE user_profiles + SET granted_title_badge_id = b.id + FROM users + INNER JOIN badges b ON users.title = b.name + WHERE users.id = user_profiles.user_id + AND user_profiles.granted_title_badge_id IS NULL + SQL + + # update all of the system badge derived titles where the + # badge has had custom text set for it via TranslationOverride + ActiveRecord::Base.connection.execute <<-SQL + UPDATE user_profiles + SET granted_title_badge_id = badges.id + FROM users + JOIN translation_overrides ON translation_overrides.value = users.title + JOIN badges ON ('badges.' || LOWER(REPLACE(badges.name, ' ', '_')) || '.name') = translation_overrides.translation_key + JOIN user_badges ON user_badges.user_id = users.id AND user_badges.badge_id = badges.id + WHERE users.id = user_profiles.user_id + AND user_profiles.granted_title_badge_id IS NULL + SQL + end + + def down + remove_column :user_profiles, :granted_title_badge_id + end +end diff --git a/spec/jobs/regular/bulk_user_title_update_spec.rb b/spec/jobs/regular/bulk_user_title_update_spec.rb new file mode 100644 index 0000000000..f6cf97eb38 --- /dev/null +++ b/spec/jobs/regular/bulk_user_title_update_spec.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Jobs::BulkUserTitleUpdate do + fab!(:badge) { Fabricate(:badge, name: 'Protector of the Realm', allow_title: true) } + fab!(:user) { Fabricate(:user) } + fab!(:other_user) { Fabricate(:user) } + + describe 'update action' do + before do + BadgeGranter.grant(badge, user) + user.update(title: badge.name) + end + + it 'updates the title of all users with the attached granted title badge id on their profile' do + execute_update + expect(user.reload.title).to eq('King of the Forum') + end + + it 'does not set the title for any other users' do + execute_update + expect(other_user.reload.title).not_to eq('King of the Forum') + end + + def execute_update + described_class.new.execute(new_title: 'King of the Forum', granted_badge_id: badge.id, action: described_class::UPDATE_ACTION) + end + end + + describe 'reset action' do + let(:customized_badge_name) { 'Merit Badge' } + + before do + TranslationOverride.upsert!(I18n.locale, Badge.i18n_key(badge.name), customized_badge_name) + BadgeGranter.grant(badge, user) + user.update(title: customized_badge_name) + end + + it 'updates the title of all users back to the original badge name' do + expect(user.reload.title).to eq(customized_badge_name) + described_class.new.execute(granted_badge_id: badge.id, action: described_class::RESET_ACTION) + expect(user.reload.title).to eq('Protector of the Realm') + end + + after do + TranslationOverride.revert!(I18n.locale, Badge.i18n_key(badge.name)) + end + end +end diff --git a/spec/models/badge_spec.rb b/spec/models/badge_spec.rb index 41cf3edcfd..bd1639a69c 100644 --- a/spec/models/badge_spec.rb +++ b/spec/models/badge_spec.rb @@ -95,6 +95,33 @@ describe Badge do end end + describe '.find_system_badge_id_from_translation_key' do + let(:translation_key) { 'badges.regular.name' } + + it 'uses a translation key to get a system badge id, mainly to find which badge a translation override corresponds to' do + expect(Badge.find_system_badge_id_from_translation_key(translation_key)).to eq( + Badge::Regular + ) + end + + context 'when the translation key is snake case' do + let(:translation_key) { 'badges.crazy_in_love.name' } + + it 'works to get the badge' do + expect(Badge.find_system_badge_id_from_translation_key(translation_key)).to eq( + Badge::CrazyInLove + ) + end + end + + context 'when a translation key not for a badge is provided' do + let(:translation_key) { 'reports.flags.title' } + it 'returns nil' do + expect(Badge.find_system_badge_id_from_translation_key(translation_key)).to eq(nil) + end + end + end + context "First Quote" do let(:quoted_post_badge) do Badge.find(Badge::FirstQuote) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 73eb8d7cac..f34a895b44 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1957,11 +1957,35 @@ describe User do expect(user.user_profile.reload.badge_granted_title).to eq(false) badge.update!(allow_title: true) + user.badges.reload user.update!(title: badge.name) expect(user.user_profile.reload.badge_granted_title).to eq(true) + expect(user.user_profile.reload.granted_title_badge_id).to eq(badge.id) user.update!(title: nil) expect(user.user_profile.reload.badge_granted_title).to eq(false) + expect(user.user_profile.granted_title_badge_id).to eq(nil) + end + + context 'when a custom badge name has been set and it matches the title' do + let(:customized_badge_name) { 'Merit Badge' } + + before do + TranslationOverride.upsert!(I18n.locale, Badge.i18n_key(badge.name), customized_badge_name) + end + + it 'sets badge_granted_title correctly' do + BadgeGranter.grant(badge, user) + + badge.update!(allow_title: true) + user.update!(title: customized_badge_name) + expect(user.user_profile.reload.badge_granted_title).to eq(true) + expect(user.user_profile.reload.granted_title_badge_id).to eq(badge.id) + end + + after do + TranslationOverride.revert!(I18n.locale, Badge.i18n_key(badge.name)) + end end end diff --git a/spec/requests/admin/badges_controller_spec.rb b/spec/requests/admin/badges_controller_spec.rb index a13af50bc9..5ea9d5fd14 100644 --- a/spec/requests/admin/badges_controller_spec.rb +++ b/spec/requests/admin/badges_controller_spec.rb @@ -153,6 +153,29 @@ describe Admin::BadgesController do expect(badge.name).to eq('123456') expect(badge.query).to eq(sql) end + + context 'when there is a user with a title granted using the badge' do + fab!(:user_with_badge_title) { Fabricate(:active_user) } + fab!(:badge) { Fabricate(:badge, name: 'Oathbreaker', allow_title: true) } + + before do + BadgeGranter.grant(badge, user_with_badge_title) + user_with_badge_title.update(title: 'Oathbreaker') + end + + it 'updates the user title in a job' do + Jobs.expects(:enqueue).with( + :bulk_user_title_update, + new_title: 'Shieldbearer', + granted_badge_id: badge.id, + action: Jobs::BulkUserTitleUpdate::UPDATE_ACTION + ) + + put "/admin/badges/#{badge.id}.json", params: { + name: "Shieldbearer" + } + end + end end end end diff --git a/spec/requests/admin/site_texts_controller_spec.rb b/spec/requests/admin/site_texts_controller_spec.rb index fcc3be2aed..356dcfc07c 100644 --- a/spec/requests/admin/site_texts_controller_spec.rb +++ b/spec/requests/admin/site_texts_controller_spec.rb @@ -415,6 +415,37 @@ RSpec.describe Admin::SiteTextsController do json = ::JSON.parse(response.body) expect(json['site_text']['value']).to_not eq(ru_mf_text) end + + context 'when updating a translation override for a system badge' do + fab!(:user_with_badge_title) { Fabricate(:active_user) } + let(:badge) { Badge.find(Badge::Regular) } + + before do + BadgeGranter.grant(badge, user_with_badge_title) + user_with_badge_title.update(title: 'Regular') + end + + it 'updates matching user titles to the override text in a job' do + Jobs.expects(:enqueue).with( + :bulk_user_title_update, + new_title: 'Terminator', + granted_badge_id: badge.id, + action: Jobs::BulkUserTitleUpdate::UPDATE_ACTION + ) + put '/admin/customize/site_texts/badges.regular.name.json', params: { + site_text: { value: 'Terminator' } + } + + Jobs.expects(:enqueue).with( + :bulk_user_title_update, + granted_badge_id: badge.id, + action: Jobs::BulkUserTitleUpdate::RESET_ACTION + ) + + # Revert + delete "/admin/customize/site_texts/badges.regular.name.json" + end + end end context "reseeding" do diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index 0d454970f3..276901b6d1 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -1911,11 +1911,17 @@ describe UsersController do expect(user.reload.title).to eq(badge.display_name) expect(user.user_profile.badge_granted_title).to eq(true) + expect(user.user_profile.granted_title_badge_id).to eq(badge.id) - user.title = "testing" - user.save + badge.update allow_title: false + + put "/u/#{user.username}/preferences/badge_title.json", params: { user_badge_id: user_badge.id } + + user.reload user.user_profile.reload + expect(user.title).to eq('') expect(user.user_profile.badge_granted_title).to eq(false) + expect(user.user_profile.granted_title_badge_id).to eq(nil) end context "with overrided name" do diff --git a/spec/services/badge_granter_spec.rb b/spec/services/badge_granter_spec.rb index 5063cba02b..1606a27ea8 100644 --- a/spec/services/badge_granter_spec.rb +++ b/spec/services/badge_granter_spec.rb @@ -196,6 +196,33 @@ describe BadgeGranter do expect(user.reload.title).to eq(nil) end + context 'when the badge name is customized, and the customized name is the same as the user title' do + let(:customized_badge_name) { 'Merit Badge' } + + before do + TranslationOverride.upsert!(I18n.locale, Badge.i18n_key(badge.name), customized_badge_name) + end + + it 'revokes the badge and title and does necessary cleanup' do + user.title = customized_badge_name; user.save! + expect(badge.reload.grant_count).to eq(1) + StaffActionLogger.any_instance.expects(:log_badge_revoke).with(user_badge) + StaffActionLogger.any_instance.expects(:log_title_revoke).with( + user, + revoke_reason: 'user title was same as revoked badge name or custom badge name', + previous_value: user_badge.user.title + ) + BadgeGranter.revoke(user_badge, revoked_by: admin) + expect(UserBadge.find_by(user: user, badge: badge)).not_to be_present + expect(badge.reload.grant_count).to eq(0) + expect(user.notifications.where(notification_type: Notification.types[:granted_badge])).to be_empty + expect(user.reload.title).to eq(nil) + end + + after do + TranslationOverride.revert!(I18n.locale, Badge.i18n_key(badge.name)) + end + end end context "update_badges" do From 26c0199c018cb934d1eca1650337db5177aa2b32 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Fri, 8 Nov 2019 16:56:30 +1100 Subject: [PATCH 032/408] DEV: update Rails to version 6.0.1 This version of Rails eliminates a monkey patch that is no longer needed! Additionally it preps us for Ruby 2.7 support. --- Gemfile | 14 +++---- Gemfile.lock | 70 +++++++++++++++++------------------ lib/freedom_patches/rails6.rb | 57 ---------------------------- 3 files changed, 42 insertions(+), 99 deletions(-) delete mode 100644 lib/freedom_patches/rails6.rb diff --git a/Gemfile b/Gemfile index 2e1ce26cc9..6d4182e56c 100644 --- a/Gemfile +++ b/Gemfile @@ -16,13 +16,13 @@ if rails_master? else # until rubygems gives us optional dependencies we are stuck with this # bundle update actionmailer actionpack actionview activemodel activerecord activesupport railties - gem 'actionmailer', '6.0.0' - gem 'actionpack', '6.0.0' - gem 'actionview', '6.0.0' - gem 'activemodel', '6.0.0' - gem 'activerecord', '6.0.0' - gem 'activesupport', '6.0.0' - gem 'railties', '6.0.0' + gem 'actionmailer', '6.0.1' + gem 'actionpack', '6.0.1' + gem 'actionview', '6.0.1' + gem 'activemodel', '6.0.1' + gem 'activerecord', '6.0.1' + gem 'activesupport', '6.0.1' + gem 'railties', '6.0.1' gem 'sprockets-rails' end diff --git a/Gemfile.lock b/Gemfile.lock index 704a6e0e5b..1201ee9715 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,21 +1,21 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (6.0.0) - actionpack (= 6.0.0) - actionview (= 6.0.0) - activejob (= 6.0.0) + actionmailer (6.0.1) + actionpack (= 6.0.1) + actionview (= 6.0.1) + activejob (= 6.0.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.0.0) - actionview (= 6.0.0) - activesupport (= 6.0.0) + actionpack (6.0.1) + actionview (= 6.0.1) + activesupport (= 6.0.1) rack (~> 2.0) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actionview (6.0.0) - activesupport (= 6.0.0) + actionview (6.0.1) + activesupport (= 6.0.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -24,20 +24,20 @@ GEM actionview (>= 6.0.a) active_model_serializers (0.8.4) activemodel (>= 3.0) - activejob (6.0.0) - activesupport (= 6.0.0) + activejob (6.0.1) + activesupport (= 6.0.1) globalid (>= 0.3.6) - activemodel (6.0.0) - activesupport (= 6.0.0) - activerecord (6.0.0) - activemodel (= 6.0.0) - activesupport (= 6.0.0) - activesupport (6.0.0) + activemodel (6.0.1) + activesupport (= 6.0.1) + activerecord (6.0.1) + activemodel (= 6.0.1) + activesupport (= 6.0.1) + activesupport (6.0.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) - zeitwerk (~> 2.1, >= 2.1.8) + zeitwerk (~> 2.2) addressable (2.5.2) public_suffix (>= 2.0.2, < 4.0) annotate (2.7.5) @@ -119,7 +119,7 @@ GEM jquery-rails (>= 1.0.17) railties (>= 3.1) ember-source (2.18.2) - erubi (1.8.0) + erubi (1.9.0) excon (0.64.0) execjs (2.7.0) exifr (1.3.6) @@ -146,7 +146,7 @@ GEM hkdf (0.3.0) htmlentities (4.3.4) http_accept_language (2.0.5) - i18n (1.6.0) + i18n (1.7.0) concurrent-ruby (~> 1.0) image_size (1.5.0) in_threads (1.5.1) @@ -195,7 +195,7 @@ GEM mini_sql (0.2.2) mini_suffix (0.3.0) ffi (~> 1.9) - minitest (5.11.3) + minitest (5.13.0) mocha (1.8.0) metaclass (~> 0.0.1) mock_redis (0.19.0) @@ -204,7 +204,7 @@ GEM multi_xml (0.6.0) multipart-post (2.1.1) mustache (1.1.0) - nokogiri (1.10.4) + nokogiri (1.10.5) mini_portile2 (~> 2.4.0) nokogumbo (2.0.1) nokogiri (~> 1.8, >= 1.8.4) @@ -283,14 +283,14 @@ GEM rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.2.0) - loofah (~> 2.2, >= 2.2.2) + rails-html-sanitizer (1.3.0) + loofah (~> 2.3) rails_multisite (2.0.7) activerecord (> 4.2, < 7) railties (> 4.2, < 7) - railties (6.0.0) - actionpack (= 6.0.0) - activesupport (= 6.0.0) + railties (6.0.1) + actionpack (= 6.0.1) + activesupport (= 6.0.1) method_source rake (>= 0.8.7) thor (>= 0.20.3, < 2.0) @@ -418,20 +418,20 @@ GEM hkdf (~> 0.2) jwt (~> 2.0) yaml-lint (0.0.10) - zeitwerk (2.1.10) + zeitwerk (2.2.1) PLATFORMS ruby DEPENDENCIES - actionmailer (= 6.0.0) - actionpack (= 6.0.0) - actionview (= 6.0.0) + actionmailer (= 6.0.1) + actionpack (= 6.0.1) + actionview (= 6.0.1) actionview_precompiler active_model_serializers (~> 0.8.3) - activemodel (= 6.0.0) - activerecord (= 6.0.0) - activesupport (= 6.0.0) + activemodel (= 6.0.1) + activerecord (= 6.0.1) + activesupport (= 6.0.1) annotate aws-sdk-s3 aws-sdk-sns @@ -508,7 +508,7 @@ DEPENDENCIES rack-mini-profiler rack-protection rails_multisite - railties (= 6.0.0) + railties (= 6.0.1) rake rb-fsevent rb-inotify (~> 0.9) diff --git a/lib/freedom_patches/rails6.rb b/lib/freedom_patches/rails6.rb deleted file mode 100644 index cf2f96de05..0000000000 --- a/lib/freedom_patches/rails6.rb +++ /dev/null @@ -1,57 +0,0 @@ -# frozen_string_literal: true - -# see: https://github.com/rails/rails/pull/36949#issuecomment-530698779 -# -# Without this patch each time we close a DB connection we spin a thread - -module ::ActiveRecord - module ConnectionAdapters - class AbstractAdapter - class StaticThreadLocalVar - attr_reader :value - - def initialize(value) - @value = value - end - - def bind(value) - raise "attempting to change immutable local var" if value != @value - if block_given? - yield - end - end - end - - # we have no choice but to perform an aggressive patch here - # if we simply hook the method we will still call a finalizer - # on Concurrent::ThreadLocalVar - - def initialize(connection, logger = nil, config = {}) # :nodoc: - super() - - @connection = connection - @owner = nil - @instrumenter = ActiveSupport::Notifications.instrumenter - @logger = logger - @config = config - @pool = ActiveRecord::ConnectionAdapters::NullPool.new - @idle_since = Concurrent.monotonic_time - @visitor = arel_visitor - @statements = build_statement_pool - @lock = ActiveSupport::Concurrency::LoadInterlockAwareMonitor.new - - if self.class.type_cast_config_to_boolean(config.fetch(:prepared_statements) { true }) - @prepared_statement_status = Concurrent::ThreadLocalVar.new(true) - @visitor.extend(DetermineIfPreparableVisitor) - else - #@prepared_statement_status = Concurrent::ThreadLocalVar.new(false) - @prepared_statement_status = StaticThreadLocalVar.new(false) - end - - @advisory_locks_enabled = self.class.type_cast_config_to_boolean( - config.fetch(:advisory_locks, true) - ) - end - end - end -end From 652b6363a2caedc7e74a64bfec3bc7ea2cef53a3 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Fri, 8 Nov 2019 17:07:58 +1100 Subject: [PATCH 033/408] DEV: upgrade bootsnap This fixes Ruby 2.7 support which we are starting to test --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1201ee9715..7201a23254 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -72,7 +72,7 @@ GEM rack (>= 0.9.0) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - bootsnap (1.4.4) + bootsnap (1.4.5) msgpack (~> 1.0) builder (3.2.3) bullet (6.0.0) @@ -199,7 +199,7 @@ GEM mocha (1.8.0) metaclass (~> 0.0.1) mock_redis (0.19.0) - msgpack (1.2.10) + msgpack (1.3.1) multi_json (1.13.1) multi_xml (0.6.0) multipart-post (2.1.1) From d4c9ed68a97729a661bdc7642b1dff3db37f0745 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Fri, 8 Nov 2019 17:30:42 +1100 Subject: [PATCH 034/408] DEV: properly pass keyword args Ruby 2.7 is going to deprecate our old and incorrect usage, use the correct form for passing kwargs --- lib/freedom_patches/translate_accelerator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/freedom_patches/translate_accelerator.rb b/lib/freedom_patches/translate_accelerator.rb index 26dff3594c..704da6ec4b 100644 --- a/lib/freedom_patches/translate_accelerator.rb +++ b/lib/freedom_patches/translate_accelerator.rb @@ -110,7 +110,7 @@ module I18n end if dup_options.present? - return translate_no_cache(key, options) + return translate_no_cache(key, **options) end locale ||= config.locale From edec92280389681058b0c97929d9d136df3d0dea Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Fri, 8 Nov 2019 14:17:51 +0530 Subject: [PATCH 035/408] FIX: use 'about.json' endpoint instead of using ember model to get the data. --- .../admin/mixins/setting-component.js.es6 | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/admin/mixins/setting-component.js.es6 b/app/assets/javascripts/admin/mixins/setting-component.js.es6 index eaf5b356b6..bd73175899 100644 --- a/app/assets/javascripts/admin/mixins/setting-component.js.es6 +++ b/app/assets/javascripts/admin/mixins/setting-component.js.es6 @@ -4,8 +4,8 @@ import { categoryLinkHTML } from "discourse/helpers/category-link"; import { on } from "@ember/object/evented"; import Mixin from "@ember/object/mixin"; import showModal from "discourse/lib/show-modal"; -import AboutRoute from "discourse/routes/about"; import { Promise } from "rsvp"; +import { ajax } from "discourse/lib/ajax"; const CUSTOM_TYPES = [ "bool", @@ -151,22 +151,20 @@ export default Mixin.create({ const key = this.buffered.get("setting"); if (defaultUserPreferences.includes(key)) { - AboutRoute.create() - .model() - .then(result => { - const controller = showModal("site-setting-default-categories", { - model: { - count: result.stats.user_count, - key: key.replace(/_/g, " ") - }, - admin: true - }); - - controller.set("onClose", () => { - this.updateExistingUsers = controller.updateExistingUsers; - this.send("save"); - }); + ajax("/about.json").then(result => { + const controller = showModal("site-setting-default-categories", { + model: { + count: result.about.stats.user_count, + key: key.replace(/_/g, " ") + }, + admin: true }); + + controller.set("onClose", () => { + this.updateExistingUsers = controller.updateExistingUsers; + this.send("save"); + }); + }); } else { this.send("save"); } From dfc002d331a61225c4a9697f32e6cd1b120e15b3 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Fri, 8 Nov 2019 12:23:57 +0200 Subject: [PATCH 036/408] FIX: Count current penalty if it started more than 6 months ago (#8313) --- app/models/trust_level3_requirements.rb | 9 +++++++-- spec/models/trust_level3_requirements_spec.rb | 12 ++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/models/trust_level3_requirements.rb b/app/models/trust_level3_requirements.rb index bfd70fea0f..26224e018e 100644 --- a/app/models/trust_level3_requirements.rb +++ b/app/models/trust_level3_requirements.rb @@ -7,9 +7,14 @@ class TrustLevel3Requirements class PenaltyCounts attr_reader :silenced, :suspended - def initialize(row) + def initialize(user, row) @silenced = row['silence_count'] || 0 @suspended = row['suspend_count'] || 0 + + # If penalty started more than 6 months ago and still continues, it will + # not be selected by the query from 'penalty_counts'. + @silenced += 1 if @silenced == 0 && user.silenced? + @suspended += 1 if @suspended == 0 && user.suspended? end def total @@ -114,7 +119,7 @@ class TrustLevel3Requirements AND uh.created_at > :since SQL - PenaltyCounts.new(DB.query_hash(sql, args).first) + PenaltyCounts.new(@user, DB.query_hash(sql, args).first) end def min_days_visited diff --git a/spec/models/trust_level3_requirements_spec.rb b/spec/models/trust_level3_requirements_spec.rb index 3f124019a3..b027d1e541 100644 --- a/spec/models/trust_level3_requirements_spec.rb +++ b/spec/models/trust_level3_requirements_spec.rb @@ -78,6 +78,18 @@ describe TrustLevel3Requirements do expect(tl3_requirements.penalty_counts.suspended).to eq(1) expect(tl3_requirements.penalty_counts.total).to eq(2) end + + it "does return if the user has been silenced or suspended over 6 months ago and continues" do + freeze_time 1.year.ago do + UserSilencer.new(user, moderator, silenced_till: 10.years.from_now).silence + UserHistory.create!(target_user_id: user.id, action: UserHistory.actions[:suspend_user]) + user.update(suspended_till: 10.years.from_now) + end + + expect(tl3_requirements.penalty_counts.silenced).to eq(1) + expect(tl3_requirements.penalty_counts.suspended).to eq(1) + expect(tl3_requirements.penalty_counts.total).to eq(2) + end end it "time_period uses site setting" do From 5a016b7eb01e7afd6876a60574f490b046b6a217 Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Fri, 8 Nov 2019 10:32:57 -0300 Subject: [PATCH 037/408] DEV: Adds a new plugin outles to add custom icons on the admin users list (#8277) --- app/assets/javascripts/admin/templates/users-list-show.hbs | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/admin/templates/users-list-show.hbs b/app/assets/javascripts/admin/templates/users-list-show.hbs index 065d2ed93d..8bb4ab6f08 100644 --- a/app/assets/javascripts/admin/templates/users-list-show.hbs +++ b/app/assets/javascripts/admin/templates/users-list-show.hbs @@ -91,6 +91,7 @@ {{#if user.second_factor_enabled}} {{d-icon "lock" title="admin.user.second_factor_enabled" }} {{/if}} + {{plugin-outlet name="admin-users-list-icon" tagName="" args=(hash user=user)}} {{/each}} From da50cd554ac9146660497933a8fc0790b9f2cdc0 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 8 Nov 2019 14:22:57 +0000 Subject: [PATCH 038/408] DEV: Optionally allow autospec without auto-running the whole suite (#8321) I want to use autospec while working on a single spec file. At the moment, it will start running all specs once it completes the file I'm working on. With parallel mode enabled, this causes CPU usage to spike dramatically, affecting IDE performance, battery life, and fan noise. I would prefer that it only runs all specs when I explicitly press [ENTER] This commit adds a new ENV variable `AUTO_RUN_ALL`. To prevent auto-running all specs, set it to 0. The default behavior remains unchanged. --- lib/autospec/manager.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/autospec/manager.rb b/lib/autospec/manager.rb index 6c3e88a951..75ea4412a3 100644 --- a/lib/autospec/manager.rb +++ b/lib/autospec/manager.rb @@ -18,6 +18,7 @@ class Autospec::Manager def initialize(opts = {}) @opts = opts @debug = opts[:debug] + @auto_run_all = ENV["AUTO_RUN_ALL"] != "0" @queue = [] @mutex = Mutex.new @signal = ConditionVariable.new @@ -42,12 +43,13 @@ class Autospec::Manager exit end - ensure_all_specs_will_run + ensure_all_specs_will_run if @auto_run_all start_runners start_service_queue listen_for_changes puts "Press [ENTER] to stop the current run" + puts "Press [ENTER] while stopped to run all specs" unless @auto_run_all while @runners.any?(&:running?) STDIN.gets process_queue @@ -138,7 +140,7 @@ class Autospec::Manager has_failed = true if result > 0 focus_on_failed_tests(current) - ensure_all_specs_will_run(runner) + ensure_all_specs_will_run(runner) if @auto_run_all end end @@ -343,7 +345,7 @@ class Autospec::Manager end # push run all specs to end of queue in correct order - ensure_all_specs_will_run(runner) + ensure_all_specs_will_run(runner) if @auto_run_all end puts "@@@@@@@@@@@@ specs queued" if @debug puts "@@@@@@@@@@@@ #{@queue}" if @debug From cd57c3bf5a09efbb76ea74f404e7aaf9dfb0951b Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 8 Nov 2019 14:23:12 +0000 Subject: [PATCH 039/408] DEV: Abort autospec on [ENTER], even if no specs have failed (#8320) When starting autospec, it says > Press [ENTER] to stop the current run However, [ENTER] does nothing unless a spec has failed. Sometimes I want to abort anyway, so that the run is restarted. --- lib/autospec/manager.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/autospec/manager.rb b/lib/autospec/manager.rb index 75ea4412a3..cefce3e76a 100644 --- a/lib/autospec/manager.rb +++ b/lib/autospec/manager.rb @@ -366,8 +366,9 @@ class Autospec::Manager puts puts if specs.length == 0 - puts "No specs have failed yet! " + puts "No specs have failed yet! Aborting anyway" puts + abort_runners else puts "The following specs have failed:" specs.each { |s| puts s } From 1998be3b270d1cf10cf26638bea94a9700509fdb Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 8 Nov 2019 15:34:03 +0000 Subject: [PATCH 040/408] DEV: Raise errors when cleaning the download cache, and fix for macOS (#8319) POSIX's `head` specification states: "The application shall ensure that the number option-argument is a positive decimal integer" Negative values are supported on GNU `head`, so this works in the discourse docker image. However, in some environments (e.g. macOS), the system `head` version fails with a negative `n` parameter. This commit does two things: Checks the status at each stage of the pipe, so it cannot fail silently Flip the `ls` command to list in descending time order, and use `tail -n +501` instead of `head -n -500`. The visible result is that macOS users no longer see head: illegal line count -- -500 printed throughout the test suite. --- lib/file_store/base_store.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/file_store/base_store.rb b/lib/file_store/base_store.rb index 6e8c53442d..5e455ac1b5 100644 --- a/lib/file_store/base_store.rb +++ b/lib/file_store/base_store.rb @@ -139,7 +139,13 @@ module FileStore FileUtils.mkdir_p(dir) unless Dir.exist?(dir) FileUtils.cp(file.path, path) # keep latest 500 files - `ls -tr #{CACHE_DIR} | head -n -#{CACHE_MAXIMUM_SIZE} | awk '$0="#{CACHE_DIR}"$0' | xargs rm -f` + processes = Open3.pipeline( + "ls -t #{CACHE_DIR}", + "tail -n +#{CACHE_MAXIMUM_SIZE + 1}", + "awk '$0=\"#{CACHE_DIR}\"$0'", + "xargs rm -f" + ) + raise "Error clearing old cache" if !processes.all?(&:success?) end private From 47e3e56905fc61a0872716fc4401e9e0956dc6ac Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Fri, 8 Nov 2019 09:48:02 -0600 Subject: [PATCH 041/408] FIX: Alias modules that are required AND imported (#8315) --- app/assets/javascripts/discourse-loader.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index fc3a0613f8..a8cd03b800 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -151,7 +151,7 @@ var define, requirejs; } Module.prototype.makeRequire = function() { - var name = this.name; + var name = transformForAliases(this.name); return ( this._require || @@ -217,7 +217,7 @@ var define, requirejs; } function requireFrom(name, origin) { - name = checkForAlias(name); + name = transformForAliases(name); var mod = EMBER_MODULES[name] || registry[name]; if (!mod) { throw new Error( @@ -231,7 +231,7 @@ var define, requirejs; throw new Error("Could not find module " + name); } - function checkForAlias(name) { + function transformForAliases(name) { return ALIASES[name] ? ALIASES[name] : name; } From 03bba8c7e00964e019721d69f55564bcc2c9c551 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Fri, 8 Nov 2019 17:50:41 +0200 Subject: [PATCH 042/408] DEV: Update chrome-launcher (#8318) This version is compatible with macOS Catalina --- package.json | 2 +- yarn.lock | 46 ++++++++++++++-------------------------------- 2 files changed, 15 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index 4761adf6d2..f667b5f05e 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "devDependencies": { "@arkweid/lefthook": "^0.6.3", "babel-eslint": "^8.2", - "chrome-launcher": "^0.10", + "chrome-launcher": "^0.12.0", "chrome-remote-interface": "^0.25", "eslint": "^4.19", "eslint-config-discourse": "1.0.5", diff --git a/yarn.lock b/yarn.lock index b325846c2a..252e71449c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -126,25 +126,10 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@types/core-js@^0.9.41": - version "0.9.46" - resolved "https://registry.yarnpkg.com/@types/core-js/-/core-js-0.9.46.tgz#ea701ee34cbb6dfe6d100f1530319547c93c8d79" - integrity sha512-LooLR6XHes9V+kNYRz1Qm8w3atw9QMn7XeZUmIpUelllF9BdryeUKd/u0Wh5ErcjpWfG39NrToU9MF7ngsTFVw== - -"@types/mkdirp@^0.3.29": - version "0.3.29" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.3.29.tgz#7f2ad7ec55f914482fc9b1ec4bb1ae6028d46066" - integrity sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY= - -"@types/node@^9.3.0": - version "9.6.39" - resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.39.tgz#111cb4f5591cb6945aad34733b4e40bfd59b58fc" - integrity sha512-c3OkjgNpSMdHan56WhklP0FMOk5ocilKz2Mpa0NOGzu8jw5YERjCf9FG0epYB1+TxScv/oI4uJ204u2mUg7Hcw== - -"@types/rimraf@^0.0.28": - version "0.0.28" - resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-0.0.28.tgz#5562519bc7963caca8abf7f128cae3b594d41d06" - integrity sha1-VWJRm8eWPKyoq/fxKMrjtZTUHQY= +"@types/node@*": + version "12.12.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.6.tgz#a47240c10d86a9a57bb0c633f0b2e0aea9ce9253" + integrity sha512-FjsYUPzEJdGXjwKqSpE0/9QEh6kzhTAeObA54rn6j3rR4C/mzpI9L0KNfoeASSPMMdxIsoJuCLDWcM/rVjIsSA== ace-builds@1.4.2: version "1.4.2" @@ -537,16 +522,13 @@ chartjs-color@^2.1.0: chartjs-color-string "^0.5.0" color-convert "^0.5.3" -chrome-launcher@^0.10: - version "0.10.5" - resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.10.5.tgz#d0aa72c11f1653e6a60dfebea171522447470ef1" - integrity sha512-Gbzg8HlWhyuoVqflhiXwfFXhzNfNWvAkSWv2QR1Yl6mwsMo1oCLAVjp2tIySuS4lrZLEjzVx1fOy584yE76P4g== +chrome-launcher@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.12.0.tgz#08db81ef0f7b283c331df2c350e780c38bd0ce3a" + integrity sha512-rBUP4tvWToiileDi3UR0SbWKoUoDCYTRmVND2sdoBL1xANBgVz8V9h1yQluj3MEQaBJg0fRw7hW82uOPrJus7A== dependencies: - "@types/core-js" "^0.9.41" - "@types/mkdirp" "^0.3.29" - "@types/node" "^9.3.0" - "@types/rimraf" "^0.0.28" - is-wsl "^1.1.0" + "@types/node" "*" + is-wsl "^2.1.0" lighthouse-logger "^1.0.0" mkdirp "0.5.1" rimraf "^2.6.1" @@ -1645,10 +1627,10 @@ is-windows@^1.0.1, is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== isarray@0.0.1: version "0.0.1" From 7f3812b90a3da66cc2a2dbdb2796356650e967ca Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Fri, 8 Nov 2019 10:32:20 -0600 Subject: [PATCH 043/408] DEV: Removed all Ember.computed. in select-kit (#8322) --- .../select-kit/components/category-drop.js.es6 | 7 ++++--- .../category-drop/category-drop-header.js.es6 | 3 ++- .../components/category-notifications-button.js.es6 | 5 +++-- .../select-kit/components/category-row.js.es6 | 7 ++++--- .../components/combo-box/combo-box-header.js.es6 | 9 +++++---- .../dropdown-select-box-row.js.es6 | 3 ++- .../components/future-date-input-selector.js.es6 | 5 +++-- .../select-kit/components/group-dropdown.js.es6 | 3 ++- .../select-kit/components/mini-tag-chooser.js.es6 | 9 +++++---- .../multi-select/multi-select-header.js.es6 | 9 +++++---- .../components/multi-select/selected-name.js.es6 | 9 +++++---- .../components/notifications-button.js.es6 | 3 ++- .../notifications-button-row.js.es6 | 5 +++-- .../select-kit/components/period-chooser.js.es6 | 7 ++++--- .../components/select-kit/select-kit-filter.js.es6 | 3 ++- .../components/select-kit/select-kit-header.js.es6 | 13 +++++++------ .../components/select-kit/select-kit-row.js.es6 | 11 ++++++----- .../select-kit/components/tag-chooser.js.es6 | 3 ++- .../select-kit/components/tag-drop.js.es6 | 9 +++++---- .../components/toolbar-popup-menu-options.js.es6 | 3 ++- .../components/topic-footer-mobile-dropdown.js.es6 | 3 ++- 21 files changed, 75 insertions(+), 54 deletions(-) diff --git a/app/assets/javascripts/select-kit/components/category-drop.js.es6 b/app/assets/javascripts/select-kit/components/category-drop.js.es6 index 25f72b2655..601d420d4b 100644 --- a/app/assets/javascripts/select-kit/components/category-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-drop.js.es6 @@ -1,3 +1,4 @@ +import { alias, not } from "@ember/object/computed"; import ComboBoxComponent from "select-kit/components/combo-box"; import DiscourseURL from "discourse/lib/url"; import { default as discourseComputed } from "discourse-common/utils/decorators"; @@ -10,18 +11,18 @@ export default ComboBoxComponent.extend({ classNameBindings: ["categoryStyle"], classNames: "category-drop", verticalOffset: 3, - content: Ember.computed.alias("categoriesWithShortcuts"), + content: alias("categoriesWithShortcuts"), rowComponent: "category-row", headerComponent: "category-drop/category-drop-header", allowAutoSelectFirst: false, tagName: "li", - categoryStyle: Ember.computed.alias("siteSettings.category_style"), + categoryStyle: alias("siteSettings.category_style"), noCategoriesLabel: I18n.t("categories.no_subcategory"), fullWidthOnMobile: true, caretDownIcon: "caret-right", caretUpIcon: "caret-down", subCategory: false, - isAsync: Ember.computed.not("subCategory"), + isAsync: not("subCategory"), @discourseComputed( "categories", diff --git a/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 b/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 index ad86019a19..c84b7189d0 100644 --- a/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-drop/category-drop-header.js.es6 @@ -1,3 +1,4 @@ +import { alias } from "@ember/object/computed"; import { isEmpty } from "@ember/utils"; import ComboBoxSelectBoxHeaderComponent from "select-kit/components/combo-box/combo-box-header"; import discourseComputed from "discourse-common/utils/decorators"; @@ -9,7 +10,7 @@ export default ComboBoxSelectBoxHeaderComponent.extend({ classNames: "category-drop-header", classNameBindings: ["categoryStyleClass"], - categoryStyleClass: Ember.computed.alias("site.category_style"), + categoryStyleClass: alias("site.category_style"), @discourseComputed("computedContent.value", "computedContent.name") category(value, name) { diff --git a/app/assets/javascripts/select-kit/components/category-notifications-button.js.es6 b/app/assets/javascripts/select-kit/components/category-notifications-button.js.es6 index 17c8e4de41..ecc000d8bd 100644 --- a/app/assets/javascripts/select-kit/components/category-notifications-button.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-notifications-button.js.es6 @@ -1,10 +1,11 @@ +import { or, alias } from "@ember/object/computed"; import NotificationOptionsComponent from "select-kit/components/notifications-button"; export default NotificationOptionsComponent.extend({ pluginApiIdentifiers: ["category-notifications-button"], classNames: "category-notifications-button", - isHidden: Ember.computed.or("category.deleted"), - headerIcon: Ember.computed.alias("iconForSelectedDetails"), + isHidden: or("category.deleted"), + headerIcon: alias("iconForSelectedDetails"), i18nPrefix: "category.notifications", showFullTitle: false, allowInitialValueMutation: false, diff --git a/app/assets/javascripts/select-kit/components/category-row.js.es6 b/app/assets/javascripts/select-kit/components/category-row.js.es6 index d2a548164e..e8963e96b6 100644 --- a/app/assets/javascripts/select-kit/components/category-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-row.js.es6 @@ -1,3 +1,4 @@ +import { bool } from "@ember/object/computed"; import { isEmpty } from "@ember/utils"; import SelectKitRowComponent from "select-kit/components/select-kit/select-kit-row"; import discourseComputed from "discourse-common/utils/decorators"; @@ -8,9 +9,9 @@ export default SelectKitRowComponent.extend({ layoutName: "select-kit/templates/components/category-row", classNames: "category-row", - hideParentCategory: Ember.computed.bool("options.hideParentCategory"), - allowUncategorized: Ember.computed.bool("options.allowUncategorized"), - categoryLink: Ember.computed.bool("options.categoryLink"), + hideParentCategory: bool("options.hideParentCategory"), + allowUncategorized: bool("options.allowUncategorized"), + categoryLink: bool("options.categoryLink"), @discourseComputed("options.displayCategoryDescription") displayCategoryDescription(displayCategoryDescription) { diff --git a/app/assets/javascripts/select-kit/components/combo-box/combo-box-header.js.es6 b/app/assets/javascripts/select-kit/components/combo-box/combo-box-header.js.es6 index 34e642bd7e..f5bd519625 100644 --- a/app/assets/javascripts/select-kit/components/combo-box/combo-box-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/combo-box/combo-box-header.js.es6 @@ -1,13 +1,14 @@ +import { alias, and } from "@ember/object/computed"; import SelectKitHeaderComponent from "select-kit/components/select-kit/select-kit-header"; export default SelectKitHeaderComponent.extend({ layoutName: "select-kit/templates/components/combo-box/combo-box-header", classNames: "combo-box-header", - clearable: Ember.computed.alias("options.clearable"), - caretUpIcon: Ember.computed.alias("options.caretUpIcon"), - caretDownIcon: Ember.computed.alias("options.caretDownIcon"), - shouldDisplayClearableButton: Ember.computed.and( + clearable: alias("options.clearable"), + caretUpIcon: alias("options.caretUpIcon"), + caretDownIcon: alias("options.caretDownIcon"), + shouldDisplayClearableButton: and( "clearable", "computedContent.hasSelection" ) diff --git a/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-row.js.es6 b/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-row.js.es6 index 187fc460cb..9bbe5fa399 100644 --- a/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-row.js.es6 @@ -1,3 +1,4 @@ +import { alias } from "@ember/object/computed"; import SelectKitRowComponent from "select-kit/components/select-kit/select-kit-row"; export default SelectKitRowComponent.extend({ @@ -5,7 +6,7 @@ export default SelectKitRowComponent.extend({ "select-kit/templates/components/dropdown-select-box/dropdown-select-box-row", classNames: "dropdown-select-box-row", - description: Ember.computed.alias( + description: alias( "computedContent.originalContent.description" ) }); diff --git a/app/assets/javascripts/select-kit/components/future-date-input-selector.js.es6 b/app/assets/javascripts/select-kit/components/future-date-input-selector.js.es6 index f5167afb20..9fec1611c1 100644 --- a/app/assets/javascripts/select-kit/components/future-date-input-selector.js.es6 +++ b/app/assets/javascripts/select-kit/components/future-date-input-selector.js.es6 @@ -1,3 +1,4 @@ +import { equal } from "@ember/object/computed"; import { isEmpty } from "@ember/utils"; import ComboBoxComponent from "select-kit/components/combo-box"; import { CLOSE_STATUS_TYPE } from "discourse/controllers/edit-topic-timer"; @@ -188,8 +189,8 @@ export const FORMAT = "YYYY-MM-DD HH:mmZ"; export default ComboBoxComponent.extend(DatetimeMixin, { pluginApiIdentifiers: ["future-date-input-selector"], classNames: ["future-date-input-selector"], - isCustom: Ember.computed.equal("value", "pick_date_and_time"), - isBasedOnLastPost: Ember.computed.equal("value", "set_based_on_last_post"), + isCustom: equal("value", "pick_date_and_time"), + isBasedOnLastPost: equal("value", "set_based_on_last_post"), rowComponent: "future-date-input-selector/future-date-input-selector-row", headerComponent: "future-date-input-selector/future-date-input-selector-header", diff --git a/app/assets/javascripts/select-kit/components/group-dropdown.js.es6 b/app/assets/javascripts/select-kit/components/group-dropdown.js.es6 index a53988a953..0e6ccfac0f 100644 --- a/app/assets/javascripts/select-kit/components/group-dropdown.js.es6 +++ b/app/assets/javascripts/select-kit/components/group-dropdown.js.es6 @@ -1,3 +1,4 @@ +import { alias } from "@ember/object/computed"; import ComboBoxComponent from "select-kit/components/combo-box"; import DiscourseURL from "discourse/lib/url"; import { default as discourseComputed } from "discourse-common/utils/decorators"; @@ -5,7 +6,7 @@ import { default as discourseComputed } from "discourse-common/utils/decorators" export default ComboBoxComponent.extend({ pluginApiIdentifiers: ["group-dropdown"], classNames: "group-dropdown", - content: Ember.computed.alias("groups"), + content: alias("groups"), tagName: "li", caretDownIcon: "caret-right", caretUpIcon: "caret-down", diff --git a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 index 5a2fe7a73e..1b4689b933 100644 --- a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 @@ -1,3 +1,4 @@ +import { empty, alias } from "@ember/object/computed"; import Category from "discourse/models/category"; import ComboBox from "select-kit/components/combo-box"; import TagsMixin from "select-kit/mixins/tags"; @@ -19,11 +20,11 @@ export default ComboBox.extend(TagsMixin, { classNameBindings: ["noTags"], verticalOffset: 3, filterable: true, - noTags: Ember.computed.empty("selection"), + noTags: empty("selection"), allowCreate: null, - allowAny: Ember.computed.alias("allowCreate"), - caretUpIcon: Ember.computed.alias("caretIcon"), - caretDownIcon: Ember.computed.alias("caretIcon"), + allowAny: alias("allowCreate"), + caretUpIcon: alias("caretIcon"), + caretDownIcon: alias("caretIcon"), isAsync: true, fullWidthOnMobile: true, diff --git a/app/assets/javascripts/select-kit/components/multi-select/multi-select-header.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/multi-select-header.js.es6 index 67c3ac3f9e..9b6c22f527 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/multi-select-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/multi-select-header.js.es6 @@ -1,3 +1,4 @@ +import { alias, or } from "@ember/object/computed"; import { makeArray } from "discourse-common/lib/helpers"; import { on } from "discourse-common/utils/decorators"; import discourseComputed from "discourse-common/utils/decorators"; @@ -13,13 +14,13 @@ export default SelectKitHeaderComponent.extend({ classNames: "multi-select-header", layoutName: "select-kit/templates/components/multi-select/multi-select-header", - selectedNameComponent: Ember.computed.alias("options.selectedNameComponent"), + selectedNameComponent: alias("options.selectedNameComponent"), - forceEscape: Ember.computed.alias("options.forceEscape"), + forceEscape: alias("options.forceEscape"), - ariaLabel: Ember.computed.or("computedContent.ariaLabel", "title", "names"), + ariaLabel: or("computedContent.ariaLabel", "title", "names"), - title: Ember.computed.or("computedContent.title", "names"), + title: or("computedContent.title", "names"), @on("didRender") _positionFilter() { diff --git a/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 index 6de8c9d0a8..df37ac012c 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 @@ -1,3 +1,4 @@ +import { or, alias } from "@ember/object/computed"; import Component from "@ember/component"; import discourseComputed from "discourse-common/utils/decorators"; @@ -21,7 +22,7 @@ export default Component.extend({ return Ember.guidFor(computedContent); }, - ariaLabel: Ember.computed.or("computedContent.ariaLabel", "title"), + ariaLabel: or("computedContent.ariaLabel", "title"), @discourseComputed("computedContent.title", "name") title(computedContentTitle, name) { @@ -31,11 +32,11 @@ export default Component.extend({ return null; }, - label: Ember.computed.or("computedContent.label", "title", "name"), + label: or("computedContent.label", "title", "name"), - name: Ember.computed.alias("computedContent.name"), + name: alias("computedContent.name"), - value: Ember.computed.alias("computedContent.value"), + value: alias("computedContent.value"), isLocked: Ember.computed("computedContent.locked", function() { return this.getWithDefault("computedContent.locked", false); diff --git a/app/assets/javascripts/select-kit/components/notifications-button.js.es6 b/app/assets/javascripts/select-kit/components/notifications-button.js.es6 index 5c5bec067b..172282ba0b 100644 --- a/app/assets/javascripts/select-kit/components/notifications-button.js.es6 +++ b/app/assets/javascripts/select-kit/components/notifications-button.js.es6 @@ -1,3 +1,4 @@ +import { alias } from "@ember/object/computed"; import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; import { default as discourseComputed, @@ -34,7 +35,7 @@ export default DropdownSelectBoxComponent.extend({ }); }, - iconForSelectedDetails: Ember.computed.alias("selectedDetails.icon"), + iconForSelectedDetails: alias("selectedDetails.icon"), computeHeaderContent() { let content = this._super(...arguments); diff --git a/app/assets/javascripts/select-kit/components/notifications-button/notifications-button-row.js.es6 b/app/assets/javascripts/select-kit/components/notifications-button/notifications-button-row.js.es6 index e4a3b45bd5..5d62a82e4b 100644 --- a/app/assets/javascripts/select-kit/components/notifications-button/notifications-button-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/notifications-button/notifications-button-row.js.es6 @@ -1,3 +1,4 @@ +import { alias } from "@ember/object/computed"; import DropdownSelectBoxRoxComponent from "select-kit/components/dropdown-select-box/dropdown-select-box-row"; import { buttonDetails } from "discourse/lib/notification-levels"; import discourseComputed from "discourse-common/utils/decorators"; @@ -6,8 +7,8 @@ import { iconHTML } from "discourse-common/lib/icon-library"; export default DropdownSelectBoxRoxComponent.extend({ classNames: "notifications-button-row", - i18nPrefix: Ember.computed.alias("options.i18nPrefix"), - i18nPostfix: Ember.computed.alias("options.i18nPostfix"), + i18nPrefix: alias("options.i18nPrefix"), + i18nPostfix: alias("options.i18nPostfix"), @discourseComputed("computedContent.value", "i18nPrefix", "i18nPostfix") title(value, prefix, postfix) { diff --git a/app/assets/javascripts/select-kit/components/period-chooser.js.es6 b/app/assets/javascripts/select-kit/components/period-chooser.js.es6 index bc9befb89a..60c6cd476a 100644 --- a/app/assets/javascripts/select-kit/components/period-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/period-chooser.js.es6 @@ -1,3 +1,4 @@ +import { oneWay, alias } from "@ember/object/computed"; import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; import discourseComputed, { on } from "discourse-common/utils/decorators"; @@ -5,9 +6,9 @@ export default DropdownSelectBoxComponent.extend({ classNames: ["period-chooser"], rowComponent: "period-chooser/period-chooser-row", headerComponent: "period-chooser/period-chooser-header", - content: Ember.computed.oneWay("site.periods"), - value: Ember.computed.alias("period"), - isHidden: Ember.computed.alias("showPeriods"), + content: oneWay("site.periods"), + value: alias("period"), + isHidden: alias("showPeriods"), @discourseComputed("isExpanded") caretIcon(isExpanded) { diff --git a/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 b/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 index a239c780cd..7366fc884c 100644 --- a/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 @@ -1,3 +1,4 @@ +import { not } from "@ember/object/computed"; import Component from "@ember/component"; import discourseComputed from "discourse-common/utils/decorators"; @@ -7,7 +8,7 @@ export default Component.extend({ layoutName: "select-kit/templates/components/select-kit/select-kit-filter", classNames: ["select-kit-filter"], classNameBindings: ["isFocused", "isHidden"], - isHidden: Ember.computed.not("shouldDisplayFilter"), + isHidden: not("shouldDisplayFilter"), @discourseComputed("placeholder") discourseComputedPlaceholder(placeholder) { diff --git a/app/assets/javascripts/select-kit/components/select-kit/select-kit-header.js.es6 b/app/assets/javascripts/select-kit/components/select-kit/select-kit-header.js.es6 index fd145162d0..525c9b6936 100644 --- a/app/assets/javascripts/select-kit/components/select-kit/select-kit-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit/select-kit-header.js.es6 @@ -1,3 +1,4 @@ +import { alias, none, or } from "@ember/object/computed"; import Component from "@ember/component"; import discourseComputed from "discourse-common/utils/decorators"; @@ -16,13 +17,13 @@ export default Component.extend({ "name:data-name" ], - forceEscape: Ember.computed.alias("options.forceEscape"), + forceEscape: alias("options.forceEscape"), - isNone: Ember.computed.none("computedContent.value"), + isNone: none("computedContent.value"), ariaHasPopup: "true", - ariaLabel: Ember.computed.or("computedContent.ariaLabel", "sanitizedTitle"), + ariaLabel: or("computedContent.ariaLabel", "sanitizedTitle"), @discourseComputed("computedContent.title", "name") title(computedContentTitle, name) { @@ -39,11 +40,11 @@ export default Component.extend({ return String(title).replace("…", ""); }, - label: Ember.computed.or("computedContent.label", "title", "name"), + label: or("computedContent.label", "title", "name"), - name: Ember.computed.alias("computedContent.name"), + name: alias("computedContent.name"), - value: Ember.computed.alias("computedContent.value"), + value: alias("computedContent.value"), @discourseComputed("computedContent.icon", "computedContent.icons") icons(icon, icons) { diff --git a/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 b/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 index 01828a5e94..a50db81e0a 100644 --- a/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit/select-kit-row.js.es6 @@ -1,3 +1,4 @@ +import { alias, or } from "@ember/object/computed"; import Component from "@ember/component"; import { default as discourseComputed, @@ -26,9 +27,9 @@ export default Component.extend(UtilsMixin, { "computedContent.originalContent.classNames" ], - forceEscape: Ember.computed.alias("options.forceEscape"), + forceEscape: alias("options.forceEscape"), - ariaLabel: Ember.computed.or("computedContent.ariaLabel", "title"), + ariaLabel: or("computedContent.ariaLabel", "title"), @discourseComputed("computedContent.title", "name") title(computedContentTitle, name) { @@ -43,11 +44,11 @@ export default Component.extend(UtilsMixin, { return Ember.guidFor(computedContent); }, - label: Ember.computed.or("computedContent.label", "title", "name"), + label: or("computedContent.label", "title", "name"), - name: Ember.computed.alias("computedContent.name"), + name: alias("computedContent.name"), - value: Ember.computed.alias("computedContent.value"), + value: alias("computedContent.value"), @discourseComputed("templateForRow") template(templateForRow) { diff --git a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 index 1ad21b0642..247a8eeab1 100644 --- a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 @@ -1,3 +1,4 @@ +import { alias } from "@ember/object/computed"; import MultiSelectComponent from "select-kit/components/multi-select"; import TagsMixin from "select-kit/mixins/tags"; import renderTag from "discourse/lib/render-tag"; @@ -15,7 +16,7 @@ export default MultiSelectComponent.extend(TagsMixin, { blacklist: null, attributeBindings: ["categoryId"], allowCreate: null, - allowAny: Ember.computed.alias("allowCreate"), + allowAny: alias("allowCreate"), init() { this._super(...arguments); diff --git a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 index 9fbce57f85..4fbea17f54 100644 --- a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 @@ -1,3 +1,4 @@ +import { alias, or } from "@ember/object/computed"; import { makeArray } from "discourse-common/lib/helpers"; import ComboBoxComponent from "select-kit/components/combo-box"; import DiscourseURL from "discourse/lib/url"; @@ -10,14 +11,14 @@ export default ComboBoxComponent.extend(TagsMixin, { classNameBindings: ["categoryStyle", "tagClass"], classNames: "tag-drop", verticalOffset: 3, - value: Ember.computed.alias("tagId"), + value: alias("tagId"), headerComponent: "tag-drop/tag-drop-header", allowAutoSelectFirst: false, tagName: "li", - showFilterByTag: Ember.computed.alias("siteSettings.show_filter_by_tag"), - currentCategory: Ember.computed.or("secondCategory", "firstCategory"), + showFilterByTag: alias("siteSettings.show_filter_by_tag"), + currentCategory: or("secondCategory", "firstCategory"), tagId: null, - categoryStyle: Ember.computed.alias("siteSettings.category_style"), + categoryStyle: alias("siteSettings.category_style"), mutateAttributes() {}, fullWidthOnMobile: true, caretDownIcon: "caret-right", diff --git a/app/assets/javascripts/select-kit/components/toolbar-popup-menu-options.js.es6 b/app/assets/javascripts/select-kit/components/toolbar-popup-menu-options.js.es6 index 0c0ab1f730..8e25330942 100644 --- a/app/assets/javascripts/select-kit/components/toolbar-popup-menu-options.js.es6 +++ b/app/assets/javascripts/select-kit/components/toolbar-popup-menu-options.js.es6 @@ -1,10 +1,11 @@ +import { empty } from "@ember/object/computed"; import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; import discourseComputed from "discourse-common/utils/decorators"; export default DropdownSelectBoxComponent.extend({ pluginApiIdentifiers: ["toolbar-popup-menu-options"], classNames: ["toolbar-popup-menu-options"], - isHidden: Ember.computed.empty("computedContent"), + isHidden: empty("computedContent"), showFullTitle: false, @discourseComputed("title") diff --git a/app/assets/javascripts/select-kit/components/topic-footer-mobile-dropdown.js.es6 b/app/assets/javascripts/select-kit/components/topic-footer-mobile-dropdown.js.es6 index 178caa43b5..07d665486c 100644 --- a/app/assets/javascripts/select-kit/components/topic-footer-mobile-dropdown.js.es6 +++ b/app/assets/javascripts/select-kit/components/topic-footer-mobile-dropdown.js.es6 @@ -1,3 +1,4 @@ +import { empty } from "@ember/object/computed"; import ComboBoxComponent from "select-kit/components/combo-box"; export default ComboBoxComponent.extend({ @@ -8,7 +9,7 @@ export default ComboBoxComponent.extend({ allowInitialValueMutation: false, allowAutoSelectFirst: false, nameProperty: "label", - isHidden: Ember.computed.empty("content"), + isHidden: empty("content"), computeHeaderContent() { const content = this._super(...arguments); From 562acb21caa6ec949444121bf0238c8828eceb99 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Fri, 8 Nov 2019 10:50:03 -0600 Subject: [PATCH 044/408] FIX: Ran prettier to fix build (#8323) --- .../select-kit/components/combo-box/combo-box-header.js.es6 | 5 +---- .../dropdown-select-box/dropdown-select-box-row.js.es6 | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/select-kit/components/combo-box/combo-box-header.js.es6 b/app/assets/javascripts/select-kit/components/combo-box/combo-box-header.js.es6 index f5bd519625..4dbe7d22c5 100644 --- a/app/assets/javascripts/select-kit/components/combo-box/combo-box-header.js.es6 +++ b/app/assets/javascripts/select-kit/components/combo-box/combo-box-header.js.es6 @@ -8,8 +8,5 @@ export default SelectKitHeaderComponent.extend({ clearable: alias("options.clearable"), caretUpIcon: alias("options.caretUpIcon"), caretDownIcon: alias("options.caretDownIcon"), - shouldDisplayClearableButton: and( - "clearable", - "computedContent.hasSelection" - ) + shouldDisplayClearableButton: and("clearable", "computedContent.hasSelection") }); diff --git a/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-row.js.es6 b/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-row.js.es6 index 9bbe5fa399..8169762e9a 100644 --- a/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/dropdown-select-box/dropdown-select-box-row.js.es6 @@ -6,7 +6,5 @@ export default SelectKitRowComponent.extend({ "select-kit/templates/components/dropdown-select-box/dropdown-select-box-row", classNames: "dropdown-select-box-row", - description: alias( - "computedContent.originalContent.description" - ) + description: alias("computedContent.originalContent.description") }); From 1990baa457080e6019df5ff25a7e17f9f0100603 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 12:47:39 -0500 Subject: [PATCH 045/408] REFACTOR: Remove constant definition for discourse/routes/grouped --- .../tilt/es6_module_transpiler_template.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index ee18d1d6d2..cd73d608e9 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -93,8 +93,8 @@ JS "discourse/models/user", "discourse/models/session", "discourse/models/model", - "discourse/models/post", - "discourse/views/grouped"] + "discourse/models/post" + ] ) @@whitelisted.include?(path) || path =~ /discourse\/mixins/ From 779ee3558dc98b744d7d404fcb0c40d770671967 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 12:52:39 -0500 Subject: [PATCH 046/408] REFACTOR: Remove `Discourse.UserAction` from code --- .../discourse/models/user-stream.js.es6 | 2 +- .../build-private-messages-route.js.es6 | 3 ++- .../tilt/es6_module_transpiler_template.rb | 1 - .../models/user-action-test.js.es6 | 19 ++++++++++--------- .../models/user-stream-test.js.es6 | 11 +++++------ 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/discourse/models/user-stream.js.es6 b/app/assets/javascripts/discourse/models/user-stream.js.es6 index d411b58cee..19e3d2ee62 100644 --- a/app/assets/javascripts/discourse/models/user-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/user-stream.js.es6 @@ -19,7 +19,7 @@ export default RestModel.extend({ @discourseComputed("filter") filterParam(filter) { - if (filter === Discourse.UserAction.TYPES.replies) { + if (filter === UserAction.TYPES.replies) { return [UserAction.TYPES.replies, UserAction.TYPES.quotes].join(","); } diff --git a/app/assets/javascripts/discourse/routes/build-private-messages-route.js.es6 b/app/assets/javascripts/discourse/routes/build-private-messages-route.js.es6 index 7331705f8f..abae09a255 100644 --- a/app/assets/javascripts/discourse/routes/build-private-messages-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-private-messages-route.js.es6 @@ -1,10 +1,11 @@ import UserTopicListRoute from "discourse/routes/user-topic-list"; import { findOrResetCachedTopicList } from "discourse/lib/cached-topic-list"; +import UserAction from "discourse/models/user-action"; // A helper to build a user topic list route export default (viewName, path, channel) => { return UserTopicListRoute.extend({ - userActionType: Discourse.UserAction.TYPES.messages_received, + userActionType: UserAction.TYPES.messages_received, titleToken() { const key = viewName === "index" ? "inbox" : viewName; diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index cd73d608e9..fde7cfdd39 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -86,7 +86,6 @@ JS @@whitelisted ||= Set.new( ["discourse/models/nav-item", - "discourse/models/user-action", "discourse/routes/discourse", "discourse/models/category", "discourse/models/site", diff --git a/test/javascripts/models/user-action-test.js.es6 b/test/javascripts/models/user-action-test.js.es6 index c39d7d828f..5139985807 100644 --- a/test/javascripts/models/user-action-test.js.es6 +++ b/test/javascripts/models/user-action-test.js.es6 @@ -1,21 +1,23 @@ -QUnit.module("Discourse.UserAction"); +import UserAction from "discourse/models/user-action"; + +QUnit.module("model: user-action"); QUnit.test("collapsing likes", assert => { - var actions = Discourse.UserAction.collapseStream([ - Discourse.UserAction.create({ - action_type: Discourse.UserAction.TYPES.likes_given, + var actions = UserAction.collapseStream([ + UserAction.create({ + action_type: UserAction.TYPES.likes_given, topic_id: 1, user_id: 1, post_number: 1 }), - Discourse.UserAction.create({ - action_type: Discourse.UserAction.TYPES.edits, + UserAction.create({ + action_type: UserAction.TYPES.edits, topic_id: 2, user_id: 1, post_number: 1 }), - Discourse.UserAction.create({ - action_type: Discourse.UserAction.TYPES.likes_given, + UserAction.create({ + action_type: UserAction.TYPES.likes_given, topic_id: 1, user_id: 2, post_number: 1 @@ -23,7 +25,6 @@ QUnit.test("collapsing likes", assert => { ]); assert.equal(actions.length, 2); - assert.equal(actions[0].get("children.length"), 1); assert.equal(actions[0].get("children")[0].items.length, 2); }); diff --git a/test/javascripts/models/user-stream-test.js.es6 b/test/javascripts/models/user-stream-test.js.es6 index d8be562c7a..a0fef54014 100644 --- a/test/javascripts/models/user-stream-test.js.es6 +++ b/test/javascripts/models/user-stream-test.js.es6 @@ -1,3 +1,5 @@ +import UserAction from "discourse/models/user-action"; + QUnit.module("Discourse.UserStream"); QUnit.test("basics", assert => { @@ -20,12 +22,9 @@ QUnit.test("filterParam", assert => { // defaults to posts/topics assert.equal(stream.get("filterParam"), "4,5"); - stream.set("filter", Discourse.UserAction.TYPES.likes_given); - assert.equal( - stream.get("filterParam"), - Discourse.UserAction.TYPES.likes_given - ); + stream.set("filter", UserAction.TYPES.likes_given); + assert.equal(stream.get("filterParam"), UserAction.TYPES.likes_given); - stream.set("filter", Discourse.UserAction.TYPES.replies); + stream.set("filter", UserAction.TYPES.replies); assert.equal(stream.get("filterParam"), "6,9"); }); From 932c169d46f02ad184e1e9cce0de9693b479a11a Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 12:56:13 -0500 Subject: [PATCH 047/408] REFACTOR: Remove Discourse.NavItem constants --- .../javascripts/discourse/components/d-navigation.js.es6 | 3 ++- app/assets/javascripts/discourse/models/nav-item.js.es6 | 2 +- .../tilt/es6_module_transpiler_template.rb | 2 +- test/javascripts/models/nav-item-test.js.es6 | 9 +++------ 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/components/d-navigation.js.es6 b/app/assets/javascripts/discourse/components/d-navigation.js.es6 index 0fe007a1ed..9ceea60eb4 100644 --- a/app/assets/javascripts/discourse/components/d-navigation.js.es6 +++ b/app/assets/javascripts/discourse/components/d-navigation.js.es6 @@ -1,4 +1,5 @@ import discourseComputed from "discourse-common/utils/decorators"; +import NavItem from "discourse/models/nav-item"; import { inject as service } from "@ember/service"; import Component from "@ember/component"; @@ -47,7 +48,7 @@ export default Component.extend({ }, {}); } - return Discourse.NavItem.buildList(category, { + return NavItem.buildList(category, { filterMode, noSubcategories, persistedQueryParams: params diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index 0eff005189..7ecebc4839 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -185,7 +185,7 @@ NavItem.reopenClass({ } items = items - .map(i => Discourse.NavItem.fromText(i, args)) + .map(i => NavItem.fromText(i, args)) .filter( i => i !== null && !(category && i.get("name").indexOf("categor") === 0) ); diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index fde7cfdd39..382417b8b4 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -85,7 +85,7 @@ JS def whitelisted?(path) @@whitelisted ||= Set.new( - ["discourse/models/nav-item", + [ "discourse/routes/discourse", "discourse/models/category", "discourse/models/site", diff --git a/test/javascripts/models/nav-item-test.js.es6 b/test/javascripts/models/nav-item-test.js.es6 index 429b669d7c..309ce31534 100644 --- a/test/javascripts/models/nav-item-test.js.es6 +++ b/test/javascripts/models/nav-item-test.js.es6 @@ -1,7 +1,8 @@ import { run } from "@ember/runloop"; import createStore from "helpers/create-store"; +import NavItem from "discourse/models/nav-item"; -QUnit.module("Discourse.NavItem", { +QUnit.module("NavItem", { beforeEach() { run(function() { const asianCategory = Discourse.Category.create({ @@ -17,11 +18,7 @@ QUnit.test("href", assert => { assert.expect(4); function href(text, expected, label) { - assert.equal( - Discourse.NavItem.fromText(text, {}).get("href"), - expected, - label - ); + assert.equal(NavItem.fromText(text, {}).get("href"), expected, label); } href("latest", "/latest", "latest"); From 7e44065bcbd46e06bd240f038693577b63bc58c9 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 13:13:13 -0500 Subject: [PATCH 048/408] REFACTOR: Migrate `Discourse.Post` to imports --- .../discourse/controllers/history.js.es6 | 7 ++++--- .../javascripts/discourse/models/post.js.es6 | 6 +++--- .../tilt/es6_module_transpiler_template.rb | 3 +-- test/javascripts/models/composer-test.js.es6 | 7 ++++--- test/javascripts/models/post-stream-test.js.es6 | 7 ++++--- test/javascripts/models/post-test.js.es6 | 16 +++++++++------- 6 files changed, 25 insertions(+), 21 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/history.js.es6 b/app/assets/javascripts/discourse/controllers/history.js.es6 index 79203ed563..7d68d2ab66 100644 --- a/app/assets/javascripts/discourse/controllers/history.js.es6 +++ b/app/assets/javascripts/discourse/controllers/history.js.es6 @@ -7,6 +7,7 @@ import { propertyGreaterThan, propertyLessThan } from "discourse/lib/computed"; import { on, observes } from "discourse-common/utils/decorators"; import { sanitizeAsync } from "discourse/lib/text"; import { iconHTML } from "discourse-common/lib/icon-library"; +import Post from "discourse/models/post"; function customTagArray(fieldName) { return Ember.computed(fieldName, function() { @@ -59,19 +60,19 @@ export default Controller.extend(ModalFunctionality, { refresh(postId, postVersion) { this.set("loading", true); - Discourse.Post.loadRevision(postId, postVersion).then(result => { + Post.loadRevision(postId, postVersion).then(result => { this.setProperties({ loading: false, model: result }); }); }, hide(postId, postVersion) { - Discourse.Post.hideRevision(postId, postVersion).then(() => + Post.hideRevision(postId, postVersion).then(() => this.refresh(postId, postVersion) ); }, show(postId, postVersion) { - Discourse.Post.showRevision(postId, postVersion).then(() => + Post.showRevision(postId, postVersion).then(() => this.refresh(postId, postVersion) ); }, diff --git a/app/assets/javascripts/discourse/models/post.js.es6 b/app/assets/javascripts/discourse/models/post.js.es6 index 83a18d9a12..b49aaea747 100644 --- a/app/assets/javascripts/discourse/models/post.js.es6 +++ b/app/assets/javascripts/discourse/models/post.js.es6 @@ -16,7 +16,7 @@ import Composer from "discourse/models/composer"; import { Promise } from "rsvp"; const Post = RestModel.extend({ - // TODO: Remove this once one instantiate all `Discourse.Post` models via the store. + // TODO: Remove this once one instantiate all `Post` models via the store. siteSettings: Ember.computed({ get() { return Discourse.SiteSettings; @@ -320,7 +320,7 @@ const Post = RestModel.extend({ // need to wait to hear back from server (stuff may not be loaded) - return Discourse.Post.updateBookmark(this.id, this.bookmarked) + return Post.updateBookmark(this.id, this.bookmarked) .then(result => { this.set("topic.bookmarked", result.topic_bookmarked); this.appEvents.trigger("page:bookmark-post-toggled", this); @@ -417,7 +417,7 @@ Post.reopenClass({ loadQuote(postId) { return ajax(`/posts/${postId}.json`).then(result => { - const post = Discourse.Post.create(result); + const post = Post.create(result); return Quote.build(post, post.raw, { raw: true, full: true }); }); }, diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index 382417b8b4..c129e66001 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -91,8 +91,7 @@ JS "discourse/models/site", "discourse/models/user", "discourse/models/session", - "discourse/models/model", - "discourse/models/post" + "discourse/models/model" ] ) diff --git a/test/javascripts/models/composer-test.js.es6 b/test/javascripts/models/composer-test.js.es6 index 78c823b2be..cd3135b74f 100644 --- a/test/javascripts/models/composer-test.js.es6 +++ b/test/javascripts/models/composer-test.js.es6 @@ -2,6 +2,7 @@ import EmberObject from "@ember/object"; import { currentUser } from "helpers/qunit-helpers"; import AppEvents from "discourse/services/app-events"; import Composer from "discourse/models/composer"; +import Post from "discourse/models/post"; import createStore from "helpers/create-store"; QUnit.module("model:composer"); @@ -247,7 +248,7 @@ QUnit.test("editingFirstPost", assert => { const composer = createComposer(); assert.ok(!composer.get("editingFirstPost"), "it's false by default"); - const post = Discourse.Post.create({ id: 123, post_number: 2 }); + const post = Post.create({ id: 123, post_number: 2 }); composer.setProperties({ post: post, action: Composer.EDIT }); assert.ok( !composer.get("editingFirstPost"), @@ -265,7 +266,7 @@ QUnit.test("clearState", assert => { const composer = createComposer({ originalText: "asdf", reply: "asdf2", - post: Discourse.Post.create({ id: 1 }), + post: Post.create({ id: 1 }), title: "wat" }); @@ -329,7 +330,7 @@ QUnit.test("Title length for static page topics as admin", assert => { Discourse.SiteSettings.max_topic_title_length = 10; const composer = createComposer(); - const post = Discourse.Post.create({ + const post = Post.create({ id: 123, post_number: 2, static_doc: true diff --git a/test/javascripts/models/post-stream-test.js.es6 b/test/javascripts/models/post-stream-test.js.es6 index eb99d811af..49b6018e20 100644 --- a/test/javascripts/models/post-stream-test.js.es6 +++ b/test/javascripts/models/post-stream-test.js.es6 @@ -1,7 +1,8 @@ -QUnit.module("model:post-stream"); - +import Post from "discourse/models/post"; import createStore from "helpers/create-store"; +QUnit.module("model:post-stream"); + const buildStream = function(id, stream) { const store = createStore(); const topic = store.createRecord("topic", { id, chunk_size: 5 }); @@ -173,7 +174,7 @@ QUnit.test("updateFromJson", assert => { }); assert.equal(postStream.get("posts.length"), 1, "it loaded the posts"); - assert.containsInstance(postStream.get("posts"), Discourse.Post); + assert.containsInstance(postStream.get("posts"), Post); assert.equal(postStream.get("extra_property"), 12); }); diff --git a/test/javascripts/models/post-test.js.es6 b/test/javascripts/models/post-test.js.es6 index afe69d03ad..5a7aa34520 100644 --- a/test/javascripts/models/post-test.js.es6 +++ b/test/javascripts/models/post-test.js.es6 @@ -1,7 +1,9 @@ -QUnit.module("Discourse.Post"); +import Post from "discourse/models/post"; + +QUnit.module("model: Post"); var buildPost = function(args) { - return Discourse.Post.create( + return Post.create( _.merge( { id: 1, @@ -14,13 +16,13 @@ var buildPost = function(args) { }; QUnit.test("defaults", assert => { - var post = Discourse.Post.create({ id: 1 }); + var post = Post.create({ id: 1 }); assert.blank(post.get("deleted_at"), "it has no deleted_at by default"); assert.blank(post.get("deleted_by"), "there is no deleted_by by default"); }); QUnit.test("new_user", assert => { - var post = Discourse.Post.create({ trust_level: 0 }); + var post = Post.create({ trust_level: 0 }); assert.ok(post.get("new_user"), "post is from a new user"); post.set("trust_level", 1); @@ -28,7 +30,7 @@ QUnit.test("new_user", assert => { }); QUnit.test("firstPost", assert => { - var post = Discourse.Post.create({ post_number: 1 }); + var post = Post.create({ post_number: 1 }); assert.ok(post.get("firstPost"), "it's the first post"); post.set("post_number", 10); @@ -36,13 +38,13 @@ QUnit.test("firstPost", assert => { }); QUnit.test("updateFromPost", assert => { - var post = Discourse.Post.create({ + var post = Post.create({ post_number: 1, raw: "hello world" }); post.updateFromPost( - Discourse.Post.create({ + Post.create({ raw: "different raw", wat: function() { return 123; From e51efce356f1b8ea59cfe23f82963d2c0402f309 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Fri, 8 Nov 2019 12:28:11 -0600 Subject: [PATCH 049/408] DEV: Remove all instances of Ember.computed (#8324) --- .../admin/controllers/admin-dashboard-general.js.es6 | 3 ++- app/assets/javascripts/admin/models/api-key.js.es6 | 3 ++- app/assets/javascripts/discourse-loader.js | 1 + app/assets/javascripts/discourse.js.es6 | 3 ++- .../discourse/components/about-page-users.js.es6 | 3 ++- .../discourse/components/date-time-input.js.es6 | 5 +++-- .../discourse/controllers/composer.js.es6 | 10 ++++++++-- .../javascripts/discourse/controllers/history.js.es6 | 11 +++++++++-- .../lib/register-topic-footer-button.js.es6 | 3 ++- .../discourse/mixins/buffered-content.js.es6 | 3 ++- app/assets/javascripts/discourse/models/post.js.es6 | 12 +++++++++--- app/assets/javascripts/discourse/models/user.js.es6 | 4 ++-- .../discourse/widgets/post-small-action.js.es6 | 3 ++- app/assets/javascripts/preload-store.js.es6 | 8 +++++--- .../components/multi-select/selected-name.js.es6 | 4 ++-- app/assets/javascripts/wizard/lib/ajax.js.es6 | 3 ++- app/assets/javascripts/wizard/lib/preview.js.es6 | 9 +++++---- 17 files changed, 60 insertions(+), 28 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin-dashboard-general.js.es6 b/app/assets/javascripts/admin/controllers/admin-dashboard-general.js.es6 index c91f09350d..ea7dc31dde 100644 --- a/app/assets/javascripts/admin/controllers/admin-dashboard-general.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-dashboard-general.js.es6 @@ -6,9 +6,10 @@ import { setting } from "discourse/lib/computed"; import AdminDashboard from "admin/models/admin-dashboard"; import Report from "admin/models/report"; import PeriodComputationMixin from "admin/mixins/period-computation"; +import computed from "@ember/object/computed"; function staticReport(reportType) { - return Ember.computed("reports.[]", function() { + return computed("reports.[]", function() { return makeArray(this.reports).find(report => report.type === reportType); }); } diff --git a/app/assets/javascripts/admin/models/api-key.js.es6 b/app/assets/javascripts/admin/models/api-key.js.es6 index 4b77e23c4a..bc818fb8e2 100644 --- a/app/assets/javascripts/admin/models/api-key.js.es6 +++ b/app/assets/javascripts/admin/models/api-key.js.es6 @@ -2,9 +2,10 @@ import discourseComputed from "discourse-common/utils/decorators"; import AdminUser from "admin/models/admin-user"; import RestModel from "discourse/models/rest"; import { ajax } from "discourse/lib/ajax"; +import computed from "@ember/object/computed"; const ApiKey = RestModel.extend({ - user: Ember.computed("_user", { + user: computed("_user", { get() { return this._user; }, diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index a8cd03b800..2f7b0b9b28 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -81,6 +81,7 @@ var define, requirejs; isEmpty: Ember.isEmpty }, rsvp: { + default: Ember.RSVP, Promise: Ember.RSVP.Promise, hash: Ember.RSVP.hash, all: Ember.RSVP.all diff --git a/app/assets/javascripts/discourse.js.es6 b/app/assets/javascripts/discourse.js.es6 index 2f45653ed1..c56acf9dc8 100644 --- a/app/assets/javascripts/discourse.js.es6 +++ b/app/assets/javascripts/discourse.js.es6 @@ -4,6 +4,7 @@ import { default as discourseComputed, observes } from "discourse-common/utils/decorators"; +import computed from "@ember/object/computed"; import FocusEvent from "discourse-common/mixins/focus-event"; const _pluginCallbacks = []; @@ -188,7 +189,7 @@ const Discourse = Ember.Application.extend(FocusEvent, { _pluginCallbacks.push({ version, code }); }, - assetVersion: Ember.computed({ + assetVersion: computed({ get() { return this.currentAssetVersion; }, diff --git a/app/assets/javascripts/discourse/components/about-page-users.js.es6 b/app/assets/javascripts/discourse/components/about-page-users.js.es6 index 7d4ff773ba..e064c67f29 100644 --- a/app/assets/javascripts/discourse/components/about-page-users.js.es6 +++ b/app/assets/javascripts/discourse/components/about-page-users.js.es6 @@ -3,9 +3,10 @@ import { userPath } from "discourse/lib/url"; import { formatUsername, escapeExpression } from "discourse/lib/utilities"; import { normalize } from "discourse/components/user-info"; import { renderAvatar } from "discourse/helpers/user-avatar"; +import computed from "@ember/object/computed"; export default Component.extend({ - usersTemplates: Ember.computed("users.[]", function() { + usersTemplates: computed("users.[]", function() { return (this.users || []).map(user => { let name = ""; if (user.name && normalize(user.username) !== normalize(user.name)) { diff --git a/app/assets/javascripts/discourse/components/date-time-input.js.es6 b/app/assets/javascripts/discourse/components/date-time-input.js.es6 index c83483bc7d..e6dc3d481b 100644 --- a/app/assets/javascripts/discourse/components/date-time-input.js.es6 +++ b/app/assets/javascripts/discourse/components/date-time-input.js.es6 @@ -1,15 +1,16 @@ import Component from "@ember/component"; +import computed from "@ember/object/computed"; export default Component.extend({ classNames: ["d-date-time-input"], date: null, showTime: true, - _hours: Ember.computed("date", function() { + _hours: computed("date", function() { return this.date ? this.date.getHours() : null; }), - _minutes: Ember.computed("date", function() { + _minutes: computed("date", function() { return this.date ? this.date.getMinutes() : null; }), diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index 818f70c089..51d4b3202e 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -1,5 +1,11 @@ import { isEmpty } from "@ember/utils"; -import { and, or, alias, reads } from "@ember/object/computed"; +import { + default as computed, + and, + or, + alias, + reads +} from "@ember/object/computed"; import { debounce } from "@ember/runloop"; import { inject as service } from "@ember/service"; import { inject } from "@ember/controller"; @@ -158,7 +164,7 @@ export default Controller.extend({ return "title"; }, - showToolbar: Ember.computed({ + showToolbar: computed({ get() { const keyValueStore = getOwner(this).lookup("key-value-store:main"); const storedVal = keyValueStore.get("toolbar-enabled"); diff --git a/app/assets/javascripts/discourse/controllers/history.js.es6 b/app/assets/javascripts/discourse/controllers/history.js.es6 index 7d68d2ab66..a457060722 100644 --- a/app/assets/javascripts/discourse/controllers/history.js.es6 +++ b/app/assets/javascripts/discourse/controllers/history.js.es6 @@ -1,5 +1,12 @@ import discourseComputed from "discourse-common/utils/decorators"; -import { alias, gt, not, or, equal } from "@ember/object/computed"; +import { + default as computed, + alias, + gt, + not, + or, + equal +} from "@ember/object/computed"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; @@ -10,7 +17,7 @@ import { iconHTML } from "discourse-common/lib/icon-library"; import Post from "discourse/models/post"; function customTagArray(fieldName) { - return Ember.computed(fieldName, function() { + return computed(fieldName, function() { var val = this.get(fieldName); if (!val) { return val; diff --git a/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 b/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 index 6b7bdf63b0..fa72ebee6e 100644 --- a/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 +++ b/app/assets/javascripts/discourse/lib/register-topic-footer-button.js.es6 @@ -1,4 +1,5 @@ import error from "@ember/error"; +import computed from "@ember/object/computed"; let _topicFooterButtons = {}; @@ -70,7 +71,7 @@ export function getTopicFooterButtons() { .filter(x => x) ); - return Ember.computed(...dependentKeys, { + return computed(...dependentKeys, { get() { const _isFunction = descriptor => descriptor && typeof descriptor === "function"; diff --git a/app/assets/javascripts/discourse/mixins/buffered-content.js.es6 b/app/assets/javascripts/discourse/mixins/buffered-content.js.es6 index 08723e1486..1e5de0f9ef 100644 --- a/app/assets/javascripts/discourse/mixins/buffered-content.js.es6 +++ b/app/assets/javascripts/discourse/mixins/buffered-content.js.es6 @@ -1,10 +1,11 @@ import EmberObjectProxy from "@ember/object/proxy"; import Mixin from "@ember/object/mixin"; +import computed from "@ember/object/computed"; /* global BufferedProxy: true */ export function bufferedProperty(property) { const mixin = { - buffered: Ember.computed(property, function() { + buffered: computed(property, function() { return EmberObjectProxy.extend(BufferedProxy).create({ content: this.get(property) }); diff --git a/app/assets/javascripts/discourse/models/post.js.es6 b/app/assets/javascripts/discourse/models/post.js.es6 index b49aaea747..eda9bed816 100644 --- a/app/assets/javascripts/discourse/models/post.js.es6 +++ b/app/assets/javascripts/discourse/models/post.js.es6 @@ -1,7 +1,13 @@ import discourseComputed from "discourse-common/utils/decorators"; import { get } from "@ember/object"; import { isEmpty } from "@ember/utils"; -import { equal, and, or, not } from "@ember/object/computed"; +import { + default as computed, + equal, + and, + or, + not +} from "@ember/object/computed"; import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; import RestModel from "discourse/models/rest"; @@ -16,8 +22,8 @@ import Composer from "discourse/models/composer"; import { Promise } from "rsvp"; const Post = RestModel.extend({ - // TODO: Remove this once one instantiate all `Post` models via the store. - siteSettings: Ember.computed({ + // TODO: Remove this once one instantiate all `Discourse.Post` models via the store. + siteSettings: computed({ get() { return Discourse.SiteSettings; }, diff --git a/app/assets/javascripts/discourse/models/user.js.es6 b/app/assets/javascripts/discourse/models/user.js.es6 index 8b7289d5ce..77bc32371c 100644 --- a/app/assets/javascripts/discourse/models/user.js.es6 +++ b/app/assets/javascripts/discourse/models/user.js.es6 @@ -1,5 +1,5 @@ import { isEmpty } from "@ember/utils"; -import { gt, equal, or } from "@ember/object/computed"; +import { default as computed, gt, equal, or } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; import { url } from "discourse/lib/computed"; @@ -63,7 +63,7 @@ const User = RestModel.extend({ return UserDraftsStream.create({ user: this }); }, - staff: Ember.computed("admin", "moderator", { + staff: computed("admin", "moderator", { get() { return this.admin || this.moderator; }, diff --git a/app/assets/javascripts/discourse/widgets/post-small-action.js.es6 b/app/assets/javascripts/discourse/widgets/post-small-action.js.es6 index ea45f0ed7c..93fadb5c24 100644 --- a/app/assets/javascripts/discourse/widgets/post-small-action.js.es6 +++ b/app/assets/javascripts/discourse/widgets/post-small-action.js.es6 @@ -5,6 +5,7 @@ import { h } from "virtual-dom"; import { avatarFor } from "discourse/widgets/post"; import { userPath } from "discourse/lib/url"; import { autoUpdatingRelativeAge } from "discourse/lib/formatter"; +import computed from "@ember/object/computed"; export function actionDescriptionHtml(actionCode, createdAt, username) { const dt = new Date(createdAt); @@ -22,7 +23,7 @@ export function actionDescriptionHtml(actionCode, createdAt, username) { } export function actionDescription(actionCode, createdAt, username) { - return Ember.computed(actionCode, createdAt, function() { + return computed(actionCode, createdAt, function() { const ac = this.get(actionCode); if (ac) { return actionDescriptionHtml(ac, this.get(createdAt), this.get(username)); diff --git a/app/assets/javascripts/preload-store.js.es6 b/app/assets/javascripts/preload-store.js.es6 index b096afd4c1..fae006ff6a 100644 --- a/app/assets/javascripts/preload-store.js.es6 +++ b/app/assets/javascripts/preload-store.js.es6 @@ -4,6 +4,8 @@ @class PreloadStore **/ +import { Promise } from "rsvp"; + export default { data: {}, @@ -19,13 +21,13 @@ export default { **/ getAndRemove(key, finder) { if (this.data[key]) { - var promise = Ember.RSVP.resolve(this.data[key]); + var promise = Promise.resolve(this.data[key]); delete this.data[key]; return promise; } if (finder) { - return new Ember.RSVP.Promise(function(resolve, reject) { + return new Promise(function(resolve, reject) { var result = finder(); // If the finder returns a promise, we support that too @@ -39,7 +41,7 @@ export default { }); } - return Ember.RSVP.resolve(null); + return Promise.resolve(null); }, get(key) { diff --git a/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 index df37ac012c..f5736ee609 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/selected-name.js.es6 @@ -1,4 +1,4 @@ -import { or, alias } from "@ember/object/computed"; +import { default as computed, or, alias } from "@ember/object/computed"; import Component from "@ember/component"; import discourseComputed from "discourse-common/utils/decorators"; @@ -38,7 +38,7 @@ export default Component.extend({ value: alias("computedContent.value"), - isLocked: Ember.computed("computedContent.locked", function() { + isLocked: computed("computedContent.locked", function() { return this.getWithDefault("computedContent.locked", false); }), diff --git a/app/assets/javascripts/wizard/lib/ajax.js.es6 b/app/assets/javascripts/wizard/lib/ajax.js.es6 index 64cc9571cc..afb8b23ce2 100644 --- a/app/assets/javascripts/wizard/lib/ajax.js.es6 +++ b/app/assets/javascripts/wizard/lib/ajax.js.es6 @@ -1,5 +1,6 @@ import { run } from "@ember/runloop"; import getUrl from "discourse-common/lib/get-url"; +import { Promise } from "rsvp"; import jQuery from "jquery"; let token; @@ -13,7 +14,7 @@ export function getToken() { } export function ajax(args) { - return new Ember.RSVP.Promise((resolve, reject) => { + return new Promise((resolve, reject) => { args.headers = { "X-CSRF-Token": getToken() }; args.success = data => run(null, resolve, data); args.error = xhr => run(null, reject, xhr); diff --git a/app/assets/javascripts/wizard/lib/preview.js.es6 b/app/assets/javascripts/wizard/lib/preview.js.es6 index d597bfae53..3f4d9fdf10 100644 --- a/app/assets/javascripts/wizard/lib/preview.js.es6 +++ b/app/assets/javascripts/wizard/lib/preview.js.es6 @@ -2,6 +2,7 @@ import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; /*eslint no-bitwise:0 */ import getUrl from "discourse-common/lib/get-url"; +import { Promise } from "rsvp"; export const LOREM = ` Lorem ipsum dolor sit amet, @@ -56,13 +57,13 @@ export function createPreviewComponent(width, height, obj) { loadImages() { const images = this.images(); if (images) { - return Ember.RSVP.Promise.all( + return Promise.all( Object.keys(images).map(id => { return loadImage(images[id]).then(img => (this[id] = img)); }) ); } - return Ember.RSVP.Promise.resolve(); + return Promise.resolve(); }, reload() { @@ -270,12 +271,12 @@ export function createPreviewComponent(width, height, obj) { function loadImage(src) { if (!src) { - return Ember.RSVP.Promise.resolve(); + return Promise.resolve(); } const img = new Image(); img.src = getUrl(src); - return new Ember.RSVP.Promise(resolve => (img.onload = () => resolve(img))); + return new Promise(resolve => (img.onload = () => resolve(img))); } export function parseColor(color) { From 7ac2a55588da08ce06e841f5d80420b7891788d5 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 13:30:41 -0500 Subject: [PATCH 050/408] REFACTOR: Remove `Discourse.Category` constants --- .../admin/components/embeddable-host.js.es6 | 3 +- .../site-settings/category-list.js.es6 | 3 +- .../components/search-advanced-options.js.es6 | 7 ++-- .../discourse/components/tag-list.js.es6 | 3 +- .../discourse/controllers/discovery.js.es6 | 3 +- .../controllers/edit-category.js.es6 | 3 +- .../discourse/controllers/history.js.es6 | 10 ++--- .../discourse/controllers/tags-show.js.es6 | 3 +- .../controllers/topic-bulk-actions.js.es6 | 3 +- .../discourse/helpers/category-link.js.es6 | 7 ++-- .../discourse/models/category-list.js.es6 | 3 +- .../discourse/models/category.js.es6 | 11 ++++++ .../discourse/models/nav-item.js.es6 | 7 ++-- .../javascripts/discourse/models/store.js.es6 | 3 +- .../discourse/models/topic-list.js.es6 | 3 +- .../models/topic-tracking-state.js.es6 | 9 +++-- .../javascripts/discourse/models/topic.js.es6 | 3 +- .../discourse/models/user-action.js.es6 | 3 +- .../javascripts/discourse/models/user.js.es6 | 11 ++---- .../routes/build-category-route.js.es6 | 6 +-- .../discourse/routes/tags-show.js.es6 | 6 +-- .../widgets/hamburger-categories.js.es6 | 3 +- .../components/category-drop.js.es6 | 6 +-- .../tilt/es6_module_transpiler_template.rb | 1 - test/javascripts/models/category-test.js.es6 | 39 +++++++++---------- test/javascripts/models/nav-item-test.js.es6 | 3 +- test/javascripts/models/topic-test.js.es6 | 8 ++-- .../models/topic-tracking-state-test.js.es6 | 3 +- 28 files changed, 95 insertions(+), 78 deletions(-) diff --git a/app/assets/javascripts/admin/components/embeddable-host.js.es6 b/app/assets/javascripts/admin/components/embeddable-host.js.es6 index 054acc744c..1d853b8986 100644 --- a/app/assets/javascripts/admin/components/embeddable-host.js.es6 +++ b/app/assets/javascripts/admin/components/embeddable-host.js.es6 @@ -6,6 +6,7 @@ import Component from "@ember/component"; import { bufferedProperty } from "discourse/mixins/buffered-content"; import { on, observes } from "discourse-common/utils/decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; +import Category from "discourse/models/category"; export default Component.extend(bufferedProperty("host"), { editToggled: false, @@ -50,7 +51,7 @@ export default Component.extend(bufferedProperty("host"), { host .save(props) .then(() => { - host.set("category", Discourse.Category.findById(this.categoryId)); + host.set("category", Category.findById(this.categoryId)); this.set("editToggled", false); }) .catch(popupAjaxError); diff --git a/app/assets/javascripts/admin/components/site-settings/category-list.js.es6 b/app/assets/javascripts/admin/components/site-settings/category-list.js.es6 index 5d4b68b19b..ff83e13e52 100644 --- a/app/assets/javascripts/admin/components/site-settings/category-list.js.es6 +++ b/app/assets/javascripts/admin/components/site-settings/category-list.js.es6 @@ -1,11 +1,12 @@ import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; +import Category from "discourse/models/category"; export default Component.extend({ @discourseComputed("value") selectedCategories: { get(value) { - return Discourse.Category.findByIds(value.split("|")); + return Category.findByIds(value.split("|")); }, set(value) { this.set("value", value.mapBy("id").join("|")); diff --git a/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 b/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 index 42e85897ea..f0a3d817c1 100644 --- a/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 +++ b/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 @@ -5,6 +5,7 @@ import { observes } from "discourse-common/utils/decorators"; import { escapeExpression } from "discourse/lib/utilities"; import Group from "discourse/models/group"; import Badge from "discourse/models/badge"; +import Category from "discourse/models/category"; const REGEXP_BLOCKS = /(([^" \t\n\x0B\f\r]+)?(("[^"]+")?))/g; @@ -224,7 +225,7 @@ export default Component.extend({ .replace(REGEXP_CATEGORY_PREFIX, "") .split(":"); if (subcategories.length > 1) { - const userInput = Discourse.Category.findBySlug( + const userInput = Category.findBySlug( subcategories[1], subcategories[0] ); @@ -234,14 +235,14 @@ export default Component.extend({ ) this.set("searchedTerms.category", userInput); } else if (isNaN(subcategories)) { - const userInput = Discourse.Category.findSingleBySlug(subcategories[0]); + const userInput = Category.findSingleBySlug(subcategories[0]); if ( (!existingInput && userInput) || (existingInput && userInput && existingInput.id !== userInput.id) ) this.set("searchedTerms.category", userInput); } else { - const userInput = Discourse.Category.findById(subcategories[0]); + const userInput = Category.findById(subcategories[0]); if ( (!existingInput && userInput) || (existingInput && userInput && existingInput.id !== userInput.id) diff --git a/app/assets/javascripts/discourse/components/tag-list.js.es6 b/app/assets/javascripts/discourse/components/tag-list.js.es6 index ee6de7fa3a..a6472a1c6e 100644 --- a/app/assets/javascripts/discourse/components/tag-list.js.es6 +++ b/app/assets/javascripts/discourse/components/tag-list.js.es6 @@ -1,6 +1,7 @@ import discourseComputed from "discourse-common/utils/decorators"; import { sort } from "@ember/object/computed"; import Component from "@ember/component"; +import Category from "discourse/models/category"; export default Component.extend({ classNameBindings: [":tag-list", "categoryClass", "tagGroupNameClass"], @@ -15,7 +16,7 @@ export default Component.extend({ @discourseComputed("categoryId") category(categoryId) { - return categoryId && Discourse.Category.findById(categoryId); + return categoryId && Category.findById(categoryId); }, @discourseComputed("category.fullSlug") diff --git a/app/assets/javascripts/discourse/controllers/discovery.js.es6 b/app/assets/javascripts/discourse/controllers/discovery.js.es6 index 6345bb8aa2..c797ed7565 100644 --- a/app/assets/javascripts/discourse/controllers/discovery.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery.js.es6 @@ -2,6 +2,7 @@ import { alias, not } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import DiscourseURL from "discourse/lib/url"; +import Category from "discourse/models/category"; export default Controller.extend({ discoveryTopics: inject("discovery/topics"), @@ -25,7 +26,7 @@ export default Controller.extend({ if (category) { url = "/c/" + - Discourse.Category.slugFor(category) + + Category.slugFor(category) + (this.noSubcategories ? "/none" : "") + "/l"; } diff --git a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 index 21b1e5c5ac..a529f05e87 100644 --- a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 +++ b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 @@ -8,6 +8,7 @@ import { on, observes } from "discourse-common/utils/decorators"; +import Category from "discourse/models/category"; export default Controller.extend(ModalFunctionality, { selectedTab: null, @@ -106,7 +107,7 @@ export default Controller.extend(ModalFunctionality, { slug: result.category.slug, id: result.category.id }); - DiscourseURL.redirectTo("/c/" + Discourse.Category.slugFor(model)); + DiscourseURL.redirectTo("/c/" + Category.slugFor(model)); }) .catch(error => { this.flash(extractError(error), "error"); diff --git a/app/assets/javascripts/discourse/controllers/history.js.es6 b/app/assets/javascripts/discourse/controllers/history.js.es6 index a457060722..99a5b2194d 100644 --- a/app/assets/javascripts/discourse/controllers/history.js.es6 +++ b/app/assets/javascripts/discourse/controllers/history.js.es6 @@ -15,6 +15,7 @@ import { on, observes } from "discourse-common/utils/decorators"; import { sanitizeAsync } from "discourse/lib/text"; import { iconHTML } from "discourse-common/lib/icon-library"; import Post from "discourse/models/post"; +import Category from "discourse/models/category"; function customTagArray(fieldName) { return computed(fieldName, function() { @@ -95,10 +96,7 @@ export default Controller.extend(ModalFunctionality, { post.set("topic.fancy_title", result.topic.fancy_title); } if (result.category_id) { - post.set( - "topic.category", - Discourse.Category.findById(result.category_id) - ); + post.set("topic.category", Category.findById(result.category_id)); } this.send("closeModal"); }) @@ -226,7 +224,7 @@ export default Controller.extend(ModalFunctionality, { @discourseComputed("model.category_id_changes") previousCategory(changes) { if (changes) { - var category = Discourse.Category.findById(changes["previous"]); + var category = Category.findById(changes["previous"]); return categoryBadgeHTML(category, { allowUncategorized: true }); } }, @@ -234,7 +232,7 @@ export default Controller.extend(ModalFunctionality, { @discourseComputed("model.category_id_changes") currentCategory(changes) { if (changes) { - var category = Discourse.Category.findById(changes["current"]); + var category = Category.findById(changes["current"]); return categoryBadgeHTML(category, { allowUncategorized: true }); } }, diff --git a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 index 631f85d7df..5f51ee9efb 100644 --- a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 @@ -11,6 +11,7 @@ import { extraNavItemProperties, customNavItemHref } from "discourse/models/nav-item"; +import Category from "discourse/models/category"; if (extraNavItemProperties) { extraNavItemProperties(function(text, opts) { @@ -36,7 +37,7 @@ if (customNavItemHref) { if (category) { path += "c/"; - path += Discourse.Category.slugFor(category); + path += Category.slugFor(category); if (navItem.get("noSubcategories")) { path += "/none"; } diff --git a/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 b/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 index bd78a3002b..5382f8cc3f 100644 --- a/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 @@ -2,6 +2,7 @@ import { empty, alias } from "@ember/object/computed"; import Controller from "@ember/controller"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import Topic from "discourse/models/topic"; +import Category from "discourse/models/category"; const _buttons = []; @@ -175,7 +176,7 @@ export default Controller.extend(ModalFunctionality, { changeCategory() { const categoryId = parseInt(this.newCategoryId, 10) || 0; - const category = Discourse.Category.findById(categoryId); + const category = Category.findById(categoryId); this.perform({ type: "change_category", category_id: categoryId }).then( topics => { diff --git a/app/assets/javascripts/discourse/helpers/category-link.js.es6 b/app/assets/javascripts/discourse/helpers/category-link.js.es6 index c76382c8df..0efb208def 100644 --- a/app/assets/javascripts/discourse/helpers/category-link.js.es6 +++ b/app/assets/javascripts/discourse/helpers/category-link.js.es6 @@ -2,6 +2,7 @@ import { get } from "@ember/object"; import { registerUnbound } from "discourse-common/lib/helpers"; import { isRTL } from "discourse/lib/text-direction"; import { iconHTML } from "discourse-common/lib/icon-library"; +import Category from "discourse/models/category"; let escapeExpression = Handlebars.Utils.escapeExpression; let _renderer = defaultCategoryLinkRenderer; @@ -78,7 +79,7 @@ function defaultCategoryLinkRenderer(category, opts) { let restricted = get(category, "read_restricted"); let url = opts.url ? opts.url - : Discourse.getURL("/c/") + Discourse.Category.slugFor(category); + : Discourse.getURL("/c/") + Category.slugFor(category); let href = opts.link === false ? "" : url; let tagName = opts.link === false || opts.link === "false" ? "span" : "a"; let extraClasses = opts.extraClasses ? " " + opts.extraClasses : ""; @@ -88,9 +89,7 @@ function defaultCategoryLinkRenderer(category, opts) { let categoryDir = ""; if (!opts.hideParent) { - parentCat = Discourse.Category.findById( - get(category, "parent_category_id") - ); + parentCat = Category.findById(get(category, "parent_category_id")); } const categoryStyle = diff --git a/app/assets/javascripts/discourse/models/category-list.js.es6 b/app/assets/javascripts/discourse/models/category-list.js.es6 index 227dc14894..f04b40dff8 100644 --- a/app/assets/javascripts/discourse/models/category-list.js.es6 +++ b/app/assets/javascripts/discourse/models/category-list.js.es6 @@ -1,6 +1,7 @@ import PreloadStore from "preload-store"; import { ajax } from "discourse/lib/ajax"; import Topic from "discourse/models/topic"; +import Category from "discourse/models/category"; const CategoryList = Ember.ArrayProxy.extend({ init() { @@ -12,7 +13,7 @@ const CategoryList = Ember.ArrayProxy.extend({ CategoryList.reopenClass({ categoriesFrom(store, result) { const categories = CategoryList.create(); - const list = Discourse.Category.list(); + const list = Category.list(); let statPeriod = "all"; const minCategories = result.category_list.categories.length * 0.66; diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 98336dac42..1384837d33 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -5,6 +5,7 @@ import RestModel from "discourse/models/rest"; import { on } from "discourse-common/utils/decorators"; import PermissionType from "discourse/models/permission-type"; import { NotificationLevels } from "discourse/lib/notification-levels"; +import deprecated from "discourse-common/lib/deprecated"; const Category = RestModel.extend({ permissions: null, @@ -407,4 +408,14 @@ Category.reopenClass({ } }); +Object.defineProperty(Discourse, "Category", { + get() { + deprecated( + "Import the Category object instead of using Discourse.Category", + { since: "2.4.0", dropFrom: "2.5.0" } + ); + return Category; + } +}); + export default Category; diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index 7ecebc4839..72395681be 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -1,6 +1,7 @@ import discourseComputed from "discourse-common/utils/decorators"; import { toTitleCase } from "discourse/lib/formatter"; import { emojiUnescape } from "discourse/lib/text"; +import Category from "discourse/models/category"; const NavItem = Discourse.Model.extend({ @discourseComputed("categoryName", "name") @@ -53,7 +54,7 @@ const NavItem = Discourse.Model.extend({ "nameLower", split[1].toLowerCase() ); - return cat ? Discourse.Category.slugFor(cat) : null; + return cat ? Category.slugFor(cat) : null; } return null; }, @@ -84,7 +85,7 @@ const NavItem = Discourse.Model.extend({ let mode = ""; if (category) { mode += "c/"; - mode += Discourse.Category.slugFor(category); + mode += Category.slugFor(category); if (noSubcategories) { mode += "/none"; } @@ -143,7 +144,7 @@ NavItem.reopenClass({ ) return null; - if (!Discourse.Category.list() && testName === "categories") return null; + if (!Category.list() && testName === "categories") return null; if (!Discourse.Site.currentProp("top_menu_items").includes(testName)) return null; diff --git a/app/assets/javascripts/discourse/models/store.js.es6 b/app/assets/javascripts/discourse/models/store.js.es6 index 39a5ce1434..14d479264a 100644 --- a/app/assets/javascripts/discourse/models/store.js.es6 +++ b/app/assets/javascripts/discourse/models/store.js.es6 @@ -5,6 +5,7 @@ import ResultSet from "discourse/models/result-set"; import { getRegister } from "discourse-common/lib/get-owner"; import { underscore } from "@ember/string"; import { set } from "@ember/object"; +import Category from "discourse/models/category"; let _identityMap; @@ -272,7 +273,7 @@ export default EmberObject.extend({ // to category. That should either respect this or be // removed. if (subType === "category" && type !== "topic") { - return Discourse.Category.findById(id); + return Category.findById(id); } if (root.meta && root.meta.types) { diff --git a/app/assets/javascripts/discourse/models/topic-list.js.es6 b/app/assets/javascripts/discourse/models/topic-list.js.es6 index da01a6899d..bec760fd69 100644 --- a/app/assets/javascripts/discourse/models/topic-list.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-list.js.es6 @@ -5,6 +5,7 @@ import RestModel from "discourse/models/rest"; import Model from "discourse/models/model"; import { getOwner } from "discourse-common/lib/get-owner"; import { Promise } from "rsvp"; +import Category from "discourse/models/category"; // Whether to show the category badge in topic lists function displayCategoryInList(site, category) { @@ -136,7 +137,7 @@ TopicList.reopenClass({ // Stitch together our side loaded data - const categories = Discourse.Category.list(), + const categories = Category.list(), users = Model.extractByKey(result.users, Discourse.User), groups = Model.extractByKey(result.primary_groups, EmberObject); diff --git a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 index de53d7c35a..4656900990 100644 --- a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 @@ -7,6 +7,7 @@ import { } from "discourse-common/utils/decorators"; import { defaultHomepage } from "discourse/lib/utilities"; import PreloadStore from "preload-store"; +import Category from "discourse/models/category"; function isNew(topic) { return ( @@ -57,7 +58,7 @@ const TopicTrackingState = Discourse.Model.extend({ // fill parent_category_id we need it for counting new/unread if (data.payload && data.payload.category_id) { - var category = Discourse.Category.findById(data.payload.category_id); + var category = Category.findById(data.payload.category_id); if (category && category.parent_category_id) { data.payload.parent_category_id = category.parent_category_id; @@ -133,7 +134,7 @@ const TopicTrackingState = Discourse.Model.extend({ const categoryId = data.payload && data.payload.category_id; if (filterCategory && filterCategory.get("id") !== categoryId) { - const category = categoryId && Discourse.Category.findById(categoryId); + const category = categoryId && Category.findById(categoryId); if ( !category || category.get("parentCategory.id") !== filterCategory.get("id") @@ -194,7 +195,7 @@ const TopicTrackingState = Discourse.Model.extend({ if (split.length >= 4) { filter = split[split.length - 1]; // c/cat/subcat/l/latest - var category = Discourse.Category.findSingleBySlug( + var category = Category.findSingleBySlug( split.splice(1, split.length - 3).join("/") ); this.set("filterCategory", category); @@ -408,7 +409,7 @@ const TopicTrackingState = Discourse.Model.extend({ loadStates(data) { const states = this.states; - const idMap = Discourse.Category.idMap(); + const idMap = Category.idMap(); // I am taking some shortcuts here to avoid 500 gets for a large list if (data) { diff --git a/app/assets/javascripts/discourse/models/topic.js.es6 b/app/assets/javascripts/discourse/models/topic.js.es6 index 9590ffcda8..ad9918b8a9 100644 --- a/app/assets/javascripts/discourse/models/topic.js.es6 +++ b/app/assets/javascripts/discourse/models/topic.js.es6 @@ -18,6 +18,7 @@ import { observes, on } from "discourse-common/utils/decorators"; +import Category from "discourse/models/category"; export function loadTopicView(topic, args) { const data = _.merge({}, args); @@ -208,7 +209,7 @@ const Topic = RestModel.extend({ @on("init") @observes("category_id") _categoryIdChanged() { - this.set("category", Discourse.Category.findById(this.category_id)); + this.set("category", Category.findById(this.category_id)); }, @observes("categoryName") diff --git a/app/assets/javascripts/discourse/models/user-action.js.es6 b/app/assets/javascripts/discourse/models/user-action.js.es6 index 183c47e44b..a22d601fae 100644 --- a/app/assets/javascripts/discourse/models/user-action.js.es6 +++ b/app/assets/javascripts/discourse/models/user-action.js.es6 @@ -5,6 +5,7 @@ import { on } from "discourse-common/utils/decorators"; import UserActionGroup from "discourse/models/user-action-group"; import { postUrl } from "discourse/lib/utilities"; import { userPath } from "discourse/lib/url"; +import Category from "discourse/models/category"; const UserActionTypes = { likes_given: 1, @@ -31,7 +32,7 @@ const UserAction = RestModel.extend({ _attachCategory() { const categoryId = this.category_id; if (categoryId) { - this.set("category", Discourse.Category.findById(categoryId)); + this.set("category", Category.findById(categoryId)); } }, diff --git a/app/assets/javascripts/discourse/models/user.js.es6 b/app/assets/javascripts/discourse/models/user.js.es6 index 77bc32371c..b951631c60 100644 --- a/app/assets/javascripts/discourse/models/user.js.es6 +++ b/app/assets/javascripts/discourse/models/user.js.es6 @@ -631,17 +631,14 @@ const User = RestModel.extend({ @observes("muted_category_ids") updateMutedCategories() { - this.set( - "mutedCategories", - Discourse.Category.findByIds(this.muted_category_ids) - ); + this.set("mutedCategories", Category.findByIds(this.muted_category_ids)); }, @observes("tracked_category_ids") updateTrackedCategories() { this.set( "trackedCategories", - Discourse.Category.findByIds(this.tracked_category_ids) + Category.findByIds(this.tracked_category_ids) ); }, @@ -649,7 +646,7 @@ const User = RestModel.extend({ updateWatchedCategories() { this.set( "watchedCategories", - Discourse.Category.findByIds(this.watched_category_ids) + Category.findByIds(this.watched_category_ids) ); }, @@ -657,7 +654,7 @@ const User = RestModel.extend({ updateWatchedFirstPostCategories() { this.set( "watchedFirstPostCategories", - Discourse.Category.findByIds(this.watched_first_post_category_ids) + Category.findByIds(this.watched_first_post_category_ids) ); }, diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index 06259b920c..064f02a494 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -65,7 +65,7 @@ export default (filterArg, params) => { _setupNavigation(category) { const noSubcategories = params && !!params.no_subcategories, - filterMode = `c/${Discourse.Category.slugFor(category)}${ + filterMode = `c/${Category.slugFor(category)}${ noSubcategories ? "/none" : "" }/l/${this.filter(category)}`; @@ -92,9 +92,9 @@ export default (filterArg, params) => { }, _retrieveTopicList(category, transition) { - const listFilter = `c/${Discourse.Category.slugFor( + const listFilter = `c/${Category.slugFor(category)}/l/${this.filter( category - )}/l/${this.filter(category)}`, + )}`, findOpts = filterQueryParams(transition.to.queryParams, params), extras = { cached: this.isPoppedState(transition) }; diff --git a/app/assets/javascripts/discourse/routes/tags-show.js.es6 b/app/assets/javascripts/discourse/routes/tags-show.js.es6 index c718cc75ff..0883b5cc1b 100644 --- a/app/assets/javascripts/discourse/routes/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/routes/tags-show.js.es6 @@ -7,6 +7,7 @@ import { } from "discourse/routes/build-topic-route"; import { queryParams } from "discourse/controllers/discovery-sortable"; import PermissionType from "discourse/models/permission-type"; +import Category from "discourse/models/category"; export default DiscourseRoute.extend({ navMode: "latest", @@ -79,10 +80,7 @@ export default DiscourseRoute.extend({ let filter; if (categorySlug) { - const category = Discourse.Category.findBySlug( - categorySlug, - parentCategorySlug - ); + const category = Category.findBySlug(categorySlug, parentCategorySlug); if (parentCategorySlug) { filter = `tags/c/${parentCategorySlug}/${categorySlug}/${tagId}/l/${topicFilter}`; } else if (this.noSubcategories) { diff --git a/app/assets/javascripts/discourse/widgets/hamburger-categories.js.es6 b/app/assets/javascripts/discourse/widgets/hamburger-categories.js.es6 index 2112dd4f1d..3a51939f33 100644 --- a/app/assets/javascripts/discourse/widgets/hamburger-categories.js.es6 +++ b/app/assets/javascripts/discourse/widgets/hamburger-categories.js.es6 @@ -1,6 +1,7 @@ import { createWidget } from "discourse/widgets/widget"; import { h } from "virtual-dom"; import { number } from "discourse/lib/formatter"; +import Category from "discourse/models/category"; createWidget("hamburger-category", { tagName: "li.category-link", @@ -10,7 +11,7 @@ createWidget("hamburger-category", { this.tagName += ".subcategory"; } - this.tagName += ".category-" + Discourse.Category.slugFor(c, "-"); + this.tagName += ".category-" + Category.slugFor(c, "-"); const results = [ this.attach("category-link", { category: c, allowUncategorized: true }) diff --git a/app/assets/javascripts/select-kit/components/category-drop.js.es6 b/app/assets/javascripts/select-kit/components/category-drop.js.es6 index 601d420d4b..2e7294854b 100644 --- a/app/assets/javascripts/select-kit/components/category-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-drop.js.es6 @@ -81,7 +81,7 @@ export default ComboBoxComponent.extend({ const contentLength = (content && content.length) || 0; return ( contentLength >= 15 || - (this.isAsync && contentLength < Discourse.Category.list().length) + (this.isAsync && contentLength < Category.list().length) ); }, @@ -141,7 +141,7 @@ export default ComboBoxComponent.extend({ categoryURL = Discourse.getURL(this.noCategoriesUrl); } else { const category = Category.findById(parseInt(categoryId, 10)); - const slug = Discourse.Category.slugFor(category); + const slug = Category.slugFor(category); categoryURL = Discourse.getURL("/c/") + slug; } @@ -164,7 +164,7 @@ export default ComboBoxComponent.extend({ return; } - let results = Discourse.Category.search(filter); + let results = Category.search(filter); if (!this.siteSettings.allow_uncategorized_topics) { results = results.filter(result => { diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index c129e66001..b0b18d2736 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -87,7 +87,6 @@ JS @@whitelisted ||= Set.new( [ "discourse/routes/discourse", - "discourse/models/category", "discourse/models/site", "discourse/models/user", "discourse/models/session", diff --git a/test/javascripts/models/category-test.js.es6 b/test/javascripts/models/category-test.js.es6 index aa06c121fa..58a0af8b3f 100644 --- a/test/javascripts/models/category-test.js.es6 +++ b/test/javascripts/models/category-test.js.es6 @@ -7,7 +7,7 @@ QUnit.test("slugFor", assert => { const store = createStore(); const slugFor = function(cat, val, text) { - assert.equal(Discourse.Category.slugFor(cat), val, text); + assert.equal(Category.slugFor(cat), val, text); }; slugFor( @@ -86,35 +86,35 @@ QUnit.test("findBySlug", assert => { }), categoryList = [darth, luke, hurricane, newsFeed, time, bah]; - sandbox.stub(Discourse.Category, "list").returns(categoryList); + sandbox.stub(Category, "list").returns(categoryList); assert.deepEqual( - Discourse.Category.findBySlug("darth"), + Category.findBySlug("darth"), darth, "we can find a category" ); assert.deepEqual( - Discourse.Category.findBySlug("luke", "darth"), + Category.findBySlug("luke", "darth"), luke, "we can find the other category with parent category" ); assert.deepEqual( - Discourse.Category.findBySlug("熱帶風暴畫眉"), + Category.findBySlug("熱帶風暴畫眉"), hurricane, "we can find a category with CJK slug" ); assert.deepEqual( - Discourse.Category.findBySlug("뉴스피드", "熱帶風暴畫眉"), + Category.findBySlug("뉴스피드", "熱帶風暴畫眉"), newsFeed, "we can find a category with CJK slug whose parent slug is also CJK" ); assert.deepEqual( - Discourse.Category.findBySlug("时间", "darth"), + Category.findBySlug("时间", "darth"), time, "we can find a category with CJK slug whose parent slug is english" ); assert.deepEqual( - Discourse.Category.findBySlug("bah", "熱帶風暴畫眉"), + Category.findBySlug("bah", "熱帶風暴畫眉"), bah, "we can find a category with english slug whose parent slug is CJK" ); @@ -150,35 +150,35 @@ QUnit.test("findSingleBySlug", assert => { }), categoryList = [darth, luke, hurricane, newsFeed, time, bah]; - sandbox.stub(Discourse.Category, "list").returns(categoryList); + sandbox.stub(Category, "list").returns(categoryList); assert.deepEqual( - Discourse.Category.findSingleBySlug("darth"), + Category.findSingleBySlug("darth"), darth, "we can find a category" ); assert.deepEqual( - Discourse.Category.findSingleBySlug("darth/luke"), + Category.findSingleBySlug("darth/luke"), luke, "we can find the other category with parent category" ); assert.deepEqual( - Discourse.Category.findSingleBySlug("熱帶風暴畫眉"), + Category.findSingleBySlug("熱帶風暴畫眉"), hurricane, "we can find a category with CJK slug" ); assert.deepEqual( - Discourse.Category.findSingleBySlug("熱帶風暴畫眉/뉴스피드"), + Category.findSingleBySlug("熱帶風暴畫眉/뉴스피드"), newsFeed, "we can find a category with CJK slug whose parent slug is also CJK" ); assert.deepEqual( - Discourse.Category.findSingleBySlug("darth/时间"), + Category.findSingleBySlug("darth/时间"), time, "we can find a category with CJK slug whose parent slug is english" ); assert.deepEqual( - Discourse.Category.findSingleBySlug("熱帶風暴畫眉/bah"), + Category.findSingleBySlug("熱帶風暴畫眉/bah"), bah, "we can find a category with english slug whose parent slug is CJK" ); @@ -191,13 +191,10 @@ QUnit.test("findByIds", assert => { 2: store.createRecord("category", { id: 2 }) }; - sandbox.stub(Discourse.Category, "idMap").returns(categories); - assert.deepEqual( - Discourse.Category.findByIds([1, 2, 3]), - _.values(categories) - ); + sandbox.stub(Category, "idMap").returns(categories); + assert.deepEqual(Category.findByIds([1, 2, 3]), _.values(categories)); - assert.deepEqual(Discourse.Category.findByIds(), []); + assert.deepEqual(Category.findByIds(), []); }); QUnit.test("search with category name", assert => { diff --git a/test/javascripts/models/nav-item-test.js.es6 b/test/javascripts/models/nav-item-test.js.es6 index 309ce31534..28f2eb9f5e 100644 --- a/test/javascripts/models/nav-item-test.js.es6 +++ b/test/javascripts/models/nav-item-test.js.es6 @@ -1,11 +1,12 @@ import { run } from "@ember/runloop"; import createStore from "helpers/create-store"; import NavItem from "discourse/models/nav-item"; +import Category from "discourse/models/category"; QUnit.module("NavItem", { beforeEach() { run(function() { - const asianCategory = Discourse.Category.create({ + const asianCategory = Category.create({ name: "确实是这样", id: 343434 }); diff --git a/test/javascripts/models/topic-test.js.es6 b/test/javascripts/models/topic-test.js.es6 index 1deab13a54..40ea25f854 100644 --- a/test/javascripts/models/topic-test.js.es6 +++ b/test/javascripts/models/topic-test.js.es6 @@ -1,10 +1,10 @@ import EmberObject from "@ember/object"; import { IMAGE_VERSION as v } from "pretty-text/emoji/version"; +import Category from "discourse/models/category"; +import Topic from "discourse/models/topic"; QUnit.module("model:topic"); -import Topic from "discourse/models/topic"; - QUnit.test("defaults", assert => { const topic = Topic.create({ id: 1234 }); @@ -84,7 +84,7 @@ QUnit.test("has suggestedTopics", assert => { QUnit.test("category relationship", assert => { // It finds the category by id - const category = Discourse.Category.list()[0]; + const category = Category.list()[0]; const topic = Topic.create({ id: 1111, category_id: category.get("id") }); assert.equal(topic.get("category"), category); @@ -92,7 +92,7 @@ QUnit.test("category relationship", assert => { QUnit.test("updateFromJson", assert => { const topic = Topic.create({ id: 1234 }); - const category = Discourse.Category.list()[0]; + const category = Category.list()[0]; topic.updateFromJson({ post_stream: [1, 2, 3], diff --git a/test/javascripts/models/topic-tracking-state-test.js.es6 b/test/javascripts/models/topic-tracking-state-test.js.es6 index 5799b4f116..9c9f0856a9 100644 --- a/test/javascripts/models/topic-tracking-state-test.js.es6 +++ b/test/javascripts/models/topic-tracking-state-test.js.es6 @@ -1,5 +1,6 @@ import TopicTrackingState from "discourse/models/topic-tracking-state"; import createStore from "helpers/create-store"; +import Category from "discourse/models/category"; QUnit.module("model:topic-tracking-state"); @@ -37,7 +38,7 @@ QUnit.test("subscribe to category", function(assert) { }), categoryList = [darth, luke]; - sandbox.stub(Discourse.Category, "list").returns(categoryList); + sandbox.stub(Category, "list").returns(categoryList); const state = TopicTrackingState.create(); From 291572a97a965dd5e5e5a8a5fca045f64335eeb7 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 13:46:50 -0500 Subject: [PATCH 051/408] REFACTOR: Remove `Discourse.Session` constants --- app/assets/javascripts/application.js | 4 +++- app/assets/javascripts/discourse/controllers/topic.js.es6 | 4 +--- app/assets/javascripts/discourse/lib/ajax.js.es6 | 7 ++++--- .../javascripts/discourse/models/login-method.js.es6 | 3 ++- app/assets/javascripts/discourse/models/topic-list.js.es6 | 5 +++-- app/assets/javascripts/discourse/models/topic.js.es6 | 3 ++- .../javascripts/discourse/routes/build-topic-route.js.es6 | 5 +++-- .../javascripts/preload-application-data.js.no-module.es6 | 6 ++++-- test/javascripts/test_helper.js | 4 +++- 9 files changed, 25 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 290f920789..fa5ef28880 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -13,6 +13,9 @@ //= require ./discourse/lib/utilities //= require ./discourse/lib/page-visible //= require ./discourse/lib/logout +//= require ./discourse/mixins/singleton +//= require ./discourse/models/rest +//= require ./discourse/models/session //= require ./discourse/lib/ajax //= require ./discourse/lib/text //= require ./discourse/lib/hash @@ -34,7 +37,6 @@ //= require ./discourse/mixins/scrolling //= require ./discourse/lib/ajax-error //= require ./discourse/models/model -//= require ./discourse/models/rest //= require ./discourse/models/result-set //= require ./discourse/models/store //= require ./discourse/models/action-summary diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 7f2708a789..1a67f6e0ed 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -447,9 +447,7 @@ export default Controller.extend(bufferedProperty("model"), { : "/"; ajax("/t/" + topic.get("id") + "/timings.json?last=1", { type: "DELETE" }) .then(() => { - const highestSeenByTopic = Discourse.Session.currentProp( - "highestSeenByTopic" - ); + const highestSeenByTopic = this.session.get("highestSeenByTopic"); highestSeenByTopic[topic.get("id")] = null; DiscourseURL.routeTo(goToPath); }) diff --git a/app/assets/javascripts/discourse/lib/ajax.js.es6 b/app/assets/javascripts/discourse/lib/ajax.js.es6 index 40fd85d686..7b7d9fda98 100644 --- a/app/assets/javascripts/discourse/lib/ajax.js.es6 +++ b/app/assets/javascripts/discourse/lib/ajax.js.es6 @@ -1,6 +1,7 @@ import { run } from "@ember/runloop"; import pageVisible from "discourse/lib/page-visible"; import logout from "discourse/lib/logout"; +import Session from "discourse/models/session"; import { Promise } from "rsvp"; let _trackView = false; @@ -44,7 +45,7 @@ function handleRedirect(data) { export function updateCsrfToken() { return ajax("/session/csrf").then(result => { - Discourse.Session.currentProp("csrfToken", result.csrf); + Session.currentProp("csrfToken", result.csrf); }); } @@ -120,7 +121,7 @@ export function ajax() { // note: for bad CSRF we don't loop an extra request right away. // this allows us to eliminate the possibility of having a loop. if (xhr.status === 403 && xhr.responseText === '["BAD CSRF"]') { - Discourse.Session.current().set("csrfToken", null); + Session.current().set("csrfToken", null); } // If it's a parsererror, don't reject @@ -162,7 +163,7 @@ export function ajax() { args.type && args.type.toUpperCase() !== "GET" && url !== Discourse.getURL("/clicks/track") && - !Discourse.Session.currentProp("csrfToken") + !Session.currentProp("csrfToken") ) { promise = new Promise((resolve, reject) => { ajaxObj = updateCsrfToken().then(() => { diff --git a/app/assets/javascripts/discourse/models/login-method.js.es6 b/app/assets/javascripts/discourse/models/login-method.js.es6 index 12a4969768..040e175e74 100644 --- a/app/assets/javascripts/discourse/models/login-method.js.es6 +++ b/app/assets/javascripts/discourse/models/login-method.js.es6 @@ -2,6 +2,7 @@ import discourseComputed from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; import { updateCsrfToken } from "discourse/lib/ajax"; import { Promise } from "rsvp"; +import Session from "discourse/models/session"; const LoginMethod = EmberObject.extend({ @discourseComputed @@ -52,7 +53,7 @@ LoginMethod.reopenClass({ const input = document.createElement("input"); input.setAttribute("name", "authenticity_token"); - input.setAttribute("value", Discourse.Session.currentProp("csrfToken")); + input.setAttribute("value", Session.currentProp("csrfToken")); form.appendChild(input); document.body.appendChild(form); diff --git a/app/assets/javascripts/discourse/models/topic-list.js.es6 b/app/assets/javascripts/discourse/models/topic-list.js.es6 index bec760fd69..b0ec31a834 100644 --- a/app/assets/javascripts/discourse/models/topic-list.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-list.js.es6 @@ -6,6 +6,7 @@ import Model from "discourse/models/model"; import { getOwner } from "discourse-common/lib/get-owner"; import { Promise } from "rsvp"; import Category from "discourse/models/category"; +import Session from "discourse/models/session"; // Whether to show the category badge in topic lists function displayCategoryInList(site, category) { @@ -93,7 +94,7 @@ const TopicList = RestModel.extend({ more_topics_url: result.topic_list.more_topics_url }); - Discourse.Session.currentProp("topicList", this); + Session.currentProp("topicList", this); return this.more_topics_url; } }); @@ -123,7 +124,7 @@ const TopicList = RestModel.extend({ i++; }); - if (storeInSession) Discourse.Session.currentProp("topicList", this); + if (storeInSession) Session.currentProp("topicList", this); }); } }); diff --git a/app/assets/javascripts/discourse/models/topic.js.es6 b/app/assets/javascripts/discourse/models/topic.js.es6 index ad9918b8a9..ca41597cfd 100644 --- a/app/assets/javascripts/discourse/models/topic.js.es6 +++ b/app/assets/javascripts/discourse/models/topic.js.es6 @@ -19,6 +19,7 @@ import { on } from "discourse-common/utils/decorators"; import Category from "discourse/models/category"; +import Session from "discourse/models/session"; export function loadTopicView(topic, args) { const data = _.merge({}, args); @@ -306,7 +307,7 @@ const Topic = RestModel.extend({ // So take what the browser has seen into consideration. @discourseComputed("new_posts", "id") displayNewPosts(newPosts, id) { - const highestSeen = Discourse.Session.currentProp("highestSeenByTopic")[id]; + const highestSeen = Session.currentProp("highestSeenByTopic")[id]; if (highestSeen) { const delta = highestSeen - this.last_read_post_number; if (delta > 0) { diff --git a/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 b/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 index 5d0a576005..34847b8725 100644 --- a/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 @@ -1,6 +1,7 @@ import DiscourseRoute from "discourse/routes/discourse"; import { queryParams } from "discourse/controllers/discovery-sortable"; import { defaultHomepage } from "discourse/lib/utilities"; +import Session from "discourse/models/session"; // A helper to build a topic route for a filter function filterQueryParams(params, defaultParams) { @@ -19,7 +20,7 @@ function filterQueryParams(params, defaultParams) { function findTopicList(store, tracking, filter, filterParams, extras) { extras = extras || {}; return new Promise(function(resolve) { - const session = Discourse.Session.current(); + const session = Session.current(); if (extras.cached) { const cachedList = session.get("topicList"); @@ -62,7 +63,7 @@ function findTopicList(store, tracking, filter, filterParams, extras) { tracking.sync(list, list.filter); tracking.trackIncoming(list.filter); } - Discourse.Session.currentProp("topicList", list); + Session.currentProp("topicList", list); if (list.topic_list && list.topic_list.top_tags) { Discourse.Site.currentProp("top_tags", list.topic_list.top_tags); } diff --git a/app/assets/javascripts/preload-application-data.js.no-module.es6 b/app/assets/javascripts/preload-application-data.js.no-module.es6 index f78ea11367..8dfab7b145 100644 --- a/app/assets/javascripts/preload-application-data.js.no-module.es6 +++ b/app/assets/javascripts/preload-application-data.js.no-module.es6 @@ -27,13 +27,15 @@ I18n.defaultLocale = setupData.defaultLocale; Discourse.start(); Discourse.set("assetVersion", setupData.assetVersion); - Discourse.Session.currentProp( + + let Session = require("discourse/models/session").default; + Session.currentProp( "disableCustomCSS", setupData.disableCustomCss === "true" ); if (setupData.safeMode) { - Discourse.Session.currentProp("safe_mode", setupData.safeMode); + Session.currentProp("safe_mode", setupData.safeMode); } Discourse.HighlightJSPath = setupData.highlightJsPath; diff --git a/test/javascripts/test_helper.js b/test/javascripts/test_helper.js index 1f1f15a0d4..829b4ab5fa 100644 --- a/test/javascripts/test_helper.js +++ b/test/javascripts/test_helper.js @@ -117,7 +117,9 @@ QUnit.testStart(function(ctx) { Discourse.SiteSettings = dup(Discourse.SiteSettingsOriginal); Discourse.BaseUri = ""; Discourse.BaseUrl = "http://localhost:3000"; - Discourse.Session.resetCurrent(); + + let Session = require("discourse/models/session").default; + Session.resetCurrent(); Discourse.User.resetCurrent(); resetSite(Discourse.SiteSettings); From fa71919693ee1066d09737ba09234bd97c974587 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 13:48:18 -0500 Subject: [PATCH 052/408] REFACTOR: Don't transpile `Discourse.Session` --- lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index b0b18d2736..6f25f0823e 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -89,7 +89,6 @@ JS "discourse/routes/discourse", "discourse/models/site", "discourse/models/user", - "discourse/models/session", "discourse/models/model" ] ) From f03edb36bee1842ffabc0b502ee680fa20cad00a Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 14:13:35 -0500 Subject: [PATCH 053/408] REFACTOR: Remove `Discourse.Model` --- .../admin/models/admin-dashboard.js.es6 | 3 +- .../admin/models/backup-status.js.es6 | 3 +- .../javascripts/admin/models/backup.js.es6 | 3 +- .../admin/models/color-scheme-color.js.es6 | 3 +- .../admin/models/color-scheme.js.es6 | 3 +- .../javascripts/admin/models/email-log.js.es6 | 3 +- .../admin/models/email-preview.js.es6 | 4 ++- .../admin/models/email-settings.js.es6 | 4 ++- .../admin/models/incoming-email.js.es6 | 3 +- .../javascripts/admin/models/permalink.js.es6 | 4 ++- .../javascripts/admin/models/report.js.es6 | 2 +- .../admin/models/screened-email.js.es6 | 3 +- .../admin/models/screened-ip-address.js.es6 | 3 +- .../admin/models/screened-url.js.es6 | 3 +- .../admin/models/site-setting.js.es6 | 3 +- .../admin/models/theme-settings.js.es6 | 3 +- .../admin/models/tl3-requirements.js.es6 | 3 +- .../admin/models/version-check.js.es6 | 3 +- .../admin/models/watched-word.js.es6 | 2 +- app/assets/javascripts/application.js | 1 - app/assets/javascripts/discourse.js.es6 | 12 +++++++ .../javascripts/discourse/models/draft.js.es6 | 4 ++- .../discourse/models/input-validation.js.es6 | 6 ++-- .../discourse/models/invite.js.es6 | 2 +- .../discourse/models/live-post-counts.es6 | 4 ++- .../javascripts/discourse/models/model.js.es6 | 19 ---------- .../discourse/models/nav-item.js.es6 | 3 +- .../discourse/models/permission-type.js.es6 | 3 +- .../discourse/models/topic-list.js.es6 | 19 ++++++++-- .../models/topic-tracking-state.js.es6 | 3 +- .../discourse/models/user-action-group.js.es6 | 9 +++-- .../discourse/models/user-badge.js.es6 | 3 +- .../discourse/models/user-posts-stream.js.es6 | 3 +- .../tilt/es6_module_transpiler_template.rb | 1 - test/javascripts/models/model-test.js.es6 | 36 ------------------- 35 files changed, 90 insertions(+), 96 deletions(-) delete mode 100644 app/assets/javascripts/discourse/models/model.js.es6 delete mode 100644 test/javascripts/models/model-test.js.es6 diff --git a/app/assets/javascripts/admin/models/admin-dashboard.js.es6 b/app/assets/javascripts/admin/models/admin-dashboard.js.es6 index 20cdbe2772..756de2cc09 100644 --- a/app/assets/javascripts/admin/models/admin-dashboard.js.es6 +++ b/app/assets/javascripts/admin/models/admin-dashboard.js.es6 @@ -1,4 +1,5 @@ import { ajax } from "discourse/lib/ajax"; +import EmberObject from "@ember/object"; const GENERAL_ATTRIBUTES = [ "updated_at", @@ -6,7 +7,7 @@ const GENERAL_ATTRIBUTES = [ "release_notes_link" ]; -const AdminDashboard = Discourse.Model.extend({}); +const AdminDashboard = EmberObject.extend({}); AdminDashboard.reopenClass({ fetch() { diff --git a/app/assets/javascripts/admin/models/backup-status.js.es6 b/app/assets/javascripts/admin/models/backup-status.js.es6 index b31d1cb176..62c360b532 100644 --- a/app/assets/javascripts/admin/models/backup-status.js.es6 +++ b/app/assets/javascripts/admin/models/backup-status.js.es6 @@ -1,7 +1,8 @@ import discourseComputed from "discourse-common/utils/decorators"; import { not } from "@ember/object/computed"; +import EmberObject from "@ember/object"; -export default Discourse.Model.extend({ +export default EmberObject.extend({ restoreDisabled: not("restoreEnabled"), @discourseComputed("allowRestore", "isOperationRunning") diff --git a/app/assets/javascripts/admin/models/backup.js.es6 b/app/assets/javascripts/admin/models/backup.js.es6 index 7cd151378a..882173300a 100644 --- a/app/assets/javascripts/admin/models/backup.js.es6 +++ b/app/assets/javascripts/admin/models/backup.js.es6 @@ -1,7 +1,8 @@ import { ajax } from "discourse/lib/ajax"; import { extractError } from "discourse/lib/ajax-error"; +import EmberObject from "@ember/object"; -const Backup = Discourse.Model.extend({ +const Backup = EmberObject.extend({ destroy() { return ajax("/admin/backups/" + this.filename, { type: "DELETE" }); }, diff --git a/app/assets/javascripts/admin/models/color-scheme-color.js.es6 b/app/assets/javascripts/admin/models/color-scheme-color.js.es6 index d023295ce5..0d984c77a6 100644 --- a/app/assets/javascripts/admin/models/color-scheme-color.js.es6 +++ b/app/assets/javascripts/admin/models/color-scheme-color.js.es6 @@ -4,8 +4,9 @@ import { on } from "discourse-common/utils/decorators"; import { propertyNotEqual } from "discourse/lib/computed"; +import EmberObject from "@ember/object"; -const ColorSchemeColor = Discourse.Model.extend({ +const ColorSchemeColor = EmberObject.extend({ @on("init") startTrackingChanges() { this.set("originals", { hex: this.hex || "FFFFFF" }); diff --git a/app/assets/javascripts/admin/models/color-scheme.js.es6 b/app/assets/javascripts/admin/models/color-scheme.js.es6 index 5d0550d2e0..8486002386 100644 --- a/app/assets/javascripts/admin/models/color-scheme.js.es6 +++ b/app/assets/javascripts/admin/models/color-scheme.js.es6 @@ -2,8 +2,9 @@ import discourseComputed from "discourse-common/utils/decorators"; import { not } from "@ember/object/computed"; import { ajax } from "discourse/lib/ajax"; import ColorSchemeColor from "admin/models/color-scheme-color"; +import EmberObject from "@ember/object"; -const ColorScheme = Discourse.Model.extend(Ember.Copyable, { +const ColorScheme = EmberObject.extend(Ember.Copyable, { init() { this._super(...arguments); diff --git a/app/assets/javascripts/admin/models/email-log.js.es6 b/app/assets/javascripts/admin/models/email-log.js.es6 index f1ac52ac8d..c2eaaa26e6 100644 --- a/app/assets/javascripts/admin/models/email-log.js.es6 +++ b/app/assets/javascripts/admin/models/email-log.js.es6 @@ -1,7 +1,8 @@ import { ajax } from "discourse/lib/ajax"; import AdminUser from "admin/models/admin-user"; +import EmberObject from "@ember/object"; -const EmailLog = Discourse.Model.extend({}); +const EmailLog = EmberObject.extend({}); EmailLog.reopenClass({ create(attrs) { diff --git a/app/assets/javascripts/admin/models/email-preview.js.es6 b/app/assets/javascripts/admin/models/email-preview.js.es6 index b8585d9080..42b7ab5878 100644 --- a/app/assets/javascripts/admin/models/email-preview.js.es6 +++ b/app/assets/javascripts/admin/models/email-preview.js.es6 @@ -1,5 +1,7 @@ import { ajax } from "discourse/lib/ajax"; -const EmailPreview = Discourse.Model.extend({}); +import EmberObject from "@ember/object"; + +const EmailPreview = EmberObject.extend({}); export function oneWeekAgo() { return moment() diff --git a/app/assets/javascripts/admin/models/email-settings.js.es6 b/app/assets/javascripts/admin/models/email-settings.js.es6 index e1d838463e..1730aae7c9 100644 --- a/app/assets/javascripts/admin/models/email-settings.js.es6 +++ b/app/assets/javascripts/admin/models/email-settings.js.es6 @@ -1,5 +1,7 @@ import { ajax } from "discourse/lib/ajax"; -const EmailSettings = Discourse.Model.extend({}); +import EmberObject from "@ember/object"; + +const EmailSettings = EmberObject.extend({}); EmailSettings.reopenClass({ find: function() { diff --git a/app/assets/javascripts/admin/models/incoming-email.js.es6 b/app/assets/javascripts/admin/models/incoming-email.js.es6 index fd9d68730b..8d46429a1d 100644 --- a/app/assets/javascripts/admin/models/incoming-email.js.es6 +++ b/app/assets/javascripts/admin/models/incoming-email.js.es6 @@ -1,7 +1,8 @@ import { ajax } from "discourse/lib/ajax"; import AdminUser from "admin/models/admin-user"; +import EmberObject from "@ember/object"; -const IncomingEmail = Discourse.Model.extend({}); +const IncomingEmail = EmberObject.extend({}); IncomingEmail.reopenClass({ create(attrs) { diff --git a/app/assets/javascripts/admin/models/permalink.js.es6 b/app/assets/javascripts/admin/models/permalink.js.es6 index 9019bdbc30..b86e931692 100644 --- a/app/assets/javascripts/admin/models/permalink.js.es6 +++ b/app/assets/javascripts/admin/models/permalink.js.es6 @@ -1,5 +1,7 @@ import { ajax } from "discourse/lib/ajax"; -const Permalink = Discourse.Model.extend({ +import EmberObject from "@ember/object"; + +const Permalink = EmberObject.extend({ save: function() { return ajax("/admin/permalinks.json", { type: "POST", diff --git a/app/assets/javascripts/admin/models/report.js.es6 b/app/assets/javascripts/admin/models/report.js.es6 index bb745b1302..91a5f54002 100644 --- a/app/assets/javascripts/admin/models/report.js.es6 +++ b/app/assets/javascripts/admin/models/report.js.es6 @@ -17,7 +17,7 @@ import { renderAvatar } from "discourse/helpers/user-avatar"; // and you want to ensure cache is reset export const SCHEMA_VERSION = 4; -const Report = Discourse.Model.extend({ +const Report = EmberObject.extend({ average: false, percent: false, higher_is_better: true, diff --git a/app/assets/javascripts/admin/models/screened-email.js.es6 b/app/assets/javascripts/admin/models/screened-email.js.es6 index 0d20f2c7d1..ea72510551 100644 --- a/app/assets/javascripts/admin/models/screened-email.js.es6 +++ b/app/assets/javascripts/admin/models/screened-email.js.es6 @@ -1,7 +1,8 @@ import discourseComputed from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; +import EmberObject from "@ember/object"; -const ScreenedEmail = Discourse.Model.extend({ +const ScreenedEmail = EmberObject.extend({ @discourseComputed("action") actionName(action) { return I18n.t("admin.logs.screened_actions." + action); diff --git a/app/assets/javascripts/admin/models/screened-ip-address.js.es6 b/app/assets/javascripts/admin/models/screened-ip-address.js.es6 index e2b60a2108..bfac17d86c 100644 --- a/app/assets/javascripts/admin/models/screened-ip-address.js.es6 +++ b/app/assets/javascripts/admin/models/screened-ip-address.js.es6 @@ -1,8 +1,9 @@ import discourseComputed from "discourse-common/utils/decorators"; import { equal } from "@ember/object/computed"; import { ajax } from "discourse/lib/ajax"; +import EmberObject from "@ember/object"; -const ScreenedIpAddress = Discourse.Model.extend({ +const ScreenedIpAddress = EmberObject.extend({ @discourseComputed("action_name") actionName(actionName) { return I18n.t(`admin.logs.screened_ips.actions.${actionName}`); diff --git a/app/assets/javascripts/admin/models/screened-url.js.es6 b/app/assets/javascripts/admin/models/screened-url.js.es6 index 515ef6e82c..31ea850778 100644 --- a/app/assets/javascripts/admin/models/screened-url.js.es6 +++ b/app/assets/javascripts/admin/models/screened-url.js.es6 @@ -1,7 +1,8 @@ import discourseComputed from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; +import EmberObject from "@ember/object"; -const ScreenedUrl = Discourse.Model.extend({ +const ScreenedUrl = EmberObject.extend({ @discourseComputed("action") actionName(action) { return I18n.t("admin.logs.screened_actions." + action); diff --git a/app/assets/javascripts/admin/models/site-setting.js.es6 b/app/assets/javascripts/admin/models/site-setting.js.es6 index 7760a61114..4edc89a1b9 100644 --- a/app/assets/javascripts/admin/models/site-setting.js.es6 +++ b/app/assets/javascripts/admin/models/site-setting.js.es6 @@ -1,7 +1,8 @@ import { ajax } from "discourse/lib/ajax"; import Setting from "admin/mixins/setting-object"; +import EmberObject from "@ember/object"; -const SiteSetting = Discourse.Model.extend(Setting, {}); +const SiteSetting = EmberObject.extend(Setting, {}); SiteSetting.reopenClass({ findAll() { diff --git a/app/assets/javascripts/admin/models/theme-settings.js.es6 b/app/assets/javascripts/admin/models/theme-settings.js.es6 index ab9e5bf9ce..a823592ad2 100644 --- a/app/assets/javascripts/admin/models/theme-settings.js.es6 +++ b/app/assets/javascripts/admin/models/theme-settings.js.es6 @@ -1,3 +1,4 @@ import Setting from "admin/mixins/setting-object"; +import EmberObject from "@ember/object"; -export default Discourse.Model.extend(Setting, {}); +export default EmberObject.extend(Setting, {}); diff --git a/app/assets/javascripts/admin/models/tl3-requirements.js.es6 b/app/assets/javascripts/admin/models/tl3-requirements.js.es6 index 966410b41c..424aea4f58 100644 --- a/app/assets/javascripts/admin/models/tl3-requirements.js.es6 +++ b/app/assets/javascripts/admin/models/tl3-requirements.js.es6 @@ -1,6 +1,7 @@ import discourseComputed from "discourse-common/utils/decorators"; +import EmberObject from "@ember/object"; -export default Discourse.Model.extend({ +export default EmberObject.extend({ @discourseComputed("days_visited", "time_period") days_visited_percent(daysVisited, timePeriod) { return Math.round((daysVisited * 100) / timePeriod); diff --git a/app/assets/javascripts/admin/models/version-check.js.es6 b/app/assets/javascripts/admin/models/version-check.js.es6 index 54ef9844fe..cc888b2588 100644 --- a/app/assets/javascripts/admin/models/version-check.js.es6 +++ b/app/assets/javascripts/admin/models/version-check.js.es6 @@ -1,7 +1,8 @@ import discourseComputed from "discourse-common/utils/decorators"; import { ajax } from "discourse/lib/ajax"; +import EmberObject from "@ember/object"; -const VersionCheck = Discourse.Model.extend({ +const VersionCheck = EmberObject.extend({ @discourseComputed("updated_at") noCheckPerformed(updatedAt) { return updatedAt === null; diff --git a/app/assets/javascripts/admin/models/watched-word.js.es6 b/app/assets/javascripts/admin/models/watched-word.js.es6 index b9ef7380b6..dac78affe1 100644 --- a/app/assets/javascripts/admin/models/watched-word.js.es6 +++ b/app/assets/javascripts/admin/models/watched-word.js.es6 @@ -1,7 +1,7 @@ import { ajax } from "discourse/lib/ajax"; import EmberObject from "@ember/object"; -const WatchedWord = Discourse.Model.extend({ +const WatchedWord = EmberObject.extend({ save() { return ajax( "/admin/logs/watched_words" + (this.id ? "/" + this.id : "") + ".json", diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index fa5ef28880..10c71ca89b 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -36,7 +36,6 @@ //= require ./discourse/lib/show-modal //= require ./discourse/mixins/scrolling //= require ./discourse/lib/ajax-error -//= require ./discourse/models/model //= require ./discourse/models/result-set //= require ./discourse/models/store //= require ./discourse/models/action-summary diff --git a/app/assets/javascripts/discourse.js.es6 b/app/assets/javascripts/discourse.js.es6 index c56acf9dc8..25d2f74ec8 100644 --- a/app/assets/javascripts/discourse.js.es6 +++ b/app/assets/javascripts/discourse.js.es6 @@ -6,6 +6,8 @@ import { } from "discourse-common/utils/decorators"; import computed from "@ember/object/computed"; import FocusEvent from "discourse-common/mixins/focus-event"; +import EmberObject from "@ember/object"; +import deprecated from "discourse-common/lib/deprecated"; const _pluginCallbacks = []; @@ -206,4 +208,14 @@ const Discourse = Ember.Application.extend(FocusEvent, { }) }).create(); +Object.defineProperty(Discourse, "Model", { + get() { + deprecated("Use an `@ember/object` instead of Discourse.Model", { + since: "2.4.0", + dropFrom: "2.5.0" + }); + return EmberObject; + } +}); + export default Discourse; diff --git a/app/assets/javascripts/discourse/models/draft.js.es6 b/app/assets/javascripts/discourse/models/draft.js.es6 index 62fefef8c7..178c38f94a 100644 --- a/app/assets/javascripts/discourse/models/draft.js.es6 +++ b/app/assets/javascripts/discourse/models/draft.js.es6 @@ -1,5 +1,7 @@ import { ajax } from "discourse/lib/ajax"; -const Draft = Discourse.Model.extend(); +import EmberObject from "@ember/object"; + +const Draft = EmberObject.extend(); Draft.reopenClass({ clear(key, sequence) { diff --git a/app/assets/javascripts/discourse/models/input-validation.js.es6 b/app/assets/javascripts/discourse/models/input-validation.js.es6 index fcbd0a1536..c7120db846 100644 --- a/app/assets/javascripts/discourse/models/input-validation.js.es6 +++ b/app/assets/javascripts/discourse/models/input-validation.js.es6 @@ -1,4 +1,2 @@ -import Model from "discourse/models/model"; - -// A trivial model we use to handle input validation -export default Model.extend(); +import EmberObject from "@ember/object"; +export default EmberObject.extend(); diff --git a/app/assets/javascripts/discourse/models/invite.js.es6 b/app/assets/javascripts/discourse/models/invite.js.es6 index 54baf013f5..dc2d4c8538 100644 --- a/app/assets/javascripts/discourse/models/invite.js.es6 +++ b/app/assets/javascripts/discourse/models/invite.js.es6 @@ -4,7 +4,7 @@ import { popupAjaxError } from "discourse/lib/ajax-error"; import { userPath } from "discourse/lib/url"; import { Promise } from "rsvp"; -const Invite = Discourse.Model.extend({ +const Invite = EmberObject.extend({ rescind() { ajax("/invites", { type: "DELETE", diff --git a/app/assets/javascripts/discourse/models/live-post-counts.es6 b/app/assets/javascripts/discourse/models/live-post-counts.es6 index b28c525f8d..ac5f14d76f 100644 --- a/app/assets/javascripts/discourse/models/live-post-counts.es6 +++ b/app/assets/javascripts/discourse/models/live-post-counts.es6 @@ -1,5 +1,7 @@ import { ajax } from "discourse/lib/ajax"; -const LivePostCounts = Discourse.Model.extend({}); +import EmberObject from "@ember/object"; + +const LivePostCounts = EmberObject.extend({}); LivePostCounts.reopenClass({ find() { diff --git a/app/assets/javascripts/discourse/models/model.js.es6 b/app/assets/javascripts/discourse/models/model.js.es6 deleted file mode 100644 index 5ce0eb2eaf..0000000000 --- a/app/assets/javascripts/discourse/models/model.js.es6 +++ /dev/null @@ -1,19 +0,0 @@ -import { isEmpty } from "@ember/utils"; -import EmberObject from "@ember/object"; -const Model = EmberObject.extend(); - -Model.reopenClass({ - extractByKey(collection, klass) { - const retval = {}; - if (isEmpty(collection)) { - return retval; - } - - collection.forEach(function(item) { - retval[item.id] = klass.create(item); - }); - return retval; - } -}); - -export default Model; diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index 72395681be..4502757aee 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -2,8 +2,9 @@ import discourseComputed from "discourse-common/utils/decorators"; import { toTitleCase } from "discourse/lib/formatter"; import { emojiUnescape } from "discourse/lib/text"; import Category from "discourse/models/category"; +import EmberObject from "@ember/object"; -const NavItem = Discourse.Model.extend({ +const NavItem = EmberObject.extend({ @discourseComputed("categoryName", "name") title(categoryName, name) { const extra = {}; diff --git a/app/assets/javascripts/discourse/models/permission-type.js.es6 b/app/assets/javascripts/discourse/models/permission-type.js.es6 index 94a9af0401..f6ad56c928 100644 --- a/app/assets/javascripts/discourse/models/permission-type.js.es6 +++ b/app/assets/javascripts/discourse/models/permission-type.js.es6 @@ -1,6 +1,7 @@ import discourseComputed from "discourse-common/utils/decorators"; +import EmberObject from "@ember/object"; -const PermissionType = Discourse.Model.extend({ +const PermissionType = EmberObject.extend({ @discourseComputed("id") description(id) { var key = ""; diff --git a/app/assets/javascripts/discourse/models/topic-list.js.es6 b/app/assets/javascripts/discourse/models/topic-list.js.es6 index b0ec31a834..489c926de3 100644 --- a/app/assets/javascripts/discourse/models/topic-list.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-list.js.es6 @@ -2,11 +2,24 @@ import { notEmpty } from "@ember/object/computed"; import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; import RestModel from "discourse/models/rest"; -import Model from "discourse/models/model"; import { getOwner } from "discourse-common/lib/get-owner"; import { Promise } from "rsvp"; import Category from "discourse/models/category"; import Session from "discourse/models/session"; +import { isEmpty } from "@ember/utils"; +import User from "discourse/models/user"; + +function extractByKey(collection, klass) { + const retval = {}; + if (isEmpty(collection)) { + return retval; + } + + collection.forEach(function(item) { + retval[item.id] = klass.create(item); + }); + return retval; +} // Whether to show the category badge in topic lists function displayCategoryInList(site, category) { @@ -139,8 +152,8 @@ TopicList.reopenClass({ // Stitch together our side loaded data const categories = Category.list(), - users = Model.extractByKey(result.users, Discourse.User), - groups = Model.extractByKey(result.primary_groups, EmberObject); + users = extractByKey(result.users, User), + groups = extractByKey(result.primary_groups, EmberObject); return result.topic_list[listKey].map(t => { t.category = categories.findBy("id", t.category_id); diff --git a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 index 4656900990..a47a934170 100644 --- a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 @@ -8,6 +8,7 @@ import { import { defaultHomepage } from "discourse/lib/utilities"; import PreloadStore from "preload-store"; import Category from "discourse/models/category"; +import EmberObject from "@ember/object"; function isNew(topic) { return ( @@ -25,7 +26,7 @@ function isUnread(topic) { ); } -const TopicTrackingState = Discourse.Model.extend({ +const TopicTrackingState = EmberObject.extend({ messageCount: 0, @on("init") diff --git a/app/assets/javascripts/discourse/models/user-action-group.js.es6 b/app/assets/javascripts/discourse/models/user-action-group.js.es6 index b0706cd324..c432cd694c 100644 --- a/app/assets/javascripts/discourse/models/user-action-group.js.es6 +++ b/app/assets/javascripts/discourse/models/user-action-group.js.es6 @@ -1,8 +1,7 @@ -/** - A data model representing a group of UserActions -**/ -export default Discourse.Model.extend({ - push: function(item) { +import EmberObject from "@ember/object"; + +export default EmberObject.extend({ + push(item) { if (!this.items) { this.items = []; } diff --git a/app/assets/javascripts/discourse/models/user-badge.js.es6 b/app/assets/javascripts/discourse/models/user-badge.js.es6 index 3e00072f6e..b6a0dbb7cf 100644 --- a/app/assets/javascripts/discourse/models/user-badge.js.es6 +++ b/app/assets/javascripts/discourse/models/user-badge.js.es6 @@ -3,8 +3,9 @@ import { ajax } from "discourse/lib/ajax"; import Badge from "discourse/models/badge"; import { Promise } from "rsvp"; import Topic from "discourse/models/topic"; +import EmberObject from "@ember/object"; -const UserBadge = Discourse.Model.extend({ +const UserBadge = EmberObject.extend({ @discourseComputed postUrl: function() { if (this.topic_title) { diff --git a/app/assets/javascripts/discourse/models/user-posts-stream.js.es6 b/app/assets/javascripts/discourse/models/user-posts-stream.js.es6 index 6213d98d14..5a71149fb5 100644 --- a/app/assets/javascripts/discourse/models/user-posts-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/user-posts-stream.js.es6 @@ -3,8 +3,9 @@ import { ajax } from "discourse/lib/ajax"; import { url } from "discourse/lib/computed"; import UserAction from "discourse/models/user-action"; import { Promise } from "rsvp"; +import EmberObject from "@ember/object"; -export default Discourse.Model.extend({ +export default EmberObject.extend({ loaded: false, @on("init") diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index 6f25f0823e..c8dcad4970 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -89,7 +89,6 @@ JS "discourse/routes/discourse", "discourse/models/site", "discourse/models/user", - "discourse/models/model" ] ) diff --git a/test/javascripts/models/model-test.js.es6 b/test/javascripts/models/model-test.js.es6 deleted file mode 100644 index f38063d6af..0000000000 --- a/test/javascripts/models/model-test.js.es6 +++ /dev/null @@ -1,36 +0,0 @@ -import EmberObject from "@ember/object"; -import Model from "discourse/models/model"; - -QUnit.module("model:discourse"); - -QUnit.test( - "extractByKey: converts a list of hashes into a hash of instances of specified class, indexed by their ids", - assert => { - var firstObject = { id: "id_1", foo: "foo_1" }; - var secondObject = { id: "id_2", foo: "foo_2" }; - - var actual = Model.extractByKey([firstObject, secondObject], EmberObject); - var expected = { - id_1: EmberObject.create(firstObject), - id_2: EmberObject.create(secondObject) - }; - - assert.ok(_.isEqual(actual, expected)); - } -); - -QUnit.test( - "extractByKey: returns an empty hash if there isn't anything to convert", - assert => { - assert.deepEqual( - Model.extractByKey(), - {}, - "when called without parameters" - ); - assert.deepEqual( - Model.extractByKey([]), - {}, - "when called with an empty array" - ); - } -); From bd92fdeb4d5e0d366d8a40dded5109d7aa74b282 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 14:14:51 -0500 Subject: [PATCH 054/408] FIX: Add deprecation for Discourse.NavItem in case themes are using it --- .../javascripts/discourse/models/nav-item.js.es6 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index 4502757aee..c0cec002ae 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -3,6 +3,7 @@ import { toTitleCase } from "discourse/lib/formatter"; import { emojiUnescape } from "discourse/lib/text"; import Category from "discourse/models/category"; import EmberObject from "@ember/object"; +import deprecated from "discourse-common/lib/deprecated"; const NavItem = EmberObject.extend({ @discourseComputed("categoryName", "name") @@ -255,3 +256,13 @@ export function addNavItem(item) { NavItem.extraNavItems.push(navItem); return navItem; } + +Object.defineProperty(Discourse, "NavItem", { + get() { + deprecated("Import the NavItem object instead of using Discourse.NavItem", { + since: "2.4.0", + dropFrom: "2.5.0" + }); + return NavItem; + } +}); From c0e105fc8ccb9e97e67323ced12afe111080f1fd Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 14:55:36 -0500 Subject: [PATCH 055/408] FIX: Return a deprecation for `Discourse.Session` --- .../javascripts/discourse/models/session.js.es6 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/assets/javascripts/discourse/models/session.js.es6 b/app/assets/javascripts/discourse/models/session.js.es6 index f323540640..9f05080ea9 100644 --- a/app/assets/javascripts/discourse/models/session.js.es6 +++ b/app/assets/javascripts/discourse/models/session.js.es6 @@ -1,5 +1,6 @@ import RestModel from "discourse/models/rest"; import Singleton from "discourse/mixins/singleton"; +import deprecated from "discourse-common/lib/deprecated"; // A data model representing current session data. You can put transient // data here you might want later. It is not stored or serialized anywhere. @@ -10,4 +11,14 @@ const Session = RestModel.extend({ }); Session.reopenClass(Singleton); + +Object.defineProperty(Discourse, "Session", { + get() { + deprecated("Import the Session object instead of using Discourse.Session", { + since: "2.4.0", + dropFrom: "2.5.0" + }); + return Session; + } +}); export default Session; From 920f8c6d752ff25bdd7c4f6736d613e1b68cbcaf Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 8 Nov 2019 15:18:13 -0500 Subject: [PATCH 056/408] REFACTOR: Remove `Discourse.Route` in lieu of importing --- .../javascripts/discourse-common/resolver.js.es6 | 5 +++++ .../javascripts/discourse/models/category.js.es6 | 2 +- .../javascripts/discourse/models/nav-item.js.es6 | 2 +- .../javascripts/discourse/routes/discourse.js.es6 | 11 +++++++++++ .../tilt/es6_module_transpiler_template.rb | 6 ------ 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/discourse-common/resolver.js.es6 b/app/assets/javascripts/discourse-common/resolver.js.es6 index e1507406bb..ba272c6bf1 100644 --- a/app/assets/javascripts/discourse-common/resolver.js.es6 +++ b/app/assets/javascripts/discourse-common/resolver.js.es6 @@ -139,6 +139,11 @@ export function buildResolver(baseName) { }, resolveRoute(parsedName) { + if (parsedName.fullNameWithoutType === "basic") { + return requirejs("discourse/routes/discourse", null, null, true) + .default; + } + return this.customResolve(parsedName) || this._super(parsedName); }, diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 1384837d33..e268330618 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -411,7 +411,7 @@ Category.reopenClass({ Object.defineProperty(Discourse, "Category", { get() { deprecated( - "Import the Category object instead of using Discourse.Category", + "Import the Category class instead of using Discourse.Category", { since: "2.4.0", dropFrom: "2.5.0" } ); return Category; diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index c0cec002ae..f6c598d9df 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -259,7 +259,7 @@ export function addNavItem(item) { Object.defineProperty(Discourse, "NavItem", { get() { - deprecated("Import the NavItem object instead of using Discourse.NavItem", { + deprecated("Import the NavItem class instead of using Discourse.NavItem", { since: "2.4.0", dropFrom: "2.5.0" }); diff --git a/app/assets/javascripts/discourse/routes/discourse.js.es6 b/app/assets/javascripts/discourse/routes/discourse.js.es6 index 2329168593..980e986cd9 100644 --- a/app/assets/javascripts/discourse/routes/discourse.js.es6 +++ b/app/assets/javascripts/discourse/routes/discourse.js.es6 @@ -2,6 +2,7 @@ import { once } from "@ember/runloop"; import Composer from "discourse/models/composer"; import { getOwner } from "discourse-common/lib/get-owner"; import Route from "@ember/routing/route"; +import deprecated from "discourse-common/lib/deprecated"; const DiscourseRoute = Route.extend({ showFooter: false, @@ -107,4 +108,14 @@ const DiscourseRoute = Route.extend({ } }); +Object.defineProperty(Discourse, "Route", { + get() { + deprecated("Import the Route class instead of using Discourse.Route", { + since: "2.4.0", + dropFrom: "2.5.0" + }); + return Route; + } +}); + export default DiscourseRoute; diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index c8dcad4970..d61cebfbf0 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -86,7 +86,6 @@ JS @@whitelisted ||= Set.new( [ - "discourse/routes/discourse", "discourse/models/site", "discourse/models/user", ] @@ -151,11 +150,6 @@ JS if require_name !~ /\-test$/ && require_name !~ /^discourse\/plugins\// result = "#{class_name}#{type.classify}" - # HAX - result = "Controller" if result == "ControllerController" - result = "Route" if result == "DiscourseRoute" - result = "View" if result == "ViewView" - result = result.gsub(/Mixin$/, '') result = result.gsub(/Model$/, '') From 63bd07492ea07a999d8359409a0ea4000bce364f Mon Sep 17 00:00:00 2001 From: Jay Pfaffman Date: Fri, 8 Nov 2019 15:34:15 -0800 Subject: [PATCH 057/408] FIX: Update api_key rake task for recent changes New usage: ``` rake api_key:get_or_create_master["Onboarding Key"] ``` --- lib/tasks/api.rake | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/tasks/api.rake b/lib/tasks/api.rake index 8bff7dd5a2..bf8c37ecd3 100644 --- a/lib/tasks/api.rake +++ b/lib/tasks/api.rake @@ -1,8 +1,9 @@ # frozen_string_literal: true -desc "generate api key if missing, return existing if already there" -task "api_key:get" => :environment do - api_key = ApiKey.create_master_key +desc "find or generate a master api key with given description" +task "api_key:get_or_create_master", [:description] => :environment do |task, args| + raise "Supply a description for the key" if !args[:description] + api_key = ApiKey.find_or_create_by!(description: args[:description], revoked_at: nil, user_id: nil) - puts api_key.key + puts api_key.key end From 15f6f57cdcebc7583ddb5a311174d10a7300ae4a Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Fri, 8 Nov 2019 17:28:48 -0700 Subject: [PATCH 058/408] DEV: Add update message for an outdated mail-receiver Previous versions of the mail-receiver used query based api credentials, if we detect this we will show a message in the admin panel to update the mail receiver. --- app/models/admin_dashboard_data.rb | 3 ++- config/locales/server.en.yml | 1 + lib/auth/default_current_user_provider.rb | 11 +++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/models/admin_dashboard_data.rb b/app/models/admin_dashboard_data.rb index 0ef9960d1b..288158eb32 100644 --- a/app/models/admin_dashboard_data.rb +++ b/app/models/admin_dashboard_data.rb @@ -85,7 +85,8 @@ class AdminDashboardData 'dashboard.bad_favicon_url', 'dashboard.poll_pop3_timeout', 'dashboard.poll_pop3_auth_error', - 'dashboard.deprecated_api_usage' + 'dashboard.deprecated_api_usage', + 'dashboard.update_mail_receiver' ] add_problem_check :rails_env_check, :host_names_check, :force_https_check, diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index dac88f2d93..6d3cefe305 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1339,6 +1339,7 @@ en: missing_mailgun_api_key: "The server is configured to send emails via Mailgun but you haven't provided an API key used to verify the webhook messages." bad_favicon_url: "The favicon is failing to load. Check your favicon setting in Site Settings." deprecated_api_usage: "We detected an API request using a deprecated authentication method. Please update it to use header based auth." + update_mail_receiver: "We detected an outdated version of mail-receiver. Please ssh into this server and run `/var/discourse/launcher rebuild mail-receiver`." poll_pop3_timeout: "Connection to the POP3 server is timing out. Incoming email could not be retrieved. Please check your POP3 settings and service provider." poll_pop3_auth_error: "Connection to the POP3 server is failing with an authentication error. Please check your POP3 settings." force_https_warning: "Your website is using SSL. But `force_https` is not yet enabled in your site settings." diff --git a/lib/auth/default_current_user_provider.rb b/lib/auth/default_current_user_provider.rb index 353555880e..3f405233cc 100644 --- a/lib/auth/default_current_user_provider.rb +++ b/lib/auth/default_current_user_provider.rb @@ -283,9 +283,16 @@ class Auth::DefaultCurrentUserProvider def lookup_api_user(api_key_value, request) if api_key = ApiKey.active.where(key: api_key_value).includes(:user).first api_username = header_api_key? ? @env[HEADER_API_USERNAME] : request[API_USERNAME] + + # Check for deprecated api auth if !header_api_key? - # Notify admins of deprecated auth method - AdminDashboardData.add_problem_message('dashboard.deprecated_api_usage', 1.day) + if request.path == "/admin/email/handle_mail" + # Notify admins that the mail receiver is still using query auth and to update + AdminDashboardData.add_problem_message('dashboard.update_mail_receiver', 1.day) + else + # Notify admins of deprecated auth method + AdminDashboardData.add_problem_message('dashboard.deprecated_api_usage', 1.day) + end end if api_key.allowed_ips.present? && !api_key.allowed_ips.any? { |ip| ip.include?(request.ip) } From b68eab2b46391406695995a045428bdde6fb7577 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 11 Nov 2019 09:36:40 +1100 Subject: [PATCH 059/408] DEV: remove deprecated syntax Ruby 2.7 is going to deprecate "Magic Proc Init". This feature is enormously magical anyway and the new code is far easier to comprehend. --- lib/mini_sql_multisite_connection.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/mini_sql_multisite_connection.rb b/lib/mini_sql_multisite_connection.rb index c08d3813a9..a1cd6a6897 100644 --- a/lib/mini_sql_multisite_connection.rb +++ b/lib/mini_sql_multisite_connection.rb @@ -26,8 +26,9 @@ class MiniSqlMultisiteConnection < MiniSql::Postgres::Connection end class AfterCommitWrapper - def initialize - @callback = Proc.new + def initialize(&blk) + raise ArgumentError, "tried to create a Proc without a block in AfterCommitWrapper" if !blk + @callback = blk end def committed!(*) From bf0ef73286ce3d956a970dfa222b56b972014a18 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 11 Nov 2019 10:23:14 +1100 Subject: [PATCH 060/408] DEV: correct rake task used to grab admin key We amended it so "api_key:get" is no longer supported and instead we are more explicit. This matches that change and fixes the bench. --- script/bench.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/bench.rb b/script/bench.rb index b847db2f3c..44645f5549 100644 --- a/script/bench.rb +++ b/script/bench.rb @@ -184,7 +184,7 @@ puts "Populating Profile DB" run("bundle exec ruby script/profile_db_generator.rb") puts "Getting api key" -api_key = `bundle exec rake api_key:get`.split("\n")[-1] +api_key = `bundle exec rake api_key:get_or_create_master[bench]`.split("\n")[-1] def bench(path, name) puts "Running apache bench warmup" From 91daafc674a90221b355eb1930c1f47df2658cc9 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 11 Nov 2019 11:18:12 +1100 Subject: [PATCH 061/408] DEV: correct implementation of expiry api Previously we were always hard-coding expiry, this allows the secure session to correctly handle custom expiry times Also adds a ttl method for looking up time to live --- lib/secure_session.rb | 6 +++++- spec/components/secure_session_spec.rb | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/secure_session.rb b/lib/secure_session.rb index 6b8efe57c1..667034361e 100644 --- a/lib/secure_session.rb +++ b/lib/secure_session.rb @@ -16,10 +16,14 @@ class SecureSession def set(key, val, expires: nil) expires ||= SecureSession.expiry - $redis.setex(prefixed_key(key), SecureSession.expiry.to_i, val.to_s) + $redis.setex(prefixed_key(key), expires.to_i, val.to_s) true end + def ttl(key) + $redis.ttl(prefixed_key(key)) + end + def [](key) $redis.get(prefixed_key(key)) end diff --git a/spec/components/secure_session_spec.rb b/spec/components/secure_session_spec.rb index 1e2aad5060..59910ff5a0 100644 --- a/spec/components/secure_session_spec.rb +++ b/spec/components/secure_session_spec.rb @@ -14,4 +14,16 @@ describe SecureSession do s["hello"] = nil expect(s["hello"]).to eq(nil) end + + it "can override expiry" do + s = SecureSession.new("abc") + key = SecureRandom.hex + + s.set(key, "test2", expires: 5.minutes) + expect(s.ttl(key)).to be_within(1.second).of (5.minutes) + + key = SecureRandom.hex + s.set(key, "test2") + expect(s.ttl(key)).to be_within(1.second).of (SecureSession.expiry) + end end From a2d6169a5e1c805062e2aae553dd1620a83b3699 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 11 Nov 2019 15:36:16 +1100 Subject: [PATCH 062/408] DEV: upgrade mini_racer This is done to fix a compatibility issue with Ruby 2.7, it ensures we clean up fds for a pipe we use to track timeouts in mini racer. --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7201a23254..e49202d9f6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -188,7 +188,7 @@ GEM method_source (0.9.2) mini_mime (1.0.2) mini_portile2 (2.4.0) - mini_racer (0.2.6) + mini_racer (0.2.8) libv8 (>= 6.9.411) mini_scheduler (0.12.2) sidekiq @@ -548,4 +548,4 @@ DEPENDENCIES yaml-lint BUNDLED WITH - 1.17.3 + 2.1.0.pre.2 From 0c0192e7dabf6959c4248fa0454da206ac9c780f Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 11 Nov 2019 16:04:18 +1100 Subject: [PATCH 063/408] DEV: disable all upload recovery specs These specs are inherently fragile when they are run in a concurrent mode in CI. One process will create an upload, another will destroy the upload on disk at the same time. We need a new safe mechanism here. --- spec/lib/upload_recovery_spec.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spec/lib/upload_recovery_spec.rb b/spec/lib/upload_recovery_spec.rb index f248d009f5..3d8b840b1f 100644 --- a/spec/lib/upload_recovery_spec.rb +++ b/spec/lib/upload_recovery_spec.rb @@ -49,7 +49,7 @@ RSpec.describe UploadRecovery do describe '#recover' do describe 'when given an invalid sha1' do - it 'should not do anything' do + xit 'should not do anything' do upload_recovery.expects(:recover_from_local).never post.update!( @@ -66,7 +66,7 @@ RSpec.describe UploadRecovery do end end - it 'accepts a custom ActiveRecord relation' do + xit 'accepts a custom ActiveRecord relation' do post.update!(updated_at: 2.days.ago) upload.destroy! @@ -85,7 +85,7 @@ RSpec.describe UploadRecovery do ).tap(&:link_post_uploads) end - it 'should recover the attachment' do + xit 'should recover the attachment' do expect do upload2.destroy! end.to change { post.reload.uploads.count }.from(1).to(0) @@ -99,7 +99,7 @@ RSpec.describe UploadRecovery do end end - it 'should recover uploads and attachments' do + xit 'should recover uploads and attachments' do stub_request(:get, "http://test.localhost#{upload.url}") .to_return(status: 200) @@ -125,7 +125,7 @@ RSpec.describe UploadRecovery do ).tap(&:link_post_uploads) end - it 'should recover the upload' do + xit 'should recover the upload' do stub_request(:get, "http://test.localhost#{upload.url}") .to_return(status: 200) @@ -152,7 +152,7 @@ RSpec.describe UploadRecovery do ).tap(&:link_post_uploads) end - it 'should recover the upload' do + xit 'should recover the upload' do stub_request(:get, "http://test.localhost#{upload.url}") .to_return(status: 200) @@ -179,7 +179,7 @@ RSpec.describe UploadRecovery do ).tap(&:link_post_uploads) end - it 'should recover the upload' do + xit 'should recover the upload' do stub_request(:get, "http://test.localhost#{upload.url}") .to_return(status: 200) From 12bc6ce8c139aa4847a99ec59137fe592893eba9 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Mon, 11 Nov 2019 18:18:33 +0530 Subject: [PATCH 064/408] FIX: remove magic numbers in notification levels. ba5b78a34874d393440e7eee0aee07f0b213c4ae --- app/models/category_user.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/category_user.rb b/app/models/category_user.rb index d2dd1a4d36..6b024d5700 100644 --- a/app/models/category_user.rb +++ b/app/models/category_user.rb @@ -207,9 +207,9 @@ class CategoryUser < ActiveRecord::Base SiteSetting.default_categories_watching.split("|"), SiteSetting.default_categories_tracking.split("|"), SiteSetting.default_categories_watching_first_post.split("|"), - ].flatten.map { |id| [id.to_i, 1] } + ].flatten.map { |id| [id.to_i, notification_levels[:regular]] } - notification_levels += SiteSetting.default_categories_muted.split("|").map { |id| [id.to_i, 0] } + notification_levels += SiteSetting.default_categories_muted.split("|").map { |id| [id.to_i, notification_levels[:muted]] } else notification_levels = CategoryUser.where(user: guardian.user).pluck(:category_id, :notification_level) end From 6e3601469cb811ecc9e7971979b24664528295ca Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Mon, 11 Nov 2019 18:57:14 +0530 Subject: [PATCH 065/408] FIX: use correct class variable to get notification levels. --- app/models/category_user.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/category_user.rb b/app/models/category_user.rb index 6b024d5700..1d9b2bfe22 100644 --- a/app/models/category_user.rb +++ b/app/models/category_user.rb @@ -207,9 +207,9 @@ class CategoryUser < ActiveRecord::Base SiteSetting.default_categories_watching.split("|"), SiteSetting.default_categories_tracking.split("|"), SiteSetting.default_categories_watching_first_post.split("|"), - ].flatten.map { |id| [id.to_i, notification_levels[:regular]] } + ].flatten.map { |id| [id.to_i, self.notification_levels[:regular]] } - notification_levels += SiteSetting.default_categories_muted.split("|").map { |id| [id.to_i, notification_levels[:muted]] } + notification_levels += SiteSetting.default_categories_muted.split("|").map { |id| [id.to_i, self.notification_levels[:muted]] } else notification_levels = CategoryUser.where(user: guardian.user).pluck(:category_id, :notification_level) end From 2a6713c2ba317a245277b62b67babf8a2d2590e6 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 11 Nov 2019 09:22:57 -0500 Subject: [PATCH 066/408] FIX: Was using a native browser Promise instead of RSVP --- app/assets/javascripts/discourse/routes/build-topic-route.js.es6 | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 b/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 index 34847b8725..d99b190120 100644 --- a/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 @@ -2,6 +2,7 @@ import DiscourseRoute from "discourse/routes/discourse"; import { queryParams } from "discourse/controllers/discovery-sortable"; import { defaultHomepage } from "discourse/lib/utilities"; import Session from "discourse/models/session"; +import { Promise } from "rsvp"; // A helper to build a topic route for a filter function filterQueryParams(params, defaultParams) { From 0c8ae1e8492f386caa464b4de5f53b19e0d43edb Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 11 Nov 2019 09:25:33 -0500 Subject: [PATCH 067/408] FIX: More missing RSVP imports --- app/assets/javascripts/discourse/models/static-page.js.es6 | 2 ++ app/assets/javascripts/discourse/models/topic.js.es6 | 1 + 2 files changed, 3 insertions(+) diff --git a/app/assets/javascripts/discourse/models/static-page.js.es6 b/app/assets/javascripts/discourse/models/static-page.js.es6 index 57bb3cc2df..7ec19c23b7 100644 --- a/app/assets/javascripts/discourse/models/static-page.js.es6 +++ b/app/assets/javascripts/discourse/models/static-page.js.es6 @@ -1,5 +1,7 @@ import EmberObject from "@ember/object"; import { ajax } from "discourse/lib/ajax"; +import { Promise } from "rsvp"; + const StaticPage = EmberObject.extend(); StaticPage.reopenClass({ diff --git a/app/assets/javascripts/discourse/models/topic.js.es6 b/app/assets/javascripts/discourse/models/topic.js.es6 index ca41597cfd..39e6464bfa 100644 --- a/app/assets/javascripts/discourse/models/topic.js.es6 +++ b/app/assets/javascripts/discourse/models/topic.js.es6 @@ -20,6 +20,7 @@ import { } from "discourse-common/utils/decorators"; import Category from "discourse/models/category"; import Session from "discourse/models/session"; +import { Promise } from "rsvp"; export function loadTopicView(topic, args) { const data = _.merge({}, args); From c04369ed8f42df992bff8b60049f25530c4398fa Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Mon, 11 Nov 2019 15:37:13 +0100 Subject: [PATCH 068/408] DEV: Revert to Bundler 1.17 Follow-up to a2d6169a5e1c805062e2aae553dd1620a83b3699 --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e49202d9f6..6abc17fb50 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -548,4 +548,4 @@ DEPENDENCIES yaml-lint BUNDLED WITH - 2.1.0.pre.2 + 1.17.3 From 1bbb9b30fc1f69e0cb16698a8b20acb9c6f2838b Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Fri, 8 Nov 2019 13:00:19 -0600 Subject: [PATCH 069/408] DEV: Import isNone for @ember/utils --- app/assets/javascripts/discourse-loader.js | 3 +++ .../javascripts/discourse/models/invite.js.es6 | 5 +++-- .../routes/build-category-route.js.es6 | 3 ++- .../select-kit/components/category-row.js.es6 | 5 +++-- .../future-date-input-selector/mixin.js.es6 | 3 ++- .../select-kit/mixins/plugin-api.js.es6 | 17 ++++++++--------- 6 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index 2f7b0b9b28..5016efe395 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -104,6 +104,9 @@ var define, requirejs; }, "@ember/error": { default: Ember.error + }, + "@ember/utils": { + isNone: Ember.isNone } }; } diff --git a/app/assets/javascripts/discourse/models/invite.js.es6 b/app/assets/javascripts/discourse/models/invite.js.es6 index dc2d4c8538..dc41ac7776 100644 --- a/app/assets/javascripts/discourse/models/invite.js.es6 +++ b/app/assets/javascripts/discourse/models/invite.js.es6 @@ -3,6 +3,7 @@ import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { userPath } from "discourse/lib/url"; import { Promise } from "rsvp"; +import { isNone } from "@ember/utils"; const Invite = EmberObject.extend({ rescind() { @@ -36,8 +37,8 @@ Invite.reopenClass({ if (!user) Promise.resolve(); const data = {}; - if (!Ember.isNone(filter)) data.filter = filter; - if (!Ember.isNone(search)) data.search = search; + if (!isNone(filter)) data.filter = filter; + if (!isNone(search)) data.search = search; data.offset = offset || 0; return ajax(userPath(`${user.username_lower}/invited.json`), { diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index 064f02a494..b7dceff089 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -9,6 +9,7 @@ import PermissionType from "discourse/models/permission-type"; import CategoryList from "discourse/models/category-list"; import Category from "discourse/models/category"; import { Promise, all } from "rsvp"; +import { isNone } from "@ember/utils"; // A helper function to create a category route with parameters export default (filterArg, params) => { @@ -79,7 +80,7 @@ export default (filterArg, params) => { _createSubcategoryList(category) { this._categoryList = null; if ( - Ember.isNone(category.get("parentCategory")) && + isNone(category.get("parentCategory")) && category.get("show_subcategory_list") ) { return CategoryList.listForParent(this.store, category).then( diff --git a/app/assets/javascripts/select-kit/components/category-row.js.es6 b/app/assets/javascripts/select-kit/components/category-row.js.es6 index e8963e96b6..dee781b294 100644 --- a/app/assets/javascripts/select-kit/components/category-row.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-row.js.es6 @@ -4,6 +4,7 @@ import SelectKitRowComponent from "select-kit/components/select-kit/select-kit-r import discourseComputed from "discourse-common/utils/decorators"; import Category from "discourse/models/category"; import { categoryBadgeHTML } from "discourse/helpers/category-link"; +import { isNone } from "@ember/utils"; export default SelectKitRowComponent.extend({ layoutName: "select-kit/templates/components/category-row", @@ -15,7 +16,7 @@ export default SelectKitRowComponent.extend({ @discourseComputed("options.displayCategoryDescription") displayCategoryDescription(displayCategoryDescription) { - if (Ember.isNone(displayCategoryDescription)) { + if (isNone(displayCategoryDescription)) { return true; } @@ -63,7 +64,7 @@ export default SelectKitRowComponent.extend({ @discourseComputed("parentCategoryid") hasParentCategory(parentCategoryid) { - return !Ember.isNone(parentCategoryid); + return !isNone(parentCategoryid); }, @discourseComputed("category") diff --git a/app/assets/javascripts/select-kit/components/future-date-input-selector/mixin.js.es6 b/app/assets/javascripts/select-kit/components/future-date-input-selector/mixin.js.es6 index dd111348de..9aa6cf56fe 100644 --- a/app/assets/javascripts/select-kit/components/future-date-input-selector/mixin.js.es6 +++ b/app/assets/javascripts/select-kit/components/future-date-input-selector/mixin.js.es6 @@ -1,6 +1,7 @@ import { CLOSE_STATUS_TYPE } from "discourse/controllers/edit-topic-timer"; import { timeframeDetails } from "select-kit/components/future-date-input-selector"; import Mixin from "@ember/object/mixin"; +import { isNone } from "@ember/utils"; export default Mixin.create({ _computeIconsForValue(value) { @@ -14,7 +15,7 @@ export default Mixin.create({ }, _computeDatetimeForValue(value) { - if (Ember.isNone(value)) { + if (isNone(value)) { return null; } diff --git a/app/assets/javascripts/select-kit/mixins/plugin-api.js.es6 b/app/assets/javascripts/select-kit/mixins/plugin-api.js.es6 index 68dd1c8839..9386c595cf 100644 --- a/app/assets/javascripts/select-kit/mixins/plugin-api.js.es6 +++ b/app/assets/javascripts/select-kit/mixins/plugin-api.js.es6 @@ -1,8 +1,9 @@ import Mixin from "@ember/object/mixin"; +import { isNone } from "@ember/utils"; let _appendContentCallbacks = {}; function appendContent(pluginApiIdentifiers, contentFunction) { - if (Ember.isNone(_appendContentCallbacks[pluginApiIdentifiers])) { + if (isNone(_appendContentCallbacks[pluginApiIdentifiers])) { _appendContentCallbacks[pluginApiIdentifiers] = []; } @@ -11,7 +12,7 @@ function appendContent(pluginApiIdentifiers, contentFunction) { let _prependContentCallbacks = {}; function prependContent(pluginApiIdentifiers, contentFunction) { - if (Ember.isNone(_prependContentCallbacks[pluginApiIdentifiers])) { + if (isNone(_prependContentCallbacks[pluginApiIdentifiers])) { _prependContentCallbacks[pluginApiIdentifiers] = []; } @@ -20,7 +21,7 @@ function prependContent(pluginApiIdentifiers, contentFunction) { let _modifyContentCallbacks = {}; function modifyContent(pluginApiIdentifiers, contentFunction) { - if (Ember.isNone(_modifyContentCallbacks[pluginApiIdentifiers])) { + if (isNone(_modifyContentCallbacks[pluginApiIdentifiers])) { _modifyContentCallbacks[pluginApiIdentifiers] = []; } @@ -29,9 +30,7 @@ function modifyContent(pluginApiIdentifiers, contentFunction) { let _modifyHeaderComputedContentCallbacks = {}; function modifyHeaderComputedContent(pluginApiIdentifiers, contentFunction) { - if ( - Ember.isNone(_modifyHeaderComputedContentCallbacks[pluginApiIdentifiers]) - ) { + if (isNone(_modifyHeaderComputedContentCallbacks[pluginApiIdentifiers])) { _modifyHeaderComputedContentCallbacks[pluginApiIdentifiers] = []; } @@ -42,7 +41,7 @@ function modifyHeaderComputedContent(pluginApiIdentifiers, contentFunction) { let _modifyCollectionHeaderCallbacks = {}; function modifyCollectionHeader(pluginApiIdentifiers, contentFunction) { - if (Ember.isNone(_modifyCollectionHeaderCallbacks[pluginApiIdentifiers])) { + if (isNone(_modifyCollectionHeaderCallbacks[pluginApiIdentifiers])) { _modifyCollectionHeaderCallbacks[pluginApiIdentifiers] = []; } @@ -51,7 +50,7 @@ function modifyCollectionHeader(pluginApiIdentifiers, contentFunction) { let _onSelectNoneCallbacks = {}; function onSelectNone(pluginApiIdentifiers, mutationFunction) { - if (Ember.isNone(_onSelectNoneCallbacks[pluginApiIdentifiers])) { + if (isNone(_onSelectNoneCallbacks[pluginApiIdentifiers])) { _onSelectNoneCallbacks[pluginApiIdentifiers] = []; } @@ -60,7 +59,7 @@ function onSelectNone(pluginApiIdentifiers, mutationFunction) { let _onSelectCallbacks = {}; function onSelect(pluginApiIdentifiers, mutationFunction) { - if (Ember.isNone(_onSelectCallbacks[pluginApiIdentifiers])) { + if (isNone(_onSelectCallbacks[pluginApiIdentifiers])) { _onSelectCallbacks[pluginApiIdentifiers] = []; } From 20266325fce0accd503aee0563c47adb31430c5d Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Fri, 8 Nov 2019 13:03:22 -0600 Subject: [PATCH 070/408] combined import definitions in discourse-loader --- app/assets/javascripts/discourse-loader.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index 5016efe395..876aca44ce 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -78,7 +78,8 @@ var define, requirejs; inject: Ember.inject.service }, "@ember/utils": { - isEmpty: Ember.isEmpty + isEmpty: Ember.isEmpty, + isNone: Ember.isNone }, rsvp: { default: Ember.RSVP, @@ -104,9 +105,6 @@ var define, requirejs; }, "@ember/error": { default: Ember.error - }, - "@ember/utils": { - isNone: Ember.isNone } }; } From 544a1379b6ef2d72af545c0aee07b7d46111dd88 Mon Sep 17 00:00:00 2001 From: Simon Cossar Date: Mon, 11 Nov 2019 11:03:57 -0500 Subject: [PATCH 071/408] Reference posts table for deleted_at and user_id (#8332) --- lib/tasks/import.rake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/tasks/import.rake b/lib/tasks/import.rake index ca8fdc9486..d10eea7f03 100644 --- a/lib/tasks/import.rake +++ b/lib/tasks/import.rake @@ -391,8 +391,8 @@ def update_users , MAX(p.created_at) max_created_at FROM posts p JOIN topics t ON t.id = p.topic_id AND t.archetype <> ? - WHERE deleted_at IS NULL - GROUP BY user_id + WHERE p.deleted_at IS NULL + GROUP BY p.user_id ) UPDATE users SET first_seen_at = X.min_created_at From 6672dcc985a56a8b357a9fa3590311cecbcff75f Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Mon, 11 Nov 2019 18:42:08 +0200 Subject: [PATCH 072/408] FIX: Keep emoji images in group bio excerpt (#8329) --- app/serializers/basic_group_serializer.rb | 2 +- spec/serializers/basic_group_serializer_spec.rb | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/serializers/basic_group_serializer.rb b/app/serializers/basic_group_serializer.rb index d3c012194a..df250920d8 100644 --- a/app/serializers/basic_group_serializer.rb +++ b/app/serializers/basic_group_serializer.rb @@ -45,7 +45,7 @@ class BasicGroupSerializer < ApplicationSerializer end def bio_excerpt - PrettyText.excerpt(object.bio_cooked, 110) if object.bio_cooked.present? + PrettyText.excerpt(object.bio_cooked, 110, keep_emoji_images: true) if object.bio_cooked.present? end def include_incoming_email? diff --git a/spec/serializers/basic_group_serializer_spec.rb b/spec/serializers/basic_group_serializer_spec.rb index 3dace7fcf4..b905f5d4a1 100644 --- a/spec/serializers/basic_group_serializer_spec.rb +++ b/spec/serializers/basic_group_serializer_spec.rb @@ -26,7 +26,7 @@ describe BasicGroupSerializer do end describe '#bio_raw' do - fab!(:group) { Fabricate(:group, bio_raw: 'testing') } + fab!(:group) { Fabricate(:group, bio_raw: 'testing :slightly_smiling_face:') } subject do described_class.new(group, scope: guardian, root: false, owner_group_ids: [group.id]) @@ -34,7 +34,8 @@ describe BasicGroupSerializer do describe 'group owner' do it 'should include bio_raw' do - expect(subject.as_json[:bio_raw]).to eq('testing') + expect(subject.as_json[:bio_raw]).to eq('testing :slightly_smiling_face:') + expect(subject.as_json[:bio_excerpt]).to start_with('testing Date: Mon, 11 Nov 2019 18:42:45 +0200 Subject: [PATCH 073/408] FIX: Do not skip some emails in user search (#8317) It used to skip the email addresses containing the plus sign. --- app/assets/javascripts/discourse/lib/user-search.js.es6 | 2 +- test/javascripts/lib/user-search-test.js.es6 | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/user-search.js.es6 b/app/assets/javascripts/discourse/lib/user-search.js.es6 index 63fbb2da71..b1a75ae34e 100644 --- a/app/assets/javascripts/discourse/lib/user-search.js.es6 +++ b/app/assets/javascripts/discourse/lib/user-search.js.es6 @@ -136,7 +136,7 @@ function organizeResults(r, options) { // will not find me, which is a reasonable compromise // // we also ignore if we notice a double space or a string that is only a space -const ignoreRegex = /([\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\/:;<=>?\[\]^`{|}~])|\s\s|^\s$/; +const ignoreRegex = /([\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*,\/:;<=>?\[\]^`{|}~])|\s\s|^\s$|^[^+]*\+[^@]*$/; function skipSearch(term, allowEmails) { if (term.indexOf("@") > -1 && !allowEmails) { diff --git a/test/javascripts/lib/user-search-test.js.es6 b/test/javascripts/lib/user-search-test.js.es6 index 28a298c0fb..c93a87564d 100644 --- a/test/javascripts/lib/user-search-test.js.es6 +++ b/test/javascripts/lib/user-search-test.js.es6 @@ -169,6 +169,9 @@ QUnit.test("it skips a search depending on punctuations", async assert => { // 6 + email assert.equal(results.length, 7); + results = await userSearch({ term: "sam+test@sam.com", allowEmails: true }); + assert.equal(results.length, 7); + results = await userSearch({ term: "sam@sam.com" }); assert.equal(results.length, 0); From e79cec9fc72feac0b4585b187c5e85b20d6cbcee Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Mon, 11 Nov 2019 13:18:10 +0000 Subject: [PATCH 074/408] DEV: Remove handling of category top menu items Support for these kinds of navigation items was dropped in 88f52514, but the code for handling these menu items was never removed. --- .../discourse/models/nav-item.js.es6 | 62 +++++-------------- lib/discourse.rb | 4 +- .../javascripts/fixtures/site-fixtures.js.es6 | 2 - test/javascripts/helpers/site.js.es6 | 3 +- test/javascripts/models/nav-item-test.js.es6 | 4 +- 5 files changed, 18 insertions(+), 57 deletions(-) diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index f6c598d9df..ded21f1291 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -1,25 +1,19 @@ import discourseComputed from "discourse-common/utils/decorators"; -import { toTitleCase } from "discourse/lib/formatter"; import { emojiUnescape } from "discourse/lib/text"; import Category from "discourse/models/category"; import EmberObject from "@ember/object"; import deprecated from "discourse-common/lib/deprecated"; const NavItem = EmberObject.extend({ - @discourseComputed("categoryName", "name") - title(categoryName, name) { + @discourseComputed("name") + title(name) { const extra = {}; - if (categoryName) { - name = "category"; - extra.categoryName = categoryName; - } - return I18n.t("filters." + name.replace("/", ".") + ".help", extra); }, - @discourseComputed("categoryName", "name", "count") - displayName(categoryName, name, count) { + @discourseComputed("name", "count") + displayName(name, count) { count = count || 0; if ( @@ -32,35 +26,11 @@ const NavItem = EmberObject.extend({ let extra = { count: count }; const titleKey = count === 0 ? ".title" : ".title_with_count"; - if (categoryName) { - name = "category"; - extra.categoryName = toTitleCase(categoryName); - } - return emojiUnescape( I18n.t(`filters.${name.replace("/", ".") + titleKey}`, extra) ); }, - @discourseComputed("name") - categoryName(name) { - const split = name.split("/"); - return split[0] === "category" ? split[1] : null; - }, - - @discourseComputed("name") - categorySlug(name) { - const split = name.split("/"); - if (split[0] === "category" && split[1]) { - const cat = Discourse.Site.current().categories.findBy( - "nameLower", - split[1].toLowerCase() - ); - return cat ? Category.slugFor(cat) : null; - } - return null; - }, - @discourseComputed("filterMode") href(filterMode) { let customHref = null; @@ -79,22 +49,18 @@ const NavItem = EmberObject.extend({ return Discourse.getURL("/") + filterMode; }, - @discourseComputed("name", "category", "categorySlug", "noSubcategories") - filterMode(name, category, categorySlug, noSubcategories) { - if (name.split("/")[0] === "category") { - return "c/" + categorySlug; - } else { - let mode = ""; - if (category) { - mode += "c/"; - mode += Category.slugFor(category); - if (noSubcategories) { - mode += "/none"; - } - mode += "/l/"; + @discourseComputed("name", "category", "noSubcategories") + filterMode(name, category, noSubcategories) { + let mode = ""; + if (category) { + mode += "c/"; + mode += Category.slugFor(category); + if (noSubcategories) { + mode += "/none"; } - return mode + name.replace(" ", "-"); + mode += "/l/"; } + return mode + name.replace(" ", "-"); }, @discourseComputed("name", "category", "topicTrackingState.messageCount") diff --git a/lib/discourse.rb b/lib/discourse.rb index 8e8d7f9b5b..891bc01f07 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -160,11 +160,11 @@ module Discourse end def self.top_menu_items - @top_menu_items ||= Discourse.filters + [:category, :categories, :top] + @top_menu_items ||= Discourse.filters + [:categories, :top] end def self.anonymous_top_menu_items - @anonymous_top_menu_items ||= Discourse.anonymous_filters + [:category, :categories, :top] + @anonymous_top_menu_items ||= Discourse.anonymous_filters + [:categories, :top] end PIXEL_RATIOS ||= [1, 1.5, 2, 3] diff --git a/test/javascripts/fixtures/site-fixtures.js.es6 b/test/javascripts/fixtures/site-fixtures.js.es6 index fc8934c1aa..875ef8f67e 100644 --- a/test/javascripts/fixtures/site-fixtures.js.es6 +++ b/test/javascripts/fixtures/site-fixtures.js.es6 @@ -41,7 +41,6 @@ export default { "starred", "read", "posted", - "category", "categories", "top" ], @@ -49,7 +48,6 @@ export default { "latest", "top", "categories", - "category", "categories", "top" ], diff --git a/test/javascripts/helpers/site.js.es6 b/test/javascripts/helpers/site.js.es6 index b8b713e979..7c4b2273dd 100644 --- a/test/javascripts/helpers/site.js.es6 +++ b/test/javascripts/helpers/site.js.es6 @@ -38,11 +38,10 @@ PreloadStore.store("site", { "starred", "read", "posted", - "category", "categories", "top" ], - anonymous_top_menu_items: ["latest", "category", "categories", "top"], + anonymous_top_menu_items: ["latest", "categories", "top"], uncategorized_category_id: 17, categories: [ { diff --git a/test/javascripts/models/nav-item-test.js.es6 b/test/javascripts/models/nav-item-test.js.es6 index 28f2eb9f5e..2d71715faf 100644 --- a/test/javascripts/models/nav-item-test.js.es6 +++ b/test/javascripts/models/nav-item-test.js.es6 @@ -16,7 +16,7 @@ QUnit.module("NavItem", { }); QUnit.test("href", assert => { - assert.expect(4); + assert.expect(2); function href(text, expected, label) { assert.equal(NavItem.fromText(text, {}).get("href"), expected, label); @@ -24,8 +24,6 @@ QUnit.test("href", assert => { href("latest", "/latest", "latest"); href("categories", "/categories", "categories"); - href("category/bug", "/c/bug", "English category name"); - href("category/确实是这样", "/c/343434-category", "Chinese category name"); }); QUnit.test("count", assert => { From 4ddb69e9c6f4665d7b216076dad021ad4ffd510f Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Mon, 11 Nov 2019 17:59:19 +0000 Subject: [PATCH 075/408] DEV: Removed needless indirection An artifact of when tagging was a plugin no doubt. --- .../discourse/controllers/tags-show.js.es6 | 11 ----------- .../javascripts/discourse/models/nav-item.js.es6 | 3 +++ 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 index 5f51ee9efb..5cc5b14523 100644 --- a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 @@ -8,21 +8,10 @@ import { import BulkTopicSelection from "discourse/mixins/bulk-topic-selection"; import { default as NavItem, - extraNavItemProperties, customNavItemHref } from "discourse/models/nav-item"; import Category from "discourse/models/category"; -if (extraNavItemProperties) { - extraNavItemProperties(function(text, opts) { - if (opts && opts.tagId) { - return { tagId: opts.tagId }; - } else { - return {}; - } - }); -} - if (customNavItemHref) { customNavItemHref(function(navItem) { if (navItem.get("tagId")) { diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index ded21f1291..2193d816a8 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -122,6 +122,9 @@ NavItem.reopenClass({ if (opts.category) { args.category = opts.category; } + if (opts.tagId) { + args.tagId = opts.tagId; + } if (opts.persistedQueryParams) { args.persistedQueryParams = opts.persistedQueryParams; } From e8dae447bdb34df61b9fcebe8dc4b3695a5f0c3a Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 11 Nov 2019 13:19:59 -0500 Subject: [PATCH 076/408] REFACTOR: Remove `discourse/lib/throttle` --- app/assets/javascripts/application.js | 1 - .../javascripts/discourse/lib/throttle.js.es6 | 19 --------------- .../discourse/models/composer.js.es6 | 23 +++++++++++-------- 3 files changed, 13 insertions(+), 30 deletions(-) delete mode 100644 app/assets/javascripts/discourse/lib/throttle.js.es6 diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 10c71ca89b..6dbb9e815c 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -26,7 +26,6 @@ //= require ./discourse/lib/lock-on //= require ./discourse/lib/url //= require ./discourse/lib/debounce -//= require ./discourse/lib/throttle //= require ./discourse/lib/quote //= require ./discourse/lib/key-value-store //= require ./discourse/lib/computed diff --git a/app/assets/javascripts/discourse/lib/throttle.js.es6 b/app/assets/javascripts/discourse/lib/throttle.js.es6 deleted file mode 100644 index 05daa36c5a..0000000000 --- a/app/assets/javascripts/discourse/lib/throttle.js.es6 +++ /dev/null @@ -1,19 +0,0 @@ -import { throttle } from "@ember/runloop"; -/** - Throttle a Javascript function. This means if it's called many times in a time limit it - should only be executed one time at most during this time limit - Original function will be called with the context and arguments from the last call made. -**/ -export default function(func, spacing, immediate) { - let self, args; - const later = function() { - func.apply(self, args); - }; - - return function() { - self = this; - args = arguments; - - throttle(null, later, spacing, immediate); - }; -} diff --git a/app/assets/javascripts/discourse/models/composer.js.es6 b/app/assets/javascripts/discourse/models/composer.js.es6 index 60fb8272a6..afa1bf732c 100644 --- a/app/assets/javascripts/discourse/models/composer.js.es6 +++ b/app/assets/javascripts/discourse/models/composer.js.es6 @@ -16,7 +16,7 @@ import { } from "discourse-common/utils/decorators"; import { escapeExpression, tinyAvatar } from "discourse/lib/utilities"; import { propertyNotEqual } from "discourse/lib/computed"; -import throttle from "discourse/lib/throttle"; +import { throttle } from "@ember/runloop"; import { Promise } from "rsvp"; import { set } from "@ember/object"; @@ -226,15 +226,18 @@ const Composer = RestModel.extend({ return this.set("metaData", EmberObject.create()); }, - // view detected user is typing - typing: throttle( - function() { - const typingTime = this.typingTime || 0; - this.set("typingTime", typingTime + 100); - }, - 100, - false - ), + // called whenever the user types to update the typing time + typing() { + throttle( + this, + function() { + const typingTime = this.typingTime || 0; + this.set("typingTime", typingTime + 100); + }, + 100, + false + ); + }, editingFirstPost: and("editingPost", "post.firstPost"), From da04c602ba162674afc6fe958d93b11784daec03 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 11 Nov 2019 13:34:01 -0500 Subject: [PATCH 077/408] REFACTOR: Remove `debounce` to `discourseDebounce` Otherwise it can be confused with the ember debounce --- .../javascripts/admin/components/admin-backups-logs.js.es6 | 4 ++-- .../admin/controllers/admin-email-bounced.js.es6 | 4 ++-- .../admin/controllers/admin-email-received.js.es6 | 4 ++-- .../admin/controllers/admin-email-rejected.js.es6 | 4 ++-- .../javascripts/admin/controllers/admin-email-sent.js.es6 | 4 ++-- .../admin/controllers/admin-email-skipped.js.es6 | 4 ++-- .../controllers/admin-logs-screened-ip-addresses.js.es6 | 4 ++-- .../javascripts/admin/controllers/admin-permalinks.js.es6 | 4 ++-- .../admin/controllers/admin-site-settings.js.es6 | 4 ++-- .../admin/controllers/admin-users-list-show.js.es6 | 4 ++-- .../admin/controllers/admin-watched-words.js.es6 | 4 ++-- .../javascripts/discourse/components/choose-message.js.es6 | 4 ++-- .../javascripts/discourse/components/choose-topic.js.es6 | 4 ++-- .../discourse/components/groups-form-profile-fields.js.es6 | 4 ++-- .../javascripts/discourse/components/quote-button.js.es6 | 7 +++++-- .../javascripts/discourse/controllers/group-index.js.es6 | 4 ++-- .../discourse/controllers/group-requests.js.es6 | 4 ++-- .../javascripts/discourse/controllers/groups-index.js.es6 | 4 ++-- app/assets/javascripts/discourse/controllers/topic.js.es6 | 4 ++-- .../discourse/controllers/user-invited-show.js.es6 | 4 ++-- app/assets/javascripts/discourse/controllers/users.js.es6 | 4 ++-- .../javascripts/discourse/lib/category-tag-search.js.es6 | 4 ++-- app/assets/javascripts/discourse/lib/safari-hacks.js.es6 | 6 +++--- app/assets/javascripts/discourse/lib/user-search.js.es6 | 4 ++-- app/assets/javascripts/discourse/mixins/scrolling.js.es6 | 4 ++-- .../discourse/mixins/username-validation.js.es6 | 6 +++--- .../components/discourse-local-dates-create-form.js.es6 | 4 ++-- 27 files changed, 59 insertions(+), 56 deletions(-) diff --git a/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 b/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 index 72706af79f..316597e0f7 100644 --- a/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 +++ b/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 @@ -1,6 +1,6 @@ import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { renderSpinner } from "discourse/helpers/loading-spinner"; import { escapeExpression } from "discourse/lib/utilities"; import { bufferedRender } from "discourse-common/lib/buffered-render"; @@ -35,7 +35,7 @@ export default Component.extend( @on("init") @observes("logs.[]") - _updateFormattedLogs: debounce(function() { + _updateFormattedLogs: discourseDebounce(function() { const logs = this.logs; if (logs.length === 0) return; diff --git a/app/assets/javascripts/admin/controllers/admin-email-bounced.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-bounced.js.es6 index 535fa4bca1..17cb8ed04f 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-bounced.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-bounced.js.es6 @@ -1,8 +1,8 @@ import AdminEmailLogsController from "admin/controllers/admin-email-logs"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default AdminEmailLogsController.extend({ - filterEmailLogs: debounce(function() { + filterEmailLogs: discourseDebounce(function() { this.loadLogs(); }, 250).observes("filter.{status,user,address,type}") }); diff --git a/app/assets/javascripts/admin/controllers/admin-email-received.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-received.js.es6 index 7659e61edd..7dc733e00c 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-received.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-received.js.es6 @@ -1,9 +1,9 @@ import AdminEmailLogsController from "admin/controllers/admin-email-logs"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import IncomingEmail from "admin/models/incoming-email"; export default AdminEmailLogsController.extend({ - filterIncomingEmails: debounce(function() { + filterIncomingEmails: discourseDebounce(function() { this.loadLogs(IncomingEmail); }, 250).observes("filter.{status,from,to,subject}"), diff --git a/app/assets/javascripts/admin/controllers/admin-email-rejected.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-rejected.js.es6 index 602bb052ce..d70efb23ce 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-rejected.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-rejected.js.es6 @@ -1,9 +1,9 @@ import AdminEmailLogsController from "admin/controllers/admin-email-logs"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import IncomingEmail from "admin/models/incoming-email"; export default AdminEmailLogsController.extend({ - filterIncomingEmails: debounce(function() { + filterIncomingEmails: discourseDebounce(function() { this.loadLogs(IncomingEmail); }, 250).observes("filter.{status,from,to,subject,error}"), diff --git a/app/assets/javascripts/admin/controllers/admin-email-sent.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-sent.js.es6 index 83f52d3510..c7ddaa0043 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-sent.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-sent.js.es6 @@ -1,8 +1,8 @@ import AdminEmailLogsController from "admin/controllers/admin-email-logs"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default AdminEmailLogsController.extend({ - filterEmailLogs: debounce(function() { + filterEmailLogs: discourseDebounce(function() { this.loadLogs(); }, 250).observes("filter.{status,user,address,type,reply_key}") }); diff --git a/app/assets/javascripts/admin/controllers/admin-email-skipped.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-skipped.js.es6 index 535fa4bca1..17cb8ed04f 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-skipped.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-skipped.js.es6 @@ -1,8 +1,8 @@ import AdminEmailLogsController from "admin/controllers/admin-email-logs"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default AdminEmailLogsController.extend({ - filterEmailLogs: debounce(function() { + filterEmailLogs: discourseDebounce(function() { this.loadLogs(); }, 250).observes("filter.{status,user,address,type}") }); diff --git a/app/assets/javascripts/admin/controllers/admin-logs-screened-ip-addresses.js.es6 b/app/assets/javascripts/admin/controllers/admin-logs-screened-ip-addresses.js.es6 index 2e404eb29d..e5da638f9a 100644 --- a/app/assets/javascripts/admin/controllers/admin-logs-screened-ip-addresses.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-logs-screened-ip-addresses.js.es6 @@ -1,5 +1,5 @@ import Controller from "@ember/controller"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { outputExportResult } from "discourse/lib/export-result"; import { exportEntity } from "discourse/lib/export-csv"; import ScreenedIpAddress from "admin/models/screened-ip-address"; @@ -9,7 +9,7 @@ export default Controller.extend({ filter: null, savedIpAddress: null, - show: debounce(function() { + show: discourseDebounce(function() { this.set("loading", true); ScreenedIpAddress.findAll(this.filter).then(result => { this.setProperties({ model: result, loading: false }); diff --git a/app/assets/javascripts/admin/controllers/admin-permalinks.js.es6 b/app/assets/javascripts/admin/controllers/admin-permalinks.js.es6 index d024c83051..29c076c30c 100644 --- a/app/assets/javascripts/admin/controllers/admin-permalinks.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-permalinks.js.es6 @@ -1,12 +1,12 @@ import Controller from "@ember/controller"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import Permalink from "admin/models/permalink"; export default Controller.extend({ loading: false, filter: null, - show: debounce(function() { + show: discourseDebounce(function() { Permalink.findAll(this.filter).then(result => { this.set("model", result); this.set("loading", false); diff --git a/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6 b/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6 index fe35885617..052f7c567d 100644 --- a/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6 @@ -1,7 +1,7 @@ import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import Controller from "@ember/controller"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default Controller.extend({ filter: null, @@ -76,7 +76,7 @@ export default Controller.extend({ ); }, - filterContent: debounce(function() { + filterContent: discourseDebounce(function() { if (this._skipBounce) { this.set("_skipBounce", false); } else { diff --git a/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6 index 87380235e3..12d4724862 100644 --- a/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6 @@ -1,6 +1,6 @@ import discourseComputed from "discourse-common/utils/decorators"; import Controller from "@ember/controller"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { i18n } from "discourse/lib/computed"; import AdminUser from "admin/models/admin-user"; import CanCheckEmails from "discourse/mixins/can-check-emails"; @@ -29,7 +29,7 @@ export default Controller.extend(CanCheckEmails, { return I18n.t("admin.users.titles." + query); }, - _filterUsers: debounce(function() { + _filterUsers: discourseDebounce(function() { this.resetFilters(); }, 250).observes("listFilter"), diff --git a/app/assets/javascripts/admin/controllers/admin-watched-words.js.es6 b/app/assets/javascripts/admin/controllers/admin-watched-words.js.es6 index 397c5b030e..84a7ac7939 100644 --- a/app/assets/javascripts/admin/controllers/admin-watched-words.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-watched-words.js.es6 @@ -2,7 +2,7 @@ import { isEmpty } from "@ember/utils"; import { alias } from "@ember/object/computed"; import EmberObject from "@ember/object"; import Controller from "@ember/controller"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default Controller.extend({ filter: null, @@ -43,7 +43,7 @@ export default Controller.extend({ this.set("model", matchesByAction); }, - filterContent: debounce(function() { + filterContent: discourseDebounce(function() { this.filterContentNow(); this.set("filtered", !isEmpty(this.filter)); }, 250).observes("filter"), diff --git a/app/assets/javascripts/discourse/components/choose-message.js.es6 b/app/assets/javascripts/discourse/components/choose-message.js.es6 index e47618dbef..c5680dfaf9 100644 --- a/app/assets/javascripts/discourse/components/choose-message.js.es6 +++ b/app/assets/javascripts/discourse/components/choose-message.js.es6 @@ -2,7 +2,7 @@ import { get } from "@ember/object"; import { isEmpty } from "@ember/utils"; import { next } from "@ember/runloop"; import Component from "@ember/component"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { searchForTerm } from "discourse/lib/search"; import { observes } from "discourse-common/utils/decorators"; @@ -30,7 +30,7 @@ export default Component.extend({ this.set("loading", false); }, - search: debounce(function(title) { + search: discourseDebounce(function(title) { const currentTopicId = this.currentTopicId; if (isEmpty(title)) { diff --git a/app/assets/javascripts/discourse/components/choose-topic.js.es6 b/app/assets/javascripts/discourse/components/choose-topic.js.es6 index 557b30d9a0..51955db565 100644 --- a/app/assets/javascripts/discourse/components/choose-topic.js.es6 +++ b/app/assets/javascripts/discourse/components/choose-topic.js.es6 @@ -1,7 +1,7 @@ import { isEmpty } from "@ember/utils"; import { next } from "@ember/runloop"; import Component from "@ember/component"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { searchForTerm } from "discourse/lib/search"; import { observes } from "discourse-common/utils/decorators"; @@ -33,7 +33,7 @@ export default Component.extend({ this.set("loading", false); }, - search: debounce(function(title) { + search: discourseDebounce(function(title) { if (!this.element || this.isDestroying || this.isDestroyed) { return; } diff --git a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 index 082cfcc584..03ea2d8e14 100644 --- a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 @@ -7,7 +7,7 @@ import { } from "discourse-common/utils/decorators"; import Group from "discourse/models/group"; import InputValidation from "discourse/models/input-validation"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default Component.extend({ disableSave: null, @@ -64,7 +64,7 @@ export default Component.extend({ ); }, - checkGroupName: debounce(function() { + checkGroupName: discourseDebounce(function() { name = this.nameInput; if (isEmpty(name)) return; diff --git a/app/assets/javascripts/discourse/components/quote-button.js.es6 b/app/assets/javascripts/discourse/components/quote-button.js.es6 index ec8b8c47e8..718f68c98a 100644 --- a/app/assets/javascripts/discourse/components/quote-button.js.es6 +++ b/app/assets/javascripts/discourse/components/quote-button.js.es6 @@ -1,6 +1,6 @@ import { scheduleOnce } from "@ember/runloop"; import Component from "@ember/component"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { selectedText } from "discourse/lib/utilities"; export default Component.extend({ @@ -128,7 +128,10 @@ export default Component.extend({ didInsertElement() { const { isWinphone, isAndroid } = this.capabilities; const wait = isWinphone || isAndroid ? 250 : 25; - const onSelectionChanged = debounce(() => this._selectionChanged(), wait); + const onSelectionChanged = discourseDebounce( + () => this._selectionChanged(), + wait + ); $(document) .on("mousedown.quote-button", e => { diff --git a/app/assets/javascripts/discourse/controllers/group-index.js.es6 b/app/assets/javascripts/discourse/controllers/group-index.js.es6 index 05df6fa12e..ce6abcc484 100644 --- a/app/assets/javascripts/discourse/controllers/group-index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-index.js.es6 @@ -7,7 +7,7 @@ import { default as discourseComputed, observes } from "discourse-common/utils/decorators"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default Controller.extend({ queryParams: ["order", "desc", "filter"], @@ -23,7 +23,7 @@ export default Controller.extend({ application: inject(), @observes("filterInput") - _setFilter: debounce(function() { + _setFilter: discourseDebounce(function() { this.set("filter", this.filterInput); }, 500), diff --git a/app/assets/javascripts/discourse/controllers/group-requests.js.es6 b/app/assets/javascripts/discourse/controllers/group-requests.js.es6 index 5be58b2d60..75275a9462 100644 --- a/app/assets/javascripts/discourse/controllers/group-requests.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-requests.js.es6 @@ -7,7 +7,7 @@ import { default as discourseComputed, observes } from "discourse-common/utils/decorators"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default Controller.extend({ queryParams: ["order", "desc", "filter"], @@ -21,7 +21,7 @@ export default Controller.extend({ application: inject(), @observes("filterInput") - _setFilter: debounce(function() { + _setFilter: discourseDebounce(function() { this.set("filter", this.filterInput); }, 500), diff --git a/app/assets/javascripts/discourse/controllers/groups-index.js.es6 b/app/assets/javascripts/discourse/controllers/groups-index.js.es6 index 9758b30ad5..0380bdffd8 100644 --- a/app/assets/javascripts/discourse/controllers/groups-index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/groups-index.js.es6 @@ -1,6 +1,6 @@ import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { default as discourseComputed, observes @@ -28,7 +28,7 @@ export default Controller.extend({ }, @observes("filterInput") - _setFilter: debounce(function() { + _setFilter: discourseDebounce(function() { this.set("filter", this.filterInput); }, 500), diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 1a67f6e0ed..d273e51153 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -12,7 +12,7 @@ import Post from "discourse/models/post"; import Quote from "discourse/lib/quote"; import QuoteState from "discourse/lib/quote-state"; import Topic from "discourse/models/topic"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import isElementInViewport from "discourse/lib/is-element-in-viewport"; import { ajax } from "discourse/lib/ajax"; import { @@ -1399,7 +1399,7 @@ export default Controller.extend(bufferedProperty("model"), { ); }, - _scrollToPost: debounce(function(postNumber) { + _scrollToPost: discourseDebounce(function(postNumber) { const $post = $(`.topic-post article#post_${postNumber}`); if ($post.length === 0 || isElementInViewport($post)) return; diff --git a/app/assets/javascripts/discourse/controllers/user-invited-show.js.es6 b/app/assets/javascripts/discourse/controllers/user-invited-show.js.es6 index 59d197a875..eabab5a749 100644 --- a/app/assets/javascripts/discourse/controllers/user-invited-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-invited-show.js.es6 @@ -1,7 +1,7 @@ import { equal, reads, gte } from "@ember/object/computed"; import Controller from "@ember/controller"; import Invite from "discourse/models/invite"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { default as discourseComputed, @@ -27,7 +27,7 @@ export default Controller.extend({ }, @observes("searchTerm") - _searchTermChanged: debounce(function() { + _searchTermChanged: discourseDebounce(function() { Invite.findInvitedBy(this.user, this.filter, this.searchTerm).then( invites => this.set("model", invites) ); diff --git a/app/assets/javascripts/discourse/controllers/users.js.es6 b/app/assets/javascripts/discourse/controllers/users.js.es6 index 36e3236ffd..8fd3b3e157 100644 --- a/app/assets/javascripts/discourse/controllers/users.js.es6 +++ b/app/assets/javascripts/discourse/controllers/users.js.es6 @@ -1,7 +1,7 @@ import { equal } from "@ember/object/computed"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default Controller.extend({ application: inject(), @@ -15,7 +15,7 @@ export default Controller.extend({ showTimeRead: equal("period", "all"), - _setName: debounce(function() { + _setName: discourseDebounce(function() { this.set("name", this.nameInput); }, 500).observes("nameInput"), diff --git a/app/assets/javascripts/discourse/lib/category-tag-search.js.es6 b/app/assets/javascripts/discourse/lib/category-tag-search.js.es6 index 0b46e05b73..ca1ddcc85e 100644 --- a/app/assets/javascripts/discourse/lib/category-tag-search.js.es6 +++ b/app/assets/javascripts/discourse/lib/category-tag-search.js.es6 @@ -1,4 +1,4 @@ -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { CANCELLED_STATUS } from "discourse/lib/autocomplete"; import Category from "discourse/models/category"; import { TAG_HASHTAG_POSTFIX } from "discourse/lib/tag-hashtags"; @@ -21,7 +21,7 @@ function searchTags(term, categories, limit) { resolve(CANCELLED_STATUS); }, 5000); - const debouncedSearch = debounce((q, cats, resultFunc) => { + const debouncedSearch = discourseDebounce((q, cats, resultFunc) => { oldSearch = $.ajax(Discourse.getURL("/tags/filter/search"), { type: "GET", cache: true, diff --git a/app/assets/javascripts/discourse/lib/safari-hacks.js.es6 b/app/assets/javascripts/discourse/lib/safari-hacks.js.es6 index afb55f7f8b..9241cbbed7 100644 --- a/app/assets/javascripts/discourse/lib/safari-hacks.js.es6 +++ b/app/assets/javascripts/discourse/lib/safari-hacks.js.es6 @@ -1,5 +1,5 @@ import { later } from "@ember/runloop"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { safariHacksDisabled, iOSWithVisualViewport @@ -132,7 +132,7 @@ function positioningWorkaround($fixedElement) { positioningWorkaround.blur(evt); }; - var blurred = debounce(blurredNow, 250); + var blurred = discourseDebounce(blurredNow, 250); var positioningHack = function(evt) { // we need this, otherwise changing focus means we never clear @@ -217,7 +217,7 @@ function positioningWorkaround($fixedElement) { } } - const checkForInputs = debounce(function() { + const checkForInputs = discourseDebounce(function() { attachTouchStart(fixedElement, lastTouched); $fixedElement.find("input[type=text],textarea").each(function() { diff --git a/app/assets/javascripts/discourse/lib/user-search.js.es6 b/app/assets/javascripts/discourse/lib/user-search.js.es6 index b1a75ae34e..2a5890aa3f 100644 --- a/app/assets/javascripts/discourse/lib/user-search.js.es6 +++ b/app/assets/javascripts/discourse/lib/user-search.js.es6 @@ -1,4 +1,4 @@ -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { CANCELLED_STATUS } from "discourse/lib/autocomplete"; import { userPath } from "discourse/lib/url"; import { emailValid } from "discourse/lib/utilities"; @@ -79,7 +79,7 @@ function performSearch( }); } -var debouncedSearch = debounce(performSearch, 300); +var debouncedSearch = discourseDebounce(performSearch, 300); function organizeResults(r, options) { if (r === CANCELLED_STATUS) { diff --git a/app/assets/javascripts/discourse/mixins/scrolling.js.es6 b/app/assets/javascripts/discourse/mixins/scrolling.js.es6 index b690c77de4..2a15df47eb 100644 --- a/app/assets/javascripts/discourse/mixins/scrolling.js.es6 +++ b/app/assets/javascripts/discourse/mixins/scrolling.js.es6 @@ -1,5 +1,5 @@ import { scheduleOnce } from "@ember/runloop"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import Mixin from "@ember/object/mixin"; /** @@ -43,7 +43,7 @@ const Scrolling = Mixin.create({ }; if (opts.debounce) { - onScrollMethod = debounce(onScrollMethod, opts.debounce); + onScrollMethod = discourseDebounce(onScrollMethod, opts.debounce); } ScrollingDOMMethods.bindOnScroll(onScrollMethod, opts.name); diff --git a/app/assets/javascripts/discourse/mixins/username-validation.js.es6 b/app/assets/javascripts/discourse/mixins/username-validation.js.es6 index 35ccf6c8cc..31186525f1 100644 --- a/app/assets/javascripts/discourse/mixins/username-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/username-validation.js.es6 @@ -1,6 +1,6 @@ import { isEmpty } from "@ember/utils"; import InputValidation from "discourse/models/input-validation"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; import { setting } from "discourse/lib/computed"; import { default as discourseComputed } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; @@ -12,7 +12,7 @@ export default Mixin.create({ minUsernameLength: setting("min_username_length"), - fetchExistingUsername: debounce(function() { + fetchExistingUsername: discourseDebounce(function() { Discourse.User.checkUsername(null, this.accountEmail).then(result => { if ( result.suggestion && @@ -74,7 +74,7 @@ export default Mixin.create({ ); }, - checkUsernameAvailability: debounce(function() { + checkUsernameAvailability: discourseDebounce(function() { if (this.shouldCheckUsernameAvailability()) { return Discourse.User.checkUsername( this.accountUsername, diff --git a/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 b/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 index de01b5ef9c..20b104c0a3 100644 --- a/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 +++ b/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 @@ -6,7 +6,7 @@ import { propertyNotEqual } from "discourse/lib/computed"; import loadScript from "discourse/lib/load-script"; import { default as computed } from "ember-addons/ember-computed-decorators"; import { cookAsync } from "discourse/lib/text"; -import debounce from "discourse/lib/debounce"; +import discourseDebounce from "discourse/lib/debounce"; export default Component.extend({ timeFormat: "HH:mm:ss", @@ -51,7 +51,7 @@ export default Component.extend({ }); }, - _renderPreview: debounce(function() { + _renderPreview: discourseDebounce(function() { const markup = this.markup; if (markup) { From 211410c3b9ee78e6654f07d5c9e822089ba268bc Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Mon, 11 Nov 2019 18:32:22 +0000 Subject: [PATCH 078/408] DEV: It doesn't make sense for a filterMode to be weekly, quarterly, etc --- app/assets/javascripts/discourse/components/d-navigation.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/components/d-navigation.js.es6 b/app/assets/javascripts/discourse/components/d-navigation.js.es6 index 9ceea60eb4..b68ceeb739 100644 --- a/app/assets/javascripts/discourse/components/d-navigation.js.es6 +++ b/app/assets/javascripts/discourse/components/d-navigation.js.es6 @@ -31,7 +31,7 @@ export default Component.extend({ navItems(filterMode, category, noSubcategories) { // we don't want to show the period in the navigation bar since it's in a dropdown if (filterMode.indexOf("top/") === 0) { - filterMode = filterMode.replace("top/", ""); + filterMode = "top"; } let params; From e39d89ecd9119f69f464d92a16d59d77cc746081 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 11 Nov 2019 15:48:33 -0500 Subject: [PATCH 079/408] REFACTOR: Remove `InputValidation` which was simply an `Ember.Object` --- .../controllers/admin-web-hooks-show.js.es6 | 8 ++++---- app/assets/javascripts/application.js | 1 - app/assets/javascripts/discourse-loader.js | 9 +++++++++ .../components/composer-editor.js.es6 | 4 ++-- .../discourse/components/composer-title.js.es6 | 4 ++-- .../groups-form-profile-fields.js.es6 | 6 +++--- .../discourse/controllers/composer.js.es6 | 6 +++--- .../controllers/create-account.js.es6 | 12 ++++++------ .../discourse/controllers/feature-topic.js.es6 | 6 +++--- .../controllers/preferences/email.js.es6 | 4 ++-- .../discourse/mixins/name-validation.js.es6 | 6 +++--- .../mixins/password-validation.js.es6 | 16 ++++++++-------- .../mixins/user-fields-validation.js.es6 | 5 ++--- .../mixins/username-validation.js.es6 | 18 +++++++++--------- .../discourse/models/input-validation.js.es6 | 2 -- .../controllers/poll-ui-builder.js.es6 | 8 ++++---- 16 files changed, 60 insertions(+), 55 deletions(-) delete mode 100644 app/assets/javascripts/discourse/models/input-validation.js.es6 diff --git a/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 index b07806f6fa..4ba34034f3 100644 --- a/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-web-hooks-show.js.es6 @@ -5,7 +5,7 @@ import { inject } from "@ember/controller"; import Controller from "@ember/controller"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { extractDomainFromUrl } from "discourse/lib/utilities"; -import InputValidation from "discourse/models/input-validation"; +import EmberObject from "@ember/object"; export default Controller.extend({ adminWebHooks: inject(), @@ -41,14 +41,14 @@ export default Controller.extend({ secretValidation(secret) { if (!isEmpty(secret)) { if (secret.indexOf(" ") !== -1) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("admin.web_hooks.secret_invalid") }); } if (secret.length < 12) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("admin.web_hooks.secret_too_short") }); @@ -59,7 +59,7 @@ export default Controller.extend({ @discourseComputed("model.wildcard_web_hook", "model.web_hook_event_types.[]") eventTypeValidation(isWildcard, eventTypes) { if (!isWildcard && isEmpty(eventTypes)) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("admin.web_hooks.event_type_missing") }); diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 6dbb9e815c..35cc29acce 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -47,7 +47,6 @@ //= require ./discourse/models/badge //= require ./discourse/models/permission-type //= require ./discourse/models/user-action-group -//= require ./discourse/models/input-validation //= require ./discourse/models/trust-level //= require ./discourse/lib/search //= require ./discourse/lib/user-search diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index 876aca44ce..d5112d026e 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -220,6 +220,15 @@ var define, requirejs; function requireFrom(name, origin) { name = transformForAliases(name); + + if (name === "discourse/models/input-validation") { + // eslint-disable-next-line no-console + console.log( + "input-validation has been removed and should be replaced with `@ember/object`" + ); + return Ember.Object; + } + var mod = EMBER_MODULES[name] || registry[name]; if (!mod) { throw new Error( diff --git a/app/assets/javascripts/discourse/components/composer-editor.js.es6 b/app/assets/javascripts/discourse/components/composer-editor.js.es6 index 75f8edd4f0..d997c3f4f6 100644 --- a/app/assets/javascripts/discourse/components/composer-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-editor.js.es6 @@ -26,7 +26,7 @@ import Composer from "discourse/models/composer"; import { load, LOADING_ONEBOX_CSS_CLASS } from "pretty-text/oneboxer"; import { applyInlineOneboxes } from "pretty-text/inline-oneboxer"; import { ajax } from "discourse/lib/ajax"; -import InputValidation from "discourse/models/input-validation"; +import EmberObject from "@ember/object"; import { findRawTemplate } from "discourse/lib/raw-templates"; import { iconHTML } from "discourse-common/lib/icon-library"; import { @@ -246,7 +246,7 @@ export default Component.extend({ } if (reason) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason, lastShownAt: lastValidatedAt diff --git a/app/assets/javascripts/discourse/components/composer-title.js.es6 b/app/assets/javascripts/discourse/components/composer-title.js.es6 index da012442f7..2eb06cb071 100644 --- a/app/assets/javascripts/discourse/components/composer-title.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-title.js.es6 @@ -7,12 +7,12 @@ import { default as discourseComputed, observes } from "discourse-common/utils/decorators"; -import InputValidation from "discourse/models/input-validation"; import { load } from "pretty-text/oneboxer"; import { lookupCache } from "pretty-text/oneboxer-cache"; import { ajax } from "discourse/lib/ajax"; import afterTransition from "discourse/lib/after-transition"; import ENV from "discourse-common/config/environment"; +import EmberObject from "@ember/object"; export default Component.extend({ classNames: ["title-input"], @@ -60,7 +60,7 @@ export default Component.extend({ } if (reason) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason, lastShownAt: lastValidatedAt diff --git a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 index 03ea2d8e14..9074ef2d63 100644 --- a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 @@ -6,8 +6,8 @@ import { observes } from "discourse-common/utils/decorators"; import Group from "discourse/models/group"; -import InputValidation from "discourse/models/input-validation"; import discourseDebounce from "discourse/lib/debounce"; +import EmberObject from "@ember/object"; export default Component.extend({ disableSave: null, @@ -74,7 +74,7 @@ export default Component.extend({ if (response.available) { this.set( validationName, - InputValidation.create({ + EmberObject.create({ ok: true, reason: I18n.t("admin.groups.new.name.available") }) @@ -101,6 +101,6 @@ export default Component.extend({ const options = { failed: true }; if (reason) options.reason = reason; - this.set("basicNameValidation", InputValidation.create(options)); + this.set("basicNameValidation", EmberObject.create(options)); } }); diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index 51d4b3202e..e3d5ae3c0d 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -19,7 +19,6 @@ import { observes, on } from "discourse-common/utils/decorators"; -import InputValidation from "discourse/models/input-validation"; import { getOwner } from "discourse-common/lib/get-owner"; import { escapeExpression, @@ -32,6 +31,7 @@ import { shortDate } from "discourse/lib/formatter"; import { SAVE_LABELS, SAVE_ICONS } from "discourse/models/composer"; import { Promise } from "rsvp"; import ENV from "discourse-common/config/environment"; +import EmberObject from "@ember/object"; function loadDraft(store, opts) { opts = opts || {}; @@ -1063,7 +1063,7 @@ export default Controller.extend({ @discourseComputed("model.categoryId", "lastValidatedAt") categoryValidation(categoryId, lastValidatedAt) { if (!this.siteSettings.allow_uncategorized_topics && !categoryId) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("composer.error.category_missing"), lastShownAt: lastValidatedAt @@ -1079,7 +1079,7 @@ export default Controller.extend({ category && category.minimum_required_tags > tagsArray.length ) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("composer.error.tags_missing", { count: category.minimum_required_tags diff --git a/app/assets/javascripts/discourse/controllers/create-account.js.es6 b/app/assets/javascripts/discourse/controllers/create-account.js.es6 index 96abb66d22..ae431f3c37 100644 --- a/app/assets/javascripts/discourse/controllers/create-account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/create-account.js.es6 @@ -10,13 +10,13 @@ import { on } from "discourse-common/utils/decorators"; import { emailValid } from "discourse/lib/utilities"; -import InputValidation from "discourse/models/input-validation"; import PasswordValidation from "discourse/mixins/password-validation"; import UsernameValidation from "discourse/mixins/username-validation"; import NameValidation from "discourse/mixins/name-validation"; import UserFieldsValidation from "discourse/mixins/user-fields-validation"; import { userPath } from "discourse/lib/url"; import { findAll } from "discourse/models/login-method"; +import EmberObject from "@ember/object"; export default Controller.extend( ModalFunctionality, @@ -110,13 +110,13 @@ export default Controller.extend( emailValidation(email, rejectedEmails) { // If blank, fail without a reason if (isEmpty(email)) { - return InputValidation.create({ + return EmberObject.create({ failed: true }); } if (rejectedEmails.includes(email)) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.email.invalid") }); @@ -126,7 +126,7 @@ export default Controller.extend( this.get("authOptions.email") === email && this.get("authOptions.email_valid") ) { - return InputValidation.create({ + return EmberObject.create({ ok: true, reason: I18n.t("user.email.authenticated", { provider: this.authProviderDisplayName( @@ -137,13 +137,13 @@ export default Controller.extend( } if (emailValid(email)) { - return InputValidation.create({ + return EmberObject.create({ ok: true, reason: I18n.t("user.email.ok") }); } - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.email.invalid") }); diff --git a/app/assets/javascripts/discourse/controllers/feature-topic.js.es6 b/app/assets/javascripts/discourse/controllers/feature-topic.js.es6 index 3535e355ce..8fb459a145 100644 --- a/app/assets/javascripts/discourse/controllers/feature-topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/feature-topic.js.es6 @@ -4,7 +4,7 @@ import Controller from "@ember/controller"; import { ajax } from "discourse/lib/ajax"; import ModalFunctionality from "discourse/mixins/modal-functionality"; import { categoryLinkHTML } from "discourse/helpers/category-link"; -import InputValidation from "discourse/models/input-validation"; +import EmberObject from "@ember/object"; export default Controller.extend(ModalFunctionality, { topicController: inject("topic"), @@ -79,7 +79,7 @@ export default Controller.extend(ModalFunctionality, { @discourseComputed("pinDisabled") pinInCategoryValidation(pinDisabled) { if (pinDisabled) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("topic.feature_topic.pin_validation") }); @@ -89,7 +89,7 @@ export default Controller.extend(ModalFunctionality, { @discourseComputed("pinGloballyDisabled") pinGloballyValidation(pinGloballyDisabled) { if (pinGloballyDisabled) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("topic.feature_topic.pin_validation") }); diff --git a/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 index 94a13ae596..413638e0db 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 @@ -2,7 +2,7 @@ import discourseComputed from "discourse-common/utils/decorators"; import { empty, or } from "@ember/object/computed"; import Controller from "@ember/controller"; import { propertyEqual } from "discourse/lib/computed"; -import InputValidation from "discourse/models/input-validation"; +import EmberObject from "@ember/object"; import { emailValid } from "discourse/lib/utilities"; export default Controller.extend({ @@ -43,7 +43,7 @@ export default Controller.extend({ @discourseComputed("invalidEmail") emailValidation(invalidEmail) { if (invalidEmail) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.email.invalid") }); diff --git a/app/assets/javascripts/discourse/mixins/name-validation.js.es6 b/app/assets/javascripts/discourse/mixins/name-validation.js.es6 index e447f9fcb6..b2594c97fe 100644 --- a/app/assets/javascripts/discourse/mixins/name-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/name-validation.js.es6 @@ -1,7 +1,7 @@ import { isEmpty } from "@ember/utils"; -import InputValidation from "discourse/models/input-validation"; import { default as discourseComputed } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; +import EmberObject from "@ember/object"; export default Mixin.create({ @discourseComputed() @@ -17,9 +17,9 @@ export default Mixin.create({ @discourseComputed("accountName") nameValidation() { if (this.siteSettings.full_name_required && isEmpty(this.accountName)) { - return InputValidation.create({ failed: true }); + return EmberObject.create({ failed: true }); } - return InputValidation.create({ ok: true }); + return EmberObject.create({ ok: true }); } }); diff --git a/app/assets/javascripts/discourse/mixins/password-validation.js.es6 b/app/assets/javascripts/discourse/mixins/password-validation.js.es6 index ec665cdbe6..b313368f52 100644 --- a/app/assets/javascripts/discourse/mixins/password-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/password-validation.js.es6 @@ -1,7 +1,7 @@ import { isEmpty } from "@ember/utils"; -import InputValidation from "discourse/models/input-validation"; import { default as discourseComputed } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; +import EmberObject from "@ember/object"; export default Mixin.create({ rejectedPasswords: null, @@ -43,11 +43,11 @@ export default Mixin.create({ passwordMinLength ) { if (!passwordRequired) { - return InputValidation.create({ ok: true }); + return EmberObject.create({ ok: true }); } if (rejectedPasswords.includes(password)) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: this.rejectedPasswordsMessages.get(password) || @@ -57,33 +57,33 @@ export default Mixin.create({ // If blank, fail without a reason if (isEmpty(password)) { - return InputValidation.create({ failed: true }); + return EmberObject.create({ failed: true }); } // If too short if (password.length < passwordMinLength) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.password.too_short") }); } if (!isEmpty(accountUsername) && password === accountUsername) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.password.same_as_username") }); } if (!isEmpty(accountEmail) && password === accountEmail) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.password.same_as_email") }); } // Looks good! - return InputValidation.create({ + return EmberObject.create({ ok: true, reason: I18n.t("user.password.ok") }); diff --git a/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 b/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 index e535043a2d..782ceca03d 100644 --- a/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6 @@ -1,6 +1,5 @@ import { isEmpty } from "@ember/utils"; import EmberObject from "@ember/object"; -import InputValidation from "discourse/models/input-validation"; import { on, default as discourseComputed @@ -36,9 +35,9 @@ export default Mixin.create({ return !val || isEmpty(val); }); if (anyEmpty) { - return InputValidation.create({ failed: true }); + return EmberObject.create({ failed: true }); } } - return InputValidation.create({ ok: true }); + return EmberObject.create({ ok: true }); } }); diff --git a/app/assets/javascripts/discourse/mixins/username-validation.js.es6 b/app/assets/javascripts/discourse/mixins/username-validation.js.es6 index 31186525f1..7845c45a58 100644 --- a/app/assets/javascripts/discourse/mixins/username-validation.js.es6 +++ b/app/assets/javascripts/discourse/mixins/username-validation.js.es6 @@ -1,9 +1,9 @@ import { isEmpty } from "@ember/utils"; -import InputValidation from "discourse/models/input-validation"; import discourseDebounce from "discourse/lib/debounce"; import { setting } from "discourse/lib/computed"; import { default as discourseComputed } from "discourse-common/utils/decorators"; import Mixin from "@ember/object/mixin"; +import EmberObject from "@ember/object"; export default Mixin.create({ uniqueUsernameValidation: null, @@ -32,7 +32,7 @@ export default Mixin.create({ this.set("uniqueUsernameValidation", null); if (accountUsername && accountUsername === this.prefilledUsername) { - return InputValidation.create({ + return EmberObject.create({ ok: true, reason: I18n.t("user.username.prefilled") }); @@ -40,12 +40,12 @@ export default Mixin.create({ // If blank, fail without a reason if (isEmpty(accountUsername)) { - return InputValidation.create({ failed: true }); + return EmberObject.create({ failed: true }); } // If too short if (accountUsername.length < this.siteSettings.min_username_length) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.username.too_short") }); @@ -53,7 +53,7 @@ export default Mixin.create({ // If too long if (accountUsername.length > this.maxUsernameLength) { - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.username.too_long") }); @@ -61,7 +61,7 @@ export default Mixin.create({ this.checkUsernameAvailability(); // Let's check it out asynchronously - return InputValidation.create({ + return EmberObject.create({ failed: true, reason: I18n.t("user.username.checking") }); @@ -87,7 +87,7 @@ export default Mixin.create({ } return this.set( "uniqueUsernameValidation", - InputValidation.create({ + EmberObject.create({ ok: true, reason: I18n.t("user.username.available") }) @@ -96,7 +96,7 @@ export default Mixin.create({ if (result.suggestion) { return this.set( "uniqueUsernameValidation", - InputValidation.create({ + EmberObject.create({ failed: true, reason: I18n.t("user.username.not_available", result) }) @@ -104,7 +104,7 @@ export default Mixin.create({ } else { return this.set( "uniqueUsernameValidation", - InputValidation.create({ + EmberObject.create({ failed: true, reason: result.errors ? result.errors.join(" ") diff --git a/app/assets/javascripts/discourse/models/input-validation.js.es6 b/app/assets/javascripts/discourse/models/input-validation.js.es6 deleted file mode 100644 index c7120db846..0000000000 --- a/app/assets/javascripts/discourse/models/input-validation.js.es6 +++ /dev/null @@ -1,2 +0,0 @@ -import EmberObject from "@ember/object"; -export default EmberObject.extend(); diff --git a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 index fdb7e0498e..14d9073e9e 100644 --- a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 +++ b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 @@ -3,7 +3,7 @@ import { default as computed, observes } from "ember-addons/ember-computed-decorators"; -import InputValidation from "discourse/models/input-validation"; +import EmberObject from "@ember/object"; export default Controller.extend({ regularPollType: "regular", @@ -260,7 +260,7 @@ export default Controller.extend({ }; } - return InputValidation.create(options); + return EmberObject.create(options); }, @computed("pollStep") @@ -274,7 +274,7 @@ export default Controller.extend({ }; } - return InputValidation.create(options); + return EmberObject.create(options); }, @computed("disableInsert") @@ -288,7 +288,7 @@ export default Controller.extend({ }; } - return InputValidation.create(options); + return EmberObject.create(options); }, _comboboxOptions(start_index, end_index) { From 34665d3f962f1b3d16e8c75e9f8533f355d1ef7b Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 11 Nov 2019 15:56:58 -0500 Subject: [PATCH 080/408] FIX: In case `@ember/object` hasn't been loaded yet --- app/assets/javascripts/discourse-loader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index d5112d026e..e28ece7122 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -226,7 +226,7 @@ var define, requirejs; console.log( "input-validation has been removed and should be replaced with `@ember/object`" ); - return Ember.Object; + name = "@ember/object"; } var mod = EMBER_MODULES[name] || registry[name]; From 6ebffaaf6e929523e81168fefc55385cbb75f5ef Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Mon, 11 Nov 2019 22:30:31 +0100 Subject: [PATCH 081/408] FIX: Better error handling for invalid locale bundle versions --- app/controllers/extra_locales_controller.rb | 13 +++++++++---- spec/requests/extra_locales_controller_spec.rb | 8 ++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/controllers/extra_locales_controller.rb b/app/controllers/extra_locales_controller.rb index 4bee444976..e20c81ea42 100644 --- a/app/controllers/extra_locales_controller.rb +++ b/app/controllers/extra_locales_controller.rb @@ -9,15 +9,20 @@ class ExtraLocalesController < ApplicationController :verify_authenticity_token OVERRIDES_BUNDLE ||= 'overrides' + MD5_HASH_LENGTH ||= 32 def show bundle = params[:bundle] - raise Discourse::InvalidAccess.new if !valid_bundle?(bundle) - if params[:v]&.size == 32 - hash = ExtraLocalesController.bundle_js_hash(bundle) - immutable_for(1.year) if hash == params[:v] + version = params[:v] + if version.present? + if version.kind_of?(String) && version.length == MD5_HASH_LENGTH + hash = ExtraLocalesController.bundle_js_hash(bundle) + immutable_for(1.year) if hash == version + else + raise Discourse::InvalidParameters.new(:v) + end end render plain: ExtraLocalesController.bundle_js(bundle), content_type: "application/javascript" diff --git a/spec/requests/extra_locales_controller_spec.rb b/spec/requests/extra_locales_controller_spec.rb index 7c12b1fcfd..d46f6c71ef 100644 --- a/spec/requests/extra_locales_controller_spec.rb +++ b/spec/requests/extra_locales_controller_spec.rb @@ -23,6 +23,14 @@ describe ExtraLocalesController do expect(response.status).to eq(403) end + it "requires a valid version" do + get "/extra-locales/overrides", params: { v: 'a' } + expect(response.status).to eq(400) + + get "/extra-locales/overrides?v[foo]=1" + expect(response.status).to eq(400) + end + context "logged in as a moderator" do let(:moderator) { Fabricate(:moderator) } From 69266f60ed83ecdd0b0bfcde8575c0ef9e548418 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Tue, 12 Nov 2019 16:44:46 +1100 Subject: [PATCH 082/408] FIX: tag and category watchers regression (#8336) I made a regression here https://github.com/discourse/discourse/commit/17366d3bcc8ac27980e4fb3b7cfdc1ed86c6ab02#diff-ddeebb36d131f89ca91be9d04c2baefaR10 When the tag is added, people watching specific tag are notified but also people watching specific category. Therefore, `notify_post_users` should accept options who should be notified. So when `category` is added to the topic, users watching topic and users watching category are notified. When `tag` is added to the topic, users watching topic and users watching tag are notified Finally, when a new post is created, everybody is notified, topic watchers, category watchers, tag watchers. --- app/jobs/regular/notify_category_change.rb | 2 +- app/jobs/regular/notify_tag_change.rb | 2 +- app/services/post_alerter.rb | 18 +++++++++++------- spec/jobs/notify_tag_change_spec.rb | 9 +++++++++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/jobs/regular/notify_category_change.rb b/app/jobs/regular/notify_category_change.rb index bac94a20e0..fbad7582e4 100644 --- a/app/jobs/regular/notify_category_change.rb +++ b/app/jobs/regular/notify_category_change.rb @@ -7,7 +7,7 @@ module Jobs if post&.topic&.visible? post_alerter = PostAlerter.new - post_alerter.notify_post_users(post, User.where(id: args[:notified_user_ids])) + post_alerter.notify_post_users(post, User.where(id: args[:notified_user_ids]), include_tag_watchers: false) post_alerter.notify_first_post_watchers(post, post_alerter.category_watchers(post.topic)) end end diff --git a/app/jobs/regular/notify_tag_change.rb b/app/jobs/regular/notify_tag_change.rb index fe4f85052b..dff6769de9 100644 --- a/app/jobs/regular/notify_tag_change.rb +++ b/app/jobs/regular/notify_tag_change.rb @@ -7,7 +7,7 @@ module Jobs if post&.topic&.visible? post_alerter = PostAlerter.new - post_alerter.notify_post_users(post, User.where(id: args[:notified_user_ids])) + post_alerter.notify_post_users(post, User.where(id: args[:notified_user_ids]), include_category_watchers: false) post_alerter.notify_first_post_watchers(post, post_alerter.tag_watchers(post.topic)) end end diff --git a/app/services/post_alerter.rb b/app/services/post_alerter.rb index d71e4b4914..6784abd207 100644 --- a/app/services/post_alerter.rb +++ b/app/services/post_alerter.rb @@ -559,7 +559,7 @@ class PostAlerter end end - def notify_post_users(post, notified) + def notify_post_users(post, notified, include_category_watchers: true, include_tag_watchers: true) return unless post.topic warn_if_not_sidekiq @@ -570,8 +570,14 @@ class PostAlerter FROM topic_users WHERE notification_level = :watching AND topic_id = :topic_id + /*category*/ + /*tags*/ + ) + SQL - UNION + if include_category_watchers + condition.sub! "/*category*/", <<~SQL + UNION SELECT cu.user_id FROM category_users cu @@ -580,14 +586,12 @@ class PostAlerter WHERE cu.notification_level = :watching AND cu.category_id = :category_id AND tu.user_id IS NULL - - /*tags*/ - ) - SQL + SQL + end tag_ids = post.topic.topic_tags.pluck('topic_tags.tag_id') - if tag_ids.present? + if include_tag_watchers && tag_ids.present? condition.sub! "/*tags*/", <<~SQL UNION diff --git a/spec/jobs/notify_tag_change_spec.rb b/spec/jobs/notify_tag_change_spec.rb index 3f22cde400..9d6e0053e3 100644 --- a/spec/jobs/notify_tag_change_spec.rb +++ b/spec/jobs/notify_tag_change_spec.rb @@ -25,4 +25,13 @@ describe ::Jobs::NotifyTagChange do expect(notification.user_id).to eq(user.id) expect(notification.topic_id).to eq(post.topic_id) end + + it 'doesnt create notification for user watching category' do + CategoryUser.create!( + user_id: user.id, + category_id: post.topic.category_id, + notification_level: TopicUser.notification_levels[:watching] + ) + expect { described_class.new.execute(post_id: post.id, notified_user_ids: [regular_user.id]) }.not_to change { Notification.count } + end end From 5d4b240453d0e0e2d75d9a32b0a4551d6a4af982 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Tue, 12 Nov 2019 10:47:42 +0100 Subject: [PATCH 083/408] DEV: Provide radix argument to parseInt (#8281) * DEV: Provide radix 10 argument to parseInt * DEV: Provide radix 16 argument to parseInt * DEV: Remove unnecessary parseInt calls * Fix year formatting parseInt was used here to convert decimals to ints --- .../admin-customize-themes-show.js.es6 | 6 +++--- .../admin/models/color-scheme-color.js.es6 | 6 +++--- .../admin/routes/admin-badges-show.js.es6 | 2 +- .../routes/admin-customize-colors-show.js.es6 | 2 +- .../routes/admin-customize-themes-edit.js.es6 | 2 +- .../routes/admin-customize-themes-show.js.es6 | 2 +- .../discourse/components/badge-title.js.es6 | 2 +- .../components/basic-topic-list.js.es6 | 2 +- .../components/composer-editor.js.es6 | 4 ++-- .../discourse/components/d-editor.js.es6 | 2 +- .../components/edit-category-general.js.es6 | 2 +- .../components/edit-category-security.js.es6 | 2 +- .../discourse/components/emoji-picker.js.es6 | 2 +- .../groups-form-membership-fields.js.es6 | 4 ++-- .../discourse/components/number-field.js.es6 | 4 ++-- .../discourse/components/site-header.js.es6 | 18 ++++++++---------- .../discourse/components/topic-entrance.js.es6 | 4 ++-- .../discourse/components/topic-timeline.js.es6 | 2 +- .../discourse/controllers/composer.js.es6 | 2 +- .../discourse/controllers/jump-to-post.js.es6 | 2 +- .../controllers/reorder-categories.js.es6 | 2 +- .../discourse/helpers/application.js.es6 | 2 +- .../initializers/live-development.js.es6 | 2 +- .../initializers/post-decorations.js.es6 | 2 +- .../javascripts/discourse/lib/formatter.js.es6 | 6 +++--- .../discourse/lib/key-value-store.js.es6 | 2 +- .../discourse/lib/push-notifications.js.es6 | 2 +- .../discourse/lib/screen-track.js.es6 | 2 +- .../discourse/lib/to-markdown.js.es6 | 4 ++-- .../discourse/models/action-summary.js.es6 | 4 ++-- .../javascripts/discourse/models/group.js.es6 | 2 +- .../discourse/widgets/hamburger-menu.js.es6 | 2 +- ...liked-consolidated-notification-item.js.es6 | 2 +- .../javascripts/discourse/widgets/link.js.es6 | 2 +- .../javascripts/discourse/widgets/post.js.es6 | 2 +- .../discourse/widgets/user-menu.js.es6 | 2 +- .../engines/discourse-markdown-it.js.es6 | 12 ++++++------ .../components/mini-tag-chooser.js.es6 | 2 +- .../select-kit/components/tag-chooser.js.es6 | 2 +- .../javascripts/initializers/lazyYT.js.es6 | 2 +- .../controllers/poll-ui-builder.js.es6 | 4 ++-- .../helpers/create-pretender.js.es6 | 14 +++++++------- .../helpers/review-pretender.js.es6 | 2 +- .../javascripts/helpers/store-pretender.js.es6 | 6 +++--- 44 files changed, 77 insertions(+), 79 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 index aa4c32ce33..acf195e3a9 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 @@ -36,7 +36,7 @@ export default Controller.extend({ @discourseComputed("colorSchemeId", "model.color_scheme_id") colorSchemeChanged(colorSchemeId, existingId) { - colorSchemeId = colorSchemeId === null ? null : parseInt(colorSchemeId); + colorSchemeId = colorSchemeId === null ? null : parseInt(colorSchemeId, 10); return colorSchemeId !== existingId; }, @@ -189,7 +189,7 @@ export default Controller.extend({ let schemeId = this.colorSchemeId; this.set( "model.color_scheme_id", - schemeId === null ? null : parseInt(schemeId) + schemeId === null ? null : parseInt(schemeId, 10) ); this.model.saveChanges("color_scheme_id"); }, @@ -239,7 +239,7 @@ export default Controller.extend({ }, addChildTheme() { - let themeId = parseInt(this.selectedChildThemeId); + let themeId = parseInt(this.selectedChildThemeId, 10); let theme = this.allThemes.findBy("id", themeId); this.model.addChildTheme(theme); }, diff --git a/app/assets/javascripts/admin/models/color-scheme-color.js.es6 b/app/assets/javascripts/admin/models/color-scheme-color.js.es6 index 0d984c77a6..2e4907ef9f 100644 --- a/app/assets/javascripts/admin/models/color-scheme-color.js.es6 +++ b/app/assets/javascripts/admin/models/color-scheme-color.js.es6 @@ -80,9 +80,9 @@ const ColorSchemeColor = EmberObject.extend({ hex.substr(2, 1); } return Math.round( - (parseInt("0x" + hex.substr(0, 2)) * 299 + - parseInt("0x" + hex.substr(2, 2)) * 587 + - parseInt("0x" + hex.substr(4, 2)) * 114) / + (parseInt(hex.substr(0, 2), 16) * 299 + + parseInt(hex.substr(2, 2), 16) * 587 + + parseInt(hex.substr(4, 2), 16) * 114) / 1000 ); } diff --git a/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 b/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 index 64ef45aebe..5a94643d42 100644 --- a/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 @@ -15,7 +15,7 @@ export default Route.extend({ name: I18n.t("admin.badges.new_badge") }); } - return this.modelFor("adminBadges").findBy("id", parseInt(params.badge_id)); + return this.modelFor("adminBadges").findBy("id", parseInt(params.badge_id, 10)); }, actions: { diff --git a/app/assets/javascripts/admin/routes/admin-customize-colors-show.js.es6 b/app/assets/javascripts/admin/routes/admin-customize-colors-show.js.es6 index 146a3a61a9..8807df2c56 100644 --- a/app/assets/javascripts/admin/routes/admin-customize-colors-show.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-customize-colors-show.js.es6 @@ -2,7 +2,7 @@ import Route from "@ember/routing/route"; export default Route.extend({ model(params) { const all = this.modelFor("adminCustomize.colors"); - const model = all.findBy("id", parseInt(params.scheme_id)); + const model = all.findBy("id", parseInt(params.scheme_id, 10)); return model ? model : this.replaceWith("adminCustomize.colors.index"); }, diff --git a/app/assets/javascripts/admin/routes/admin-customize-themes-edit.js.es6 b/app/assets/javascripts/admin/routes/admin-customize-themes-edit.js.es6 index 335e9fd578..62a70f0d7c 100644 --- a/app/assets/javascripts/admin/routes/admin-customize-themes-edit.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-customize-themes-edit.js.es6 @@ -2,7 +2,7 @@ import Route from "@ember/routing/route"; export default Route.extend({ model(params) { const all = this.modelFor("adminCustomizeThemes"); - const model = all.findBy("id", parseInt(params.theme_id)); + const model = all.findBy("id", parseInt(params.theme_id, 10)); return model ? { model, diff --git a/app/assets/javascripts/admin/routes/admin-customize-themes-show.js.es6 b/app/assets/javascripts/admin/routes/admin-customize-themes-show.js.es6 index c9573fd8ac..408917b57a 100644 --- a/app/assets/javascripts/admin/routes/admin-customize-themes-show.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-customize-themes-show.js.es6 @@ -9,7 +9,7 @@ export default Route.extend({ model(params) { const all = this.modelFor("adminCustomizeThemes"); - const model = all.findBy("id", parseInt(params.theme_id)); + const model = all.findBy("id", parseInt(params.theme_id, 10)); return model ? model : this.replaceWith("adminCustomizeTheme.index"); }, diff --git a/app/assets/javascripts/discourse/components/badge-title.js.es6 b/app/assets/javascripts/discourse/components/badge-title.js.es6 index 7f1292e2e7..ad80c39ddc 100644 --- a/app/assets/javascripts/discourse/components/badge-title.js.es6 +++ b/app/assets/javascripts/discourse/components/badge-title.js.es6 @@ -10,7 +10,7 @@ export default Component.extend({ @discourseComputed("selectableUserBadges", "selectedUserBadgeId") selectedUserBadge(selectableUserBadges, selectedUserBadgeId) { - return selectableUserBadges.findBy("id", parseInt(selectedUserBadgeId)); + return selectableUserBadges.findBy("id", parseInt(selectedUserBadgeId, 10)); }, actions: { diff --git a/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 b/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 index c9ce38c339..be4ec964c2 100644 --- a/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 +++ b/app/assets/javascripts/discourse/components/basic-topic-list.js.es6 @@ -105,7 +105,7 @@ export default Component.extend({ } } - const topic = this.topics.findBy("id", parseInt(topicId)); + const topic = this.topics.findBy("id", parseInt(topicId, 10)); this.appEvents.trigger("topic-entrance:show", { topic, position: target.offset() diff --git a/app/assets/javascripts/discourse/components/composer-editor.js.es6 b/app/assets/javascripts/discourse/components/composer-editor.js.es6 index d997c3f4f6..6c6e92c074 100644 --- a/app/assets/javascripts/discourse/components/composer-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-editor.js.es6 @@ -273,7 +273,7 @@ export default Component.extend({ const lastMatch = matchingPlaceholder[matchingPlaceholder.length - 1]; const regex = new RegExp(regexString); const orderNr = regex.exec(lastMatch)[1] - ? parseInt(regex.exec(lastMatch)[1]) + 1 + ? parseInt(regex.exec(lastMatch)[1], 10) + 1 : 1; data.orderNr = orderNr; const filenameWithOrderNr = `${filename}(${orderNr})`; @@ -823,7 +823,7 @@ export default Component.extend({ $(e.target) .parent() .attr("data-image-index") - ); + , 10); const scale = e.target.attributes["data-scale"].value; const matchingPlaceholder = this.get("composer.reply").match( diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index f102a47886..5173f41d89 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -138,7 +138,7 @@ class Toolbar { shortcut: "Shift+7", title: "composer.olist_title", perform: e => - e.applyList(i => (!i ? "1. " : `${parseInt(i) + 1}. `), "list_item") + e.applyList(i => (!i ? "1. " : `${parseInt(i, 10) + 1}. `), "list_item") }); if (siteSettings.support_mixed_text_direction) { diff --git a/app/assets/javascripts/discourse/components/edit-category-general.js.es6 b/app/assets/javascripts/discourse/components/edit-category-general.js.es6 index a1f95d117a..bdcdf440dc 100644 --- a/app/assets/javascripts/discourse/components/edit-category-general.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-general.js.es6 @@ -76,7 +76,7 @@ export default buildCategoryPanel("general", { name, color, text_color: textColor, - parent_category_id: parseInt(parentCategoryId), + parent_category_id: parseInt(parentCategoryId, 10), read_restricted: category.get("read_restricted") }); return categoryBadgeHTML(c, { link: false }); diff --git a/app/assets/javascripts/discourse/components/edit-category-security.js.es6 b/app/assets/javascripts/discourse/components/edit-category-security.js.es6 index 013e620671..00ad068467 100644 --- a/app/assets/javascripts/discourse/components/edit-category-security.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-security.js.es6 @@ -38,7 +38,7 @@ export default buildCategoryPanel("security", { if (!this.get("category.is_special")) { this.category.addPermission({ group_name: group + "", - permission: PermissionType.create({ id: parseInt(id) }) + permission: PermissionType.create({ id: parseInt(id, 10) }) }); } diff --git a/app/assets/javascripts/discourse/components/emoji-picker.js.es6 b/app/assets/javascripts/discourse/components/emoji-picker.js.es6 index 7d4d92e7ee..6c8464bca3 100644 --- a/app/assets/javascripts/discourse/components/emoji-picker.js.es6 +++ b/app/assets/javascripts/discourse/components/emoji-picker.js.es6 @@ -442,7 +442,7 @@ export default Component.extend({ ); $diversityScales.on("click", event => { const $selectedDiversity = $(event.currentTarget); - this.set("selectedDiversity", parseInt($selectedDiversity.data("level"))); + this.set("selectedDiversity", parseInt($selectedDiversity.data("level"), 10)); return false; }); }, diff --git a/app/assets/javascripts/discourse/components/groups-form-membership-fields.js.es6 b/app/assets/javascripts/discourse/components/groups-form-membership-fields.js.es6 index 1b5be47e6a..b85eef4fa5 100644 --- a/app/assets/javascripts/discourse/components/groups-form-membership-fields.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-form-membership-fields.js.es6 @@ -19,7 +19,7 @@ export default Component.extend({ @discourseComputed("model.visibility_level", "model.public_admission") disableMembershipRequestSetting(visibility_level, publicAdmission) { - visibility_level = parseInt(visibility_level); + visibility_level = parseInt(visibility_level, 10); return publicAdmission || visibility_level > 1; }, @@ -28,7 +28,7 @@ export default Component.extend({ "model.allow_membership_requests" ) disablePublicSetting(visibility_level, allowMembershipRequests) { - visibility_level = parseInt(visibility_level); + visibility_level = parseInt(visibility_level, 10); return allowMembershipRequests || visibility_level > 1; } }); diff --git a/app/assets/javascripts/discourse/components/number-field.js.es6 b/app/assets/javascripts/discourse/components/number-field.js.es6 index 9de92f0afe..ca2db4d124 100644 --- a/app/assets/javascripts/discourse/components/number-field.js.es6 +++ b/app/assets/javascripts/discourse/components/number-field.js.es6 @@ -6,10 +6,10 @@ export default Ember.TextField.extend({ @discourseComputed("number") value: { get(number) { - return parseInt(number); + return parseInt(number, 10); }, set(value) { - const num = parseInt(value); + const num = parseInt(value, 10); if (isNaN(num)) { this.set("invalid", true); return value; diff --git a/app/assets/javascripts/discourse/components/site-header.js.es6 b/app/assets/javascripts/discourse/components/site-header.js.es6 index 9bdd8f0d8b..43253d7db3 100644 --- a/app/assets/javascripts/discourse/components/site-header.js.es6 +++ b/app/assets/javascripts/discourse/components/site-header.js.es6 @@ -65,7 +65,7 @@ const SiteHeaderComponent = MountWidget.extend(Docking, PanEvents, { _handlePanDone(offset, event) { const $window = $(window); - const windowWidth = parseInt($window.width()); + const windowWidth = $window.width(); const $menuPanels = $(".menu-panel"); const menuOrigin = this._panMenuOrigin; this._shouldMenuClose(event, menuOrigin) @@ -246,16 +246,16 @@ const SiteHeaderComponent = MountWidget.extend(Docking, PanEvents, { } const $window = $(window); - const windowWidth = parseInt($window.width()); + const windowWidth = $window.width(); const headerWidth = $("#main-outlet .container").width() || 1100; - const remaining = parseInt((windowWidth - headerWidth) / 2); + const remaining = (windowWidth - headerWidth) / 2; const viewMode = remaining < 50 ? "slide-in" : "drop-down"; $menuPanels.each((idx, panel) => { const $panel = $(panel); const $headerCloak = $(".header-cloak"); - let width = parseInt($panel.attr("data-max-width") || 300); + let width = parseInt($panel.attr("data-max-width"), 10) || 300; if (windowWidth - width < 50) { width = windowWidth - 50; } @@ -281,7 +281,7 @@ const SiteHeaderComponent = MountWidget.extend(Docking, PanEvents, { const $panelBody = $(".panel-body", $panel); // 2 pixel fudge allows for firefox subpixel sizing stuff causing scrollbar let contentHeight = - parseInt($(".panel-body-contents", $panel).height()) + 2; + $(".panel-body-contents", $panel).height() + 2; // We use a mutationObserver to check for style changes, so it's important // we don't set it if it doesn't change. Same goes for the $panelBody! @@ -300,7 +300,7 @@ const SiteHeaderComponent = MountWidget.extend(Docking, PanEvents, { } // adjust panel height - const fullHeight = parseInt($window.height()); + const fullHeight = $window.height(); const offsetTop = $panel.offset().top; const scrollTop = $window.scrollTop(); @@ -373,14 +373,12 @@ export function headerHeight() { const headerOffset = $header.offset(); const headerOffsetTop = headerOffset ? headerOffset.top : 0; - return parseInt( - $header.outerHeight() + headerOffsetTop - $(window).scrollTop() - ); + return $header.outerHeight() + headerOffsetTop - $(window).scrollTop(); } export function headerTop() { const $header = $("header.d-header"); const headerOffset = $header.offset(); const headerOffsetTop = headerOffset ? headerOffset.top : 0; - return parseInt(headerOffsetTop - $(window).scrollTop()); + return headerOffsetTop - $(window).scrollTop(); } diff --git a/app/assets/javascripts/discourse/components/topic-entrance.js.es6 b/app/assets/javascripts/discourse/components/topic-entrance.js.es6 index 3cfa8feb6a..b27a7fe15d 100644 --- a/app/assets/javascripts/discourse/components/topic-entrance.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-entrance.js.es6 @@ -63,8 +63,8 @@ export default Component.extend(CleansUp, { const $self = $(this.element); const width = $self.width(); const height = $self.height(); - pos.left = parseInt(pos.left) - width / 2; - pos.top = parseInt(pos.top) - height / 2; + pos.left = parseInt(pos.left, 10) - width / 2; + pos.top = parseInt(pos.top, 10) - height / 2; const windowWidth = $(window).width(); if (pos.left + width > windowWidth) { diff --git a/app/assets/javascripts/discourse/components/topic-timeline.js.es6 b/app/assets/javascripts/discourse/components/topic-timeline.js.es6 index b802d47586..64f0dbc2d8 100644 --- a/app/assets/javascripts/discourse/components/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-timeline.js.es6 @@ -5,7 +5,7 @@ import { observes } from "discourse-common/utils/decorators"; import optionalService from "discourse/lib/optional-service"; const headerPadding = () => { - let topPadding = parseInt($("#main-outlet").css("padding-top")) + 3; + let topPadding = parseInt($("#main-outlet").css("padding-top"), 10) + 3; const iPadNavHeight = $(".footer-nav-ipad .footer-nav").height(); if (iPadNavHeight) { topPadding += iPadNavHeight; diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index e3d5ae3c0d..90e0429aaa 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -702,7 +702,7 @@ export default Controller.extend({ if (this.get("model.editingPost")) { this.appEvents.trigger("post-stream:refresh", { - id: parseInt(result.responseJson.id) + id: parseInt(result.responseJson.id, 10) }); if (result.responseJson.post.post_number === 1) { this.appEvents.trigger("header:update-topic", composer.topic); diff --git a/app/assets/javascripts/discourse/controllers/jump-to-post.js.es6 b/app/assets/javascripts/discourse/controllers/jump-to-post.js.es6 index 35981f39a7..cd3b95936f 100644 --- a/app/assets/javascripts/discourse/controllers/jump-to-post.js.es6 +++ b/app/assets/javascripts/discourse/controllers/jump-to-post.js.es6 @@ -24,7 +24,7 @@ export default Controller.extend(ModalFunctionality, { }, _jumpToIndex(postsCounts, postNumber) { - const where = Math.min(postsCounts, Math.max(1, parseInt(postNumber))); + const where = Math.min(postsCounts, Math.max(1, parseInt(postNumber, 10))); this.jumpToIndex(where); this._close(); }, diff --git a/app/assets/javascripts/discourse/controllers/reorder-categories.js.es6 b/app/assets/javascripts/discourse/controllers/reorder-categories.js.es6 index cf7c2ca7cb..baaddc1825 100644 --- a/app/assets/javascripts/discourse/controllers/reorder-categories.js.es6 +++ b/app/assets/javascripts/discourse/controllers/reorder-categories.js.es6 @@ -115,7 +115,7 @@ export default Controller.extend(ModalFunctionality, Ember.Evented, { actions: { change(cat, e) { - let position = parseInt($(e.target).val()); + let position = parseInt($(e.target).val(), 10); let amount = Math.min( Math.max(position, 0), this.categoriesOrdered.length - 1 diff --git a/app/assets/javascripts/discourse/helpers/application.js.es6 b/app/assets/javascripts/discourse/helpers/application.js.es6 index 0710d8b939..cff377e323 100644 --- a/app/assets/javascripts/discourse/helpers/application.js.es6 +++ b/app/assets/javascripts/discourse/helpers/application.js.es6 @@ -22,7 +22,7 @@ registerUnbound("number", (orig, params) => { let title = I18n.toNumber(orig, { precision: 0 }); if (params.numberKey) { - title = I18n.t(params.numberKey, { number: title, count: parseInt(orig) }); + title = I18n.t(params.numberKey, { number: title, count: parseInt(orig, 10) }); } let classNames = "number"; diff --git a/app/assets/javascripts/discourse/initializers/live-development.js.es6 b/app/assets/javascripts/discourse/initializers/live-development.js.es6 index 5c2d973d31..5cdbcb96ca 100644 --- a/app/assets/javascripts/discourse/initializers/live-development.js.es6 +++ b/app/assets/javascripts/discourse/initializers/live-development.js.es6 @@ -13,7 +13,7 @@ export default { window.location.search.indexOf("?preview_theme_id=") === 0 ) { // force preview theme id to always be carried along - const themeId = parseInt(window.location.search.slice(18).split("&")[0]); + const themeId = parseInt(window.location.search.slice(18).split("&")[0], 10); if (!isNaN(themeId)) { const patchState = function(f) { const patched = window.history[f]; diff --git a/app/assets/javascripts/discourse/initializers/post-decorations.js.es6 b/app/assets/javascripts/discourse/initializers/post-decorations.js.es6 index a9e1cc24d0..75ddbdfdae 100644 --- a/app/assets/javascripts/discourse/initializers/post-decorations.js.es6 +++ b/app/assets/javascripts/discourse/initializers/post-decorations.js.es6 @@ -26,7 +26,7 @@ export default { const players = $("audio", $elem); if (players.length) { players.on("play", () => { - const postId = parseInt($elem.closest("article").data("post-id")); + const postId = parseInt($elem.closest("article").data("post-id"), 10); if (postId) { api.preventCloak(postId); } diff --git a/app/assets/javascripts/discourse/lib/formatter.js.es6 b/app/assets/javascripts/discourse/lib/formatter.js.es6 index 2f71c83658..28bdb6cef2 100644 --- a/app/assets/javascripts/discourse/lib/formatter.js.es6 +++ b/app/assets/javascripts/discourse/lib/formatter.js.es6 @@ -195,11 +195,11 @@ export function durationTiny(distance, ageOpts) { const numYears = distanceInMinutes / 525600.0; const remainder = numYears % 1; if (remainder < 0.25) { - formatted = t("about_x_years", { count: parseInt(numYears) }); + formatted = t("about_x_years", { count: Math.floor(numYears) }); } else if (remainder < 0.75) { - formatted = t("over_x_years", { count: parseInt(numYears) }); + formatted = t("over_x_years", { count: Math.floor(numYears) }); } else { - formatted = t("almost_x_years", { count: parseInt(numYears) + 1 }); + formatted = t("almost_x_years", { count: Math.floor(numYears) + 1 }); } break; diff --git a/app/assets/javascripts/discourse/lib/key-value-store.js.es6 b/app/assets/javascripts/discourse/lib/key-value-store.js.es6 index c45501cf05..a0a0a5dcaa 100644 --- a/app/assets/javascripts/discourse/lib/key-value-store.js.es6 +++ b/app/assets/javascripts/discourse/lib/key-value-store.js.es6 @@ -67,7 +67,7 @@ KeyValueStore.prototype = { if (!safeLocalStorage) { return def; } - const result = parseInt(this.get(key)); + const result = parseInt(this.get(key), 10); if (!isFinite(result)) { return def; } diff --git a/app/assets/javascripts/discourse/lib/push-notifications.js.es6 b/app/assets/javascripts/discourse/lib/push-notifications.js.es6 index 00f15d0fab..1b73a29117 100644 --- a/app/assets/javascripts/discourse/lib/push-notifications.js.es6 +++ b/app/assets/javascripts/discourse/lib/push-notifications.js.es6 @@ -22,7 +22,7 @@ function userAgentVersionChecker(agent, version, mobileView) { new RegExp(`${agent}\/(\\d+)\\.\\d`) ); if (uaMatch && mobileView) return false; - if (!uaMatch || parseInt(uaMatch[1]) < version) return false; + if (!uaMatch || parseInt(uaMatch[1], 10) < version) return false; return true; } diff --git a/app/assets/javascripts/discourse/lib/screen-track.js.es6 b/app/assets/javascripts/discourse/lib/screen-track.js.es6 index 314e1fac0a..91e0d42a83 100644 --- a/app/assets/javascripts/discourse/lib/screen-track.js.es6 +++ b/app/assets/javascripts/discourse/lib/screen-track.js.es6 @@ -187,7 +187,7 @@ export default class { // Save unique topic IDs up to a max let topicIds = storage.get("anon-topic-ids"); if (topicIds) { - topicIds = topicIds.split(",").map(e => parseInt(e)); + topicIds = topicIds.split(",").map(e => parseInt(e, 10)); } else { topicIds = []; } diff --git a/app/assets/javascripts/discourse/lib/to-markdown.js.es6 b/app/assets/javascripts/discourse/lib/to-markdown.js.es6 index 4a3c486251..0e71b585c5 100644 --- a/app/assets/javascripts/discourse/lib/to-markdown.js.es6 +++ b/app/assets/javascripts/discourse/lib/to-markdown.js.es6 @@ -322,7 +322,7 @@ export class Tag { try { const level = parseInt( attrs.style.match(/level./)[0].replace("level", "") - ); + , 10); indent = Array(level).join("\t") + indent; } finally { if (attrs.class === "MsoListParagraphCxSpFirst") { @@ -448,7 +448,7 @@ export class Tag { const bullet = text.match(/\n\t*\*/)[0]; for ( - let i = parseInt(this.element.attributes.start || 1); + let i = parseInt(this.element.attributes.start || 1, 10); text.includes(bullet); i++ ) { diff --git a/app/assets/javascripts/discourse/models/action-summary.js.es6 b/app/assets/javascripts/discourse/models/action-summary.js.es6 index ce8259b9c0..4d48ccf1bc 100644 --- a/app/assets/javascripts/discourse/models/action-summary.js.es6 +++ b/app/assets/javascripts/discourse/models/action-summary.js.es6 @@ -61,10 +61,10 @@ export default RestModel.extend({ } const remaining = parseInt( data.xhr.getResponseHeader("Discourse-Actions-Remaining") || 0 - ); + , 10); const max = parseInt( data.xhr.getResponseHeader("Discourse-Actions-Max") || 0 - ); + , 10); return { acted: true, remaining, max }; }) .catch(error => { diff --git a/app/assets/javascripts/discourse/models/group.js.es6 b/app/assets/javascripts/discourse/models/group.js.es6 index f8bed56d59..4d6455e891 100644 --- a/app/assets/javascripts/discourse/models/group.js.es6 +++ b/app/assets/javascripts/discourse/models/group.js.es6 @@ -236,7 +236,7 @@ const Group = RestModel.extend({ } if (opts.categoryId) { - data.category_id = parseInt(opts.categoryId); + data.category_id = parseInt(opts.categoryId, 10); } return ajax(`/groups/${this.name}/${type}.json`, { data }).then(posts => { diff --git a/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 b/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 index be146f4285..38af3cd7d9 100644 --- a/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 +++ b/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 @@ -339,7 +339,7 @@ export default createWidget("hamburger-menu", { this.sendWidgetAction("toggleHamburger"); } else { const $window = $(window); - const windowWidth = parseInt($window.width(), 10); + const windowWidth = $window.width(); const $panel = $(".menu-panel"); $panel.addClass("animate"); const panelOffsetDirection = this.site.mobileView ? "left" : "right"; diff --git a/app/assets/javascripts/discourse/widgets/liked-consolidated-notification-item.js.es6 b/app/assets/javascripts/discourse/widgets/liked-consolidated-notification-item.js.es6 index 96a3604255..bc4ce3f43f 100644 --- a/app/assets/javascripts/discourse/widgets/liked-consolidated-notification-item.js.es6 +++ b/app/assets/javascripts/discourse/widgets/liked-consolidated-notification-item.js.es6 @@ -22,7 +22,7 @@ createWidgetFrom( const description = I18n.t( "notifications.liked_consolidated_description", { - count: parseInt(data.count) + count: parseInt(data.count, 10) } ); diff --git a/app/assets/javascripts/discourse/widgets/link.js.es6 b/app/assets/javascripts/discourse/widgets/link.js.es6 index 841fda069f..1194e1c8ae 100644 --- a/app/assets/javascripts/discourse/widgets/link.js.es6 +++ b/app/assets/javascripts/discourse/widgets/link.js.es6 @@ -79,7 +79,7 @@ export default createWidget("link", { const currentUser = this.currentUser; if (currentUser && attrs.badgeCount) { - const val = parseInt(currentUser.get(attrs.badgeCount)); + const val = parseInt(currentUser.get(attrs.badgeCount), 10); if (val > 0) { const title = attrs.badgeTitle ? I18n.t(attrs.badgeTitle) : ""; result.push(" "); diff --git a/app/assets/javascripts/discourse/widgets/post.js.es6 b/app/assets/javascripts/discourse/widgets/post.js.es6 index 8eec4318a8..6602f1810a 100644 --- a/app/assets/javascripts/discourse/widgets/post.js.es6 +++ b/app/assets/javascripts/discourse/widgets/post.js.es6 @@ -709,7 +709,7 @@ export default createWidget("post", { // only warn once per day const yesterday = new Date().getTime() - 1000 * 60 * 60 * 24; - if (lastWarnedLikes && parseInt(lastWarnedLikes) > yesterday) { + if (lastWarnedLikes && parseInt(lastWarnedLikes, 10) > yesterday) { return; } diff --git a/app/assets/javascripts/discourse/widgets/user-menu.js.es6 b/app/assets/javascripts/discourse/widgets/user-menu.js.es6 index cf669d1edc..488ea63c02 100644 --- a/app/assets/javascripts/discourse/widgets/user-menu.js.es6 +++ b/app/assets/javascripts/discourse/widgets/user-menu.js.es6 @@ -221,7 +221,7 @@ export default createWidget("user-menu", { this.sendWidgetAction("toggleUserMenu"); } else { const $window = $(window); - const windowWidth = parseInt($window.width(), 10); + const windowWidth = $window.width(); const $panel = $(".menu-panel"); $panel.addClass("animate"); $panel.css("right", -windowWidth); diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown-it.js.es6 b/app/assets/javascripts/pretty-text/engines/discourse-markdown-it.js.es6 index 7bf824de7f..c491468745 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown-it.js.es6 +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown-it.js.es6 @@ -145,22 +145,22 @@ function renderImage(tokens, idx, options, env, slf) { // calculate using percentage if (match[5] && match[6] && match[6] === "%") { let percent = parseFloat(match[5]) / 100.0; - width = parseInt(width * percent); - height = parseInt(height * percent); + width = parseInt(width * percent, 10); + height = parseInt(height * percent, 10); } // calculate using only given width if (match[5] && match[6] && match[6] === "x") { let wr = parseFloat(match[5]) / width; - width = parseInt(match[5]); - height = parseInt(height * wr); + width = parseInt(match[5], 10); + height = parseInt(height * wr, 10); } // calculate using only given height if (match[5] && match[4] && match[4] === "x" && !match[6]) { let hr = parseFloat(match[5]) / height; - height = parseInt(match[5]); - width = parseInt(width * hr); + height = parseInt(match[5], 10); + width = parseInt(width * hr, 10); } if (token.attrIndex("width") === -1) { diff --git a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 index 1b4689b933..61f2539940 100644 --- a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 @@ -52,7 +52,7 @@ export default ComboBox.extend(TagsMixin, { this.limit || this.maximum || this.get("siteSettings.max_tags_per_topic") - ) + , 10) ); }, diff --git a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 index 247a8eeab1..439a0ee05e 100644 --- a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 @@ -47,7 +47,7 @@ export default MultiSelectComponent.extend(TagsMixin, { this.limit || this.maximum || this.get("siteSettings.max_tags_per_topic") - ) + , 10) ); } }, diff --git a/plugins/lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 b/plugins/lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 index b34dd942b8..4afe9a0775 100644 --- a/plugins/lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 +++ b/plugins/lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 @@ -14,7 +14,7 @@ export default { $(".lazyYT", $elem).lazyYT({ onPlay(e, $el) { // don't cloak posts that have playing videos in them - const postId = parseInt($el.closest("article").data("post-id")); + const postId = parseInt($el.closest("article").data("post-id"), 10); if (postId) { api.preventCloak(postId); } diff --git a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 index 14d9073e9e..76f06ae027 100644 --- a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 +++ b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 @@ -140,7 +140,7 @@ export default Controller.extend({ ) pollMaxOptions(isRegular, isMultiple, isNumber, count, pollMin, pollStep) { if (isRegular) return; - const pollMinInt = parseInt(pollMin) || 1; + const pollMinInt = parseInt(pollMin, 10) || 1; if (isMultiple) { return this._comboboxOptions(pollMinInt + 1, count + 1); @@ -159,7 +159,7 @@ export default Controller.extend({ @computed("isNumber", "pollMax") pollStepOptions(isNumber, pollMax) { if (!isNumber) return; - return this._comboboxOptions(1, (parseInt(pollMax) || 1) + 1); + return this._comboboxOptions(1, (parseInt(pollMax, 10) || 1) + 1); }, @computed( diff --git a/test/javascripts/helpers/create-pretender.js.es6 b/test/javascripts/helpers/create-pretender.js.es6 index 74d93e38ff..22d1618edc 100644 --- a/test/javascripts/helpers/create-pretender.js.es6 +++ b/test/javascripts/helpers/create-pretender.js.es6 @@ -436,25 +436,25 @@ export default function() { this.get("/t/:topic_id/posts.json", request => { const postIds = request.queryParams.post_ids; - const postNumber = parseInt(request.queryParams.post_number); + const postNumber = parseInt(request.queryParams.post_number, 10); let posts; if (postIds) { posts = postIds.map(p => ({ - id: parseInt(p), - post_number: parseInt(p) + id: parseInt(p, 10), + post_number: parseInt(p, 10) })); } else if (postNumber && request.queryParams.asc === "true") { posts = _.range(postNumber + 1, postNumber + 6).map(p => ({ - id: parseInt(p), - post_number: parseInt(p) + id: parseInt(p, 10), + post_number: parseInt(p, 10) })); } else if (postNumber && request.queryParams.asc === "false") { posts = _.range(postNumber - 5, postNumber) .reverse() .map(p => ({ - id: parseInt(p), - post_number: parseInt(p) + id: parseInt(p, 10), + post_number: parseInt(p, 10) })); } diff --git a/test/javascripts/helpers/review-pretender.js.es6 b/test/javascripts/helpers/review-pretender.js.es6 index 26bb589e12..c37e63b7f8 100644 --- a/test/javascripts/helpers/review-pretender.js.es6 +++ b/test/javascripts/helpers/review-pretender.js.es6 @@ -128,7 +128,7 @@ export default function(helpers) { return response(200, { reviewable_perform_result: { success: true, - remove_reviewable_ids: [parseInt(request.params.id)] + remove_reviewable_ids: [parseInt(request.params.id, 10)] } }); }); diff --git a/test/javascripts/helpers/store-pretender.js.es6 b/test/javascripts/helpers/store-pretender.js.es6 index e30cd10572..30be5640f7 100644 --- a/test/javascripts/helpers/store-pretender.js.es6 +++ b/test/javascripts/helpers/store-pretender.js.es6 @@ -30,7 +30,7 @@ export default function(helpers) { const { response, success, parsePostData } = helpers; this.get("/fruits/:id", function(request) { - const fruit = fruits.find(f => f.id === parseInt(request.params.id)); + const fruit = fruits.find(f => f.id === parseInt(request.params.id, 10)); return response({ __rest_serializer: "1", fruit, farmers, colors }); }); @@ -58,7 +58,7 @@ export default function(helpers) { }); this.get("/widgets/:widget_id", function(request) { - const w = _widgets.findBy("id", parseInt(request.params.widget_id)); + const w = _widgets.findBy("id", parseInt(request.params.widget_id, 10)); if (w) { return response({ widget: w, extras: { hello: "world" } }); } else { @@ -91,7 +91,7 @@ export default function(helpers) { result = result.filterBy("name", qp.name); } if (qp.id) { - result = result.filterBy("id", parseInt(qp.id)); + result = result.filterBy("id", parseInt(qp.id, 10)); } } From 9b841ea83fde9cb93beda48267b17f0f5279f09b Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Tue, 12 Nov 2019 11:49:31 +0100 Subject: [PATCH 084/408] DEV: Run prettier --- .../javascripts/admin/routes/admin-badges-show.js.es6 | 5 ++++- .../discourse/components/composer-editor.js.es6 | 5 +++-- .../discourse/components/emoji-picker.js.es6 | 5 ++++- .../discourse/components/site-header.js.es6 | 3 +-- .../javascripts/discourse/helpers/application.js.es6 | 5 ++++- .../discourse/initializers/live-development.js.es6 | 5 ++++- .../discourse/initializers/post-decorations.js.es6 | 5 ++++- .../javascripts/discourse/lib/to-markdown.js.es6 | 5 +++-- .../javascripts/discourse/models/action-summary.js.es6 | 10 ++++++---- .../select-kit/components/mini-tag-chooser.js.es6 | 5 +++-- .../select-kit/components/tag-chooser.js.es6 | 5 +++-- 11 files changed, 39 insertions(+), 19 deletions(-) diff --git a/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 b/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 index 5a94643d42..67acdcba58 100644 --- a/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-badges-show.js.es6 @@ -15,7 +15,10 @@ export default Route.extend({ name: I18n.t("admin.badges.new_badge") }); } - return this.modelFor("adminBadges").findBy("id", parseInt(params.badge_id, 10)); + return this.modelFor("adminBadges").findBy( + "id", + parseInt(params.badge_id, 10) + ); }, actions: { diff --git a/app/assets/javascripts/discourse/components/composer-editor.js.es6 b/app/assets/javascripts/discourse/components/composer-editor.js.es6 index 6c6e92c074..1f9c2e08f1 100644 --- a/app/assets/javascripts/discourse/components/composer-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-editor.js.es6 @@ -822,8 +822,9 @@ export default Component.extend({ const index = parseInt( $(e.target) .parent() - .attr("data-image-index") - , 10); + .attr("data-image-index"), + 10 + ); const scale = e.target.attributes["data-scale"].value; const matchingPlaceholder = this.get("composer.reply").match( diff --git a/app/assets/javascripts/discourse/components/emoji-picker.js.es6 b/app/assets/javascripts/discourse/components/emoji-picker.js.es6 index 6c8464bca3..fccf3c597f 100644 --- a/app/assets/javascripts/discourse/components/emoji-picker.js.es6 +++ b/app/assets/javascripts/discourse/components/emoji-picker.js.es6 @@ -442,7 +442,10 @@ export default Component.extend({ ); $diversityScales.on("click", event => { const $selectedDiversity = $(event.currentTarget); - this.set("selectedDiversity", parseInt($selectedDiversity.data("level"), 10)); + this.set( + "selectedDiversity", + parseInt($selectedDiversity.data("level"), 10) + ); return false; }); }, diff --git a/app/assets/javascripts/discourse/components/site-header.js.es6 b/app/assets/javascripts/discourse/components/site-header.js.es6 index 43253d7db3..38d42d9ea0 100644 --- a/app/assets/javascripts/discourse/components/site-header.js.es6 +++ b/app/assets/javascripts/discourse/components/site-header.js.es6 @@ -280,8 +280,7 @@ const SiteHeaderComponent = MountWidget.extend(Docking, PanEvents, { const $panelBody = $(".panel-body", $panel); // 2 pixel fudge allows for firefox subpixel sizing stuff causing scrollbar - let contentHeight = - $(".panel-body-contents", $panel).height() + 2; + let contentHeight = $(".panel-body-contents", $panel).height() + 2; // We use a mutationObserver to check for style changes, so it's important // we don't set it if it doesn't change. Same goes for the $panelBody! diff --git a/app/assets/javascripts/discourse/helpers/application.js.es6 b/app/assets/javascripts/discourse/helpers/application.js.es6 index cff377e323..e6a88ded97 100644 --- a/app/assets/javascripts/discourse/helpers/application.js.es6 +++ b/app/assets/javascripts/discourse/helpers/application.js.es6 @@ -22,7 +22,10 @@ registerUnbound("number", (orig, params) => { let title = I18n.toNumber(orig, { precision: 0 }); if (params.numberKey) { - title = I18n.t(params.numberKey, { number: title, count: parseInt(orig, 10) }); + title = I18n.t(params.numberKey, { + number: title, + count: parseInt(orig, 10) + }); } let classNames = "number"; diff --git a/app/assets/javascripts/discourse/initializers/live-development.js.es6 b/app/assets/javascripts/discourse/initializers/live-development.js.es6 index 5cdbcb96ca..38afdbc9b7 100644 --- a/app/assets/javascripts/discourse/initializers/live-development.js.es6 +++ b/app/assets/javascripts/discourse/initializers/live-development.js.es6 @@ -13,7 +13,10 @@ export default { window.location.search.indexOf("?preview_theme_id=") === 0 ) { // force preview theme id to always be carried along - const themeId = parseInt(window.location.search.slice(18).split("&")[0], 10); + const themeId = parseInt( + window.location.search.slice(18).split("&")[0], + 10 + ); if (!isNaN(themeId)) { const patchState = function(f) { const patched = window.history[f]; diff --git a/app/assets/javascripts/discourse/initializers/post-decorations.js.es6 b/app/assets/javascripts/discourse/initializers/post-decorations.js.es6 index 75ddbdfdae..35504de3bb 100644 --- a/app/assets/javascripts/discourse/initializers/post-decorations.js.es6 +++ b/app/assets/javascripts/discourse/initializers/post-decorations.js.es6 @@ -26,7 +26,10 @@ export default { const players = $("audio", $elem); if (players.length) { players.on("play", () => { - const postId = parseInt($elem.closest("article").data("post-id"), 10); + const postId = parseInt( + $elem.closest("article").data("post-id"), + 10 + ); if (postId) { api.preventCloak(postId); } diff --git a/app/assets/javascripts/discourse/lib/to-markdown.js.es6 b/app/assets/javascripts/discourse/lib/to-markdown.js.es6 index 0e71b585c5..7cd6a8ca49 100644 --- a/app/assets/javascripts/discourse/lib/to-markdown.js.es6 +++ b/app/assets/javascripts/discourse/lib/to-markdown.js.es6 @@ -321,8 +321,9 @@ export class Tag { if (msoListClasses.includes(attrs.class)) { try { const level = parseInt( - attrs.style.match(/level./)[0].replace("level", "") - , 10); + attrs.style.match(/level./)[0].replace("level", ""), + 10 + ); indent = Array(level).join("\t") + indent; } finally { if (attrs.class === "MsoListParagraphCxSpFirst") { diff --git a/app/assets/javascripts/discourse/models/action-summary.js.es6 b/app/assets/javascripts/discourse/models/action-summary.js.es6 index 4d48ccf1bc..aad8b48b8a 100644 --- a/app/assets/javascripts/discourse/models/action-summary.js.es6 +++ b/app/assets/javascripts/discourse/models/action-summary.js.es6 @@ -60,11 +60,13 @@ export default RestModel.extend({ post.updateActionsSummary(data.result); } const remaining = parseInt( - data.xhr.getResponseHeader("Discourse-Actions-Remaining") || 0 - , 10); + data.xhr.getResponseHeader("Discourse-Actions-Remaining") || 0, + 10 + ); const max = parseInt( - data.xhr.getResponseHeader("Discourse-Actions-Max") || 0 - , 10); + data.xhr.getResponseHeader("Discourse-Actions-Max") || 0, + 10 + ); return { acted: true, remaining, max }; }) .catch(error => { diff --git a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 index 61f2539940..bc5d8c0b07 100644 --- a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 @@ -51,8 +51,9 @@ export default ComboBox.extend(TagsMixin, { parseInt( this.limit || this.maximum || - this.get("siteSettings.max_tags_per_topic") - , 10) + this.get("siteSettings.max_tags_per_topic"), + 10 + ) ); }, diff --git a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 index 439a0ee05e..b0de97cd21 100644 --- a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 @@ -46,8 +46,9 @@ export default MultiSelectComponent.extend(TagsMixin, { parseInt( this.limit || this.maximum || - this.get("siteSettings.max_tags_per_topic") - , 10) + this.get("siteSettings.max_tags_per_topic"), + 10 + ) ); } }, From 17bca006617524e911eee1d3f5f8ae341eb1a025 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Tue, 12 Nov 2019 12:07:19 +0100 Subject: [PATCH 085/408] DEV: Run prettier --- .../lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 b/plugins/lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 index 4afe9a0775..3d913e77c0 100644 --- a/plugins/lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 +++ b/plugins/lazy-yt/assets/javascripts/initializers/lazyYT.js.es6 @@ -14,7 +14,10 @@ export default { $(".lazyYT", $elem).lazyYT({ onPlay(e, $el) { // don't cloak posts that have playing videos in them - const postId = parseInt($el.closest("article").data("post-id"), 10); + const postId = parseInt( + $el.closest("article").data("post-id"), + 10 + ); if (postId) { api.preventCloak(postId); } From 241d9a3034aa628282d34d71fc7f75b6519ef615 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Tue, 12 Nov 2019 11:26:21 +0000 Subject: [PATCH 086/408] FIX: Topic lists filtered by tag and a specified filter don't work This was a regression caused by 59241df2 --- app/assets/javascripts/discourse/routes/app-route-map.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/routes/app-route-map.js.es6 b/app/assets/javascripts/discourse/routes/app-route-map.js.es6 index 1da84b4047..ba43395d9e 100644 --- a/app/assets/javascripts/discourse/routes/app-route-map.js.es6 +++ b/app/assets/javascripts/discourse/routes/app-route-map.js.es6 @@ -212,7 +212,7 @@ export default function() { path: "/c/:category/:tag_id/l/" + filter }); this.route("showCategoryNone" + filter.capitalize(), { - path: "/c/:category/:tag_id/l/" + filter + path: "/c/:category/none/:tag_id/l/" + filter }); this.route("showParentCategory" + filter.capitalize(), { path: "/c/:parent_category/:category/:tag_id/l/" + filter From bbcce087128dcc263c456c7fda91eaba384768cd Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Tue, 12 Nov 2019 15:16:39 +0200 Subject: [PATCH 087/408] FIX: Update quotes after moving posts (#8326) --- app/models/post_mover.rb | 13 +++++++++++++ spec/models/post_mover_spec.rb | 21 +++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/app/models/post_mover.rb b/app/models/post_mover.rb index 2cd39b80ae..facccc8ebd 100644 --- a/app/models/post_mover.rb +++ b/app/models/post_mover.rb @@ -126,6 +126,7 @@ class PostMover move_incoming_emails move_notifications update_reply_counts + update_quotes move_first_post_replies delete_post_replies copy_first_post_timings @@ -256,6 +257,18 @@ class PostMover SQL end + def update_quotes + DB.exec <<~SQL + UPDATE posts p + SET raw = REPLACE(p.raw, + ', post:' || mp.old_post_number || ', topic:' || mp.old_topic_id, + ', post:' || mp.new_post_number || ', topic:' || mp.new_topic_id), + baked_version = NULL + FROM moved_posts mp, quoted_posts qp + WHERE p.id = qp.post_id AND mp.old_post_id = qp.quoted_post_id + SQL + end + def move_first_post_replies DB.exec <<~SQL UPDATE post_replies pr diff --git a/spec/models/post_mover_spec.rb b/spec/models/post_mover_spec.rb index 78c1cc72ad..42cf45098c 100644 --- a/spec/models/post_mover_spec.rb +++ b/spec/models/post_mover_spec.rb @@ -90,6 +90,27 @@ describe PostMover do expect(move_message.post_type).to eq(Post.types[:small_action]) expect(move_message.raw).to include("3 posts were split") end + + it "correctly remaps quotes" do + raw = <<~RAW + [quote="dan, post:#{p2.post_number}, topic:#{p2.topic_id}, full:true"] + some quote from the other post + [/quote] + + the quote above should be updated with new post number and topic id + RAW + + p3.update!(raw: raw) + p3.rebake! + + expect { topic.move_posts(user, [p2.id], title: "new testing topic name") } + .to change { p2.reload.topic_id } + .and change { p2.post_number } + .and change { p3.reload.raw } + .and change { p3.baked_version }.to nil + + expect(p3.raw).to include("post:#{p2.post_number}, topic:#{p2.topic_id}") + end end context "errors" do From 5f927ceeb379f710cd42fa268e9967dcc2ce207d Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 12 Nov 2019 14:30:19 +0000 Subject: [PATCH 088/408] DEV: Display a warning when themes hard-code optimized image links (#8304) --- app/models/theme_field.rb | 12 +++++++++++- config/locales/server.en.yml | 1 + spec/models/theme_field_spec.rb | 24 ++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/models/theme_field.rb b/app/models/theme_field.rb index 38c19da7bb..fe4e0bf644 100644 --- a/app/models/theme_field.rb +++ b/app/models/theme_field.rb @@ -71,6 +71,8 @@ class ThemeField < ActiveRecord::Base errors = [] javascript_cache || build_javascript_cache + errors << I18n.t("themes.errors.optimized_link") if contains_optimized_link?(html) + js_compiler = ThemeJavascriptCompiler.new(theme_id, self.theme.name) doc = Nokogiri::HTML.fragment(html) @@ -355,7 +357,11 @@ class ThemeField < ActiveRecord::Base result = ["failed"] begin result = compile_scss - self.error = nil unless error.nil? + if contains_optimized_link?(self.value) + self.error = I18n.t("themes.errors.optimized_link") + else + self.error = nil unless error.nil? + end rescue SassC::SyntaxError => e self.error = e.message unless self.destroyed? end @@ -367,6 +373,10 @@ class ThemeField < ActiveRecord::Base Theme.targets[target_id].to_s end + def contains_optimized_link?(text) + OptimizedImage::URL_REGEX.match?(text) + end + class ThemeFileMatcher OPTIONS = %i{name type target} # regex: used to match file names to fields (import). diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 6d3cefe305..2945673db6 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -92,6 +92,7 @@ en: component_no_default: "Theme components can't be default theme" component_no_color_scheme: "Theme components can't have color palettes" no_multilevels_components: "Themes with child themes can't be child themes themselves" + optimized_link: Optimized image links are ephemeral and should not be included in theme source code. settings_errors: invalid_yaml: "Provided YAML is invalid." data_type_not_a_number: "Setting `%{name}` type is unsupported. Supported types are `integer`, `bool`, `list` and `enum`" diff --git a/spec/models/theme_field_spec.rb b/spec/models/theme_field_spec.rb index 5506305924..c6fc9c5764 100644 --- a/spec/models/theme_field_spec.rb +++ b/spec/models/theme_field_spec.rb @@ -34,6 +34,30 @@ describe ThemeField do expect(theme_field.value_baked).to_not include(' + HTML + theme_field.ensure_baked! + expect(theme_field.error).to include(I18n.t("themes.errors.optimized_link")) + + theme_field = ThemeField.create!(theme_id: 1, target_id: 0, name: "scss", value: <<~SCSS) + body { + background: url(http://mysite.invalid/uploads/default/optimized/1X/6d749a141f513f88f167e750e528515002043da1_2_1282x1000.png); + } + SCSS + theme_field.ensure_baked! + expect(theme_field.error).to include(I18n.t("themes.errors.optimized_link")) + + theme_field.update(value: <<~SCSS) + body { + background: url(http://notdiscourse.invalid/optimized/my_image.png); + } + SCSS + theme_field.ensure_baked! + expect(theme_field.error).to eq(nil) + end + it 'only extracts inline javascript to an external file' do html = <<~HTML '>.

" expect(PrettyText.format_for_email(html, post)).to match(Regexp.escape("https://vimeo.com/329875646/%3E%20%3Cscript%3Ealert(1)%3C/script%3E")) end + + describe "#strip_secure_media" do + before do + SiteSetting.s3_upload_bucket = "some-bucket-on-s3" + SiteSetting.s3_access_key_id = "s3-access-key-id" + SiteSetting.s3_secret_access_key = "s3-secret-access-key" + SiteSetting.s3_cdn_url = "https://s3.cdn.com" + SiteSetting.enable_s3_uploads = true + SiteSetting.secure_media = true + SiteSetting.login_required = true + end + + it "replaces secure video content" do + html = <<~HTML + + HTML + + md = PrettyText.format_for_email(html, post) + + expect(md).not_to include(' + + Audio label + + + HTML + + md = PrettyText.format_for_email(html, post) + + expect(md).not_to include('Link [test|attachment](#{attachment_upload_2.short_url}) @@ -1276,36 +1276,121 @@ describe Post do RAW end - let(:post) { Fabricate(:post, raw: raw) } + let(:post) { Fabricate(:post, raw: raw_multiple) } - it "finds all the uploads in the post" do - post.custom_fields[Post::DOWNLOADED_IMAGES] = { - "/uploads/default/original/1X/1/1234567890123456.csv": attachment_upload.id - } + context "#link_post_uploads" do + it "finds all the uploads in the post" do + post.custom_fields[Post::DOWNLOADED_IMAGES] = { + "/uploads/default/original/1X/1/1234567890123456.csv": attachment_upload.id + } - post.save_custom_fields - post.link_post_uploads + post.save_custom_fields + post.link_post_uploads - expect(PostUpload.where(post: post).pluck(:upload_id)).to contain_exactly( - video_upload.id, - image_upload.id, - audio_upload.id, - attachment_upload.id, - attachment_upload_2.id, - attachment_upload_3.id - ) + expect(PostUpload.where(post: post).pluck(:upload_id)).to contain_exactly( + video_upload.id, + image_upload.id, + audio_upload.id, + attachment_upload.id, + attachment_upload_2.id, + attachment_upload_3.id + ) + end + + it "cleans the reverse index up for the current post" do + post.link_post_uploads + + post_uploads_ids = post.post_uploads.pluck(:id) + + post.link_post_uploads + + expect(post.reload.post_uploads.pluck(:id)).to_not contain_exactly( + post_uploads_ids + ) + end end - it "cleans the reverse index up for the current post" do - post.link_post_uploads + context '#update_uploads_secure_status' do + fab!(:user) { Fabricate(:user, trust_level: 0) } - post_uploads_ids = post.post_uploads.pluck(:id) + let(:raw) do + <<~RAW + Link + + RAW + end - post.link_post_uploads + before do + SiteSetting.authorized_extensions = "pdf|png|jpg|csv" + SiteSetting.enable_s3_uploads = true + SiteSetting.s3_upload_bucket = "s3-upload-bucket" + SiteSetting.s3_access_key_id = "some key" + SiteSetting.s3_secret_access_key = "some secret key" + SiteSetting.secure_media = true + attachment_upload.update!(original_filename: "hello.csv") - expect(post.reload.post_uploads.pluck(:id)).to_not contain_exactly( - post_uploads_ids - ) + stub_request(:head, "https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/") + + stub_request( + :put, + "https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/original/1X/#{attachment_upload.sha1}.#{attachment_upload.extension}?acl" + ) + + stub_request( + :put, + "https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/original/1X/#{image_upload.sha1}.#{image_upload.extension}?acl" + ) + end + + it "marks image uploads as secure in PMs when secure_media is ON" do + post = Fabricate(:post, raw: raw, user: user, topic: Fabricate(:private_message_topic, user: user)) + post.link_post_uploads + post.update_uploads_secure_status + + expect(PostUpload.where(post: post).joins(:upload).pluck(:upload_id, :secure)).to contain_exactly( + [attachment_upload.id, false], + [image_upload.id, true] + ) + end + + it "marks image uploads as not secure in PMs when when secure_media is ON" do + SiteSetting.secure_media = false + post = Fabricate(:post, raw: raw, user: user, topic: Fabricate(:private_message_topic, user: user)) + post.link_post_uploads + post.update_uploads_secure_status + + expect(PostUpload.where(post: post).joins(:upload).pluck(:upload_id, :secure)).to contain_exactly( + [attachment_upload.id, false], + [image_upload.id, false] + ) + end + + it "marks attachments as secure when relevant setting is enabled" do + SiteSetting.prevent_anons_from_downloading_files = true + post = Fabricate(:post, raw: raw, user: user, topic: Fabricate(:topic, user: user)) + post.link_post_uploads + post.update_uploads_secure_status + + expect(PostUpload.where(post: post).joins(:upload).pluck(:upload_id, :secure)).to contain_exactly( + [attachment_upload.id, true], + [image_upload.id, false] + ) + end + + it "does not mark an upload as secure if it has already been used in a public topic" do + post = Fabricate(:post, raw: raw, user: user, topic: Fabricate(:topic, user: user)) + post.link_post_uploads + post.update_uploads_secure_status + + pm = Fabricate(:post, raw: raw, user: user, topic: Fabricate(:private_message_topic, user: user)) + pm.link_post_uploads + pm.update_uploads_secure_status + + expect(PostUpload.where(post: pm).joins(:upload).pluck(:upload_id, :secure)).to contain_exactly( + [attachment_upload.id, false], + [image_upload.id, false] + ) + end end end diff --git a/spec/models/topic_converter_spec.rb b/spec/models/topic_converter_spec.rb index 82b2664b02..a697b260d4 100644 --- a/spec/models/topic_converter_spec.rb +++ b/spec/models/topic_converter_spec.rb @@ -102,6 +102,47 @@ describe TopicConverter do expect(Notification.exists?(user_notification.id)).to eq(false) expect(Notification.exists?(admin_notification.id)).to eq(true) end + + context "secure uploads" do + fab!(:image_upload) { Fabricate(:upload) } + fab!(:public_topic) { Fabricate(:topic, user: author) } + + before do + SiteSetting.enable_s3_uploads = true + SiteSetting.s3_upload_bucket = "s3-upload-bucket" + SiteSetting.s3_access_key_id = "some key" + SiteSetting.s3_secret_access_key = "some secret key" + SiteSetting.secure_media = true + + stub_request(:head, "https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/") + + stub_request( + :put, + "https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/original/1X/#{image_upload.sha1}.#{image_upload.extension}?acl" + ) + end + + it "converts regular uploads to secure when making a public post a PM" do + public_reply = Fabricate(:post, raw: "", user: other_user, topic: public_topic) + public_reply.link_post_uploads + public_reply.update_uploads_secure_status + + expect(public_reply.uploads[0].secure).to eq(false) + public_topic.convert_to_private_message(admin) + expect(public_topic.reload.posts.find(public_reply.id).uploads[0].secure).to eq(true) + end + + it "converts secure uploads back to public" do + first_post + second_post = Fabricate(:post, raw: "", user: other_user, topic: private_message) + second_post.link_post_uploads + second_post.update_uploads_secure_status + + expect(second_post.uploads[0].secure).to eq(true) + private_message.convert_to_public_topic(admin) + expect(private_message.reload.posts.find(second_post.id).uploads[0].secure).to eq(false) + end + end end end diff --git a/spec/models/upload_spec.rb b/spec/models/upload_spec.rb index ffb312d1f3..9f4a52de44 100644 --- a/spec/models/upload_spec.rb +++ b/spec/models/upload_spec.rb @@ -288,6 +288,84 @@ describe Upload do end end + describe '.update_secure_status' do + it 'marks a local upload as not secure with default settings' do + upload.update!(secure: true) + expect { upload.update_secure_status } + .to change { upload.secure } + + expect(upload.secure).to eq(false) + end + + it 'marks a local attachment as secure if prevent_anons_from_downloading_files is enabled' do + SiteSetting.prevent_anons_from_downloading_files = true + SiteSetting.authorized_extensions = "pdf" + upload.update!(original_filename: "small.pdf", extension: "pdf") + + expect { upload.update_secure_status } + .to change { upload.secure } + + expect(upload.secure).to eq(true) + end + + it 'marks a local attachment as not secure if prevent_anons_from_downloading_files is disabled' do + SiteSetting.prevent_anons_from_downloading_files = false + SiteSetting.authorized_extensions = "pdf" + upload.update!(original_filename: "small.pdf", extension: "pdf", secure: true) + + expect { upload.update_secure_status } + .to change { upload.secure } + + expect(upload.secure).to eq(false) + end + + it 'does not change secure status of a non-attachment when prevent_anons_from_downloading_files is enabled' do + SiteSetting.prevent_anons_from_downloading_files = true + SiteSetting.authorized_extensions = "mp4" + upload.update!(original_filename: "small.mp4", extension: "mp4") + + expect { upload.update_secure_status } + .not_to change { upload.secure } + + expect(upload.secure).to eq(false) + end + + context "secure media enabled" do + before do + SiteSetting.enable_s3_uploads = true + SiteSetting.s3_upload_bucket = "s3-upload-bucket" + SiteSetting.s3_access_key_id = "some key" + SiteSetting.s3_secret_access_key = "some secret key" + SiteSetting.secure_media = true + + stub_request(:head, "https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/") + + stub_request( + :put, + "https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/original/1X/#{upload.sha1}.#{upload.extension}?acl" + ) + end + + it 'marks an image upload as not secure when not associated with a post' do + upload.update!(secure: true) + expect { upload.update_secure_status } + .to change { upload.secure } + + expect(upload.secure).to eq(false) + end + + it 'marks an image upload as secure if login_required is enabled' do + SiteSetting.login_required = true + upload.update!(secure: false) + + expect { upload.update_secure_status } + .to change { upload.secure } + + expect(upload.secure).to eq(true) + end + end + end + describe '.reset_unknown_extensions!' do it 'should reset the extension of uploads when it is "unknown"' do upload1 = Fabricate(:upload, extension: "unknown") diff --git a/spec/multisite/s3_store_spec.rb b/spec/multisite/s3_store_spec.rb index 3c5451f89b..1c84beefe5 100644 --- a/spec/multisite/s3_store_spec.rb +++ b/spec/multisite/s3_store_spec.rb @@ -119,7 +119,7 @@ RSpec.describe 'Multisite s3 uploads', type: :multisite do end end - context 'private uploads' do + context 'secure uploads' do let(:store) { FileStore::S3Store.new } let(:client) { Aws::S3::Client.new(stub_responses: true) } let(:resource) { Aws::S3::Resource.new(client: client) } @@ -133,18 +133,18 @@ RSpec.describe 'Multisite s3 uploads', type: :multisite do SiteSetting.s3_secret_access_key = "s3-secret-access-key" SiteSetting.enable_s3_uploads = true SiteSetting.prevent_anons_from_downloading_files = true + SiteSetting.authorized_extensions = "pdf|png|jpg|gif" end before do s3_object.stubs(:put).returns(Aws::S3::Types::PutObjectOutput.new(etag: "etag")) end - describe "when private uploads are enabled" do + describe "when secure attachments are enabled" do it "returns signed URL with correct path" do test_multisite_connection('default') do - SiteSetting.authorized_extensions = "pdf|png|jpg|gif" upload = build_upload - upload.update!(original_filename: "small.pdf", extension: "pdf") + upload.update!(original_filename: "small.pdf", extension: "pdf", secure: true) s3_helper.expects(:s3_bucket).returns(s3_bucket).at_least_once s3_bucket.expects(:object).with("uploads/default/original/1X/#{upload.sha1}.pdf").returns(s3_object).at_least_once @@ -159,13 +159,41 @@ RSpec.describe 'Multisite s3 uploads', type: :multisite do end end + describe "when secure media are enabled" do + before do + SiteSetting.login_required = true + SiteSetting.secure_media = true + s3_helper.stubs(:s3_client).returns(client) + Discourse.stubs(:store).returns(store) + end + + it "returns signed URL with correct path" do + test_multisite_connection('default') do + upload = Fabricate.build(:upload_s3, sha1: upload_sha1, id: 1) + + signed_url = Discourse.store.signed_url_for_path(upload.url) + expect(signed_url).to match(/Amz-Expires/) + expect(signed_url).to match("uploads/default") + end + + test_multisite_connection('second') do + upload = Fabricate.build(:upload_s3, sha1: upload_sha1, id: 1) + + signed_url = Discourse.store.signed_url_for_path(upload.url) + expect(signed_url).to match(/Amz-Expires/) + expect(signed_url).to match("uploads/second") + end + end + end + describe "#update_upload_ACL" do it "updates correct file for default and second multisite db" do test_multisite_connection('default') do upload = build_upload + upload.update!(original_filename: "small.pdf", extension: "pdf", secure: true) s3_helper.expects(:s3_bucket).returns(s3_bucket).at_least_once - s3_bucket.expects(:object).with("uploads/default/original/1X/#{upload.sha1}.png").returns(s3_object) + s3_bucket.expects(:object).with("uploads/default/original/1X/#{upload.sha1}.pdf").returns(s3_object) s3_object.expects(:acl).returns(s3_object) s3_object.expects(:put).with(acl: "private").returns(s3_object) @@ -174,9 +202,10 @@ RSpec.describe 'Multisite s3 uploads', type: :multisite do test_multisite_connection('second') do upload = build_upload + upload.update!(original_filename: "small.pdf", extension: "pdf", secure: true) s3_helper.expects(:s3_bucket).returns(s3_bucket).at_least_once - s3_bucket.expects(:object).with("uploads/second/original/1X/#{upload.sha1}.png").returns(s3_object) + s3_bucket.expects(:object).with("uploads/second/original/1X/#{upload.sha1}.pdf").returns(s3_object) s3_object.expects(:acl).returns(s3_object) s3_object.expects(:put).with(acl: "private").returns(s3_object) diff --git a/spec/requests/uploads_controller_spec.rb b/spec/requests/uploads_controller_spec.rb index cb738c73ea..b70651d297 100644 --- a/spec/requests/uploads_controller_spec.rb +++ b/spec/requests/uploads_controller_spec.rb @@ -361,6 +361,59 @@ describe UploadsController do end end + describe "#show_secure" do + describe "local store" do + fab!(:image_upload) { upload_file("smallest.png") } + + it "does not return secure media when using local store" do + secure_url = image_upload.url.sub("/uploads", "/secure-media-uploads") + get secure_url + + expect(response.status).to eq(404) + end + end + + describe "s3 store" do + let(:upload) { Fabricate(:upload_s3) } + + before do + SiteSetting.enable_s3_uploads = true + SiteSetting.s3_upload_bucket = "s3-upload-bucket" + SiteSetting.s3_access_key_id = "fakeid7974664" + SiteSetting.s3_secret_access_key = "fakesecretid7974664" + SiteSetting.secure_media = true + end + + it "should return 404 for anonymous requests requests" do + secure_url = upload.url.sub(SiteSetting.Upload.absolute_base_url, "/secure-media-uploads") + get secure_url + expect(response.status).to eq(404) + end + + it "should return signed url for legitimate request" do + secure_url = upload.url.sub(SiteSetting.Upload.absolute_base_url, "/secure-media-uploads") + sign_in(user) + stub_request(:head, "https://s3-upload-bucket.s3.amazonaws.com/") + + get secure_url + + expect(response.status).to eq(302) + expect(response.redirect_url).to match("Amz-Expires") + end + + it "should return secure media URL when looking up urls" do + upload.update_column(:secure, true) + sign_in(user) + + post "/uploads/lookup-urls.json", params: { short_urls: [upload.short_url] } + expect(response.status).to eq(200) + + result = JSON.parse(response.body) + expect(result[0]["url"]).to match("secure-media-uploads") + end + end + end + describe '#lookup_urls' do it 'can look up long urls' do sign_in(user) @@ -373,6 +426,42 @@ describe UploadsController do expect(result[0]["url"]).to eq(upload.url) expect(result[0]["short_path"]).to eq(upload.short_path) end + + describe 'secure media' do + let(:upload) { Fabricate(:upload_s3, secure: true) } + + before do + SiteSetting.authorized_extensions = "pdf|png" + SiteSetting.s3_upload_bucket = "s3-upload-bucket" + SiteSetting.s3_access_key_id = "s3-access-key-id" + SiteSetting.s3_secret_access_key = "s3-secret-access-key" + SiteSetting.enable_s3_uploads = true + SiteSetting.secure_media = true + end + + it 'returns secure url for a secure media upload' do + sign_in(user) + + post "/uploads/lookup-urls.json", params: { short_urls: [upload.short_url] } + expect(response.status).to eq(200) + + result = JSON.parse(response.body) + expect(result[0]["url"]).to match("/secure-media-uploads") + expect(result[0]["short_path"]).to eq(upload.short_path) + end + + it 'does not return secure urls for non-media uploads' do + upload.update!(original_filename: "not-an-image.pdf", extension: "pdf") + sign_in(user) + + post "/uploads/lookup-urls.json", params: { short_urls: [upload.short_url] } + expect(response.status).to eq(200) + + result = JSON.parse(response.body) + expect(result[0]["url"]).not_to match("/secure-media-uploads") + expect(result[0]["short_path"]).to eq(upload.short_path) + end + end end describe '#metadata' do From af091c49e906d03fb9d77c12bd30f89059aeee7f Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 18 Nov 2019 13:08:54 +1000 Subject: [PATCH 173/408] FIX: Ensure revisions are made to store edit reasons and no reasons get wiped (#8363) * Fix an issue where if an edit was made to a post with a reason provided, and then another edit was made with no reason, the original edit reason got wiped out * We now always make a post revision (even with ninja edits) if an edit reason has been provided and it is different from the current edit reason Co-Authored-By: Sam --- lib/post_revisor.rb | 11 ++++++++--- spec/components/post_revisor_spec.rb | 29 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb index 3c954d47b1..b8d0fb6c81 100644 --- a/lib/post_revisor.rb +++ b/lib/post_revisor.rb @@ -130,8 +130,9 @@ class PostRevisor @fields[:user_id] = @fields[:user_id].to_i if @fields.has_key?(:user_id) @fields[:category_id] = @fields[:category_id].to_i if @fields.has_key?(:category_id) - # always reset edit_reason unless provided - @fields[:edit_reason] = nil unless @fields[:edit_reason].present? + # always reset edit_reason unless provided, do not set to nil else + # previous reasons are lost + @fields.delete(:edit_reason) if @fields[:edit_reason].blank? return false unless should_revise? @@ -244,7 +245,11 @@ class PostRevisor def should_create_new_version? return false if @skip_revision - edited_by_another_user? || !ninja_edit? || owner_changed? || force_new_version? + edited_by_another_user? || !ninja_edit? || owner_changed? || force_new_version? || edit_reason_specified? + end + + def edit_reason_specified? + @fields[:edit_reason].present? && @fields[:edit_reason] != @post.edit_reason end def edited_by_another_user? diff --git a/spec/components/post_revisor_spec.rb b/spec/components/post_revisor_spec.rb index 8a8b284007..7f85177a14 100644 --- a/spec/components/post_revisor_spec.rb +++ b/spec/components/post_revisor_spec.rb @@ -198,6 +198,35 @@ describe PostRevisor do end end + describe 'edit reasons' do + it "does create a new version if an edit reason is provided" do + post = Fabricate(:post, raw: 'hello world') + revisor = PostRevisor.new(post) + revisor.revise!(post.user, { raw: 'hello world123456789', edit_reason: 'this is my reason' }, revised_at: post.updated_at + 1.second) + post.reload + expect(post.version).to eq(2) + expect(post.revisions.count).to eq(1) + end + + it "does not create a new version if an edit reason is provided and its the same as the current edit reason" do + post = Fabricate(:post, raw: 'hello world', edit_reason: 'this is my reason') + revisor = PostRevisor.new(post) + revisor.revise!(post.user, { raw: 'hello world123456789', edit_reason: 'this is my reason' }, revised_at: post.updated_at + 1.second) + post.reload + expect(post.version).to eq(1) + expect(post.revisions.count).to eq(0) + end + + it "does not clobber the existing edit reason for a revision if it is not provided in a subsequent revision" do + post = Fabricate(:post, raw: 'hello world') + revisor = PostRevisor.new(post) + revisor.revise!(post.user, { raw: 'hello world123456789', edit_reason: 'this is my reason' }, revised_at: post.updated_at + 1.second) + post.reload + revisor.revise!(post.user, { raw: 'hello some other thing' }, revised_at: post.updated_at + 1.second) + expect(post.revisions.first.modifications[:edit_reason]).to eq([nil, 'this is my reason']) + end + end + describe 'revision much later' do let!(:revised_at) { post.updated_at + 2.minutes } From e2ccb0c6082d7692a7bd7e4ecdd092d3e4811c61 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 18 Nov 2019 15:30:42 +1100 Subject: [PATCH 174/408] DEV: remove NGINX performance report This report is no longer supported or tested, it was moved to: https://github.com/SamSaffron/discourse-nginx-performance-report The new home for the performance report means this is no longer an official Discourse plugin --- .../scheduled/daily_performance_report.rb | 58 ------- .../config/locales/server.ar.yml | 10 -- .../config/locales/server.be.yml | 8 - .../config/locales/server.bg.yml | 10 -- .../config/locales/server.bs_BA.yml | 10 -- .../config/locales/server.ca.yml | 10 -- .../config/locales/server.cs.yml | 10 -- .../config/locales/server.da.yml | 10 -- .../config/locales/server.de.yml | 10 -- .../config/locales/server.el.yml | 8 - .../config/locales/server.en.yml | 3 - .../config/locales/server.es.yml | 10 -- .../config/locales/server.et.yml | 8 - .../config/locales/server.fa_IR.yml | 10 -- .../config/locales/server.fi.yml | 10 -- .../config/locales/server.fr.yml | 10 -- .../config/locales/server.gl.yml | 8 - .../config/locales/server.he.yml | 10 -- .../config/locales/server.hu.yml | 10 -- .../config/locales/server.hy.yml | 10 -- .../config/locales/server.id.yml | 8 - .../config/locales/server.it.yml | 10 -- .../config/locales/server.ja.yml | 10 -- .../config/locales/server.ko.yml | 10 -- .../config/locales/server.lt.yml | 10 -- .../config/locales/server.lv.yml | 8 - .../config/locales/server.nb_NO.yml | 10 -- .../config/locales/server.nl.yml | 10 -- .../config/locales/server.pl_PL.yml | 10 -- .../config/locales/server.pt.yml | 10 -- .../config/locales/server.pt_BR.yml | 10 -- .../config/locales/server.ro.yml | 8 - .../config/locales/server.ru.yml | 10 -- .../config/locales/server.sk.yml | 10 -- .../config/locales/server.sl.yml | 8 - .../config/locales/server.sq.yml | 10 -- .../config/locales/server.sr.yml | 8 - .../config/locales/server.sv.yml | 10 -- .../config/locales/server.sw.yml | 10 -- .../config/locales/server.te.yml | 8 - .../config/locales/server.th.yml | 8 - .../config/locales/server.tr_TR.yml | 10 -- .../config/locales/server.uk.yml | 10 -- .../config/locales/server.ur.yml | 10 -- .../config/locales/server.vi.yml | 10 -- .../config/locales/server.zh_CN.yml | 10 -- .../config/locales/server.zh_TW.yml | 8 - .../config/settings.yml | 6 - .../lib/log_analyzer.rb | 158 ------------------ .../plugin.rb | 14 -- .../script/nginx_analyze.rb | 141 ---------------- .../spec/line_parser_spec.rb | 15 -- 52 files changed, 821 deletions(-) delete mode 100644 plugins/discourse-nginx-performance-report/app/jobs/scheduled/daily_performance_report.rb delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.ar.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.be.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.bg.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.bs_BA.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.ca.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.cs.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.da.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.de.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.el.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.en.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.es.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.et.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.fa_IR.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.fi.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.fr.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.gl.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.he.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.hu.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.hy.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.id.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.it.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.ja.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.ko.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.lt.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.lv.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.nb_NO.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.nl.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.pl_PL.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.pt.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.pt_BR.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.ro.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.ru.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.sk.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.sl.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.sq.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.sr.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.sv.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.sw.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.te.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.th.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.tr_TR.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.uk.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.ur.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.vi.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.zh_CN.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/locales/server.zh_TW.yml delete mode 100644 plugins/discourse-nginx-performance-report/config/settings.yml delete mode 100644 plugins/discourse-nginx-performance-report/lib/log_analyzer.rb delete mode 100644 plugins/discourse-nginx-performance-report/plugin.rb delete mode 100644 plugins/discourse-nginx-performance-report/script/nginx_analyze.rb delete mode 100644 plugins/discourse-nginx-performance-report/spec/line_parser_spec.rb diff --git a/plugins/discourse-nginx-performance-report/app/jobs/scheduled/daily_performance_report.rb b/plugins/discourse-nginx-performance-report/app/jobs/scheduled/daily_performance_report.rb deleted file mode 100644 index f79c3a20d5..0000000000 --- a/plugins/discourse-nginx-performance-report/app/jobs/scheduled/daily_performance_report.rb +++ /dev/null @@ -1,58 +0,0 @@ -# frozen_string_literal: true - -module Jobs - class DailyPerformanceReport < ::Jobs::Scheduled - every 1.day - per_host - - def execute(args) - if SiteSetting.daily_performance_report && - RailsMultisite::ConnectionManagement.current_db == "default" - result = `ruby #{Rails.root}/plugins/discourse-nginx-performance-report/script/nginx_analyze.rb --limit 1440` - - report_data = - if result.strip.empty? - <<~TEXT - Report is only available in latest image, please run: - - ```text - cd /var/discourse - ./launcher rebuild app - ``` - TEXT - else - "```text\n#{result}\n```" - end - - PostCreator.create(Discourse.system_user, - topic_id: performance_topic_id, - raw: report_data, - skip_validations: true) - - end - end - - def performance_topic_id - if SiteSetting.performance_report_topic_id > 0 - topic = Topic.find_by(id: SiteSetting.performance_report_topic_id) - return topic.id if topic - end - - staff_category = Category.find_by(id: SiteSetting.staff_category_id) - raise StandardError, "Staff category was not found" unless staff_category - - post = PostCreator.create(Discourse.system_user, - raw: I18n.t('performance_report.initial_post_raw'), - category: staff_category.name, - title: I18n.t('performance_report.initial_topic_title'), - skip_validations: true) - - unless post && post.topic_id - raise StandardError, "Could not create or retrieve performance report topic id" - end - - SiteSetting.performance_report_topic_id = post.topic_id - end - - end -end diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.ar.yml b/plugins/discourse-nginx-performance-report/config/locales/server.ar.yml deleted file mode 100644 index 6d72a5333e..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.ar.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -ar: - site_settings: - daily_performance_report: "تحليل سجلّات الخادم NGINX يوميًا ونشر موضوع مفصّل مع طاقم الموقع" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.be.yml b/plugins/discourse-nginx-performance-report/config/locales/server.be.yml deleted file mode 100644 index 59ac412bb7..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.be.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -be: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.bg.yml b/plugins/discourse-nginx-performance-report/config/locales/server.bg.yml deleted file mode 100644 index 2d50be1373..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.bg.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -bg: - site_settings: - daily_performance_report: "Ежедневно анализирай на NGINX логовете в публиковай в темата която е само за екипа с детайли." diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.bs_BA.yml b/plugins/discourse-nginx-performance-report/config/locales/server.bs_BA.yml deleted file mode 100644 index 3e17cc6c54..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.bs_BA.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -bs_BA: - site_settings: - daily_performance_report: "Analiziraj NGINX logove dnevno i objavljuj u Staff Only temu sa detaljima" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.ca.yml b/plugins/discourse-nginx-performance-report/config/locales/server.ca.yml deleted file mode 100644 index fa9817a01b..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.ca.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -ca: - site_settings: - daily_performance_report: "Analitza els registres (logs) de NGINX diàriament, i publica un tema sols per a l'equip responsable amb els detalls." diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.cs.yml b/plugins/discourse-nginx-performance-report/config/locales/server.cs.yml deleted file mode 100644 index 3ee9703c97..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.cs.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -cs: - site_settings: - daily_performance_report: "Analyzovat denní logy NGINX a zaslat téma s podrobnostmi přístupné pouze členům redakce." diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.da.yml b/plugins/discourse-nginx-performance-report/config/locales/server.da.yml deleted file mode 100644 index c5fd58f56d..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.da.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -da: - site_settings: - daily_performance_report: "Analysér NGINX-logfiler dagligt, og send et 'kun hjælperteam'-emne med detaljer" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.de.yml b/plugins/discourse-nginx-performance-report/config/locales/server.de.yml deleted file mode 100644 index d03cf19445..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.de.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -de: - site_settings: - daily_performance_report: "Analysiere die NGINX-Logs täglich. Poste anschließend eine Zusammenfassung als Beitrag, welcher nur für Moderatoren oder Administratoren zugänglich ist." diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.el.yml b/plugins/discourse-nginx-performance-report/config/locales/server.el.yml deleted file mode 100644 index 63bf4b0e2f..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.el.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -el: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.en.yml b/plugins/discourse-nginx-performance-report/config/locales/server.en.yml deleted file mode 100644 index ba3f80b0f7..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.en.yml +++ /dev/null @@ -1,3 +0,0 @@ -en: - site_settings: - daily_performance_report: "Analyze NGINX logs daily and post a Staff Only topic with details" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.es.yml b/plugins/discourse-nginx-performance-report/config/locales/server.es.yml deleted file mode 100644 index b304e80445..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.es.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -es: - site_settings: - daily_performance_report: "Analizar los registros de NGINX diariamente y publicar un tema solo para el staff con detalles" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.et.yml b/plugins/discourse-nginx-performance-report/config/locales/server.et.yml deleted file mode 100644 index 8c601aa1ed..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.et.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -et: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.fa_IR.yml b/plugins/discourse-nginx-performance-report/config/locales/server.fa_IR.yml deleted file mode 100644 index a2a48af4a4..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.fa_IR.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -fa_IR: - site_settings: - daily_performance_report: "تحلیل لاگ‌های NGINX و ارسال یک پست شامل جزئیات ویژه مدیران" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.fi.yml b/plugins/discourse-nginx-performance-report/config/locales/server.fi.yml deleted file mode 100644 index e438a7bf68..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.fi.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -fi: - site_settings: - daily_performance_report: "Analysoi NGINX lokit päivittäin ja julkaise vain henkilökunnalle näkyvä ketju yksityiskohdista" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.fr.yml b/plugins/discourse-nginx-performance-report/config/locales/server.fr.yml deleted file mode 100644 index 6867c86975..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.fr.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -fr: - site_settings: - daily_performance_report: "Analyser les logs de NGINX quotidiennement et poster un sujet Responsables Uniquement avec les détails" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.gl.yml b/plugins/discourse-nginx-performance-report/config/locales/server.gl.yml deleted file mode 100644 index 695b5cf287..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.gl.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -gl: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.he.yml b/plugins/discourse-nginx-performance-report/config/locales/server.he.yml deleted file mode 100644 index 8a96541962..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.he.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -he: - site_settings: - daily_performance_report: "Analyze NGINX logs daily and post a Staff Only topic with details" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.hu.yml b/plugins/discourse-nginx-performance-report/config/locales/server.hu.yml deleted file mode 100644 index 636956c586..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.hu.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -hu: - site_settings: - daily_performance_report: "NGINX naplók napi elemzése és egy csak stábtagoknak téma létrehozása a részletekkel" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.hy.yml b/plugins/discourse-nginx-performance-report/config/locales/server.hy.yml deleted file mode 100644 index 81e891a73f..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.hy.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -hy: - site_settings: - daily_performance_report: "Վերլուծեք NGINX-ի գրառումներն ամեն օր և մանրամասները հրապարակեք Միայն ԱՆձնակազմի համար թեմայում" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.id.yml b/plugins/discourse-nginx-performance-report/config/locales/server.id.yml deleted file mode 100644 index 2112cad6a2..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.id.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -id: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.it.yml b/plugins/discourse-nginx-performance-report/config/locales/server.it.yml deleted file mode 100644 index 1baea30d06..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.it.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -it: - site_settings: - daily_performance_report: "Analizza i log di NGINX giornalmente, e pubblica un argomento con i dettagli visibile solo allo Staff" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.ja.yml b/plugins/discourse-nginx-performance-report/config/locales/server.ja.yml deleted file mode 100644 index 12af1da55f..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.ja.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -ja: - site_settings: - daily_performance_report: "日別のNGINXのログを解析し、Staff Onlyトピックへ詳細を投稿する" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.ko.yml b/plugins/discourse-nginx-performance-report/config/locales/server.ko.yml deleted file mode 100644 index 7e6a71596b..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.ko.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -ko: - site_settings: - daily_performance_report: "NGINX 일별 로그를 분석하고 상세정보를 스태프들에게 글타래 게시" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.lt.yml b/plugins/discourse-nginx-performance-report/config/locales/server.lt.yml deleted file mode 100644 index 8541587912..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.lt.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -lt: - site_settings: - daily_performance_report: "Analizuokite NGINX logs kasdien ir paskelbkite \"Staff Only\" temą su detalėmis" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.lv.yml b/plugins/discourse-nginx-performance-report/config/locales/server.lv.yml deleted file mode 100644 index dc48bb58ee..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.lv.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -lv: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.nb_NO.yml b/plugins/discourse-nginx-performance-report/config/locales/server.nb_NO.yml deleted file mode 100644 index 9beb50d498..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.nb_NO.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -nb_NO: - site_settings: - daily_performance_report: "Analyser NGINX logger hver dag og opprett et emne for Staben med detaljer " diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.nl.yml b/plugins/discourse-nginx-performance-report/config/locales/server.nl.yml deleted file mode 100644 index e9b5e384e0..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.nl.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -nl: - site_settings: - daily_performance_report: "Analyseer elke dag NGINX logs en post een Alleen Voor Medewerkers topic met de details" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.pl_PL.yml b/plugins/discourse-nginx-performance-report/config/locales/server.pl_PL.yml deleted file mode 100644 index 8642c1a2b1..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.pl_PL.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -pl_PL: - site_settings: - daily_performance_report: "Analizuj logi NGINX codziennie i umieszczaj szczegóły w temacie widocznym tylko dla członków zespołu" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.pt.yml b/plugins/discourse-nginx-performance-report/config/locales/server.pt.yml deleted file mode 100644 index 894545936b..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.pt.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -pt: - site_settings: - daily_performance_report: "Analise os logs diários NGINX e publique um tópico visível apenas para o pessoal com detalhes" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.pt_BR.yml b/plugins/discourse-nginx-performance-report/config/locales/server.pt_BR.yml deleted file mode 100644 index d082901b20..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.pt_BR.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -pt_BR: - site_settings: - daily_performance_report: "Analizar logs do NGINX diariamente e postar um tópico somente para a Staff com os detalhes" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.ro.yml b/plugins/discourse-nginx-performance-report/config/locales/server.ro.yml deleted file mode 100644 index 31d1c44013..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.ro.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -ro: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.ru.yml b/plugins/discourse-nginx-performance-report/config/locales/server.ru.yml deleted file mode 100644 index c4212530c4..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.ru.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -ru: - site_settings: - daily_performance_report: "Ежедневно анализировать логи сервера NGINX и отправлять сообщение с результатами анализа в тему, видимую только персоналу." diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.sk.yml b/plugins/discourse-nginx-performance-report/config/locales/server.sk.yml deleted file mode 100644 index d2b1d85b8d..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.sk.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -sk: - site_settings: - daily_performance_report: "Denne analyzuj NGINX logy a z detailov vytváraj témy iba pre zamestnancov." diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.sl.yml b/plugins/discourse-nginx-performance-report/config/locales/server.sl.yml deleted file mode 100644 index 154d194f86..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.sl.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -sl: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.sq.yml b/plugins/discourse-nginx-performance-report/config/locales/server.sq.yml deleted file mode 100644 index 463900e4fb..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.sq.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -sq: - site_settings: - daily_performance_report: "Analyze NGINX logs daily and post a Staff Only topic with details" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.sr.yml b/plugins/discourse-nginx-performance-report/config/locales/server.sr.yml deleted file mode 100644 index 7e57a61dd2..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.sr.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -sr: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.sv.yml b/plugins/discourse-nginx-performance-report/config/locales/server.sv.yml deleted file mode 100644 index 5b71c8af10..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.sv.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -sv: - site_settings: - daily_performance_report: "Analysera NGINX-loggar dagligen och skriv ett inlägg för personalen med detaljerna" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.sw.yml b/plugins/discourse-nginx-performance-report/config/locales/server.sw.yml deleted file mode 100644 index e32f712689..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.sw.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -sw: - site_settings: - daily_performance_report: "Pitia batli za NGINX kila siku na chapisha mada za wasaidizi tu pamoja na maelezo" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.te.yml b/plugins/discourse-nginx-performance-report/config/locales/server.te.yml deleted file mode 100644 index 49141baa04..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.te.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -te: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.th.yml b/plugins/discourse-nginx-performance-report/config/locales/server.th.yml deleted file mode 100644 index 7ed98e15d8..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.th.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -th: {} diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.tr_TR.yml b/plugins/discourse-nginx-performance-report/config/locales/server.tr_TR.yml deleted file mode 100644 index c6ce04582f..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.tr_TR.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -tr_TR: - site_settings: - daily_performance_report: "NGINX kayıtlarını analiz edip detaylı bir şekilde günlük Yetkili kategorisinde bir konu içerisinde paylaş." diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.uk.yml b/plugins/discourse-nginx-performance-report/config/locales/server.uk.yml deleted file mode 100644 index 4e6ab0d32f..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.uk.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -uk: - site_settings: - daily_performance_report: "Щодня аналізуйте журнали NGINX та публікуйте тему лише для персоналу з деталями" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.ur.yml b/plugins/discourse-nginx-performance-report/config/locales/server.ur.yml deleted file mode 100644 index 0d61b8f9d5..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.ur.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -ur: - site_settings: - daily_performance_report: "Analyze NGINX logs daily and post a Staff Only topic with details" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.vi.yml b/plugins/discourse-nginx-performance-report/config/locales/server.vi.yml deleted file mode 100644 index 0ad2a948e2..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.vi.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -vi: - site_settings: - daily_performance_report: "Phân tích nhật ký NGINX hàng ngày và gửi cho BQT thông tin chi tiết" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.zh_CN.yml b/plugins/discourse-nginx-performance-report/config/locales/server.zh_CN.yml deleted file mode 100644 index b3ee6f8f27..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.zh_CN.yml +++ /dev/null @@ -1,10 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -zh_CN: - site_settings: - daily_performance_report: "每日分析 NGINX 日志并且发布详情主题到管理人员才能看到的主题" diff --git a/plugins/discourse-nginx-performance-report/config/locales/server.zh_TW.yml b/plugins/discourse-nginx-performance-report/config/locales/server.zh_TW.yml deleted file mode 100644 index 92c18de9ae..0000000000 --- a/plugins/discourse-nginx-performance-report/config/locales/server.zh_TW.yml +++ /dev/null @@ -1,8 +0,0 @@ -# encoding: utf-8 -# -# Never edit this file. It will be overwritten when translations are pulled from Transifex. -# -# To work with us on translations, join this project: -# https://www.transifex.com/projects/p/discourse-org/ - -zh_TW: {} diff --git a/plugins/discourse-nginx-performance-report/config/settings.yml b/plugins/discourse-nginx-performance-report/config/settings.yml deleted file mode 100644 index 352b5fbe94..0000000000 --- a/plugins/discourse-nginx-performance-report/config/settings.yml +++ /dev/null @@ -1,6 +0,0 @@ -plugins: - # Reporting - daily_performance_report: false - performance_report_topic_id: - default: -1 - hidden: true diff --git a/plugins/discourse-nginx-performance-report/lib/log_analyzer.rb b/plugins/discourse-nginx-performance-report/lib/log_analyzer.rb deleted file mode 100644 index 19a299a8e2..0000000000 --- a/plugins/discourse-nginx-performance-report/lib/log_analyzer.rb +++ /dev/null @@ -1,158 +0,0 @@ -# frozen_string_literal: true - -class LogAnalyzer - - class LineParser - - # log_format log_discourse '[$time_local] "$http_host" $remote_addr "$request" "$http_user_agent" "$sent_http_x_discourse_route" $status $bytes_sent "$http_referer" $upstream_response_time $request_time "$sent_http_x_discourse_username"'; - - attr_accessor :time, :ip_address, :url, :route, :user_agent, :rails_duration, :total_duration, - :username, :status, :bytes_sent, :referer - - PATTERN = /\[(.*)\](?: ".*")? (\S+) \"(.*)\" \"(.*)\" \"(.*)\" ([0-9]+) ([0-9]+) \"(.*)\" ([0-9.]+) ([0-9.]+) "(.*)"/ - - TIME_FORMAT = "%d/%b/%Y:%H:%M:%S %Z" - - def self.parse(line) - - result = new - _, result.time, result.ip_address, result.url, result.user_agent, - result.route, result.status, result.bytes_sent, result.referer, - result.rails_duration, result.total_duration, result.username = line.match(PATTERN).to_a - - result.rails_duration = result.rails_duration.to_f - result.total_duration = result.total_duration.to_f - - verb = result.url[0..3] if result.url - if verb && verb == "POST" - result.route += " (POST)" - end - - if verb && verb == "PUT" - result.route += " (PUT)" - end - - result.url = self.sanitize_url(result.url) if result.url - - result - end - - def is_mobile? - user_agent =~ /Mobile|Android|webOS/ && !(user_agent =~ /iPad|Nexus (7|10)/) - end - - def parsed_time - DateTime.strptime(time, TIME_FORMAT) if time - end - - private - - def self.sanitize_url(url) - url.gsub(/api_key=([\w.\-]+)/, 'api_key=[FILTERED]') - end - end - - attr_reader :total_requests, :message_bus_requests, :filenames, - :ip_to_rails_duration, :username_to_rails_duration, - :route_to_rails_duration, :url_to_rails_duration, - :status_404_to_count, :from_time, :to_time - - def self.analyze(filenames, args) - new(filenames, args).analyze - end - - class Aggeregator - - attr_accessor :aggregate_type - - def initialize - @data = {} - @aggregate_type = :duration - end - - def add(id, duration, aggregate = nil) - ary = (@data[id] ||= [0, 0]) - ary[0] += duration - ary[1] += 1 - unless aggregate.nil? - ary[2] ||= Hash.new(0) - if @aggregate_type == :duration - ary[2][aggregate] += duration - elsif @aggregate_type == :count - ary[2][aggregate] += 1 - end - end - end - - def top(n, aggregator_formatter = nil) - @data.sort { |a, b| b[1][0] <=> a[1][0] }.first(n).map do |metric, ary| - metric = metric.to_s - metric = "[empty]" if metric.length == 0 - result = [metric, ary[0], ary[1]] - # handle aggregate - if ary[2] - if aggregator_formatter - result.push aggregator_formatter.call(ary[2], ary[0], ary[1]) - else - result.push ary[2].sort { |a, b| b[1] <=> a[1] }.first(5).map { |k, v| - v = "%.2f" % v if Float === v - "#{k}(#{v})"}.join(" ") - end - end - - result - end - end - end - - def initialize(filenames, args = {}) - @filenames = filenames - @ip_to_rails_duration = Aggeregator.new - @username_to_rails_duration = Aggeregator.new - - @route_to_rails_duration = Aggeregator.new - @route_to_rails_duration.aggregate_type = :count - - @url_to_rails_duration = Aggeregator.new - @status_404_to_count = Aggeregator.new - - @total_requests = 0 - @message_bus_requests = 0 - @limit = args[:limit] - end - - def analyze - now = DateTime.now - - @filenames.each do |filename| - File.open(filename).each_line do |line| - @total_requests += 1 - parsed = LineParser.parse(line) - - next unless parsed.time - next if @limit && ((now - parsed.parsed_time) * 24 * 60).to_i > @limit - - @from_time ||= parsed.time - @to_time = parsed.time - - if parsed.url =~ /(POST|GET) \/message-bus/ - @message_bus_requests += 1 - next - end - - @ip_to_rails_duration.add(parsed.ip_address, parsed.rails_duration) - - username = parsed.username == "-" ? "[Anonymous]" : parsed.username - @username_to_rails_duration.add(username, parsed.rails_duration, parsed.route) - - @route_to_rails_duration.add(parsed.route, parsed.rails_duration, parsed.is_mobile? ? "mobile" : "desktop") - - @url_to_rails_duration.add(parsed.url, parsed.rails_duration) - - @status_404_to_count.add(parsed.url, 1) if parsed.status == "404" - end - end - self - end - -end diff --git a/plugins/discourse-nginx-performance-report/plugin.rb b/plugins/discourse-nginx-performance-report/plugin.rb deleted file mode 100644 index 92531a5004..0000000000 --- a/plugins/discourse-nginx-performance-report/plugin.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -# name: discourse-nginx-performance-report -# about: Analyzing Discourse Performance using NGINX logs -# version: 0.1 -# url: https://github.com/discourse/discourse/tree/master/plugins/discourse-nginx-performance-report - -enabled_site_setting :daily_performance_report -enabled_site_setting_filter "daily_performance_report" -hide_plugin if self.respond_to?(:hide_plugin) - -after_initialize do - load File.expand_path("../app/jobs/scheduled/daily_performance_report.rb", __FILE__) -end diff --git a/plugins/discourse-nginx-performance-report/script/nginx_analyze.rb b/plugins/discourse-nginx-performance-report/script/nginx_analyze.rb deleted file mode 100644 index 2f8d57d9c6..0000000000 --- a/plugins/discourse-nginx-performance-report/script/nginx_analyze.rb +++ /dev/null @@ -1,141 +0,0 @@ -# frozen_string_literal: true - -require 'date' -require_relative '../lib/log_analyzer' - -args = ARGV.dup - -if args[0] == "--limit" - args.shift - limit = args.shift.to_i -end - -filenames = args if args[0] -filenames ||= ["/var/log/nginx/access.log", "/var/log/nginx/access.log.1"] - -analyzer = LogAnalyzer.analyze(filenames, limit: limit) - -SPACER = "-" * 100 - -# don't feel like pulling in active support -def map_with_index(ary, &block) - idx = 0 - ary.map do |item| - v = block.call(item, idx) - idx += 1 - v - end -end - -def top(cols, aggregator, count, aggregator_formatter = nil) - sorted = aggregator.top(count, aggregator_formatter) - - col_just = [] - - col_widths = map_with_index(cols) do |name, idx| - max_width = name.length - - if cols[idx].respond_to? :align - col_just[idx] = cols[idx].align - skip_just_detection = true - else - col_just[idx] = :ljust - end - - sorted.each do |row| - col_just[idx] = :rjust unless (String === row[idx] || row[idx].nil?) && !skip_just_detection - row[idx] = '%.2f' % row[idx] if Float === row[idx] - row[idx] = row[idx].to_s - max_width = row[idx].length if row[idx].length > max_width - end - [max_width, 80].min - end - - puts(map_with_index(cols) do |name, idx| - name.ljust(col_widths[idx]) - end.join(" ")) - - puts(map_with_index(cols) do |name, idx| - ("-" * name.length).ljust(col_widths[idx]) - end.join(" ")) - - sorted.each do |raw_row| - - rows = [] - idx = 0 - raw_row.each do |col| - j = 0 - col.to_s.scan(/(.{1,80}($|\s)|.{1,80})/).each do |r| - rows[j] ||= [] - rows[j][idx] = r[0] - j += 1 - end - idx += 1 - end - - if rows.length > 1 - puts - end - - rows.each do |row| - cols.length.times do |i| - print row[i].to_s.public_send(col_just[i], col_widths[i]) - print " " - end - puts - end - - if rows.length > 1 - puts - end - - end -end - -class Column < String - attr_accessor :align - - def initialize(val, align) - super(val) - @align = align - end -end - -puts -puts "Analyzed: #{analyzer.filenames.join(",")} on #{`hostname`}" -if limit - puts "Limited to #{DateTime.now - (limit.to_f / (60 * 24.0))} - #{DateTime.now}" -end -puts SPACER -puts "#{analyzer.from_time} - #{analyzer.to_time}" -puts SPACER -puts "Total Requests: #{analyzer.total_requests} ( MessageBus: #{analyzer.message_bus_requests} )" -puts SPACER -puts "Top 30 IPs by Server Load" -puts -top(["IP Address", "Duration", "Reqs"], analyzer.ip_to_rails_duration, 30) -puts SPACER -puts -puts "Top 30 users by Server Load" -puts -top(["Username", "Duration", "Reqs", "Routes"], analyzer.username_to_rails_duration, 30) -puts SPACER -puts -puts "Top 100 routes by Server Load" -puts -top(["Route", "Duration", "Reqs", Column.new("Mobile", :rjust)], analyzer.route_to_rails_duration, 100, lambda { - |hash, name, total| - "#{hash["mobile"] || 0} (#{"%.2f" % (((hash["mobile"] || 0) / (total + 0.0)) * 100)})%"} -) -puts SPACER -puts -puts "Top 30 urls by Server Load" -puts -top(["Url", "Duration", "Reqs"], analyzer.url_to_rails_duration, 30) - -puts "(all durations in seconds)" -puts SPACER -puts -puts "Top 30 not found urls (404s)" -puts -top(["Url", "Count"], analyzer.status_404_to_count, 30) diff --git a/plugins/discourse-nginx-performance-report/spec/line_parser_spec.rb b/plugins/discourse-nginx-performance-report/spec/line_parser_spec.rb deleted file mode 100644 index 6fe38ba8d9..0000000000 --- a/plugins/discourse-nginx-performance-report/spec/line_parser_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' -require_relative '../lib/log_analyzer' - -describe LogAnalyzer::LineParser do - describe '.parse' do - let(:line) { '[22/Sep/2016:07:32:00 +0000] 172.0.0.1 "GET /about.json?api_username=system&api_key=1234567 HTTP/1.1" "Some usename" "about/index" 200 1641 "-" 0.014 0.014 "system"' } - - it "should filter out the api_key" do - result = described_class.parse(line) - expect(result.url).to eq('GET /about.json?api_username=system&api_key=[FILTERED] HTTP/1.1') - end - end -end From b4bfc27b1909e5b1affbb8a8fa9df3b59c6deea1 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 18 Nov 2019 15:54:50 +1100 Subject: [PATCH 175/408] FEATURE: introduce default application level rate limiting by IP We have tested rate limiting with admin accounts with block rate limiting for close to 12 months now on meta.discourse.org. This has resulted in no degradation of services even to admin accounts that request a lot of info from the site. The default of 200 requests a minute and 50 per 10 seconds is very generous. It simply protects against very aggressive clients. This setting can be disabled or tweaked using: DISCOURSE_MAX_REQS_PER_IP_MODE and family. The only big downside here is in cases when a very large number of users tend to all come from a single IP. This can be the case on sites accessing Discourse from an internal network all sharing the same IP via NAT. Or a misconfigured Discourse that is unable to resolve IP addresses of users due to proxy mis-configuration. --- config/discourse_defaults.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/discourse_defaults.conf b/config/discourse_defaults.conf index 2b0bd3149b..17146b1cac 100644 --- a/config/discourse_defaults.conf +++ b/config/discourse_defaults.conf @@ -212,7 +212,7 @@ max_reqs_per_ip_per_10_seconds = 50 max_asset_reqs_per_ip_per_10_seconds = 200 # global rate limiter will simply warn if the limit is exceeded, can be warn+block, warn, block or none -max_reqs_per_ip_mode = none +max_reqs_per_ip_mode = block # bypass rate limiting any IP resolved as a private IP max_reqs_rate_limit_on_private = false From 7d389df5e72278694ea93c1783fafa865c639caf Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 18 Nov 2019 16:05:58 +1100 Subject: [PATCH 176/408] DEV: correct spec to allow for new default b4bfc27b changes the default so the spec should be changed as well. --- spec/components/middleware/request_tracker_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/components/middleware/request_tracker_spec.rb b/spec/components/middleware/request_tracker_spec.rb index 22fad3addc..3673bf83d3 100644 --- a/spec/components/middleware/request_tracker_spec.rb +++ b/spec/components/middleware/request_tracker_spec.rb @@ -129,7 +129,8 @@ describe Middleware::RequestTracker do Middleware::RequestTracker.new(app) end - it "does nothing by default" do + it "does nothing if configured to do nothing" do + global_setting :max_reqs_per_ip_mode, "none" global_setting :max_reqs_per_ip_per_10_seconds, 1 status, _ = middleware.call(env) From 975165f25fdd111d4acf62d511b590a688a1663b Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Mon, 18 Nov 2019 16:14:15 +1100 Subject: [PATCH 177/408] FIX: Don't error CleanUpInactiveUserJob when user is missing (#8362) --- app/jobs/scheduled/clean_up_inactive_users.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/jobs/scheduled/clean_up_inactive_users.rb b/app/jobs/scheduled/clean_up_inactive_users.rb index a0a4ab5f61..a54e1ee657 100644 --- a/app/jobs/scheduled/clean_up_inactive_users.rb +++ b/app/jobs/scheduled/clean_up_inactive_users.rb @@ -30,7 +30,8 @@ module Jobs User.transaction do ids.each do |id| begin - user = User.find(id) + user = User.find_by(id: id) + next unless user destroyer.destroy(user, transaction: false, context: I18n.t("user.destroy_reasons.inactive_user")) rescue => e Discourse.handle_job_exception(e, From a9704da34c6d70057eaf8bcc1e647545bd97135b Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Mon, 18 Nov 2019 07:44:08 +0200 Subject: [PATCH 178/408] FIX: A pmOnly tag should link to messages (#8361) isPrivateMessages represents that the tag list is shown in the context of private messages and pmOnly represents that the tag is used only in private messages. --- app/assets/javascripts/discourse/lib/render-tag.js.es6 | 2 +- .../discourse/templates/components/tag-list.hbs | 2 +- test/javascripts/acceptance/tags-test.js.es6 | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/render-tag.js.es6 b/app/assets/javascripts/discourse/lib/render-tag.js.es6 index d5e491661a..7a83678608 100644 --- a/app/assets/javascripts/discourse/lib/render-tag.js.es6 +++ b/app/assets/javascripts/discourse/lib/render-tag.js.es6 @@ -14,7 +14,7 @@ function defaultRenderTag(tag, params) { const tagName = params.tagName || "a"; let path; if (tagName === "a" && !params.noHref) { - if (params.isPrivateMessage && User.current()) { + if ((params.isPrivateMessage || params.pmOnly) && User.current()) { const username = params.tagsForUser ? params.tagsForUser : User.current().username; diff --git a/app/assets/javascripts/discourse/templates/components/tag-list.hbs b/app/assets/javascripts/discourse/templates/components/tag-list.hbs index 24adf8aa0e..dcbb0035e4 100644 --- a/app/assets/javascripts/discourse/templates/components/tag-list.hbs +++ b/app/assets/javascripts/discourse/templates/components/tag-list.hbs @@ -9,7 +9,7 @@ {{/if}} {{#each sortedTags as |tag|}}
- {{discourse-tag tag.id isPrivateMessage=isPrivateMessage tagsForUser=tagsForUser}} {{#if tag.pmOnly}}{{d-icon "far-envelope"}}{{/if}}{{#if tag.totalCount}} x {{tag.totalCount}}{{/if}} + {{discourse-tag tag.id isPrivateMessage=isPrivateMessage pmOnly=tag.pmOnly tagsForUser=tagsForUser}} {{#if tag.pmOnly}}{{d-icon "far-envelope"}}{{/if}}{{#if tag.totalCount}} x {{tag.totalCount}}{{/if}}
{{/each}}
diff --git a/test/javascripts/acceptance/tags-test.js.es6 b/test/javascripts/acceptance/tags-test.js.es6 index deab78fe80..7dad65494c 100644 --- a/test/javascripts/acceptance/tags-test.js.es6 +++ b/test/javascripts/acceptance/tags-test.js.es6 @@ -25,7 +25,10 @@ QUnit.test("list the tags in groups", async assert => { 200, { "Content-Type": "application/json" }, { - tags: [{ id: "planned", text: "planned", count: 7, pm_count: 0 }], + tags: [ + { id: "planned", text: "planned", count: 7, pm_count: 0 }, + { id: "private", text: "private", count: 0, pm_count: 7 } + ], extras: { tag_groups: [ { @@ -91,6 +94,11 @@ QUnit.test("list the tags in groups", async assert => { ["/tags/focus", "/tags/escort"], "always uses lowercase URLs for mixed case tags" ); + assert.equal( + $("a[data-tag-name='private']").attr("href"), + "/u/eviltrout/messages/tags/private", + "links to private messages" + ); }); test("new topic button is not available for staff-only tags", async assert => { From d28de23ac82ecb322f086bd05a6a8ceaf787da31 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 18 Nov 2019 16:47:47 +1100 Subject: [PATCH 179/408] FEATURE: block screaming frog SEO spider by default This crawler is not respectful and often can make 1000s of reqs a minute. Block by default, site operators can amend this default if they want to. --- config/site_settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/site_settings.yml b/config/site_settings.yml index cb7890b8fa..ce91ea6237 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -1371,7 +1371,7 @@ security: list_type: compact blacklisted_crawler_user_agents: type: list - default: "mauibot|semrushbot|ahrefsbot|blexbot" + default: "mauibot|semrushbot|ahrefsbot|blexbot|seo spider" list_type: compact slow_down_crawler_user_agents: type: list From af0cc89b116e8fed2c51be572d2a99230085aaec Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 18 Nov 2019 15:56:20 +1000 Subject: [PATCH 180/408] Mark upload show paths as is_asset_path (#8365) * this is to avoid excessive rate limiting, especially for secure media on media-heavy topics --- app/controllers/uploads_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb index 6f2d771563..caa6c8987f 100644 --- a/app/controllers/uploads_controller.rb +++ b/app/controllers/uploads_controller.rb @@ -8,6 +8,8 @@ class UploadsController < ApplicationController skip_before_action :preload_json, :check_xhr, :redirect_to_login_if_required, only: [:show, :show_short, :show_secure] protect_from_forgery except: :show + before_action :is_asset_path, only: [:show, :show_short, :show_secure] + def create # capture current user for block later on me = current_user From 79b8c08d45da40248484b6ea564f604b9d58e919 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Mon, 18 Nov 2019 17:31:01 +1100 Subject: [PATCH 181/408] DEV: give categories-separator class to HR after cateogries This allows for better styling of the hamburger menu --- app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 b/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 index 38af3cd7d9..912594351e 100644 --- a/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 +++ b/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 @@ -309,7 +309,7 @@ export default createWidget("hamburger-menu", { if (this.settings.showCategories) { results.push(this.listCategories()); - results.push(h("hr")); + results.push(h("hr.categories-separator")); } results.push( From 4e4844f4dbcbab50502f9feb973dbd13c6a75246 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Mon, 18 Nov 2019 12:06:13 +0530 Subject: [PATCH 182/408] REFACTOR: reduce the number of db queries. --- app/controllers/admin/site_settings_controller.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/controllers/admin/site_settings_controller.rb b/app/controllers/admin/site_settings_controller.rb index 385a4facf6..bc550ba103 100644 --- a/app/controllers/admin/site_settings_controller.rb +++ b/app/controllers/admin/site_settings_controller.rb @@ -58,9 +58,7 @@ class Admin::SiteSettingsController < Admin::AdminController notification_level = NotificationLevels.all[:watching_first_post] end - (previous_category_ids - new_category_ids).each do |category_id| - CategoryUser.where(category_id: category_id, notification_level: notification_level).delete_all - end + CategoryUser.where(category_id: (previous_category_ids - new_category_ids), notification_level: notification_level).delete_all (new_category_ids - previous_category_ids).each do |category_id| skip_user_ids = CategoryUser.where(category_id: category_id).pluck(:user_id) @@ -87,9 +85,7 @@ class Admin::SiteSettingsController < Admin::AdminController notification_level = NotificationLevels.all[:watching_first_post] end - (previous_tag_ids - new_tag_ids).each do |tag_id| - TagUser.where(tag_id: tag_id, notification_level: notification_level).delete_all - end + TagUser.where(tag_id: (previous_tag_ids - new_tag_ids), notification_level: notification_level).delete_all (new_tag_ids - previous_tag_ids).each do |tag_id| skip_user_ids = TagUser.where(tag_id: tag_id).pluck(:user_id) From 3bb7ad4be182d72ae97ade85e58fa763735ab9fc Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Mon, 18 Nov 2019 12:28:35 +0530 Subject: [PATCH 183/408] FEATURE: remove support for 'suppress_from_latest' category setting. (#8308) --- .../discourse/models/category.js.es6 | 1 - .../models/topic-tracking-state.js.es6 | 14 ----- .../components/edit-category-settings.hbs | 7 --- app/controllers/categories_controller.rb | 7 +-- app/controllers/list_controller.rb | 20 +----- app/controllers/tags_controller.rb | 1 - app/models/category.rb | 6 +- app/models/category_featured_topic.rb | 13 +--- app/models/site.rb | 4 -- app/serializers/category_serializer.rb | 5 -- app/serializers/site_serializer.rb | 1 - config/locales/client.en.yml | 1 - ...move_suppress_from_latest_from_category.rb | 46 ++++++++++++++ lib/import_export/base_exporter.rb | 2 +- lib/topic_query.rb | 8 +-- script/import_scripts/discuz_x.rb | 5 +- spec/fixtures/json/import-export.json | 12 ++-- spec/models/category_featured_topic_spec.rb | 18 ------ spec/requests/categories_controller_spec.rb | 12 ---- spec/requests/list_controller_spec.rb | 63 +------------------ 20 files changed, 64 insertions(+), 182 deletions(-) create mode 100644 db/post_migrate/20191107190330_remove_suppress_from_latest_from_category.rb diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 85cb273207..2de39b44e4 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -132,7 +132,6 @@ const Category = RestModel.extend({ allow_badges: this.allow_badges, custom_fields: this.custom_fields, topic_template: this.topic_template, - suppress_from_latest: this.suppress_from_latest, all_topics_wiki: this.all_topics_wiki, allowed_tags: this.allowed_tags, allowed_tag_groups: this.allowed_tag_groups, diff --git a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 index 9a565f379d..33a6d4d9d6 100644 --- a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 @@ -5,11 +5,9 @@ import { default as discourseComputed, on } from "discourse-common/utils/decorators"; -import { defaultHomepage } from "discourse/lib/utilities"; import PreloadStore from "preload-store"; import Category from "discourse/models/category"; import EmberObject from "@ember/object"; -import Site from "discourse/models/site"; import User from "discourse/models/user"; function isNew(topic) { @@ -144,18 +142,6 @@ const TopicTrackingState = EmberObject.extend({ } } - if (filter === defaultHomepage()) { - const suppressed_from_latest_category_ids = Site.currentProp( - "suppressed_from_latest_category_ids" - ); - if ( - suppressed_from_latest_category_ids && - suppressed_from_latest_category_ids.includes(data.payload.category_id) - ) { - return; - } - } - if ( ["all", "latest", "new"].includes(filter) && data.message_type === "new_topic" diff --git a/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs b/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs index 8c1f5472d3..1f65507a76 100644 --- a/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs +++ b/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs @@ -58,13 +58,6 @@ {{/if}} -
- -
-
- {{d-button action=(action "submit") class='btn-primary' label='user.change_password.set_password'}} + {{d-button action=(action "submit") class='btn-primary' label='user.change_password.set_password' type='submit'}} {{/if}} {{/if}} From ee02b7e04d8de6af755a7dcae08e320b19bc02b5 Mon Sep 17 00:00:00 2001 From: romanrizzi Date: Mon, 18 Nov 2019 09:30:52 -0300 Subject: [PATCH 188/408] Revert unintended prettier version downgrade --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f667b5f05e..11769181f3 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "install-peerdeps": "^1.10.2", "lodash-cli": "https://github.com/lodash-archive/lodash-cli.git", "pretender": "^1.6", - "prettier": "^1.18.2", + "prettier": "1.19.1", "puppeteer": "1.20", "qunit": "2.8.0", "route-recognizer": "^0.3.3", From acb8d6f94644d66d830e2dfde8f91fb2e50a1728 Mon Sep 17 00:00:00 2001 From: romanrizzi Date: Mon, 18 Nov 2019 09:32:03 -0300 Subject: [PATCH 189/408] Revert "Revert unintended prettier version downgrade" This reverts commit ee02b7e04d8de6af755a7dcae08e320b19bc02b5. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 11769181f3..f667b5f05e 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "install-peerdeps": "^1.10.2", "lodash-cli": "https://github.com/lodash-archive/lodash-cli.git", "pretender": "^1.6", - "prettier": "1.19.1", + "prettier": "^1.18.2", "puppeteer": "1.20", "qunit": "2.8.0", "route-recognizer": "^0.3.3", From 352d43b101e20945eb1acbb22abe601b2a07f69a Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Mon, 18 Nov 2019 14:59:28 +0200 Subject: [PATCH 190/408] FIX: Better handling of Group model state (#8356) The group card and group members page were affecting each other and were leaking members list and the query parameters which led to bad UX experience and sub-optimal performance (client made more queries because it was loading fewer members). This commit refactors the group model to make it more consistent, remove dead code, move error handling outside of model. --- .../components/group-card-contents.js.es6 | 6 +- .../components/group-members-input.js.es6 | 91 ------------- .../groups-form-profile-fields.js.es6 | 47 ++++--- .../discourse/controllers/group-index.js.es6 | 94 ++++++------- .../controllers/group-requests.js.es6 | 78 +++++------ .../discourse/controllers/group.js.es6 | 12 +- .../javascripts/discourse/models/group.js.es6 | 126 ++++++++++-------- .../discourse/routes/group-index.js.es6 | 2 +- .../discourse/routes/group-requests.js.es6 | 2 +- .../components/group-members-input.hbs | 30 ----- .../components/group-members-input.scss | 9 -- app/controllers/groups_controller.rb | 15 +-- .../acceptance/group-requests-test.js.es6 | 1 + 13 files changed, 188 insertions(+), 325 deletions(-) delete mode 100644 app/assets/javascripts/discourse/components/group-members-input.js.es6 delete mode 100644 app/assets/javascripts/discourse/templates/components/group-members-input.hbs delete mode 100644 app/assets/stylesheets/common/components/group-members-input.scss diff --git a/app/assets/javascripts/discourse/components/group-card-contents.js.es6 b/app/assets/javascripts/discourse/components/group-card-contents.js.es6 index 50ea8b9ab2..1838b32352 100644 --- a/app/assets/javascripts/discourse/components/group-card-contents.js.es6 +++ b/app/assets/javascripts/discourse/components/group-card-contents.js.es6 @@ -5,6 +5,7 @@ import { default as discourseComputed } from "discourse-common/utils/decorators" import CardContentsBase from "discourse/mixins/card-contents-base"; import CleansUp from "discourse/mixins/cleans-up"; import { groupPath } from "discourse/lib/url"; +import { Promise } from "rsvp"; const maxMembersToDisplay = 10; @@ -55,8 +56,9 @@ export default Component.extend(CardContentsBase, CleansUp, { if (!group.flair_url && !group.flair_bg_color) { group.set("flair_url", "fa-users"); } - group.set("limit", maxMembersToDisplay); - return group.findMembers(); + return group.members.length < maxMembersToDisplay + ? group.findMembers({ limit: maxMembersToDisplay }, true) + : Promise.resolve(); }) .catch(() => this._close()) .finally(() => this.set("loading", null)); diff --git a/app/assets/javascripts/discourse/components/group-members-input.js.es6 b/app/assets/javascripts/discourse/components/group-members-input.js.es6 deleted file mode 100644 index aedb43f2a6..0000000000 --- a/app/assets/javascripts/discourse/components/group-members-input.js.es6 +++ /dev/null @@ -1,91 +0,0 @@ -import discourseComputed from "discourse-common/utils/decorators"; -import { isEmpty } from "@ember/utils"; -import { lte } from "@ember/object/computed"; -import Component from "@ember/component"; -import { popupAjaxError } from "discourse/lib/ajax-error"; -import { propertyEqual } from "discourse/lib/computed"; - -export default Component.extend({ - classNames: ["group-members-input"], - addButton: true, - - @discourseComputed("model.limit", "model.offset", "model.user_count") - currentPage(limit, offset, userCount) { - if (userCount === 0) { - return 0; - } - - return Math.floor(offset / limit) + 1; - }, - - @discourseComputed("model.limit", "model.user_count") - totalPages(limit, userCount) { - if (userCount === 0) { - return 0; - } - return Math.ceil(userCount / limit); - }, - - @discourseComputed("model.usernames") - disableAddButton(usernames) { - return !usernames || !(usernames.length > 0); - }, - - showingFirst: lte("currentPage", 1), - showingLast: propertyEqual("currentPage", "totalPages"), - - actions: { - next() { - if (this.showingLast) { - return; - } - - const group = this.model; - const offset = Math.min( - group.get("offset") + group.get("limit"), - group.get("user_count") - ); - group.set("offset", offset); - - return group.findMembers(); - }, - - previous() { - if (this.showingFirst) { - return; - } - - const group = this.model; - const offset = Math.max(group.get("offset") - group.get("limit"), 0); - group.set("offset", offset); - - return group.findMembers(); - }, - - addMembers() { - if (isEmpty(this.get("model.usernames"))) { - return; - } - this.model.addMembers(this.get("model.usernames")).catch(popupAjaxError); - this.set("model.usernames", null); - }, - - removeMember(member) { - const message = I18n.t("groups.manage.delete_member_confirm", { - username: member.get("username"), - group: this.get("model.name") - }); - - return bootbox.confirm( - message, - I18n.t("no_value"), - I18n.t("yes_value"), - confirm => { - if (confirm) { - this.model.removeMember(member); - } - } - ); - } - } -}); diff --git a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 index 9074ef2d63..fda6dd8ec6 100644 --- a/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-form-profile-fields.js.es6 @@ -6,6 +6,7 @@ import { observes } from "discourse-common/utils/decorators"; import Group from "discourse/models/group"; +import { popupAjaxError } from "discourse/lib/ajax-error"; import discourseDebounce from "discourse/lib/debounce"; import EmberObject from "@ember/object"; @@ -68,32 +69,34 @@ export default Component.extend({ name = this.nameInput; if (isEmpty(name)) return; - Group.checkName(name).then(response => { - const validationName = "uniqueNameValidation"; + Group.checkName(name) + .then(response => { + const validationName = "uniqueNameValidation"; - if (response.available) { - this.set( - validationName, - EmberObject.create({ - ok: true, - reason: I18n.t("admin.groups.new.name.available") - }) - ); + if (response.available) { + this.set( + validationName, + EmberObject.create({ + ok: true, + reason: I18n.t("admin.groups.new.name.available") + }) + ); - this.set("disableSave", false); - this.set("model.name", this.nameInput); - } else { - let reason; - - if (response.errors) { - reason = response.errors.join(" "); + this.set("disableSave", false); + this.set("model.name", this.nameInput); } else { - reason = I18n.t("admin.groups.new.name.not_available"); - } + let reason; - this.set(validationName, this._failedInputValidation(reason)); - } - }); + if (response.errors) { + reason = response.errors.join(" "); + } else { + reason = I18n.t("admin.groups.new.name.not_available"); + } + + this.set(validationName, this._failedInputValidation(reason)); + } + }) + .catch(popupAjaxError); }, 500), _failedInputValidation(reason) { diff --git a/app/assets/javascripts/discourse/controllers/group-index.js.es6 b/app/assets/javascripts/discourse/controllers/group-index.js.es6 index 094c136597..887d5dbfcf 100644 --- a/app/assets/javascripts/discourse/controllers/group-index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-index.js.es6 @@ -1,27 +1,25 @@ +import Controller, { inject } from "@ember/controller"; import { alias } from "@ember/object/computed"; -import { inject } from "@ember/controller"; -import Controller from "@ember/controller"; -import { popupAjaxError } from "discourse/lib/ajax-error"; -import Group from "discourse/models/group"; import { default as discourseComputed, observes } from "discourse-common/utils/decorators"; +import { popupAjaxError } from "discourse/lib/ajax-error"; import discourseDebounce from "discourse/lib/debounce"; -import User from "discourse/models/user"; export default Controller.extend({ + application: inject(), + queryParams: ["order", "desc", "filter"], + order: "", desc: null, - loading: false, - limit: null, - offset: null, - isOwner: alias("model.is_group_owner"), - showActions: false, filter: null, filterInput: null, - application: inject(), + + loading: false, + isOwner: alias("model.is_group_owner"), + showActions: false, @observes("filterInput") _setFilter: discourseDebounce(function() { @@ -29,19 +27,33 @@ export default Controller.extend({ }, 500), @observes("order", "desc", "filter") - refreshMembers() { - this.set("loading", true); - const model = this.model; + _filtersChanged() { + this.findMembers(true); + }, - if (model && model.can_see_members) { - model.findMembers(this.memberParams).finally(() => { - this.set( - "application.showFooter", - model.members.length >= model.user_count - ); - this.set("loading", false); - }); + findMembers(refresh) { + if (this.loading) { + return; } + + const model = this.model; + if (!model) { + return; + } + + if (!refresh && model.members.length >= model.user_count) { + this.set("application.showFooter", true); + return; + } + + this.set("loading", true); + model.findMembers(this.memberParams, refresh).finally(() => { + this.set( + "application.showFooter", + model.members.length >= model.user_count + ); + this.set("loading", false); + }); }, @discourseComputed("order", "desc", "filter") @@ -49,7 +61,7 @@ export default Controller.extend({ return { order, desc, filter }; }, - @discourseComputed("model.members") + @discourseComputed("model.members.[]") hasMembers(members) { return members && members.length > 0; }, @@ -69,6 +81,10 @@ export default Controller.extend({ }, actions: { + loadMore() { + this.findMembers(); + }, + toggleActions() { this.toggleProperty("showActions"); }, @@ -93,38 +109,6 @@ export default Controller.extend({ .then(() => this.set("usernames", [])) .catch(popupAjaxError); } - }, - - loadMore() { - if (this.loading) { - return; - } - if (this.get("model.members.length") >= this.get("model.user_count")) { - this.set("application.showFooter", true); - return; - } - - this.set("loading", true); - - Group.loadMembers( - this.get("model.name"), - this.get("model.members.length"), - this.limit, - { order: this.order, desc: this.desc } - ).then(result => { - this.get("model.members").addObjects( - result.members.map(member => User.create(member)) - ); - this.setProperties({ - loading: false, - user_count: result.meta.total, - limit: result.meta.limit, - offset: Math.min( - result.meta.offset + result.meta.limit, - result.meta.total - ) - }); - }); } } }); diff --git a/app/assets/javascripts/discourse/controllers/group-requests.js.es6 b/app/assets/javascripts/discourse/controllers/group-requests.js.es6 index ba8c7c971b..013c44f6d8 100644 --- a/app/assets/javascripts/discourse/controllers/group-requests.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group-requests.js.es6 @@ -1,25 +1,23 @@ -import { inject } from "@ember/controller"; -import Controller from "@ember/controller"; -import { ajax } from "discourse/lib/ajax"; -import { popupAjaxError } from "discourse/lib/ajax-error"; -import Group from "discourse/models/group"; +import Controller, { inject } from "@ember/controller"; import { default as discourseComputed, observes } from "discourse-common/utils/decorators"; +import { ajax } from "discourse/lib/ajax"; +import { popupAjaxError } from "discourse/lib/ajax-error"; import discourseDebounce from "discourse/lib/debounce"; -import User from "discourse/models/user"; export default Controller.extend({ + application: inject(), + queryParams: ["order", "desc", "filter"], + order: "", desc: null, - loading: false, - limit: null, - offset: null, filter: null, filterInput: null, - application: inject(), + + loading: false, @observes("filterInput") _setFilter: discourseDebounce(function() { @@ -27,51 +25,41 @@ export default Controller.extend({ }, 500), @observes("order", "desc", "filter") - refreshRequesters(force) { - if (this.loading || !this.model) { + _filtersChanged() { + this.findRequesters(true); + }, + + findRequesters(refresh) { + if (this.loading) { return; } - if ( - !force && - this.count && - this.get("model.requesters.length") >= this.count - ) { + const model = this.model; + if (!model) { + return; + } + + if (!refresh && model.members.length >= model.user_count) { this.set("application.showFooter", true); return; } this.set("loading", true); - this.set("application.showFooter", false); - - Group.loadMembers( - this.get("model.name"), - force ? 0 : this.get("model.requesters.length"), - this.limit, - { - order: this.order, - desc: this.desc, - filter: this.filter, - requesters: true - } - ).then(result => { - const requesters = (!force && this.get("model.requesters")) || []; - requesters.addObjects(result.members.map(m => User.create(m))); - this.set("model.requesters", requesters); - - this.setProperties({ - loading: false, - count: result.meta.total, - limit: result.meta.limit, - offset: Math.min( - result.meta.offset + result.meta.limit, - result.meta.total - ) - }); + model.findRequesters(this.memberParams, refresh).finally(() => { + this.set( + "application.showFooter", + model.requesters.length >= model.user_count + ); + this.set("loading", false); }); }, - @discourseComputed("model.requesters") + @discourseComputed("order", "desc", "filter") + memberParams(order, desc, filter) { + return { order, desc, filter }; + }, + + @discourseComputed("model.requesters.[]") hasRequesters(requesters) { return requesters && requesters.length > 0; }, @@ -94,7 +82,7 @@ export default Controller.extend({ actions: { loadMore() { - this.refreshRequesters(); + this.findRequesters(); }, acceptRequest(user) { diff --git a/app/assets/javascripts/discourse/controllers/group.js.es6 b/app/assets/javascripts/discourse/controllers/group.js.es6 index bd79392b85..b6e9a7ab8f 100644 --- a/app/assets/javascripts/discourse/controllers/group.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group.js.es6 @@ -21,10 +21,17 @@ export default Controller.extend({ @discourseComputed( "showMessages", "model.user_count", + "model.request_count", "canManageGroup", "model.allow_membership_requests" ) - tabs(showMessages, userCount, canManageGroup, allowMembershipRequests) { + tabs( + showMessages, + userCount, + requestCount, + canManageGroup, + allowMembershipRequests + ) { const membersTab = Tab.create({ name: "members", route: "group.index", @@ -41,7 +48,8 @@ export default Controller.extend({ Tab.create({ name: "requests", i18nKey: "requests.title", - icon: "user-plus" + icon: "user-plus", + count: requestCount }) ); } diff --git a/app/assets/javascripts/discourse/models/group.js.es6 b/app/assets/javascripts/discourse/models/group.js.es6 index 4d6455e891..7822111134 100644 --- a/app/assets/javascripts/discourse/models/group.js.es6 +++ b/app/assets/javascripts/discourse/models/group.js.es6 @@ -1,31 +1,31 @@ +import EmberObject from "@ember/object"; +import { equal } from "@ember/object/computed"; import { isEmpty } from "@ember/utils"; -import { notEmpty, equal } from "@ember/object/computed"; -import { ajax } from "discourse/lib/ajax"; import { default as discourseComputed, observes } from "discourse-common/utils/decorators"; +import { ajax } from "discourse/lib/ajax"; +import Category from "discourse/models/category"; import GroupHistory from "discourse/models/group-history"; import RestModel from "discourse/models/rest"; -import Category from "discourse/models/category"; -import User from "discourse/models/user"; import Topic from "discourse/models/topic"; -import { popupAjaxError } from "discourse/lib/ajax-error"; -import EmberObject from "@ember/object"; +import User from "discourse/models/user"; const Group = RestModel.extend({ - limit: 50, - offset: 0, user_count: 0, + limit: null, + offset: null, + + request_count: 0, + requestersLimit: null, + requestersOffset: null, init() { this._super(...arguments); - - this.set("owners", []); + this.setProperties({ members: [], requesters: [] }); }, - hasOwners: notEmpty("owners"), - @discourseComputed("automatic_membership_email_domains") emailDomains(value) { return isEmpty(value) ? "" : value; @@ -36,50 +36,76 @@ const Group = RestModel.extend({ return automatic ? "automatic" : "custom"; }, - @discourseComputed("user_count") - userCountDisplay(userCount) { - // don't display zero its ugly - if (userCount > 0) { - return userCount; + findMembers(params, refresh) { + if (isEmpty(this.name) || !this.can_see_members) { + return Ember.RSVP.Promise.reject(); } + + if (refresh) { + this.setProperties({ limit: null, offset: null }); + } + + params = Object.assign( + { offset: (this.offset || 0) + (this.limit || 0) }, + params + ); + + return Group.loadMembers(this.name, params).then(result => { + const ownerIds = new Set(); + result.owners.forEach(owner => ownerIds.add(owner.id)); + + const members = refresh ? [] : this.members; + members.pushObjects( + result.members.map(member => { + member.owner = ownerIds.has(member.id); + return User.create(member); + }) + ); + + this.setProperties({ + members, + user_count: result.meta.total, + limit: result.meta.limit, + offset: result.meta.offset + }); + }); }, - findMembers(params) { + findRequesters(params, refresh) { if (isEmpty(this.name) || !this.can_see_members) { - return; + return Ember.RSVP.Promise.reject(); } - const offset = Math.min(this.user_count, Math.max(this.offset, 0)); + if (refresh) { + this.setProperties({ requestersOffset: null, requestersLimit: null }); + } - return Group.loadMembers(this.name, offset, this.limit, params).then( - result => { - const ownerIds = {}; - result.owners.forEach(owner => (ownerIds[owner.id] = true)); - - this.setProperties({ - user_count: result.meta.total, - limit: result.meta.limit, - offset: result.meta.offset, - members: result.members.map(member => { - if (ownerIds[member.id]) { - member.owner = true; - } - return User.create(member); - }), - owners: result.owners.map(owner => User.create(owner)) - }); - } + params = Object.assign( + { + offset: (this.requestersOffset || 0) + (this.requestersLimit || 0), + requesters: true + }, + params ); + + return Group.loadMembers(this.name, params).then(result => { + const requesters = refresh ? [] : this.requesters; + requesters.pushObjects(result.members.map(m => User.create(m))); + + this.setProperties({ + requesters, + request_count: result.meta.total, + requestersLimit: result.meta.limit, + requestersOffset: result.meta.offset + }); + }); }, removeOwner(member) { return ajax(`/admin/groups/${this.id}/owners.json`, { type: "DELETE", data: { user_id: member.id } - }).then(() => { - // reload member list - this.findMembers(); - }); + }).then(() => this.findMembers()); }, removeMember(member, params) { @@ -272,16 +298,8 @@ Group.reopenClass({ ); }, - loadMembers(name, offset, limit, params) { - return ajax(`/groups/${name}/members.json`, { - data: Object.assign( - { - limit: limit || 50, - offset: offset || 0 - }, - params || {} - ) - }); + loadMembers(name, opts) { + return ajax(`/groups/${name}/members.json`, { data: opts }); }, mentionable(name) { @@ -293,9 +311,7 @@ Group.reopenClass({ }, checkName(name) { - return ajax("/groups/check-name", { - data: { group_name: name } - }).catch(popupAjaxError); + return ajax("/groups/check-name", { data: { group_name: name } }); } }); diff --git a/app/assets/javascripts/discourse/routes/group-index.js.es6 b/app/assets/javascripts/discourse/routes/group-index.js.es6 index a8f630df0f..a3aed42816 100644 --- a/app/assets/javascripts/discourse/routes/group-index.js.es6 +++ b/app/assets/javascripts/discourse/routes/group-index.js.es6 @@ -19,7 +19,7 @@ export default DiscourseRoute.extend({ filterInput: this._params.filter }); - controller.refreshMembers(); + controller.findMembers(true); }, actions: { diff --git a/app/assets/javascripts/discourse/routes/group-requests.js.es6 b/app/assets/javascripts/discourse/routes/group-requests.js.es6 index b299bb01bf..548529cab0 100644 --- a/app/assets/javascripts/discourse/routes/group-requests.js.es6 +++ b/app/assets/javascripts/discourse/routes/group-requests.js.es6 @@ -18,6 +18,6 @@ export default DiscourseRoute.extend({ filterInput: this._params.filter }); - controller.refreshRequesters(true); + controller.findRequesters(true); } }); diff --git a/app/assets/javascripts/discourse/templates/components/group-members-input.hbs b/app/assets/javascripts/discourse/templates/components/group-members-input.hbs deleted file mode 100644 index 73c5820a85..0000000000 --- a/app/assets/javascripts/discourse/templates/components/group-members-input.hbs +++ /dev/null @@ -1,30 +0,0 @@ - - -{{#if model.members}} -
- - {{currentPage}}/{{totalPages}} - -
-
- {{#each model.members as |member|}} - {{group-member member=member automatic=model.automatic removeAction=(action "removeMember")}} - {{/each}} -
-{{/if}} - -{{#unless model.automatic}} -
- {{user-selector usernames=model.usernames - placeholderKey="groups.selector_placeholder" - id="member-selector"}} - - {{#if addButton}} - {{d-button action=(action "addMembers") - class="add" - icon="plus" - disabled=disableAddButton - label="groups.manage.add_members"}} - {{/if}} -
-{{/unless}} diff --git a/app/assets/stylesheets/common/components/group-members-input.scss b/app/assets/stylesheets/common/components/group-members-input.scss deleted file mode 100644 index fde660de04..0000000000 --- a/app/assets/stylesheets/common/components/group-members-input.scss +++ /dev/null @@ -1,9 +0,0 @@ -.group-members-input { - .group-members-input-selector { - margin-top: 10px; - - .add { - margin-top: 7px; - } - } -} diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index f0ed98e57d..1ca58471ce 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -208,20 +208,11 @@ class GroupsController < ApplicationController guardian.ensure_can_see_group_members!(group) - limit = (params[:limit] || 20).to_i + limit = (params[:limit] || 50).to_i offset = params[:offset].to_i - if limit < 0 - raise Discourse::InvalidParameters.new(:limit) - end - - if limit > 1000 - raise Discourse::InvalidParameters.new(:limit) - end - - if offset < 0 - raise Discourse::InvalidParameters.new(:offset) - end + raise Discourse::InvalidParameters.new(:limit) if limit < 0 || limit > 1000 + raise Discourse::InvalidParameters.new(:offset) if offset < 0 dir = (params[:desc] && !params[:desc].blank?) ? 'DESC' : 'ASC' order = "" diff --git a/test/javascripts/acceptance/group-requests-test.js.es6 b/test/javascripts/acceptance/group-requests-test.js.es6 index 3e9c189dc7..68ccf7f867 100644 --- a/test/javascripts/acceptance/group-requests-test.js.es6 +++ b/test/javascripts/acceptance/group-requests-test.js.es6 @@ -37,6 +37,7 @@ acceptance("Group Requests", { is_group_user: true, is_group_owner: true, is_group_owner_display: true, + can_see_members: true, mentionable: false, messageable: false }, From 3650c64bca2ce6d4012598446e10278d8fdda75e Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Mon, 18 Nov 2019 15:09:47 +0200 Subject: [PATCH 191/408] FIX: Ensure load-more considers current position (#8357) The loadMore action was not called if user was already at the bottom of the page. --- app/assets/javascripts/discourse/mixins/load-more.js.es6 | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/discourse/mixins/load-more.js.es6 b/app/assets/javascripts/discourse/mixins/load-more.js.es6 index f54b563034..911e261e47 100644 --- a/app/assets/javascripts/discourse/mixins/load-more.js.es6 +++ b/app/assets/javascripts/discourse/mixins/load-more.js.es6 @@ -21,6 +21,7 @@ export default Mixin.create(Scrolling, { const eyeline = new Eyeline(this.eyelineSelector + ":last"); this.set("eyeline", eyeline); eyeline.on("sawBottom", () => this.send("loadMore")); + eyeline.update(); // update once to consider current position this.bindScrolling(); }, From 172832f353b9befc92ce75c5fb0c564a6ec1bf03 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 18 Nov 2019 13:26:26 +0000 Subject: [PATCH 192/408] DEV: Submit forms via `type=submit` button, not explicit form action (#8368) --- .../discourse/templates/modal/forgot-password.hbs | 5 +++-- .../discourse/templates/preferences-second-factor.hbs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/templates/modal/forgot-password.hbs b/app/assets/javascripts/discourse/templates/modal/forgot-password.hbs index 473fbd9e38..6ccead6258 100644 --- a/app/assets/javascripts/discourse/templates/modal/forgot-password.hbs +++ b/app/assets/javascripts/discourse/templates/modal/forgot-password.hbs @@ -1,4 +1,4 @@ -
+ {{#d-modal-body class="forgot-password-modal"}} {{#unless offerHelp}} @@ -12,7 +12,8 @@ {{d-button action=(action "resetPassword") label="forgot_password.reset" disabled=submitDisabled - class="btn-primary forgot-password-reset"}} + class="btn-primary forgot-password-reset" + type='submit'}} {{else}} {{d-button class="btn-large btn-primary" label="forgot_password.button_ok" diff --git a/app/assets/javascripts/discourse/templates/preferences-second-factor.hbs b/app/assets/javascripts/discourse/templates/preferences-second-factor.hbs index 675e005c39..5b0da4457e 100644 --- a/app/assets/javascripts/discourse/templates/preferences-second-factor.hbs +++ b/app/assets/javascripts/discourse/templates/preferences-second-factor.hbs @@ -1,6 +1,6 @@
{{#conditional-loading-spinner condition=loading}} - + {{#if showEnforcedNotice}}
From a3df06505802184e89031b6d2ccdcebd1533ac8a Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Mon, 18 Nov 2019 11:04:21 -0300 Subject: [PATCH 193/408] PERF: Do fewer queries when converting posts. (#8358) - Avoid using User#find and then fetching the user_stat association just to update a counter - We did this for every post in the topic. - Avoid having to query the topic_allowed_user table everytime we want add a new topic_allowed_user - Use pluck to fetch just what we need. --- app/models/topic_converter.rb | 37 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/app/models/topic_converter.rb b/app/models/topic_converter.rb index ec54140a29..120920b412 100644 --- a/app/models/topic_converter.rb +++ b/app/models/topic_converter.rb @@ -61,31 +61,30 @@ class TopicConverter private + def posters + @posters ||= @topic.posts.distinct.pluck(:user_id).to_a + end + def update_user_stats - @topic.posts.where(deleted_at: nil).each do |p| - user = User.find(p.user_id) - # update posts count. NOTE that DirectoryItem.refresh will overwrite this by counting UserAction records. - user.user_stat.post_count += 1 - user.user_stat.save! - end + # update posts count. NOTE that DirectoryItem.refresh will overwrite this by counting UserAction records. # update topics count - @topic.user.user_stat.topic_count += 1 - @topic.user.user_stat.save! + UserStat.where(user_id: posters).update_all('post_count = post_count + 1') + UserStat.where(user_id: @topic.user_id).update_all('topic_count = topic_count + 1') end def add_allowed_users - @topic.posts.where(deleted_at: nil).each do |p| - user = User.find(p.user_id) - @topic.topic_allowed_users.build(user_id: user.id) unless @topic.topic_allowed_users.where(user_id: user.id).exists? - # update posts count. NOTE that DirectoryItem.refresh will overwrite this by counting UserAction records. - user.user_stat.post_count -= 1 - user.user_stat.save! - end - @topic.topic_allowed_users.build(user_id: @user.id) unless @topic.topic_allowed_users.where(user_id: @user.id).exists? - @topic.topic_allowed_users = @topic.topic_allowed_users.uniq(&:user_id) + # update posts count. NOTE that DirectoryItem.refresh will overwrite this by counting UserAction records. # update topics count - @topic.user.user_stat.topic_count -= 1 - @topic.user.user_stat.save! + UserStat.where(user_id: posters).update_all('post_count = post_count - 1') + UserStat.where(user_id: @topic.user_id).update_all('topic_count = topic_count - 1') + + existing_allowed_users = @topic.topic_allowed_users.pluck(:user_id) + users_to_allow = posters << @user.id + + (users_to_allow - existing_allowed_users).uniq.each do |user_id| + @topic.topic_allowed_users.build(user_id: user_id) + end + @topic.save! end From 0e759add0fc19daed28b26eb047370eb16604835 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Mon, 18 Nov 2019 09:43:14 -0500 Subject: [PATCH 194/408] DEV: Better topic participants summary spec --- spec/models/topic_participants_summary_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/models/topic_participants_summary_spec.rb b/spec/models/topic_participants_summary_spec.rb index f5b3fe6190..475ece38b6 100644 --- a/spec/models/topic_participants_summary_spec.rb +++ b/spec/models/topic_participants_summary_spec.rb @@ -20,9 +20,10 @@ describe TopicParticipantsSummary do fab!(:user3) { Fabricate(:user) } fab!(:user4) { Fabricate(:user) } fab!(:user5) { Fabricate(:user) } + fab!(:user6) { Fabricate(:user) } it "must never contains the user and at most 5 participants" do - topic.allowed_user_ids = [user1.id, user2.id, user3.id, user4.id, user5.id] + topic.allowed_user_ids = [user1.id, user2.id, user3.id, user4.id, user5.id, user6.id] expect(summary.map(&:user)).to eq([user1, user2, user3, user4, user5]) end From 97dad94bfd4a423f4d32c3c021079739f57ee1fc Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Mon, 18 Nov 2019 10:14:21 -0500 Subject: [PATCH 195/408] DEV: Bump eslint-config-discourse to 1.0.6 Also fixes an inconsistency in Prettier version number. --- package.json | 4 ++-- yarn.lock | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index f667b5f05e..499122e428 100644 --- a/package.json +++ b/package.json @@ -43,11 +43,11 @@ "chrome-launcher": "^0.12.0", "chrome-remote-interface": "^0.25", "eslint": "^4.19", - "eslint-config-discourse": "1.0.5", + "eslint-config-discourse": "1.0.6", "install-peerdeps": "^1.10.2", "lodash-cli": "https://github.com/lodash-archive/lodash-cli.git", "pretender": "^1.6", - "prettier": "^1.18.2", + "prettier": "^1.19.1", "puppeteer": "1.20", "qunit": "2.8.0", "route-recognizer": "^0.3.3", diff --git a/yarn.lock b/yarn.lock index aa6379bef8..6ccddcbf7e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -886,10 +886,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-discourse@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.5.tgz#b8effd2de0de927fc30cd696c1645813a3a4387c" - integrity sha512-dIuz1P+DsNi//7ipjogOKUKTAaUJ2OFVr7VSV7em0EzwuAyOyW4eo19C0RwR3HheNq8uKOjW1dpdCu7Ur3Bdbw== +eslint-config-discourse@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.6.tgz#cfd23c7d7b92ca9c416cbc30272be197a823cbe3" + integrity sha512-JOTncJzusPnYC97rXRQLewk5CxToL31spw7dzDbVk9XkZpnmRenbWmRawW2OEkbbXow3AdcKj/ousmo9PttwbA== eslint-scope@3.7.1: version "3.7.1" @@ -2287,7 +2287,7 @@ pretender@^1.6: fake-xml-http-request "^1.6.0" route-recognizer "^0.3.3" -prettier@^1.18.2: +prettier@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== From 6f9afde9a8505f7a869f1117c53fc3f6c12382b4 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 18 Nov 2019 15:36:06 +0000 Subject: [PATCH 196/408] UX: Allow enter key to submit test email in admin panel --- .../admin/templates/email-index.hbs | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/admin/templates/email-index.hbs b/app/assets/javascripts/admin/templates/email-index.hbs index 42109ddaa9..e817cb4222 100644 --- a/app/assets/javascripts/admin/templates/email-index.hbs +++ b/app/assets/javascripts/admin/templates/email-index.hbs @@ -12,20 +12,23 @@ {{/each}} -
- {{#if sendingEmail}} -
{{i18n 'admin.email.sending_test'}}
- {{else}} -
- {{text-field value=testEmailAddress placeholderKey="admin.email.test_email_address"}} + +
+ {{#if sendingEmail}} +
{{i18n 'admin.email.sending_test'}}
+ {{else}} +
+ {{text-field value=testEmailAddress placeholderKey="admin.email.test_email_address"}} +
+
+ {{d-button + class="btn-primary" + action=(action "sendTestEmail") + disabled=sendTestEmailDisabled + label="admin.email.send_test" + type="submit"}} + {{#if sentTestEmailMessage}}{{sentTestEmailMessage}}{{/if}} +
+ {{/if}}
-
- {{d-button - class="btn-primary" - action=(action "sendTestEmail") - disabled=sendTestEmailDisabled - label="admin.email.send_test"}} - {{#if sentTestEmailMessage}}{{sentTestEmailMessage}}{{/if}} -
- {{/if}} -
+ From eaf6096890120906b4f4e6282eb399afc5039559 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 18 Nov 2019 15:39:41 +0000 Subject: [PATCH 197/408] DEV: Use rubocop-discourse gem to add custom chdir cop Followup to b27e009655a866973f04e16f6694b8ab853124d3 --- .rubocop.yml | 8 ++++++++ Gemfile | 1 + Gemfile.lock | 3 +++ lib/rubocop/cop/discourse_cops.rb | 34 ------------------------------- 4 files changed, 12 insertions(+), 34 deletions(-) delete mode 100644 lib/rubocop/cop/discourse_cops.rb diff --git a/.rubocop.yml b/.rubocop.yml index 15096124c0..dc0fd5cceb 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,3 +1,6 @@ +require: + - rubocop-discourse + AllCops: TargetRubyVersion: 2.4 DisabledByDefault: true @@ -128,3 +131,8 @@ Style/Semicolon: Style/RedundantReturn: Enabled: true + +DiscourseCops/NoChdir: + Enabled: true + Exclude: + - 'spec/**/*' # Specs are run sequentially, so chdir can be used diff --git a/Gemfile b/Gemfile index 6d4182e56c..c4ce6cb479 100644 --- a/Gemfile +++ b/Gemfile @@ -143,6 +143,7 @@ group :test, :development do gem 'pry-nav' gem 'byebug', require: ENV['RM_INFO'].nil? gem 'rubocop', require: false + gem "rubocop-discourse", require: false gem 'parallel_tests' end diff --git a/Gemfile.lock b/Gemfile.lock index 6abc17fb50..43eac52d79 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -348,6 +348,8 @@ GEM rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 1.7) + rubocop-discourse (1.0.1) + rubocop (>= 0.69.0) ruby-openid (2.7.0) ruby-prof (0.17.0) ruby-progressbar (1.10.0) @@ -524,6 +526,7 @@ DEPENDENCIES rspec-rails (= 4.0.0.beta2) rtlit rubocop + rubocop-discourse ruby-prof ruby-readability rubyzip diff --git a/lib/rubocop/cop/discourse_cops.rb b/lib/rubocop/cop/discourse_cops.rb deleted file mode 100644 index 3acc3d7127..0000000000 --- a/lib/rubocop/cop/discourse_cops.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -module RuboCop - module Cop - module DiscourseCops - # Avoid using chdir - it is not thread safe. - # - # Instead, you may be able to use: - # Discourse::Utils.execute_command(chdir: 'test') do |runner| - # runner.exec('pwd') - # end - # - # @example - # # bad - # Dir.chdir('test') - class NoChdir < Cop - MSG = 'Chdir is not thread safe.' - - def_node_matcher :using_dir_chdir?, <<-MATCHER - (send (const nil? :Dir) :chdir ...) - MATCHER - - def_node_matcher :using_fileutils_cd?, <<-MATCHER - (send (const nil? :FileUtils) :cd ...) - MATCHER - - def on_send(node) - return if !(using_dir_chdir?(node) || using_fileutils_cd?(node)) - add_offense(node, message: MSG) - end - end - end - end -end From 0350247130dd425f30ee484b8afea02c20586de6 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 18 Nov 2019 16:00:18 +0000 Subject: [PATCH 198/408] DEV: Exclude plugin specs when running chdir cop --- .rubocop.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.rubocop.yml b/.rubocop.yml index dc0fd5cceb..9a5cd47be7 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -136,3 +136,4 @@ DiscourseCops/NoChdir: Enabled: true Exclude: - 'spec/**/*' # Specs are run sequentially, so chdir can be used + - 'plugins/*/spec/**/*' From 228c4814be40bbc640391834c9e4a87ec3fbf84d Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Mon, 18 Nov 2019 13:20:37 -0500 Subject: [PATCH 199/408] FIX: errors when using tags with colons in their name --- app/controllers/tags_controller.rb | 6 ++--- lib/discourse_tagging.rb | 14 +++++++---- spec/components/discourse_tagging_spec.rb | 29 +++++++++++++++++++++++ spec/integration/category_tag_spec.rb | 13 +++++++++- 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 77e1e43e60..e2aee6abe6 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -203,12 +203,10 @@ class TagsController < ::ApplicationController filter_params[:category] = Category.find_by_id(params[:categoryId]) end - if params[:q] + if !params[:q].blank? clean_name = DiscourseTagging.clean_tag(params[:q]) filter_params[:term] = clean_name - filter_params[:order] = Tag.sanitize_sql_for_order( - ["lower(name) = lower(?) DESC, topic_count DESC", clean_name] - ) + filter_params[:order_search_results] = true else filter_params[:order] = "topic_count DESC" end diff --git a/lib/discourse_tagging.rb b/lib/discourse_tagging.rb index 041170580a..4711a8b74b 100644 --- a/lib/discourse_tagging.rb +++ b/lib/discourse_tagging.rb @@ -227,15 +227,13 @@ module DiscourseTagging builder = DB.build(sql) - builder.limit(opts[:limit]) if opts[:limit] - builder.order_by(opts[:order]) if opts[:order] - if !opts[:for_topic] && builder_params[:selected_tag_ids] builder.where("id NOT IN (:selected_tag_ids)") end if opts[:only_tag_names] - builder.where("LOWER(name) IN (?)", opts[:only_tag_names].map(&:downcase)) + builder.where("LOWER(name) IN (:only_tag_names)") + builder_params[:only_tag_names] = opts[:only_tag_names].map(&:downcase) end # parent tag requirements @@ -268,6 +266,7 @@ module DiscourseTagging clean_tag(term) term.downcase! builder.where("LOWER(name) LIKE :term") + builder_params[:cleaned_term] = term builder_params[:term] = "%#{term}%" sql.gsub!("/*and_name_like*/", "AND LOWER(t.name) LIKE :term") else @@ -308,6 +307,13 @@ module DiscourseTagging end end + builder.limit(opts[:limit]) if opts[:limit] + if opts[:order] + builder.order_by(opts[:order]) + elsif opts[:order_search_results] && !term.blank? + builder.order_by("lower(name) = lower(:cleaned_term) DESC, topic_count DESC") + end + result = builder.query(builder_params).uniq { |t| t.id } end diff --git a/spec/components/discourse_tagging_spec.rb b/spec/components/discourse_tagging_spec.rb index 0c3791188c..0b0bd1ad1c 100644 --- a/spec/components/discourse_tagging_spec.rb +++ b/spec/components/discourse_tagging_spec.rb @@ -45,6 +45,35 @@ describe DiscourseTagging do expect(tags).to contain_exactly(tag1.name, tag3.name) end + context 'tag with colon' do + fab!(:tag_with_colon) { Fabricate(:tag, name: 'with:colon') } + + it "can use it as selected tag" do + tags = DiscourseTagging.filter_allowed_tags(Guardian.new(user), + selected_tags: [tag_with_colon.name], + for_input: true + ).map(&:name) + expect(tags).to contain_exactly(tag1.name, tag2.name, tag3.name) + end + + it "can search for tags with colons" do + tags = DiscourseTagging.filter_allowed_tags(Guardian.new(user), + for_input: true, + term: 'with:c', + order_search_results: true + ).map(&:name) + expect(tags).to contain_exactly(tag_with_colon.name) + end + + it "can limit results to the tag" do + tags = DiscourseTagging.filter_allowed_tags(Guardian.new(user), + for_topic: true, + only_tag_names: [tag_with_colon.name] + ).map(&:name) + expect(tags).to contain_exactly(tag_with_colon.name) + end + end + context 'with tags visible only to staff' do fab!(:hidden_tag) { Fabricate(:tag) } let!(:staff_tag_group) { Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: [hidden_tag.name]) } diff --git a/spec/integration/category_tag_spec.rb b/spec/integration/category_tag_spec.rb index 0b5339f1c7..c917ca661f 100644 --- a/spec/integration/category_tag_spec.rb +++ b/spec/integration/category_tag_spec.rb @@ -21,6 +21,7 @@ describe "category tag restrictions" do fab!(:tag2) { Fabricate(:tag, name: 'tag2') } fab!(:tag3) { Fabricate(:tag, name: 'tag3') } fab!(:tag4) { Fabricate(:tag, name: 'tag4') } + let(:tag_with_colon) { Fabricate(:tag, name: 'with:colon') } fab!(:user) { Fabricate(:user) } fab!(:admin) { Fabricate(:admin) } @@ -58,6 +59,11 @@ describe "category tag restrictions" do expect_same_tag_names(filter_allowed_tags(for_input: true, category: other_category, selected_tags: [tag3.name], term: 'tag'), [tag4]) end + it "search can handle colons in tag names" do + tag_with_colon + expect_same_tag_names(filter_allowed_tags(for_input: true, term: 'with:c'), [tag_with_colon]) + end + it "can't create new tags in a restricted category" do post = create_post(category: category_with_tags, tags: [tag1.name, "newtag"]) expect_same_tag_names(post.topic.tags, [tag1]) @@ -157,6 +163,11 @@ describe "category tag restrictions" do expect(post.topic.tags.map(&:name)).to eq([tag1.name]) end + it "handles colons" do + tag_with_colon + expect_same_tag_names(filter_allowed_tags(for_input: true, term: 'with:c'), [tag_with_colon]) + end + context 'required tags from tag group' do fab!(:tag_group) { Fabricate(:tag_group, tags: [tag1, tag3]) } before { category.update!(required_tag_group: tag_group, min_tags_from_required_group: 1) } @@ -326,7 +337,7 @@ describe "category tag restrictions" do car_category.allowed_tag_groups = [makes.name, honda_group.name, ford_group.name] end - it "handles all those rules", :focus do + it "handles all those rules" do # car tags can't be used outside of car category: expect_same_tag_names(filter_allowed_tags(for_input: true), [tag1, tag2, tag3, tag4]) expect_same_tag_names(filter_allowed_tags(for_input: true, category: other_category), [tag1, tag2, tag3, tag4]) From a4dbec5bf9a96156c2cc8a912f1db55f47662ef7 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Mon, 18 Nov 2019 15:54:00 -0500 Subject: [PATCH 200/408] FIX: unable to remove required tag group from a category --- app/controllers/categories_controller.rb | 1 + app/models/category.rb | 2 +- spec/requests/categories_controller_spec.rb | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb index 12b77e5547..191b2f433e 100644 --- a/app/controllers/categories_controller.rb +++ b/app/controllers/categories_controller.rb @@ -281,6 +281,7 @@ class CategoriesController < ApplicationController if SiteSetting.tagging_enabled params[:allowed_tags] ||= [] params[:allowed_tag_groups] ||= [] + params[:required_tag_group_name] ||= '' end result = params.permit( diff --git a/app/models/category.rb b/app/models/category.rb index 62ae074692..e2f40f91f0 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -559,7 +559,7 @@ class Category < ActiveRecord::Base end def required_tag_group_name=(group_name) - self.required_tag_group = group_name ? TagGroup.where(name: group_name).first : nil + self.required_tag_group = group_name.blank? ? nil : TagGroup.where(name: group_name).first end def downcase_email diff --git a/spec/requests/categories_controller_spec.rb b/spec/requests/categories_controller_spec.rb index 0ff51d1c92..941e4b06ff 100644 --- a/spec/requests/categories_controller_spec.rb +++ b/spec/requests/categories_controller_spec.rb @@ -334,6 +334,7 @@ describe CategoriesController do describe "success" do it "updates attributes correctly" do + SiteSetting.tagging_enabled = true readonly = CategoryGroup.permission_types[:readonly] create_post = CategoryGroup.permission_types[:create_post] tag_group = Fabricate(:tag_group) @@ -415,6 +416,22 @@ describe CategoriesController do expect(category.num_auto_bump_daily).to eq(10) expect(category.navigate_to_first_post_after_read).to eq(true) end + + it "can remove required tag group" do + SiteSetting.tagging_enabled = true + category.update!(required_tag_group: Fabricate(:tag_group)) + put "/categories/#{category.id}.json", params: { + name: category.name, + color: category.color, + text_color: category.text_color, + allow_global_tags: 'false', + min_tags_from_required_group: 1 + } + + expect(response.status).to eq(200) + category.reload + expect(category.required_tag_group).to be_nil + end end end end From 93d7abe372ec07a4c7b580bae04f710f37338f91 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Tue, 19 Nov 2019 09:15:09 +1000 Subject: [PATCH 201/408] FIX: Automatically recover from bad sprockets cache in development (#8364) We were having issues in development mode where the JS code had errors due to a bad cache. When starting a server in development mode in bin/unicorn we now get the git sha of the discourse HEAD and get a git sha of all plugins, and store them in a file. If the sha has changed then we delete tmp/cache to refresh the assets cache. --- bin/unicorn | 24 ++++++++++++++++++++++++ lib/discourse.rb | 23 +---------------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/bin/unicorn b/bin/unicorn index 865e8d87dc..38e238c1f3 100755 --- a/bin/unicorn +++ b/bin/unicorn @@ -4,12 +4,35 @@ require 'pathname' ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile", Pathname.new(__FILE__).realpath) +RAILS_ROOT = File.expand_path("../../", Pathname.new(__FILE__).realpath) require 'rubygems' require 'bundler/setup' +require 'digest' dev_mode = false +def ensure_cache_clean! + all_plugin_directories = Pathname.new(RAILS_ROOT + '/plugins').children.select(&:directory?) + core_git_sha = `git rev-parse HEAD` + sorted_plugin_shas = all_plugin_directories.map do |plugin_dir| + "#{plugin_dir}:" + `git ls-files -s #{plugin_dir} | git hash-object --stdin` + end.sort + supersha_hash = Digest::SHA1.hexdigest((sorted_plugin_shas + [core_git_sha]).join('|')) + hash_file = "#{RAILS_ROOT}/tmp/plugin-hash" + + old_hash = File.exists?(hash_file) ? File.read(hash_file) : nil + + if old_hash && old_hash != supersha_hash + puts "WARNING: It looks like your discourse plugins or core version have recently changed." + puts "The tmp/cache directory will be wiped to avoid development issues." + `rm -rf #{RAILS_ROOT}/tmp/cache` + puts + end + + File.write(hash_file, supersha_hash) +end + # in development do some fussing around, to automate config if !ARGV.include?("-E") && !ARGV.include?("--env") && @@ -38,6 +61,7 @@ if !ARGV.include?("-E") && ENV["UNICORN_SIDEKIQS"] ||= "1" + ensure_cache_clean! end if ARGV.include?("--help") diff --git a/lib/discourse.rb b/lib/discourse.rb index 891bc01f07..c61a2f14e7 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -183,29 +183,8 @@ module Discourse end def self.activate_plugins! - all_plugins = Plugin::Instance.find_all("#{Rails.root}/plugins") - - if Rails.env.development? - plugin_hash = Digest::SHA1.hexdigest(all_plugins.map { |p| p.path }.sort.join('|')) - hash_file = "#{Rails.root}/tmp/plugin-hash" - - old_hash = begin - File.read(hash_file) - rescue Errno::ENOENT - end - - if old_hash && old_hash != plugin_hash - puts "WARNING: It looks like your discourse plugins have recently changed." - puts "It is highly recommended to remove your `tmp` directory, otherwise" - puts "plugins might not work." - puts - else - File.write(hash_file, plugin_hash) - end - end - @plugins = [] - all_plugins.each do |p| + Plugin::Instance.find_all("#{Rails.root}/plugins").each do |p| v = p.metadata.required_version || Discourse::VERSION::STRING if Discourse.has_needed_version?(Discourse::VERSION::STRING, v) p.activate! From f49ef851dff8b60968789514c1f3be280d98838e Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Tue, 19 Nov 2019 12:23:11 +1100 Subject: [PATCH 202/408] FIX: do not insert conflict rows into category user This could fail under certain race conditions --- ...0191107190330_remove_suppress_from_latest_from_category.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/db/post_migrate/20191107190330_remove_suppress_from_latest_from_category.rb b/db/post_migrate/20191107190330_remove_suppress_from_latest_from_category.rb index f188cc1892..7d047c17c0 100644 --- a/db/post_migrate/20191107190330_remove_suppress_from_latest_from_category.rb +++ b/db/post_migrate/20191107190330_remove_suppress_from_latest_from_category.rb @@ -15,7 +15,8 @@ class RemoveSuppressFromLatestFromCategory < ActiveRecord::Migration[6.0] # We shouldn't encourage to have more than 10 categories in `default_categories_muted` site setting. if ids.count <= 10 - DB.exec(<<~SQL, muted: CategoryUser.notification_levels[:muted]) + # CategoryUser.notification_levels[:muted] is 0, avoid reaching to object model + DB.exec(<<~SQL, muted: 0) INSERT INTO category_users (category_id, user_id, notification_level) SELECT c.id category_id, u.id user_id, :muted FROM users u @@ -25,6 +26,7 @@ class RemoveSuppressFromLatestFromCategory < ActiveRecord::Migration[6.0] AND c.id = cu.category_id WHERE c.suppress_from_latest = TRUE AND cu.notification_level IS NULL + ON CONFLICT DO NOTHING SQL DB.exec(<<~SQL, value: ids.join("|")) From 57bbcf4c5db4a99d2e01324ee2f172b741fcc5f9 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Tue, 19 Nov 2019 07:48:16 +0530 Subject: [PATCH 203/408] FIX: 'default_categories_muted' site setting not working for anonymous users. --- lib/topic_query.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/topic_query.rb b/lib/topic_query.rb index ba29c16619..571f89d2fc 100644 --- a/lib/topic_query.rb +++ b/lib/topic_query.rb @@ -895,6 +895,11 @@ class TopicQuery regular: CategoryUser.notification_levels[:regular], tracking: TopicUser.notification_levels[:tracking], category_id: category_id || -1) + else + category_ids = SiteSetting.default_categories_muted.split("|").map(&:to_i) + category_ids -= [category_id] if category_id.present? && category_ids.include?(category_id) + + list = list.where("topics.category_id NOT IN (?)", category_ids) if category_ids.present? end list From f83125f0c29c23a333c69e60d9cf0bb9bd5410c3 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Tue, 19 Nov 2019 08:04:24 +0530 Subject: [PATCH 204/408] DEV: minor refactoring to reduce the code duplication. --- lib/topic_query.rb | 45 ++++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/lib/topic_query.rb b/lib/topic_query.rb index 571f89d2fc..de789eadb1 100644 --- a/lib/topic_query.rb +++ b/lib/topic_query.rb @@ -864,37 +864,28 @@ class TopicQuery def remove_muted_categories(list, user, opts = nil) category_id = get_category_id(opts[:exclude]) if opts - if SiteSetting.mute_all_categories_by_default - if user - list = list - .references("cu") - .joins("LEFT JOIN category_users ON category_users.category_id = topics.category_id AND category_users.user_id = #{user.id}") - .where("topics.category_id = :category_id - OR COALESCE(category_users.notification_level, :muted) <> :muted - OR tu.notification_level > :regular", - muted: CategoryUser.notification_levels[:muted], - regular: TopicUser.notification_levels[:regular], - category_id: category_id || -1) - else - category_ids = [ - SiteSetting.default_categories_watching.split("|"), - SiteSetting.default_categories_tracking.split("|"), - SiteSetting.default_categories_watching_first_post.split("|") - ].flatten.map(&:to_i) - category_ids << category_id if category_id.present? && category_ids.exclude?(category_id) + if user + default_notification_level = SiteSetting.mute_all_categories_by_default ? CategoryUser.notification_levels[:muted] : CategoryUser.notification_levels[:regular] - list = list.where("topics.category_id IN (?)", category_ids) if category_ids.present? - end - elsif user list = list .references("cu") .joins("LEFT JOIN category_users ON category_users.category_id = topics.category_id AND category_users.user_id = #{user.id}") - .where("COALESCE(category_users.notification_level, :regular) <> :muted - OR category_users.category_id = :category_id OR tu.notification_level >= :tracking", - muted: CategoryUser.notification_levels[:muted], - regular: CategoryUser.notification_levels[:regular], - tracking: TopicUser.notification_levels[:tracking], - category_id: category_id || -1) + .where("topics.category_id = :category_id + OR COALESCE(category_users.notification_level, :default) <> :muted + OR tu.notification_level > :regular", + category_id: category_id || -1, + default: default_notification_level, + muted: CategoryUser.notification_levels[:muted], + regular: TopicUser.notification_levels[:regular]) + elsif SiteSetting.mute_all_categories_by_default + category_ids = [ + SiteSetting.default_categories_watching.split("|"), + SiteSetting.default_categories_tracking.split("|"), + SiteSetting.default_categories_watching_first_post.split("|") + ].flatten.map(&:to_i) + category_ids << category_id if category_id.present? && category_ids.exclude?(category_id) + + list = list.where("topics.category_id IN (?)", category_ids) if category_ids.present? else category_ids = SiteSetting.default_categories_muted.split("|").map(&:to_i) category_ids -= [category_id] if category_id.present? && category_ids.include?(category_id) From 42e5176bc36ebd790c098205d4685e805a14191b Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Tue, 19 Nov 2019 13:16:20 +0530 Subject: [PATCH 205/408] FIX: parallel spec system needs needs a dedicated upload folder for each worker. (#8372) --- lib/file_store/base_store.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/file_store/base_store.rb b/lib/file_store/base_store.rb index 0c4c14d2be..ba354efb1c 100644 --- a/lib/file_store/base_store.rb +++ b/lib/file_store/base_store.rb @@ -31,7 +31,13 @@ module FileStore end def upload_path - File.join("uploads", RailsMultisite::ConnectionManagement.current_db) + if ENV['RAILS_ENV'] != "test" || !ENV['TEST_ENV_NUMBER'] + return File.join("uploads", RailsMultisite::ConnectionManagement.current_db) + end + + # Parallel spec system + n = ENV['TEST_ENV_NUMBER'].presence || '1' + File.join("uploads", RailsMultisite::ConnectionManagement.current_db, n) end def has_been_uploaded?(url) From d3e7768ea8ba39d2202b9c5e52bdb6680606c9d5 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Tue, 19 Nov 2019 15:02:18 +0530 Subject: [PATCH 206/408] Revert "FIX: parallel spec system needs needs a dedicated upload folder for each worker. (#8372)" This reverts commit 42e5176bc36ebd790c098205d4685e805a14191b. --- lib/file_store/base_store.rb | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/file_store/base_store.rb b/lib/file_store/base_store.rb index ba354efb1c..0c4c14d2be 100644 --- a/lib/file_store/base_store.rb +++ b/lib/file_store/base_store.rb @@ -31,13 +31,7 @@ module FileStore end def upload_path - if ENV['RAILS_ENV'] != "test" || !ENV['TEST_ENV_NUMBER'] - return File.join("uploads", RailsMultisite::ConnectionManagement.current_db) - end - - # Parallel spec system - n = ENV['TEST_ENV_NUMBER'].presence || '1' - File.join("uploads", RailsMultisite::ConnectionManagement.current_db, n) + File.join("uploads", RailsMultisite::ConnectionManagement.current_db) end def has_been_uploaded?(url) From 7886a3e58ac87b4f4d58b6afec4a62359597e72e Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Tue, 19 Nov 2019 10:20:14 +0000 Subject: [PATCH 207/408] DEV: Update annotations --- app/models/api_key.rb | 4 +++- app/models/category.rb | 3 ++- app/models/category_user.rb | 8 +++++--- app/models/user_profile.rb | 12 ++++++------ 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/models/api_key.rb b/app/models/api_key.rb index 198d746b30..91722b3603 100644 --- a/app/models/api_key.rb +++ b/app/models/api_key.rb @@ -57,9 +57,11 @@ end # allowed_ips :inet is an Array # hidden :boolean default(FALSE), not null # last_used_at :datetime +# revoked_at :datetime +# description :text # # Indexes # # index_api_keys_on_key (key) -# index_api_keys_on_user_id (user_id) UNIQUE +# index_api_keys_on_user_id (user_id) # diff --git a/app/models/category.rb b/app/models/category.rb index e2f40f91f0..cb50cef651 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -911,12 +911,13 @@ end # subcategory_list_style :string(50) default("rows_with_featured_topics") # default_top_period :string(20) default("all") # mailinglist_mirror :boolean default(FALSE), not null -# suppress_from_latest :boolean default(FALSE) # minimum_required_tags :integer default(0), not null # navigate_to_first_post_after_read :boolean default(FALSE), not null # search_priority :integer default(0) # allow_global_tags :boolean default(FALSE), not null # reviewable_by_group_id :integer +# required_tag_group_id :integer +# min_tags_from_required_group :integer default(1), not null # # Indexes # diff --git a/app/models/category_user.rb b/app/models/category_user.rb index fea612700b..afcd56ce19 100644 --- a/app/models/category_user.rb +++ b/app/models/category_user.rb @@ -236,10 +236,12 @@ end # id :integer not null, primary key # category_id :integer not null # user_id :integer not null -# notification_level :integer not null +# notification_level :integer +# last_seen_at :datetime # # Indexes # -# idx_category_users_category_id_user_id (category_id,user_id) UNIQUE -# idx_category_users_user_id_category_id (user_id,category_id) UNIQUE +# idx_category_users_category_id_user_id (category_id,user_id) UNIQUE +# idx_category_users_user_id_category_id (user_id,category_id) UNIQUE +# index_category_users_on_user_id_and_last_seen_at (user_id,last_seen_at) # diff --git a/app/models/user_profile.rb b/app/models/user_profile.rb index ed50e90853..abd5ba06c2 100644 --- a/app/models/user_profile.rb +++ b/app/models/user_profile.rb @@ -162,18 +162,18 @@ end # views :integer default(0), not null # profile_background_upload_id :integer # card_background_upload_id :integer -# granted_title_badge_id :integer +# granted_title_badge_id :bigint # # Indexes # -# index_user_profiles_on_bio_cooked_version (bio_cooked_version) -# index_user_profiles_on_card_background (card_background) -# index_user_profiles_on_profile_background (profile_background) -# index_user_profiles_on_granted_title_badge_id (granted_title_badge) +# index_user_profiles_on_bio_cooked_version (bio_cooked_version) +# index_user_profiles_on_card_background (card_background) +# index_user_profiles_on_granted_title_badge_id (granted_title_badge_id) +# index_user_profiles_on_profile_background (profile_background) # # Foreign Keys # # fk_rails_... (card_background_upload_id => uploads.id) -# fk_rails_... (profile_background_upload_id => uploads.id) # fk_rails_... (granted_title_badge_id => badges.id) +# fk_rails_... (profile_background_upload_id => uploads.id) # From 266e4860378dae148718632f4e1eced6384f3d87 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Tue, 19 Nov 2019 07:24:18 -0700 Subject: [PATCH 208/408] FIX: Turn off auto bumping for topics with scheduled bumps If a topic has a timer scheduled to bump a topic it should be excluded from being auto bumped. --- app/models/category.rb | 1 + app/models/topic.rb | 2 ++ app/models/topic_timer.rb | 2 ++ spec/models/category_spec.rb | 37 ++++++++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+) diff --git a/app/models/category.rb b/app/models/category.rb index cb50cef651..25aeff75fc 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -532,6 +532,7 @@ class Category < ActiveRecord::Base topic = relation .visible .listable_topics + .exclude_scheduled_bump_topics .where(category_id: self.id) .where('id <> ?', self.topic_id) .where('bumped_at < ?', 1.day.ago) diff --git a/app/models/topic.rb b/app/models/topic.rb index 8531738b6a..b537891597 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -158,6 +158,8 @@ class Topic < ActiveRecord::Base scope :created_since, lambda { |time_ago| where('topics.created_at > ?', time_ago) } + scope :exclude_scheduled_bump_topics, -> { where.not(id: TopicTimer.scheduled_bump_topics) } + scope :secured, lambda { |guardian = nil| ids = guardian.secure_category_ids if guardian diff --git a/app/models/topic_timer.rb b/app/models/topic_timer.rb index c6213a164e..8c7f3056e6 100644 --- a/app/models/topic_timer.rb +++ b/app/models/topic_timer.rb @@ -17,6 +17,8 @@ class TopicTimer < ActiveRecord::Base validate :ensure_update_will_happen + scope :scheduled_bump_topics, -> { where(status_type: 6, deleted_at: nil).pluck(:topic_id) } + before_save do self.created_at ||= Time.zone.now if execute_at self.public_type = self.public_type? diff --git a/spec/models/category_spec.rb b/spec/models/category_spec.rb index 37b37037fb..f268c2c735 100644 --- a/spec/models/category_spec.rb +++ b/spec/models/category_spec.rb @@ -891,6 +891,43 @@ describe Category do expect(Category.auto_bump_topic!).to eq(false) end + + it 'should not automatically bump topics with a bump scheduled' do + freeze_time 1.second.ago + category = Fabricate(:category_with_definition) + category.clear_auto_bump_cache! + + freeze_time 1.second.from_now + post1 = create_post(category: category) + + # no limits on post creation or category creation please + RateLimiter.enable + + time = 1.month.from_now + freeze_time time + + expect(category.auto_bump_topic!).to eq(false) + expect(Topic.where(bumped_at: time).count).to eq(0) + + category.num_auto_bump_daily = 2 + category.save! + + topic = Topic.find_by_id(post1.topic_id) + + TopicTimer.create!( + user_id: -1, + topic: topic, + execute_at: 1.hour.from_now, + status_type: TopicTimer.types[:bump] + ) + + expect(Topic.joins(:topic_timers).where(topic_timers: { status_type: 6, deleted_at: nil }).count).to eq(1) + + expect(category.auto_bump_topic!).to eq(false) + expect(Topic.where(bumped_at: time).count).to eq(0) + # does not include a bump message + expect(post1.topic.reload.posts_count).to eq(1) + end end describe "validate permissions compatibility" do From 7ba2b677a66b363fcf161ed0526b4f825ffc0e9e Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Tue, 19 Nov 2019 10:10:14 -0700 Subject: [PATCH 209/408] DEV: Use enum instead of id for topic timer query Follow up to 266e4860378dae148718632f4e1eced6384f3d87 --- app/models/topic_timer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/topic_timer.rb b/app/models/topic_timer.rb index 8c7f3056e6..1599f77ce5 100644 --- a/app/models/topic_timer.rb +++ b/app/models/topic_timer.rb @@ -17,7 +17,7 @@ class TopicTimer < ActiveRecord::Base validate :ensure_update_will_happen - scope :scheduled_bump_topics, -> { where(status_type: 6, deleted_at: nil).pluck(:topic_id) } + scope :scheduled_bump_topics, -> { where(status_type: TopicTimer.types[:bump], deleted_at: nil).pluck(:topic_id) } before_save do self.created_at ||= Time.zone.now if execute_at From 565a9671927724138b7e9e86806134785c852074 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Tue, 19 Nov 2019 12:31:00 -0500 Subject: [PATCH 210/408] FIX: email excerpts for posts starting with a quote were displaying a username If a post starts with a post quote and has no other text content, then the email excerpt was the name of the person quoted and nothing else. The intention was to show the contents of the first paragraph or div after the quote. With this change, a quote followed by an image will use the image as the excerpt. A quote followed by a onebox will use the onebox. --- app/helpers/user_notifications_helper.rb | 5 +-- .../helpers/user_notifications_helper_spec.rb | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/helpers/user_notifications_helper.rb b/app/helpers/user_notifications_helper.rb index d7e619f029..0df7aa6926 100644 --- a/app/helpers/user_notifications_helper.rb +++ b/app/helpers/user_notifications_helper.rb @@ -47,8 +47,9 @@ module UserNotificationsHelper return result unless result.blank? - # If there is no first paragaph, return the first div (onebox) - doc.css('div').first + # If there is no first paragaph with text, return the first paragraph with + # something else (an image) or div (a onebox). + doc.css('body > p, body > div').first end def email_excerpt(html_arg, post = nil) diff --git a/spec/helpers/user_notifications_helper_spec.rb b/spec/helpers/user_notifications_helper_spec.rb index a0d266e2b1..7610495b25 100644 --- a/spec/helpers/user_notifications_helper_spec.rb +++ b/spec/helpers/user_notifications_helper_spec.rb @@ -13,6 +13,19 @@ describe UserNotificationsHelper do paragraphs.join("\n") end + let(:post_quote) do + <<~HTML + + HTML + end + it "can return the first paragraph" do SiteSetting.digest_min_excerpt_length = 50 expect(helper.email_excerpt(cooked)).to eq(paragraphs[0]) @@ -54,6 +67,24 @@ describe UserNotificationsHelper do expect(helper.email_excerpt(cooked)).to eq "

BEFORE

\n

This is a user quote

\n

AFTER

" end + + it "defaults to content after post quote (image w/ no text)" do + image_paragraph = '

' + cooked = <<~HTML + #{post_quote} + #{image_paragraph} + HTML + expect(helper.email_excerpt(cooked)).to eq(image_paragraph) + end + + it "defaults to content after post quote (onebox)" do + aside_onebox = '' + cooked = <<~HTML + #{post_quote} + #{aside_onebox} + HTML + expect(helper.email_excerpt(cooked)).to eq(aside_onebox) + end end describe '#logo_url' do From 46841888b7b3a2d2302ff7ecd13d445ad528febf Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 19 Nov 2019 19:15:11 +0000 Subject: [PATCH 211/408] FIX: For a single authenticator, do not interrupt registration flow Followup to 0a14b9b42a2f597f5df26be97296a4d6909f6a34 --- app/controllers/application_controller.rb | 5 ++- spec/requests/application_controller_spec.rb | 40 ++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1fdd6027ae..d0924e76e3 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -722,8 +722,9 @@ class ApplicationController < ActionController::Base session[:destination_url] = destination_url redirect_to path('/session/sso') return - elsif !SiteSetting.enable_local_logins && Discourse.enabled_authenticators.length == 1 - # Only one authentication provider, direct straight to it + elsif !SiteSetting.enable_local_logins && Discourse.enabled_authenticators.length == 1 && !cookies[:authentication_data] + # Only one authentication provider, direct straight to it. + # If authentication_data is present, then we are halfway though registration. Don't redirect offsite cookies[:destination_url] = destination_url redirect_to path("/auth/#{Discourse.enabled_authenticators.first.name}") else diff --git a/spec/requests/application_controller_spec.rb b/spec/requests/application_controller_spec.rb index bf714c49af..372d1cf78f 100644 --- a/spec/requests/application_controller_spec.rb +++ b/spec/requests/application_controller_spec.rb @@ -44,6 +44,46 @@ RSpec.describe ApplicationController do get "/" expect(response).to redirect_to("/login") end + + context "with omniauth in test mode" do + before do + OmniAuth.config.test_mode = true + OmniAuth.config.add_mock(:google_oauth2, + info: OmniAuth::AuthHash::InfoHash.new( + email: "address@example.com", + ), + extra: { + raw_info: OmniAuth::AuthHash.new( + email_verified: true, + email: "address@example.com", + ) + } + ) + Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:google_oauth2] + end + + after do + Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[:google_oauth2] = nil + OmniAuth.config.test_mode = false + end + + it "should not redirect to authenticator if registration in progress" do + SiteSetting.enable_local_logins = false + SiteSetting.enable_google_oauth2_logins = true + + get "/" + expect(response).to redirect_to("/auth/google_oauth2") + + expect(cookies[:authentication_data]).to eq(nil) + + get "/auth/google_oauth2/callback.json" + expect(response).to redirect_to("/") + expect(cookies[:authentication_data]).not_to eq(nil) + + get "/" + expect(response).to redirect_to("/login") + end + end end describe '#redirect_to_second_factor_if_required' do From 9b60900b8d3697b3150d7312b21cb0f1b48c18a5 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Tue, 19 Nov 2019 15:58:26 -0500 Subject: [PATCH 212/408] FIX: More `Promise` uses that were not imported --- app/assets/javascripts/discourse/models/group.js.es6 | 5 +++-- app/assets/javascripts/discourse/models/store.js.es6 | 1 + app/assets/javascripts/discourse/widgets/post.js.es6 | 1 + .../javascripts/discourse/widgets/quick-access-panel.js.es6 | 1 + .../discourse/widgets/quick-access-profile.js.es6 | 1 + app/assets/javascripts/preload-store.js.es6 | 4 ++-- 6 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/models/group.js.es6 b/app/assets/javascripts/discourse/models/group.js.es6 index 7822111134..284719579a 100644 --- a/app/assets/javascripts/discourse/models/group.js.es6 +++ b/app/assets/javascripts/discourse/models/group.js.es6 @@ -11,6 +11,7 @@ import GroupHistory from "discourse/models/group-history"; import RestModel from "discourse/models/rest"; import Topic from "discourse/models/topic"; import User from "discourse/models/user"; +import { Promise } from "rsvp"; const Group = RestModel.extend({ user_count: 0, @@ -38,7 +39,7 @@ const Group = RestModel.extend({ findMembers(params, refresh) { if (isEmpty(this.name) || !this.can_see_members) { - return Ember.RSVP.Promise.reject(); + return Promise.reject(); } if (refresh) { @@ -73,7 +74,7 @@ const Group = RestModel.extend({ findRequesters(params, refresh) { if (isEmpty(this.name) || !this.can_see_members) { - return Ember.RSVP.Promise.reject(); + return Promise.reject(); } if (refresh) { diff --git a/app/assets/javascripts/discourse/models/store.js.es6 b/app/assets/javascripts/discourse/models/store.js.es6 index 9ece6af004..68b2b76342 100644 --- a/app/assets/javascripts/discourse/models/store.js.es6 +++ b/app/assets/javascripts/discourse/models/store.js.es6 @@ -6,6 +6,7 @@ import { getRegister } from "discourse-common/lib/get-owner"; import { underscore } from "@ember/string"; import { set } from "@ember/object"; import Category from "discourse/models/category"; +import { Promise } from "rsvp"; let _identityMap; diff --git a/app/assets/javascripts/discourse/widgets/post.js.es6 b/app/assets/javascripts/discourse/widgets/post.js.es6 index 6602f1810a..5107da42f0 100644 --- a/app/assets/javascripts/discourse/widgets/post.js.es6 +++ b/app/assets/javascripts/discourse/widgets/post.js.es6 @@ -16,6 +16,7 @@ import { import hbs from "discourse/widgets/hbs-compiler"; import { relativeAgeMediumSpan } from "discourse/lib/formatter"; import { prioritizeNameInUx } from "discourse/lib/settings"; +import { Promise } from "rsvp"; function transformWithCallbacks(post) { let transformed = transformBasicPost(post); diff --git a/app/assets/javascripts/discourse/widgets/quick-access-panel.js.es6 b/app/assets/javascripts/discourse/widgets/quick-access-panel.js.es6 index 904629b818..6b64ee241a 100644 --- a/app/assets/javascripts/discourse/widgets/quick-access-panel.js.es6 +++ b/app/assets/javascripts/discourse/widgets/quick-access-panel.js.es6 @@ -2,6 +2,7 @@ import Session from "discourse/models/session"; import { createWidget } from "discourse/widgets/widget"; import { h } from "virtual-dom"; import { headerHeight } from "discourse/components/site-header"; +import { Promise } from "rsvp"; const AVERAGE_ITEM_HEIGHT = 55; diff --git a/app/assets/javascripts/discourse/widgets/quick-access-profile.js.es6 b/app/assets/javascripts/discourse/widgets/quick-access-profile.js.es6 index f2bfc7ffb7..0d77177a25 100644 --- a/app/assets/javascripts/discourse/widgets/quick-access-profile.js.es6 +++ b/app/assets/javascripts/discourse/widgets/quick-access-profile.js.es6 @@ -1,5 +1,6 @@ import QuickAccessPanel from "discourse/widgets/quick-access-panel"; import { createWidgetFrom } from "discourse/widgets/widget"; +import { Promise } from "rsvp"; createWidgetFrom(QuickAccessPanel, "quick-access-profile", { buildKey: () => "quick-access-profile", diff --git a/app/assets/javascripts/preload-store.js.es6 b/app/assets/javascripts/preload-store.js.es6 index fae006ff6a..132588695b 100644 --- a/app/assets/javascripts/preload-store.js.es6 +++ b/app/assets/javascripts/preload-store.js.es6 @@ -21,14 +21,14 @@ export default { **/ getAndRemove(key, finder) { if (this.data[key]) { - var promise = Promise.resolve(this.data[key]); + let promise = Promise.resolve(this.data[key]); delete this.data[key]; return promise; } if (finder) { return new Promise(function(resolve, reject) { - var result = finder(); + let result = finder(); // If the finder returns a promise, we support that too if (result && result.then) { From 02cb01406e6498588dddb5d2fc7acdca8d7bdcc4 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Wed, 20 Nov 2019 07:46:44 +1000 Subject: [PATCH 213/408] FIX: Allow secure uploads if global s3 setting active and enable_s3_uploads validations (#8373) The secure media functionality relied on `SiteSetting.enable_s3_uploads?` which, as we found in dev, did not take into account global S3 settings via `GlobalSetting.use_s3?`. We now use `SiteSetting.Upload.enable_s3_uploads` instead to be more consistent. Also, we now validate `enable_s3_uploads` changes, because if `GlobalSetting.use_s3?` is true users should NOT be enabling S3 uploads manually. --- .../regular/update_private_uploads_acl.rb | 2 +- config/locales/server.en.yml | 1 + lib/site_settings/validations.rb | 6 +- .../update_private_uploads_acl_spec.rb | 37 ++++++++ spec/lib/site_settings/validations_spec.rb | 90 ++++++++++++++++++- 5 files changed, 130 insertions(+), 6 deletions(-) create mode 100644 spec/jobs/regular/update_private_uploads_acl_spec.rb diff --git a/app/jobs/regular/update_private_uploads_acl.rb b/app/jobs/regular/update_private_uploads_acl.rb index 4a95f5a5e4..661f84437c 100644 --- a/app/jobs/regular/update_private_uploads_acl.rb +++ b/app/jobs/regular/update_private_uploads_acl.rb @@ -4,7 +4,7 @@ module Jobs class UpdatePrivateUploadsAcl < ::Jobs::Base # only runs when SiteSetting.prevent_anons_from_downloading_files is updated def execute(args) - return if !SiteSetting.enable_s3_uploads + return if !SiteSetting.Upload.enable_s3_uploads Upload.find_each do |upload| if !FileHelper.is_supported_media?(upload.original_filename) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 777895b7dd..73eb81b5e9 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -208,6 +208,7 @@ en: secure_media_requirements: "S3 uploads must be enabled before enabling secure media." second_factor_cannot_be_enforced_with_disabled_local_login: "You cannot enforce 2FA if local logins are disabled." local_login_cannot_be_disabled_if_second_factor_enforced: "You cannot disable local login if 2FA is enforced. Disable enforced 2FA before disabling local logins." + cannot_enable_s3_uploads_when_s3_enabled_globally: "You cannot enable S3 uploads because S3 uploads are already globally enabled, and enabling this site-level could cause critical issues with uploads" conflicting_google_user_id: 'The Google Account ID for this account has changed; staff intervention is required for security reasons. Please contact staff and point them to
https://meta.discourse.org/t/76575' activemodel: diff --git a/lib/site_settings/validations.rb b/lib/site_settings/validations.rb index 65534e0c90..a24da43db5 100644 --- a/lib/site_settings/validations.rb +++ b/lib/site_settings/validations.rb @@ -118,11 +118,13 @@ module SiteSettings::Validations end def validate_enable_s3_uploads(new_val) - validate_error :s3_upload_bucket_is_required if new_val == "t" && SiteSetting.s3_upload_bucket.blank? + return if new_val == "f" + validate_error :cannot_enable_s3_uploads_when_s3_enabled_globally if GlobalSetting.use_s3? + validate_error :s3_upload_bucket_is_required if SiteSetting.s3_upload_bucket.blank? end def validate_secure_media(new_val) - validate_error :secure_media_requirements if new_val == "t" && !SiteSetting.enable_s3_uploads? + validate_error :secure_media_requirements if new_val == "t" && !SiteSetting.Upload.enable_s3_uploads end def validate_enable_s3_inventory(new_val) diff --git a/spec/jobs/regular/update_private_uploads_acl_spec.rb b/spec/jobs/regular/update_private_uploads_acl_spec.rb new file mode 100644 index 0000000000..d80713d632 --- /dev/null +++ b/spec/jobs/regular/update_private_uploads_acl_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Jobs::UpdatePrivateUploadsAcl do + let(:args) { [] } + + before do + SiteSetting.authorized_extensions = "pdf" + end + + describe '#execute' do + context "if not SiteSetting.Upload.enable_s3_uploads" do + before do + SiteSetting.Upload.stubs(:enable_s3_uploads).returns(false) + end + it "returns early and changes no uploads" do + Upload.expects(:find_each).never + subject.execute(args) + end + end + context "if SiteSetting.Upload.enable_s3_uploads" do + let!(:upload) { Fabricate(:upload_s3, extension: 'pdf', original_filename: "watchmen.pdf", secure: false) } + before do + SiteSetting.login_required = true + SiteSetting.prevent_anons_from_downloading_files = true + SiteSetting::Upload.stubs(:enable_s3_uploads).returns(true) + Discourse.stubs(:store).returns(stub(external?: false)) + end + + it "changes the upload to secure" do + subject.execute(args) + expect(upload.reload.secure).to eq(true) + end + end + end +end diff --git a/spec/lib/site_settings/validations_spec.rb b/spec/lib/site_settings/validations_spec.rb index 6660872806..7f346d4d5c 100644 --- a/spec/lib/site_settings/validations_spec.rb +++ b/spec/lib/site_settings/validations_spec.rb @@ -125,7 +125,7 @@ describe SiteSettings::Validations do end it "should be ok" do - expect { subject.validate_enforce_second_factor("t") }.not_to raise_error(Discourse::InvalidParameters, error_message) + expect { subject.validate_enforce_second_factor("t") }.not_to raise_error end end end @@ -150,14 +150,98 @@ describe SiteSettings::Validations do end it "should be ok" do - expect { subject.validate_enable_local_logins("f") }.not_to raise_error(Discourse::InvalidParameters, error_message) + expect { subject.validate_enable_local_logins("f") }.not_to raise_error end end end context "when the new value is true" do it "should be ok" do - expect { subject.validate_enable_local_logins("t") }.not_to raise_error(Discourse::InvalidParameters, error_message) + expect { subject.validate_enable_local_logins("t") }.not_to raise_error + end + end + end + + describe "#validate_secure_media" do + let(:error_message) { I18n.t("errors.site_settings.secure_media_requirements") } + + context "when the new value is true" do + context 'if site setting for enable_s3_uploads is enabled' do + before do + SiteSetting.enable_s3_uploads = true + end + + it "should be ok" do + expect { subject.validate_secure_media("t") }.not_to raise_error + end + end + + context 'if site setting for enable_s3_uploads is not enabled' do + before do + SiteSetting.enable_s3_uploads = false + end + + it "is not ok" do + expect { subject.validate_secure_media("t") }.to raise_error(Discourse::InvalidParameters, error_message) + end + + context "if global s3 setting is enabled" do + before do + GlobalSetting.stubs(:use_s3?).returns(true) + end + + it "should be ok" do + expect { subject.validate_secure_media("t") }.not_to raise_error + end + end + end + end + end + + describe "#validate_enable_s3_uploads" do + let(:error_message) { I18n.t("errors.site_settings.cannot_enable_s3_uploads_when_s3_enabled_globally") } + + context "when the new value is true" do + context "when s3 uploads are already globally enabled" do + before do + GlobalSetting.stubs(:use_s3?).returns(true) + end + + it "is not ok" do + expect { subject.validate_enable_s3_uploads("t") }.to raise_error(Discourse::InvalidParameters, error_message) + end + end + + context "when s3 uploads are not already globally enabled" do + before do + GlobalSetting.stubs(:use_s3?).returns(false) + end + + it "should be ok" do + expect { subject.validate_enable_s3_uploads("t") }.not_to raise_error + end + end + + context "when the s3_upload_bucket is blank" do + let(:error_message) { I18n.t("errors.site_settings.s3_upload_bucket_is_required") } + + before do + SiteSetting.s3_upload_bucket = nil + end + + it "is not ok" do + expect { subject.validate_enable_s3_uploads("t") }.to raise_error(Discourse::InvalidParameters, error_message) + end + end + + context "when the s3_upload_bucket is not blank" do + before do + SiteSetting.s3_upload_bucket = "some-bucket" + end + + it "should be ok" do + expect { subject.validate_enable_s3_uploads("t") }.not_to raise_error + end end end end From dd89a13e22c36ef4b44da57ff0df4201554cd7f4 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 20 Nov 2019 08:56:07 +1100 Subject: [PATCH 214/408] DEV: disable flaky spec This is erratically failing in our production CI --- spec/components/distributed_mutex_spec.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spec/components/distributed_mutex_spec.rb b/spec/components/distributed_mutex_spec.rb index e15b20f36c..e3c492f63c 100644 --- a/spec/components/distributed_mutex_spec.rb +++ b/spec/components/distributed_mutex_spec.rb @@ -42,7 +42,13 @@ describe DistributedMutex do expect(Time.now.to_i).to be <= start + 1 end - it 'allows the validity of the lock to be configured' do + # expected: 1574200319 + # got: 1574200320 + # + # (compared using ==) + # ./spec/components/distributed_mutex_spec.rb:60:in `block (3 levels) in
' + # ./lib/distributed_mutex.rb:33:in `block in synchronize' + xit 'allows the validity of the lock to be configured' do freeze_time mutex = DistributedMutex.new(key, validity: 2) From 9652fdd111cb333bfcc956e4a1e4c91b3a3e8e2b Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 20 Nov 2019 09:29:34 +1100 Subject: [PATCH 215/408] DEV: if tmp is missing create it Some scripts and people may be nuking the entire tmp folder --- bin/unicorn | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/unicorn b/bin/unicorn index 38e238c1f3..a0bafc1981 100755 --- a/bin/unicorn +++ b/bin/unicorn @@ -30,6 +30,7 @@ def ensure_cache_clean! puts end + FileUtils.mkdir_p(RAILS_ROOT + "/tmp") File.write(hash_file, supersha_hash) end From aa2b3e71b48aaea8571bf6cf274cfe157f3be068 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Wed, 20 Nov 2019 08:47:51 +1000 Subject: [PATCH 216/408] Minor refactor of bin/unicorn cache clean * move git ls-files for plugins folder into one line --- bin/unicorn | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/bin/unicorn b/bin/unicorn index a0bafc1981..a9b9e04efb 100755 --- a/bin/unicorn +++ b/bin/unicorn @@ -14,16 +14,14 @@ dev_mode = false def ensure_cache_clean! all_plugin_directories = Pathname.new(RAILS_ROOT + '/plugins').children.select(&:directory?) - core_git_sha = `git rev-parse HEAD` - sorted_plugin_shas = all_plugin_directories.map do |plugin_dir| - "#{plugin_dir}:" + `git ls-files -s #{plugin_dir} | git hash-object --stdin` - end.sort - supersha_hash = Digest::SHA1.hexdigest((sorted_plugin_shas + [core_git_sha]).join('|')) + core_git_sha = `git rev-parse HEAD`.strip + plugins_combined_git_sha = `git ls-files -s plugins | git hash-object --stdin`.strip + super_sha = Digest::SHA1.hexdigest(core_git_sha + plugins_combined_git_sha) hash_file = "#{RAILS_ROOT}/tmp/plugin-hash" old_hash = File.exists?(hash_file) ? File.read(hash_file) : nil - if old_hash && old_hash != supersha_hash + if old_hash && old_hash != super_sha puts "WARNING: It looks like your discourse plugins or core version have recently changed." puts "The tmp/cache directory will be wiped to avoid development issues." `rm -rf #{RAILS_ROOT}/tmp/cache` @@ -31,7 +29,7 @@ def ensure_cache_clean! end FileUtils.mkdir_p(RAILS_ROOT + "/tmp") - File.write(hash_file, supersha_hash) + File.write(hash_file, super_sha) end # in development do some fussing around, to automate config From 7543db086ad3d179483ec6fdbf34f86005386f70 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Wed, 20 Nov 2019 14:47:59 +0530 Subject: [PATCH 217/408] Bump onebox version. - FIX: Amazon video oneboxes were not working. --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index c4ce6cb479..46b4f8e68b 100644 --- a/Gemfile +++ b/Gemfile @@ -41,7 +41,7 @@ gem 'redis-namespace' gem 'active_model_serializers', '~> 0.8.3' -gem 'onebox', '1.9.22' +gem 'onebox', '1.9.23' gem 'http_accept_language', '~>2.0.5', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 43eac52d79..d6016f5053 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -243,7 +243,7 @@ GEM omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack - onebox (1.9.22) + onebox (1.9.23) htmlentities (~> 4.3) multi_json (~> 1.11) mustache @@ -499,7 +499,7 @@ DEPENDENCIES omniauth-oauth2 omniauth-openid omniauth-twitter - onebox (= 1.9.22) + onebox (= 1.9.23) openid-redis-store parallel_tests pg From d45bd7f1318c05454c819c89aa8ddc321b5dd8b4 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Wed, 20 Nov 2019 20:05:06 +1000 Subject: [PATCH 218/408] FIX: Abort CensoredWordsValidator early if censored_words_regexp nil (#8375) * Abort CensoredWordsValidator early if censored_words_regexp nil. Sometimes censored_words_regex can end up nil, erroring the validator. This handles the nil condition and also adds a spec for the validator --- lib/validators/censored_words_validator.rb | 8 ++- .../censored_words_validator_spec.rb | 50 +++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 spec/lib/validators/censored_words_validator_spec.rb diff --git a/lib/validators/censored_words_validator.rb b/lib/validators/censored_words_validator.rb index d36a0931d8..b65f6620e3 100644 --- a/lib/validators/censored_words_validator.rb +++ b/lib/validators/censored_words_validator.rb @@ -2,9 +2,13 @@ class CensoredWordsValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) - if WordWatcher.words_for_action(:censor).present? && (censored_words = censor_words(value, censored_words_regexp)).present? + words_regexp = censored_words_regexp + if WordWatcher.words_for_action(:censor).present? && !words_regexp.nil? + censored_words = censor_words(value, words_regexp) + return if censored_words.blank? record.errors.add( - attribute, :contains_censored_words, + attribute, + :contains_censored_words, censored_words: join_censored_words(censored_words) ) end diff --git a/spec/lib/validators/censored_words_validator_spec.rb b/spec/lib/validators/censored_words_validator_spec.rb new file mode 100644 index 0000000000..391c914363 --- /dev/null +++ b/spec/lib/validators/censored_words_validator_spec.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe CensoredWordsValidator do + let(:value) { 'some new bad text' } + let(:record) { Fabricate(:post, raw: 'this is a test') } + let(:attribute) { :raw } + + describe "#validate_each" do + context "when there are censored words for action" do + let!(:watched_word) { Fabricate(:watched_word, action: WatchedWord.actions[:censor], word: 'bad') } + + context "when there is a nil word_matcher_regexp" do + before do + WordWatcher.stubs(:word_matcher_regexp).returns(nil) + end + + it "adds no errors to the record" do + validate + expect(record.errors.empty?).to eq(true) + end + end + + context "when there is word_matcher_regexp" do + context "when the new value does not contain the watched word" do + let(:value) { 'some new good text' } + + it "adds no errors to the record" do + validate + expect(record.errors.empty?).to eq(true) + end + end + + context "when the new value does contain the watched word" do + let(:value) { 'some new bad text' } + + it "adds errors to the record" do + validate + expect(record.errors.empty?).to eq(false) + end + end + end + end + end + + def validate + described_class.new(attributes: :test).validate_each(record, attribute, value) + end +end From fa317becc803fff1f1c2f1e12fb8aae3a4ae372c Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 20 Nov 2019 11:08:26 +0100 Subject: [PATCH 219/408] DEV: upgrades chart.js from 2.7.3 to 2.9.3 (#8374) --- package.json | 2 +- public/javascripts/Chart.min.js | 13 +++++-------- yarn.lock | 8 ++++---- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 499122e428..3d456d7ab2 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "ace-builds": "1.4.2", "bootbox": "3.2.0", "bootstrap": "v3.4.1", - "chart.js": "2.7.3", + "chart.js": "2.9.3", "favcount": "https://github.com/chrishunt/favcount", "handlebars": "^4.1.2", "highlight.js": "https://github.com/highlightjs/highlight.js", diff --git a/public/javascripts/Chart.min.js b/public/javascripts/Chart.min.js index 653e7cfa93..7c16b0d128 100644 --- a/public/javascripts/Chart.min.js +++ b/public/javascripts/Chart.min.js @@ -1,10 +1,7 @@ /*! - * Chart.js - * http://chartjs.org/ - * Version: 2.7.3 - * - * Copyright 2018 Chart.js Contributors - * Released under the MIT license - * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md + * Chart.js v2.9.3 + * https://www.chartjs.org + * (c) 2019 Chart.js Contributors + * Released under the MIT License */ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function o(r,s,l){function u(e,t){if(!s[e]){if(!r[e]){var i="function"==typeof require&&require;if(!t&&i)return i(e,!0);if(d)return d(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var a=s[e]={exports:{}};r[e][0].call(a.exports,function(t){return u(r[e][1][t]||t)},a,a.exports,o,r,s,l)}return s[e].exports}for(var d="function"==typeof require&&require,t=0;t');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(l){var u=l.data;return u.labels.length&&u.datasets.length?u.labels.map(function(t,e){var i=l.getDatasetMeta(0),n=u.datasets[0],a=i.data[e],o=a&&a.custom||{},r=A.valueAtIndexOrDefault,s=l.options.elements.arc;return{text:t,fillStyle:o.backgroundColor?o.backgroundColor:r(n.backgroundColor,e,s.backgroundColor),strokeStyle:o.borderColor?o.borderColor:r(n.borderColor,e,s.borderColor),lineWidth:o.borderWidth?o.borderWidth:r(n.borderWidth,e,s.borderWidth),hidden:isNaN(n.data[e])||i.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=Math.PI?-1:f<-Math.PI?1:0))+h,p=Math.cos(f),m=Math.sin(f),v=Math.cos(g),b=Math.sin(g),x=f<=0&&0<=g||f<=2*Math.PI&&2*Math.PI<=g,y=f<=.5*Math.PI&&.5*Math.PI<=g||f<=2.5*Math.PI&&2.5*Math.PI<=g,k=f<=-Math.PI&&-Math.PI<=g||f<=Math.PI&&Math.PI<=g,M=f<=.5*-Math.PI&&.5*-Math.PI<=g||f<=1.5*Math.PI&&1.5*Math.PI<=g,w=c/100,C=k?-1:Math.min(p*(p<0?1:w),v*(v<0?1:w)),S=M?-1:Math.min(m*(m<0?1:w),b*(b<0?1:w)),_=x?1:Math.max(p*(0');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(s){var l=s.data;return l.labels.length&&l.datasets.length?l.labels.map(function(t,e){var i=s.getDatasetMeta(0),n=l.datasets[0],a=i.data[e].custom||{},o=k.valueAtIndexOrDefault,r=s.options.elements.arc;return{text:t,fillStyle:a.backgroundColor?a.backgroundColor:o(n.backgroundColor,e,r.backgroundColor),strokeStyle:a.borderColor?a.borderColor:o(n.borderColor,e,r.borderColor),lineWidth:a.borderWidth?a.borderWidth:o(n.borderWidth,e,r.borderWidth),hidden:isNaN(n.data[e])||i.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=e.numSteps?(o.callback(e.onAnimationComplete,[e],i),i.animating=!1,n.splice(a,1)):++a}}},{26:26,46:46}],24:[function(t,e,i){"use strict";var s=t(22),l=t(23),c=t(26),h=t(46),a=t(29),o=t(31),f=t(49),g=t(32),p=t(34),n=t(36);e.exports=function(u){function d(t){return"top"===t||"bottom"===t}u.types={},u.instances={},u.controllers={},h.extend(u.prototype,{construct:function(t,e){var i,n,a=this;(n=(i=(i=e)||{}).data=i.data||{}).datasets=n.datasets||[],n.labels=n.labels||[],i.options=h.configMerge(c.global,c[i.type],i.options||{}),e=i;var o=f.acquireContext(t,e),r=o&&o.canvas,s=r&&r.height,l=r&&r.width;a.id=h.uid(),a.ctx=o,a.canvas=r,a.config=e,a.width=l,a.height=s,a.aspectRatio=s?l/s:null,a.options=e.options,a._bufferedRender=!1,(a.chart=a).controller=a,u.instances[a.id]=a,Object.defineProperty(a,"data",{get:function(){return a.config.data},set:function(t){a.config.data=t}}),o&&r?(a.initialize(),a.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return g.notify(t,"beforeInit"),h.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),g.notify(t,"afterInit"),t},clear:function(){return h.canvas.clear(this),this},stop:function(){return l.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(h.getMaximumWidth(n))),r=Math.max(0,Math.floor(a?o/a:h.getMaximumHeight(n)));if((e.width!==o||e.height!==r)&&(n.width=e.width=o,n.height=e.height=r,n.style.width=o+"px",n.style.height=r+"px",h.retinaScale(e,i.devicePixelRatio),!t)){var s={width:o,height:r};g.notify(e,"resize",[s]),e.options.onResize&&e.options.onResize(e,s),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;h.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),h.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var r=this,t=r.options,s=r.scales||{},e=[],l=Object.keys(s).reduce(function(t,e){return t[e]=!1,t},{});t.scales&&(e=e.concat((t.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(t.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),t.scale&&e.push({options:t.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),h.each(e,function(t){var e=t.options,i=e.id,n=h.valueOrDefault(e.type,t.dtype);d(e.position)!==d(t.dposition)&&(e.position=t.dposition),l[i]=!0;var a=null;if(i in s&&s[i].type===n)(a=s[i]).options=e,a.ctx=r.ctx,a.chart=r;else{var o=p.getScaleConstructor(n);if(!o)return;a=new o({id:i,type:n,options:e,ctx:r.ctx,chart:r}),s[a.id]=a}a.mergeTicksOptions(),t.isDefault&&(r.scale=a)}),h.each(l,function(t,e){t||delete s[e]}),r.scales=s,p.addScalesToLayout(this)},buildOrUpdateControllers:function(){var o=this,r=[],s=[];return h.each(o.data.datasets,function(t,e){var i=o.getDatasetMeta(e),n=t.type||o.config.type;if(i.type&&i.type!==n&&(o.destroyDatasetMeta(e),i=o.getDatasetMeta(e)),i.type=n,r.push(i.type),i.controller)i.controller.updateIndex(e),i.controller.linkScales();else{var a=u.controllers[i.type];if(void 0===a)throw new Error('"'+i.type+'" is not a chart type.');i.controller=new a(o,e),s.push(i.controller)}},o),s},resetElements:function(){var i=this;h.each(i.data.datasets,function(t,e){i.getDatasetMeta(e).controller.reset()},i)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,h.each(e.scales,function(t){o.removeBox(e,t)}),i=h.configMerge(u.defaults.global,u.defaults[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),g._invalidate(n),!1!==g.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();h.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&h.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],g.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==g.notify(this,"beforeLayout")&&(o.update(this,this.width,this.height),g.notify(this,"afterScaleUpdate"),g.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==g.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t=e[t].length&&e[t].push({}),!e[t][a].type||r.type&&r.type!==e[t][a].type?g.merge(e[t][a],[l.getScaleDefaults(o),r]):g.merge(e[t][a],r)}else g._merger(t,e,i,n)}})},g.where=function(t,e){if(g.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return g.each(t,function(t){e(t)&&i.push(t)}),i},g.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},g.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},g.niceNum=function(t,e){var i=Math.floor(g.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},g.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},g.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.target||t.srcElement,r=o.getBoundingClientRect(),s=a.touches;n=s&&0i.length){for(var l=0;le&&(e=t.length)}),e},g.color=n?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),n(t)}:function(t){return console.error("Color.js not found!"),t},g.getHoverColor=function(t){return t instanceof CanvasPattern?t:g.color(t).saturate(.5).darken(.1).rgbString()}}},{26:26,3:3,34:34,46:46}],29:[function(t,e,i){"use strict";var n=t(46);function s(t,e){return t.native?{x:t.x,y:t.y}:n.getRelativePosition(t,e)}function l(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;nt.maxHeight){o--;break}o++,l=r*s}t.labelRotation=o},afterCalculateTickRotation:function(){H.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){H.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=k(t._ticks),n=t.options,a=n.ticks,o=n.scaleLabel,r=n.gridLines,s=n.display,l=t.isHorizontal(),u=w(a),d=n.gridLines.tickMarkLength;if(e.width=l?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&r.drawTicks?d:0,e.height=l?s&&r.drawTicks?d:0:t.maxHeight,o.display&&s){var c=C(o)+H.options.toPadding(o.padding).height;l?e.height+=c:e.width+=c}if(a.display&&s){var h=H.longestText(t.ctx,u.font,i,t.longestTextCache),f=H.numberOfLabelLines(i),g=.5*u.size,p=t.options.ticks.padding;if(l){t.longestLabelWidth=h;var m=H.toRadians(t.labelRotation),v=Math.cos(m),b=Math.sin(m)*h+u.size*f+g*(f-1)+g;e.height=Math.min(t.maxHeight,e.height+b+p),t.ctx.font=u.font;var x=M(t.ctx,i[0],u.font),y=M(t.ctx,i[i.length-1],u.font);0!==t.labelRotation?(t.paddingLeft="bottom"===n.position?v*x+3:v*g+3,t.paddingRight="bottom"===n.position?v*g+3:v*y+3):(t.paddingLeft=x/2+3,t.paddingRight=y/2+3)}else a.mirror?h=0:h+=p+g,e.width=Math.min(t.maxWidth,e.width+h),t.paddingTop=u.size/2,t.paddingBottom=u.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){H.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(H.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:H.noop,getPixelForValue:H.noop,getValueForPixel:H.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:0o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((c+s.autoSkipPadding)*l/(o.width-(o.paddingLeft+o.paddingRight)))),a&&al.height-e.height&&(c="bottom");var h=(u.left+u.right)/2,f=(u.top+u.bottom)/2;n="center"===c?(i=function(t){return t<=h},function(t){return h=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(d="left",a(s.x)&&(d="center",c=r(s.y))):n(s.x)&&(d="right",o(s.x)&&(d="center",c=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,I=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,u=e.titleFontSize,d=e.bodyFontSize,c=e.footerFontSize;n+=s*u,n+=s?(s-1)*e.titleSpacing:0,n+=s?e.titleMarginBottom:0,n+=r*d,n+=r?(r-1)*e.bodySpacing:0,n+=l?e.footerMarginTop:0,n+=l*c,n+=l?(l-1)*e.footerSpacing:0;var h=0,f=function(t){a=Math.max(a,i.measureText(t).width+h)};return i.font=R.fontString(u,e._titleFontStyle,e._titleFontFamily),R.each(e.title,f),i.font=R.fontString(d,e._bodyFontStyle,e._bodyFontFamily),R.each(e.beforeBody.concat(e.afterBody),f),h=e.displayColors?d+2:0,R.each(o,function(t){R.each(t.before,f),R.each(t.lines,f),R.each(t.after,f)}),h=0,i.font=R.fontString(c,e._footerFontStyle,e._footerFontFamily),R.each(e.footer,f),{width:a+=2*e.xPadding,height:n}}(this,C)),n=C,a=I,o=D,r=k._chart,s=n.x,l=n.y,u=n.caretSize,d=n.caretPadding,c=n.cornerRadius,h=o.xAlign,f=o.yAlign,g=u+d,p=c+d,"right"===h?s-=a.width:"center"===h&&((s-=a.width/2)+a.width>r.width&&(s=r.width-a.width),s<0&&(s=0)),"top"===f?l+=g:l-="bottom"===f?a.height+g:a.height/2,"center"===f?"left"===h?s+=g:"right"===h&&(s-=g):"left"===h?s-=p:"right"===h&&(s+=p),P={x:s,y:l}}else C.opacity=0;return C.xAlign=D.xAlign,C.yAlign=D.yAlign,C.x=P.x,C.y=P.y,C.width=I.width,C.height=I.height,C.caretX=A.x,C.caretY=A.y,k._model=C,t&&M.custom&&M.custom.call(k,C),k},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,u=i.caretSize,d=i.cornerRadius,c=i.xAlign,h=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===h)s=g+m/2,l="left"===c?(a=(n=f)-u,o=n,r=s+u,s-u):(a=(n=f+p)+u,o=n,r=s-u,s+u);else if(o=(n="left"===c?(a=f+d+u)-u:"right"===c?(a=f+p-d-u)-u:(a=i.caretX)-u,a+u),"top"===h)s=(r=g)-u,l=r;else{s=(r=g+m)+u,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,e,i,n){var a=e.title;if(a.length){i.textAlign=e._titleAlign,i.textBaseline="top";var o,r,s=e.titleFontSize,l=e.titleSpacing;for(i.fillStyle=h(e.titleFontColor,n),i.font=R.fontString(s,e._titleFontStyle,e._titleFontFamily),o=0,r=a.length;o=i.innerRadius&&o<=i.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,n=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,n),t.arc(e.x,e.y,e.innerRadius,n,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{26:26,27:27,46:46}],38:[function(t,e,i){"use strict";var n=t(26),a=t(27),d=t(46),c=n.global;n._set("global",{elements:{line:{tension:.4,backgroundColor:c.defaultColor,borderWidth:3,borderColor:c.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a=this._view,o=this._chart.ctx,r=a.spanGaps,s=this._children.slice(),l=c.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),o.save(),o.lineCap=a.borderCapStyle||l.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||l.borderDash),o.lineDashOffset=a.borderDashOffset||l.borderDashOffset,o.lineJoin=a.borderJoinStyle||l.borderJoinStyle,o.lineWidth=a.borderWidth||l.borderWidth,o.strokeStyle=a.borderColor||c.defaultColor,o.beginPath(),u=-1,t=0;t=t.left&&1.01*t.right>=i.x&&i.y>=t.top&&1.01*t.bottom>=i.y)&&(n.strokeStyle=e.borderColor||c,n.lineWidth=d.valueOrDefault(e.borderWidth,u.global.elements.point.borderWidth),n.fillStyle=e.backgroundColor||c,d.canvas.drawPoint(n,a,r,s,l,o))}})},{26:26,27:27,46:46}],40:[function(t,e,i){"use strict";var n=t(26),a=t(27);function l(t){return void 0!==t._view.width}function o(t){var e,i,n,a,o=t._view;if(l(t)){var r=o.width/2;e=o.x-r,i=o.x+r,n=Math.min(o.y,o.base),a=Math.max(o.y,o.base)}else{var s=o.height/2;e=Math.min(o.x,o.base),i=Math.max(o.x,o.base),n=o.y-s,a=o.y+s}return{left:e,top:n,right:i,bottom:a}}n._set("global",{elements:{rectangle:{backgroundColor:n.global.defaultColor,borderColor:n.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a,o,r,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(r=l.horizontal?(t=l.base,e=l.x,i=l.y-l.height/2,n=l.y+l.height/2,a=t=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,e){if(!this._view)return!1;var i=o(this);return l(this)?t>=i.left&&t<=i.right:e>=i.top&&e<=i.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,i=this._view;return e=l(this)?(t=i.x,(i.y+i.base)/2):(t=(i.x+i.base)/2,i.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{26:26,27:27}],41:[function(t,e,i){"use strict";e.exports={},e.exports.Arc=t(37),e.exports.Line=t(38),e.exports.Point=t(39),e.exports.Rectangle=t(40)},{37:37,38:38,39:39,40:40}],42:[function(t,e,i){"use strict";var n=t(43);i=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,a/2-1e-7,n/2-1e-7);t.moveTo(e+r,i),t.lineTo(e+n-r,i),t.arcTo(e+n,i,e+n,i+r,r),t.lineTo(e+n,i+a-r),t.arcTo(e+n,i+a,e+n-r,i+a,r),t.lineTo(e+r,i+a),t.arcTo(e,i+a,e,i+a-r,r),t.lineTo(e,i+r),t.arcTo(e,i,e+r,i,r),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a,o){var r,s,l,u,d,c;if(o=o||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(r=e.toString())&&"[object HTMLCanvasElement]"!==r){if(!(isNaN(i)||i<=0)){switch(t.save(),t.translate(n,a),t.rotate(o*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,i,0,2*Math.PI),t.closePath();break;case"triangle":d=(s=3*i/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,d/3),t.lineTo(s/2,d/3),t.lineTo(0,-2*d/3),t.closePath();break;case"rect":c=1/Math.SQRT2*i,t.rect(-c,-c,2*c,2*c);break;case"rectRounded":var h=i/Math.SQRT2,f=-h,g=-h,p=Math.SQRT2*i;this.roundedRect(t,f,g,p,p,.425*i);break;case"rectRot":c=1/Math.SQRT2*i,t.moveTo(-c,0),t.lineTo(0,c),t.lineTo(c,0),t.lineTo(0,-c),t.closePath();break;case"cross":t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i,0),t.lineTo(i,0);break;case"crossRot":l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"star":t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i,0),t.lineTo(i,0),l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"line":t.moveTo(-i,0),t.lineTo(i,0);break;case"dash":t.moveTo(0,0),t.lineTo(i,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){if(i.steppedLine)return"after"===i.steppedLine&&!n||"after"!==i.steppedLine&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y),void t.lineTo(i.x,i.y);i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}};n.clear=i.clear,n.drawRoundedRectangle=function(t){t.beginPath(),i.roundedRect.apply(i,arguments)}},{43:43}],43:[function(t,e,i){"use strict";var n,d={noop:function(){},uid:(n=0,function(){return n++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return d.valueOrDefault(d.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var a,o,r;if(d.isArray(t))if(o=t.length,n)for(a=o-1;0<=a;a--)e.call(i,t[a],a);else for(a=0;a
';var a=e.childNodes[0],o=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,o.scrollLeft=1e6,o.scrollTop=1e6};var r=function(){e._reset(),t()};return x(a,"scroll",r.bind(a,"expand")),x(o,"scroll",r.bind(o,"shrink")),e}((o=!(n=function(){if(c.resizer)return t(y("resize",i))}),r=[],function(){r=Array.prototype.slice.call(arguments),a=a||this,o||(o=!0,f.requestAnimFrame.call(window,function(){o=!1,n.apply(a,r)}))}));l=function(){if(c.resizer){var t=e.parentNode;t&&t!==h.parentNode&&t.insertBefore(h,t.firstChild),h._reset()}},u=(s=e)[g]||(s[g]={}),d=u.renderProxy=function(t){t.animationName===v&&l()},f.each(b,function(t){x(s,t,d)}),u.reflow=!!s.offsetParent,s.classList.add(m)}function o(t){var e,i,n,a=t[g]||{},o=a.resizer;delete a.resizer,i=(e=t)[g]||{},(n=i.renderProxy)&&(f.each(b,function(t){r(e,t,n)}),delete i.renderProxy),e.classList.remove(m),o&&o.parentNode&&o.parentNode.removeChild(o)}e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,i,n="from{opacity:0.99}to{opacity:1}";e="@-webkit-keyframes "+v+"{"+n+"}@keyframes "+v+"{"+n+"}."+m+"{-webkit-animation:"+v+" 0.001s;animation:"+v+" 0.001s;}",i=(t=this)._style||document.createElement("style"),t._style||(e="/* Chart.js */\n"+e,(t._style=i).setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(i)),i.appendChild(document.createTextNode(e))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute("height"),a=t.getAttribute("width");if(t[g]={initial:{height:n,width:a,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===a||""===a){var o=l(t,"width");void 0!==o&&(t.width=o)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var r=l(t,"height");void 0!==o&&(t.height=r)}}(t,e),i):null},releaseContext:function(t){var i=t.canvas;if(i[g]){var n=i[g].initial;["height","width"].forEach(function(t){var e=n[t];f.isNullOrUndef(e)?i.removeAttribute(t):i.setAttribute(t,e)}),f.each(n.style||{},function(t,e){i.style[e]=t}),i.width=i.width,delete i[g]}},addEventListener:function(o,t,r){var e=o.canvas;if("resize"!==t){var i=r[g]||(r[g]={});x(e,t,(i.proxies||(i.proxies={}))[o.id+"_"+t]=function(t){var e,i,n,a;r((i=o,n=s[(e=t).type]||e.type,a=f.getRelativePosition(e,i),y(n,i,a.x,a.y,e)))})}else a(e,r,o)},removeEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=((i[g]||{}).proxies||{})[t.id+"_"+e];a&&r(n,e,a)}else o(n)}},f.addEvent=x,f.removeEvent=r},{46:46}],49:[function(t,e,i){"use strict";var n=t(46),a=t(47),o=t(48),r=o._enabled?o:a;e.exports=n.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{46:46,47:47,48:48}],50:[function(t,e,i){"use strict";e.exports={},e.exports.filler=t(51),e.exports.legend=t(52),e.exports.title=t(53)},{51:51,52:52,53:53}],51:[function(t,e,i){"use strict";var u=t(26),h=t(41),d=t(46);u._set("global",{plugins:{filler:{propagate:!0}}});var f={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e');for(var i=0;i'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("");return e.push(""),e.join("")}});var r=n.extend({initialize:function(t){D.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:o,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:function(){var e=this,i=e.options.labels||{},t=D.callback(i.generateLabels,[e.chart],e)||[];i.filter&&(t=t.filter(function(t){return i.filter(t,e.chart.data)})),e.options.reverse&&t.reverse(),e.legendItems=t},afterBuildLabels:o,beforeFit:o,fit:function(){var n=this,t=n.options,a=t.labels,e=t.display,o=n.ctx,i=_.global,r=D.valueOrDefault,s=r(a.fontSize,i.defaultFontSize),l=r(a.fontStyle,i.defaultFontStyle),u=r(a.fontFamily,i.defaultFontFamily),d=D.fontString(s,l,u),c=n.legendHitBoxes=[],h=n.minSize,f=n.isHorizontal();if(h.height=f?(h.width=n.maxWidth,e?10:0):(h.width=e?10:0,n.maxHeight),e)if(o.font=d,f){var g=n.lineWidths=[0],p=n.legendItems.length?s+a.padding:0;o.textAlign="left",o.textBaseline="top",D.each(n.legendItems,function(t,e){var i=P(a,s)+s/2+o.measureText(t.text).width;g[g.length-1]+i+a.padding>=n.width&&(p+=s+a.padding,g[g.length]=n.left),c[e]={left:0,top:0,width:i,height:s},g[g.length-1]+=i+a.padding}),h.height+=p}else{var m=a.padding,v=n.columnWidths=[],b=a.padding,x=0,y=0,k=s+m;D.each(n.legendItems,function(t,e){var i=P(a,s)+s/2+o.measureText(t.text).width;y+k>h.height&&(b+=x+a.padding,v.push(x),y=x=0),x=Math.max(x,i),y+=k,c[e]={left:0,top:0,width:i,height:s}}),b+=x,v.push(x),h.width+=b}n.width=h.width,n.height=h.height},afterFit:o,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var c=this,h=c.options,f=h.labels,g=_.global,p=g.elements.line,m=c.width,v=c.lineWidths;if(h.display){var b,x=c.ctx,y=D.valueOrDefault,t=y(f.fontColor,g.defaultFontColor),k=y(f.fontSize,g.defaultFontSize),e=y(f.fontStyle,g.defaultFontStyle),i=y(f.fontFamily,g.defaultFontFamily),n=D.fontString(k,e,i);x.textAlign="left",x.textBaseline="middle",x.lineWidth=.5,x.strokeStyle=t,x.fillStyle=t,x.font=n;var M=P(f,k),w=c.legendHitBoxes,C=c.isHorizontal();b=C?{x:c.left+(m-v[0])/2,y:c.top+f.padding,line:0}:{x:c.left+f.padding,y:c.top+f.padding,line:0};var S=k+f.padding;D.each(c.legendItems,function(t,e){var i,n,a,o,r,s=x.measureText(t.text).width,l=M+k/2+s,u=b.x,d=b.y;C?m<=u+l&&(d=b.y+=S,b.line++,u=b.x=c.left+(m-v[b.line])/2):d+S>c.bottom&&(u=b.x=u+c.columnWidths[b.line]+f.padding,d=b.y=c.top+f.padding,b.line++),function(t,e,i){if(!(isNaN(M)||M<=0)){x.save(),x.fillStyle=y(i.fillStyle,g.defaultColor),x.lineCap=y(i.lineCap,p.borderCapStyle),x.lineDashOffset=y(i.lineDashOffset,p.borderDashOffset),x.lineJoin=y(i.lineJoin,p.borderJoinStyle),x.lineWidth=y(i.lineWidth,p.borderWidth),x.strokeStyle=y(i.strokeStyle,g.defaultColor);var n=0===y(i.lineWidth,p.borderWidth);if(x.setLineDash&&x.setLineDash(y(i.lineDash,p.borderDash)),h.labels&&h.labels.usePointStyle){var a=k*Math.SQRT2/2,o=a/Math.SQRT2,r=t+o,s=e+o;D.canvas.drawPoint(x,i.pointStyle,a,r,s)}else n||x.strokeRect(t,e,M,k),x.fillRect(t,e,M,k);x.restore()}}(u,d,t),w[e].left=u,w[e].top=d,i=t,n=s,o=M+(a=k/2)+u,r=d+a,x.fillText(i.text,o,r),i.hidden&&(x.beginPath(),x.lineWidth=2,x.moveTo(o,r),x.lineTo(o+n,r),x.stroke()),C?b.x+=l+f.padding:b.y+=S})}},handleEvent:function(t){var e=this,i=e.options,n="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===n){if(!i.onHover)return}else{if("click"!==n)return;if(!i.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var s=e.legendHitBoxes,l=0;l=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===n){i.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===n){i.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function s(t,e){var i=new r({ctx:t.ctx,options:e,chart:t});a.configure(t,i,e),a.addBox(t,i),t.legend=i}e.exports={id:"legend",_element:r,beforeInit:function(t){var e=t.options.legend;e&&s(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(D.mergeIf(e,_.global.legend),i?(a.configure(t,i,e),i.options=e):s(t,e)):i&&(a.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}}},{26:26,27:27,31:31,46:46}],53:[function(t,e,i){"use strict";var M=t(26),n=t(27),w=t(46),a=t(31),o=w.noop;M._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var r=n.extend({initialize:function(t){w.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:o,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:o,afterBuildLabels:o,beforeFit:o,fit:function(){var t=this,e=w.valueOrDefault,i=t.options,n=i.display,a=e(i.fontSize,M.global.defaultFontSize),o=t.minSize,r=w.isArray(i.text)?i.text.length:1,s=w.options.toLineHeight(i.lineHeight,a),l=n?r*s+2*i.padding:0;t.isHorizontal()?(o.width=t.maxWidth,o.height=l):(o.width=l,o.height=t.maxHeight),t.width=o.width,t.height=o.height},afterFit:o,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=w.valueOrDefault,n=t.options,a=M.global;if(n.display){var o,r,s,l=i(n.fontSize,a.defaultFontSize),u=i(n.fontStyle,a.defaultFontStyle),d=i(n.fontFamily,a.defaultFontFamily),c=w.fontString(l,u,d),h=w.options.toLineHeight(n.lineHeight,l),f=h/2+n.padding,g=0,p=t.top,m=t.left,v=t.bottom,b=t.right;e.fillStyle=i(n.fontColor,a.defaultFontColor),e.font=c,t.isHorizontal()?(r=m+(b-m)/2,s=p+f,o=b-m):(r="left"===n.position?m+f:b-f,s=p+(v-p)/2,o=v-p,g=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(r,s),e.rotate(g),e.textAlign="center",e.textBaseline="middle";var x=n.text;if(w.isArray(x))for(var y=0,k=0;kr.max&&(r.max=i))})});r.min=isFinite(r.min)&&!isNaN(r.min)?r.min:0,r.max=isFinite(r.max)&&!isNaN(r.max)?r.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var i=c.valueOrDefault(e.fontSize,n.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*i)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});a.registerScaleType("linear",i,e)}},{26:26,34:34,35:35,46:46}],56:[function(t,e,i){"use strict";var c=t(46),n=t(33);e.exports=function(t){var e=c.noop;t.LinearScaleBase=n.extend({getRightValue:function(t){return"string"==typeof t?+t:n.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=c.sign(t.min),n=c.sign(t.max);i<0&&n<0?t.max=0:0=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),n={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,precision:e.precision,stepSize:c.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var i,n,a,o=[];if(t.stepSize&&0r.max&&(r.max=i),0!==i&&(null===r.minNotZero||ir.r&&(r.r=g.end,s.r=h),p.startr.b&&(r.b=p.end,s.b=h)}t.setReductions(o,r,s)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,i){var n=e.l/Math.sin(i.l),a=Math.max(e.r-this.width,0)/Math.sin(i.r),o=-e.t/Math.cos(i.t),r=-Math.max(e.b-this.height,0)/Math.cos(i.b);n=s(n),a=s(a),o=s(o),r=s(r),this.drawingArea=Math.min(Math.round(t-(n+a)/2),Math.round(t-(o+r)/2)),this.setCenterPoint(n,a,o,r)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-n-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/b(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:0>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,u=(r[n]-o[n])*l;return o[n]+u}function C(t,e){var i=e.parser,n=e.parser||e.format;return"function"==typeof i?i(t):"string"==typeof t&&"string"==typeof n?x(t,n):(t instanceof x||(t=x(t)),t.isValid()?t:"function"==typeof n?n(t):t)}function S(t,e){if(m.isNullOrUndef(t))return null;var i=e.options.time,n=C(e.getRightValue(t),i);return n.isValid()?(i.round&&n.startOf(i.round),n.valueOf()):null}function _(t){for(var e=k.indexOf(t)+1,i=k.length;e=k.indexOf(e);a--)if(o=k[a],y[o].common&&r.as(o)>=t.length)return o;return k[e?k.indexOf(e):0]}(b,m.minUnit,h.min,h.max),h._majorUnit=_(h._unit),h._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,u=[],d=[e];for(a=0,o=t.length;a1&&(a-=1)),[360*a,100*r,100*u]},a.rgb.hwb=function(t){var e=t[0],n=t[1],i=t[2];return[a.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,i))),100*(i=1-1/255*Math.max(e,Math.max(n,i)))]},a.rgb.cmyk=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]},a.rgb.keyword=function(t){var i=n[t];if(i)return i;var a,r,o,s=1/0;for(var l in e)if(e.hasOwnProperty(l)){var u=e[l],d=(r=t,o=u,Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2));d.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]},a.rgb.lab=function(t){var e=a.rgb.xyz(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.hsl.rgb=function(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a},a.hsl.hsv=function(t){var e=t[0],n=t[1]/100,i=t[2]/100,a=n,r=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,a*=r<=1?r:2-r,[e,100*(0===i?2*a/(r+a):2*n/(i+n)),100*((i+n)/2)]},a.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}},a.hsv.hsl=function(t){var e,n,i,a=t[0],r=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return i=(2-r)*o,n=r*s,[a,100*(n=(n/=(e=(2-r)*s)<=1?e:2-e)||0),100*(i/=2)]},a.hwb.rgb=function(t){var e,n,i,a,r,o,s,l=t[0]/360,u=t[1]/100,d=t[2]/100,h=u+d;switch(h>1&&(u/=h,d/=h),i=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(i=1-i),a=u+i*((n=1-d)-u),e){default:case 6:case 0:r=n,o=a,s=u;break;case 1:r=a,o=n,s=u;break;case 2:r=u,o=n,s=a;break;case 3:r=u,o=a,s=n;break;case 4:r=a,o=u,s=n;break;case 5:r=n,o=u,s=a}return[255*r,255*o,255*s]},a.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]},a.xyz.rgb=function(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},a.xyz.lab=function(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.lab.xyz=function(t){var e,n,i,a=t[0];e=t[1]/500+(n=(a+16)/116),i=n-t[2]/200;var r=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(i,3);return n=r>.008856?r:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,i=s>.008856?s:(i-16/116)/7.787,[e*=95.047,n*=100,i*=108.883]},a.lab.lch=function(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]},a.lch.lab=function(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]},a.rgb.ansi16=function(t){var e=t[0],n=t[1],i=t[2],r=1 in arguments?arguments[1]:a.rgb.hsv(t)[2];if(0===(r=Math.round(r/50)))return 30;var o=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===r&&(o+=60),o},a.hsv.ansi16=function(t){return a.rgb.ansi16(a.hsv.rgb(t),t[2])},a.rgb.ansi256=function(t){var e=t[0],n=t[1],i=t[2];return e===n&&n===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},a.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},a.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},a.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},a.rgb.hcg=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255,r=Math.max(Math.max(n,i),a),o=Math.min(Math.min(n,i),a),s=r-o;return e=s<=0?0:r===n?(i-a)/s%6:r===i?2+(a-n)/s:4+(n-i)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},a.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=1,a=0;return(i=n<.5?2*e*n:2*e*(1-n))<1&&(a=(n-.5*i)/(1-i)),[t[0],100*i,100*a]},a.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=e*n,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,i=t[2]/100;if(0===n)return[255*i,255*i,255*i];var a,r=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=l,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=l,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=l}return a=(1-n)*i,[255*(n*r[0]+a),255*(n*r[1]+a),255*(n*r[2]+a)]},a.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),i=0;return n>0&&(i=e/n),[t[0],100*i,100*n]},a.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],100*i,100*n]},a.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},a.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,i=n-e,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},a.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},a.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},a.gray.hsl=a.gray.hsv=function(t){return[0,0,t[0]]},a.gray.hwb=function(t){return[0,100,t[0]]},a.gray.cmyk=function(t){return[0,0,0,t[0]]},a.gray.lab=function(t){return[t[0],0,0]},a.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;function i(t){var e=function(){for(var t={},e=Object.keys(n),i=e.length,a=0;a1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var i=n.length,a=0;a1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(i)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:d,getHsla:h,getRgb:function(t){var e=d(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:c,getAlpha:function(t){var e=d(t);if(e)return e[3];if(e=h(t))return e[3];if(e=c(t))return e[3]},hexString:function(t,e){e=void 0!==e&&3===t.length?e:t[3];return"#"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return g(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"},percentaString:g,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:p,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return b[t.slice(0,3)]}};function d(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(i){a=(i=i[1])[3];for(var r=0;rn?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new y,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},y.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},y.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i=0;a--)e.call(n,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-S.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*S.easeInBounce(2*t):.5*S.easeOutBounce(2*t-1)+.5}},C={effects:S};M.easingEffects=S;var P=Math.PI,A=P/180,D=2*P,T=P/2,I=P/4,F=2*P/3,L={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2,i/2),s=e+o,l=n+o,u=e+i-o,d=n+a-o;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,i,a=this.animations,r=0;r=n?(V.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(r,1)):++r}},J=V.options.resolve,Q=["push","pop","shift","splice","unshift"];function tt(t,e){var n=t._chartjs;if(n){var i=n.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(Q.forEach((function(e){delete t[e]})),delete t._chartjs)}}var et=function(t,e){this.initialize(t,e)};V.extend(et.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,i=this.getDataset(),a=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!i.xAxisID||(t.xAxisID=i.xAxisID||a.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!i.yAxisID||(t.yAxisID=i.yAxisID||a.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&tt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;tn&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;na?(r=a/e.innerRadius,t.arc(o,s,e.innerRadius-a,i+r,n-r,!0)):t.arc(o,s,a,i+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function rt(t,e,n){var i="inner"===e.borderAlign;i?(t.lineWidth=2*e.borderWidth,t.lineJoin="round"):(t.lineWidth=e.borderWidth,t.lineJoin="bevel"),n.fullCircles&&function(t,e,n,i){var a,r=n.endAngle;for(i&&(n.endAngle=n.startAngle+it,at(t,n),n.endAngle=r,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=it,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+it,n.startAngle,!0),a=0;as;)a-=it;for(;a=o&&a<=s,u=r>=n.innerRadius&&r<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,i="inner"===n.borderAlign?.33:0,a={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-i,0),pixelMargin:i,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/it)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,a.fullCircles){for(a.endAngle=a.startAngle+it,e.beginPath(),e.arc(a.x,a.y,a.outerRadius,a.startAngle,a.endAngle),e.arc(a.x,a.y,a.innerRadius,a.endAngle,a.startAngle,!0),e.closePath(),t=0;tt.x&&(e=vt(e,"left","right")):t.basen?n:i,r:l.right||a<0?0:a>e?e:a,b:l.bottom||r<0?0:r>n?n:r,l:l.left||o<0?0:o>e?e:o}}function xt(t,e,n){var i=null===e,a=null===n,r=!(!t||i&&a)&&mt(t);return r&&(i||e>=r.left&&e<=r.right)&&(a||n>=r.top&&n<=r.bottom)}z._set("global",{elements:{rectangle:{backgroundColor:gt,borderColor:gt,borderSkipped:"bottom",borderWidth:0}}});var yt=X.extend({_type:"rectangle",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=mt(t),n=e.right-e.left,i=e.bottom-e.top,a=bt(t,n/2,i/2);return{outer:{x:e.left,y:e.top,w:n,h:i},inner:{x:e.left+a.l,y:e.top+a.t,w:n-a.l-a.r,h:i-a.t-a.b}}}(e),i=n.outer,a=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(i.x,i.y,i.w,i.h),i.w===a.w&&i.h===a.h||(t.save(),t.beginPath(),t.rect(i.x,i.y,i.w,i.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return xt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return pt(n)?xt(n,t,null):xt(n,null,e)},inXRange:function(t){return xt(this._view,t,null)},inYRange:function(t){return xt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return pt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return pt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),_t={},kt=ot,wt=ut,Mt=ft,St=yt;_t.Arc=kt,_t.Line=wt,_t.Point=Mt,_t.Rectangle=St;var Ct=V._deprecated,Pt=V.valueOrDefault;function At(t,e,n){var i,a,r=n.barThickness,o=e.stackCount,s=e.pixels[t],l=V.isNullOrUndef(r)?function(t,e){var n,i,a,r,o=t._length;for(a=1,r=e.length;a0?Math.min(o,Math.abs(i-n)):o,n=i;return o}(e.scale,e.pixels):-1;return V.isNullOrUndef(r)?(i=l*n.categoryPercentage,a=n.barPercentage):(i=r*o,a=1),{chunk:i/o,ratio:a,start:s-i/2}}z._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),z._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Dt=nt.extend({dataElementType:_t.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var t,e,n=this;nt.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Ct("bar chart",e.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),Ct("bar chart",e.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),Ct("bar chart",e.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),Ct("bar chart",n._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),Ct("bar chart",e.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e=0&&p.min>=0?p.min:p.max,y=void 0===p.start?p.end:p.max>=0&&p.min>=0?p.max-p.min:p.min-p.max,_=g.length;if(v||void 0===v&&void 0!==b)for(i=0;i<_&&(a=g[i]).index!==t;++i)a.stack===b&&(r=void 0===(u=h._parseValue(f[a.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(p.min<0&&r<0||p.max>=0&&r>0)&&(x+=r));return o=h.getPixelForValue(x),l=(s=h.getPixelForValue(x+y))-o,void 0!==m&&Math.abs(l)=0&&!c||y<0&&c?o-m:o+m),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,i){var a="flex"===i.barThickness?function(t,e,n){var i,a=e.pixels,r=a[t],o=t>0?a[t-1]:null,s=t=Ot?-Rt:b<-Ot?Rt:0)+m,y=Math.cos(b),_=Math.sin(b),k=Math.cos(x),w=Math.sin(x),M=b<=0&&x>=0||x>=Rt,S=b<=zt&&x>=zt||x>=Rt+zt,C=b<=-zt&&x>=-zt||x>=Ot+zt,P=b===-Ot||x>=Ot?-1:Math.min(y,y*p,k,k*p),A=C?-1:Math.min(_,_*p,w,w*p),D=M?1:Math.max(y,y*p,k,k*p),T=S?1:Math.max(_,_*p,w,w*p);u=(D-P)/2,d=(T-A)/2,h=-(D+P)/2,c=-(T+A)/2}for(i=0,a=g.length;i0&&!isNaN(t)?Rt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,i,a,r,o,s,l,u=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,i=V.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Lt(n.hoverBackgroundColor,i(n.backgroundColor)),e.borderColor=Lt(n.hoverBorderColor,i(n.borderColor)),e.borderWidth=Lt(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n0&&Vt(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t0&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},"x-axis":function(t,e){return ie(t,e,{intersect:!1})},point:function(t,e){return te(t,Jt(e,t))},nearest:function(t,e,n){var i=Jt(e,t);n.axis=n.axis||"xy";var a=ne(n.axis);return ee(t,i,n.intersect,a)},x:function(t,e,n){var i=Jt(e,t),a=[],r=!1;return Qt(t,(function(t){t.inXRange(i.x)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a},y:function(t,e,n){var i=Jt(e,t),a=[],r=!1;return Qt(t,(function(t){t.inYRange(i.y)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a}}},re=V.extend;function oe(t,e){return V.where(t,(function(t){return t.pos===e}))}function se(t,e){return t.sort((function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function le(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function ue(t,e,n){var i,a,r=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?r.height:r.width,t[n.pos]+=n.size,r.getPadding){var s=r.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(i=e.outerWidth-le(o,t,"left","right"),a=e.outerHeight-le(o,t,"top","bottom"),i!==t.w||a!==t.h)return t.w=i,t.h=a,n.horizontal?i!==t.w:a!==t.h}function de(t,e){var n=e.maxPadding;function i(t){var i={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){i[t]=Math.max(e[t],n[t])})),i}return i(t?["left","right"]:["top","bottom"])}function he(t,e,n){var i,a,r,o,s,l,u=[];for(i=0,a=t.length;idiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&fe.default||fe,me="$chartjs",ve="chartjs-size-monitor",be="chartjs-render-monitor",xe="chartjs-render-animation",ye=["animationstart","webkitAnimationStart"],_e={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function ke(t,e){var n=V.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}var we=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Me(t,e,n){t.addEventListener(e,n,we)}function Se(t,e,n){t.removeEventListener(e,n,we)}function Ce(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function Pe(t){var e=document.createElement("div");return e.className=t||"",e}function Ae(t,e,n){var i,a,r,o,s=t[me]||(t[me]={}),l=s.resizer=function(t){var e=Pe(ve),n=Pe(ve+"-expand"),i=Pe(ve+"-shrink");n.appendChild(Pe()),i.appendChild(Pe()),e.appendChild(n),e.appendChild(i),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var a=function(){e._reset(),t()};return Me(n,"scroll",a.bind(n,"expand")),Me(i,"scroll",a.bind(i,"shrink")),e}((i=function(){if(s.resizer){var i=n.options.maintainAspectRatio&&t.parentNode,a=i?i.clientWidth:0;e(Ce("resize",n)),i&&i.clientWidth0){var r=t[0];r.label?n=r.label:r.xLabel?n=r.xLabel:a>0&&r.index-1?t.split("\n"):t}function We(t){var e=z.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Re(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Re(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Re(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Re(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Re(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Re(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Re(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Re(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Re(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ve(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function He(t){return Be([],Ee(t))}var je=X.extend({initialize:function(){this._model=We(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,i=n.beforeTitle.apply(t,arguments),a=n.title.apply(t,arguments),r=n.afterTitle.apply(t,arguments),o=[];return o=Be(o,Ee(i)),o=Be(o,Ee(a)),o=Be(o,Ee(r))},getBeforeBody:function(){return He(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return V.each(t,(function(t){var r={before:[],lines:[],after:[]};Be(r.before,Ee(i.beforeLabel.call(n,t,e))),Be(r.lines,i.label.call(n,t,e)),Be(r.after,Ee(i.afterLabel.call(n,t,e))),a.push(r)})),a},getAfterBody:function(){return He(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),i=e.footer.apply(t,arguments),a=e.afterFooter.apply(t,arguments),r=[];return r=Be(r,Ee(n)),r=Be(r,Ee(i)),r=Be(r,Ee(a))},update:function(t){var e,n,i,a,r,o,s,l,u,d,h=this,c=h._options,f=h._model,g=h._model=We(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var _=[],k=[];y=Ne[c.position].call(h,p,h._eventPosition);var w=[];for(e=0,n=p.length;ei.width&&(a=i.width-e.width),a<0&&(a=0)),"top"===d?r+=h:r-="bottom"===d?e.height+h:e.height/2,"center"===d?"left"===u?a+=h:"right"===u&&(a-=h):"left"===u?a-=c:"right"===u&&(a+=c),{x:a,y:r}}(g,x,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.yl.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):i(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===c)s=g+m/2,"left"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+p)+u,r=i,o=s-u,l=s+u);else if("left"===h?(i=(a=f+d+u)-u,r=a+u):"right"===h?(i=(a=f+p-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+m)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var i,a,r,o=e.title,s=o.length;if(s){var l=ze(e.rtl,e.x,e.width);for(t.x=Ve(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline="middle",i=e.titleFontSize,a=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=V.fontString(i,e._titleFontStyle,e._titleFontFamily),r=0;r0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(i,e,t,n),i.y+=e.yPadding,V.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),V.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),i.reverse&&n._active.reverse()),(e=!V.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),qe=Ne,Ue=je;Ue.positioners=qe;var Ye=V.valueOrDefault;function Ge(){return V.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?V.merge(e[t][a],[Oe.getScaleDefaults(r),o]):V.merge(e[t][a],o)}else V._merger(t,e,n,i)}})}function Xe(){return V.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){var a=e[t]||{},r=n[t];"scales"===t?e[t]=Ge(a,r):"scale"===t?e[t]=V.merge(a,[Oe.getScaleDefaults(r.type),r]):V._merger(t,e,n,i)}})}function Ke(t){var e=t.options;V.each(t.scales,(function(e){ge.removeBox(t,e)})),e=Xe(z.global,z[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function Ze(t,e,n){var i,a=function(t){return t.id===i};do{i=e+n++}while(V.findIndex(t,a)>=0);return i}function $e(t){return"top"===t||"bottom"===t}function Je(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}z._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Qe=function(t,e){return this.construct(t,e),this};V.extend(Qe.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Xe(z.global,z[t.type],t.options||{}),t}(e);var i=Fe.acquireContext(t,e),a=i&&i.canvas,r=a&&a.height,o=a&&a.width;n.id=V.uid(),n.ctx=i,n.canvas=a,n.config=e,n.width=o,n.height=r,n.aspectRatio=r?o/r:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,Qe.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),i&&a?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Le.notify(t,"beforeInit"),V.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Le.notify(t,"afterInit"),t},clear:function(){return V.canvas.clear(this),this},stop:function(){return $.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(V.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:V.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+"px",i.style.height=o+"px",V.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};Le.notify(e,"resize",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;V.each(e.xAxes,(function(t,n){t.id||(t.id=Ze(e.xAxes,"x-axis-",n))})),V.each(e.yAxes,(function(t,n){t.id||(t.id=Ze(e.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},i=[],a=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(i=i.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&i.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),V.each(i,(function(e){var i=e.options,r=i.id,o=Ye(i.type,e.dtype);$e(i.position)!==$e(e.dposition)&&(i.position=e.dposition),a[r]=!0;var s=null;if(r in n&&n[r].type===o)(s=n[r]).options=i,s.ctx=t.ctx,s.chart=t;else{var l=Oe.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:i,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),V.each(a,(function(t,e){t||delete n[e]})),t.scales=n,Oe.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,i=[],a=n.data.datasets;for(t=0,e=a.length;t=0;--n)this.drawDataset(e[n],t);Le.notify(this,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Le.notify(this,"beforeDatasetDraw",[n])&&(t.controller.draw(e),Le.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Le.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),Le.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return ae.modes.single(this,t)},getElementsAtEvent:function(t){return ae.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ae.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=ae.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return ae.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e3?n[2]-n[1]:n[1]-n[0];Math.abs(i)>1&&t!==Math.floor(t)&&(i=t-Math.floor(t));var a=V.log10(Math.abs(i)),r="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=V.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toExponential(s)}else{var l=-1*Math.floor(a);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var i=t/Math.pow(10,Math.floor(V.log10(t)));return 0===t?"0":1===i||2===i||5===i||0===e||e===n.length-1?t.toExponential():""}}},on=V.isArray,sn=V.isNullOrUndef,ln=V.valueOrDefault,un=V.valueAtIndexOrDefault;function dn(t,e,n){var i,a=t.getTicks().length,r=Math.min(e,a-1),o=t.getPixelForTick(r),s=t._startPixel,l=t._endPixel;if(!(n&&(i=1===a?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(r-1))/2,(o+=rl+1e-6)))return o}function hn(t,e,n,i){var a,r,o,s,l,u,d,h,c,f,g,p,m,v=n.length,b=[],x=[],y=[];for(a=0;ae){for(n=0;n=c||d<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,i=Math.min(s.maxWidth,s.chart.width-e),e+6>(a=l.offset?s.maxWidth/d:i/(d-1))&&(a=i/(d-(l.offset?.5:1)),r=s.maxHeight-cn(l.gridLines)-u.padding-fn(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=V.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/a,1)),Math.asin(Math.min(r/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(c,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){V.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){V.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,i=t.options,a=i.ticks,r=i.scaleLabel,o=i.gridLines,s=t._isVisible(),l="bottom"===i.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=cn(o)+fn(r)),u?s&&(e.height=cn(o)+fn(r)):e.height=t.maxHeight,a.display&&s){var d=pn(a),h=t._getLabelSizes(),c=h.first,f=h.last,g=h.widest,p=h.highest,m=.4*d.minor.lineHeight,v=a.padding;if(u){var b=0!==t.labelRotation,x=V.toRadians(t.labelRotation),y=Math.cos(x),_=Math.sin(x),k=_*g.width+y*(p.height-(b?p.offset:0))+(b?0:m);e.height=Math.min(t.maxHeight,e.height+k+v);var w,M,S=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(t.getTicks().length-1);b?(w=l?y*c.width+_*c.offset:_*(c.height-c.offset),M=l?_*(f.height-f.offset):y*f.width+_*f.offset):(w=c.width/2,M=f.width/2),t.paddingLeft=Math.max((w-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-C)*t.width/(t.width-C),0)+3}else{var P=a.mirror?0:g.width+v+m;e.width=Math.min(t.maxWidth,e.width+P),t.paddingTop=c.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){V.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(sn(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,i,a=this;for(a.ticks=t.map((function(t){return t.value})),a.beforeTickToLabelConversion(),e=a.convertTicksToLabels(t)||a.ticks,a.afterTickToLabelConversion(),n=0,i=t.length;nn-1?null:this.getPixelForDecimal(t*i+(e?i/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,i,a,r=this.options.ticks,o=this._length,s=r.maxTicksLimit||o/this._tickSize()+1,l=r.major.enabled?function(t){var e,n,i=[];for(e=0,n=t.length;es)return function(t,e,n){var i,a,r=0,o=e[0];for(n=Math.ceil(n),i=0;iu)return r;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e1?(h-d)/(u-1):null,vn(t,i,V.isNullOrUndef(a)?0:d-a,d),vn(t,i,h,V.isNullOrUndef(a)?t.length:h+a),mn(t)}return vn(t,i),mn(t)},_tickSize:function(){var t=this.options.ticks,e=V.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),i=Math.abs(Math.sin(e)),a=this._getLabelSizes(),r=t.autoSkipPadding||0,o=a?a.widest.width+r:0,s=a?a.highest.height+r:0;return this.isHorizontal()?s*n>o*i?o/n:s/i:s*i=0&&(o=t),void 0!==r&&(t=n.indexOf(r))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;xn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var i,a,r,o=this;return yn(e)||yn(n)||(t=o.chart.data.datasets[n].data[e]),yn(t)||(i=o.isHorizontal()?t.x:t.y),(void 0!==i||void 0!==t&&isNaN(e))&&(a=o._getLabels(),t=V.valueOrDefault(i,t),e=-1!==(r=a.indexOf(t))?r:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),kn={position:"bottom"};_n._defaults=kn;var wn=V.noop,Mn=V.isNullOrUndef;var Sn=xn.extend({getRightValue:function(t){return"string"==typeof t?+t:xn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=V.sign(t.min),i=V.sign(t.max);n<0&&i<0?t.max=0:n>0&&i>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,i=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:wn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:V.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,i,a,r,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,d=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=V.niceNum((g-f)/u/l)*l;if(p<1e-14&&Mn(d)&&Mn(h))return[f,g];(r=Math.ceil(g/p)-Math.floor(f/p))>u&&(p=V.niceNum(r*p/u/l)*l),s||Mn(c)?n=Math.pow(10,V._decimalPlaces(p)):(n=Math.pow(10,c),p=Math.ceil(p*n)/n),i=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!Mn(d)&&V.almostWhole(d/p,p/1e3)&&(i=d),!Mn(h)&&V.almostWhole(h/p,p/1e3)&&(a=h)),r=(a-i)/p,r=V.almostEquals(r,Math.round(r),p/1e3)?Math.round(r):Math.ceil(r),i=Math.round(i*n)/n,a=Math.round(a*n)/n,o.push(Mn(d)?i:d);for(var m=1;me.length-1?null:this.getPixelForValue(e[t])}}),Tn=Cn;Dn._defaults=Tn;var In=V.valueOrDefault,Fn=V.math.log10;var Ln={position:"left",ticks:{callback:rn.formatters.logarithmic}};function On(t,e){return V.isFinite(t)&&t>=0?t:e}var Rn=xn.extend({determineDataLimits:function(){var t,e,n,i,a,r,o=this,s=o.options,l=o.chart,u=l.data.datasets,d=o.isHorizontal();function h(t){return d?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var c=s.stacked;if(void 0===c)for(t=0;t0){var e=V.min(t),n=V.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(Fn(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),i={min:On(e.min),max:On(e.max)},a=t.ticks=function(t,e){var n,i,a=[],r=In(t.min,Math.pow(10,Math.floor(Fn(e.min)))),o=Math.floor(Fn(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===r?(n=Math.floor(Fn(e.minNotZero)),i=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(r),r=i*Math.pow(10,n)):(n=Math.floor(Fn(r)),i=Math.floor(r/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{a.push(r),10===++i&&(i=1,l=++n>=0?1:l),r=Math.round(i*Math.pow(10,n)*l)/l}while(ne.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(Fn(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;xn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=In(t.options.ticks.fontSize,z.global.defaultFontSize)/t._length),t._startValue=Fn(e),t._valueOffset=n,t._valueRange=(Fn(t.max)-Fn(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(Fn(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),zn=Ln;Rn._defaults=zn;var Nn=V.valueOrDefault,Bn=V.valueAtIndexOrDefault,En=V.options.resolve,Wn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:rn.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Vn(t){var e=t.ticks;return e.display&&t.display?Nn(e.fontSize,z.global.defaultFontSize)+2*e.backdropPaddingY:0}function Hn(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:ta?{start:e-n,end:e}:{start:e,end:e+n}}function jn(t){return 0===t||180===t?"center":t<180?"left":"right"}function qn(t,e,n,i){var a,r,o=n.y+i/2;if(V.isArray(e))for(a=0,r=e.length;a270||t<90)&&(n.y-=e.h)}function Yn(t){return V.isNumber(t)?t:0}var Gn=Sn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Vn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;V.each(e.data.datasets,(function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);V.each(a.data,(function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Vn(this.options))},convertTicksToLabels:function(){var t=this;Sn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=V.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:""}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,i,a=V.options._parseFont(t.options.pointLabels),r={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,u,d=t.chart.data.labels.length;for(e=0;er.r&&(r.r=f.end,o.r=h),g.startr.b&&(r.b=g.end,o.b=h)}t.setReductions(t.drawingArea,r,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),r=Math.max(e.r-i.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(i.height-i.paddingTop),0)/Math.cos(n.b);a=Yn(a),r=Yn(r),o=Yn(o),s=Yn(s),i.drawingArea=Math.min(Math.floor(t-(a+r)/2),Math.floor(t-(o+s)/2)),i.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-a.paddingTop-i-a.drawingArea;a.xCenter=Math.floor((o+r)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(V.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,i=this,a=i.ctx,r=i.options,o=r.gridLines,s=r.angleLines,l=Nn(s.lineWidth,o.lineWidth),u=Nn(s.color,o.color);if(r.pointLabels.display&&function(t){var e=t.ctx,n=t.options,i=n.pointLabels,a=Vn(n),r=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=V.options._parseFont(i);e.save(),e.font=o.string,e.textBaseline="middle";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?a/2:0,u=t.getPointPosition(s,r+l+5),d=Bn(i.fontColor,s,z.global.defaultFontColor);e.fillStyle=d;var h=t.getIndexAngle(s),c=V.toDegrees(h);e.textAlign=jn(c),Un(c,t._pointLabelSizes[s],u),qn(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(i),o.display&&V.each(i.ticks,(function(t,n){0!==n&&(e=i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]),function(t,e,n,i){var a,r=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=Bn(e.color,i-1),u=Bn(e.lineWidth,i-1);if((o||s)&&l&&u){if(r.save(),r.strokeStyle=l,r.lineWidth=u,r.setLineDash&&(r.setLineDash(e.borderDash||[]),r.lineDashOffset=e.borderDashOffset||0),r.beginPath(),o)r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{a=t.getPointPosition(0,n),r.moveTo(a.x,a.y);for(var d=1;d=0;t--)e=i.getDistanceFromCenterForValue(r.ticks.reverse?i.min:i.max),n=i.getPointPosition(t,e),a.beginPath(),a.moveTo(i.xCenter,i.yCenter),a.lineTo(n.x,n.y),a.stroke();a.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var i,a,r=t.getIndexAngle(0),o=V.options._parseFont(n),s=Nn(n.fontColor,z.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",V.each(t.ticks,(function(r,l){(0!==l||n.reverse)&&(i=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(a=e.measureText(r).width,e.fillStyle=n.backdropColor,e.fillRect(-a/2-n.backdropPaddingX,-i-o.size/2-n.backdropPaddingY,a+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(r,0,-i))})),e.restore()}},_drawTitle:V.noop}),Xn=Wn;Gn._defaults=Xn;var Kn=V._deprecated,Zn=V.options.resolve,$n=V.valueOrDefault,Jn=Number.MIN_SAFE_INTEGER||-9007199254740991,Qn=Number.MAX_SAFE_INTEGER||9007199254740991,ti={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ei=Object.keys(ti);function ni(t,e){return t-e}function ii(t){return V.valueOrDefault(t.time.min,t.ticks.min)}function ai(t){return V.valueOrDefault(t.time.max,t.ticks.max)}function ri(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(n-r[e])/s:0,u=(o[i]-r[i])*l;return r[i]+u}function oi(t,e){var n=t._adapter,i=t.options.time,a=i.parser,r=a||i.format,o=e;return"function"==typeof a&&(o=a(o)),V.isFinite(o)||(o="string"==typeof r?n.parse(o,r):n.parse(o)),null!==o?+o:(a||"function"!=typeof r||(o=r(e),V.isFinite(o)||(o=n.parse(o))),o)}function si(t,e){if(V.isNullOrUndef(e))return null;var n=t.options.time,i=oi(t,t.getRightValue(e));return null===i?i:(n.round&&(i=+t._adapter.startOf(i,n.round)),i)}function li(t,e,n,i){var a,r,o,s=ei.length;for(a=ei.indexOf(t);a=0&&(e[r].major=!0);return e}(t,r,o,n):r}var di=xn.extend({initialize:function(){this.mergeTicksOptions(),xn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),i=t._adapter=new an._date(e.adapters.date);return Kn("time scale",n.format,"time.format","time.parser"),Kn("time scale",n.min,"time.min","ticks.min"),Kn("time scale",n.max,"time.max","ticks.max"),V.mergeIf(n.displayFormats,i.formats()),xn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),xn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,i,a,r,o,s=this,l=s.chart,u=s._adapter,d=s.options,h=d.time.unit||"day",c=Qn,f=Jn,g=[],p=[],m=[],v=s._getLabels();for(t=0,n=v.length;t1?function(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e1e5*u)throw e+" and "+n+" are too far apart with stepSize of "+u+" "+l;for(a=h;a=a&&n<=r&&d.push(n);return i.min=a,i.max=r,i._unit=l.unit||(s.autoSkip?li(l.minUnit,i.min,i.max,h):function(t,e,n,i,a){var r,o;for(r=ei.length-1;r>=ei.indexOf(n);r--)if(o=ei[r],ti[o].common&&t._adapter.diff(a,i,o)>=e-1)return o;return ei[n?ei.indexOf(n):0]}(i,d.length,l.minUnit,i.min,i.max)),i._majorUnit=s.major.enabled&&"year"!==i._unit?function(t){for(var e=ei.indexOf(t)+1,n=ei.length;ee&&s=0&&t0?s:1}}),hi={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};di._defaults=hi;var ci={category:_n,linear:Dn,logarithmic:Rn,radialLinear:Gn,time:di},fi={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};an._date.override("function"==typeof t?{_id:"moment",formats:function(){return fi},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,i){return t(e).add(n,i).valueOf()},diff:function(e,n,i){return t(e).diff(t(n),i)},startOf:function(e,n,i){return e=t(e),"isoWeek"===n?e.isoWeekday(i).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),z._set("global",{plugins:{filler:{propagate:!0}}});var gi={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function mi(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,i,a,r,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,d=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,i=o.getPointPositionForValue(0,e),a=0;a0;--r)V.canvas.lineTo(t,n[r],n[r-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),r=a-1;r>0;--r)t.arc(o,s,l,n[r].angle,n[r-1].angle,!0)}}function _i(t,e,n,i,a,r){var o,s,l,u,d,h,c,f,g=e.length,p=i.spanGaps,m=[],v=[],b=0,x=0;for(t.beginPath(),o=0,s=g;o=0;--n)(e=l[n].$filler)&&e.visible&&(a=(i=e.el)._view,r=i._children||[],o=e.mapper,s=a.backgroundColor||z.global.defaultColor,o&&s&&r.length&&(V.canvas.clipArea(u,t.chartArea),_i(u,r,o,a,s,i._loop),V.canvas.unclipArea(u)))}},wi=V.rtl.getRtlAdapter,Mi=V.noop,Si=V.valueOrDefault;function Ci(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}z._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},i=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var a=n.controller.getStyle(i?0:void 0);return{text:e[n.index].label,fillStyle:a.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,pointStyle:a.pointStyle,rotation:a.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,i,a=document.createElement("ul"),r=t.data.datasets;for(a.setAttribute("class",t.id+"-legend"),e=0,n=r.length;el.width)&&(h+=o+n.padding,d[d.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:i,height:o},d[d.length-1]+=i+n.padding})),l.height+=h}else{var c=n.padding,f=t.columnWidths=[],g=t.columnHeights=[],p=n.padding,m=0,v=0;V.each(t.legendItems,(function(t,e){var i=Ci(n,o)+o/2+a.measureText(t.text).width;e>0&&v+o+2*c>l.height&&(p+=m+n.padding,f.push(m),g.push(v),m=0,v=0),m=Math.max(m,i),v+=o+c,s[e]={left:0,top:0,width:i,height:o}})),p+=m,f.push(m),g.push(v),l.width+=p}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:Mi,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,i=z.global,a=i.defaultColor,r=i.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var d,h=wi(e.rtl,t.left,t.minSize.width),c=t.ctx,f=Si(n.fontColor,i.defaultFontColor),g=V.options._parseFont(n),p=g.size;c.textAlign=h.textAlign("left"),c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=g.string;var m=Ci(n,p),v=t.legendHitBoxes,b=function(t,i){switch(e.align){case"start":return n.padding;case"end":return t-i;default:return(t-i+n.padding)/2}},x=t.isHorizontal();d=x?{x:t.left+b(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+b(o,s[0]),line:0},V.rtl.overrideTextDirection(t.ctx,e.textDirection);var y=p+n.padding;V.each(t.legendItems,(function(e,i){var f=c.measureText(e.text).width,g=m+p/2+f,_=d.x,k=d.y;h.setWidth(t.minSize.width),x?i>0&&_+g+n.padding>t.left+t.minSize.width&&(k=d.y+=y,d.line++,_=d.x=t.left+b(l,u[d.line])):i>0&&k+y>t.top+t.minSize.height&&(_=d.x=_+t.columnWidths[d.line]+n.padding,d.line++,k=d.y=t.top+b(o,s[d.line]));var w=h.x(_);!function(t,e,i){if(!(isNaN(m)||m<=0)){c.save();var o=Si(i.lineWidth,r.borderWidth);if(c.fillStyle=Si(i.fillStyle,a),c.lineCap=Si(i.lineCap,r.borderCapStyle),c.lineDashOffset=Si(i.lineDashOffset,r.borderDashOffset),c.lineJoin=Si(i.lineJoin,r.borderJoinStyle),c.lineWidth=o,c.strokeStyle=Si(i.strokeStyle,a),c.setLineDash&&c.setLineDash(Si(i.lineDash,r.borderDash)),n&&n.usePointStyle){var s=m*Math.SQRT2/2,l=h.xPlus(t,m/2),u=e+p/2;V.canvas.drawPoint(c,i.pointStyle,s,l,u,i.rotation)}else c.fillRect(h.leftForLtr(t,m),e,m,p),0!==o&&c.strokeRect(h.leftForLtr(t,m),e,m,p);c.restore()}}(w,k,e),v[i].left=h.leftForLtr(w,v[i].width),v[i].top=k,function(t,e,n,i){var a=p/2,r=h.xPlus(t,m+a),o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(h.xPlus(r,i),o),c.stroke())}(w,k,e,f),x?d.x+=g+n.padding:d.y+=y})),V.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,i,a,r=this;if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)for(a=r.legendHitBoxes,n=0;n=(i=a[n]).left&&t<=i.left+i.width&&e>=i.top&&e<=i.top+i.height)return r.legendItems[n];return null},handleEvent:function(t){var e,n=this,i=n.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!i.onHover&&!i.onLeave)return}else{if("click"!==a)return;if(!i.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===a?e&&i.onClick&&i.onClick.call(n,t.native,e):(i.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&i.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),i.onHover&&e&&i.onHover.call(n,t.native,e))}});function Ai(t,e){var n=new Pi({ctx:t.ctx,options:e,chart:t});ge.configure(t,n,e),ge.addBox(t,n),t.legend=n}var Di={id:"legend",_element:Pi,beforeInit:function(t){var e=t.options.legend;e&&Ai(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(V.mergeIf(e,z.global.legend),n?(ge.configure(t,n,e),n.options=e):Ai(t,e)):n&&(ge.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Ti=V.noop;z._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Ii=X.extend({initialize:function(t){V.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Ti,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:Ti,beforeSetDimensions:Ti,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Ti,beforeBuildLabels:Ti,buildLabels:Ti,afterBuildLabels:Ti,beforeFit:Ti,fit:function(){var t,e=this,n=e.options,i=e.minSize={},a=e.isHorizontal();n.display?(t=(V.isArray(n.text)?n.text.length:1)*V.options._parseFont(n).lineHeight+2*n.padding,e.width=i.width=a?e.maxWidth:t,e.height=i.height=a?t:e.maxHeight):e.width=i.width=e.height=i.height=0},afterFit:Ti,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var i,a,r,o=V.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,d=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=V.valueOrDefault(n.fontColor,z.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(a=h+(f-h)/2,r=d+l,i=f-h):(a="left"===n.position?h+l:f-l,r=d+(c-d)/2,i=c-d,u=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(a,r),e.rotate(u),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(V.isArray(g))for(var p=0,m=0;m=0;i--){var a=t[i];if(e(a))return a}},V.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},V.almostEquals=function(t,e,n){return Math.abs(t-e)=t},V.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},V.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},V.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},V.toRadians=function(t){return t*(Math.PI/180)},V.toDegrees=function(t){return t*(180/Math.PI)},V._decimalPlaces=function(t){if(V.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},V.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},V.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},V.aliasPixel=function(t){return t%2==0?0:.5},V._alignPixel=function(t,e,n){var i=t.currentDevicePixelRatio,a=n/2;return Math.round((e-a)*i)/i+a},V.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},V.EPSILON=Number.EPSILON||1e-14,V.splineCurveMonotone=function(t){var e,n,i,a,r,o,s,l,u,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=d.length;for(e=0;e0?d[e-1]:null,(a=e0?d[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},V.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},V.niceNum=function(t,e){var n=Math.floor(V.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},V.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},V.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var l=parseFloat(V.getStyle(r,"padding-left")),u=parseFloat(V.getStyle(r,"padding-top")),d=parseFloat(V.getStyle(r,"padding-right")),h=parseFloat(V.getStyle(r,"padding-bottom")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:i=Math.round((i-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},V.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},V.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},V._calculatePadding=function(t,e,n){return(e=V.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},V._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},V.getMaximumWidth=function(t){var e=V._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-V._calculatePadding(e,"padding-left",n)-V._calculatePadding(e,"padding-right",n),a=V.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},V.getMaximumHeight=function(t){var e=V._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-V._calculatePadding(e,"padding-top",n)-V._calculatePadding(e,"padding-bottom",n),a=V.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},V.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},V.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+"px",i.style.width=r+"px")}},V.fontString=function(t,e,n){return e+" "+t+"px "+n},V.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var o,s,l,u,d,h=0,c=n.length;for(o=0;on.length){for(o=0;oi&&(i=r),i},V.numberOfLabelLines=function(t){var e=1;return V.each(t,(function(t){V.isArray(t)&&t.length>e&&(e=t.length)})),e},V.color=k?function(t){return t instanceof CanvasGradient&&(t=z.global.defaultColor),k(t)}:function(t){return console.error("Color.js not found!"),t},V.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:V.color(t).saturate(.5).darken(.1).rgbString()}}(),tn._adapters=an,tn.Animation=Z,tn.animationService=$,tn.controllers=$t,tn.DatasetController=nt,tn.defaults=z,tn.Element=X,tn.elements=_t,tn.Interaction=ae,tn.layouts=ge,tn.platform=Fe,tn.plugins=Le,tn.Scale=xn,tn.scaleService=Oe,tn.Ticks=rn,tn.Tooltip=Ue,tn.helpers.each(ci,(function(t,e){tn.scaleService.registerScaleType(e,t,t._defaults)})),Li)Li.hasOwnProperty(Ni)&&tn.plugins.register(Li[Ni]);tn.platform.initialize();var Bi=tn;return"undefined"!=typeof window&&(window.Chart=tn),tn.Chart=tn,tn.Legend=Li.legend._element,tn.Title=Li.title._element,tn.pluginService=tn.plugins,tn.PluginBase=tn.Element.extend({}),tn.canvasHelpers=tn.helpers.canvas,tn.layoutService=tn.layouts,tn.LinearScaleBase=Sn,tn.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){tn[t]=function(e,n){return new tn(e,tn.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Bi})); diff --git a/yarn.lock b/yarn.lock index 6ccddcbf7e..cb8752c0d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -499,10 +499,10 @@ chardet@^0.4.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= -chart.js@2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.7.3.tgz#cdb61618830bf216dc887e2f7b1b3c228b73c57e" - integrity sha512-3+7k/DbR92m6BsMUYP6M0dMsMVZpMnwkUyNSAbqolHKsbIzH2Q4LWVEHHYq7v0fmEV8whXE0DrjANulw9j2K5g== +chart.js@2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.3.tgz#ae3884114dafd381bc600f5b35a189138aac1ef7" + integrity sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw== dependencies: chartjs-color "^2.1.0" moment "^2.10.2" From b28767f1580e6dc0f5da2b6fad4d80b792ec85f5 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 20 Nov 2019 11:16:09 +0100 Subject: [PATCH 220/408] DEV: lodash is actually on 4.17.15 (#8378) --- vendor/assets/javascripts/lodash.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/assets/javascripts/lodash.js b/vendor/assets/javascripts/lodash.js index d9889fa235..1029863fce 100644 --- a/vendor/assets/javascripts/lodash.js +++ b/vendor/assets/javascripts/lodash.js @@ -13,7 +13,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '4.17.13'; + var VERSION = '4.17.15'; /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; From d541183906417342f57b694bd233fc157702f029 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Wed, 20 Nov 2019 09:21:33 +0000 Subject: [PATCH 221/408] DEV: Make it possible to deprecate plugin outlet properties --- app/assets/javascripts/discourse-loader.js | 3 +- .../components/plugin-connector.js.es6 | 34 ++++++++++++++----- .../discourse/components/plugin-outlet.js.es6 | 4 +-- .../discourse/lib/plugin-connectors.js.es6 | 21 ++++++++++++ .../templates/components/plugin-outlet.hbs | 2 +- 5 files changed, 51 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index 6b8f90de22..694977cf76 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -21,7 +21,8 @@ var define, requirejs; getProperties: Ember.getProperties, set: Ember.set, setProperties: Ember.setProperties, - computed: Ember.computed + computed: Ember.computed, + defineProperty: Ember.defineProperty }, "@ember/object/computed": { alias: Ember.computed.alias, diff --git a/app/assets/javascripts/discourse/components/plugin-connector.js.es6 b/app/assets/javascripts/discourse/components/plugin-connector.js.es6 index a844ebbf9d..393704974b 100644 --- a/app/assets/javascripts/discourse/components/plugin-connector.js.es6 +++ b/app/assets/javascripts/discourse/components/plugin-connector.js.es6 @@ -1,5 +1,7 @@ import Component from "@ember/component"; -import { observes } from "discourse-common/utils/decorators"; +import { defineProperty, computed } from "@ember/object"; +import deprecated from "discourse-common/lib/deprecated"; +import { buildArgsWithDeprecations } from "discourse/lib/plugin-connectors"; export default Component.extend({ init() { @@ -9,10 +11,30 @@ export default Component.extend({ this.set("layoutName", connector.templateName); const args = this.args || {}; - Object.keys(args).forEach(key => this.set(key, args[key])); + Object.keys(args).forEach(key => { + defineProperty( + this, + key, + computed("args", () => (this.args || {})[key]) + ); + }); + + const deprecatedArgs = this.deprecatedArgs || {}; + Object.keys(deprecatedArgs).forEach(key => { + defineProperty( + this, + key, + computed("deprecatedArgs", () => { + deprecated(`The ${key} property is deprecated, but is being used in ${this.layoutName}`); + + return (this.deprecatedArgs || {})[key]; + }) + ); + }); const connectorClass = this.get("connector.connectorClass"); - connectorClass.setupComponent.call(this, args, this); + const merged = buildArgsWithDeprecations(args, deprecatedArgs); + connectorClass.setupComponent.call(this, merged, this); this.set("actions", connectorClass.actions); }, @@ -24,12 +46,6 @@ export default Component.extend({ connectorClass.teardownComponent.call(this, this); }, - @observes("args") - _argsChanged() { - const args = this.args || {}; - Object.keys(args).forEach(key => this.set(key, args[key])); - }, - send(name, ...args) { const connectorClass = this.get("connector.connectorClass"); const action = connectorClass.actions[name]; diff --git a/app/assets/javascripts/discourse/components/plugin-outlet.js.es6 b/app/assets/javascripts/discourse/components/plugin-outlet.js.es6 index 14e3805964..6cda10ce7c 100644 --- a/app/assets/javascripts/discourse/components/plugin-outlet.js.es6 +++ b/app/assets/javascripts/discourse/components/plugin-outlet.js.es6 @@ -30,7 +30,7 @@ import Component from "@ember/component"; The list of disabled plugins is returned via the `Site` singleton. **/ -import { renderedConnectorsFor } from "discourse/lib/plugin-connectors"; +import { renderedConnectorsFor, buildArgsWithDeprecations } from "discourse/lib/plugin-connectors"; export default Component.extend({ tagName: "span", @@ -46,7 +46,7 @@ export default Component.extend({ this._super(...arguments); const name = this.name; if (name) { - const args = this.args; + const args = buildArgsWithDeprecations(this.args || {}, this.deprecatedArgs || {}); this.set("connectors", renderedConnectorsFor(name, args, this)); } } diff --git a/app/assets/javascripts/discourse/lib/plugin-connectors.js.es6 b/app/assets/javascripts/discourse/lib/plugin-connectors.js.es6 index 6dbc62f2d5..20c356e99d 100644 --- a/app/assets/javascripts/discourse/lib/plugin-connectors.js.es6 +++ b/app/assets/javascripts/discourse/lib/plugin-connectors.js.es6 @@ -1,4 +1,5 @@ import Site from "discourse/models/site"; +import deprecated from "discourse-common/lib/deprecated"; let _connectorCache; let _rawConnectorCache; @@ -109,3 +110,23 @@ export function rawConnectorsFor(outletName) { } return _rawConnectorCache[outletName] || []; } + +export function buildArgsWithDeprecations(args, deprecatedArgs) { + const output = {}; + + Object.keys(args).forEach(key => { + Object.defineProperty(output, key, { value: args[key] }); + }); + + Object.keys(deprecatedArgs).forEach(key => { + Object.defineProperty(output, key, { + get() { + deprecated(`${key} is deprecated`); + + return deprecatedArgs[key]; + } + }); + }); + + return output; +} diff --git a/app/assets/javascripts/discourse/templates/components/plugin-outlet.hbs b/app/assets/javascripts/discourse/templates/components/plugin-outlet.hbs index 73126a2572..8dbfeec09d 100644 --- a/app/assets/javascripts/discourse/templates/components/plugin-outlet.hbs +++ b/app/assets/javascripts/discourse/templates/components/plugin-outlet.hbs @@ -1,3 +1,3 @@ {{#each connectors as |c|}} - {{plugin-connector connector=c args=args class=c.classNames tagName=connectorTagName}} + {{plugin-connector connector=c args=args deprecatedArgs=deprecatedArgs class=c.classNames tagName=connectorTagName}} {{/each}} From 3b5c214ac3153d6d56351146b8061baa23c71a99 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Wed, 20 Nov 2019 14:03:45 +0000 Subject: [PATCH 222/408] DEV: fix linting --- .../discourse/components/plugin-connector.js.es6 | 4 +++- .../discourse/components/plugin-outlet.js.es6 | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/components/plugin-connector.js.es6 b/app/assets/javascripts/discourse/components/plugin-connector.js.es6 index 393704974b..6f6bbe825f 100644 --- a/app/assets/javascripts/discourse/components/plugin-connector.js.es6 +++ b/app/assets/javascripts/discourse/components/plugin-connector.js.es6 @@ -25,7 +25,9 @@ export default Component.extend({ this, key, computed("deprecatedArgs", () => { - deprecated(`The ${key} property is deprecated, but is being used in ${this.layoutName}`); + deprecated( + `The ${key} property is deprecated, but is being used in ${this.layoutName}` + ); return (this.deprecatedArgs || {})[key]; }) diff --git a/app/assets/javascripts/discourse/components/plugin-outlet.js.es6 b/app/assets/javascripts/discourse/components/plugin-outlet.js.es6 index 6cda10ce7c..f5dc399b2f 100644 --- a/app/assets/javascripts/discourse/components/plugin-outlet.js.es6 +++ b/app/assets/javascripts/discourse/components/plugin-outlet.js.es6 @@ -30,7 +30,10 @@ import Component from "@ember/component"; The list of disabled plugins is returned via the `Site` singleton. **/ -import { renderedConnectorsFor, buildArgsWithDeprecations } from "discourse/lib/plugin-connectors"; +import { + renderedConnectorsFor, + buildArgsWithDeprecations +} from "discourse/lib/plugin-connectors"; export default Component.extend({ tagName: "span", @@ -46,7 +49,10 @@ export default Component.extend({ this._super(...arguments); const name = this.name; if (name) { - const args = buildArgsWithDeprecations(this.args || {}, this.deprecatedArgs || {}); + const args = buildArgsWithDeprecations( + this.args || {}, + this.deprecatedArgs || {} + ); this.set("connectors", renderedConnectorsFor(name, args, this)); } } From 555711ccb54bd87f3e3d819eb121e04cb580220f Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Wed, 20 Nov 2019 17:19:16 +0200 Subject: [PATCH 223/408] FIX: Use correct MIME type for theme exports (#8379) --- app/controllers/admin/themes_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admin/themes_controller.rb b/app/controllers/admin/themes_controller.rb index 9c16a0a068..116ed1b322 100644 --- a/app/controllers/admin/themes_controller.rb +++ b/app/controllers/admin/themes_controller.rb @@ -248,7 +248,7 @@ class Admin::ThemesController < Admin::AdminController headers['Content-Length'] = File.size(file_path).to_s send_data File.read(file_path), filename: File.basename(file_path), - content_type: "application/x-gzip" + content_type: "application/zip" ensure exporter.cleanup! end From bbb814e58e3f4494c8597f5200fb250300673959 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 20 Nov 2019 15:29:06 +0000 Subject: [PATCH 224/408] FIX: Allow advanced tutorial when title emojis are disabled We already skip validations for other uses of PostCreator in the narrative bot, so this commit adds it in the `reply_to` action as well --- .../lib/discourse_narrative_bot/actions.rb | 3 ++- .../advanced_user_narrative_spec.rb | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb index 80e733ef90..7134921934 100644 --- a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb +++ b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb @@ -18,7 +18,8 @@ module DiscourseNarrativeBot raw: raw, topic_id: post.topic_id, reply_to_post_number: post.post_number, - post_alert_options: defaut_post_alert_opts + post_alert_options: defaut_post_alert_opts, + skip_validations: true } new_post = PostCreator.create!(self.discobot_user, default_opts.merge(opts)) diff --git a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb index d12311eac3..4fca6acb64 100644 --- a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb +++ b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb @@ -125,6 +125,15 @@ RSpec.describe DiscourseNarrativeBot::AdvancedUserNarrative do expect(new_post.raw).to eq(expected_raw.chomp) expect(new_post.topic.id).to_not eq(topic.id) end + + it 'should not explode if title emojis are disabled' do + SiteSetting.max_emojis_in_title = 0 + narrative.reset_bot(user, other_post) + + expect(Topic.last.title).to eq(I18n.t('discourse_narrative_bot.advanced_user_narrative.title')) + expect(new_post.topic.id).to_not eq(topic.id) + end + end end From 22e713d2b0c7b39d0cf42b778bb069d85dc63d59 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 20 Nov 2019 15:43:42 +0000 Subject: [PATCH 225/408] FIX: Add skip_validations in one more place for narrative bot plugin Followup to bbb814e58e3f4494c8597f5200fb250300673959 --- .../lib/discourse_narrative_bot/actions.rb | 3 ++- .../discourse_narrative_bot/advanced_user_narrative_spec.rb | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb index 7134921934..a1164f102f 100644 --- a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb +++ b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb @@ -28,7 +28,8 @@ module DiscourseNarrativeBot else PostCreator.create!(self.discobot_user, { post_alert_options: defaut_post_alert_opts, - raw: raw + raw: raw, + skip_validations: true }.merge(opts)) end end diff --git a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb index 4fca6acb64..d9ea4c9e2e 100644 --- a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb +++ b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/advanced_user_narrative_spec.rb @@ -131,7 +131,6 @@ RSpec.describe DiscourseNarrativeBot::AdvancedUserNarrative do narrative.reset_bot(user, other_post) expect(Topic.last.title).to eq(I18n.t('discourse_narrative_bot.advanced_user_narrative.title')) - expect(new_post.topic.id).to_not eq(topic.id) end end From e1fcbf4aef13a6d9815e259743a73cb710dcf46b Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 20 Nov 2019 15:54:09 +0000 Subject: [PATCH 226/408] DEV: Remove new_version_emails global setting reference All site settings are now shadowed by global settings, so there is no need to lookup the global setting explicitly --- app/jobs/scheduled/version_check.rb | 3 +-- config/discourse_defaults.conf | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/app/jobs/scheduled/version_check.rb b/app/jobs/scheduled/version_check.rb index d28d943d93..37eebf01f9 100644 --- a/app/jobs/scheduled/version_check.rb +++ b/app/jobs/scheduled/version_check.rb @@ -17,8 +17,7 @@ module Jobs DiscourseUpdates.updated_at = Time.zone.now DiscourseUpdates.missing_versions = json['versions'] - if GlobalSetting.new_version_emails && - SiteSetting.new_version_emails && + if SiteSetting.new_version_emails && json['missingVersionsCount'] > (0) && prev_missing_versions_count < (json['missingVersionsCount'].to_i) diff --git a/config/discourse_defaults.conf b/config/discourse_defaults.conf index 17146b1cac..7af0d3c2a3 100644 --- a/config/discourse_defaults.conf +++ b/config/discourse_defaults.conf @@ -157,11 +157,6 @@ sidekiq_workers = 5 # adjust stylesheets to rtl (requires "rtlit" gem) rtl_css = false -# notify admin when a new version of discourse is released -# this is global so it is easier to set in multisites -# TODO allow for global overrides -new_version_emails = true - # connection reaping helps keep connection counts down, postgres # will not work properly with huge numbers of open connections # reap connections from pool that are older than 30 seconds From b8e5208162576d3c8529fce525a183667b4e9a62 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 20 Nov 2019 16:39:47 +0000 Subject: [PATCH 227/408] DEV: Add convenience method to check info about a site setting This is only defined in a console environment. For example: ``` [1] pry(main)> SiteSetting.info(:title) => {:resolved_value=>"Globally Overridden Title", :default_value=>"Discourse", :global_override=>"Globally Overridden Title", :database_value=>"Test Discourse", :refresh?=>false, :client?=>true, :secret?=>false} ``` --- lib/site_setting_extension.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/site_setting_extension.rb b/lib/site_setting_extension.rb index a60c9dc7da..c19eb8814e 100644 --- a/lib/site_setting_extension.rb +++ b/lib/site_setting_extension.rb @@ -413,6 +413,22 @@ module SiteSettingExtension end end + if defined?(Rails::Console) + # Convenience method for debugging site setting issues + # Returns a hash with information about a specific setting + def info(name) + { + resolved_value: get(name), + default_value: defaults[name], + global_override: GlobalSetting.respond_to?(name) ? GlobalSetting.public_send(name) : nil, + database_value: provider.find(name)&.value, + refresh?: refresh_settings.include?(name), + client?: client_settings.include?(name), + secret?: secret_settings.include?(name), + } + end + end + protected def clear_cache! From 797045f5a9d4768f4e86901f129e8f817e1e2f07 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Wed, 20 Nov 2019 12:32:00 -0500 Subject: [PATCH 228/408] DEV: Move some autocomplete input styling to SCSS (#8381) --- app/assets/javascripts/discourse/lib/autocomplete.js.es6 | 4 +--- app/assets/stylesheets/common/base/compose.scss | 3 +++ app/assets/stylesheets/desktop/compose.scss | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/autocomplete.js.es6 b/app/assets/javascripts/discourse/lib/autocomplete.js.es6 index 9ab8dbae3b..aeb7b836a2 100644 --- a/app/assets/javascripts/discourse/lib/autocomplete.js.es6 +++ b/app/assets/javascripts/discourse/lib/autocomplete.js.es6 @@ -212,11 +212,9 @@ export default function(options) { } if (options.single && !options.width) { - this.css("width", "100%"); + this.attr("class", `${this.attr("class")} fullwidth-input`); } else if (options.width) { this.css("width", options.width); - } else { - this.width(150); } this.attr( diff --git a/app/assets/stylesheets/common/base/compose.scss b/app/assets/stylesheets/common/base/compose.scss index f6505c1b4d..7dca1ac5ea 100644 --- a/app/assets/stylesheets/common/base/compose.scss +++ b/app/assets/stylesheets/common/base/compose.scss @@ -437,6 +437,9 @@ div.ac-wrap { margin: 0; background: transparent; min-height: unset; + &.fullwidth-input { + width: 100%; + } } } diff --git a/app/assets/stylesheets/desktop/compose.scss b/app/assets/stylesheets/desktop/compose.scss index 7f4db285c2..546f35c34e 100644 --- a/app/assets/stylesheets/desktop/compose.scss +++ b/app/assets/stylesheets/desktop/compose.scss @@ -15,6 +15,10 @@ width: 404px; } + .item + #private-message-users { + width: 150px; + } + .select-kit.is-expanded { z-index: z("composer", "dropdown") + 1; } From 9799a651b6ca06dd6a6c7ec42d033ead027d9a34 Mon Sep 17 00:00:00 2001 From: Jeff Wong Date: Wed, 20 Nov 2019 11:33:41 -0800 Subject: [PATCH 229/408] FEATURE: Normalize the service worker route (#8359) * FEATURE: Normalize the service worker route Update cache headers so they are not immutable outside of the rails app Add the ability to purge the service worker cache from localhost Rails -> nginx will pass immutable flags so the file is cached until reloaded. In most cases, nginx will have its cache flushed on rebuild (new image) For those needing dynamic re-caching (such as upgrading via the UI), a rake task for flushing the service worker script is provided through `assets:flush_sw` --- app/helpers/application_helper.rb | 4 +--- config/nginx.sample.conf | 16 ++++++++++++++++ config/routes.rb | 2 +- lib/tasks/assets.rake | 13 +++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f4ef9660d6..d8b642ad8c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -456,8 +456,6 @@ module ApplicationHelper end def client_side_setup_data - service_worker_url = Rails.env.development? ? 'service-worker.js' : Rails.application.assets_manifest.assets['service-worker.js'] - setup_data = { cdn: Rails.configuration.action_controller.asset_host, base_url: Discourse.base_url, @@ -465,7 +463,7 @@ module ApplicationHelper environment: Rails.env, letter_avatar_version: LetterAvatar.version, markdown_it_url: script_asset_path('markdown-it-bundle'), - service_worker_url: service_worker_url, + service_worker_url: 'service-worker.js', default_locale: SiteSetting.default_locale, asset_version: Discourse.assets_digest, disable_custom_css: loading_admin?, diff --git a/config/nginx.sample.conf b/config/nginx.sample.conf index 538e29fab4..3bcb9c2d70 100644 --- a/config/nginx.sample.conf +++ b/config/nginx.sample.conf @@ -33,6 +33,13 @@ map $http_x_forwarded_proto $thescheme { log_format log_discourse '[$time_local] "$http_host" $remote_addr "$request" "$http_user_agent" "$sent_http_x_discourse_route" $status $bytes_sent "$http_referer" $upstream_response_time $request_time "$sent_http_x_discourse_username"'; +# Allow bypass cache from localhost +geo $bypass_cache { + default 0; + 127.0.0.1 1; + ::1 1; +} + server { access_log /var/log/nginx/access.log log_discourse; @@ -224,6 +231,15 @@ server { proxy_cache_valid 200 301 302 7d; proxy_cache_valid any 1m; proxy_pass http://discourse; + + # Allow service worker cache to be re-cached by localhost requests only + # Forward public cache control + location ~ ^/service-worker { + proxy_cache_bypass $bypass_cache; + proxy_hide_header "Cache-Control"; + add_header Cache-Control max-age=31556952,public; + proxy_pass http://discourse; + } break; } diff --git a/config/routes.rb b/config/routes.rb index eb1bab0212..1f2a1015f9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -810,7 +810,7 @@ Discourse::Application.routes.draw do # current site before updating to a new Service Worker. # Support the old Service Worker path to avoid routing error filling up the # logs. - get "/service-worker.js" => redirect(relative_url_root + service_worker_asset, status: 302), format: :js + get "/service-worker.js" => "static#service_worker_asset", format: :js get service_worker_asset => "static#service_worker_asset", format: :js elsif Rails.env.development? get "/service-worker.js" => "static#service_worker_asset", format: :js diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index 7625fece58..cb2e9795f6 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -68,6 +68,19 @@ task 'assets:precompile:css' => 'environment' do end end +task 'assets:flush_sw' => 'environment' do + begin + hostname = Discourse.current_hostname + default_port = SiteSetting.force_https? ? 443 : 80 + port = SiteSetting.port.to_i > 0 ? SiteSetting.port : default_port + STDERR.puts "Flushing service worker script" + `curl -s -m 1 --resolve '#{hostname}:#{port}:127.0.0.1' #{Discourse.base_url}/service-worker.js > /dev/null` + STDERR.puts "done" + rescue + STDERR.puts "Warning: unable to flush service worker script" + end +end + def assets_path "#{Rails.root}/public/assets" end From d7ae052efebf0645f48484c4cd8331c6b094d46a Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 20 Nov 2019 15:18:37 -0500 Subject: [PATCH 230/408] DEV: Don't allow `Promise` unless imported from `"rsvp"` We want to make sure we are using the correct promise implementation so let's lint out the browser version. --- app/assets/javascripts/discourse-loader.js | 1 + app/assets/javascripts/discourse/lib/eyeline.js.es6 | 3 ++- .../javascripts/discourse/routes/application.js.es6 | 3 ++- app/assets/javascripts/discourse/routes/topic.js.es6 | 3 ++- package.json | 2 +- test/javascripts/models/post-stream-test.js.es6 | 7 ++++--- yarn.lock | 8 ++++---- 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index 694977cf76..b238611944 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -84,6 +84,7 @@ var define, requirejs; }, rsvp: { default: Ember.RSVP, + EventTarget: Ember.RSVP, Promise: Ember.RSVP.Promise, hash: Ember.RSVP.hash, all: Ember.RSVP.all diff --git a/app/assets/javascripts/discourse/lib/eyeline.js.es6 b/app/assets/javascripts/discourse/lib/eyeline.js.es6 index 03c8092cc5..779c5a574a 100644 --- a/app/assets/javascripts/discourse/lib/eyeline.js.es6 +++ b/app/assets/javascripts/discourse/lib/eyeline.js.es6 @@ -1,4 +1,5 @@ import ENV from "discourse-common/config/environment"; +import { EventTarget } from "rsvp"; // Track visible elemnts on the screen. const Eyeline = function Eyeline(selector) { @@ -70,6 +71,6 @@ Eyeline.prototype.flushRest = function() { $(this.selector).each((i, elem) => this.trigger("saw", { detail: $(elem) })); }; -RSVP.EventTarget.mixin(Eyeline.prototype); +EventTarget.mixin(Eyeline.prototype); export default Eyeline; diff --git a/app/assets/javascripts/discourse/routes/application.js.es6 b/app/assets/javascripts/discourse/routes/application.js.es6 index cb1e5f0406..9a3fafba36 100644 --- a/app/assets/javascripts/discourse/routes/application.js.es6 +++ b/app/assets/javascripts/discourse/routes/application.js.es6 @@ -12,6 +12,7 @@ import { findAll } from "discourse/models/login-method"; import { getOwner } from "discourse-common/lib/get-owner"; import { userPath } from "discourse/lib/url"; import Composer from "discourse/models/composer"; +import { EventTarget } from "rsvp"; function unlessReadOnly(method, message) { return function() { @@ -288,5 +289,5 @@ const ApplicationRoute = DiscourseRoute.extend(OpenComposer, { } }); -RSVP.EventTarget.mixin(ApplicationRoute); +EventTarget.mixin(ApplicationRoute); export default ApplicationRoute; diff --git a/app/assets/javascripts/discourse/routes/topic.js.es6 b/app/assets/javascripts/discourse/routes/topic.js.es6 index a6f3eba69a..d4c22f9b3e 100644 --- a/app/assets/javascripts/discourse/routes/topic.js.es6 +++ b/app/assets/javascripts/discourse/routes/topic.js.es6 @@ -6,6 +6,7 @@ import { later } from "@ember/runloop"; import DiscourseRoute from "discourse/routes/discourse"; import DiscourseURL from "discourse/lib/url"; import { ID_CONSTRAINT } from "discourse/models/topic"; +import { EventTarget } from "rsvp"; let isTransitioning = false, scheduledReplace = null, @@ -313,5 +314,5 @@ const TopicRoute = DiscourseRoute.extend({ } }); -RSVP.EventTarget.mixin(TopicRoute); +EventTarget.mixin(TopicRoute); export default TopicRoute; diff --git a/package.json b/package.json index 3d456d7ab2..3e98bd0807 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "chrome-launcher": "^0.12.0", "chrome-remote-interface": "^0.25", "eslint": "^4.19", - "eslint-config-discourse": "1.0.6", + "eslint-config-discourse": "1.0.7", "install-peerdeps": "^1.10.2", "lodash-cli": "https://github.com/lodash-archive/lodash-cli.git", "pretender": "^1.6", diff --git a/test/javascripts/models/post-stream-test.js.es6 b/test/javascripts/models/post-stream-test.js.es6 index 40b5f87af5..2276014241 100644 --- a/test/javascripts/models/post-stream-test.js.es6 +++ b/test/javascripts/models/post-stream-test.js.es6 @@ -1,6 +1,7 @@ import Post from "discourse/models/post"; import createStore from "helpers/create-store"; import User from "discourse/models/user"; +import { Promise } from "rsvp"; QUnit.module("model:post-stream"); @@ -208,7 +209,7 @@ QUnit.test("removePosts", assert => { QUnit.test("cancelFilter", assert => { const postStream = buildStream(1235); - sandbox.stub(postStream, "refresh").returns(new Ember.RSVP.resolve()); + sandbox.stub(postStream, "refresh").returns(Promise.resolve()); postStream.set("summary", true); postStream.cancelFilter(); @@ -246,7 +247,7 @@ QUnit.test("findPostIdForPostNumber", assert => { QUnit.test("toggleParticipant", assert => { const postStream = buildStream(1236); - sandbox.stub(postStream, "refresh").returns(new Ember.RSVP.resolve()); + sandbox.stub(postStream, "refresh").returns(Promise.resolve()); assert.equal( postStream.get("userFilters.length"), @@ -269,7 +270,7 @@ QUnit.test("toggleParticipant", assert => { QUnit.test("streamFilters", assert => { const postStream = buildStream(1237); - sandbox.stub(postStream, "refresh").returns(new Ember.RSVP.resolve()); + sandbox.stub(postStream, "refresh").returns(Promise.resolve()); assert.deepEqual( postStream.get("streamFilters"), diff --git a/yarn.lock b/yarn.lock index cb8752c0d3..fd0c8fe8eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -886,10 +886,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-discourse@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.6.tgz#cfd23c7d7b92ca9c416cbc30272be197a823cbe3" - integrity sha512-JOTncJzusPnYC97rXRQLewk5CxToL31spw7dzDbVk9XkZpnmRenbWmRawW2OEkbbXow3AdcKj/ousmo9PttwbA== +eslint-config-discourse@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.7.tgz#6e4a67fee63b7eb0f97c14fbf67d6fc5f84896bb" + integrity sha512-KPP/sfGWAfn7Wnx/lP9x6eMCmC2ag42NK5Dgj5EsOypQGe1Ct4KA2z0fEGuIqGxDoh5xEZB2Nf6qD/lv0gRg7w== eslint-scope@3.7.1: version "3.7.1" From 947416004ff3e84f0d99b2334c3f98ca352f0551 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 20 Nov 2019 15:51:42 -0500 Subject: [PATCH 231/408] FIX: EventTarget error --- app/assets/javascripts/discourse-loader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index b238611944..df386f8273 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -84,7 +84,7 @@ var define, requirejs; }, rsvp: { default: Ember.RSVP, - EventTarget: Ember.RSVP, + EventTarget: Ember.RSVP.EventTarget, Promise: Ember.RSVP.Promise, hash: Ember.RSVP.hash, all: Ember.RSVP.all From 457986d52ad47fd362a5b6464f1781173c7248bb Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 20 Nov 2019 16:06:39 -0500 Subject: [PATCH 232/408] REVERT: Use 1.0.6 for linting for now Plugins have not been updated and our build fails. --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3e98bd0807..3d456d7ab2 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "chrome-launcher": "^0.12.0", "chrome-remote-interface": "^0.25", "eslint": "^4.19", - "eslint-config-discourse": "1.0.7", + "eslint-config-discourse": "1.0.6", "install-peerdeps": "^1.10.2", "lodash-cli": "https://github.com/lodash-archive/lodash-cli.git", "pretender": "^1.6", diff --git a/yarn.lock b/yarn.lock index fd0c8fe8eb..cb8752c0d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -886,10 +886,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-discourse@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.7.tgz#6e4a67fee63b7eb0f97c14fbf67d6fc5f84896bb" - integrity sha512-KPP/sfGWAfn7Wnx/lP9x6eMCmC2ag42NK5Dgj5EsOypQGe1Ct4KA2z0fEGuIqGxDoh5xEZB2Nf6qD/lv0gRg7w== +eslint-config-discourse@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.6.tgz#cfd23c7d7b92ca9c416cbc30272be197a823cbe3" + integrity sha512-JOTncJzusPnYC97rXRQLewk5CxToL31spw7dzDbVk9XkZpnmRenbWmRawW2OEkbbXow3AdcKj/ousmo9PttwbA== eslint-scope@3.7.1: version "3.7.1" From 0b284d3d8b46a70942b87739b070de5c4370bb18 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Wed, 20 Nov 2019 16:24:42 -0500 Subject: [PATCH 233/408] DEV: Use specific version of eslint-config-discourse when installing peer dependencies --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d456d7ab2..80e43683e1 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,6 @@ }, "scripts": { "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('NPM is not supported, please use Yarn instead. ')\"", - "postinstall": "install-peerdeps --dev eslint-config-discourse -Y --extra-args \"--ignore-scripts\"" + "postinstall": "install-peerdeps --dev eslint-config-discourse@1.0.6 -Y --extra-args \"--ignore-scripts\"" } } From c6d8dbd4a9c7c2132b4059335cede47dbad53404 Mon Sep 17 00:00:00 2001 From: Jeff Wong Date: Wed, 20 Nov 2019 14:10:17 -0800 Subject: [PATCH 234/408] Revert "FEATURE: Normalize the service worker route (#8359)" This reverts commit 9799a651b6ca06dd6a6c7ec42d033ead027d9a34. --- app/helpers/application_helper.rb | 4 +++- config/nginx.sample.conf | 16 ---------------- config/routes.rb | 2 +- lib/tasks/assets.rake | 13 ------------- 4 files changed, 4 insertions(+), 31 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d8b642ad8c..f4ef9660d6 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -456,6 +456,8 @@ module ApplicationHelper end def client_side_setup_data + service_worker_url = Rails.env.development? ? 'service-worker.js' : Rails.application.assets_manifest.assets['service-worker.js'] + setup_data = { cdn: Rails.configuration.action_controller.asset_host, base_url: Discourse.base_url, @@ -463,7 +465,7 @@ module ApplicationHelper environment: Rails.env, letter_avatar_version: LetterAvatar.version, markdown_it_url: script_asset_path('markdown-it-bundle'), - service_worker_url: 'service-worker.js', + service_worker_url: service_worker_url, default_locale: SiteSetting.default_locale, asset_version: Discourse.assets_digest, disable_custom_css: loading_admin?, diff --git a/config/nginx.sample.conf b/config/nginx.sample.conf index 3bcb9c2d70..538e29fab4 100644 --- a/config/nginx.sample.conf +++ b/config/nginx.sample.conf @@ -33,13 +33,6 @@ map $http_x_forwarded_proto $thescheme { log_format log_discourse '[$time_local] "$http_host" $remote_addr "$request" "$http_user_agent" "$sent_http_x_discourse_route" $status $bytes_sent "$http_referer" $upstream_response_time $request_time "$sent_http_x_discourse_username"'; -# Allow bypass cache from localhost -geo $bypass_cache { - default 0; - 127.0.0.1 1; - ::1 1; -} - server { access_log /var/log/nginx/access.log log_discourse; @@ -231,15 +224,6 @@ server { proxy_cache_valid 200 301 302 7d; proxy_cache_valid any 1m; proxy_pass http://discourse; - - # Allow service worker cache to be re-cached by localhost requests only - # Forward public cache control - location ~ ^/service-worker { - proxy_cache_bypass $bypass_cache; - proxy_hide_header "Cache-Control"; - add_header Cache-Control max-age=31556952,public; - proxy_pass http://discourse; - } break; } diff --git a/config/routes.rb b/config/routes.rb index 1f2a1015f9..eb1bab0212 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -810,7 +810,7 @@ Discourse::Application.routes.draw do # current site before updating to a new Service Worker. # Support the old Service Worker path to avoid routing error filling up the # logs. - get "/service-worker.js" => "static#service_worker_asset", format: :js + get "/service-worker.js" => redirect(relative_url_root + service_worker_asset, status: 302), format: :js get service_worker_asset => "static#service_worker_asset", format: :js elsif Rails.env.development? get "/service-worker.js" => "static#service_worker_asset", format: :js diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index cb2e9795f6..7625fece58 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -68,19 +68,6 @@ task 'assets:precompile:css' => 'environment' do end end -task 'assets:flush_sw' => 'environment' do - begin - hostname = Discourse.current_hostname - default_port = SiteSetting.force_https? ? 443 : 80 - port = SiteSetting.port.to_i > 0 ? SiteSetting.port : default_port - STDERR.puts "Flushing service worker script" - `curl -s -m 1 --resolve '#{hostname}:#{port}:127.0.0.1' #{Discourse.base_url}/service-worker.js > /dev/null` - STDERR.puts "done" - rescue - STDERR.puts "Warning: unable to flush service worker script" - end -end - def assets_path "#{Rails.root}/public/assets" end From 09579bffbebd500f231d8d3ccb343c63142b3222 Mon Sep 17 00:00:00 2001 From: Kris Date: Wed, 20 Nov 2019 23:44:10 -0500 Subject: [PATCH 235/408] UX: More obvious alt auth link --- app/assets/stylesheets/common/base/login.scss | 17 +++++++++++++++++ config/locales/client.en.yml | 2 +- config/locales/server.en.yml | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/common/base/login.scss b/app/assets/stylesheets/common/base/login.scss index 00beeeccd6..2a2fb7a7d0 100644 --- a/app/assets/stylesheets/common/base/login.scss +++ b/app/assets/stylesheets/common/base/login.scss @@ -168,3 +168,20 @@ button#new-account-link { background: transparent; color: $primary-high; } + +#security-key { + display: flex; + flex-wrap: wrap; + align-items: center; + button { + margin-right: 1.5em; + } + p { + margin: 0; + font-size: $font-0; + } + a { + padding: 0.5em 0.5em 0.5em 0; + color: $tertiary; + } +} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index d9c5d17f33..5deaca25d5 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1461,7 +1461,7 @@ en: second_factor_backup_description: "Please enter one of your backup codes:" second_factor: "Log in using Authenticator app" security_key_description: "When you have your physical security key prepared press the Authenticate with Security Key button below." - security_key_alternative: "Can't find your security key or want to use another method?" + security_key_alternative: "Try another way" security_key_authenticate: "Authenticate with Security Key" security_key_not_allowed_error: "The security key authentication process either timed out or was cancelled." security_key_no_matching_credential_error: "No matching credentials could be found in the provided security key." diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 73eb81b5e9..acfd572e8d 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2285,7 +2285,7 @@ en: login: security_key_description: "When you have your physical security key prepared press the Authenticate with Security Key button below." - security_key_alternative: "Can't find your security key or want to use another method?" + security_key_alternative: "Try another way" security_key_authenticate: "Authenticate with Security Key" security_key_not_allowed_error: "The security key authentication process either timed out or was cancelled." security_key_no_matching_credential_error: "No matching credentials could be found in the provided security key." From 423ad5f0a488411d2f65585fe5921242d9cb0285 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 21 Nov 2019 15:51:18 +1100 Subject: [PATCH 236/408] FIX: do not log if an invalid mime type is passed to app Previously our custom exception handler was unable to handle situations where an invalid mime type was sent, resulting in a warning log This ensures we pretend a request is HTML for the purpose of rendering the error page if an invalid mime type from a scanner is shipped to the app --- lib/middleware/discourse_public_exceptions.rb | 10 +++++- .../discourse_public_exceptions_spec.rb | 35 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 spec/components/middleware/discourse_public_exceptions_spec.rb diff --git a/lib/middleware/discourse_public_exceptions.rb b/lib/middleware/discourse_public_exceptions.rb index ffc281d85a..c40f319a3a 100644 --- a/lib/middleware/discourse_public_exceptions.rb +++ b/lib/middleware/discourse_public_exceptions.rb @@ -29,7 +29,15 @@ module Middleware begin fake_controller = ApplicationController.new fake_controller.response = response - fake_controller.request = ActionDispatch::Request.new(env) + fake_controller.request = request = ActionDispatch::Request.new(env) + + begin + request.format + rescue Mime::Type::InvalidMimeType + # got to do something here, we can not ship invalid format + # to the exception handler cause it will explode + request.format = "html" + end if ApplicationController.rescue_with_handler(exception, object: fake_controller) body = response.body diff --git a/spec/components/middleware/discourse_public_exceptions_spec.rb b/spec/components/middleware/discourse_public_exceptions_spec.rb new file mode 100644 index 0000000000..ac1a0cc6ce --- /dev/null +++ b/spec/components/middleware/discourse_public_exceptions_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require "rails_helper" + +describe Middleware::DiscoursePublicExceptions do + before do + @orig_logger = Rails.logger + Rails.logger = @fake_logger = FakeLogger.new + end + + after do + Rails.logger = @orig_logger + end + + def env(opts = {}) + { + "HTTP_HOST" => "http://test.com", + "REQUEST_URI" => "/path?bla=1", + "REQUEST_METHOD" => "GET", + "rack.input" => "" + }.merge(opts) + end + + it "should not log for invalid mime type requests" do + ex = Middleware::DiscoursePublicExceptions.new("/test") + + ex.call(env( + "HTTP_ACCEPT" => "../broken../", + "action_dispatch.exception" => ActionController::RoutingError.new("abc") + )) + + expect(@fake_logger.warnings.length).to eq(0) + end + +end From b57e108e84547d540fc172053520a74f151b48b7 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 20 Nov 2019 18:31:25 +1100 Subject: [PATCH 237/408] FEATURE: improve email change workflow - Show old and new email address during the process - Ensure correct user is logged on when attempting to make email changes - Support reloading a page during the email reset process without resubmit of form - Improve tests - Fixed issue where redirect back to site was not linking correctly in subfolder setups Internal refactor of single action into 4 distinct actions that are simpler to reason about. This also removes the step that logs on an account after you confirm an email change, since it is no longer needed which leaves us with safer internals. This left me no choice but to amend translations cause the old route was removed. --- app/controllers/application_controller.rb | 39 ++-- app/controllers/users_email_controller.rb | 169 +++++++++++++++--- app/views/users_email/confirm.html.erb | 47 ----- .../show_confirm_new_email.html.erb | 51 ++++++ .../show_confirm_old_email.html.erb | 27 +++ config/locales/server.ar.yml | 4 +- config/locales/server.ca.yml | 4 +- config/locales/server.de.yml | 4 +- config/locales/server.el.yml | 4 +- config/locales/server.en.yml | 19 +- config/locales/server.es.yml | 4 +- config/locales/server.fa_IR.yml | 4 +- config/locales/server.fi.yml | 4 +- config/locales/server.fr.yml | 4 +- config/locales/server.he.yml | 4 +- config/locales/server.hy.yml | 2 +- config/locales/server.it.yml | 4 +- config/locales/server.ja.yml | 2 +- config/locales/server.pl_PL.yml | 4 +- config/locales/server.pt_BR.yml | 4 +- config/locales/server.ru.yml | 4 +- config/locales/server.sl.yml | 4 +- config/locales/server.sq.yml | 2 +- config/locales/server.uk.yml | 2 +- config/locales/server.ur.yml | 4 +- config/locales/server.zh_CN.yml | 4 +- config/locales/server.zh_TW.yml | 4 +- config/routes.rb | 9 +- spec/requests/users_email_controller_spec.rb | 157 ++++++++++------ 29 files changed, 409 insertions(+), 185 deletions(-) delete mode 100644 app/views/users_email/confirm.html.erb create mode 100644 app/views/users_email/show_confirm_new_email.html.erb create mode 100644 app/views/users_email/show_confirm_old_email.html.erb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d0924e76e3..592a80cdfc 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -687,6 +687,25 @@ class ApplicationController < ActionController::Base request.original_url unless request.original_url =~ /uploads/ end + def redirect_to_login + dont_cache_page + + if SiteSetting.enable_sso? + # save original URL in a session so we can redirect after login + session[:destination_url] = destination_url + redirect_to path('/session/sso') + elsif !SiteSetting.enable_local_logins && Discourse.enabled_authenticators.length == 1 && !cookies[:authentication_data] + # Only one authentication provider, direct straight to it. + # If authentication_data is present, then we are halfway though registration. Don't redirect offsite + cookies[:destination_url] = destination_url + redirect_to path("/auth/#{Discourse.enabled_authenticators.first.name}") + else + # save original URL in a cookie (javascript redirects after login in this case) + cookies[:destination_url] = destination_url + redirect_to path("/login") + end + end + def redirect_to_login_if_required return if request.format.json? && is_api? @@ -715,24 +734,8 @@ class ApplicationController < ActionController::Base if !current_user && SiteSetting.login_required? flash.keep - dont_cache_page - - if SiteSetting.enable_sso? - # save original URL in a session so we can redirect after login - session[:destination_url] = destination_url - redirect_to path('/session/sso') - return - elsif !SiteSetting.enable_local_logins && Discourse.enabled_authenticators.length == 1 && !cookies[:authentication_data] - # Only one authentication provider, direct straight to it. - # If authentication_data is present, then we are halfway though registration. Don't redirect offsite - cookies[:destination_url] = destination_url - redirect_to path("/auth/#{Discourse.enabled_authenticators.first.name}") - else - # save original URL in a cookie (javascript redirects after login in this case) - cookies[:destination_url] = destination_url - redirect_to path("/login") - return - end + redirect_to_login + return end check_totp = current_user && diff --git a/app/controllers/users_email_controller.rb b/app/controllers/users_email_controller.rb index f74f60a94a..aaead3bf62 100644 --- a/app/controllers/users_email_controller.rb +++ b/app/controllers/users_email_controller.rb @@ -4,8 +4,26 @@ class UsersEmailController < ApplicationController requires_login only: [:index, :update] - skip_before_action :check_xhr, only: [:confirm] - skip_before_action :redirect_to_login_if_required, only: [:confirm] + skip_before_action :check_xhr, only: [ + :confirm_old_email, + :show_confirm_old_email, + :confirm_new_email, + :show_confirm_new_email + ] + + skip_before_action :redirect_to_login_if_required, only: [ + :confirm_old_email, + :show_confirm_old_email, + :confirm_new_email, + :show_confirm_new_email + ] + + before_action :require_login, only: [ + :confirm_old_email, + :show_confirm_old_email, + :confirm_new_email, + :show_confirm_new_email + ] def index end @@ -29,38 +47,141 @@ class UsersEmailController < ApplicationController render_json_error(I18n.t("rate_limiter.slow_down")) end - def confirm - expires_now + def confirm_new_email + load_change_request(:new) - token = EmailToken.confirmable(params[:token]) - user = token&.user + if @change_request&.change_state != EmailChangeRequest.states[:authorizing_new] + @error = I18n.t("change_email.already_done") + end - change_request = - if user - user.email_change_requests.where(new_email_token_id: token.id).first - end + redirect_url = path("/u/confirm-new-email/#{params[:token]}") - if change_request&.change_state == EmailChangeRequest.states[:authorizing_new] && - user.totp_enabled? && !user.authenticate_second_factor(params[:second_factor_token], params[:second_factor_method].to_i) + if !@error && @user.totp_enabled? && !@user.authenticate_second_factor(params[:second_factor_token], params[:second_factor_method].to_i) + RateLimiter.new(nil, "second-factor-min-#{request.remote_ip}", 3, 1.minute).performed! + flash[:invalid_second_factor] = true + redirect_to redirect_url + return + end - @update_result = :invalid_second_factor - @backup_codes_enabled = true if user.backup_codes_enabled? - - if params[:second_factor_token].present? - RateLimiter.new(nil, "second-factor-min-#{request.remote_ip}", 3, 1.minute).performed! - @show_invalid_second_factor_error = true - end - else + if !@error updater = EmailUpdater.new - @update_result = updater.confirm(params[:token]) - - if @update_result == :complete + if updater.confirm(params[:token]) == :complete updater.user.user_stat.reset_bounce_score! - log_on_user(updater.user) + else + @error = I18n.t("change_email.already_done") end end + if @error + flash[:error] = @error + redirect_to redirect_url + else + redirect_to "#{redirect_url}?done=true" + end + end + + def show_confirm_new_email + load_change_request(:new) + + if params[:done].to_s == "true" + @done = true + end + + if @change_request&.change_state != EmailChangeRequest.states[:authorizing_new] + @error = I18n.t("change_email.already_done") + end + + @show_invalid_second_factor_error = flash[:invalid_second_factor] + + if !@error + if @user.totp_enabled? + @backup_codes_enabled = @user.backup_codes_enabled? + if params[:show_backup].to_s == "true" && @backup_codes_enabled + @show_backup_codes = true + else + @show_second_factor = true + end + end + + @to_email = @change_request.new_email + end + render layout: 'no_ember' end + def confirm_old_email + load_change_request(:old) + + if @change_request&.change_state != EmailChangeRequest.states[:authorizing_old] + @error = I18n.t("change_email.already_done") + end + + redirect_url = path("/u/confirm-old-email/#{params[:token]}") + + if !@error + updater = EmailUpdater.new + if updater.confirm(params[:token]) != :authorizing_new + @error = I18n.t("change_email.already_done") + end + end + + if @error + flash[:error] = @error + redirect_to redirect_url + else + redirect_to "#{redirect_url}?done=true" + end + end + + def show_confirm_old_email + load_change_request(:old) + + if @change_request&.change_state != EmailChangeRequest.states[:authorizing_old] + @error = I18n.t("change_email.already_done") + end + + if params[:done].to_s == "true" + @almost_done = true + end + + if !@error + @from_email = @user.email + @to_email = @change_request.new_email + end + + render layout: 'no_ember' + end + + private + + def load_change_request(type) + expires_now + + @token = EmailToken.confirmable(params[:token]) + + if @token + if type == :old + @change_request = @token.user&.email_change_requests.where(old_email_token_id: @token.id).first + elsif type == :new + @change_request = @token.user&.email_change_requests.where(new_email_token_id: @token.id).first + end + end + + @user = @token&.user + + if (!@user || !@change_request) + @error = I18n.t("change_email.already_done") + end + + if current_user.id != @user&.id + @error = I18n.t 'change_email.wrong_account_error' + end + end + + def require_login + if !current_user + redirect_to_login + end + end + end diff --git a/app/views/users_email/confirm.html.erb b/app/views/users_email/confirm.html.erb deleted file mode 100644 index 69d63eecce..0000000000 --- a/app/views/users_email/confirm.html.erb +++ /dev/null @@ -1,47 +0,0 @@ -
- <% if @update_result == :authorizing_new %> -

<%= t 'change_email.authorizing_old.title' %>

-
-

<%= t 'change_email.authorizing_old.description' %>

- <% elsif @update_result == :complete %> -

<%= t 'change_email.confirmed' %>

-
- <%= t('change_email.please_continue', site_name: SiteSetting.title) %> - <% elsif @update_result == :invalid_second_factor%> - <% if !params[:show_backup] || params[:show_backup] == "false" %> -
-

<%= t('login.second_factor_title') %>

-
- <%=form_tag({}, method: :put) do %> - <%= label_tag(:second_factor_token, t('login.second_factor_description')) %> -
<%= render 'common/second_factor_text_field' %>
- <% if @show_invalid_second_factor_error %> -
<%= t('login.invalid_second_factor_code') %>
- <% end %> - <%= submit_tag t('submit'), class: "btn btn-primary" %> - <% end %> -
- <% if @backup_codes_enabled %> - <%= link_to t("login.second_factor_toggle.backup_code"), show_backup: "true" %> - <% end %> - <% end %> - - <% if @backup_codes_enabled && params[:show_backup] == "true" %> -
-

<%= t('login.second_factor_backup_title') %>

-
- <%= form_tag({}, method: :put) do%> - <%= label_tag(:second_factor_token, t("login.second_factor_backup_description")) %> -
<%= render 'common/second_factor_backup_input' %>
- <%= submit_tag(t("submit"), class: "btn btn-primary") %> - <%end%> - -
- <%= link_to t("login.second_factor_toggle.totp"), show_backup: "false" %> - <%end%> - <% else %> -
- <%=t 'change_email.already_done' %> -
- <% end %> -
diff --git a/app/views/users_email/show_confirm_new_email.html.erb b/app/views/users_email/show_confirm_new_email.html.erb new file mode 100644 index 0000000000..fe14cf53df --- /dev/null +++ b/app/views/users_email/show_confirm_new_email.html.erb @@ -0,0 +1,51 @@ +
+ <% if @done %> +

+ <%= t 'change_email.confirmed' %> +

+

+ "><%= t('change_email.please_continue', site_name: SiteSetting.title) %> +

+ <% elsif @error %> +
+ <%= @error %> +
+ <% else %> +

<%= t 'change_email.authorizing_new.title' %>

+

+ <%= t 'change_email.authorizing_new.description' %> +

+

+ <%= @to_email %> +

+ + <%=form_tag(u_confirm_new_email_path, method: :put) do %> + <%= hidden_field_tag 'token', @token.token %> + + <% if @show_backup_codes %> +
+

<%= t('login.second_factor_backup_title') %>

+ <%= label_tag(:second_factor_token, t("login.second_factor_backup_description")) %> +
<%= render 'common/second_factor_backup_input' %>
+ <%= submit_tag(t("submit"), class: "btn btn-primary") %> +
+ <%= link_to t("login.second_factor_toggle.totp"), show_backup: "false" %> + <% elsif @show_second_factor %> +
+

<%= t('login.second_factor_title') %>

+ <%= label_tag(:second_factor_token, t('login.second_factor_description')) %> +
<%= render 'common/second_factor_text_field' %>
+ <% if @show_invalid_second_factor_error %> +
<%= t('login.invalid_second_factor_code') %>
+ <% end %> + <%= submit_tag t('submit'), class: "btn btn-primary" %> +
+ <% if @backup_codes_enabled %> + <%= link_to t("login.second_factor_toggle.backup_code"), show_backup: "true" %> + <% end %> + <% else %> + <%= submit_tag t('change_email.confirm'), class: "btn btn-primary" %> + <% end %> + <%end%> + <% end%> +
diff --git a/app/views/users_email/show_confirm_old_email.html.erb b/app/views/users_email/show_confirm_old_email.html.erb new file mode 100644 index 0000000000..6d81093186 --- /dev/null +++ b/app/views/users_email/show_confirm_old_email.html.erb @@ -0,0 +1,27 @@ +
+ <% if @almost_done %> +

<%= t 'change_email.authorizing_old.almost_done_title' %>

+

+ <%= t 'change_email.authorizing_old.almost_done_description' %> +

+ <% elsif @error %> +
+ <%= @error %> +
+ <% else %> +

<%= t 'change_email.authorizing_old.title' %>

+

+ <%= t 'change_email.authorizing_old.description' %> +
+
+ <%= t 'change_email.authorizing_old.old_email', email: @from_email %> +
+ <%= t 'change_email.authorizing_old.new_email', email: @to_email %> +

+ + <%=form_tag(u_confirm_old_email_path, method: :put) do %> + <%= hidden_field_tag 'token', @token.token %> + <%= submit_tag t('change_email.confirm'), class: "btn btn-primary" %> + <% end %> + <% end %> +
diff --git a/config/locales/server.ar.yml b/config/locales/server.ar.yml index f2adf79e85..ac62eb1e1d 100644 --- a/config/locales/server.ar.yml +++ b/config/locales/server.ar.yml @@ -1456,7 +1456,7 @@ ar: text_body_template: | أكد عنوان بريدك الإلكتروني لـ %{site_name} بالضغط على الرابط التالي : - %{email_token}/u/authorize-email/%{base_url} + %{email_token}/u/confirm-new-email/%{base_url} confirm_old_email: subject_template: "أكّد عنوان بريد الإلكتروني الحالي %{email_prefix}" text_body_template: | @@ -1466,7 +1466,7 @@ ar: أكّد عنوان بريدك الإلكتروني الحالي لـ %{site_name} بالضغط على الرابط التالي : - %{email_token}/u/authorize-email/%{base_url} + %{email_token}/u/confirm-old-email/%{base_url} notify_old_email: subject_template: "عنوان بريد الإلكتروني تم تغييرة %{email_prefix}" signup_after_approval: diff --git a/config/locales/server.ca.yml b/config/locales/server.ca.yml index 449d71503c..b33c23a523 100644 --- a/config/locales/server.ca.yml +++ b/config/locales/server.ca.yml @@ -2745,7 +2745,7 @@ ca: text_body_template: | Confirmeu la vostra nova adreça de correu per a %{site_name} fent clic en l'enllaç següent: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Confirmeu l'adreça de correu antiga" subject_template: "[%{email_prefix}] Confirmeu la vostra adreça de correu actual" @@ -2756,7 +2756,7 @@ ca: Confirmeu la vostra adreça actual per a %{site_name} fent clic en l'enllaç següent: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Notifica l'adreça de correu antiga" subject_template: "[%{email_prefix}] La vostra adreça de correu ha canviat" diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index b08f8f1974..13f4b63a4a 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -3019,7 +3019,7 @@ de: text_body_template: | Bestätige deine neue E-Mail-Adresse für %{site_name}, indem du dem diesem Link folgst: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "E-Mail-Adresse bestätigen (an alte)" subject_template: "[%{email_prefix}] Bestätige deine aktuelle E-Mail-Adresse" @@ -3028,7 +3028,7 @@ de: Bestätige deine aktuelle E-Mail-Adresse für %{site_name}, indem du diesem Link folgst: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Benachrichtigung an alte E-Mail-Adresse" subject_template: "[%{email_prefix}] Deine E-Mail-Adresse wurde geändert" diff --git a/config/locales/server.el.yml b/config/locales/server.el.yml index 0e57b3621e..7c18fa0069 100644 --- a/config/locales/server.el.yml +++ b/config/locales/server.el.yml @@ -2084,7 +2084,7 @@ el: Επικυρώστε την νέα σας διεύθυνση email στην %{site_name} κάνοντας κλικ στον παρακάτω σύνδεσμο: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Επιβεβαίωση παλιάς διεύθυνσης email" subject_template: "[%{email_prefix}] Επικυρώστε την νέα σας διεύθυνση email" @@ -2098,7 +2098,7 @@ el: Επιβεβαιώστε την τρέχουσα διεύθυνση email στην%{site_name} κάνοντας κλικ στον παρακάτω σύνδεσμο: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Ειδοποίηση παλιάς διεύθυνσης email" subject_template: "[%{email_prefix}] Η διεύθυνση email σας έχει αλλαχθεί" diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index acfd572e8d..c93fb0cb28 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -805,14 +805,25 @@ en: unknown: "unknown operating system" change_email: + wrong_account_error: "You are logged in the wrong account, please log out and try again." confirmed: "Your email has been updated." please_continue: "Continue to %{site_name}" error: "There was an error changing your email address. Perhaps the address is already in use?" error_staged: "There was an error changing your email address. The address is already in use by a staged user." already_done: "Sorry, this confirmation link is no longer valid. Perhaps your email was already changed?" + confirm: "Confirm" + + authorizing_new: + title: "Confirm your new email" + description: "Please confirm you would like your new email address changed to:" + authorizing_old: - title: "Thanks for confirming your current email address" - description: "We're now emailing your new address for confirmation." + title: "Change your email address" + description: "Please confirm your email address change" + old_email: "Old email: %{email}" + new_email: "New email: %{email}" + almost_done_title: "Confirming new email address" + almost_done_description: "We have sent an email to your new email address to confirm the change!" associated_accounts: revoke_failed: "Failed to revoke your account with %{provider_name}." @@ -3545,7 +3556,7 @@ en: text_body_template: | Confirm your new email address for %{site_name} by clicking on the following link: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Confirm Old Email" @@ -3557,7 +3568,7 @@ en: Confirm your current email address for %{site_name} by clicking on the following link: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Notify Old Email" diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml index 2d8687676e..7c2ed25033 100644 --- a/config/locales/server.es.yml +++ b/config/locales/server.es.yml @@ -3144,7 +3144,7 @@ es: text_body_template: | Confirma tu nueva dirección de correo electrónico para %{site_name} haciendo clic en el siguiente enlace: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Confirmar correo electrónico antiguo" subject_template: "[%{email_prefix}] Confirma tu dirección actual de correo electrónico" @@ -3155,7 +3155,7 @@ es: Confirma tu correo electrónico actual para %{site_name} haciendo clic en el siguiente enlace: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} notify_old_email: title: "Antiguo correo electrónico de notificaciones" subject_template: "[%{email_prefix}] Tu dirección de correo electrónico ha sido cambiada" diff --git a/config/locales/server.fa_IR.yml b/config/locales/server.fa_IR.yml index 4179077907..354e22fed2 100644 --- a/config/locales/server.fa_IR.yml +++ b/config/locales/server.fa_IR.yml @@ -1896,7 +1896,7 @@ fa_IR: text_body_template: | ایمیل جدید خود را برای %{site_name} با کلیک روی لینک زیر تایید کنید: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "تایید ایمیل قبلی" subject_template: "[%{email_prefix}] ایمیل فعلی خود را تایید کنید" @@ -1907,7 +1907,7 @@ fa_IR: ایمیل فعلی خود در سایت %{site_name} را با کلیکل روی لینک زیر تعیید کنید: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "اعلام ایمیل قبلی" subject_template: "[%{email_prefix}] ایمیل شما تغییر کرده است" diff --git a/config/locales/server.fi.yml b/config/locales/server.fi.yml index 4b61776011..5d202e566d 100644 --- a/config/locales/server.fi.yml +++ b/config/locales/server.fi.yml @@ -2879,7 +2879,7 @@ fi: text_body_template: | Vahvista uusi sähköpostiosoitteesi sivustolla %{site_name} klikkaamalla linkkiä: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Vahvista vanha sähköpostiosoite" subject_template: "[%{email_prefix}] Vahvista nykyinen sähköpostiosoitteesi" @@ -2888,7 +2888,7 @@ fi: Vahvista nykyinen sähköpostiosoitteesi sivustolla %{site_name} klikkaamalla linkkiä: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Ilmoita vanhaan sähköpostiosoitteeseen" subject_template: "[%{email_prefix}] Sähköpostiosoitteesi on vaihdettu" diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml index aa6de0aa51..5d2e352f73 100644 --- a/config/locales/server.fr.yml +++ b/config/locales/server.fr.yml @@ -3009,7 +3009,7 @@ fr: text_body_template: | Confirmez votre nouvelle adresse email pour %{site_name} en cliquant sur le lien suivant : - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Confirmez votre ancienne adresse email" subject_template: "[%{email_prefix}] Confirmez votre adresse email actuelle" @@ -3018,7 +3018,7 @@ fr: Confirmez votre adresse email actuelle pour %{site_name} en cliquant sur le lien suivant : - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Notifier l'ancienne adresse courriel" subject_template: "[%{email_prefix}] Votre adresse email a été modifié" diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml index 097f22db58..ac476139b7 100644 --- a/config/locales/server.he.yml +++ b/config/locales/server.he.yml @@ -3259,7 +3259,7 @@ he: text_body_template: | אשרו את כתובת המייל החדשה שלכם עבור %{site_name} על ידי לחיצה על הקישור הבא: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "אישור מייל ישן" subject_template: "[%{email_prefix}] אשרו את כתובת המייל הנוכחית שלכם" @@ -3269,7 +3269,7 @@ he: אשרו את כתובת המייל הנוכחית עבור %{site_name} על ידי לחיצה על הקישור הבא: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "התראת דוא״ל ישן" subject_template: "[%{email_prefix}] כתובת הדוא״ל שלך הוחלפה" diff --git a/config/locales/server.hy.yml b/config/locales/server.hy.yml index 91f214c20f..30db6aa4d0 100644 --- a/config/locales/server.hy.yml +++ b/config/locales/server.hy.yml @@ -2701,7 +2701,7 @@ hy: text_body_template: | Հաստատեք Ձեր նոր էլ. հասցեն %{site_name} -ի համար՝ սեղմելով հետևյալ հղումը. - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Հաստատել Հին Էլ. Հասցեն" subject_template: "[%{email_prefix}] Հաստատել Ձեր ընթացիկ էլ. հասցեն" diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml index 2c52e5446e..faf3d8a1b3 100644 --- a/config/locales/server.it.yml +++ b/config/locales/server.it.yml @@ -2862,7 +2862,7 @@ it: text_body_template: | Conferma il tuo nuovo indirizzo email su %{site_name} cliccando il seguente collegamento: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Conferma Vecchia Email" subject_template: "[%{email_prefix}] Conferma il tuo attuale indirizzo email" @@ -2873,7 +2873,7 @@ it: Conferma il tuo attuale indirizzo email su %{site_name} cliccando il seguente collegamento: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Notifica Vecchia Email" subject_template: "[%{email_prefix}] Il tuo indirizzo email è stato cambiato" diff --git a/config/locales/server.ja.yml b/config/locales/server.ja.yml index 529d544a95..dc9ca9e287 100644 --- a/config/locales/server.ja.yml +++ b/config/locales/server.ja.yml @@ -1300,7 +1300,7 @@ ja: text_body_template: | %{site_name}への新しいメールアドレスを下のリンクから確認してください。 - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "古いメールの確認" subject_template: "[%{email_prefix}]現在のメールアドレスの確認" diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml index 75f2d44231..39c273adf2 100644 --- a/config/locales/server.pl_PL.yml +++ b/config/locales/server.pl_PL.yml @@ -2313,7 +2313,7 @@ pl_PL: text_body_template: | Potwierdź swój nowy adres email dla %{site_name} poprzez kliknięcia na następujący link: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Potwierdź stary email" subject_template: "[%{site_name}] Potwierdź aktualny adres email" @@ -2322,7 +2322,7 @@ pl_PL: Potwierdź obecny adres email dla %{site_name}poprzez naciśnięcie na następujący link: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Powiadom Stary Email" subject_template: "[%{site_name}] Twój adres email został zmieniony" diff --git a/config/locales/server.pt_BR.yml b/config/locales/server.pt_BR.yml index b2fe3bbc57..d2bfcc8549 100644 --- a/config/locales/server.pt_BR.yml +++ b/config/locales/server.pt_BR.yml @@ -2925,11 +2925,11 @@ pt_BR: text_body_template: | Confirme seu novo endereço de e-mail para %{site_name} clicando no seguinte link: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Confirmar Antigo e-mail" subject_template: "[%{email_prefix}] Confirme seu endereço de e-mail atual" - text_body_template: "Antes que possamos alterar seu endereço de e-mail, precisamos que você confirme que você controla a conta de e-mail atual. \nDepois de concluir esta etapa, você terá que confirmar\no novo endereço de e-mail.\n\nConfirme seu endereço de e-mail atual para %{site_name} clicando no seguinte link:\n\n%{base_url}/u/authorize-email/%{email_token}\n" + text_body_template: "Antes que possamos alterar seu endereço de e-mail, precisamos que você confirme que você controla a conta de e-mail atual. \nDepois de concluir esta etapa, você terá que confirmar\no novo endereço de e-mail.\n\nConfirme seu endereço de e-mail atual para %{site_name} clicando no seguinte link:\n\n%{base_url}/u/confirm-old-email/%{email_token}\n" notify_old_email: title: "Notificar e-mail antigo" subject_template: "[%{email_prefix}] Seu endereço de e-mail foi alterado" diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index d4ee59168d..ac71a20691 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -2217,7 +2217,7 @@ ru: text_body_template: | Подтвердите ваш новый адрес e-mail почты для %{site_name} нажав на следующую ссылку: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: text_body_template: | Прежде чем мы сможем изменить ваш адрес электронной почты, нам нужно, чтобы вы подтвердили, что вы контролируете @@ -2226,7 +2226,7 @@ ru: Подтвердите свой текущий адрес e-mail почты для %{site_name} нажав на следующую ссылку: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} signup_after_approval: title: "Регистрация После Утверждения" subject_template: "Ваша учетная запись на сайте %{site_name} одобрена!" diff --git a/config/locales/server.sl.yml b/config/locales/server.sl.yml index 6a5711a141..fe4a8618d2 100644 --- a/config/locales/server.sl.yml +++ b/config/locales/server.sl.yml @@ -1659,7 +1659,7 @@ sl: text_body_template: | Potrdite vaš nov e-naslov pri %{site_name} tako da sledite povezavi: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Potrdite star e-naslov" subject_template: "[%{email_prefix}] Potrdite vaš trenutni e-naslov" @@ -1668,7 +1668,7 @@ sl: Potrdite vaš trenutni e-naslov pri %{site_name} tako da sledite povezavi: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Obvesti stari e-naslov" subject_template: "[%{email_prefix}] Vaš e-naslov je bil spremenjen" diff --git a/config/locales/server.sq.yml b/config/locales/server.sq.yml index 6130e9b8ad..f93a1297a0 100644 --- a/config/locales/server.sq.yml +++ b/config/locales/server.sq.yml @@ -1163,7 +1163,7 @@ sq: text_body_template: | Konfirmoni adresën tuaj të re të emailit për "%{site_name}" duke klikuar linkun më poshtë: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: subject_template: "[%{email_prefix}] Konfirmoni adresën e tanishme të emailit " notify_old_email: diff --git a/config/locales/server.uk.yml b/config/locales/server.uk.yml index 756ae8b729..12c4680b48 100644 --- a/config/locales/server.uk.yml +++ b/config/locales/server.uk.yml @@ -2434,7 +2434,7 @@ uk: text_body_template: | Підтвердіть свою нову електронну адресу для %{site_name} натиснувши наступне посилання: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Підтвердіть стару електронну пошту" subject_template: "[%{email_prefix}] Підтвердіть свою поточну адресу електроної пошти" diff --git a/config/locales/server.ur.yml b/config/locales/server.ur.yml index 42da5aa023..9036cb9ed6 100644 --- a/config/locales/server.ur.yml +++ b/config/locales/server.ur.yml @@ -3033,7 +3033,7 @@ ur: text_body_template: | %{site_name} پر اپنے نئے ای میل ایڈریس کی تصدیق کرنے کیلئے مندرجہ ذیل لِنک پر کلِک کریں: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "پرانی ای میل تصدیق" subject_template: "[%{email_prefix}] اپنا موجودہ ای میل ایڈریس تصدیق کریں" @@ -3044,7 +3044,7 @@ ur: %{site_name} پر اپنے موجودہ ای میل ایڈریس کی تصدیق کرنے کیلئے مندرجہ ذیل لِنک پر کلک کریں: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "پرانا ای میل مطلع" subject_template: "[%{email_prefix}] آپ کا ای میل ایڈریس تبدیل ہوگیا ہے" diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml index e7d2150d2a..52c35fff8f 100644 --- a/config/locales/server.zh_CN.yml +++ b/config/locales/server.zh_CN.yml @@ -3013,7 +3013,7 @@ zh_CN: text_body_template: | 点击下面的链接来确认你在%{site_name}上的新电子邮箱地址: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "确认旧邮箱" subject_template: "[%{email_prefix}] 确认你现在的电子邮箱地址" @@ -3022,7 +3022,7 @@ zh_CN: 点击下面的链接来确认你在%{site_name}正使用的邮件: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "通知旧邮箱" subject_template: "[%{email_prefix}] 你的邮箱已经修改成功" diff --git a/config/locales/server.zh_TW.yml b/config/locales/server.zh_TW.yml index e530144e02..27cada2b1c 100644 --- a/config/locales/server.zh_TW.yml +++ b/config/locales/server.zh_TW.yml @@ -2810,7 +2810,7 @@ zh_TW: text_body_template: | 點擊以下連結,確認你 %{site_name} 的新郵件地址: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "確認原郵件地址" subject_template: "[%{email_prefix}] 確認你的現行郵件地址" @@ -2820,7 +2820,7 @@ zh_TW: 點擊下面的連結,以確認你當前在 %{site_name} 的郵件地址: - %{base_url}/u/authorize-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "通知原郵件地址" subject_template: "[%{email_prefix}] 已變更你的郵件地址" diff --git a/config/routes.rb b/config/routes.rb index eb1bab0212..7fd6e9cef8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -408,8 +408,13 @@ Discourse::Application.routes.draw do put "#{root_path}/password-reset/:token" => "users#password_reset" get "#{root_path}/activate-account/:token" => "users#activate_account" put({ "#{root_path}/activate-account/:token" => "users#perform_account_activation" }.merge(index == 1 ? { as: 'perform_activate_account' } : {})) - get "#{root_path}/authorize-email/:token" => "users_email#confirm" - put "#{root_path}/authorize-email/:token" => "users_email#confirm" + + get "#{root_path}/confirm-old-email/:token" => "users_email#show_confirm_old_email" + put "#{root_path}/confirm-old-email" => "users_email#confirm_old_email" + + get "#{root_path}/confirm-new-email/:token" => "users_email#show_confirm_new_email" + put "#{root_path}/confirm-new-email" => "users_email#confirm_new_email" + get({ "#{root_path}/confirm-admin/:token" => "users#confirm_admin", constraints: { token: /[0-9a-f]+/ } diff --git a/spec/requests/users_email_controller_spec.rb b/spec/requests/users_email_controller_spec.rb index d2512e08d5..55bd65c62f 100644 --- a/spec/requests/users_email_controller_spec.rb +++ b/spec/requests/users_email_controller_spec.rb @@ -4,72 +4,65 @@ require 'rails_helper' describe UsersEmailController do - describe '#confirm' do + fab!(:user) { Fabricate(:user) } + fab!(:moderator) { Fabricate(:moderator) } + + describe "#confirm-new-email" do + it 'redirects to login for signed out accounts' do + get "/u/confirm-new-email/asdfasdf" + + expect(response.status).to eq(302) + expect(response.redirect_url).to eq("http://test.localhost/login") + end + it 'errors out for invalid tokens' do - get "/u/authorize-email/asdfasdf" + sign_in(user) + + get "/u/confirm-new-email/asdfasdf" expect(response.status).to eq(200) expect(response.body).to include(I18n.t('change_email.already_done')) end - context 'valid old address token' do - fab!(:user) { Fabricate(:moderator) } - let(:updater) { EmailUpdater.new(user.guardian, user) } + it 'does not change email if accounts mismatch' do + updater = EmailUpdater.new(user.guardian, user) + updater.change_to('new.n.cool@example.com') - before do - updater.change_to('new.n.cool@example.com') - end + old_email = user.email - it 'confirms with a correct token' do - get "/u/authorize-email/#{user.email_tokens.last.token}" + sign_in(moderator) - expect(response.status).to eq(200) + put "/u/confirm-new-email", params: { + token: "#{user.email_tokens.last.token}" + } - body = CGI.unescapeHTML(response.body) - - expect(body) - .to include(I18n.t('change_email.authorizing_old.title')) - - expect(body) - .to include(I18n.t('change_email.authorizing_old.description')) - end + user.reload + expect(user.email).to eq(old_email) end - context 'valid new address token' do - fab!(:user) { Fabricate(:user) } + context "with a valid user" do let(:updater) { EmailUpdater.new(user.guardian, user) } before do + sign_in(user) updater.change_to('new.n.cool@example.com') end it 'confirms with a correct token' do user.user_stat.update_columns(bounce_score: 42, reset_bounce_score_after: 1.week.from_now) - events = DiscourseEvent.track_events do - get "/u/authorize-email/#{user.email_tokens.last.token}" - end + put "/u/confirm-new-email", params: { + token: "#{user.email_tokens.last.token}" + } - expect(events.map { |event| event[:event_name] }).to include( - :user_logged_in, :user_first_logged_in - ) - - expect(response.status).to eq(200) - expect(response.body).to include(I18n.t('change_email.confirmed')) + expect(response.status).to eq(302) + expect(response.redirect_url).to include("done") user.reload expect(user.user_stat.bounce_score).to eq(0) expect(user.user_stat.reset_bounce_score_after).to eq(nil) - end - - it 'automatically adds the user to a group when the email matches' do - group = Fabricate(:group, automatic_membership_email_domains: "example.com") - - get "/u/authorize-email/#{user.email_tokens.last.token}" - - expect(response.status).to eq(200) - expect(group.reload.users.include?(user)).to eq(true) + expect(user.email).to eq("new.n.cool@example.com") end context 'second factor required' do @@ -77,7 +70,7 @@ describe UsersEmailController do fab!(:backup_code) { Fabricate(:user_second_factor_backup, user: user) } it 'requires a second factor token' do - get "/u/authorize-email/#{user.email_tokens.last.token}" + get "/u/confirm-new-email/#{user.email_tokens.last.token}" expect(response.status).to eq(200) @@ -88,7 +81,7 @@ describe UsersEmailController do end it 'requires a backup token' do - get "/u/authorize-email/#{user.email_tokens.last.token}?show_backup=true" + get "/u/confirm-new-email/#{user.email_tokens.last.token}?show_backup=true" expect(response.status).to eq(200) @@ -98,34 +91,94 @@ describe UsersEmailController do end it 'adds an error on a second factor attempt' do - get "/u/authorize-email/#{user.email_tokens.last.token}", params: { + put "/u/confirm-new-email", params: { + token: user.email_tokens.last.token, second_factor_token: "000000", second_factor_method: UserSecondFactor.methods[:totp] } - expect(response.status).to eq(200) - expect(response.body).to include(I18n.t("login.invalid_second_factor_code")) + expect(response.status).to eq(302) + expect(flash[:invalid_second_factor]).to eq(true) end it 'confirms with a correct second token' do - get "/u/authorize-email/#{user.email_tokens.last.token}", params: { + put "/u/confirm-new-email", params: { second_factor_token: ROTP::TOTP.new(second_factor.data).now, - second_factor_method: UserSecondFactor.methods[:totp] + second_factor_method: UserSecondFactor.methods[:totp], + token: user.email_tokens.last.token } - expect(response.status).to eq(200) + expect(response.status).to eq(302) - response_body = response.body - - expect(response_body).not_to include(I18n.t("login.second_factor_title")) - expect(response_body).not_to include(I18n.t("login.invalid_second_factor_code")) + user.reload + expect(user.email).to eq("new.n.cool@example.com") end end end end + describe '#confirm-old-email' do + + it 'redirects to login for signed out accounts' do + get "/u/confirm-old-email/asdfasdf" + + expect(response.status).to eq(302) + expect(response.redirect_url).to eq("http://test.localhost/login") + end + + it 'errors out for invalid tokens' do + sign_in(user) + + get "/u/confirm-old-email/asdfasdf" + + expect(response.status).to eq(200) + expect(response.body).to include(I18n.t('change_email.already_done')) + end + + it 'bans change when accounts do not match' do + + sign_in(user) + updater = EmailUpdater.new(moderator.guardian, moderator) + updater.change_to('new.n.cool@example.com') + + get "/u/confirm-old-email/#{moderator.email_tokens.last.token}" + + expect(response.status).to eq(200) + expect(body).to include("alert-error") + end + + context 'valid old address token' do + + it 'confirms with a correct token' do + # NOTE: only moderators need to confirm both old and new + sign_in(moderator) + updater = EmailUpdater.new(moderator.guardian, moderator) + updater.change_to('new.n.cool@example.com') + + get "/u/confirm-old-email/#{moderator.email_tokens.last.token}" + + expect(response.status).to eq(200) + + body = CGI.unescapeHTML(response.body) + + expect(body) + .to include(I18n.t('change_email.authorizing_old.title')) + + expect(body) + .to include(I18n.t('change_email.authorizing_old.description')) + + put "/u/confirm-old-email", params: { + token: moderator.email_tokens.last.token + } + + expect(response.status).to eq(302) + expect(response.redirect_url).to include("done=true") + + end + end + end + describe '#update' do - fab!(:user) { Fabricate(:user) } let(:new_email) { 'bubblegum@adventuretime.ooo' } it "requires you to be logged in" do From 5ad6dc01c1463412278a5437ad2eba5f6242a8c5 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Thu, 21 Nov 2019 15:45:36 +1000 Subject: [PATCH 238/408] FEATURE: Support RS256 algorithm for webauthn (#8385) * Add support for RS256 webauthn algorithm (-257) --- lib/webauthn.rb | 5 ++++- lib/webauthn/security_key_registration_service.rb | 2 +- spec/lib/webauthn/security_key_registration_service_spec.rb | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/webauthn.rb b/lib/webauthn.rb index d53eefe363..c8656d8fa7 100644 --- a/lib/webauthn.rb +++ b/lib/webauthn.rb @@ -6,7 +6,10 @@ require 'webauthn/security_key_authentication_service' module Webauthn ACCEPTABLE_REGISTRATION_TYPE = "webauthn.create".freeze ACCEPTABLE_AUTHENTICATION_TYPE = "webauthn.get".freeze - SUPPORTED_ALGORITHMS = [-7].freeze + + # -7 - ES256 + # -257 - RS256 (Windows Hello supported alg.) + SUPPORTED_ALGORITHMS = [-7, -257].freeze VALID_ATTESTATION_FORMATS = ['none', 'packed', 'fido-u2f'].freeze class SecurityKeyError < StandardError; end diff --git a/lib/webauthn/security_key_registration_service.rb b/lib/webauthn/security_key_registration_service.rb index bea9e322f2..ff8544f1ac 100644 --- a/lib/webauthn/security_key_registration_service.rb +++ b/lib/webauthn/security_key_registration_service.rb @@ -49,7 +49,7 @@ module Webauthn # attribute of one of the items in options.pubKeyCredParams. # https://w3c.github.io/webauthn/#table-attestedCredentialData # See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for supported algorithm - # codes, -7 which Discourse uses is ECDSA w/ SHA-256 + # codes. credential_public_key, credential_public_key_bytes, credential_id = extract_public_key_and_credential_from_attestation(auth_data) raise(UnsupportedPublicKeyAlgorithmError, I18n.t('webauthn.validation.unsupported_public_key_algorithm_error')) if ::Webauthn::SUPPORTED_ALGORITHMS.exclude?(credential_public_key.alg) diff --git a/spec/lib/webauthn/security_key_registration_service_spec.rb b/spec/lib/webauthn/security_key_registration_service_spec.rb index 17bc9ff149..672ddac56e 100644 --- a/spec/lib/webauthn/security_key_registration_service_spec.rb +++ b/spec/lib/webauthn/security_key_registration_service_spec.rb @@ -87,7 +87,7 @@ describe Webauthn::SecurityKeyRegistrationService do before do @original_supported_alg_value = Webauthn::SUPPORTED_ALGORITHMS silence_warnings do - Webauthn::SUPPORTED_ALGORITHMS = [-257] + Webauthn::SUPPORTED_ALGORITHMS = [-999] end end From 026832fb80063aedde0b867d87b8a5558f9bff93 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 21 Nov 2019 10:16:19 +0000 Subject: [PATCH 239/408] FIX: Mobile top topic list with a period and a category or tag --- .../discourse/components/d-navigation.js.es6 | 10 +++++++--- .../discourse/components/navigation-bar.js.es6 | 10 ++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/discourse/components/d-navigation.js.es6 b/app/assets/javascripts/discourse/components/d-navigation.js.es6 index b68ceeb739..faf79ff5fc 100644 --- a/app/assets/javascripts/discourse/components/d-navigation.js.es6 +++ b/app/assets/javascripts/discourse/components/d-navigation.js.es6 @@ -29,9 +29,13 @@ export default Component.extend({ @discourseComputed("filterMode", "category", "noSubcategories") navItems(filterMode, category, noSubcategories) { - // we don't want to show the period in the navigation bar since it's in a dropdown - if (filterMode.indexOf("top/") === 0) { - filterMode = "top"; + const filterModeParts = filterMode.split("/"); + if ( + filterModeParts.length >= 2 && + filterModeParts[filterModeParts.length - 2] === "top" + ) { + filterModeParts.pop(); + filterMode = filterModeParts.join("/"); } let params; diff --git a/app/assets/javascripts/discourse/components/navigation-bar.js.es6 b/app/assets/javascripts/discourse/components/navigation-bar.js.es6 index 6f262ce05c..a533ba95de 100644 --- a/app/assets/javascripts/discourse/components/navigation-bar.js.es6 +++ b/app/assets/javascripts/discourse/components/navigation-bar.js.es6 @@ -19,9 +19,15 @@ export default Component.extend({ @discourseComputed("filterMode", "navItems") selectedNavItem(filterMode, navItems) { - if (filterMode.indexOf("top/") === 0) { - filterMode = "top"; + const filterModeParts = filterMode.split("/"); + if ( + filterModeParts.length >= 2 && + filterModeParts[filterModeParts.length - 2] === "top" + ) { + filterModeParts.pop(); + filterMode = filterModeParts.join("/"); } + let item = navItems.find(i => i.active === true); item = From 3d1b6b6729eab386f5e7f2c786fd521c37fd8f05 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 21 Nov 2019 11:43:35 +0100 Subject: [PATCH 240/408] FIX: handle german quotes in discourse local-dates (#8386) https://meta.discourse.org/t/insert-date-timezone-is-always-utc-my-timezone-is-ignored/126307 --- .../lib/discourse-markdown/discourse-local-dates.js.es6 | 6 ++++-- .../discourse-local-dates/spec/lib/pretty_text_spec.rb | 9 +++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/discourse-local-dates/assets/javascripts/lib/discourse-markdown/discourse-local-dates.js.es6 b/plugins/discourse-local-dates/assets/javascripts/lib/discourse-markdown/discourse-local-dates.js.es6 index 083794bd9c..d4e526c787 100644 --- a/plugins/discourse-local-dates/assets/javascripts/lib/discourse-markdown/discourse-local-dates.js.es6 +++ b/plugins/discourse-local-dates/assets/javascripts/lib/discourse-markdown/discourse-local-dates.js.es6 @@ -13,10 +13,12 @@ function addLocalDate(buffer, matches, state) { countdown: null }; + const matchString = matches[1].replace(/„|“/g, '"'); + let parsed = parseBBCodeTag( - "[date date" + matches[1] + "]", + "[date date" + matchString + "]", 0, - matches[1].length + 11 + matchString.length + 11 ); config.date = parsed.attrs.date; diff --git a/plugins/discourse-local-dates/spec/lib/pretty_text_spec.rb b/plugins/discourse-local-dates/spec/lib/pretty_text_spec.rb index 6a1a4ec76f..853e73d83c 100644 --- a/plugins/discourse-local-dates/spec/lib/pretty_text_spec.rb +++ b/plugins/discourse-local-dates/spec/lib/pretty_text_spec.rb @@ -80,4 +80,13 @@ describe PrettyText do expect(excerpt).to eq("Wednesday, October 16, 2019 6:00 PM (UTC)") end end + + context 'german quotes' do + let(:post) { Fabricate(:post, raw: '[date=2019-10-16 time=14:00:00 format="LLLL" timezone=„America/New_York“]') } + + it 'converts german quotes to regular quotes' do + excerpt = PrettyText.excerpt(post.cooked, 200) + expect(excerpt).to eq('Wednesday, October 16, 2019 6:00 PM (UTC)') + end + end end From a8d58c3b217b26f0e0e8189608b57a21293f709c Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 21 Nov 2019 10:33:40 +0000 Subject: [PATCH 241/408] DEV: Make filterModes obsolete This mixin handles the translation between old filterModes and new filterTypes. filterModes have context information, filterTypes do not. --- .../javascripts/discourse/components/d-navigation.js.es6 | 3 ++- .../javascripts/discourse/components/navigation-bar.js.es6 | 3 ++- .../javascripts/discourse/components/navigation-item.js.es6 | 2 ++ .../discourse/controllers/navigation/category.js.es6 | 3 ++- .../discourse/controllers/navigation/default.js.es6 | 3 ++- app/assets/javascripts/discourse/controllers/tags-show.js.es6 | 4 ++-- app/assets/javascripts/discourse/routes/tags-show.js.es6 | 3 ++- 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/discourse/components/d-navigation.js.es6 b/app/assets/javascripts/discourse/components/d-navigation.js.es6 index faf79ff5fc..ea0b2fddc8 100644 --- a/app/assets/javascripts/discourse/components/d-navigation.js.es6 +++ b/app/assets/javascripts/discourse/components/d-navigation.js.es6 @@ -2,8 +2,9 @@ import discourseComputed from "discourse-common/utils/decorators"; import NavItem from "discourse/models/nav-item"; import { inject as service } from "@ember/service"; import Component from "@ember/component"; +import FilterModeMixin from "discourse/mixins/filter-mode"; -export default Component.extend({ +export default Component.extend(FilterModeMixin, { router: service(), persistedQueryParams: null, diff --git a/app/assets/javascripts/discourse/components/navigation-bar.js.es6 b/app/assets/javascripts/discourse/components/navigation-bar.js.es6 index a533ba95de..b3157f5748 100644 --- a/app/assets/javascripts/discourse/components/navigation-bar.js.es6 +++ b/app/assets/javascripts/discourse/components/navigation-bar.js.es6 @@ -6,8 +6,9 @@ import { } from "discourse-common/utils/decorators"; import DiscourseURL from "discourse/lib/url"; import { renderedConnectorsFor } from "discourse/lib/plugin-connectors"; +import FilterModeMixin from "discourse/mixins/filter-mode"; -export default Component.extend({ +export default Component.extend(FilterModeMixin, { tagName: "ul", classNameBindings: [":nav", ":nav-pills"], elementId: "navigation-bar", diff --git a/app/assets/javascripts/discourse/components/navigation-item.js.es6 b/app/assets/javascripts/discourse/components/navigation-item.js.es6 index f6805dfb2f..3ed9740c6b 100644 --- a/app/assets/javascripts/discourse/components/navigation-item.js.es6 +++ b/app/assets/javascripts/discourse/components/navigation-item.js.es6 @@ -1,8 +1,10 @@ import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { bufferedRender } from "discourse-common/lib/buffered-render"; +import FilterModeMixin from "discourse/mixins/filter-mode"; export default Component.extend( + FilterModeMixin, bufferedRender({ tagName: "li", classNameBindings: [ diff --git a/app/assets/javascripts/discourse/controllers/navigation/category.js.es6 b/app/assets/javascripts/discourse/controllers/navigation/category.js.es6 index 1b13265576..23da3c88df 100644 --- a/app/assets/javascripts/discourse/controllers/navigation/category.js.es6 +++ b/app/assets/javascripts/discourse/controllers/navigation/category.js.es6 @@ -1,7 +1,8 @@ import { none, and } from "@ember/object/computed"; import NavigationDefaultController from "discourse/controllers/navigation/default"; +import FilterModeMixin from "discourse/mixins/filter-mode"; -export default NavigationDefaultController.extend({ +export default NavigationDefaultController.extend(FilterModeMixin, { showingParentCategory: none("category.parentCategory"), showingSubcategoryList: and( "category.show_subcategory_list", diff --git a/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 b/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 index 23220761c1..02dd26acde 100644 --- a/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 +++ b/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 @@ -1,8 +1,9 @@ import discourseComputed from "discourse-common/utils/decorators"; import { inject } from "@ember/controller"; import Controller from "@ember/controller"; +import FilterModeMixin from "discourse/mixins/filter-mode"; -export default Controller.extend({ +export default Controller.extend(FilterModeMixin, { discovery: inject(), discoveryTopics: inject("discovery/topics"), diff --git a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 index 4a8cc98dd9..26aa9d9684 100644 --- a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 @@ -7,15 +7,15 @@ import { } from "discourse-common/utils/decorators"; import BulkTopicSelection from "discourse/mixins/bulk-topic-selection"; import { default as NavItem } from "discourse/models/nav-item"; +import FilterModeMixin from "discourse/mixins/filter-mode"; -export default Controller.extend(BulkTopicSelection, { +export default Controller.extend(BulkTopicSelection, FilterModeMixin, { application: inject(), tag: null, additionalTags: null, list: null, canAdminTag: alias("currentUser.staff"), - filterMode: null, navMode: "latest", loading: false, canCreateTopic: false, diff --git a/app/assets/javascripts/discourse/routes/tags-show.js.es6 b/app/assets/javascripts/discourse/routes/tags-show.js.es6 index 5d8f44aceb..30e8874992 100644 --- a/app/assets/javascripts/discourse/routes/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/routes/tags-show.js.es6 @@ -8,8 +8,9 @@ import { import { queryParams } from "discourse/controllers/discovery-sortable"; import PermissionType from "discourse/models/permission-type"; import Category from "discourse/models/category"; +import FilterModeMixin from "discourse/mixins/filter-mode"; -export default DiscourseRoute.extend({ +export default DiscourseRoute.extend(FilterModeMixin, { navMode: "latest", queryParams, From 556b29952c8013e5c8f5683b3d4f3b7c772c9e29 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 21 Nov 2019 10:52:50 +0000 Subject: [PATCH 242/408] FIX: followup to a8d58c3b It helps to include the files you intend to add --- .../discourse/mixins/filter-mode.js.es6 | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 app/assets/javascripts/discourse/mixins/filter-mode.js.es6 diff --git a/app/assets/javascripts/discourse/mixins/filter-mode.js.es6 b/app/assets/javascripts/discourse/mixins/filter-mode.js.es6 new file mode 100644 index 0000000000..1e16f075ee --- /dev/null +++ b/app/assets/javascripts/discourse/mixins/filter-mode.js.es6 @@ -0,0 +1,50 @@ +import Mixin from "@ember/object/mixin"; +import { computed } from "@ember/object"; +import Category from "discourse/models/category"; + +export default Mixin.create({ + filterModeInternal: computed( + "rawFilterMode", + "filterType", + "category", + "noSubcategories", + function() { + const rawFilterMode = this.get("rawFilterMode"); + if (rawFilterMode) { + return rawFilterMode; + } else { + const category = this.get("category"); + const filterType = this.get("filterType"); + + if (category) { + const noSubcategories = this.get("noSubcategories"); + + return `c/${Category.slugFor(category)}${ + noSubcategories ? "/none" : "" + }/l/${filterType}`; + } else { + return filterType; + } + } + } + ), + + filterMode: computed("filterModeInternal", { + get() { + return this.get("filterModeInternal"); + }, + + set(key, value) { + this.set("rawFilterMode", value); + const parts = value.split("/"); + + if (parts.length >= 2 && parts[parts.length - 2] === "top") { + this.set("filterType", "top"); + } else { + this.set("filterType", parts.pop()); + } + + return value; + } + }) +}); From 585a229d3fda5d4ae238046a78d66b51f7e15938 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 21 Nov 2019 10:59:30 +0000 Subject: [PATCH 243/408] DEV: Add new style filterType property to NavItem model --- app/assets/javascripts/discourse/models/nav-item.js.es6 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index f1df4a7532..e2fcff3f92 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -2,6 +2,7 @@ import discourseComputed from "discourse-common/utils/decorators"; import { emojiUnescape } from "discourse/lib/text"; import Category from "discourse/models/category"; import EmberObject from "@ember/object"; +import { reads } from "@ember/object/computed"; import deprecated from "discourse-common/lib/deprecated"; import Site from "discourse/models/site"; import User from "discourse/models/user"; @@ -33,8 +34,8 @@ const NavItem = EmberObject.extend({ ); }, - @discourseComputed("name", "category", "noSubcategories", "tagId") - href(filterMode, category, noSubcategories, tagId) { + @discourseComputed("filterType", "category", "noSubcategories", "tagId") + href(filterType, category, noSubcategories, tagId) { let customHref = null; NavItem.customNavItemHrefs.forEach(function(cb) { @@ -49,9 +50,11 @@ const NavItem = EmberObject.extend({ } const context = { category, noSubcategories, tagId }; - return NavItem.pathFor(filterMode, context); + return NavItem.pathFor(filterType, context); }, + filterType: reads("name"), + @discourseComputed("name", "category", "noSubcategories") filterMode(name, category, noSubcategories) { let mode = ""; From 57624983917759abb219ab50aeb80aee06a82df6 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 21 Nov 2019 11:01:28 +0000 Subject: [PATCH 244/408] DEV: Use new filterType property where possible --- .../discourse/components/d-navigation.js.es6 | 15 +++------------ .../discourse/components/navigation-bar.js.es6 | 18 ++++-------------- .../components/navigation-item.js.es6 | 9 +++------ .../discourse/controllers/tags-show.js.es6 | 6 +++--- 4 files changed, 13 insertions(+), 35 deletions(-) diff --git a/app/assets/javascripts/discourse/components/d-navigation.js.es6 b/app/assets/javascripts/discourse/components/d-navigation.js.es6 index ea0b2fddc8..041e21e4a8 100644 --- a/app/assets/javascripts/discourse/components/d-navigation.js.es6 +++ b/app/assets/javascripts/discourse/components/d-navigation.js.es6 @@ -28,17 +28,8 @@ export default Component.extend(FilterModeMixin, { @discourseComputed("category.can_edit") showCategoryEdit: canEdit => canEdit, - @discourseComputed("filterMode", "category", "noSubcategories") - navItems(filterMode, category, noSubcategories) { - const filterModeParts = filterMode.split("/"); - if ( - filterModeParts.length >= 2 && - filterModeParts[filterModeParts.length - 2] === "top" - ) { - filterModeParts.pop(); - filterMode = filterModeParts.join("/"); - } - + @discourseComputed("filterType", "category", "noSubcategories") + navItems(filterType, category, noSubcategories) { let params; const currentRouteQueryParams = this.get("router.currentRoute.queryParams"); if (this.persistedQueryParams && currentRouteQueryParams) { @@ -54,7 +45,7 @@ export default Component.extend(FilterModeMixin, { } return NavItem.buildList(category, { - filterMode, + filterType, noSubcategories, persistedQueryParams: params }); diff --git a/app/assets/javascripts/discourse/components/navigation-bar.js.es6 b/app/assets/javascripts/discourse/components/navigation-bar.js.es6 index b3157f5748..6051726395 100644 --- a/app/assets/javascripts/discourse/components/navigation-bar.js.es6 +++ b/app/assets/javascripts/discourse/components/navigation-bar.js.es6 @@ -18,21 +18,11 @@ export default Component.extend(FilterModeMixin, { this.set("connectors", renderedConnectorsFor("extra-nav-item", null, this)); }, - @discourseComputed("filterMode", "navItems") - selectedNavItem(filterMode, navItems) { - const filterModeParts = filterMode.split("/"); - if ( - filterModeParts.length >= 2 && - filterModeParts[filterModeParts.length - 2] === "top" - ) { - filterModeParts.pop(); - filterMode = filterModeParts.join("/"); - } - + @discourseComputed("filterType", "navItems") + selectedNavItem(filterType, navItems) { let item = navItems.find(i => i.active === true); - item = - item || navItems.find(i => i.get("filterMode").indexOf(filterMode) === 0); + item = item || navItems.find(i => i.get("filterType") === filterType); if (!item) { let connectors = this.connectors; @@ -45,7 +35,7 @@ export default Component.extend(FilterModeMixin, { typeof (c.connectorClass.displayName === "function") ) { let path = c.connectorClass.path(category); - if (path.indexOf(filterMode) > 0) { + if (path.indexOf(filterType) > 0) { item = { displayName: c.connectorClass.displayName() }; diff --git a/app/assets/javascripts/discourse/components/navigation-item.js.es6 b/app/assets/javascripts/discourse/components/navigation-item.js.es6 index 3ed9740c6b..90c56da1c9 100644 --- a/app/assets/javascripts/discourse/components/navigation-item.js.es6 +++ b/app/assets/javascripts/discourse/components/navigation-item.js.es6 @@ -17,15 +17,12 @@ export default Component.extend( hidden: false, rerenderTriggers: ["content.count"], - @discourseComputed("content.filterMode", "filterMode", "content.active") - active(contentFilterMode, filterMode, active) { + @discourseComputed("content.filterType", "filterType", "content.active") + active(contentFilterType, filterType, active) { if (active !== undefined) { return active; } - return ( - contentFilterMode === filterMode || - filterMode.indexOf(contentFilterMode) === 0 - ); + return contentFilterType === filterType; }, buildBuffer(buffer) { diff --git a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 index 26aa9d9684..34aa673c96 100644 --- a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 @@ -65,11 +65,11 @@ export default Controller.extend(BulkTopicSelection, FilterModeMixin, { "q" ], - @discourseComputed("category", "tag.id", "filterMode", "noSubcategories") - navItems(category, tagId, filterMode, noSubcategories) { + @discourseComputed("category", "tag.id", "filterType", "noSubcategories") + navItems(category, tagId, filterType, noSubcategories) { return NavItem.buildList(category, { tagId, - filterMode, + filterType, noSubcategories }); }, From 3344312fb5da1848abf695d1eecbf8fbf429c9f0 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 21 Nov 2019 11:29:50 +0000 Subject: [PATCH 245/408] FIX: Replace this.get("foo") with this.foo to fix linting checks --- .../javascripts/discourse/mixins/filter-mode.js.es6 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/discourse/mixins/filter-mode.js.es6 b/app/assets/javascripts/discourse/mixins/filter-mode.js.es6 index 1e16f075ee..4287080762 100644 --- a/app/assets/javascripts/discourse/mixins/filter-mode.js.es6 +++ b/app/assets/javascripts/discourse/mixins/filter-mode.js.es6 @@ -9,15 +9,15 @@ export default Mixin.create({ "category", "noSubcategories", function() { - const rawFilterMode = this.get("rawFilterMode"); + const rawFilterMode = this.rawFilterMode; if (rawFilterMode) { return rawFilterMode; } else { - const category = this.get("category"); - const filterType = this.get("filterType"); + const category = this.category; + const filterType = this.filterType; if (category) { - const noSubcategories = this.get("noSubcategories"); + const noSubcategories = this.noSubcategories; return `c/${Category.slugFor(category)}${ noSubcategories ? "/none" : "" @@ -31,7 +31,7 @@ export default Mixin.create({ filterMode: computed("filterModeInternal", { get() { - return this.get("filterModeInternal"); + return this.filterModeInternal; }, set(key, value) { From ffba242de133788e4809c2012a1551714fe4fe77 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 21 Nov 2019 13:35:51 +0000 Subject: [PATCH 246/408] DEV: Prevent setting filterMode where it can be already be computed The plan is to switch over all cases where filterMode is set, but, to prevent breaking plugins and themes, the category and noSubcategories need to be inferred from any given filterMode before that can happen. --- .../discourse/routes/build-category-route.js.es6 | 8 +++----- .../discourse/routes/build-topic-route.js.es6 | 5 ++++- .../javascripts/discourse/routes/tags-show.js.es6 | 14 ++------------ .../discourse/templates/navigation/categories.hbs | 2 +- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index b7dceff089..b19c91b34f 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -66,14 +66,12 @@ export default (filterArg, params) => { _setupNavigation(category) { const noSubcategories = params && !!params.no_subcategories, - filterMode = `c/${Category.slugFor(category)}${ - noSubcategories ? "/none" : "" - }/l/${this.filter(category)}`; + filterType = this.filter(category).split("/")[0]; this.controllerFor("navigation/category").setProperties({ category, - filterMode: filterMode, - noSubcategories: params && params.no_subcategories + filterType, + noSubcategories }); }, diff --git a/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 b/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 index a3a3d96323..e7a8d97ef3 100644 --- a/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-topic-route.js.es6 @@ -80,7 +80,10 @@ export default function(filter, extras) { queryParams, beforeModel() { - this.controllerFor("navigation/default").set("filterMode", filter); + this.controllerFor("navigation/default").set( + "filterType", + filter.split("/")[0] + ); }, model(data, transition) { diff --git a/app/assets/javascripts/discourse/routes/tags-show.js.es6 b/app/assets/javascripts/discourse/routes/tags-show.js.es6 index 30e8874992..2e340267a2 100644 --- a/app/assets/javascripts/discourse/routes/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/routes/tags-show.js.es6 @@ -24,8 +24,6 @@ export default DiscourseRoute.extend(FilterModeMixin, { const tag = this.store.createRecord("tag", { id: Handlebars.Utils.escapeExpression(params.tag_id) }); - let f = ""; - if (params.additional_tags) { this.set( "additionalTags", @@ -39,15 +37,7 @@ export default DiscourseRoute.extend(FilterModeMixin, { this.set("additionalTags", null); } - if (params.category) { - f = "c/"; - if (params.parent_category) { - f += `${params.parent_category}/`; - } - f += `${params.category}/l/`; - } - f += this.navMode; - this.set("filterMode", f); + this.set("filterType", this.navMode.split("/")[0]); if (params.category) { this.set("categorySlug", params.category); @@ -161,7 +151,7 @@ export default DiscourseRoute.extend(FilterModeMixin, { tag: model, additionalTags: this.additionalTags, category: this.category, - filterMode: this.filterMode, + filterType: this.filterType, navMode: this.navMode, tagNotification: this.tagNotification, noSubcategories: this.noSubcategories diff --git a/app/assets/javascripts/discourse/templates/navigation/categories.hbs b/app/assets/javascripts/discourse/templates/navigation/categories.hbs index 4dba68da5c..b0f90e30a9 100644 --- a/app/assets/javascripts/discourse/templates/navigation/categories.hbs +++ b/app/assets/javascripts/discourse/templates/navigation/categories.hbs @@ -1,6 +1,6 @@ {{#d-section bodyClass="navigation-categories" class="navigation-container"}} {{d-navigation - filterMode="categories" + filterType="categories" showCategoryAdmin=showCategoryAdmin createCategory=(route-action "createCategory") reorderCategories=(route-action "reorderCategories") From cc0df69ea6c344419ce192c1d4b2f6d06cd45b90 Mon Sep 17 00:00:00 2001 From: Kris Date: Thu, 21 Nov 2019 09:10:52 -0500 Subject: [PATCH 247/408] minor spacing adjustment for 09579bf --- app/assets/stylesheets/common/base/login.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/common/base/login.scss b/app/assets/stylesheets/common/base/login.scss index 2a2fb7a7d0..fa1af85ec7 100644 --- a/app/assets/stylesheets/common/base/login.scss +++ b/app/assets/stylesheets/common/base/login.scss @@ -181,7 +181,8 @@ button#new-account-link { font-size: $font-0; } a { - padding: 0.5em 0.5em 0.5em 0; + display: inline-block; + padding: 1em 0.5em 1em 0; color: $tertiary; } } From 11d22293fb30cff98bf29844fbc17964dac41556 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Thu, 21 Nov 2019 09:13:33 -0500 Subject: [PATCH 248/408] FIX: Allow private media uploads to be reused in login_required sites In non-login-required sites, we prevent secure uploads already used in PMs from being used in public topics. In login_required sites, secure uploads should be reusable in any topic, PM or not. --- app/models/post.rb | 2 +- spec/components/post_creator_spec.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/models/post.rb b/app/models/post.rb index 1763290a0d..2e0fd82802 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -898,7 +898,7 @@ class Post < ActiveRecord::Base upload_ids |= Upload.where(id: downloaded_images.values).pluck(:id) disallowed_uploads = [] - if SiteSetting.secure_media? && !topic&.private_message? + if SiteSetting.secure_media? && !self.with_secure_media? disallowed_uploads = Upload.where(id: upload_ids, secure: true).pluck(:original_filename) end return disallowed_uploads if disallowed_uploads.count > 0 diff --git a/spec/components/post_creator_spec.rb b/spec/components/post_creator_spec.rb index 518a12b2dd..c33d9b8cbb 100644 --- a/spec/components/post_creator_spec.rb +++ b/spec/components/post_creator_spec.rb @@ -1445,6 +1445,18 @@ describe PostCreator do expect(public_post.errors.full_messages).to include(I18n.t('secure_upload_not_allowed_in_public_topic', upload_filenames: video_upload.original_filename)) end + it "allows an existing upload to be used again in nonPM topics in login_required sites" do + SiteSetting.login_required = true + + public_post = PostCreator.create( + user, + topic_id: public_topic.id, + raw: "Reusing this image on a public topic in a login_required site:\n![](#{image_upload.short_path})" + ) + + expect(public_post.errors.count).to be(0) + end + end end From d7b710194dfc0f5ab548d320a8238e68a99c2f9b Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 21 Nov 2019 10:35:46 -0500 Subject: [PATCH 249/408] Revert "REVERT: Use 1.0.6 for linting for now" This reverts commit 457986d52ad47fd362a5b6464f1781173c7248bb. --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 80e43683e1..a42bcfa7af 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "chrome-launcher": "^0.12.0", "chrome-remote-interface": "^0.25", "eslint": "^4.19", - "eslint-config-discourse": "1.0.6", + "eslint-config-discourse": "1.0.7", "install-peerdeps": "^1.10.2", "lodash-cli": "https://github.com/lodash-archive/lodash-cli.git", "pretender": "^1.6", diff --git a/yarn.lock b/yarn.lock index cb8752c0d3..fd0c8fe8eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -886,10 +886,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-discourse@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.6.tgz#cfd23c7d7b92ca9c416cbc30272be197a823cbe3" - integrity sha512-JOTncJzusPnYC97rXRQLewk5CxToL31spw7dzDbVk9XkZpnmRenbWmRawW2OEkbbXow3AdcKj/ousmo9PttwbA== +eslint-config-discourse@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.7.tgz#6e4a67fee63b7eb0f97c14fbf67d6fc5f84896bb" + integrity sha512-KPP/sfGWAfn7Wnx/lP9x6eMCmC2ag42NK5Dgj5EsOypQGe1Ct4KA2z0fEGuIqGxDoh5xEZB2Nf6qD/lv0gRg7w== eslint-scope@3.7.1: version "3.7.1" From 5ba63f8a98b55a92a28743510889acc74c801e4d Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 21 Nov 2019 11:39:50 -0600 Subject: [PATCH 250/408] FIX: Aliases for require functioning (#8387) --- app/assets/javascripts/discourse-loader.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index df386f8273..713f449eee 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -262,6 +262,7 @@ var define, requirejs; } requirejs = require = function(name) { + name = transformForAliases(this.name); if (EMBER_MODULES[name]) { return EMBER_MODULES[name]; } From 94e8fd68bf25550b80f70b7cbd7d64096dd994a8 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 21 Nov 2019 11:46:27 -0600 Subject: [PATCH 251/408] FIX: Remove uneeded from discourse loader (#8390) --- app/assets/javascripts/discourse-loader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse-loader.js b/app/assets/javascripts/discourse-loader.js index 713f449eee..0cf66dd923 100644 --- a/app/assets/javascripts/discourse-loader.js +++ b/app/assets/javascripts/discourse-loader.js @@ -262,7 +262,7 @@ var define, requirejs; } requirejs = require = function(name) { - name = transformForAliases(this.name); + name = transformForAliases(name); if (EMBER_MODULES[name]) { return EMBER_MODULES[name]; } From bbfafc31a79696ed301149445de1f88d2d538e46 Mon Sep 17 00:00:00 2001 From: Kris Date: Thu, 21 Nov 2019 14:43:20 -0500 Subject: [PATCH 252/408] UX: Increase fade on long sign-up form content for more evident scroll --- app/assets/stylesheets/desktop/login.scss | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/desktop/login.scss b/app/assets/stylesheets/desktop/login.scss index 40b59d5b68..0e2688db34 100644 --- a/app/assets/stylesheets/desktop/login.scss +++ b/app/assets/stylesheets/desktop/login.scss @@ -143,21 +143,25 @@ &:before { content: ""; display: block; - height: 25px; position: absolute; width: 100%; pointer-events: none; } &:after { bottom: 0; + height: 35px; + @media screen and (max-height: 650px) { + height: 45px; + } background-image: linear-gradient( to bottom, rgba($secondary, 0) 0%, - rgba($secondary, 1) 100% + rgba($secondary, 0.9) 100% ); } &:before { top: 0; + height: 25px; background-image: linear-gradient( to top, rgba($secondary, 0) 0%, @@ -167,10 +171,13 @@ form { box-sizing: border-box; padding: s(4 6); - margin-bottom: 5px; + margin-bottom: 0; max-height: 475px; - @media screen and (max-height: 768px) { - max-height: calc(60vh - 100px); + @media screen and (max-height: 650px) { + max-height: calc(65vh - 100px); + > *:last-child { + margin-bottom: 40px; + } } overflow-x: hidden; overflow-y: auto; @@ -203,6 +210,10 @@ } } + .user-fields { + margin-bottom: 20px; + } + .user-field { display: flex; flex-direction: column; From 23714e77c4e050c11a1a0c746d542cfa8cfdc6d9 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Fri, 22 Nov 2019 15:29:31 +1000 Subject: [PATCH 253/408] FIX: Always return secure_proxy_without_cdn url for secure media (#8394) There was an issue on dev where when uploading secure media, the href of the media was correctly being replaced in the CookedPostProcessor, but the srcset urls were not being replaced correctly. This is because UrlHelper.cook_url was returning the asset host URL for the media for secure media instead of returning early with the proxied secure proxy url. --- lib/url_helper.rb | 5 ++++ spec/components/url_helper_spec.rb | 42 ++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/lib/url_helper.rb b/lib/url_helper.rb index 2cb6e7ce3a..420420d3f0 100644 --- a/lib/url_helper.rb +++ b/lib/url_helper.rb @@ -64,6 +64,11 @@ class UrlHelper url = secure ? secure_proxy_without_cdn(url) : absolute_without_cdn(url) + # we always want secure media to come from + # Discourse.base_url_no_prefix/secure-media-uploads + # to avoid asset_host mixups + return schemaless(url) if secure + unless is_attachment && no_cdn url = Discourse.store.cdn_url(url) url = local_cdn_url(url) if Discourse.store.external? diff --git a/spec/components/url_helper_spec.rb b/spec/components/url_helper_spec.rb index ef84579965..8cdf7af138 100644 --- a/spec/components/url_helper_spec.rb +++ b/spec/components/url_helper_spec.rb @@ -131,4 +131,46 @@ describe UrlHelper do end end + describe "#cook_url" do + let(:url) { "//s3bucket.s3.dualstack.us-east-1.amazonaws.com/dev/original/3X/2/e/2e6f2ef81b6910ea592cd6d21ee897cd51cf72e4.jpeg" } + + before do + FileStore::S3Store.any_instance.stubs(:has_been_uploaded?).returns(true) + Rails.configuration.action_controller.asset_host = "https://test.some-cdn.com/dev" + SiteSetting.enable_s3_uploads = true + SiteSetting.s3_upload_bucket = "s3bucket" + SiteSetting.s3_access_key_id = "s3_access_key_id" + SiteSetting.s3_secret_access_key = "s3_secret_access_key" + SiteSetting.login_required = true + end + + def cooked + UrlHelper.cook_url(url, secure: secure) + end + + context "when the upload for the url is secure" do + let(:secure) { true } + + it "returns the secure_proxy_without_cdn url, with no asset host URL change" do + expect(cooked).to eq( + "//test.localhost/secure-media-uploads/dev/original/3X/2/e/2e6f2ef81b6910ea592cd6d21ee897cd51cf72e4.jpeg" + ) + end + end + + context "when the upload for the url is not secure" do + let(:secure) { false } + + it "returns the local_cdn_url" do + expect(cooked).to eq( + "//s3bucket.s3.dualstack.us-east-1.amazonaws.com/dev/original/3X/2/e/2e6f2ef81b6910ea592cd6d21ee897cd51cf72e4.jpeg" + ) + end + end + + after do + Rails.configuration.action_controller.asset_host = nil + end + end + end From 7fb6ab8dcdbaa70fce48141b139922376be328ff Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Fri, 22 Nov 2019 16:14:01 +1000 Subject: [PATCH 254/408] match postinstall eslint-config-discourse version to dependency --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a42bcfa7af..1421e4e4c1 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,6 @@ }, "scripts": { "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('NPM is not supported, please use Yarn instead. ')\"", - "postinstall": "install-peerdeps --dev eslint-config-discourse@1.0.6 -Y --extra-args \"--ignore-scripts\"" + "postinstall": "install-peerdeps --dev eslint-config-discourse@1.0.7 -Y --extra-args \"--ignore-scripts\"" } } From 50182e4e101add5232ba1e2e2a6cc02fb1c4ae1c Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Fri, 22 Nov 2019 16:29:14 +1000 Subject: [PATCH 255/408] Revert "match postinstall eslint-config-discourse version to dependency" This reverts commit 7fb6ab8dcdbaa70fce48141b139922376be328ff. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1421e4e4c1..a42bcfa7af 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,6 @@ }, "scripts": { "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('NPM is not supported, please use Yarn instead. ')\"", - "postinstall": "install-peerdeps --dev eslint-config-discourse@1.0.7 -Y --extra-args \"--ignore-scripts\"" + "postinstall": "install-peerdeps --dev eslint-config-discourse@1.0.6 -Y --extra-args \"--ignore-scripts\"" } } From 2e9e5573606340092bad9e42a70daa2087522074 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Fri, 22 Nov 2019 11:16:44 +0000 Subject: [PATCH 256/408] DEV: Remove dead code Given that this is a route, the 'model' attribute is the hook rather than an object. --- .../javascripts/discourse/routes/discovery-categories.js.es6 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/routes/discovery-categories.js.es6 b/app/assets/javascripts/discourse/routes/discovery-categories.js.es6 index f5bafdf12b..35b124aa5b 100644 --- a/app/assets/javascripts/discourse/routes/discovery-categories.js.es6 +++ b/app/assets/javascripts/discourse/routes/discovery-categories.js.es6 @@ -21,10 +21,7 @@ const DiscoveryCategoriesRoute = DiscourseRoute.extend(OpenComposer, { let style = !this.site.mobileView && this.siteSettings.desktop_category_page_style; - let parentCategory = this.get("model.parentCategory"); - if (parentCategory) { - return CategoryList.listForParent(this.store, parentCategory); - } else if (style === "categories_and_latest_topics") { + if (style === "categories_and_latest_topics") { return this._findCategoriesAndTopics("latest"); } else if (style === "categories_and_top_topics") { return this._findCategoriesAndTopics("top"); From 2c335efd1e8b38fe0e08465efa853faeba787502 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Sat, 23 Nov 2019 01:16:14 +1100 Subject: [PATCH 257/408] FIX: method names incorrect (#8393) --- .../components/multi-select/multi-select-filter.js.es6 | 2 +- .../select-kit/components/select-kit/select-kit-filter.js.es6 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/select-kit/components/multi-select/multi-select-filter.js.es6 b/app/assets/javascripts/select-kit/components/multi-select/multi-select-filter.js.es6 index 3732ccd914..4224d8d6b4 100644 --- a/app/assets/javascripts/select-kit/components/multi-select/multi-select-filter.js.es6 +++ b/app/assets/javascripts/select-kit/components/multi-select/multi-select-filter.js.es6 @@ -7,7 +7,7 @@ export default SelectKitFilterComponent.extend({ classNames: ["multi-select-filter"], @discourseComputed("placeholder", "hasSelection") - discourseComputedPlaceholder(placeholder, hasSelection) { + computedPlaceholder(placeholder, hasSelection) { if (hasSelection) return ""; return isEmpty(placeholder) ? "" : I18n.t(placeholder); } diff --git a/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 b/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 index 7366fc884c..9212f52fda 100644 --- a/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 +++ b/app/assets/javascripts/select-kit/components/select-kit/select-kit-filter.js.es6 @@ -11,7 +11,7 @@ export default Component.extend({ isHidden: not("shouldDisplayFilter"), @discourseComputed("placeholder") - discourseComputedPlaceholder(placeholder) { + computedPlaceholder(placeholder) { return isEmpty(placeholder) ? "" : I18n.t(placeholder); } }); From a40bc1e92b5a6880a36cc3a4e5a7ac55ebe7ccd9 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Fri, 22 Nov 2019 17:14:27 +0100 Subject: [PATCH 258/408] FIX: prevents timezone to show duplicated zones in preview It could happen if you have Etc/UTC in default settings, and timezone="UTC" on date, the equality check is now more strict. --- .../discourse-local-dates.js.no-module.es6 | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js.no-module.es6 b/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js.no-module.es6 index 3be2593ce2..d9c9f138e0 100644 --- a/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js.no-module.es6 +++ b/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js.no-module.es6 @@ -125,6 +125,10 @@ } function _isEqualZones(timezoneA, timezoneB) { + if (timezoneA.includes(timezoneB) || timezoneB.includes(timezoneA)) { + return true; + } + return ( moment.tz(timezoneA).utcOffset() === moment.tz(timezoneB).utcOffset() ); @@ -222,7 +226,9 @@ const previewedTimezones = []; const watchingUserTimezone = moment.tz.guess(); const timezones = options.timezones.filter( - timezone => timezone !== watchingUserTimezone + timezone => + !_isEqualZones(timezone, watchingUserTimezone) && + !_isEqualZones(timezone, options.timezone) ); previewedTimezones.push({ @@ -244,26 +250,24 @@ timezones.unshift(options.timezone); } - timezones - .filter(z => z) - .forEach(timezone => { - if (_isEqualZones(timezone, displayedTimezone)) { - return; - } + timezones.filter(Boolean).forEach(timezone => { + if (_isEqualZones(timezone, displayedTimezone)) { + return; + } - if (_isEqualZones(timezone, watchingUserTimezone)) { - timezone = watchingUserTimezone; - } + if (_isEqualZones(timezone, watchingUserTimezone)) { + timezone = watchingUserTimezone; + } - previewedTimezones.push({ - timezone, - dateTime: options.time - ? moment(dateTime) - .tz(timezone) - .format("LLL") - : _createDateTimeRange(dateTime, timezone) - }); + previewedTimezones.push({ + timezone, + dateTime: options.time + ? moment(dateTime) + .tz(timezone) + .format("LLL") + : _createDateTimeRange(dateTime, timezone) }); + }); if (!previewedTimezones.length) { previewedTimezones.push({ From a53b00a8583a6d7a99a4f2f85b252cfd1d80d867 Mon Sep 17 00:00:00 2001 From: romanrizzi Date: Fri, 22 Nov 2019 13:44:31 -0300 Subject: [PATCH 259/408] DEV: Pass query to the icon outlet --- app/assets/javascripts/admin/templates/users-list-show.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/admin/templates/users-list-show.hbs b/app/assets/javascripts/admin/templates/users-list-show.hbs index 8bb4ab6f08..d31a38c1f6 100644 --- a/app/assets/javascripts/admin/templates/users-list-show.hbs +++ b/app/assets/javascripts/admin/templates/users-list-show.hbs @@ -91,7 +91,7 @@ {{#if user.second_factor_enabled}} {{d-icon "lock" title="admin.user.second_factor_enabled" }} {{/if}} - {{plugin-outlet name="admin-users-list-icon" tagName="" args=(hash user=user)}} + {{plugin-outlet name="admin-users-list-icon" tagName="" args=(hash user=user query=query)}} {{/each}} From 680cf2496501332e9b7acc643ce72619fb549fd4 Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 22 Nov 2019 13:04:36 -0500 Subject: [PATCH 260/408] UX: Make share icons consistent color for dark themes --- app/assets/stylesheets/common/base/share_link.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/common/base/share_link.scss b/app/assets/stylesheets/common/base/share_link.scss index 38d7340ef6..6f5e4f69dc 100644 --- a/app/assets/stylesheets/common/base/share_link.scss +++ b/app/assets/stylesheets/common/base/share_link.scss @@ -54,7 +54,10 @@ .social-link { margin-right: s(2); font-size: $font-up-4; - .d-icon-fab-facebook-square { + .d-icon { + color: dark-light-choose($tertiary, white); + } + .d-icon-fab-facebook { // Adheres to Facebook brand guidelines color: dark-light-choose($facebook, white); } From 9c4e1541d3d0f8156f9ae96977b9e3c3393a5390 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Fri, 22 Nov 2019 13:16:11 -0500 Subject: [PATCH 261/408] DEV: Use eslint-config-discourse as source of truth for linting dependencies (#8388) --- package.json | 9 +- yarn.lock | 530 ++------------------------------------------------- 2 files changed, 14 insertions(+), 525 deletions(-) diff --git a/package.json b/package.json index a42bcfa7af..b47cbba841 100644 --- a/package.json +++ b/package.json @@ -39,22 +39,17 @@ }, "devDependencies": { "@arkweid/lefthook": "^0.6.3", - "babel-eslint": "^8.2", "chrome-launcher": "^0.12.0", "chrome-remote-interface": "^0.25", - "eslint": "^4.19", - "eslint-config-discourse": "1.0.7", - "install-peerdeps": "^1.10.2", + "eslint-config-discourse": "1.1.0", "lodash-cli": "https://github.com/lodash-archive/lodash-cli.git", "pretender": "^1.6", - "prettier": "^1.19.1", "puppeteer": "1.20", "qunit": "2.8.0", "route-recognizer": "^0.3.3", "sinon": "^7.2.5" }, "scripts": { - "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('NPM is not supported, please use Yarn instead. ')\"", - "postinstall": "install-peerdeps --dev eslint-config-discourse@1.0.6 -Y --extra-args \"--ignore-scripts\"" + "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('NPM is not supported, please use Yarn instead. ')\"" } } diff --git a/yarn.lock b/yarn.lock index fd0c8fe8eb..7c248b2373 100644 --- a/yarn.lock +++ b/yarn.lock @@ -175,16 +175,6 @@ ajv@^5.2.3, ajv@^5.3.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -199,7 +189,7 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-regex@^2.0.0, ansi-regex@^2.1.1: +ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= @@ -261,18 +251,6 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -288,26 +266,11 @@ async@~0.2.6: resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== - babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -329,23 +292,6 @@ babel-eslint@^8.2: eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" -babel-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - babylon@7.0.0-beta.44: version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" @@ -369,13 +315,6 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - bootbox@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/bootbox/-/bootbox-3.2.0.tgz#00bf643fc9edefd9ae1e7c648c6b022db4be0aee" @@ -461,11 +400,6 @@ capture-exit@^1.2.0: dependencies: rsvp "^3.3.3" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" @@ -556,18 +490,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-color@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f" - integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w== - dependencies: - ansi-regex "^2.1.1" - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - memoizee "^0.4.14" - timers-ext "^0.1.5" - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -631,13 +553,6 @@ color-name@^1.0.0: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - commander@2.11.x: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -648,11 +563,6 @@ commander@2.12.2: resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" integrity sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA== -commander@^2.11.0: - version "2.20.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9" - integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg== - commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -683,12 +593,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== - -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -713,21 +618,6 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -786,11 +676,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -808,14 +693,6 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -833,24 +710,6 @@ entities@~2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== -es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.51, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.51" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.51.tgz#ed2d7d9d48a12df86e0299287e93a09ff478842f" - integrity sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" - -es6-iterator@^2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" @@ -863,33 +722,19 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.2.tgz#859fdd34f32e905ff06d752e7171ddd4444a7ed1" - integrity sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.51" - -es6-weak-map@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-discourse@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.0.7.tgz#6e4a67fee63b7eb0f97c14fbf67d6fc5f84896bb" - integrity sha512-KPP/sfGWAfn7Wnx/lP9x6eMCmC2ag42NK5Dgj5EsOypQGe1Ct4KA2z0fEGuIqGxDoh5xEZB2Nf6qD/lv0gRg7w== +eslint-config-discourse@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-discourse/-/eslint-config-discourse-1.1.0.tgz#1f2b1ffd6064c579bc74eca63420bd3cd5732950" + integrity sha512-y2osWnbIi/CS2hDm61K6vdYA5vEuFJRetI2UFlEo8rQCx2t46XUd+FkgAvBy0nzLSm7ELBKru5qYKveKFF6eAg== + dependencies: + babel-eslint "^8.2" + eslint "^4.19" + prettier "^1.19.1" eslint-scope@3.7.1: version "3.7.1" @@ -993,14 +838,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - exec-sh@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" @@ -1066,11 +903,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - external-editor@^2.0.4: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" @@ -1104,16 +936,6 @@ extract-zip@^1.6.6: mkdirp "0.5.1" yauzl "2.4.1" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fake-xml-http-request@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/fake-xml-http-request/-/fake-xml-http-request-1.6.0.tgz#bd0ac79ae3e2660098282048a12c730a6f64d550" @@ -1124,11 +946,6 @@ fast-deep-equal@^1.0.0: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -1207,20 +1024,6 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -1250,13 +1053,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - glob@7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" @@ -1339,19 +1135,6 @@ handlebars@^4.1.2: optionalDependencies: uglify-js "^3.1.4" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -1410,15 +1193,6 @@ homedir-polyfill@^1.0.1: version "2.0.0" resolved "https://github.com/tautologistics/node-htmlparser#9613b99096ac1757b81695b1a4bbee7f10afcd7f" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" @@ -1482,20 +1256,6 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" -install-peerdeps@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/install-peerdeps/-/install-peerdeps-1.10.2.tgz#b244563d1ead9229d9520729dbb015122e0382c5" - integrity sha512-cnEy9kfGB8SlxyQFGa7+uKk+PvrD/NTKjn5Emg/+kKBIF7AXxFgTWOHwUhQNbZnauuPuVCtZnap6d3ADYis8FA== - dependencies: - babel-polyfill "^6.26.0" - cli-color "^1.2.0" - commander "^2.11.0" - https-proxy-agent "^2.2.1" - promptly "^2.1.0" - request "^2.83.0" - request-promise-native "^1.0.5" - semver "^5.5.0" - intersection-observer@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.5.1.tgz#e340fc56ce74290fe2b2394d1ce88c4353ac6dfa" @@ -1602,7 +1362,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-promise@^2.1, is-promise@^2.1.0: +is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= @@ -1617,11 +1377,6 @@ is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -1659,11 +1414,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - jquery-color@3.0.0-alpha.1: version "3.0.0-alpha.1" resolved "https://registry.yarnpkg.com/jquery-color/-/jquery-color-3.0.0-alpha.1.tgz#0c00ed91251bac45fc4ff3143939f434ef46d188" @@ -1715,11 +1465,6 @@ js-yaml@^3.9.1: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -1730,36 +1475,11 @@ json-schema-traverse@^0.3.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - just-extend@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc" @@ -1867,13 +1587,6 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -lru-queue@0.1: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= - dependencies: - es5-ext "~0.10.2" - magnific-popup@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/magnific-popup/-/magnific-popup-1.1.0.tgz#3e7362c5bd18f6785fe99e59d013e20af33d3049" @@ -1926,20 +1639,6 @@ mdurl@^1.0.1: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -memoizee@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" - integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== - dependencies: - d "1" - es5-ext "^0.10.45" - es6-weak-map "^2.0.2" - event-emitter "^0.3.5" - is-promise "^2.1" - lru-queue "0.1" - next-tick "1" - timers-ext "^0.1.5" - merge@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" @@ -1964,18 +1663,6 @@ micromatch@^3.0.4, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== - dependencies: - mime-db "1.40.0" - mime@^2.0.3: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" @@ -2063,11 +1750,6 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -2095,11 +1777,6 @@ neo-async@^2.6.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== -next-tick@1, next-tick@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -2135,11 +1812,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2254,11 +1926,6 @@ pend@~1.2.0: resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - pikaday@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/pikaday/-/pikaday-1.8.0.tgz#ce930e257042e852e6aadee1115e01554b2d71c5" @@ -2302,13 +1969,6 @@ progress@^2.0.0, progress@^2.0.1: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promptly@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/promptly/-/promptly-2.2.0.tgz#2a13fa063688a2a5983b161fff0108a07d26fc74" - integrity sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ= - dependencies: - read "^1.0.4" - proxy-from-env@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" @@ -2319,11 +1979,6 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: - version "1.4.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" - integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -2332,16 +1987,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - puppeteer@1.20: version "1.20.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.20.0.tgz#e3d267786f74e1d87cf2d15acc59177f471bbe38" @@ -2356,11 +2001,6 @@ puppeteer@1.20: rimraf "^2.6.1" ws "^6.1.0" -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - qunit@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.8.0.tgz#007474727cdba323c35f9526e21c0687f8ea04b3" @@ -2374,13 +2014,6 @@ qunit@2.8.0: sane "^4.0.0" walk-sync "0.3.2" -read@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - readable-stream@^2.2.2: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -2394,16 +2027,6 @@ readable-stream@^2.2.2: string_decoder "~1.1.1" util-deprecate "~1.0.1" -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -2432,48 +2055,6 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== - dependencies: - lodash "^4.17.11" - -request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== - dependencies: - request-promise-core "1.1.2" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.83.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -2575,11 +2156,6 @@ rx-lite@*, rx-lite@^4.0.8: resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== - safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -2592,7 +2168,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -2757,21 +2333,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -2780,11 +2341,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -2858,14 +2414,6 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timers-ext@^0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -2908,39 +2456,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@^2.3.3: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -2953,11 +2473,6 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -3014,13 +2529,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -3036,20 +2544,6 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - walk-sync@0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.3.2.tgz#4827280afc42d0e035367c4a4e31eeac0d136f75" From 0a6b29a9424ebb4ff77675e435ea460265de79f8 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Fri, 22 Nov 2019 13:27:47 -0500 Subject: [PATCH 262/408] DEV: Allow skipping --fail-fast rspec option for plugin specs --- lib/tasks/docker.rake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/tasks/docker.rake b/lib/tasks/docker.rake index 4ec81bc33c..a5cefd3d3a 100644 --- a/lib/tasks/docker.rake +++ b/lib/tasks/docker.rake @@ -191,7 +191,8 @@ task 'docker:test' do if ENV["SINGLE_PLUGIN"] @good &&= run_or_fail("bundle exec rake plugin:spec['#{ENV["SINGLE_PLUGIN"]}']") else - @good &&= run_or_fail("RSPEC_FAILFAST=1 bundle exec rake plugin:spec") + fail_fast = "RSPEC_FAILFAST=1" unless ENV["SKIP_FAILFAST"] + @good &&= run_or_fail("#{fail_fast} bundle exec rake plugin:spec") end end puts "travis_fold:end:ruby_tests" if ENV["TRAVIS"] From c498780479cff08730994d16dac578753d97bffc Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Fri, 22 Nov 2019 19:43:37 +0100 Subject: [PATCH 263/408] FIX: prevents exception and more duplicates (#8396) --- .../javascripts/discourse-local-dates.js.no-module.es6 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js.no-module.es6 b/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js.no-module.es6 index d9c9f138e0..6e4545931f 100644 --- a/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js.no-module.es6 +++ b/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js.no-module.es6 @@ -125,6 +125,10 @@ } function _isEqualZones(timezoneA, timezoneB) { + if ((timezoneA || timezoneB) && (!timezoneA || !timezoneB)) { + return false; + } + if (timezoneA.includes(timezoneB) || timezoneB.includes(timezoneA)) { return true; } @@ -250,7 +254,7 @@ timezones.unshift(options.timezone); } - timezones.filter(Boolean).forEach(timezone => { + Array.from(new Set(timezones.filter(Boolean))).forEach(timezone => { if (_isEqualZones(timezone, displayedTimezone)) { return; } From fd0025a735614f8bac8cb6a88004d3dfb547aa5e Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Fri, 22 Nov 2019 16:06:39 -0300 Subject: [PATCH 264/408] FEATURE: Add export poll button (#8370) This PR aims to make poll results easily exportable to staff in a CSV format, so they can be analyzed in external software. It also makes the export data easily customizable by allowing users to leverage any data explorer query to generate the report. By default, we use a query that ships with data explorer, but user can change the ID in settings or use 0 to disable this feature. One potential upgrade is using the recent work that allows arbitrary group to run data explorer and allow all the groups with access to the configured query to also export polls, but that can be added later. Co-Authored-By: Joffrey JAFFEUX --- .../javascripts/widgets/discourse-poll.js.es6 | 56 +++++++++++++++++++ .../poll/assets/stylesheets/desktop/poll.scss | 4 ++ plugins/poll/config/locales/client.en.yml | 5 ++ plugins/poll/config/locales/server.en.yml | 1 + plugins/poll/config/settings.yml | 4 ++ 5 files changed, 70 insertions(+) diff --git a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 index 15ef6ee130..377107083d 100644 --- a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 +++ b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 @@ -425,7 +425,9 @@ createWidget("discourse-poll-buttons", { const closed = attrs.isClosed; const staffOnly = poll.results === "staff_only"; const isStaff = this.currentUser && this.currentUser.staff; + const dataExplorerEnabled = this.siteSettings.data_explorer_enabled; const hideResultsDisabled = !staffOnly && (closed || topicArchived); + const exportQueryID = this.siteSettings.poll_export_data_explorer_query_id; if (attrs.isMultiple && !hideResultsDisabled) { const castVotesDisabled = !attrs.canCastVotes; @@ -475,6 +477,19 @@ createWidget("discourse-poll-buttons", { } } + if (isStaff && dataExplorerEnabled && poll.voters > 0 && exportQueryID) { + contents.push( + this.attach("button", { + className: "btn btn-default export-results", + label: "poll.export-results.label", + title: "poll.export-results.title", + icon: "download", + disabled: poll.voters === 0, + action: "exportResults" + }) + ); + } + if (poll.get("close")) { const closeDate = moment.utc(poll.get("close")); if (closeDate.isValid()) { @@ -685,6 +700,47 @@ export default createWidget("discourse-poll", { this.state.showResults = !this.state.showResults; }, + exportResults() { + const { attrs } = this; + const queryID = this.siteSettings.poll_export_data_explorer_query_id; + + // This uses the Data Explorer plugin export as CSV route + // There is detection to check if the plugin is enabled before showing the button + ajax(`/admin/plugins/explorer/queries/${queryID}/run.csv`, { + type: "POST", + data: { + // needed for data-explorer route compatibility + params: JSON.stringify({ + poll_name: attrs.poll.name, + post_id: attrs.post.id.toString() // needed for data-explorer route compatibility + }), + explain: false, + limit: 1000000, + download: 1 + } + }) + .then(csvContent => { + const downloadLink = document.createElement("a"); + const blob = new Blob([csvContent], { + type: "text/csv;charset=utf-8;" + }); + downloadLink.href = URL.createObjectURL(blob); + downloadLink.setAttribute( + "download", + `poll-export-${attrs.poll.name}-${attrs.post.id}.csv` + ); + downloadLink.click(); + downloadLink.remove(); + }) + .catch(error => { + if (error) { + popupAjaxError(error); + } else { + bootbox.alert(I18n.t("poll.error_while_exporting_results")); + } + }); + }, + showLogin() { this.register.lookup("route:application").send("showLogin"); }, diff --git a/plugins/poll/assets/stylesheets/desktop/poll.scss b/plugins/poll/assets/stylesheets/desktop/poll.scss index 6926e4a702..633119c261 100644 --- a/plugins/poll/assets/stylesheets/desktop/poll.scss +++ b/plugins/poll/assets/stylesheets/desktop/poll.scss @@ -36,6 +36,10 @@ div.poll { line-height: 2em; } + :not(:first-child):not(:last-child) { + margin-left: 1em; + } + .toggle-status { float: right; } diff --git a/plugins/poll/config/locales/client.en.yml b/plugins/poll/config/locales/client.en.yml index 50a8b47d9e..c400002903 100644 --- a/plugins/poll/config/locales/client.en.yml +++ b/plugins/poll/config/locales/client.en.yml @@ -63,6 +63,10 @@ en: title: "Back to your votes" label: "Hide results" + export-results: + title: "Export the poll results" + label: "Export" + open: title: "Open the poll" label: "Open" @@ -80,6 +84,7 @@ en: error_while_toggling_status: "Sorry, there was an error toggling the status of this poll." error_while_casting_votes: "Sorry, there was an error casting your votes." error_while_fetching_voters: "Sorry, there was an error displaying the voters." + error_while_exporting_results: "Sorry, there was an error exporting poll results." ui_builder: title: Build Poll diff --git a/plugins/poll/config/locales/server.en.yml b/plugins/poll/config/locales/server.en.yml index c667a9dd95..2a67f75fff 100644 --- a/plugins/poll/config/locales/server.en.yml +++ b/plugins/poll/config/locales/server.en.yml @@ -20,6 +20,7 @@ en: poll_maximum_options: "Maximum number of options allowed in a poll." poll_edit_window_mins: "Number of minutes after post creation during which polls can be edited." poll_minimum_trust_level_to_create: "Define the minimum trust level needed to create polls." + poll_export_data_explorer_query_id: "ID of the Data Explorer Query to use for exporting poll results (0 to disable)." poll: poll: "poll" diff --git a/plugins/poll/config/settings.yml b/plugins/poll/config/settings.yml index 24bd92e0a1..41b20fc329 100644 --- a/plugins/poll/config/settings.yml +++ b/plugins/poll/config/settings.yml @@ -14,3 +14,7 @@ plugins: default: 1 client: true enum: 'TrustLevelSetting' + poll_export_data_explorer_query_id: + default: -16 + min: -9999 + client: true From c92f0b8775fddd4f0ec27e17433fef40298404f8 Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Fri, 22 Nov 2019 16:33:10 -0300 Subject: [PATCH 265/408] FEATURE: New API to apply custom filters to the review queue (#8392) --- .../discourse/controllers/review-index.js.es6 | 8 ++++-- .../discourse/routes/review-index.js.es6 | 3 ++- .../discourse/templates/review-index.hbs | 2 +- app/controllers/reviewables_controller.rb | 13 +++++----- app/models/reviewable.rb | 25 ++++++++++++++++++- lib/plugin/instance.rb | 9 +++++++ spec/models/reviewable_spec.rb | 25 +++++++++++++++++++ 7 files changed, 74 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/review-index.js.es6 b/app/assets/javascripts/discourse/controllers/review-index.js.es6 index 0c9f090aa4..aeb61d7d61 100644 --- a/app/assets/javascripts/discourse/controllers/review-index.js.es6 +++ b/app/assets/javascripts/discourse/controllers/review-index.js.es6 @@ -11,7 +11,8 @@ export default Controller.extend({ "username", "from_date", "to_date", - "sort_order" + "sort_order", + "additional_filters" ], type: null, status: "pending", @@ -24,6 +25,7 @@ export default Controller.extend({ from_date: null, to_date: null, sort_order: "priority", + additional_filters: null, init(...args) { this._super(...args); @@ -118,8 +120,10 @@ export default Controller.extend({ username: this.filterUsername, from_date: this.filterFromDate, to_date: this.filterToDate, - sort_order: this.filterSortOrder + sort_order: this.filterSortOrder, + additional_filters: JSON.stringify(this.additionalFilters) }); + this.send("refreshRoute"); }, diff --git a/app/assets/javascripts/discourse/routes/review-index.js.es6 b/app/assets/javascripts/discourse/routes/review-index.js.es6 index 2c08fa8ed5..3da7513e6d 100644 --- a/app/assets/javascripts/discourse/routes/review-index.js.es6 +++ b/app/assets/javascripts/discourse/routes/review-index.js.es6 @@ -25,7 +25,8 @@ export default DiscourseRoute.extend({ filterUsername: meta.username, filterFromDate: meta.from_date, filterToDate: meta.to_date, - filterSortOrder: meta.sort_order + filterSortOrder: meta.sort_order, + additionalFilters: meta.additional_filters || {} }); }, diff --git a/app/assets/javascripts/discourse/templates/review-index.hbs b/app/assets/javascripts/discourse/templates/review-index.hbs index 76f2fe2062..277c7723f8 100644 --- a/app/assets/javascripts/discourse/templates/review-index.hbs +++ b/app/assets/javascripts/discourse/templates/review-index.hbs @@ -24,7 +24,7 @@ {{#if filtersExpanded}} - {{plugin-outlet name="above-review-filters" args=(hash model=model)}} + {{plugin-outlet name="above-review-filters" args=(hash model=model additionalFilters=additionalFilters)}}
diff --git a/app/controllers/reviewables_controller.rb b/app/controllers/reviewables_controller.rb index 47d65c1efd..83738cb21d 100644 --- a/app/controllers/reviewables_controller.rb +++ b/app/controllers/reviewables_controller.rb @@ -20,18 +20,19 @@ class ReviewablesController < ApplicationController topic_id = params[:topic_id] ? params[:topic_id].to_i : nil category_id = params[:category_id] ? params[:category_id].to_i : nil + custom_keys = Reviewable.custom_filters.map(&:first) + additional_filters = JSON.parse(params.fetch(:additional_filters, {}), symbolize_names: true).slice(*custom_keys) filters = { status: status, category_id: category_id, topic_id: topic_id, - priority: params[:priority], - username: params[:username], - from_date: params[:from_date], - to_date: params[:to_date], - type: params[:type], - sort_order: params[:sort_order] + additional_filters: additional_filters.reject { |_, v| v.blank? } } + %i[priority username from_date to_date type sort_order].each do |filter_key| + filters[filter_key] = params[filter_key] + end + total_rows = Reviewable.list_for(current_user, filters).count reviewables = Reviewable.list_for(current_user, filters.merge(limit: PER_PAGE, offset: offset)).to_a diff --git a/app/models/reviewable.rb b/app/models/reviewable.rb index f8a0398597..287d5a5f92 100644 --- a/app/models/reviewable.rb +++ b/app/models/reviewable.rb @@ -98,6 +98,18 @@ class Reviewable < ActiveRecord::Base %w[ReviewableFlaggedPost ReviewableQueuedPost ReviewableUser] end + def self.custom_filters + @reviewable_filters ||= [] + end + + def self.add_custom_filter(new_filter) + custom_filters << new_filter + end + + def self.clear_custom_filters! + @reviewable_filters = [] + end + def created_new! self.created_new = true self.topic = target.topic if topic.blank? && target.is_a?(Post) @@ -408,7 +420,8 @@ class Reviewable < ActiveRecord::Base username: nil, sort_order: nil, from_date: nil, - to_date: nil + to_date: nil, + additional_filters: {} ) min_score = Reviewable.min_score_for_priority(priority) @@ -439,6 +452,16 @@ class Reviewable < ActiveRecord::Base result = result.where("created_at >= ?", from_date) if from_date result = result.where("created_at <= ?", to_date) if to_date + if !custom_filters.empty? + result = custom_filters.reduce(result) do |memo, filter| + key = filter.first + filter_query = filter.last + + next(memo) unless additional_filters[key] + filter_query.call(result, additional_filters[key]) + end + end + # If a reviewable doesn't have a target, allow us to filter on who created that reviewable. if user_id result = result.where( diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb index 945def58ba..19024de7a1 100644 --- a/lib/plugin/instance.rb +++ b/lib/plugin/instance.rb @@ -663,6 +663,15 @@ class Plugin::Instance File.exists?(js_file_path) end + # Receives an array with two elements: + # 1. A symbol that represents the name of the value to filter. + # 2. A Proc that takes the existing ActiveRecord::Relation and the value received from the front-end. + def add_custom_reviewable_filter(filter) + reloadable_patch do + Reviewable.add_custom_filter(filter) + end + end + protected def self.js_path diff --git a/spec/models/reviewable_spec.rb b/spec/models/reviewable_spec.rb index 6e8cfa32ce..84235644b1 100644 --- a/spec/models/reviewable_spec.rb +++ b/spec/models/reviewable_spec.rb @@ -435,4 +435,29 @@ RSpec.describe Reviewable, type: :model do expect(Reviewable.min_score_for_priority).to eq(45.6) end end + + context "custom filters" do + after do + Reviewable.clear_custom_filters! + end + + it 'correctly add a new filter' do + Reviewable.add_custom_filter([:assigned_to, Proc.new { |results, value| results }]) + + expect(Reviewable.custom_filters.size).to eq(1) + end + + it 'applies the custom filter' do + admin = Fabricate(:admin) + first_reviewable = Fabricate(:reviewable) + second_reviewable = Fabricate(:reviewable) + custom_filter = [:target_id, Proc.new { |results, value| results.where(target_id: value) }] + Reviewable.add_custom_filter(custom_filter) + + results = Reviewable.list_for(admin, additional_filters: { target_id: first_reviewable.target_id }) + + expect(results.size).to eq(1) + expect(results.first).to eq first_reviewable + end + end end From 0b7e1f95d276c80cbf49be1c0daf5e5599f99b3e Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 22 Nov 2019 14:53:26 -0500 Subject: [PATCH 266/408] DEV: Upgrade FontAwesome to 5.11.2 --- package.json | 2 +- .../assets/svg-icons/fontawesome/brands.svg | 704 +++------- .../assets/svg-icons/fontawesome/regular.svg | 156 +-- vendor/assets/svg-icons/fontawesome/solid.svg | 1157 +++-------------- yarn.lock | 8 +- 5 files changed, 330 insertions(+), 1697 deletions(-) diff --git a/package.json b/package.json index b47cbba841..91dd808343 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "author": "Discourse", "license": "MIT", "dependencies": { - "@fortawesome/fontawesome-free": "5.7.2", + "@fortawesome/fontawesome-free": "5.11.2", "ace-builds": "1.4.2", "bootbox": "3.2.0", "bootstrap": "v3.4.1", diff --git a/vendor/assets/svg-icons/fontawesome/brands.svg b/vendor/assets/svg-icons/fontawesome/brands.svg index 1c46f9a9a3..e0206c0d71 100644 --- a/vendor/assets/svg-icons/fontawesome/brands.svg +++ b/vendor/assets/svg-icons/fontawesome/brands.svg @@ -1,1663 +1,1309 @@ + - 500px - Accessible Icon - Accusoft - - Acquisitions Incorporated - + + - App.net - - Adobe - + + - Adversal - affiliatetheme + + + - Algolia - Alipay - Amazon - - Amazon Pay - + + - Amilia - Android - AngelList - Angry Creative - - Angular - + + - App Store - iOS App Store - Apper Systems AB - - Apple - + + - Apple Pay - - Artstation - + + - Asymmetrik, Ltd. - Atlassian - Audible - Autoprefixer - avianex - Aviato - Amazon Web Services (AWS) - Bandcamp + + + - Behance - Behance Square - BIMobject - - Bitbucket - + + - Bitcoin - Bity - Font Awesome Black Tie - BlackBerry - Blogger - Blogger B - Bluetooth - Bluetooth + + + - BTC + + + - Büromöbel-Experte GmbH & Co. KG. + + + - BuySellAds - - Canadian Maple Leaf - + + - Amazon Pay Credit Card - American Express Credit Card - Apple Pay Credit Card - Diner's Club Credit Card - Discover Credit Card - JCB Credit Card - MasterCard Credit Card - Paypal Credit Card - Stripe Credit Card - Visa Credit Card - Centercode - - Centos - + + - Chrome + + + - cloudscale.ch - Cloudsmith - cloudversify - Codepen - Codie Pie - Confluence - Connect Develop - Contao + + + - cPanel - Creative Commons - Creative Commons Attribution - Creative Commons Noncommercial - Creative Commons Noncommercial (Euro Sign) - Creative Commons Noncommercial (Yen Sign) - Creative Commons No Derivative Works - Creative Commons Public Domain - Alternate Creative Commons Public Domain - Creative Commons Remix - Creative Commons Share Alike - Creative Commons Sampling - Creative Commons Sampling + - Creative Commons Share - Creative Commons CC0 - - Critical Role - + + - CSS 3 Logo - Alternate CSS3 Logo - Cuttlefish - Dungeons & Dragons - D&D Beyond - DashCube - Delicious - deploy.dog - Deskpro - DEV - deviantART - DHL - - Diaspora - + + - Digg Logo - Digital Ocean - Discord - Discourse - DocHub - Docker - Draft2digital - Dribbble - Dribbble Square - Dropbox - Drupal Logo - Dyalog - Earlybirds - eBay - Edge Browser - Elementor - Ello - Ember - Galactic Empire - Envira Gallery - Erlang - Ethereum - Etsy + + + - ExpeditedSSL - - Facebook - + + - - Facebook F - + + - - Facebook Messenger - + + - Facebook Square - + - Fantasy Flight-games - FedEx - - Fedora - + + - - Figma - + + - Firefox - First Order - Alternate First Order - firstdraft - Flickr - Flipboard - Fly - Font Awesome - Alternate Font Awesome - Font Awesome Flag - Font Awesome Full Logo - Fonticons - Fonticons Fi - Fort Awesome - Alternate Fort Awesome - Forumbee - Foursquare - Free Code Camp - FreeBSD - - Fulcrum - + + - Galactic Republic - Galactic Senate - Get Pocket - GG Currency - GG Currency Circle - - Git - + + + + + - Git Square - + - GitHub - Alternate GitHub - GitHub Square - GitKraken - GitLab - Gitter - Glide - Glide G - Gofore - Goodreads - Goodreads G - Google Logo - Google Drive - Google Play - Google Plus - Google Plus G - Google Plus Square - Google Wallet - Gratipay (Gittip) - Grav - Gripfire, Inc. - Grunt - Gulp - Hacker News - Hacker News Square - - Hackerrank - + + - Hips - HireAHelper - Hooli - - Hornbill - + + - Hotjar - - Houzz - + + - HTML 5 Logo - HubSpot - IMDB - Instagram - Intercom - Internet-explorer - InVision - ioxhost + + + - iTunes - Itunes Note - - Java - + + - Jedi Order - Jenkis - Jira - Joget - Joomla Logo - JavaScript (JS) - JavaScript (JS) Square - jsFiddle - - Kaggle - + + - - Keybase - + + - KeyCDN - Kickstarter - Kickstarter K - KORVUE - - Laravel - + + - last.fm - last.fm Square - Leanpub - Less - Line - LinkedIn - - LinkedIn In - + + - Linode - Linux - lyft - Magento - - Mailchimp - + + - - Mandalorian - + + - Markdown - - Mastodon - + + - MaxCDN + + + - MedApps - Medium - Medium M - MRT - Meetup - Megaport - Mendeley - Microsoft - Mix - Mixcloud - Mizuni - MODX - Monero - Napster - - Neos - + + - - Nimblr - - - - Nintendo Switch - + + - Node.js - Node.js JS - npm - NS8 - Nutritionix - Odnoklassniki - Odnoklassniki Square - Old Republic - OpenCart - OpenID - Opera - Optin Monster - - Open Source Initiative - + + + + + - page4 Corporation - Pagelines - Palfed - Patreon - Paypal - Penny Arcade - Periscope - Phabricator - Phoenix Framework - - Phoenix Squadron - + + - PHP - Pied Piper Logo - Alternate Pied Piper Logo - Pied Piper-hat - Pied Piper PP Logo (Old) - Pinterest - Pinterest P - Pinterest Square - PlayStation - Product Hunt - Pushed - Python - QQ - - QuinScape - + + - Quora - R Project - Raspberry Pi - Ravelry - React - - ReactEurope - + + - ReadMe - Rebel Alliance - red river - reddit Logo - reddit Alien - reddit Square - Redhat - + - Renren - replyd - Researchgate - Resolving - - Rev.io - + + - - Rocket.Chat - + + - Rockrms - Safari - - Sass - + + + + + - SCHLIX - Scribd - Searchengin - Sellcast - Sellsy - Servicestack - Shirts in Bulk - - Shopware - + + - SimplyBuilt - SISTRIX - Sith - - Sketch - + + - skyatlas - Skype - Slack Logo - Slack Hashtag - Slideshare - Snapchat - Snapchat Ghost - Snapchat Square - SoundCloud - - Sourcetree - + + - - Speakap - + + + + + - Spotify - Squarespace - Stack Exchange - Stack Overflow + + + - StayLinked - Steam - Steam Square - Steam Symbol - Sticker Mule - - Strava - + + - Stripe - - Stripe S - + + - Studio Vinari - StumbleUpon Logo - StumbleUpon Circle - Superpowers - Supple - - Suse - + + - - TeamSpeak - + + + + + + + + - Telegram - Telegram Plane - Tencent Weibo - - The Red Yeti - + + - - Themeco - + + - ThemeIsle - - Think Peaks - + + - Trade Federation - Trello - TripAdvisor - Tumblr - Tumblr Square - Twitch - Twitter - Twitter Square - - Typo3 - + + - Uber - Ubuntu - UIkit + + + - Uniregistry - Untappd - - UPS - + + - USB - - United States Postal Service - + + - us-Sunnah Foundation - Vaadin - Viacoin - Video - Video Square - Viber - Vimeo - Vimeo Square - Vimeo - Vine - VK - VNV - Vue.js + + + - Weebly - Weibo - Weixin (WeChat) - What's App - What's App Square - WHMCS - Wikipedia W - Windows - Wix - Wizards of the Coast - - Wolf Pack Battalion - + + - WordPress Logo - Wordpress Simple - WPBeginner - WPExplorer - WPForms - wpressr - Xbox - Xing - Xing Square - Y Combinator - Yahoo Logo + + + - Yandex - Yandex International - Yarn - - Yelp - + + - Yoast - YouTube - YouTube Square - Zhihu diff --git a/vendor/assets/svg-icons/fontawesome/regular.svg b/vendor/assets/svg-icons/fontawesome/regular.svg index c9b33b6242..817aad1e56 100644 --- a/vendor/assets/svg-icons/fontawesome/regular.svg +++ b/vendor/assets/svg-icons/fontawesome/regular.svg @@ -1,611 +1,463 @@ + - Address Book - Address Card - Angry Face - Alternate Arrow Circle Down - Alternate Arrow Circle Left - Alternate Arrow Circle Right - Alternate Arrow Circle Up - bell - Bell Slash - bookmark - Building - Calendar - Alternate Calendar - Calendar Check - Calendar Minus - Calendar Plus - Calendar Times - Caret Square Down - Caret Square Left - Caret Square Right - Caret Square Up - Bar Chart - Check Circle - Check Square - Circle - Clipboard - Clock - Clone - Closed Captioning - comment - Alternate Comment - Comment Dots - comments - Compass - Copy - Copyright - Credit Card - Dizzy Face - Dot Circle - Edit - Envelope - Envelope Open - Eye - Eye Slash - File - Alternate File - Archive File - Audio File - Code File - Excel File - Image File - PDF File - Powerpoint File - Video File - Word File - flag - Flushed Face - Folder - Folder Open - Font Awesome Full Logo - Frowning Face - Frowning Face With Open Mouth - Futbol - Gem - Grimacing Face - Grinning Face - Alternate Grinning Face - Grinning Face With Smiling Eyes - Grinning Face With Sweat - Smiling Face With Heart-Eyes - Grinning Squinting Face - Rolling on the Floor Laughing - Star-Struck - Face With Tears of Joy - Face With Tongue - Squinting Face With Tongue - Winking Face With Tongue - Grinning Winking Face - Lizard (Hand) - Paper (Hand) - Peace (Hand) - Hand Pointing Down - Hand Pointing Left - Hand Pointing Right - Hand Pointing Up - Pointer (Hand) - Rock (Hand) - Scissors (Hand) - Spock (Hand) - Handshake - HDD - Heart - hospital - Hourglass - Identification Badge - Identification Card - Image - Images - Keyboard - Kissing Face - Kissing Face With Smiling Eyes - Face Blowing a Kiss - Grinning Face With Big Eyes - Laugh Face with Beaming Eyes - Laughing Squinting Face - Laughing Winking Face - Lemon - Life Ring - Lightbulb - Alternate List - Map - Neutral Face - Face Without Mouth - Face With Rolling Eyes - Minus Square - Alternate Money Bill - Moon - Newspaper - Object Group - Object Ungroup - Paper Plane - Pause Circle - Play Circle - Plus Square - Question Circle - Registered Trademark - Crying Face - Loudly Crying Face - Save - Share Square - Smiling Face - Beaming Face With Smiling Eyes - Winking Face - Snowflake - Square - Star - star-half - Sticky Note - Stop Circle - Sun - Hushed Face - thumbs-down - thumbs-up - Times Circle - Tired Face - Alternate Trash - User - User Circle - Window Close - Window Maximize - Window Minimize - Window Restore diff --git a/vendor/assets/svg-icons/fontawesome/solid.svg b/vendor/assets/svg-icons/fontawesome/solid.svg index 11d9cc0929..f62cc56f97 100644 --- a/vendor/assets/svg-icons/fontawesome/solid.svg +++ b/vendor/assets/svg-icons/fontawesome/solid.svg @@ -1,3755 +1,2890 @@ + - Address Book - Address Card - adjust - Air Freshener - align-center - + - align-justify - + - align-left - + - align-right - + - Allergies - ambulance - American Sign Language Interpreting - Anchor - Angle Double Down - Angle Double Left - Angle Double Right - Angle Double Up - angle-down - angle-left - angle-right - angle-up - Angry Face - Ankh - Fruit Apple - Archive - Archway - Alternate Arrow Circle Down - Alternate Arrow Circle Left - Alternate Arrow Circle Right - Alternate Arrow Circle Up - Arrow Circle Down - Arrow Circle Left - Arrow Circle Right - Arrow Circle Up - arrow-down - arrow-left - arrow-right - arrow-up - Alternate Arrows - Alternate Arrows Horizontal - Alternate Arrows Vertical - Assistive Listening Systems - asterisk - At - Atlas - Atom - Audio Description - Award - Baby - Baby Carriage - Backspace - backward - Bacon - Balance Scale + + + + + + - ban - Band-Aid - barcode - Bars - Baseball Ball - Basketball Ball - Bath - Battery Empty - Battery Full - Battery 1/2 Full - Battery 1/4 Full - Battery 3/4 Full - Bed - beer - bell - Bell Slash - Bezier Curve - Bible - Bicycle + + + - Binoculars - Biohazard - Birthday Cake - Blender - Blender Phone - Blind - Blog - bold - + - Lightning Bolt - Bomb - Bone - Bong - book - Book of the Dead - Medical Book - Book Open - Book Reader - bookmark + + + + + + + + + - Bowling Ball - Box - Box Open - Boxes - Braille - Brain - + - Bread Slice - Briefcase - Medical Briefcase - Broadcast Tower - Broom - Brush - Bug - Building - bullhorn - Bullseye - Burn - Bus - Bus Alt - Business Time - Calculator - Calendar - Alternate Calendar - Calendar Check - Calendar with Day Focus - Calendar Minus - Calendar Plus - Calendar Times - Calendar with Week Focus - camera - Retro Camera - Campground - Candy Cane - Cannabis - Capsules - Car - Alternate Car - Car Battery - Car Crash - Car Side - Caret Down - Caret Left - Caret Right - Caret Square Down - Caret Square Left - Caret Square Right - Caret Square Up - Caret Up - Carrot - Shopping Cart Arrow Down - Add to Shopping Cart - Cash Register - Cat - certificate - Chair - Chalkboard - Chalkboard Teacher - Charging Station - Area Chart - Bar Chart - Line Chart - Pie Chart - Check - Check Circle - Check Double - + - Check Square - Cheese - Chess - + - Chess Bishop - + - Chess Board - + - Chess King - + - Chess Knight - + - Chess Pawn - + - Chess Queen - + - Chess Rook - + - Chevron Circle Down - Chevron Circle Left - Chevron Circle Right - Chevron Circle Up - chevron-down - chevron-left - chevron-right - chevron-up - Child - Church - Circle - Circle Notched - City - Medical Clinic - Clipboard - Clipboard with Check - Clipboard List - Clock - Clone - Closed Captioning - Cloud - Alternate Cloud Download - Cloud with (a chance of) Meatball - Cloud with Moon - Cloud with Moon and Rain - Cloud with Rain - Cloud with Heavy Showers - Cloud with Sun - Cloud with Sun and Rain - Alternate Cloud Upload - Cocktail - Code - Code Branch - Coffee - cog - cogs - Coins - Columns - comment - Alternate Comment - Comment Dollar - Comment Dots - Alternate Medical Chat - Comment Slash - comments - Comments Dollar - Compact Disc - Compass - Compress - Alternate Compress Arrows - Concierge Bell - Cookie - Cookie Bite - Copy - Copyright - Couch - Credit Card - crop - Alternate Crop - Cross - Crosshairs - Crow - Crown - Crutch - Cube - Cubes - Cut - Database - Deaf - Democrat - Desktop - Dharmachakra - Diagnoses - Dice - Dice D20 - Dice D6 - Dice Five - Dice Four - Dice One - Dice Six - Dice Three - Dice Two - Digital Tachograph - Directions - Divide - Dizzy Face - DNA - Dog - Dollar Sign - Dolly - Dolly Flatbed - Door Closed - Door Open - Dot Circle - Dove - Download - Drafting Compass - Dragon - Draw Polygon - - Drum - + + - Drum Steelpan - Drumstick with Bite Taken Out - Dumbbell - Dumpster - Dumpster Fire - Dungeon - Edit - Egg - eject - Horizontal Ellipsis - Vertical Ellipsis - Envelope - Envelope Open - Envelope Open-text - Envelope Square - Equals - eraser - Ethernet - Euro Sign - Alternate Exchange - exclamation - Exclamation Circle - Exclamation Triangle - Expand - - Alternate Expand Arrows - + + - - Alternate External Link - + + - Alternate External Link Square - Eye - Eye Dropper - Eye Slash + + + - fast-backward - fast-forward - Fax - + - Feather - Alternate Feather - Female - fighter-jet - File - Alternate File - Archive File - Audio File - Code File - File Contract - File CSV - File Download - Excel File - File Export - Image File - File Import - File Invoice - File Invoice with US Dollar - Medical File - Alternate Medical File - PDF File - Powerpoint File - File Prescription - File Signature - File Upload - Video File - Word File - Fill - Fill Drip - Film - Filter - Fingerprint - fire - Alternate Fire - fire-extinguisher - First Aid - Fish - Raised Fist - flag - flag-checkered - United States of America Flag - Flask - Flushed Face - Folder - Folder Minus - Folder Open - Folder Plus - font - + - Font Awesome Full Logo - Football Ball - forward - Frog - Frowning Face - Frowning Face With Open Mouth - Funnel Dollar - Futbol - Gamepad - + - Gas Pump - Gavel - Gem - Genderless - Ghost - gift - Gifts - Glass Cheers - Martini Glass - Alternate Glass Martini - Glass Whiskey - Glasses - Globe - Globe with Africa shown - Globe with Americas shown - Globe with Asia shown - Globe with Europe shown - Golf Ball - Gopuram - Graduation Cap - Greater Than - Greater Than Equal To - Grimacing Face - Grinning Face - Alternate Grinning Face - Grinning Face With Smiling Eyes - Grinning Face With Sweat - Smiling Face With Heart-Eyes - Grinning Squinting Face - Rolling on the Floor Laughing - Star-Struck - Face With Tears of Joy - Face With Tongue - Squinting Face With Tongue - Winking Face With Tongue - Grinning Winking Face - Grip Horizontal - Grip Lines - Grip Lines Vertical - Grip Vertical - Guitar - + - H Square - Hamburger - Hammer - Hamsa - Hand Holding - Hand Holding Heart - - Hand Holding US Dollar - + + - Lizard (Hand) - Hand with Middle Finger Raised - Paper (Hand) - Peace (Hand) - Hand Pointing Down - Hand Pointing Left - Hand Pointing Right - Hand Pointing Up - Pointer (Hand) - Rock (Hand) - Scissors (Hand) - Spock (Hand) - Hands - Helping Hands - Handshake - Hanukiah - Hard Hat - Hashtag + + + + + + - Wizard's Hat - Haykal - HDD - heading - + - headphones - Alternate Headphones - Headset - Heart - Heart Broken - Heartbeat - Helicopter - Highlighter - Hiking - Hippo - History - Hockey Puck - Holly Berry - home - Horse - Horse Head - hospital - Alternate Hospital - Hospital Symbol - Hot Tub - Hot Dog - Hotel - Hourglass - Hourglass End - Hourglass Half - Hourglass Start - Damaged House - Hryvnia - I Beam Cursor - Ice Cream - Icicles + + + - Identification Badge - Identification Card - Alternate Identification Card - Igloo - Image - Images - inbox - Indent - + - Industry - Infinity - Info - Info Circle - italic - + - Jedi - Joint - Journal of the Whills - Kaaba - key - Keyboard - Khanda - Kissing Face - Kissing Face With Smiling Eyes - Face Blowing a Kiss - Kiwi Bird - Landmark - Language - Laptop - Laptop Code - Laptop Medical - Grinning Face With Big Eyes - Laugh Face with Beaming Eyes - Laughing Squinting Face - Laughing Winking Face - Layer Group - leaf - Lemon - Less Than - Less Than Equal To - Alternate Level Down - Alternate Level Up - Life Ring - Lightbulb - Link - Turkish Lira Sign - List - + - Alternate List - list-ol - + - list-ul - + - location-arrow - lock - Lock Open - Alternate Long Arrow Down - Alternate Long Arrow Left - Alternate Long Arrow Right - Alternate Long Arrow Up - Low Vision - Luggage Cart - magic - - magnet - + + - Mail Bulk - Male - Map - Map Marked - Alternate Map Marked - map-marker - Alternate Map Marker - Map Pin - Map Signs - Marker - Mars - Mars Double - Mars Stroke - Mars Stroke Horizontal - Mars Stroke Vertical - Mask - Medal - medkit - Neutral Face - Face Without Mouth - Face With Rolling Eyes - Memory - Menorah - Mercury - Meteor - Microchip - microphone - Alternate Microphone - Alternate Microphone Slash - Microphone Slash - Microscope - minus - Minus Circle - Minus Square - Mitten - Mobile Phone - Alternate Mobile - Money Bill - Alternate Money Bill - Wavy Money Bill - Alternate Wavy Money Bill - Money Check - Alternate Money Check - Monument - Moon - Mortar Pestle - Mosque - Motorcycle - Mountain + + + - Mouse Pointer - Mug Hot - Music - + - Wired Network - Neuter - Newspaper - Not Equal - Medical Notes - Object Group - Object Ungroup - Oil Can - Om - Otter - Outdent - + - Pager - Paint Brush - Paint Roller - Palette - Pallet - Paper Plane - Paperclip - Parachute Box - paragraph - + - Parking - Passport - Pastafarianism - Paste - pause - Pause Circle - Paw - Peace - Pen - Alternate Pen - Pen Fancy - Pen Nib - Pen Square - Alternate Pencil - Pencil Ruler - People Carry - Hot Pepper - Percent - Percentage - Person Entering Booth - Phone + + + - Phone Slash - Phone Square + + + - Phone Volume + + + - Piggy Bank - Pills - Pizza Slice - Place of Worship - plane - Plane Arrival - Plane Departure - play - Play Circle - Plug - plus - Plus Circle - Plus Square - Podcast - Poll - Poll H - Poo - Poo Storm - Poop - Portrait - Pound Sign - Power Off - Pray - Praying Hands - Prescription - Prescription Bottle - Alternate Prescription Bottle - print - Procedures - Project Diagram - Puzzle Piece - qrcode - Question - Question Circle - Quidditch - quote-left - quote-right - Quran - Radiation - + - Alternate Radiation - + - Rainbow - random - Receipt + + + - Recycle - - Redo - + + - Alternate Redo - Registered Trademark + + + - Reply - reply-all - Republican - Restroom - Retweet - Ribbon - Ring - road - Robot - rocket - Route - rss - RSS Square - Ruble Sign - Ruler - Ruler Combined - Ruler Horizontal - Ruler Vertical - Running - Indian Rupee Sign - Crying Face - Loudly Crying Face - Satellite - Satellite Dish - Save - School - Screwdriver - Scroll - Sd Card - Search - Search Dollar - Search Location - Search Minus - Search Plus - Seedling - Server - Shapes - Share - Alternate Share - Alternate Share Square - Share Square - Shekel Sign - Alternate Shield - Ship - Shipping Fast - Shoe Prints - Shopping Bag - Shopping Basket - shopping-cart - Shower - Shuttle Van - Sign - Alternate Sign In - Sign Language - Alternate Sign Out - signal - Signature - SIM Card - + - Sitemap - Skating - Skiing - Skiing Nordic - Skull - Skull & Crossbones - Slash - Sleigh - Horizontal Sliders - Smiling Face - Beaming Face With Smiling Eyes - Winking Face - Smog - Smoking - Smoking Ban - SMS - Snowboarding - Snowflake - Snowman - Snowplow - Socks - Solar Panel - Sort - Sort Alpha Down - + + + + - Sort Alpha Up - + + + + - Sort Amount Down - + + + + - Sort Amount Up - + + + + - Sort Down (Descending) - Sort Numeric Down - + + + + - Sort Numeric Up - + + + + - Sort Up (Ascending) - Spa - Space Shuttle + + + - Spider - Spinner - Splotch - Spray Can - Square - Square Full - Alternate Square Root - Stamp - Star - Star and Crescent - star-half - Alternate Star Half - Star of David - Star of Life - step-backward - step-forward - Stethoscope - Sticky Note - stop - Stop Circle - Stopwatch - Store - Alternate Store - Stream - Street View - Strikethrough - + - Stroopwafel - subscript - + - Subway - Suitcase - Suitcase Rolling - Sun - superscript - + - Hushed Face - - Swatchbook - + + - Swimmer - Swimming Pool - Synagogue - - Sync - + + - Alternate Sync - Syringe - table - Table Tennis - tablet - Alternate Tablet - Tablets - Alternate Tachometer - tag - tags - Tape - Tasks - + - Taxi - Teeth - Teeth Open - High Temperature - Low Temperature - Tenge - Terminal - text-height - + - text-width - + - th - th-large - th-list - Theater Masks - Thermometer - Thermometer Empty - Thermometer Full - Thermometer 1/2 Full - Thermometer 1/4 Full - Thermometer 3/4 Full - thumbs-down - thumbs-up - Thumbtack - Alternate Ticket - Times - Times Circle - tint - Tint Slash - Tired Face - Toggle Off - Toggle On - Toilet - Toilet Paper - Toolbox - Tools - Tooth - Torah - + - Torii Gate - Tractor - Trademark - Traffic Light - Train - Tram - Transgender - Alternate Transgender - Trash - Alternate Trash - Trash Restore - Alternative Trash Restore - Tree - trophy - truck - Truck Loading - Truck Monster - Truck Moving - Truck Side - T-Shirt - TTY - Television - + - Umbrella - Umbrella Beach - Underline - + - Undo - Alternate Undo - Universal Access - University - unlink - unlock - Alternate Unlock - Upload - User - Alternate User - Alternate User Slash - User Astronaut - User Check - User Circle - User Clock - User Cog - User Edit - User Friends - User Graduate - User Injured - User Lock - + - Doctor - User Minus - User Ninja - Nurse - User Plus - User Secret - User Shield - User Slash - User Tag - User Tie - Remove User - Users - Users Cog - Utensil Spoon - Utensils - Vector Square - Venus - Venus Double - Venus Mars - Vial - Vials - Video - Video Slash - Vihara - - Volleyball Ball - + + + + + - Volume Down - Volume Mute - - Volume Off - + + - Volume Up - Vote Yea - Cardboard VR - Walking - Wallet - Warehouse - Water + + + - Weight - Hanging Weight - Wheelchair - WiFi - Wind - Window Close - Window Maximize - Window Minimize - Window Restore - Wine Bottle - Wine Glass - Alternate Wine Glas - Won Sign - Wrench - X-Ray - Yen Sign - Yin Yang - - Book Reader - - - - Asterisk - - diff --git a/yarn.lock b/yarn.lock index 7c248b2373..4496b37c5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -92,10 +92,10 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@fortawesome/fontawesome-free@5.7.2": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.7.2.tgz#1498c3eb78ee7c78c5488418707de90aaf58d5d7" - integrity sha512-Ha4HshKdCVKgu4TVCtG8XyPPYdzTzNW4/fvPnn+LT7AosRABryhlRv4cc4+o84dgpvVJN9reN7jo/c+nYujFug== +"@fortawesome/fontawesome-free@5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.11.2.tgz#8644bc25b19475779a7b7c1fc104bc0a794f4465" + integrity sha512-XiUPoS79r1G7PcpnNtq85TJ7inJWe0v+b5oZJZKb0pGHNIV6+UiNeQWiFGmuQ0aj7GEhnD/v9iqxIsjuRKtEnQ== "@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.3.0": version "1.3.0" From f9fa9b45d0d0ba580da7c5359b0b63626f231bc8 Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 22 Nov 2019 15:25:20 -0500 Subject: [PATCH 267/408] Facebook square icon has been deprciated for Facebook circle --- .../javascripts/discourse/initializers/sharing-sources.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/initializers/sharing-sources.js.es6 b/app/assets/javascripts/discourse/initializers/sharing-sources.js.es6 index b619969ac5..d3ca4fde2a 100644 --- a/app/assets/javascripts/discourse/initializers/sharing-sources.js.es6 +++ b/app/assets/javascripts/discourse/initializers/sharing-sources.js.es6 @@ -22,7 +22,7 @@ export default { Sharing.addSource({ id: "facebook", - icon: "fab-facebook-square", + icon: "fab-facebook", title: I18n.t("share.facebook"), generateUrl: function(link, title) { return ( From 01e2d5a6704996930dfc6f927dec2acaddbeaffe Mon Sep 17 00:00:00 2001 From: romanrizzi Date: Fri, 22 Nov 2019 18:19:02 -0300 Subject: [PATCH 268/408] UX: Set selected scale to 100% if scale is undefined --- .../engines/discourse-markdown/resize-controls.js.es6 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown/resize-controls.js.es6 b/app/assets/javascripts/pretty-text/engines/discourse-markdown/resize-controls.js.es6 index 6231a26544..bb8e381d33 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown/resize-controls.js.es6 +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown/resize-controls.js.es6 @@ -15,7 +15,7 @@ function buildToken(state, type, tag, klass, nesting) { function wrapImage(tokens, index, state, imgNumber) { const imgToken = tokens[index]; - const selectedScale = imgToken.content + let selectedScale = imgToken.content .split(",") .pop() .trim(); @@ -38,6 +38,9 @@ function wrapImage(tokens, index, state, imgNumber) { const minimumScale = 50; const scales = [100, 75, minimumScale]; + const overwriteScale = !scales.find(scale => `${scale}%` === selectedScale); + if (overwriteScale) selectedScale = "100%"; + scales.forEach(scale => { const scaleText = `${scale}%`; From 43ddf60cdf27a865b7b1aa0d54a144a3e46c74cf Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Mon, 25 Nov 2019 06:17:31 +1100 Subject: [PATCH 269/408] FIX: When dismissing category inform via MessageBus (#8371) When category is dismissed, `dismiss_new` message is sent to fronted to clean state. In addition, I noticed that when old dismiss new button is clicked, no message is sent so I decided to kill two birds with one stone. --- .../models/topic-tracking-state.js.es6 | 32 +++++++++++++++++-- app/controllers/topics_controller.rb | 6 ++-- app/models/topic_tracking_state.rb | 9 ++++++ spec/requests/topics_controller_spec.rb | 5 +++ 4 files changed, 46 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 index 33a6d4d9d6..3d6ff774db 100644 --- a/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 +++ b/app/assets/javascripts/discourse/models/topic-tracking-state.js.es6 @@ -14,7 +14,8 @@ function isNew(topic) { return ( topic.last_read_post_number === null && ((topic.notification_level !== 0 && !topic.notification_level) || - topic.notification_level >= NotificationLevels.TRACKING) + topic.notification_level >= NotificationLevels.TRACKING) && + isUnseen(topic) ); } @@ -26,6 +27,10 @@ function isUnread(topic) { ); } +function isUnseen(topic) { + return !topic.is_seen; +} + const TopicTrackingState = EmberObject.extend({ messageCount: 0, @@ -68,6 +73,22 @@ const TopicTrackingState = EmberObject.extend({ tracker.notify(data); } + if (data.message_type === "dismiss_new") { + Object.keys(tracker.states).forEach(k => { + const topic = tracker.states[k]; + if ( + !data.payload.category_id || + topic.category_id === parseInt(data.payload.category_id, 0) + ) { + tracker.states[k] = Object.assign({}, topic, { + is_seen: true + }); + } + }); + tracker.notifyPropertyChange("states"); + tracker.incrementMessageCount(); + } + if (["new_topic", "unread", "read"].includes(data.message_type)) { tracker.notify(data); const old = tracker.states["t" + data.topic_id]; @@ -215,7 +236,11 @@ const TopicTrackingState = EmberObject.extend({ if (state) { const lastRead = t.get("last_read_post_number"); - if (lastRead !== state.last_read_post_number) { + const isSeen = t.get("is_seen"); + if ( + lastRead !== state.last_read_post_number || + isSeen !== state.is_seen + ) { const postsCount = t.get("posts_count"); let newPosts = postsCount - state.highest_post_number, unread = postsCount - state.last_read_post_number; @@ -235,7 +260,8 @@ const TopicTrackingState = EmberObject.extend({ last_read_post_number: state.last_read_post_number, new_posts: newPosts, unread: unread, - unseen: !state.last_read_post_number + is_seen: state.is_seen, + unseen: !state.last_read_post_number && isUnseen(state) }); } } diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index 2eda0820cb..971974e95d 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -849,20 +849,20 @@ class TopicsController < ApplicationController def reset_new if params[:category_id].present? category_ids = [params[:category_id]] - if params[:include_subcategories] == 'true' category_ids = category_ids.concat(Category.where(parent_category_id: params[:category_id]).pluck(:id)) end - category_ids.each do |category_id| current_user .category_users .where(category_id: category_id) .first_or_initialize .update!(last_seen_at: Time.zone.now) + TopicTrackingState.publish_dismiss_new(current_user.id, category_id) end else - current_user.user_stat.update_column(:new_since, Time.now) + current_user.user_stat.update_column(:new_since, Time.zone.now) + TopicTrackingState.publish_dismiss_new(current_user.id) end render body: nil end diff --git a/app/models/topic_tracking_state.rb b/app/models/topic_tracking_state.rb index 8bfe76543f..3118214f8c 100644 --- a/app/models/topic_tracking_state.rb +++ b/app/models/topic_tracking_state.rb @@ -144,6 +144,15 @@ class TopicTrackingState MessageBus.publish(self.unread_channel_key(user_id), message.as_json, user_ids: [user_id]) end + def self.publish_dismiss_new(user_id, category_id = nil) + payload = category_id ? { category_id: category_id } : {} + message = { + message_type: "dismiss_new", + payload: payload + } + MessageBus.publish(self.unread_channel_key(user_id), message.as_json, user_ids: [user_id]) + end + def self.treat_as_new_topic_clause User.where("GREATEST(CASE WHEN COALESCE(uo.new_topic_duration_minutes, :default_duration) = :always THEN u.created_at diff --git a/spec/requests/topics_controller_spec.rb b/spec/requests/topics_controller_spec.rb index 32bfc6590c..719a67537b 100644 --- a/spec/requests/topics_controller_spec.rb +++ b/spec/requests/topics_controller_spec.rb @@ -2342,6 +2342,8 @@ RSpec.describe TopicsController do user.user_stat.update_column(:new_since, old_date) + TopicTrackingState.expects(:publish_dismiss_new).with(user.id) + put "/topics/reset-new.json" expect(response.status).to eq(200) user.reload @@ -2356,6 +2358,9 @@ RSpec.describe TopicsController do sign_in(user) category_user = CategoryUser.create!(category_id: category.id, user_id: user.id) subcategory_user = CategoryUser.create!(category_id: subcategory.id, user_id: user.id) + + TopicTrackingState.expects(:publish_dismiss_new).with(user.id, category.id.to_s) + put "/topics/reset-new.json?category_id=#{category.id}" expect(category_user.reload.last_seen_at).not_to be_nil From afb553358162d4cbc2e6a1c01070a5420357d387 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 25 Nov 2019 10:49:27 +1000 Subject: [PATCH 270/408] FEATURE: Add timezone to core user_options (#8380) * Add timezone to user_options table * Also migrate existing timezone values from UserCustomField, which is where the discourse-calendar plugin is storing them * Allow user to change their core timezone from Profile * Auto guess & set timezone on login & invite accept & signup * Serialize user_options.timezone for group members. this is so discourse-group-timezones can access the core user timezone, as it is being removed in discourse-calendar. * Annotate user_option with timezone * Validate timezone values --- .../discourse/controllers/invites-show.js.es6 | 3 +- .../discourse/controllers/login.js.es6 | 3 +- .../controllers/preferences/profile.js.es6 | 3 +- .../javascripts/discourse/models/user.js.es6 | 6 ++- .../routes/preferences-profile.js.es6 | 7 ++- .../templates/preferences/profile.hbs | 5 ++ app/controllers/groups_controller.rb | 2 +- app/controllers/invites_controller.rb | 3 +- app/controllers/session_controller.rb | 1 + app/controllers/users_controller.rb | 5 +- app/models/user.rb | 9 ++++ app/models/user_option.rb | 2 + app/serializers/group_user_serializer.rb | 3 +- app/serializers/user_option_serializer.rb | 3 +- app/services/user_updater.rb | 3 +- config/locales/client.en.yml | 1 + config/locales/server.en.yml | 1 + ...1120015344_add_timezone_to_user_options.rb | 19 +++++++ lib/validators/timezone_validator.rb | 22 +++++++++ .../lib/validators/timezone_validator_spec.rb | 49 +++++++++++++++++++ spec/models/user_spec.rb | 42 ++++++++++++++++ spec/requests/invites_controller_spec.rb | 10 ++++ spec/requests/session_controller_spec.rb | 10 ++++ spec/requests/users_controller_spec.rb | 16 ++++++ 24 files changed, 215 insertions(+), 13 deletions(-) create mode 100644 db/migrate/20191120015344_add_timezone_to_user_options.rb create mode 100644 lib/validators/timezone_validator.rb create mode 100644 spec/lib/validators/timezone_validator_spec.rb diff --git a/app/assets/javascripts/discourse/controllers/invites-show.js.es6 b/app/assets/javascripts/discourse/controllers/invites-show.js.es6 index f6e0ced4fd..9be1de123e 100644 --- a/app/assets/javascripts/discourse/controllers/invites-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/invites-show.js.es6 @@ -82,7 +82,8 @@ export default Controller.extend( username: this.accountUsername, name: this.accountName, password: this.accountPassword, - user_custom_fields: userCustomFields + user_custom_fields: userCustomFields, + timezone: moment.tz.guess() } }) .then(result => { diff --git a/app/assets/javascripts/discourse/controllers/login.js.es6 b/app/assets/javascripts/discourse/controllers/login.js.es6 index 701d410256..7fd028cced 100644 --- a/app/assets/javascripts/discourse/controllers/login.js.es6 +++ b/app/assets/javascripts/discourse/controllers/login.js.es6 @@ -122,7 +122,8 @@ export default Controller.extend(ModalFunctionality, { password: this.loginPassword, second_factor_token: this.secondFactorToken, second_factor_method: this.secondFactorMethod, - security_key_credential: this.securityKeyCredential + security_key_credential: this.securityKeyCredential, + timezone: moment.tz.guess() } }).then( result => { diff --git a/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 index f726f87e17..764dbb29dc 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/profile.js.es6 @@ -18,7 +18,8 @@ export default Controller.extend(PreferencesTabController, { "user_fields", "profile_background_upload_url", "card_background_upload_url", - "date_of_birth" + "date_of_birth", + "timezone" ]; }, diff --git a/app/assets/javascripts/discourse/models/user.js.es6 b/app/assets/javascripts/discourse/models/user.js.es6 index 830e9a399a..9b92f4bd03 100644 --- a/app/assets/javascripts/discourse/models/user.js.es6 +++ b/app/assets/javascripts/discourse/models/user.js.es6 @@ -302,7 +302,8 @@ const User = RestModel.extend({ "homepage_id", "hide_profile_and_presence", "text_size", - "title_count_mode" + "title_count_mode", + "timezone" ]; if (fields) { @@ -901,7 +902,8 @@ User.reopenClass(Singleton, { username: attrs.accountUsername, password_confirmation: attrs.accountPasswordConfirm, challenge: attrs.accountChallenge, - user_fields: attrs.userFields + user_fields: attrs.userFields, + timezone: moment.tz.guess() }, type: "POST" }); diff --git a/app/assets/javascripts/discourse/routes/preferences-profile.js.es6 b/app/assets/javascripts/discourse/routes/preferences-profile.js.es6 index 713d79e420..7b794ef681 100644 --- a/app/assets/javascripts/discourse/routes/preferences-profile.js.es6 +++ b/app/assets/javascripts/discourse/routes/preferences-profile.js.es6 @@ -1,5 +1,10 @@ import RestrictedUserRoute from "discourse/routes/restricted-user"; export default RestrictedUserRoute.extend({ - showFooter: true + showFooter: true, + setupController(controller, model) { + model.user_option.timezone = + model.user_option.timezone || moment.tz.guess(); + controller.set("model", model); + } }); diff --git a/app/assets/javascripts/discourse/templates/preferences/profile.hbs b/app/assets/javascripts/discourse/templates/preferences/profile.hbs index 3d5a2bcc75..7bd63f0930 100644 --- a/app/assets/javascripts/discourse/templates/preferences/profile.hbs +++ b/app/assets/javascripts/discourse/templates/preferences/profile.hbs @@ -7,6 +7,11 @@
{{/if}} +
+ + {{timezone-input value=model.user_option.timezone onSelect=(action (mut model.user_option.timezone)) class="input-xxlarge"}} +
+
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 1ca58471ce..36e3b7b2da 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -269,7 +269,7 @@ class GroupsController < ApplicationController end end - users = users.select('users.*, group_users.created_at as added_at') + users = users.joins(:user_option).select('users.*, user_options.timezone, group_users.created_at as added_at') members = users .order('NOT group_users.owner') diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb index 7a62d95a56..a1bbedc5ce 100644 --- a/app/controllers/invites_controller.rb +++ b/app/controllers/invites_controller.rb @@ -40,7 +40,7 @@ class InvitesController < ApplicationController def perform_accept_invitation params.require(:id) - params.permit(:username, :name, :password, user_custom_fields: {}) + params.permit(:username, :name, :password, :timezone, user_custom_fields: {}) invite = Invite.find_by(invite_key: params[:id]) if invite.present? @@ -48,6 +48,7 @@ class InvitesController < ApplicationController user = invite.redeem(username: params[:username], name: params[:name], password: params[:password], user_custom_fields: params[:user_custom_fields], ip_address: request.remote_ip) if user.present? log_on_user(user) if user.active? + user.update_timezone_if_missing(params[:timezone]) post_process_invite(user) end diff --git a/app/controllers/session_controller.rb b/app/controllers/session_controller.rb index 7f93b365fb..0bddc5322b 100644 --- a/app/controllers/session_controller.rb +++ b/app/controllers/session_controller.rb @@ -540,6 +540,7 @@ class SessionController < ApplicationController def login(user) session.delete(ACTIVATE_USER_KEY) + user.update_timezone_if_missing(params[:timezone]) log_on_user(user) if payload = cookies.delete(:sso_payload) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 5a113ca717..8084793829 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -128,7 +128,7 @@ class UsersController < ApplicationController end end - json_result(user, serializer: UserSerializer, additional_errors: [:user_profile]) do |u| + json_result(user, serializer: UserSerializer, additional_errors: [:user_profile, :user_option]) do |u| updater = UserUpdater.new(current_user, user) updater.update(attributes.permit!) end @@ -387,7 +387,7 @@ class UsersController < ApplicationController params[:locale] ||= I18n.locale unless current_user - new_user_params = user_params + new_user_params = user_params.except(:timezone) user = User.unstage(new_user_params) user = User.new(new_user_params) if user.nil? @@ -435,6 +435,7 @@ class UsersController < ApplicationController if user.save authentication.finish activation.finish + user.update_timezone_if_missing(params[:timezone]) secure_session[HONEYPOT_KEY] = nil secure_session[CHALLENGE_KEY] = nil diff --git a/app/models/user.rb b/app/models/user.rb index a742682011..e90315db6a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -670,6 +670,15 @@ class User < ActiveRecord::Base create_visit_record!(date) unless visit_record_for(date) end + def update_timezone_if_missing(timezone) + return if timezone.blank? || !TimezoneValidator.valid?(timezone) + + # we only want to update the user's timezone if they have not set it themselves + UserOption + .where(user_id: self.id, timezone: nil) + .update_all(timezone: timezone) + end + def update_posts_read!(num_posts, opts = {}) now = opts[:at] || Time.zone.now _retry = opts[:retry] || false diff --git a/app/models/user_option.rb b/app/models/user_option.rb index a5e583f453..9756f3d0de 100644 --- a/app/models/user_option.rb +++ b/app/models/user_option.rb @@ -42,6 +42,7 @@ class UserOption < ActiveRecord::Base validates :text_size_key, inclusion: { in: UserOption.text_sizes.values } validates :email_level, inclusion: { in: UserOption.email_level_types.values } validates :email_messages_level, inclusion: { in: UserOption.email_level_types.values } + validates :timezone, timezone: true def set_defaults self.mailing_list_mode = SiteSetting.default_email_mailing_list_mode @@ -224,6 +225,7 @@ end # email_messages_level :integer default(0), not null # title_count_mode_key :integer default(0), not null # enable_defer :boolean default(FALSE), not null +# timezone :string # # Indexes # diff --git a/app/serializers/group_user_serializer.rb b/app/serializers/group_user_serializer.rb index 4b79988877..aa191cf18d 100644 --- a/app/serializers/group_user_serializer.rb +++ b/app/serializers/group_user_serializer.rb @@ -7,7 +7,8 @@ class GroupUserSerializer < BasicUserSerializer :title, :last_posted_at, :last_seen_at, - :added_at + :added_at, + :timezone def include_added_at object.respond_to? :added_at diff --git a/app/serializers/user_option_serializer.rb b/app/serializers/user_option_serializer.rb index 4a8a5a1d0c..4c78c7b5bd 100644 --- a/app/serializers/user_option_serializer.rb +++ b/app/serializers/user_option_serializer.rb @@ -27,7 +27,8 @@ class UserOptionSerializer < ApplicationSerializer :hide_profile_and_presence, :text_size, :text_size_seq, - :title_count_mode + :title_count_mode, + :timezone def auto_track_topics_after_msecs object.auto_track_topics_after_msecs || SiteSetting.default_other_auto_track_topics_after_msecs diff --git a/app/services/user_updater.rb b/app/services/user_updater.rb index c5d539e1db..44c262d8f2 100644 --- a/app/services/user_updater.rb +++ b/app/services/user_updater.rb @@ -40,7 +40,8 @@ class UserUpdater :homepage_id, :hide_profile_and_presence, :text_size, - :title_count_mode + :title_count_mode, + :timezone ] def initialize(actor, user) diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 5deaca25d5..bbd442acd9 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -821,6 +821,7 @@ en: collapse_profile: "Collapse" bookmarks: "Bookmarks" bio: "About me" + timezone: "Timezone" invited_by: "Invited By" trust_level: "Trust Level" notifications: "Notifications" diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index c93fb0cb28..6c20fb1c12 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -163,6 +163,7 @@ en: inclusion: is not included in the list invalid: is invalid is_invalid: "seems unclear, is it a complete sentence?" + invalid_timezone: "'%{tz}' is not a valid timezone" contains_censored_words: "contains the following censored words: %{censored_words}" less_than: must be less than %{count} less_than_or_equal_to: must be less than or equal to %{count} diff --git a/db/migrate/20191120015344_add_timezone_to_user_options.rb b/db/migrate/20191120015344_add_timezone_to_user_options.rb new file mode 100644 index 0000000000..8284842cf6 --- /dev/null +++ b/db/migrate/20191120015344_add_timezone_to_user_options.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddTimezoneToUserOptions < ActiveRecord::Migration[6.0] + def up + add_column :user_options, :timezone, :string + execute( + <<-SQL + UPDATE user_options + SET timezone = ucf.value + FROM user_custom_fields AS ucf + WHERE ucf.user_id = user_options.user_id AND ucf.name = 'timezone' + SQL + ) + end + + def down + remove_column :user_options, :timezone + end +end diff --git a/lib/validators/timezone_validator.rb b/lib/validators/timezone_validator.rb new file mode 100644 index 0000000000..93ff1a2d78 --- /dev/null +++ b/lib/validators/timezone_validator.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class TimezoneValidator < ActiveModel::EachValidator + def self.valid?(value) + ok = ActiveSupport::TimeZone[value].present? + Rails.logger.warn("Invalid timezone '#{value}' detected!") if !ok + ok + end + + def self.error_message(value) + I18n.t("errors.messages.invalid_timezone", tz: value) + end + + def validate_each(record, attribute, value) + return if value.blank? || TimezoneValidator.valid?(value) + record.errors.add( + attribute, + :timezone, + message: TimezoneValidator.error_message(value) + ) + end +end diff --git a/spec/lib/validators/timezone_validator_spec.rb b/spec/lib/validators/timezone_validator_spec.rb new file mode 100644 index 0000000000..4fec4b53ba --- /dev/null +++ b/spec/lib/validators/timezone_validator_spec.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe TimezoneValidator do + describe "#valid?" do + context "when timezone is ok" do + it "returns true" do + expect(described_class.valid?("Australia/Brisbane")).to eq(true) + end + end + + context "when timezone is not ok" do + it "returns false" do + expect(described_class.valid?("Mars")).to eq(false) + end + end + end + + describe "#validate_each" do + let(:record) { Fabricate(:active_user).user_option } + + context "when timezone is ok" do + it "adds no errors to the record" do + record.timezone = "Australia/Melbourne" + record.save + expect(record.errors.full_messages.empty?).to eq(true) + end + end + + context "when timezone is blank" do + it "adds no errors to the record" do + record.timezone = nil + record.save + expect(record.errors.full_messages.empty?).to eq(true) + end + end + + context "when timezone is not ok" do + it "adds errors to the record" do + record.timezone = "Mars" + record.save + expect(record.errors.full_messages).to include( + "Timezone 'Mars' is not a valid timezone" + ) + end + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index f34a895b44..7815fa778f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -917,6 +917,48 @@ describe User do end end + describe "update_timezone_if_missing" do + let(:timezone) { nil } + + it "does nothing if timezone is nil" do + user.update_timezone_if_missing(timezone) + expect(user.reload.user_option.timezone).to eq(nil) + end + + context "if timezone is provided" do + context "if the timezone is valid" do + let(:timezone) { "Australia/Melbourne" } + context "if no timezone exists on user option" do + it "sets the timezone for the user" do + user.update_timezone_if_missing(timezone) + expect(user.reload.user_option.timezone).to eq(timezone) + end + end + end + + context "if the timezone is not valid" do + let(:timezone) { "Jupiter" } + context "if no timezone exists on user option" do + it "does not set the timezone for the user" do + user.update_timezone_if_missing(timezone) + expect(user.reload.user_option.timezone).to eq(nil) + end + end + end + + context "if a timezone already exists on user option" do + before do + user.user_option.update_attribute(:timezone, "America/Denver") + end + + it "does not update the timezone" do + user.update_timezone_if_missing(timezone) + expect(user.reload.user_option.timezone).to eq("America/Denver") + end + end + end + end + describe "last_seen_at" do fab!(:user) { Fabricate(:user) } diff --git a/spec/requests/invites_controller_spec.rb b/spec/requests/invites_controller_spec.rb index 23c7f173b0..8af1c741ea 100644 --- a/spec/requests/invites_controller_spec.rb +++ b/spec/requests/invites_controller_spec.rb @@ -290,6 +290,16 @@ describe InvitesController do expect(json["success"]).to eq(true) expect(json["redirect_to"]).to eq(topic.relative_url) end + + context "if a timezone guess is provided" do + it "sets the timezone of the user in user_options" do + put "/invites/show/#{invite.invite_key}.json", params: { timezone: "Australia/Melbourne" } + expect(response.status).to eq(200) + invite.reload + user = User.find(invite.user_id) + expect(user.user_option.timezone).to eq("Australia/Melbourne") + end + end end context 'failure' do diff --git a/spec/requests/session_controller_spec.rb b/spec/requests/session_controller_spec.rb index f554e0fe46..4d75c201f4 100644 --- a/spec/requests/session_controller_spec.rb +++ b/spec/requests/session_controller_spec.rb @@ -1048,6 +1048,16 @@ RSpec.describe SessionController do expect(user.user_auth_tokens.count).to eq(1) expect(UserAuthToken.hash_token(cookies[:_t])).to eq(user.user_auth_tokens.first.auth_token) end + + context "when timezone param is provided" do + it "sets the user_option timezone for the user" do + post "/session.json", params: { + login: user.username, password: 'myawesomepassword', timezone: "Australia/Melbourne" + } + expect(response.status).to eq(200) + expect(user.reload.user_option.timezone).to eq("Australia/Melbourne") + end + end end context 'when user has 2-factor logins' do diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index 276901b6d1..9a7323a1b4 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -702,6 +702,22 @@ describe UsersController do post_user expect(User.find_by(username: @user.username).locale).to eq('fr') end + + context "when timezone is provided as a guess on signup" do + let(:post_user_params) do + { name: @user.name, + username: @user.username, + password: "strongpassword", + email: @user.email, + timezone: "Australia/Brisbane" } + end + + it "sets the timezone" do + post_user + expect(response.status).to eq(200) + expect(User.find_by(username: @user.username).user_option.timezone).to eq("Australia/Brisbane") + end + end end context 'when creating a non active user (unconfirmed email)' do From b89e634dd467212fbece0fdad736c8a6adf5e8b3 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 25 Nov 2019 13:54:55 +1000 Subject: [PATCH 271/408] FIX: Replace %20 with space in markdown file name for uploads (#8405) Meta: https://meta.discourse.org/t/image-name-has-20-in-file-name/134136 We were ending up with [file%20name](url) in the markdown preview, which looked weird and affected the alt text. this is because we were calling encodeURIComponent, which has been left in place because this is a valid thing to do for some cases. (e.g. f674b9e) --- app/assets/javascripts/discourse/lib/uploads.js.es6 | 2 +- test/javascripts/lib/uploads-test.js.es6 | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/uploads.js.es6 b/app/assets/javascripts/discourse/lib/uploads.js.es6 index 3a31d423c9..fbd75fa364 100644 --- a/app/assets/javascripts/discourse/lib/uploads.js.es6 +++ b/app/assets/javascripts/discourse/lib/uploads.js.es6 @@ -14,7 +14,7 @@ function imageNameFromFileName(fileName) { name = I18n.t("upload_selector.default_image_alt_text"); } - return encodeURIComponent(name); + return encodeURIComponent(name).replace(/%20/g, " "); } export function validateUploadedFiles(files, opts) { diff --git a/test/javascripts/lib/uploads-test.js.es6 b/test/javascripts/lib/uploads-test.js.es6 index 76a074aa6d..858dcb3a62 100644 --- a/test/javascripts/lib/uploads-test.js.es6 +++ b/test/javascripts/lib/uploads-test.js.es6 @@ -200,6 +200,10 @@ QUnit.test("getUploadMarkdown", assert => { testUploadMarkdown("[foo|bar].png"), "![%5Bfoo%7Cbar%5D|100x200](/uploads/123/abcdef.ext)" ); + assert.equal( + testUploadMarkdown("file name with space.png"), + "![file name with space|100x200](/uploads/123/abcdef.ext)" + ); const short_url = "uploads://asdaasd.ext"; From dbfe9540fafd63ad3ab4d7e42cb2e32ce03df76a Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 25 Nov 2019 16:38:13 +1000 Subject: [PATCH 272/408] FIX: be more tactical with replacing markdown chars * instead of using encodeURIComponent in imageNameFromFileName, we just replace the bad characters that we wanted to get rid of in the first place where we introduced encodeURIComponent. as per review --- app/assets/javascripts/discourse/lib/uploads.js.es6 | 4 +++- test/javascripts/lib/uploads-test.js.es6 | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/uploads.js.es6 b/app/assets/javascripts/discourse/lib/uploads.js.es6 index fbd75fa364..89b8b973b6 100644 --- a/app/assets/javascripts/discourse/lib/uploads.js.es6 +++ b/app/assets/javascripts/discourse/lib/uploads.js.es6 @@ -14,7 +14,9 @@ function imageNameFromFileName(fileName) { name = I18n.t("upload_selector.default_image_alt_text"); } - return encodeURIComponent(name).replace(/%20/g, " "); + return name.replace(/\[|\]|\|/g, ""); + + // return encodeURIComponent(name).replace(/%20/g, " "); } export function validateUploadedFiles(files, opts) { diff --git a/test/javascripts/lib/uploads-test.js.es6 b/test/javascripts/lib/uploads-test.js.es6 index 858dcb3a62..5d08ed2ea1 100644 --- a/test/javascripts/lib/uploads-test.js.es6 +++ b/test/javascripts/lib/uploads-test.js.es6 @@ -198,7 +198,7 @@ QUnit.test("getUploadMarkdown", assert => { ); assert.equal( testUploadMarkdown("[foo|bar].png"), - "![%5Bfoo%7Cbar%5D|100x200](/uploads/123/abcdef.ext)" + "![foobar|100x200](/uploads/123/abcdef.ext)" ); assert.equal( testUploadMarkdown("file name with space.png"), From f1cd0d63883d9c0e5becf780c82a749a9da0e23b Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 25 Nov 2019 16:40:27 +1000 Subject: [PATCH 273/408] Remove unnecessary commented code --- app/assets/javascripts/discourse/lib/uploads.js.es6 | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/uploads.js.es6 b/app/assets/javascripts/discourse/lib/uploads.js.es6 index 89b8b973b6..ed0271e8f3 100644 --- a/app/assets/javascripts/discourse/lib/uploads.js.es6 +++ b/app/assets/javascripts/discourse/lib/uploads.js.es6 @@ -15,8 +15,6 @@ function imageNameFromFileName(fileName) { } return name.replace(/\[|\]|\|/g, ""); - - // return encodeURIComponent(name).replace(/%20/g, " "); } export function validateUploadedFiles(files, opts) { From 22eb1828f63e8daf4c40c1850cce64f5c0bc9d6d Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Mon, 25 Nov 2019 10:23:18 +0100 Subject: [PATCH 274/408] DEV: supports unicorn emoji 13.0beta (#8402) This update will most likely reduce images weight and also adds support for :transgender_flag: --- lib/emoji/db.json | 4 ++++ lib/emoji/groups.json | 8 ++++---- public/images/emoji/apple/+1.png | Bin 3418 -> 1361 bytes public/images/emoji/apple/-1.png | Bin 3501 -> 1337 bytes public/images/emoji/apple/100.png | Bin 3206 -> 1364 bytes public/images/emoji/apple/1234.png | Bin 3155 -> 1259 bytes public/images/emoji/apple/1st_place_medal.png | Bin 2986 -> 1983 bytes public/images/emoji/apple/2nd_place_medal.png | Bin 2955 -> 1737 bytes public/images/emoji/apple/3rd_place_medal.png | Bin 2955 -> 1990 bytes public/images/emoji/apple/8ball.png | Bin 3447 -> 1555 bytes public/images/emoji/apple/a.png | Bin 2608 -> 1161 bytes public/images/emoji/apple/ab.png | Bin 2821 -> 1254 bytes public/images/emoji/apple/abacus.png | Bin 4883 -> 3460 bytes public/images/emoji/apple/abc.png | Bin 2875 -> 1053 bytes public/images/emoji/apple/abcd.png | Bin 3258 -> 1242 bytes public/images/emoji/apple/accept.png | Bin 2838 -> 1096 bytes .../images/emoji/apple/adhesive_bandage.png | Bin 512 -> 2950 bytes .../images/emoji/apple/admission_tickets.png | Bin 3581 -> 1363 bytes public/images/emoji/apple/adult.png | Bin 3830 -> 2048 bytes public/images/emoji/apple/aerial_tramway.png | Bin 2694 -> 1606 bytes public/images/emoji/apple/afghanistan.png | Bin 2259 -> 1273 bytes public/images/emoji/apple/airplane.png | Bin 3683 -> 2613 bytes .../images/emoji/apple/airplane_arriving.png | Bin 2541 -> 2212 bytes .../images/emoji/apple/airplane_departure.png | Bin 2341 -> 1842 bytes public/images/emoji/apple/airplane_small.png | Bin 3412 -> 2363 bytes public/images/emoji/apple/aland_islands.png | Bin 2602 -> 1544 bytes public/images/emoji/apple/alarm_clock.png | Bin 4606 -> 3475 bytes public/images/emoji/apple/albania.png | Bin 2966 -> 1120 bytes public/images/emoji/apple/alembic.png | Bin 3535 -> 2484 bytes public/images/emoji/apple/algeria.png | Bin 2451 -> 1242 bytes public/images/emoji/apple/alien.png | Bin 3825 -> 1572 bytes public/images/emoji/apple/ambulance.png | Bin 3628 -> 2639 bytes public/images/emoji/apple/american_samoa.png | Bin 2619 -> 1515 bytes public/images/emoji/apple/amphora.png | Bin 3223 -> 2743 bytes public/images/emoji/apple/anchor.png | Bin 2766 -> 1507 bytes public/images/emoji/apple/andorra.png | Bin 2382 -> 1450 bytes public/images/emoji/apple/angel.png | Bin 3729 -> 2580 bytes public/images/emoji/apple/anger.png | Bin 2648 -> 1233 bytes public/images/emoji/apple/anger_right.png | Bin 3694 -> 1469 bytes public/images/emoji/apple/angola.png | Bin 2462 -> 1231 bytes public/images/emoji/apple/angry.png | Bin 3635 -> 1695 bytes public/images/emoji/apple/anguilla.png | Bin 2700 -> 1943 bytes public/images/emoji/apple/anguished.png | Bin 3782 -> 1854 bytes public/images/emoji/apple/ant.png | Bin 3753 -> 2164 bytes public/images/emoji/apple/antarctica.png | Bin 2560 -> 938 bytes public/images/emoji/apple/antigua_barbuda.png | Bin 2602 -> 1474 bytes public/images/emoji/apple/apple.png | Bin 3551 -> 1897 bytes public/images/emoji/apple/aquarius.png | Bin 2872 -> 1264 bytes public/images/emoji/apple/archery.png | Bin 3100 -> 2501 bytes public/images/emoji/apple/argentina.png | Bin 2663 -> 1108 bytes public/images/emoji/apple/aries.png | Bin 2894 -> 1223 bytes public/images/emoji/apple/armenia.png | Bin 2366 -> 1378 bytes public/images/emoji/apple/arrow_backward.png | Bin 2503 -> 914 bytes .../images/emoji/apple/arrow_double_down.png | Bin 2562 -> 1011 bytes public/images/emoji/apple/arrow_double_up.png | Bin 2564 -> 981 bytes public/images/emoji/apple/arrow_down.png | Bin 2557 -> 980 bytes .../images/emoji/apple/arrow_down_small.png | Bin 2425 -> 911 bytes public/images/emoji/apple/arrow_forward.png | Bin 2497 -> 946 bytes .../images/emoji/apple/arrow_heading_down.png | Bin 2579 -> 992 bytes .../images/emoji/apple/arrow_heading_up.png | Bin 2570 -> 1027 bytes public/images/emoji/apple/arrow_left.png | Bin 2470 -> 958 bytes .../images/emoji/apple/arrow_lower_left.png | Bin 2564 -> 906 bytes .../images/emoji/apple/arrow_lower_right.png | Bin 2569 -> 983 bytes public/images/emoji/apple/arrow_right.png | Bin 2473 -> 956 bytes .../images/emoji/apple/arrow_right_hook.png | Bin 2707 -> 983 bytes public/images/emoji/apple/arrow_up.png | Bin 2505 -> 938 bytes public/images/emoji/apple/arrow_up_down.png | Bin 2636 -> 940 bytes public/images/emoji/apple/arrow_up_small.png | Bin 2454 -> 978 bytes .../images/emoji/apple/arrow_upper_left.png | Bin 2561 -> 955 bytes .../images/emoji/apple/arrow_upper_right.png | Bin 2558 -> 936 bytes .../images/emoji/apple/arrows_clockwise.png | Bin 3000 -> 1164 bytes .../emoji/apple/arrows_counterclockwise.png | Bin 3088 -> 1231 bytes public/images/emoji/apple/art.png | Bin 3726 -> 3417 bytes .../images/emoji/apple/articulated_lorry.png | Bin 3238 -> 2137 bytes .../emoji/apple/artificial_satellite.png | Bin 3555 -> 3430 bytes public/images/emoji/apple/aruba.png | Bin 2530 -> 1318 bytes .../images/emoji/apple/ascension_island.png | Bin 2580 -> 1812 bytes public/images/emoji/apple/asterisk.png | Bin 2834 -> 1151 bytes public/images/emoji/apple/astonished.png | Bin 3673 -> 1979 bytes public/images/emoji/apple/athletic_shoe.png | Bin 3437 -> 1427 bytes public/images/emoji/apple/atm.png | Bin 2481 -> 1024 bytes public/images/emoji/apple/atom.png | Bin 3467 -> 1579 bytes public/images/emoji/apple/atom_symbol.png | Bin 3467 -> 1579 bytes public/images/emoji/apple/australia.png | Bin 3025 -> 1816 bytes public/images/emoji/apple/austria.png | Bin 2498 -> 1173 bytes public/images/emoji/apple/auto_rickshaw.png | Bin 2389 -> 3459 bytes public/images/emoji/apple/automobile.png | Bin 3134 -> 2332 bytes public/images/emoji/apple/avocado.png | Bin 3789 -> 2371 bytes public/images/emoji/apple/axe.png | Bin 749 -> 2342 bytes public/images/emoji/apple/azerbaijan.png | Bin 2486 -> 1506 bytes public/images/emoji/apple/b.png | Bin 2573 -> 1118 bytes public/images/emoji/apple/baby.png | Bin 3859 -> 2107 bytes public/images/emoji/apple/baby_bottle.png | Bin 2974 -> 1743 bytes public/images/emoji/apple/baby_chick.png | Bin 3021 -> 1280 bytes public/images/emoji/apple/baby_symbol.png | Bin 2350 -> 1120 bytes public/images/emoji/apple/back.png | Bin 2329 -> 926 bytes public/images/emoji/apple/bacon.png | Bin 3819 -> 2754 bytes public/images/emoji/apple/badger.png | Bin 2922 -> 1320 bytes public/images/emoji/apple/badminton.png | Bin 3519 -> 3241 bytes public/images/emoji/apple/bagel.png | Bin 4005 -> 2901 bytes public/images/emoji/apple/baggage_claim.png | Bin 2376 -> 1037 bytes public/images/emoji/apple/baguette_bread.png | Bin 2879 -> 1330 bytes public/images/emoji/apple/bahamas.png | Bin 2453 -> 1249 bytes public/images/emoji/apple/bahrain.png | Bin 2373 -> 1059 bytes public/images/emoji/apple/balance_scale.png | Bin 3273 -> 2289 bytes public/images/emoji/apple/ballet_shoes.png | Bin 1204 -> 3732 bytes public/images/emoji/apple/balloon.png | Bin 2734 -> 1320 bytes public/images/emoji/apple/ballot_box.png | Bin 3039 -> 1547 bytes .../emoji/apple/ballot_box_with_ballot.png | Bin 3039 -> 1547 bytes .../emoji/apple/ballot_box_with_check.png | Bin 3295 -> 1223 bytes public/images/emoji/apple/bamboo.png | Bin 2739 -> 2203 bytes public/images/emoji/apple/banana.png | Bin 3116 -> 2253 bytes public/images/emoji/apple/bangbang.png | Bin 2217 -> 905 bytes public/images/emoji/apple/bangladesh.png | Bin 2431 -> 862 bytes public/images/emoji/apple/banjo.png | Bin 984 -> 2410 bytes public/images/emoji/apple/bank.png | Bin 4000 -> 2437 bytes public/images/emoji/apple/bar_chart.png | Bin 3668 -> 1606 bytes public/images/emoji/apple/barbados.png | Bin 2336 -> 1069 bytes public/images/emoji/apple/barber.png | Bin 2891 -> 2058 bytes public/images/emoji/apple/baseball.png | Bin 3952 -> 2411 bytes public/images/emoji/apple/basket.png | Bin 4152 -> 2670 bytes public/images/emoji/apple/basketball.png | Bin 4594 -> 2973 bytes public/images/emoji/apple/basketball_man.png | Bin 3131 -> 3091 bytes .../images/emoji/apple/basketball_player.png | Bin 3131 -> 3091 bytes .../images/emoji/apple/basketball_woman.png | Bin 3219 -> 3132 bytes public/images/emoji/apple/bat.png | Bin 3666 -> 1751 bytes public/images/emoji/apple/bath.png | Bin 3258 -> 2279 bytes public/images/emoji/apple/bathtub.png | Bin 3818 -> 2665 bytes public/images/emoji/apple/battery.png | Bin 3026 -> 1937 bytes public/images/emoji/apple/beach.png | Bin 3114 -> 2954 bytes public/images/emoji/apple/beach_umbrella.png | Bin 3114 -> 2954 bytes .../emoji/apple/beach_with_umbrella.png | Bin 3114 -> 2954 bytes public/images/emoji/apple/bear.png | Bin 4096 -> 1763 bytes public/images/emoji/apple/bearded_person.png | Bin 3762 -> 2080 bytes public/images/emoji/apple/bed.png | Bin 2484 -> 1136 bytes public/images/emoji/apple/bee.png | Bin 4102 -> 3402 bytes public/images/emoji/apple/beer.png | Bin 3744 -> 2975 bytes public/images/emoji/apple/beers.png | Bin 3454 -> 3010 bytes public/images/emoji/apple/beetle.png | Bin 3613 -> 3315 bytes public/images/emoji/apple/beginner.png | Bin 2972 -> 1146 bytes public/images/emoji/apple/belarus.png | Bin 2424 -> 1312 bytes public/images/emoji/apple/belgium.png | Bin 2044 -> 933 bytes public/images/emoji/apple/belize.png | Bin 2740 -> 2132 bytes public/images/emoji/apple/bell.png | Bin 3519 -> 1832 bytes public/images/emoji/apple/bellhop.png | Bin 3711 -> 2215 bytes public/images/emoji/apple/bellhop_bell.png | Bin 3711 -> 2215 bytes public/images/emoji/apple/benin.png | Bin 2179 -> 1091 bytes public/images/emoji/apple/bento.png | Bin 4190 -> 3950 bytes public/images/emoji/apple/bermuda.png | Bin 2869 -> 2474 bytes public/images/emoji/apple/beverage_box.png | Bin 1610 -> 2654 bytes public/images/emoji/apple/bhutan.png | Bin 2756 -> 1715 bytes public/images/emoji/apple/bicyclist.png | Bin 3977 -> 4035 bytes public/images/emoji/apple/bike.png | Bin 3314 -> 2654 bytes public/images/emoji/apple/biking_man.png | Bin 3977 -> 4035 bytes public/images/emoji/apple/biking_woman.png | Bin 3964 -> 3773 bytes public/images/emoji/apple/bikini.png | Bin 2682 -> 2617 bytes public/images/emoji/apple/billed_cap.png | Bin 2615 -> 1013 bytes public/images/emoji/apple/biohazard.png | Bin 3627 -> 1639 bytes public/images/emoji/apple/biohazard_sign.png | Bin 3627 -> 1639 bytes public/images/emoji/apple/bird.png | Bin 3154 -> 1444 bytes public/images/emoji/apple/birthday.png | Bin 3969 -> 2298 bytes public/images/emoji/apple/black_circle.png | Bin 2900 -> 985 bytes public/images/emoji/apple/black_flag.png | Bin 1775 -> 689 bytes public/images/emoji/apple/black_heart.png | Bin 3258 -> 1054 bytes public/images/emoji/apple/black_joker.png | Bin 3225 -> 1034 bytes .../images/emoji/apple/black_large_square.png | Bin 1649 -> 652 bytes .../emoji/apple/black_medium_small_square.png | Bin 570 -> 254 bytes .../emoji/apple/black_medium_square.png | Bin 570 -> 253 bytes public/images/emoji/apple/black_nib.png | Bin 2699 -> 1465 bytes .../images/emoji/apple/black_small_square.png | Bin 1163 -> 376 bytes .../emoji/apple/black_square_button.png | Bin 1314 -> 692 bytes public/images/emoji/apple/blonde_man.png | Bin 3680 -> 3729 bytes public/images/emoji/apple/blonde_woman.png | Bin 3971 -> 2455 bytes public/images/emoji/apple/blossom.png | Bin 4477 -> 2805 bytes public/images/emoji/apple/blowfish.png | Bin 3756 -> 3224 bytes public/images/emoji/apple/blue_book.png | Bin 3392 -> 1550 bytes public/images/emoji/apple/blue_car.png | Bin 3310 -> 2318 bytes public/images/emoji/apple/blue_heart.png | Bin 3381 -> 992 bytes public/images/emoji/apple/blue_square.png | Bin 445 -> 1156 bytes public/images/emoji/apple/blush.png | Bin 3749 -> 1823 bytes public/images/emoji/apple/boar.png | Bin 3621 -> 1679 bytes public/images/emoji/apple/boat.png | Bin 2885 -> 2181 bytes public/images/emoji/apple/bolivia.png | Bin 2450 -> 1579 bytes public/images/emoji/apple/bomb.png | Bin 3432 -> 2028 bytes public/images/emoji/apple/bone.png | Bin 2743 -> 1017 bytes public/images/emoji/apple/book.png | Bin 3843 -> 1994 bytes public/images/emoji/apple/bookmark.png | Bin 3502 -> 1298 bytes public/images/emoji/apple/bookmark_tabs.png | Bin 4029 -> 1591 bytes public/images/emoji/apple/books.png | Bin 2994 -> 2463 bytes public/images/emoji/apple/boom.png | Bin 3029 -> 2027 bytes public/images/emoji/apple/boot.png | Bin 2841 -> 1452 bytes .../images/emoji/apple/bosnia_herzegovina.png | Bin 2399 -> 1281 bytes public/images/emoji/apple/botswana.png | Bin 2845 -> 1187 bytes .../emoji/apple/bottle_with_popping_cork.png | Bin 2774 -> 2322 bytes public/images/emoji/apple/bouquet.png | Bin 4005 -> 4053 bytes public/images/emoji/apple/bouvet_island.png | Bin 2647 -> 1577 bytes public/images/emoji/apple/bow.png | Bin 3774 -> 3590 bytes public/images/emoji/apple/bow_and_arrow.png | Bin 3100 -> 2501 bytes public/images/emoji/apple/bowing_man.png | Bin 3774 -> 3590 bytes public/images/emoji/apple/bowing_woman.png | Bin 4044 -> 2771 bytes public/images/emoji/apple/bowl_with_spoon.png | Bin 3022 -> 1404 bytes public/images/emoji/apple/bowling.png | Bin 4204 -> 2425 bytes public/images/emoji/apple/boxing_glove.png | Bin 3401 -> 1952 bytes public/images/emoji/apple/boy.png | Bin 4132 -> 2013 bytes public/images/emoji/apple/brain.png | Bin 4057 -> 2287 bytes public/images/emoji/apple/brazil.png | Bin 2724 -> 1388 bytes public/images/emoji/apple/bread.png | Bin 4289 -> 1698 bytes public/images/emoji/apple/breast_feeding.png | Bin 3477 -> 2716 bytes public/images/emoji/apple/brick.png | Bin 3763 -> 1560 bytes public/images/emoji/apple/bride_with_veil.png | Bin 4630 -> 2755 bytes public/images/emoji/apple/bridge_at_night.png | Bin 3326 -> 1894 bytes public/images/emoji/apple/briefcase.png | Bin 3674 -> 1618 bytes public/images/emoji/apple/briefs.png | Bin 742 -> 2423 bytes .../apple/british_indian_ocean_territory.png | Bin 3488 -> 2807 bytes .../emoji/apple/british_virgin_islands.png | Bin 2686 -> 1901 bytes public/images/emoji/apple/broccoli.png | Bin 4264 -> 2708 bytes public/images/emoji/apple/broken_heart.png | Bin 3434 -> 1465 bytes public/images/emoji/apple/broom.png | Bin 2196 -> 1003 bytes public/images/emoji/apple/brown_circle.png | Bin 706 -> 2477 bytes public/images/emoji/apple/brown_heart.png | Bin 830 -> 3257 bytes public/images/emoji/apple/brown_square.png | Bin 343 -> 1354 bytes public/images/emoji/apple/brunei.png | Bin 2906 -> 2041 bytes public/images/emoji/apple/bug.png | Bin 3601 -> 3393 bytes .../emoji/apple/building_construction.png | Bin 3157 -> 3054 bytes public/images/emoji/apple/bulb.png | Bin 2931 -> 1135 bytes public/images/emoji/apple/bulgaria.png | Bin 2438 -> 1263 bytes .../images/emoji/apple/bullettrain_front.png | Bin 2961 -> 1941 bytes .../images/emoji/apple/bullettrain_side.png | Bin 3268 -> 2000 bytes public/images/emoji/apple/burkina_faso.png | Bin 2449 -> 1182 bytes public/images/emoji/apple/burrito.png | Bin 3753 -> 2687 bytes public/images/emoji/apple/burundi.png | Bin 2924 -> 1688 bytes public/images/emoji/apple/bus.png | Bin 3250 -> 2298 bytes .../emoji/apple/business_suit_levitating.png | Bin 2172 -> 1243 bytes public/images/emoji/apple/busstop.png | Bin 2596 -> 1786 bytes .../images/emoji/apple/bust_in_silhouette.png | Bin 2307 -> 858 bytes .../emoji/apple/busts_in_silhouette.png | Bin 2631 -> 939 bytes public/images/emoji/apple/butter.png | Bin 1185 -> 2443 bytes public/images/emoji/apple/butterfly.png | Bin 3924 -> 2779 bytes public/images/emoji/apple/cactus.png | Bin 3380 -> 2523 bytes public/images/emoji/apple/cake.png | Bin 3370 -> 1971 bytes public/images/emoji/apple/calendar.png | Bin 3689 -> 1454 bytes public/images/emoji/apple/calendar_spiral.png | Bin 3776 -> 2083 bytes public/images/emoji/apple/call_me_hand.png | Bin 3246 -> 1302 bytes public/images/emoji/apple/calling.png | Bin 2896 -> 1756 bytes public/images/emoji/apple/cambodia.png | Bin 2688 -> 1510 bytes public/images/emoji/apple/camel.png | Bin 3403 -> 2163 bytes public/images/emoji/apple/camera.png | Bin 3914 -> 1607 bytes public/images/emoji/apple/camera_flash.png | Bin 4217 -> 2483 bytes .../images/emoji/apple/camera_with_flash.png | Bin 4217 -> 2483 bytes public/images/emoji/apple/cameroon.png | Bin 2246 -> 1046 bytes public/images/emoji/apple/camping.png | Bin 3143 -> 2552 bytes public/images/emoji/apple/canada.png | Bin 2541 -> 1186 bytes public/images/emoji/apple/canary_islands.png | Bin 2283 -> 1221 bytes public/images/emoji/apple/cancer.png | Bin 3172 -> 1409 bytes public/images/emoji/apple/candle.png | Bin 2838 -> 2033 bytes public/images/emoji/apple/candy.png | Bin 2841 -> 2447 bytes public/images/emoji/apple/canned_food.png | Bin 2617 -> 1785 bytes public/images/emoji/apple/canoe.png | Bin 2651 -> 1814 bytes public/images/emoji/apple/cape_verde.png | Bin 2723 -> 1618 bytes public/images/emoji/apple/capital_abcd.png | Bin 3353 -> 1335 bytes public/images/emoji/apple/capricorn.png | Bin 2949 -> 1337 bytes public/images/emoji/apple/car.png | Bin 3134 -> 2332 bytes public/images/emoji/apple/card_box.png | Bin 3147 -> 1286 bytes public/images/emoji/apple/card_file_box.png | Bin 3147 -> 1286 bytes public/images/emoji/apple/card_index.png | Bin 3760 -> 1925 bytes .../emoji/apple/card_index_dividers.png | Bin 2597 -> 750 bytes .../emoji/apple/caribbean_netherlands.png | Bin 2470 -> 1399 bytes public/images/emoji/apple/carousel_horse.png | Bin 3759 -> 3691 bytes public/images/emoji/apple/carrot.png | Bin 2690 -> 2016 bytes public/images/emoji/apple/cat.png | Bin 3732 -> 2086 bytes public/images/emoji/apple/cat2.png | Bin 3813 -> 2830 bytes public/images/emoji/apple/cayman_islands.png | Bin 2764 -> 2066 bytes public/images/emoji/apple/cd.png | Bin 3766 -> 2114 bytes .../emoji/apple/central_african_republic.png | Bin 2427 -> 1747 bytes .../images/emoji/apple/ceuta_and_melilla.png | Bin 2500 -> 1438 bytes public/images/emoji/apple/chad.png | Bin 2082 -> 897 bytes public/images/emoji/apple/chains.png | Bin 3714 -> 3171 bytes public/images/emoji/apple/chair.png | Bin 1885 -> 2850 bytes public/images/emoji/apple/champagne.png | Bin 2774 -> 2322 bytes public/images/emoji/apple/chart.png | Bin 3023 -> 1393 bytes .../apple/chart_with_downwards_trend.png | Bin 4358 -> 1651 bytes .../emoji/apple/chart_with_upwards_trend.png | Bin 4351 -> 1764 bytes public/images/emoji/apple/checkered_flag.png | Bin 2915 -> 1301 bytes public/images/emoji/apple/cheese.png | Bin 3449 -> 1253 bytes public/images/emoji/apple/cheese_wedge.png | Bin 3449 -> 1253 bytes public/images/emoji/apple/cherries.png | Bin 3428 -> 2306 bytes public/images/emoji/apple/cherry_blossom.png | Bin 4527 -> 3497 bytes public/images/emoji/apple/chess_pawn.png | Bin 2227 -> 961 bytes public/images/emoji/apple/chestnut.png | Bin 4022 -> 2152 bytes public/images/emoji/apple/chicken.png | Bin 3156 -> 2206 bytes public/images/emoji/apple/child.png | Bin 4220 -> 2246 bytes .../images/emoji/apple/children_crossing.png | Bin 2901 -> 1100 bytes public/images/emoji/apple/chile.png | Bin 2423 -> 1216 bytes public/images/emoji/apple/chipmunk.png | Bin 4193 -> 3130 bytes public/images/emoji/apple/chocolate_bar.png | Bin 2933 -> 1408 bytes public/images/emoji/apple/chopsticks.png | Bin 2315 -> 1207 bytes .../images/emoji/apple/christmas_island.png | Bin 2605 -> 1396 bytes public/images/emoji/apple/christmas_tree.png | Bin 3196 -> 2992 bytes public/images/emoji/apple/church.png | Bin 3199 -> 2327 bytes public/images/emoji/apple/cinema.png | Bin 2870 -> 1017 bytes public/images/emoji/apple/circus_tent.png | Bin 3282 -> 2933 bytes public/images/emoji/apple/city_dusk.png | Bin 3315 -> 1923 bytes public/images/emoji/apple/city_sunrise.png | Bin 3552 -> 2239 bytes public/images/emoji/apple/city_sunset.png | Bin 3315 -> 1923 bytes public/images/emoji/apple/cityscape.png | Bin 3452 -> 1520 bytes public/images/emoji/apple/cl.png | Bin 2659 -> 1273 bytes public/images/emoji/apple/clamp.png | Bin 3146 -> 1898 bytes public/images/emoji/apple/clap.png | Bin 3526 -> 1649 bytes public/images/emoji/apple/clapper.png | Bin 3730 -> 1572 bytes .../images/emoji/apple/classical_building.png | Bin 4266 -> 1946 bytes .../images/emoji/apple/clinking_glasses.png | Bin 2913 -> 2198 bytes public/images/emoji/apple/clipboard.png | Bin 3620 -> 1108 bytes .../images/emoji/apple/clipperton_island.png | Bin 2111 -> 1000 bytes public/images/emoji/apple/clock.png | Bin 4124 -> 2134 bytes public/images/emoji/apple/clock1.png | Bin 4164 -> 1555 bytes public/images/emoji/apple/clock10.png | Bin 4048 -> 1516 bytes public/images/emoji/apple/clock1030.png | Bin 4224 -> 1496 bytes public/images/emoji/apple/clock11.png | Bin 4096 -> 1593 bytes public/images/emoji/apple/clock1130.png | Bin 4257 -> 1588 bytes public/images/emoji/apple/clock12.png | Bin 4182 -> 1537 bytes public/images/emoji/apple/clock1230.png | Bin 4255 -> 1556 bytes public/images/emoji/apple/clock130.png | Bin 4309 -> 1642 bytes public/images/emoji/apple/clock2.png | Bin 4240 -> 1535 bytes public/images/emoji/apple/clock230.png | Bin 4214 -> 1572 bytes public/images/emoji/apple/clock3.png | Bin 4040 -> 1577 bytes public/images/emoji/apple/clock330.png | Bin 4042 -> 1509 bytes public/images/emoji/apple/clock4.png | Bin 4247 -> 1610 bytes public/images/emoji/apple/clock430.png | Bin 4074 -> 1560 bytes public/images/emoji/apple/clock5.png | Bin 4087 -> 1613 bytes public/images/emoji/apple/clock530.png | Bin 4119 -> 1592 bytes public/images/emoji/apple/clock6.png | Bin 4088 -> 1536 bytes public/images/emoji/apple/clock630.png | Bin 4194 -> 1559 bytes public/images/emoji/apple/clock7.png | Bin 4303 -> 1616 bytes public/images/emoji/apple/clock730.png | Bin 4208 -> 1530 bytes public/images/emoji/apple/clock8.png | Bin 4283 -> 1638 bytes public/images/emoji/apple/clock830.png | Bin 4130 -> 1580 bytes public/images/emoji/apple/clock9.png | Bin 4018 -> 1516 bytes public/images/emoji/apple/clock930.png | Bin 4219 -> 1511 bytes public/images/emoji/apple/closed_book.png | Bin 3282 -> 1476 bytes .../emoji/apple/closed_lock_with_key.png | Bin 3223 -> 2071 bytes public/images/emoji/apple/closed_umbrella.png | Bin 2730 -> 1660 bytes public/images/emoji/apple/cloud.png | Bin 3128 -> 884 bytes public/images/emoji/apple/cloud_lightning.png | Bin 3099 -> 1219 bytes public/images/emoji/apple/cloud_rain.png | Bin 3515 -> 1570 bytes public/images/emoji/apple/cloud_snow.png | Bin 3797 -> 1512 bytes public/images/emoji/apple/cloud_tornado.png | Bin 4203 -> 2240 bytes .../emoji/apple/cloud_with_lightning.png | Bin 3099 -> 1219 bytes .../apple/cloud_with_lightning_and_rain.png | Bin 3554 -> 2072 bytes public/images/emoji/apple/cloud_with_rain.png | Bin 3515 -> 1570 bytes public/images/emoji/apple/cloud_with_snow.png | Bin 3797 -> 1512 bytes .../images/emoji/apple/cloud_with_tornado.png | Bin 4203 -> 2240 bytes public/images/emoji/apple/clown_face.png | Bin 4166 -> 3372 bytes public/images/emoji/apple/clubs.png | Bin 2640 -> 1016 bytes public/images/emoji/apple/cn.png | Bin 2419 -> 978 bytes public/images/emoji/apple/coat.png | Bin 3797 -> 1700 bytes public/images/emoji/apple/cocktail.png | Bin 2635 -> 2052 bytes public/images/emoji/apple/coconut.png | Bin 4564 -> 1977 bytes public/images/emoji/apple/cocos_islands.png | Bin 2621 -> 1166 bytes public/images/emoji/apple/coffee.png | Bin 3635 -> 1748 bytes public/images/emoji/apple/coffin.png | Bin 3410 -> 1718 bytes public/images/emoji/apple/cold_face.png | Bin 3695 -> 2765 bytes public/images/emoji/apple/cold_sweat.png | Bin 3392 -> 2715 bytes public/images/emoji/apple/colombia.png | Bin 2442 -> 1297 bytes public/images/emoji/apple/comet.png | Bin 3708 -> 2962 bytes public/images/emoji/apple/comoros.png | Bin 2543 -> 1789 bytes public/images/emoji/apple/compass.png | Bin 4509 -> 2469 bytes public/images/emoji/apple/compression.png | Bin 3146 -> 1898 bytes public/images/emoji/apple/computer.png | Bin 3273 -> 1096 bytes public/images/emoji/apple/computer_mouse.png | Bin 2417 -> 699 bytes public/images/emoji/apple/confetti_ball.png | Bin 3832 -> 3576 bytes public/images/emoji/apple/confounded.png | Bin 3712 -> 1824 bytes public/images/emoji/apple/confused.png | Bin 3609 -> 1737 bytes .../images/emoji/apple/congo_brazzaville.png | Bin 2342 -> 1357 bytes public/images/emoji/apple/congo_kinshasa.png | Bin 2718 -> 1957 bytes public/images/emoji/apple/congratulations.png | Bin 3217 -> 1523 bytes public/images/emoji/apple/construction.png | Bin 3432 -> 2404 bytes .../images/emoji/apple/construction_site.png | Bin 3157 -> 3054 bytes .../emoji/apple/construction_worker.png | Bin 3293 -> 3489 bytes .../emoji/apple/construction_worker_man.png | Bin 3293 -> 3489 bytes .../emoji/apple/construction_worker_woman.png | Bin 3402 -> 3283 bytes public/images/emoji/apple/control_knobs.png | Bin 5123 -> 2073 bytes .../images/emoji/apple/convenience_store.png | Bin 3527 -> 2074 bytes public/images/emoji/apple/cook_islands.png | Bin 2786 -> 1674 bytes public/images/emoji/apple/cookie.png | Bin 4094 -> 2227 bytes public/images/emoji/apple/cool.png | Bin 3041 -> 1081 bytes public/images/emoji/apple/cop.png | Bin 3513 -> 3446 bytes public/images/emoji/apple/copyright.png | Bin 2374 -> 1015 bytes public/images/emoji/apple/corn.png | Bin 4030 -> 3463 bytes public/images/emoji/apple/costa_rica.png | Bin 2609 -> 1414 bytes public/images/emoji/apple/cote_divoire.png | Bin 2191 -> 974 bytes public/images/emoji/apple/couch.png | Bin 3265 -> 1780 bytes public/images/emoji/apple/couch_and_lamp.png | Bin 3265 -> 1780 bytes public/images/emoji/apple/couple.png | Bin 3567 -> 3471 bytes .../images/emoji/apple/couple_with_heart.png | Bin 4195 -> 4056 bytes .../emoji/apple/couple_with_heart_man_man.png | Bin 3988 -> 3161 bytes .../apple/couple_with_heart_woman_man.png | Bin 4195 -> 4056 bytes .../apple/couple_with_heart_woman_woman.png | Bin 4408 -> 3830 bytes public/images/emoji/apple/couplekiss.png | Bin 4139 -> 3734 bytes .../images/emoji/apple/couplekiss_man_man.png | Bin 3824 -> 2269 bytes .../emoji/apple/couplekiss_man_woman.png | Bin 4139 -> 3734 bytes .../emoji/apple/couplekiss_woman_woman.png | Bin 4399 -> 2729 bytes public/images/emoji/apple/cow.png | Bin 3452 -> 1907 bytes public/images/emoji/apple/cow2.png | Bin 3334 -> 2207 bytes public/images/emoji/apple/cowboy_hat_face.png | Bin 3713 -> 2406 bytes public/images/emoji/apple/crab.png | Bin 3891 -> 3722 bytes public/images/emoji/apple/crayon.png | Bin 2509 -> 1196 bytes public/images/emoji/apple/crazy_face.png | Bin 3740 -> 2803 bytes public/images/emoji/apple/credit_card.png | Bin 2998 -> 1187 bytes public/images/emoji/apple/crescent_moon.png | Bin 2662 -> 1337 bytes public/images/emoji/apple/cricket.png | Bin 3080 -> 1967 bytes .../emoji/apple/cricket_bat_and_ball.png | Bin 2809 -> 1814 bytes .../images/emoji/apple/cricket_bat_ball.png | Bin 2809 -> 1814 bytes public/images/emoji/apple/croatia.png | Bin 2571 -> 1772 bytes public/images/emoji/apple/crocodile.png | Bin 3944 -> 2674 bytes public/images/emoji/apple/croissant.png | Bin 4015 -> 2198 bytes public/images/emoji/apple/cross.png | Bin 2319 -> 822 bytes public/images/emoji/apple/crossed_fingers.png | Bin 3118 -> 1268 bytes public/images/emoji/apple/crossed_flags.png | Bin 3430 -> 2033 bytes public/images/emoji/apple/crossed_swords.png | Bin 3203 -> 1829 bytes public/images/emoji/apple/crown.png | Bin 3477 -> 3149 bytes public/images/emoji/apple/cruise_ship.png | Bin 3155 -> 2210 bytes public/images/emoji/apple/cry.png | Bin 3682 -> 2342 bytes public/images/emoji/apple/crying_cat_face.png | Bin 3524 -> 2693 bytes public/images/emoji/apple/crystal_ball.png | Bin 3518 -> 3022 bytes public/images/emoji/apple/cuba.png | Bin 2774 -> 1524 bytes public/images/emoji/apple/cucumber.png | Bin 3918 -> 2791 bytes public/images/emoji/apple/cup_with_straw.png | Bin 2745 -> 1475 bytes public/images/emoji/apple/cupcake.png | Bin 3850 -> 3327 bytes public/images/emoji/apple/cupid.png | Bin 3119 -> 1884 bytes public/images/emoji/apple/curacao.png | Bin 2587 -> 1138 bytes public/images/emoji/apple/curling_stone.png | Bin 3603 -> 2121 bytes public/images/emoji/apple/curly_loop.png | Bin 1788 -> 800 bytes .../images/emoji/apple/currency_exchange.png | Bin 2196 -> 916 bytes public/images/emoji/apple/curry.png | Bin 3258 -> 2100 bytes public/images/emoji/apple/custard.png | Bin 2916 -> 1796 bytes public/images/emoji/apple/customs.png | Bin 2590 -> 1169 bytes public/images/emoji/apple/cut_of_meat.png | Bin 3738 -> 2576 bytes public/images/emoji/apple/cyclone.png | Bin 3080 -> 1254 bytes public/images/emoji/apple/cyprus.png | Bin 2679 -> 1153 bytes public/images/emoji/apple/czech_republic.png | Bin 2471 -> 1159 bytes public/images/emoji/apple/dagger.png | Bin 2406 -> 1082 bytes public/images/emoji/apple/dagger_knife.png | Bin 2406 -> 1082 bytes public/images/emoji/apple/dancer.png | Bin 3603 -> 3371 bytes public/images/emoji/apple/dancers.png | Bin 3653 -> 3635 bytes public/images/emoji/apple/dancing_men.png | Bin 3630 -> 2789 bytes public/images/emoji/apple/dancing_women.png | Bin 3653 -> 3635 bytes public/images/emoji/apple/dango.png | Bin 2464 -> 1959 bytes public/images/emoji/apple/dark_sunglasses.png | Bin 2499 -> 764 bytes public/images/emoji/apple/dart.png | Bin 3241 -> 2715 bytes public/images/emoji/apple/dash.png | Bin 4060 -> 1553 bytes public/images/emoji/apple/date.png | Bin 3152 -> 957 bytes public/images/emoji/apple/de.png | Bin 2463 -> 1204 bytes public/images/emoji/apple/deaf_man.png | Bin 2466 -> 3391 bytes public/images/emoji/apple/deaf_woman.png | Bin 2756 -> 3914 bytes public/images/emoji/apple/deciduous_tree.png | Bin 4166 -> 2390 bytes public/images/emoji/apple/deer.png | Bin 3193 -> 2366 bytes public/images/emoji/apple/denmark.png | Bin 2569 -> 1181 bytes .../images/emoji/apple/department_store.png | Bin 3688 -> 2101 bytes public/images/emoji/apple/derelict_house.png | Bin 3808 -> 2573 bytes .../emoji/apple/derelict_house_building.png | Bin 3808 -> 2573 bytes public/images/emoji/apple/desert.png | Bin 3209 -> 3035 bytes public/images/emoji/apple/desert_island.png | Bin 3125 -> 2924 bytes public/images/emoji/apple/desktop.png | Bin 2564 -> 895 bytes .../images/emoji/apple/desktop_computer.png | Bin 2564 -> 895 bytes .../apple/diamond_shape_with_a_dot_inside.png | Bin 3920 -> 2701 bytes public/images/emoji/apple/diamonds.png | Bin 2264 -> 735 bytes public/images/emoji/apple/diego_garcia.png | Bin 3488 -> 2807 bytes public/images/emoji/apple/disappointed.png | Bin 3630 -> 1649 bytes .../emoji/apple/disappointed_relieved.png | Bin 3726 -> 2355 bytes public/images/emoji/apple/dividers.png | Bin 2597 -> 750 bytes public/images/emoji/apple/diving_mask.png | Bin 1583 -> 3819 bytes public/images/emoji/apple/diya_lamp.png | Bin 1450 -> 2991 bytes public/images/emoji/apple/dizzy.png | Bin 2773 -> 1829 bytes public/images/emoji/apple/dizzy_face.png | Bin 3734 -> 1933 bytes public/images/emoji/apple/djibouti.png | Bin 2468 -> 1252 bytes public/images/emoji/apple/dna.png | Bin 3190 -> 3030 bytes public/images/emoji/apple/do_not_litter.png | Bin 3540 -> 1824 bytes public/images/emoji/apple/dog.png | Bin 3702 -> 2116 bytes public/images/emoji/apple/dog2.png | Bin 3665 -> 2245 bytes public/images/emoji/apple/dollar.png | Bin 3444 -> 1936 bytes public/images/emoji/apple/dolls.png | Bin 3839 -> 3750 bytes public/images/emoji/apple/dolphin.png | Bin 3171 -> 2081 bytes public/images/emoji/apple/dominica.png | Bin 2722 -> 2100 bytes .../images/emoji/apple/dominican_republic.png | Bin 2560 -> 1660 bytes public/images/emoji/apple/door.png | Bin 3304 -> 839 bytes .../emoji/apple/double_vertical_bar.png | Bin 2554 -> 960 bytes public/images/emoji/apple/doughnut.png | Bin 4403 -> 4166 bytes public/images/emoji/apple/dove.png | Bin 3446 -> 1837 bytes public/images/emoji/apple/dove_of_peace.png | Bin 3446 -> 1837 bytes public/images/emoji/apple/dragon.png | Bin 4369 -> 4095 bytes public/images/emoji/apple/dragon_face.png | Bin 4533 -> 4425 bytes public/images/emoji/apple/dress.png | Bin 3454 -> 1738 bytes public/images/emoji/apple/dromedary_camel.png | Bin 3043 -> 1585 bytes public/images/emoji/apple/drooling_face.png | Bin 3667 -> 2267 bytes public/images/emoji/apple/drop_of_blood.png | Bin 880 -> 2914 bytes public/images/emoji/apple/droplet.png | Bin 2808 -> 1195 bytes public/images/emoji/apple/drum.png | Bin 3319 -> 2592 bytes public/images/emoji/apple/duck.png | Bin 3016 -> 2773 bytes public/images/emoji/apple/dumpling.png | Bin 4098 -> 1881 bytes public/images/emoji/apple/dvd.png | Bin 3901 -> 2183 bytes public/images/emoji/apple/e-mail.png | Bin 2520 -> 772 bytes public/images/emoji/apple/eagle.png | Bin 3762 -> 2528 bytes public/images/emoji/apple/ear.png | Bin 2933 -> 1198 bytes public/images/emoji/apple/ear_of_rice.png | Bin 3446 -> 3384 bytes public/images/emoji/apple/earth_africa.png | Bin 3901 -> 3696 bytes public/images/emoji/apple/earth_americas.png | Bin 4093 -> 3227 bytes public/images/emoji/apple/earth_asia.png | Bin 3985 -> 3826 bytes public/images/emoji/apple/ecuador.png | Bin 2625 -> 1885 bytes public/images/emoji/apple/egg.png | Bin 3482 -> 961 bytes public/images/emoji/apple/eggplant.png | Bin 3152 -> 1561 bytes public/images/emoji/apple/egypt.png | Bin 2437 -> 1227 bytes public/images/emoji/apple/eight.png | Bin 2788 -> 1030 bytes .../emoji/apple/eight_pointed_black_star.png | Bin 2772 -> 1347 bytes .../emoji/apple/eight_spoked_asterisk.png | Bin 2590 -> 1098 bytes public/images/emoji/apple/el_salvador.png | Bin 2561 -> 1344 bytes public/images/emoji/apple/electric_plug.png | Bin 3016 -> 1357 bytes public/images/emoji/apple/elephant.png | Bin 3390 -> 1624 bytes public/images/emoji/apple/elf.png | Bin 3910 -> 3289 bytes public/images/emoji/apple/email.png | Bin 2520 -> 772 bytes public/images/emoji/apple/end.png | Bin 1583 -> 656 bytes public/images/emoji/apple/envelope.png | Bin 2520 -> 772 bytes .../emoji/apple/envelope_with_arrow.png | Bin 2807 -> 1113 bytes .../images/emoji/apple/equatorial_guinea.png | Bin 2454 -> 1551 bytes public/images/emoji/apple/eritrea.png | Bin 2583 -> 1635 bytes public/images/emoji/apple/es.png | Bin 2500 -> 1438 bytes public/images/emoji/apple/estonia.png | Bin 2567 -> 1073 bytes public/images/emoji/apple/ethiopia.png | Bin 2567 -> 1387 bytes public/images/emoji/apple/eu.png | Bin 2462 -> 895 bytes public/images/emoji/apple/euro.png | Bin 3183 -> 2101 bytes public/images/emoji/apple/european_castle.png | Bin 4411 -> 2958 bytes .../emoji/apple/european_post_office.png | Bin 3727 -> 2533 bytes public/images/emoji/apple/evergreen_tree.png | Bin 3285 -> 2545 bytes public/images/emoji/apple/exclamation.png | Bin 1448 -> 509 bytes public/images/emoji/apple/exploding_head.png | Bin 4463 -> 3402 bytes public/images/emoji/apple/expressionless.png | Bin 3433 -> 1544 bytes public/images/emoji/apple/eye.png | Bin 3271 -> 2074 bytes public/images/emoji/apple/eyeglasses.png | Bin 2570 -> 1096 bytes public/images/emoji/apple/eyes.png | Bin 3131 -> 1168 bytes public/images/emoji/apple/face_vomiting.png | Bin 3982 -> 3172 bytes .../emoji/apple/face_with_hand_over_mouth.png | Bin 3877 -> 2119 bytes .../emoji/apple/face_with_head_bandage.png | Bin 3602 -> 1926 bytes .../images/emoji/apple/face_with_monocle.png | Bin 3707 -> 2357 bytes .../emoji/apple/face_with_raised_eyebrow.png | Bin 3556 -> 1837 bytes .../emoji/apple/face_with_rolling_eyes.png | Bin 3709 -> 2038 bytes .../apple/face_with_symbols_over_mouth.png | Bin 3751 -> 1954 bytes .../emoji/apple/face_with_thermometer.png | Bin 3680 -> 2539 bytes public/images/emoji/apple/facepunch.png | Bin 3528 -> 1080 bytes public/images/emoji/apple/factory.png | Bin 3498 -> 3006 bytes public/images/emoji/apple/fairy.png | Bin 3308 -> 3275 bytes public/images/emoji/apple/falafel.png | Bin 1045 -> 3442 bytes .../images/emoji/apple/falkland_islands.png | Bin 2808 -> 1982 bytes public/images/emoji/apple/fallen_leaf.png | Bin 3305 -> 2064 bytes public/images/emoji/apple/family.png | Bin 4693 -> 4625 bytes public/images/emoji/apple/family_man_boy.png | Bin 3194 -> 2396 bytes .../images/emoji/apple/family_man_boy_boy.png | Bin 3435 -> 2616 bytes public/images/emoji/apple/family_man_girl.png | Bin 3182 -> 2571 bytes .../emoji/apple/family_man_girl_boy.png | Bin 3651 -> 3556 bytes .../emoji/apple/family_man_girl_girl.png | Bin 3499 -> 3001 bytes .../images/emoji/apple/family_man_man_boy.png | Bin 4102 -> 3348 bytes .../emoji/apple/family_man_man_boy_boy.png | Bin 4408 -> 3941 bytes .../emoji/apple/family_man_man_girl.png | Bin 4049 -> 3490 bytes .../emoji/apple/family_man_man_girl_boy.png | Bin 4489 -> 4427 bytes .../emoji/apple/family_man_man_girl_girl.png | Bin 4542 -> 4515 bytes .../emoji/apple/family_man_woman_boy.png | Bin 4322 -> 4211 bytes .../emoji/apple/family_man_woman_boy_boy.png | Bin 4717 -> 4179 bytes .../emoji/apple/family_man_woman_boys.png | Bin 4717 -> 4179 bytes .../emoji/apple/family_man_woman_girl.png | Bin 4339 -> 3549 bytes .../emoji/apple/family_man_woman_girl_boy.png | Bin 4693 -> 4625 bytes .../apple/family_man_woman_girl_girl.png | Bin 4676 -> 4479 bytes .../emoji/apple/family_man_woman_girls.png | Bin 4676 -> 4479 bytes public/images/emoji/apple/family_men_boy.png | Bin 4102 -> 3348 bytes public/images/emoji/apple/family_men_boys.png | Bin 4408 -> 3941 bytes public/images/emoji/apple/family_men_girl.png | Bin 4049 -> 3490 bytes .../emoji/apple/family_men_girl_boy.png | Bin 4489 -> 4427 bytes .../images/emoji/apple/family_men_girls.png | Bin 4542 -> 4515 bytes .../images/emoji/apple/family_woman_boy.png | Bin 3379 -> 2446 bytes .../emoji/apple/family_woman_boy_boy.png | Bin 3532 -> 2716 bytes .../images/emoji/apple/family_woman_girl.png | Bin 3337 -> 2647 bytes .../emoji/apple/family_woman_girl_boy.png | Bin 3920 -> 3605 bytes .../emoji/apple/family_woman_girl_girl.png | Bin 3592 -> 3100 bytes .../emoji/apple/family_woman_woman_boy.png | Bin 4203 -> 3202 bytes .../apple/family_woman_woman_boy_boy.png | Bin 4532 -> 3862 bytes .../emoji/apple/family_woman_woman_girl.png | Bin 4196 -> 3669 bytes .../apple/family_woman_woman_girl_boy.png | Bin 4559 -> 4501 bytes .../apple/family_woman_woman_girl_girl.png | Bin 4609 -> 4467 bytes .../images/emoji/apple/family_women_boy.png | Bin 4203 -> 3202 bytes .../images/emoji/apple/family_women_boys.png | Bin 4532 -> 3862 bytes .../images/emoji/apple/family_women_girl.png | Bin 4196 -> 3669 bytes .../emoji/apple/family_women_girl_boy.png | Bin 4559 -> 4501 bytes .../images/emoji/apple/family_women_girls.png | Bin 4609 -> 4467 bytes public/images/emoji/apple/faroe_islands.png | Bin 2760 -> 1742 bytes public/images/emoji/apple/fast_forward.png | Bin 2671 -> 952 bytes public/images/emoji/apple/fax.png | Bin 2712 -> 972 bytes public/images/emoji/apple/fearful.png | Bin 3332 -> 2059 bytes public/images/emoji/apple/feet.png | Bin 1969 -> 740 bytes .../emoji/apple/female_couple_with_heart.png | Bin 4408 -> 3830 bytes .../images/emoji/apple/female_couplekiss.png | Bin 4399 -> 2729 bytes .../images/emoji/apple/female_detective.png | Bin 3704 -> 3041 bytes public/images/emoji/apple/ferris_wheel.png | Bin 3743 -> 3683 bytes public/images/emoji/apple/ferry.png | Bin 3172 -> 2250 bytes public/images/emoji/apple/field_hockey.png | Bin 2494 -> 1780 bytes public/images/emoji/apple/fiji.png | Bin 3047 -> 2335 bytes public/images/emoji/apple/file_cabinet.png | Bin 3628 -> 922 bytes public/images/emoji/apple/file_folder.png | Bin 3505 -> 1229 bytes public/images/emoji/apple/film_frames.png | Bin 4281 -> 2493 bytes public/images/emoji/apple/film_projector.png | Bin 3872 -> 2273 bytes public/images/emoji/apple/film_strip.png | Bin 4281 -> 2493 bytes public/images/emoji/apple/finland.png | Bin 2622 -> 1128 bytes public/images/emoji/apple/fire.png | Bin 3348 -> 2049 bytes public/images/emoji/apple/fire_engine.png | Bin 3391 -> 2763 bytes .../images/emoji/apple/fire_extinguisher.png | Bin 3042 -> 2969 bytes public/images/emoji/apple/firecracker.png | Bin 3443 -> 2443 bytes public/images/emoji/apple/fireworks.png | Bin 3950 -> 2402 bytes .../images/emoji/apple/first_quarter_moon.png | Bin 4509 -> 2244 bytes .../apple/first_quarter_moon_with_face.png | Bin 2876 -> 1503 bytes public/images/emoji/apple/fish.png | Bin 2926 -> 1784 bytes public/images/emoji/apple/fish_cake.png | Bin 4096 -> 1663 bytes .../emoji/apple/fishing_pole_and_fish.png | Bin 3045 -> 3004 bytes public/images/emoji/apple/fist.png | Bin 3904 -> 1539 bytes public/images/emoji/apple/fist_left.png | Bin 2964 -> 1144 bytes public/images/emoji/apple/fist_right.png | Bin 3020 -> 1181 bytes public/images/emoji/apple/five.png | Bin 2675 -> 1113 bytes public/images/emoji/apple/flag_black.png | Bin 1775 -> 689 bytes public/images/emoji/apple/flag_cn.png | Bin 2419 -> 978 bytes public/images/emoji/apple/flag_de.png | Bin 2463 -> 1204 bytes public/images/emoji/apple/flag_es.png | Bin 2500 -> 1438 bytes public/images/emoji/apple/flag_fr.png | Bin 2111 -> 1000 bytes public/images/emoji/apple/flag_gb.png | Bin 3260 -> 2233 bytes public/images/emoji/apple/flag_it.png | Bin 2133 -> 906 bytes public/images/emoji/apple/flag_jp.png | Bin 2511 -> 940 bytes public/images/emoji/apple/flag_kr.png | Bin 2926 -> 1451 bytes public/images/emoji/apple/flag_ru.png | Bin 2422 -> 1219 bytes public/images/emoji/apple/flag_us.png | Bin 3306 -> 2340 bytes public/images/emoji/apple/flag_white.png | Bin 2090 -> 756 bytes public/images/emoji/apple/flags.png | Bin 3753 -> 3891 bytes public/images/emoji/apple/flame.png | Bin 3348 -> 2049 bytes public/images/emoji/apple/flamingo.png | Bin 918 -> 2416 bytes public/images/emoji/apple/flashlight.png | Bin 2970 -> 1418 bytes public/images/emoji/apple/flat_shoe.png | Bin 2178 -> 967 bytes public/images/emoji/apple/fleur-de-lis.png | Bin 2961 -> 2275 bytes public/images/emoji/apple/fleur_de_lis.png | Bin 2961 -> 2275 bytes public/images/emoji/apple/flight_arrival.png | Bin 2541 -> 2212 bytes .../images/emoji/apple/flight_departure.png | Bin 2341 -> 1842 bytes public/images/emoji/apple/floppy_disk.png | Bin 3001 -> 841 bytes .../emoji/apple/flower_playing_cards.png | Bin 3192 -> 1185 bytes public/images/emoji/apple/flushed.png | Bin 3629 -> 2222 bytes public/images/emoji/apple/flying_disc.png | Bin 3709 -> 1581 bytes public/images/emoji/apple/flying_saucer.png | Bin 2475 -> 1353 bytes public/images/emoji/apple/fog.png | Bin 5241 -> 1217 bytes public/images/emoji/apple/foggy.png | Bin 3437 -> 1352 bytes public/images/emoji/apple/foot.png | Bin 2908 -> 1151 bytes public/images/emoji/apple/football.png | Bin 4629 -> 2557 bytes public/images/emoji/apple/footprints.png | Bin 1969 -> 740 bytes public/images/emoji/apple/fork_and_knife.png | Bin 2612 -> 1518 bytes .../emoji/apple/fork_and_knife_with_plate.png | Bin 3904 -> 2112 bytes .../images/emoji/apple/fork_knife_plate.png | Bin 3904 -> 2112 bytes public/images/emoji/apple/fortune_cookie.png | Bin 3481 -> 1389 bytes public/images/emoji/apple/fountain.png | Bin 3300 -> 3082 bytes public/images/emoji/apple/fountain_pen.png | Bin 2792 -> 1599 bytes public/images/emoji/apple/four.png | Bin 2551 -> 989 bytes .../images/emoji/apple/four_leaf_clover.png | Bin 3992 -> 2964 bytes public/images/emoji/apple/fox_face.png | Bin 3703 -> 2403 bytes public/images/emoji/apple/fr.png | Bin 2111 -> 1000 bytes public/images/emoji/apple/frame_photo.png | Bin 3942 -> 2371 bytes .../images/emoji/apple/frame_with_picture.png | Bin 3942 -> 2371 bytes public/images/emoji/apple/framed_picture.png | Bin 3942 -> 2371 bytes public/images/emoji/apple/free.png | Bin 2893 -> 1025 bytes public/images/emoji/apple/french_guiana.png | Bin 2401 -> 1182 bytes .../images/emoji/apple/french_polynesia.png | Bin 2531 -> 1416 bytes .../apple/french_southern_territories.png | Bin 2450 -> 1141 bytes public/images/emoji/apple/fried_egg.png | Bin 3585 -> 1969 bytes public/images/emoji/apple/fried_shrimp.png | Bin 3976 -> 2909 bytes public/images/emoji/apple/fries.png | Bin 4085 -> 2524 bytes public/images/emoji/apple/frog.png | Bin 3727 -> 2839 bytes public/images/emoji/apple/frowning.png | Bin 3672 -> 1575 bytes public/images/emoji/apple/frowning2.png | Bin 3655 -> 1808 bytes public/images/emoji/apple/frowning_face.png | Bin 3655 -> 1808 bytes public/images/emoji/apple/frowning_man.png | Bin 3170 -> 1856 bytes public/images/emoji/apple/frowning_woman.png | Bin 3565 -> 2259 bytes public/images/emoji/apple/fu.png | Bin 2530 -> 808 bytes public/images/emoji/apple/fuelpump.png | Bin 3561 -> 2246 bytes public/images/emoji/apple/full_moon.png | Bin 4626 -> 1751 bytes .../emoji/apple/full_moon_with_face.png | Bin 4639 -> 2673 bytes public/images/emoji/apple/funeral_urn.png | Bin 3228 -> 1873 bytes public/images/emoji/apple/gabon.png | Bin 2364 -> 1280 bytes public/images/emoji/apple/gambia.png | Bin 2573 -> 1499 bytes public/images/emoji/apple/game_die.png | Bin 3760 -> 1564 bytes public/images/emoji/apple/garlic.png | Bin 1020 -> 3521 bytes public/images/emoji/apple/gb.png | Bin 3260 -> 2233 bytes public/images/emoji/apple/gear.png | Bin 4357 -> 2669 bytes public/images/emoji/apple/gem.png | Bin 3438 -> 2269 bytes public/images/emoji/apple/gemini.png | Bin 2725 -> 1129 bytes public/images/emoji/apple/genie.png | Bin 2846 -> 2681 bytes public/images/emoji/apple/georgia.png | Bin 2875 -> 1496 bytes public/images/emoji/apple/ghana.png | Bin 2436 -> 1341 bytes public/images/emoji/apple/ghost.png | Bin 4233 -> 2035 bytes public/images/emoji/apple/gibraltar.png | Bin 2721 -> 1603 bytes public/images/emoji/apple/gift.png | Bin 3715 -> 2184 bytes public/images/emoji/apple/gift_heart.png | Bin 3555 -> 2659 bytes public/images/emoji/apple/giraffe.png | Bin 2903 -> 2490 bytes public/images/emoji/apple/girl.png | Bin 4340 -> 2102 bytes .../emoji/apple/globe_with_meridians.png | Bin 4454 -> 2872 bytes public/images/emoji/apple/gloves.png | Bin 3600 -> 1475 bytes public/images/emoji/apple/goal_net.png | Bin 3517 -> 2579 bytes public/images/emoji/apple/goat.png | Bin 3126 -> 1796 bytes public/images/emoji/apple/goggles.png | Bin 3321 -> 2195 bytes public/images/emoji/apple/golf.png | Bin 2450 -> 1611 bytes public/images/emoji/apple/golfer.png | Bin 2677 -> 2569 bytes public/images/emoji/apple/golfing_man.png | Bin 2677 -> 2569 bytes public/images/emoji/apple/golfing_woman.png | Bin 2562 -> 2431 bytes public/images/emoji/apple/gorilla.png | Bin 4168 -> 1838 bytes public/images/emoji/apple/grandma.png | Bin 4262 -> 2341 bytes public/images/emoji/apple/grapes.png | Bin 4274 -> 3298 bytes public/images/emoji/apple/greece.png | Bin 3192 -> 1590 bytes public/images/emoji/apple/green_apple.png | Bin 3458 -> 1827 bytes public/images/emoji/apple/green_book.png | Bin 3469 -> 1354 bytes public/images/emoji/apple/green_circle.png | Bin 832 -> 2530 bytes public/images/emoji/apple/green_heart.png | Bin 3372 -> 1096 bytes public/images/emoji/apple/green_salad.png | Bin 4857 -> 4166 bytes public/images/emoji/apple/green_square.png | Bin 469 -> 1425 bytes public/images/emoji/apple/greenland.png | Bin 2616 -> 1109 bytes public/images/emoji/apple/grenada.png | Bin 2638 -> 1669 bytes .../images/emoji/apple/grey_exclamation.png | Bin 1585 -> 640 bytes public/images/emoji/apple/grey_question.png | Bin 1743 -> 569 bytes public/images/emoji/apple/grimacing.png | Bin 3552 -> 1842 bytes public/images/emoji/apple/grin.png | Bin 3822 -> 2074 bytes public/images/emoji/apple/grinning.png | Bin 3675 -> 1910 bytes public/images/emoji/apple/guadeloupe.png | Bin 2599 -> 1361 bytes public/images/emoji/apple/guam.png | Bin 2455 -> 1278 bytes public/images/emoji/apple/guardsman.png | Bin 3451 -> 3567 bytes public/images/emoji/apple/guardswoman.png | Bin 3473 -> 2275 bytes public/images/emoji/apple/guatemala.png | Bin 2458 -> 1150 bytes public/images/emoji/apple/guernsey.png | Bin 2720 -> 1414 bytes public/images/emoji/apple/guide_dog.png | Bin 2677 -> 3471 bytes public/images/emoji/apple/guinea.png | Bin 2135 -> 946 bytes public/images/emoji/apple/guinea_bissau.png | Bin 2350 -> 1225 bytes public/images/emoji/apple/guitar.png | Bin 2748 -> 2529 bytes public/images/emoji/apple/gun.png | Bin 2957 -> 2270 bytes public/images/emoji/apple/guyana.png | Bin 2624 -> 1774 bytes public/images/emoji/apple/haircut.png | Bin 3941 -> 3015 bytes public/images/emoji/apple/haircut_man.png | Bin 3571 -> 2651 bytes public/images/emoji/apple/haircut_woman.png | Bin 3941 -> 3015 bytes public/images/emoji/apple/haiti.png | Bin 2394 -> 1333 bytes public/images/emoji/apple/hamburger.png | Bin 4017 -> 3618 bytes public/images/emoji/apple/hammer.png | Bin 2367 -> 1221 bytes public/images/emoji/apple/hammer_and_pick.png | Bin 3096 -> 1615 bytes .../images/emoji/apple/hammer_and_wrench.png | Bin 3424 -> 2255 bytes public/images/emoji/apple/hammer_pick.png | Bin 3096 -> 1615 bytes public/images/emoji/apple/hamster.png | Bin 4069 -> 2782 bytes public/images/emoji/apple/hand.png | Bin 3632 -> 1361 bytes public/images/emoji/apple/hand_splayed.png | Bin 3607 -> 1419 bytes public/images/emoji/apple/handbag.png | Bin 3692 -> 2169 bytes public/images/emoji/apple/handshake.png | Bin 3360 -> 1313 bytes public/images/emoji/apple/hankey.png | Bin 3315 -> 1696 bytes public/images/emoji/apple/hash.png | Bin 2834 -> 1020 bytes public/images/emoji/apple/hatched_chick.png | Bin 3264 -> 2369 bytes public/images/emoji/apple/hatching_chick.png | Bin 3399 -> 2593 bytes public/images/emoji/apple/head_bandage.png | Bin 3602 -> 1926 bytes public/images/emoji/apple/headphones.png | Bin 4054 -> 2294 bytes public/images/emoji/apple/hear_no_evil.png | Bin 4127 -> 2535 bytes .../emoji/apple/hear_with_hearing_aid.png | Bin 1961 -> 3320 bytes .../apple/heard_and_mc_donald_islands.png | Bin 3025 -> 1816 bytes public/images/emoji/apple/heart.png | Bin 3452 -> 1242 bytes .../images/emoji/apple/heart_decoration.png | Bin 2536 -> 1031 bytes .../images/emoji/apple/heart_exclamation.png | Bin 2560 -> 961 bytes public/images/emoji/apple/heart_eyes.png | Bin 3775 -> 2271 bytes public/images/emoji/apple/heart_eyes_cat.png | Bin 3540 -> 2775 bytes public/images/emoji/apple/heartbeat.png | Bin 3161 -> 1261 bytes public/images/emoji/apple/heartpulse.png | Bin 3573 -> 1655 bytes public/images/emoji/apple/hearts.png | Bin 2638 -> 918 bytes .../images/emoji/apple/heavy_check_mark.png | Bin 1333 -> 576 bytes .../emoji/apple/heavy_division_sign.png | Bin 606 -> 270 bytes .../images/emoji/apple/heavy_dollar_sign.png | Bin 1562 -> 667 bytes .../emoji/apple/heavy_heart_exclamation.png | Bin 2560 -> 961 bytes .../heavy_heart_exclamation_mark_ornament.png | Bin 2560 -> 961 bytes .../images/emoji/apple/heavy_minus_sign.png | Bin 260 -> 171 bytes .../emoji/apple/heavy_multiplication_x.png | Bin 1134 -> 434 bytes public/images/emoji/apple/heavy_plus_sign.png | Bin 597 -> 214 bytes public/images/emoji/apple/hedgehog.png | Bin 3521 -> 2523 bytes public/images/emoji/apple/helicopter.png | Bin 3021 -> 2933 bytes .../images/emoji/apple/helmet_with_cross.png | Bin 3310 -> 2209 bytes .../emoji/apple/helmet_with_white_cross.png | Bin 3310 -> 2209 bytes public/images/emoji/apple/herb.png | Bin 3574 -> 1972 bytes public/images/emoji/apple/hibiscus.png | Bin 4717 -> 3758 bytes public/images/emoji/apple/high_brightness.png | Bin 2865 -> 1537 bytes public/images/emoji/apple/high_heel.png | Bin 3377 -> 2255 bytes public/images/emoji/apple/hiking_boot.png | Bin 3564 -> 2219 bytes public/images/emoji/apple/hindu_temple.png | Bin 1404 -> 3228 bytes public/images/emoji/apple/hippopotamus.png | Bin 2881 -> 1257 bytes public/images/emoji/apple/hocho.png | Bin 2556 -> 1073 bytes public/images/emoji/apple/hockey.png | Bin 2272 -> 1698 bytes public/images/emoji/apple/hole.png | Bin 2044 -> 664 bytes public/images/emoji/apple/homes.png | Bin 3607 -> 2845 bytes public/images/emoji/apple/honduras.png | Bin 2685 -> 1173 bytes public/images/emoji/apple/honey_pot.png | Bin 3761 -> 3019 bytes public/images/emoji/apple/honeybee.png | Bin 4102 -> 3402 bytes public/images/emoji/apple/hong_kong.png | Bin 2648 -> 1060 bytes public/images/emoji/apple/horse.png | Bin 3433 -> 2164 bytes public/images/emoji/apple/horse_racing.png | Bin 2940 -> 2778 bytes public/images/emoji/apple/hospital.png | Bin 3637 -> 1782 bytes public/images/emoji/apple/hot_dog.png | Bin 3227 -> 2077 bytes public/images/emoji/apple/hot_face.png | Bin 3507 -> 2356 bytes public/images/emoji/apple/hot_pepper.png | Bin 2971 -> 1717 bytes public/images/emoji/apple/hotdog.png | Bin 3227 -> 2077 bytes public/images/emoji/apple/hotel.png | Bin 4002 -> 2878 bytes public/images/emoji/apple/hotsprings.png | Bin 2763 -> 1412 bytes public/images/emoji/apple/hourglass.png | Bin 3238 -> 2510 bytes .../emoji/apple/hourglass_flowing_sand.png | Bin 3336 -> 2542 bytes public/images/emoji/apple/house.png | Bin 3292 -> 2265 bytes public/images/emoji/apple/house_abandoned.png | Bin 3808 -> 2573 bytes public/images/emoji/apple/house_buildings.png | Bin 3607 -> 2845 bytes .../images/emoji/apple/house_with_garden.png | Bin 3549 -> 2829 bytes public/images/emoji/apple/houses.png | Bin 3607 -> 2845 bytes public/images/emoji/apple/hugging.png | Bin 4114 -> 2396 bytes public/images/emoji/apple/hugging_face.png | Bin 4114 -> 2396 bytes public/images/emoji/apple/hugs.png | Bin 4114 -> 2396 bytes public/images/emoji/apple/hungary.png | Bin 2423 -> 1247 bytes public/images/emoji/apple/hushed.png | Bin 3654 -> 1765 bytes public/images/emoji/apple/ice_cream.png | Bin 3852 -> 2191 bytes public/images/emoji/apple/ice_cube.png | Bin 2411 -> 3731 bytes public/images/emoji/apple/ice_hockey.png | Bin 2272 -> 1698 bytes public/images/emoji/apple/ice_skate.png | Bin 3546 -> 1787 bytes public/images/emoji/apple/icecream.png | Bin 3027 -> 1676 bytes public/images/emoji/apple/iceland.png | Bin 2642 -> 1473 bytes public/images/emoji/apple/id.png | Bin 2694 -> 1085 bytes .../emoji/apple/ideograph_advantage.png | Bin 3139 -> 1371 bytes public/images/emoji/apple/imp.png | Bin 3952 -> 2191 bytes public/images/emoji/apple/inbox_tray.png | Bin 3068 -> 1302 bytes .../images/emoji/apple/incoming_envelope.png | Bin 3523 -> 1627 bytes public/images/emoji/apple/india.png | Bin 2498 -> 1386 bytes public/images/emoji/apple/indonesia.png | Bin 2451 -> 1064 bytes public/images/emoji/apple/infinity.png | Bin 2137 -> 837 bytes .../emoji/apple/information_desk_person.png | Bin 3853 -> 2603 bytes .../images/emoji/apple/information_source.png | Bin 2431 -> 1011 bytes public/images/emoji/apple/innocent.png | Bin 4075 -> 3035 bytes public/images/emoji/apple/interrobang.png | Bin 2415 -> 1065 bytes public/images/emoji/apple/iphone.png | Bin 2696 -> 1412 bytes public/images/emoji/apple/iran.png | Bin 2645 -> 1481 bytes public/images/emoji/apple/iraq.png | Bin 2473 -> 1236 bytes public/images/emoji/apple/ireland.png | Bin 2129 -> 989 bytes public/images/emoji/apple/island.png | Bin 3125 -> 2924 bytes public/images/emoji/apple/isle_of_man.png | Bin 2462 -> 1063 bytes public/images/emoji/apple/israel.png | Bin 2901 -> 1364 bytes public/images/emoji/apple/it.png | Bin 2133 -> 906 bytes public/images/emoji/apple/izakaya_lantern.png | Bin 3086 -> 1376 bytes public/images/emoji/apple/jack_o_lantern.png | Bin 4100 -> 1845 bytes public/images/emoji/apple/jamaica.png | Bin 2746 -> 1447 bytes public/images/emoji/apple/japan.png | Bin 2483 -> 943 bytes public/images/emoji/apple/japanese_castle.png | Bin 3815 -> 2196 bytes public/images/emoji/apple/japanese_goblin.png | Bin 3690 -> 2759 bytes public/images/emoji/apple/japanese_ogre.png | Bin 4787 -> 3353 bytes public/images/emoji/apple/jeans.png | Bin 3287 -> 2429 bytes public/images/emoji/apple/jersey.png | Bin 2842 -> 1630 bytes public/images/emoji/apple/jigsaw.png | Bin 3114 -> 1825 bytes public/images/emoji/apple/jordan.png | Bin 2430 -> 1276 bytes public/images/emoji/apple/joy.png | Bin 3681 -> 2672 bytes public/images/emoji/apple/joy_cat.png | Bin 3782 -> 3238 bytes public/images/emoji/apple/joystick.png | Bin 2957 -> 1302 bytes public/images/emoji/apple/jp.png | Bin 2511 -> 940 bytes public/images/emoji/apple/kaaba.png | Bin 3264 -> 1216 bytes public/images/emoji/apple/kangaroo.png | Bin 2553 -> 1874 bytes public/images/emoji/apple/kazakhstan.png | Bin 2787 -> 1401 bytes public/images/emoji/apple/kenya.png | Bin 2688 -> 1695 bytes public/images/emoji/apple/key.png | Bin 3039 -> 1589 bytes public/images/emoji/apple/key2.png | Bin 2743 -> 1431 bytes public/images/emoji/apple/keyboard.png | Bin 2844 -> 921 bytes public/images/emoji/apple/keycap_star.png | Bin 2834 -> 1151 bytes public/images/emoji/apple/keycap_ten.png | Bin 3005 -> 1073 bytes public/images/emoji/apple/kick_scooter.png | Bin 2335 -> 1650 bytes public/images/emoji/apple/kimono.png | Bin 3944 -> 2941 bytes public/images/emoji/apple/kiribati.png | Bin 2889 -> 1781 bytes public/images/emoji/apple/kiss.png | Bin 3470 -> 2126 bytes public/images/emoji/apple/kissing.png | Bin 3633 -> 1768 bytes public/images/emoji/apple/kissing_cat.png | Bin 3533 -> 2500 bytes .../emoji/apple/kissing_closed_eyes.png | Bin 3680 -> 1914 bytes public/images/emoji/apple/kissing_heart.png | Bin 3675 -> 2396 bytes .../emoji/apple/kissing_smiling_eyes.png | Bin 3792 -> 1892 bytes public/images/emoji/apple/kite.png | Bin 1307 -> 2860 bytes public/images/emoji/apple/kiwi_fruit.png | Bin 4264 -> 2201 bytes public/images/emoji/apple/knife.png | Bin 2556 -> 1073 bytes public/images/emoji/apple/koala.png | Bin 4056 -> 1686 bytes public/images/emoji/apple/koko.png | Bin 2571 -> 987 bytes public/images/emoji/apple/kosovo.png | Bin 2523 -> 1058 bytes public/images/emoji/apple/kr.png | Bin 2926 -> 1451 bytes public/images/emoji/apple/kuwait.png | Bin 2344 -> 1206 bytes public/images/emoji/apple/kyrgyzstan.png | Bin 2610 -> 1043 bytes public/images/emoji/apple/lab_coat.png | Bin 3699 -> 1433 bytes public/images/emoji/apple/label.png | Bin 2898 -> 628 bytes public/images/emoji/apple/lacrosse.png | Bin 2424 -> 2167 bytes public/images/emoji/apple/laos.png | Bin 2442 -> 1146 bytes .../images/emoji/apple/large_blue_circle.png | Bin 2423 -> 876 bytes .../images/emoji/apple/large_blue_diamond.png | Bin 2290 -> 747 bytes .../emoji/apple/large_orange_diamond.png | Bin 2285 -> 705 bytes .../images/emoji/apple/last_quarter_moon.png | Bin 4505 -> 2346 bytes .../apple/last_quarter_moon_with_face.png | Bin 2859 -> 1599 bytes public/images/emoji/apple/latin_cross.png | Bin 2319 -> 822 bytes public/images/emoji/apple/latvia.png | Bin 2571 -> 972 bytes public/images/emoji/apple/laughing.png | Bin 3699 -> 2119 bytes public/images/emoji/apple/leafy_green.png | Bin 4459 -> 3009 bytes public/images/emoji/apple/leaves.png | Bin 3590 -> 2244 bytes public/images/emoji/apple/lebanon.png | Bin 2658 -> 1417 bytes public/images/emoji/apple/ledger.png | Bin 3652 -> 2181 bytes public/images/emoji/apple/left_luggage.png | Bin 2645 -> 1218 bytes .../images/emoji/apple/left_right_arrow.png | Bin 2661 -> 1015 bytes .../images/emoji/apple/left_speech_bubble.png | Bin 1839 -> 788 bytes .../emoji/apple/leftwards_arrow_with_hook.png | Bin 2672 -> 1005 bytes public/images/emoji/apple/leg.png | Bin 2368 -> 866 bytes public/images/emoji/apple/lemon.png | Bin 3262 -> 2233 bytes public/images/emoji/apple/leo.png | Bin 3106 -> 1364 bytes public/images/emoji/apple/leopard.png | Bin 3272 -> 2818 bytes public/images/emoji/apple/lesotho.png | Bin 2463 -> 1371 bytes public/images/emoji/apple/level_slider.png | Bin 3615 -> 1140 bytes public/images/emoji/apple/levitate.png | Bin 2172 -> 1243 bytes public/images/emoji/apple/liberia.png | Bin 3305 -> 1901 bytes public/images/emoji/apple/libra.png | Bin 2716 -> 1142 bytes public/images/emoji/apple/libya.png | Bin 2543 -> 1235 bytes public/images/emoji/apple/liechtenstein.png | Bin 2399 -> 1200 bytes public/images/emoji/apple/lifter.png | Bin 3375 -> 3441 bytes public/images/emoji/apple/light_rail.png | Bin 3005 -> 1690 bytes public/images/emoji/apple/link.png | Bin 3302 -> 2491 bytes .../images/emoji/apple/linked_paperclips.png | Bin 3723 -> 3319 bytes public/images/emoji/apple/lion.png | Bin 4028 -> 3264 bytes public/images/emoji/apple/lion_face.png | Bin 4028 -> 3264 bytes public/images/emoji/apple/lips.png | Bin 2637 -> 1368 bytes public/images/emoji/apple/lipstick.png | Bin 2333 -> 1422 bytes public/images/emoji/apple/lithuania.png | Bin 2355 -> 1259 bytes public/images/emoji/apple/lizard.png | Bin 3077 -> 2960 bytes public/images/emoji/apple/llama.png | Bin 3194 -> 1728 bytes public/images/emoji/apple/lobster.png | Bin 3888 -> 3091 bytes public/images/emoji/apple/lock.png | Bin 2750 -> 1264 bytes .../images/emoji/apple/lock_with_ink_pen.png | Bin 3412 -> 2335 bytes public/images/emoji/apple/lollipop.png | Bin 3072 -> 2878 bytes public/images/emoji/apple/loop.png | Bin 1643 -> 624 bytes public/images/emoji/apple/lotion_bottle.png | Bin 3022 -> 1034 bytes public/images/emoji/apple/loud_sound.png | Bin 4168 -> 3196 bytes public/images/emoji/apple/loudspeaker.png | Bin 3696 -> 1654 bytes public/images/emoji/apple/love_hotel.png | Bin 3741 -> 3066 bytes public/images/emoji/apple/love_letter.png | Bin 3000 -> 938 bytes .../images/emoji/apple/love_you_gesture.png | Bin 3151 -> 1163 bytes public/images/emoji/apple/low_brightness.png | Bin 2600 -> 1148 bytes .../emoji/apple/lower_left_ballpoint_pen.png | Bin 2693 -> 1165 bytes .../images/emoji/apple/lower_left_crayon.png | Bin 2509 -> 1196 bytes .../emoji/apple/lower_left_fountain_pen.png | Bin 2792 -> 1599 bytes .../emoji/apple/lower_left_paintbrush.png | Bin 2459 -> 1869 bytes public/images/emoji/apple/luggage.png | Bin 4146 -> 2183 bytes public/images/emoji/apple/luxembourg.png | Bin 2398 -> 1277 bytes public/images/emoji/apple/lying_face.png | Bin 3895 -> 2124 bytes public/images/emoji/apple/m.png | Bin 2950 -> 1222 bytes public/images/emoji/apple/macau.png | Bin 2682 -> 1096 bytes public/images/emoji/apple/macedonia.png | Bin 3039 -> 1878 bytes public/images/emoji/apple/madagascar.png | Bin 2248 -> 1117 bytes public/images/emoji/apple/mag.png | Bin 3061 -> 1850 bytes public/images/emoji/apple/mag_right.png | Bin 3266 -> 1986 bytes public/images/emoji/apple/mage.png | Bin 3346 -> 3390 bytes public/images/emoji/apple/magnet.png | Bin 3401 -> 1703 bytes public/images/emoji/apple/mahjong.png | Bin 3152 -> 1151 bytes public/images/emoji/apple/mailbox.png | Bin 2861 -> 1934 bytes public/images/emoji/apple/mailbox_closed.png | Bin 2697 -> 1722 bytes .../images/emoji/apple/mailbox_with_mail.png | Bin 3094 -> 2061 bytes .../emoji/apple/mailbox_with_no_mail.png | Bin 2777 -> 1618 bytes public/images/emoji/apple/malawi.png | Bin 2427 -> 1290 bytes public/images/emoji/apple/malaysia.png | Bin 3138 -> 2285 bytes public/images/emoji/apple/maldives.png | Bin 2428 -> 1091 bytes .../emoji/apple/male_couple_with_heart.png | Bin 3988 -> 3161 bytes public/images/emoji/apple/male_couplekiss.png | Bin 3824 -> 2269 bytes public/images/emoji/apple/male_detective.png | Bin 3709 -> 3677 bytes public/images/emoji/apple/mali.png | Bin 2070 -> 967 bytes public/images/emoji/apple/malta.png | Bin 2233 -> 957 bytes public/images/emoji/apple/man.png | Bin 3747 -> 1920 bytes public/images/emoji/apple/man_artist.png | Bin 3642 -> 3377 bytes public/images/emoji/apple/man_astronaut.png | Bin 4282 -> 3145 bytes public/images/emoji/apple/man_bald.png | Bin 3576 -> 1606 bytes .../images/emoji/apple/man_cartwheeling.png | Bin 2413 -> 2021 bytes public/images/emoji/apple/man_cook.png | Bin 3840 -> 2806 bytes .../images/emoji/apple/man_curly_haired.png | Bin 4186 -> 2190 bytes public/images/emoji/apple/man_dancing.png | Bin 2901 -> 2231 bytes public/images/emoji/apple/man_facepalming.png | Bin 3547 -> 2115 bytes .../images/emoji/apple/man_factory_worker.png | Bin 3585 -> 2991 bytes public/images/emoji/apple/man_farmer.png | Bin 4156 -> 3901 bytes public/images/emoji/apple/man_firefighter.png | Bin 3752 -> 3548 bytes .../images/emoji/apple/man_health_worker.png | Bin 3323 -> 2329 bytes .../apple/man_in_business_suit_levitating.png | Bin 2172 -> 1243 bytes .../emoji/apple/man_in_manual_wheelchair.png | Bin 2316 -> 2568 bytes .../apple/man_in_motorized_wheelchair.png | Bin 2216 -> 2904 bytes public/images/emoji/apple/man_in_tuxedo.png | Bin 3435 -> 1828 bytes public/images/emoji/apple/man_judge.png | Bin 3585 -> 2446 bytes public/images/emoji/apple/man_juggling.png | Bin 3370 -> 3238 bytes public/images/emoji/apple/man_kneeling.png | Bin 1948 -> 1916 bytes public/images/emoji/apple/man_mechanic.png | Bin 3563 -> 2932 bytes .../images/emoji/apple/man_office_worker.png | Bin 3282 -> 2244 bytes public/images/emoji/apple/man_pilot.png | Bin 3611 -> 2581 bytes .../emoji/apple/man_playing_handball.png | Bin 3049 -> 2961 bytes .../emoji/apple/man_playing_water_polo.png | Bin 3411 -> 2532 bytes public/images/emoji/apple/man_red_haired.png | Bin 3834 -> 1974 bytes public/images/emoji/apple/man_scientist.png | Bin 3605 -> 3109 bytes public/images/emoji/apple/man_shrugging.png | Bin 3408 -> 2338 bytes public/images/emoji/apple/man_singer.png | Bin 3525 -> 3195 bytes public/images/emoji/apple/man_standing.png | Bin 1510 -> 2479 bytes public/images/emoji/apple/man_student.png | Bin 3547 -> 2311 bytes public/images/emoji/apple/man_superhero.png | Bin 3828 -> 3351 bytes .../images/emoji/apple/man_supervillain.png | Bin 4393 -> 3747 bytes public/images/emoji/apple/man_teacher.png | Bin 3925 -> 2530 bytes .../images/emoji/apple/man_technologist.png | Bin 3172 -> 1747 bytes .../images/emoji/apple/man_white_haired.png | Bin 3649 -> 1853 bytes .../emoji/apple/man_with_gua_pi_mao.png | Bin 3299 -> 2105 bytes .../emoji/apple/man_with_probing_cane.png | Bin 1731 -> 2509 bytes public/images/emoji/apple/man_with_turban.png | Bin 3927 -> 3743 bytes public/images/emoji/apple/mango.png | Bin 3129 -> 2461 bytes public/images/emoji/apple/mans_shoe.png | Bin 3233 -> 1928 bytes .../images/emoji/apple/mantelpiece_clock.png | Bin 4124 -> 2134 bytes .../images/emoji/apple/manual_wheelchair.png | Bin 1781 -> 2534 bytes public/images/emoji/apple/map.png | Bin 4522 -> 4247 bytes public/images/emoji/apple/maple_leaf.png | Bin 3471 -> 2730 bytes .../images/emoji/apple/marshall_islands.png | Bin 2810 -> 1492 bytes .../emoji/apple/martial_arts_uniform.png | Bin 3823 -> 2108 bytes public/images/emoji/apple/martinique.png | Bin 2982 -> 1428 bytes public/images/emoji/apple/mask.png | Bin 3519 -> 2140 bytes public/images/emoji/apple/massage.png | Bin 4369 -> 2472 bytes public/images/emoji/apple/massage_man.png | Bin 3518 -> 2201 bytes public/images/emoji/apple/massage_woman.png | Bin 4369 -> 2472 bytes public/images/emoji/apple/maté.png | Bin 1120 -> 3062 bytes public/images/emoji/apple/mauritania.png | Bin 2612 -> 1290 bytes public/images/emoji/apple/mauritius.png | Bin 2398 -> 1399 bytes public/images/emoji/apple/mayotte.png | Bin 3025 -> 1579 bytes public/images/emoji/apple/meat_on_bone.png | Bin 3168 -> 2406 bytes public/images/emoji/apple/mechanical_arm.png | Bin 1884 -> 3240 bytes public/images/emoji/apple/mechanical_leg.png | Bin 1524 -> 2244 bytes public/images/emoji/apple/medal.png | Bin 2821 -> 2685 bytes public/images/emoji/apple/medal_military.png | Bin 2521 -> 1611 bytes public/images/emoji/apple/medal_sports.png | Bin 2821 -> 2685 bytes public/images/emoji/apple/mega.png | Bin 3440 -> 2154 bytes public/images/emoji/apple/melon.png | Bin 3971 -> 2235 bytes public/images/emoji/apple/memo.png | Bin 4121 -> 2049 bytes public/images/emoji/apple/men_wrestling.png | Bin 3941 -> 3759 bytes public/images/emoji/apple/menorah.png | Bin 3398 -> 1567 bytes public/images/emoji/apple/mens.png | Bin 2329 -> 1091 bytes public/images/emoji/apple/mermaid.png | Bin 3460 -> 3510 bytes public/images/emoji/apple/merman.png | Bin 3460 -> 3310 bytes public/images/emoji/apple/metal.png | Bin 3166 -> 1205 bytes public/images/emoji/apple/metro.png | Bin 3906 -> 2091 bytes public/images/emoji/apple/mexico.png | Bin 2230 -> 1253 bytes public/images/emoji/apple/microbe.png | Bin 4265 -> 3025 bytes public/images/emoji/apple/micronesia.png | Bin 2571 -> 931 bytes public/images/emoji/apple/microphone.png | Bin 2977 -> 1439 bytes public/images/emoji/apple/microphone2.png | Bin 3820 -> 2658 bytes public/images/emoji/apple/microscope.png | Bin 3355 -> 2298 bytes public/images/emoji/apple/middle_finger.png | Bin 2530 -> 808 bytes public/images/emoji/apple/military_medal.png | Bin 2521 -> 1611 bytes public/images/emoji/apple/milk_glass.png | Bin 3247 -> 1645 bytes public/images/emoji/apple/milky_way.png | Bin 3591 -> 1529 bytes public/images/emoji/apple/minibus.png | Bin 3472 -> 2161 bytes public/images/emoji/apple/minidisc.png | Bin 3754 -> 2064 bytes .../images/emoji/apple/mobile_phone_off.png | Bin 2835 -> 1332 bytes public/images/emoji/apple/moldova.png | Bin 2334 -> 1460 bytes public/images/emoji/apple/monaco.png | Bin 2404 -> 1006 bytes public/images/emoji/apple/money_mouth.png | Bin 3729 -> 2553 bytes .../images/emoji/apple/money_mouth_face.png | Bin 3729 -> 2553 bytes .../images/emoji/apple/money_with_wings.png | Bin 4274 -> 2907 bytes public/images/emoji/apple/moneybag.png | Bin 3428 -> 2000 bytes public/images/emoji/apple/mongolia.png | Bin 2366 -> 1138 bytes public/images/emoji/apple/monkey.png | Bin 3908 -> 2476 bytes public/images/emoji/apple/monkey_face.png | Bin 3840 -> 2251 bytes public/images/emoji/apple/monorail.png | Bin 2987 -> 1887 bytes public/images/emoji/apple/montenegro.png | Bin 2477 -> 1030 bytes public/images/emoji/apple/montserrat.png | Bin 2691 -> 2103 bytes public/images/emoji/apple/moon.png | Bin 4737 -> 1191 bytes public/images/emoji/apple/moon_cake.png | Bin 4530 -> 2441 bytes public/images/emoji/apple/morocco.png | Bin 2499 -> 1089 bytes public/images/emoji/apple/mortar_board.png | Bin 3185 -> 1513 bytes public/images/emoji/apple/mosque.png | Bin 3429 -> 2695 bytes public/images/emoji/apple/mosquito.png | Bin 4017 -> 2943 bytes public/images/emoji/apple/motor_boat.png | Bin 2885 -> 2181 bytes public/images/emoji/apple/motor_scooter.png | Bin 3334 -> 3240 bytes public/images/emoji/apple/motorboat.png | Bin 2885 -> 2181 bytes public/images/emoji/apple/motorcycle.png | Bin 3421 -> 2418 bytes .../emoji/apple/motorized_wheelchair.png | Bin 2322 -> 2549 bytes public/images/emoji/apple/motorway.png | Bin 3231 -> 2181 bytes public/images/emoji/apple/mount_fuji.png | Bin 2648 -> 1350 bytes public/images/emoji/apple/mountain.png | Bin 3204 -> 2817 bytes .../images/emoji/apple/mountain_bicyclist.png | Bin 4753 -> 4916 bytes .../emoji/apple/mountain_biking_man.png | Bin 4753 -> 4916 bytes .../emoji/apple/mountain_biking_woman.png | Bin 4676 -> 4561 bytes .../images/emoji/apple/mountain_cableway.png | Bin 3126 -> 2373 bytes .../images/emoji/apple/mountain_railway.png | Bin 3622 -> 2956 bytes public/images/emoji/apple/mountain_snow.png | Bin 3168 -> 2892 bytes public/images/emoji/apple/mouse.png | Bin 4099 -> 1945 bytes public/images/emoji/apple/mouse2.png | Bin 3656 -> 2415 bytes .../images/emoji/apple/mouse_three_button.png | Bin 2417 -> 699 bytes public/images/emoji/apple/movie_camera.png | Bin 4204 -> 2316 bytes public/images/emoji/apple/moyai.png | Bin 3779 -> 1661 bytes public/images/emoji/apple/mozambique.png | Bin 2592 -> 1727 bytes public/images/emoji/apple/mrs_claus.png | Bin 3651 -> 2639 bytes public/images/emoji/apple/muscle.png | Bin 3362 -> 1302 bytes public/images/emoji/apple/mushroom.png | Bin 3285 -> 2013 bytes .../images/emoji/apple/musical_keyboard.png | Bin 3700 -> 1071 bytes public/images/emoji/apple/musical_note.png | Bin 2383 -> 925 bytes public/images/emoji/apple/musical_score.png | Bin 2987 -> 1399 bytes public/images/emoji/apple/mute.png | Bin 3448 -> 1988 bytes public/images/emoji/apple/myanmar.png | Bin 2549 -> 1509 bytes public/images/emoji/apple/nail_care.png | Bin 3179 -> 2402 bytes public/images/emoji/apple/name_badge.png | Bin 3256 -> 1284 bytes public/images/emoji/apple/namibia.png | Bin 2633 -> 1761 bytes public/images/emoji/apple/national_park.png | Bin 3527 -> 2194 bytes public/images/emoji/apple/nauru.png | Bin 2470 -> 1062 bytes public/images/emoji/apple/nauseated_face.png | Bin 3829 -> 1563 bytes public/images/emoji/apple/nazar_amulet.png | Bin 4028 -> 2602 bytes public/images/emoji/apple/necktie.png | Bin 4137 -> 2632 bytes .../apple/negative_squared_cross_mark.png | Bin 2557 -> 1037 bytes public/images/emoji/apple/nepal.png | Bin 1863 -> 945 bytes public/images/emoji/apple/nerd.png | Bin 3766 -> 2390 bytes public/images/emoji/apple/nerd_face.png | Bin 3766 -> 2390 bytes public/images/emoji/apple/netherlands.png | Bin 2376 -> 1165 bytes public/images/emoji/apple/neutral_face.png | Bin 3572 -> 1670 bytes public/images/emoji/apple/new.png | Bin 2989 -> 1102 bytes public/images/emoji/apple/new_caledonia.png | Bin 2613 -> 1699 bytes public/images/emoji/apple/new_moon.png | Bin 4737 -> 1191 bytes .../images/emoji/apple/new_moon_with_face.png | Bin 4617 -> 1427 bytes public/images/emoji/apple/new_zealand.png | Bin 2693 -> 1620 bytes public/images/emoji/apple/newspaper.png | Bin 5131 -> 1966 bytes public/images/emoji/apple/newspaper2.png | Bin 3524 -> 1900 bytes public/images/emoji/apple/newspaper_roll.png | Bin 3524 -> 1900 bytes public/images/emoji/apple/next_track.png | Bin 2827 -> 1000 bytes .../images/emoji/apple/next_track_button.png | Bin 2827 -> 1000 bytes public/images/emoji/apple/ng.png | Bin 3083 -> 1099 bytes public/images/emoji/apple/nicaragua.png | Bin 2556 -> 1291 bytes public/images/emoji/apple/niger.png | Bin 2455 -> 1357 bytes public/images/emoji/apple/nigeria.png | Bin 2245 -> 812 bytes .../images/emoji/apple/night_with_stars.png | Bin 3391 -> 2034 bytes public/images/emoji/apple/nine.png | Bin 2823 -> 1061 bytes public/images/emoji/apple/niue.png | Bin 2679 -> 2119 bytes public/images/emoji/apple/no_bell.png | Bin 3376 -> 2004 bytes public/images/emoji/apple/no_bicycles.png | Bin 3750 -> 2075 bytes public/images/emoji/apple/no_entry.png | Bin 3358 -> 1204 bytes public/images/emoji/apple/no_entry_sign.png | Bin 3432 -> 2173 bytes public/images/emoji/apple/no_good.png | Bin 3891 -> 2693 bytes public/images/emoji/apple/no_good_man.png | Bin 3720 -> 2843 bytes public/images/emoji/apple/no_good_woman.png | Bin 3891 -> 2693 bytes .../images/emoji/apple/no_mobile_phones.png | Bin 3508 -> 1835 bytes public/images/emoji/apple/no_mouth.png | Bin 3753 -> 1611 bytes public/images/emoji/apple/no_pedestrians.png | Bin 3523 -> 1922 bytes public/images/emoji/apple/no_smoking.png | Bin 3375 -> 1788 bytes .../images/emoji/apple/non-potable_water.png | Bin 3524 -> 1856 bytes public/images/emoji/apple/norfolk_island.png | Bin 2536 -> 1068 bytes public/images/emoji/apple/north_korea.png | Bin 2690 -> 1457 bytes .../emoji/apple/northern_mariana_islands.png | Bin 2802 -> 1730 bytes public/images/emoji/apple/norway.png | Bin 2647 -> 1577 bytes public/images/emoji/apple/nose.png | Bin 2601 -> 1015 bytes public/images/emoji/apple/notebook.png | Bin 4310 -> 2252 bytes .../apple/notebook_with_decorative_cover.png | Bin 3183 -> 1662 bytes public/images/emoji/apple/notepad_spiral.png | Bin 3812 -> 1808 bytes public/images/emoji/apple/notes.png | Bin 3289 -> 1659 bytes public/images/emoji/apple/nut_and_bolt.png | Bin 3057 -> 1780 bytes public/images/emoji/apple/o.png | Bin 2947 -> 948 bytes public/images/emoji/apple/o2.png | Bin 2770 -> 1295 bytes public/images/emoji/apple/ocean.png | Bin 3791 -> 2690 bytes public/images/emoji/apple/octopus.png | Bin 3756 -> 2003 bytes public/images/emoji/apple/oden.png | Bin 3005 -> 1755 bytes public/images/emoji/apple/office.png | Bin 4175 -> 2118 bytes public/images/emoji/apple/oil.png | Bin 3541 -> 1901 bytes public/images/emoji/apple/oil_drum.png | Bin 3541 -> 1901 bytes public/images/emoji/apple/ok.png | Bin 3063 -> 1146 bytes public/images/emoji/apple/ok_hand.png | Bin 3131 -> 1402 bytes public/images/emoji/apple/ok_man.png | Bin 4215 -> 3146 bytes public/images/emoji/apple/ok_woman.png | Bin 4289 -> 2840 bytes public/images/emoji/apple/old_key.png | Bin 2743 -> 1431 bytes public/images/emoji/apple/older_adult.png | Bin 4118 -> 2694 bytes public/images/emoji/apple/older_man.png | Bin 3972 -> 2054 bytes public/images/emoji/apple/older_woman.png | Bin 4262 -> 2341 bytes public/images/emoji/apple/om.png | Bin 3216 -> 1471 bytes public/images/emoji/apple/om_symbol.png | Bin 3216 -> 1471 bytes public/images/emoji/apple/oman.png | Bin 2392 -> 1338 bytes public/images/emoji/apple/on.png | Bin 2005 -> 866 bytes .../emoji/apple/oncoming_automobile.png | Bin 3134 -> 2332 bytes public/images/emoji/apple/oncoming_bus.png | Bin 2935 -> 2081 bytes .../emoji/apple/oncoming_police_car.png | Bin 3259 -> 2110 bytes public/images/emoji/apple/oncoming_taxi.png | Bin 2981 -> 2335 bytes public/images/emoji/apple/one.png | Bin 2415 -> 901 bytes .../images/emoji/apple/one_piece_swimsuit.png | Bin 681 -> 2912 bytes public/images/emoji/apple/onion.png | Bin 1228 -> 4200 bytes public/images/emoji/apple/open_book.png | Bin 3843 -> 1994 bytes .../images/emoji/apple/open_file_folder.png | Bin 3716 -> 1106 bytes public/images/emoji/apple/open_hands.png | Bin 2977 -> 1397 bytes public/images/emoji/apple/open_mouth.png | Bin 3622 -> 1565 bytes public/images/emoji/apple/open_umbrella.png | Bin 2544 -> 1539 bytes public/images/emoji/apple/ophiuchus.png | Bin 2845 -> 1203 bytes public/images/emoji/apple/orange_book.png | Bin 3373 -> 1694 bytes public/images/emoji/apple/orange_circle.png | Bin 724 -> 2446 bytes public/images/emoji/apple/orange_heart.png | Bin 3481 -> 1063 bytes public/images/emoji/apple/orange_square.png | Bin 330 -> 1228 bytes public/images/emoji/apple/orangutan.png | Bin 3188 -> 4357 bytes public/images/emoji/apple/orthodox_cross.png | Bin 2480 -> 1033 bytes public/images/emoji/apple/otter.png | Bin 1947 -> 3446 bytes public/images/emoji/apple/outbox_tray.png | Bin 3019 -> 1323 bytes public/images/emoji/apple/owl.png | Bin 3457 -> 2492 bytes public/images/emoji/apple/ox.png | Bin 3190 -> 1633 bytes public/images/emoji/apple/oyster.png | Bin 1604 -> 4077 bytes public/images/emoji/apple/package.png | Bin 3888 -> 1358 bytes public/images/emoji/apple/page_facing_up.png | Bin 3730 -> 1153 bytes public/images/emoji/apple/page_with_curl.png | Bin 3587 -> 1134 bytes public/images/emoji/apple/pager.png | Bin 3715 -> 1551 bytes public/images/emoji/apple/paintbrush.png | Bin 2459 -> 1869 bytes public/images/emoji/apple/pakistan.png | Bin 2473 -> 1027 bytes public/images/emoji/apple/palau.png | Bin 2498 -> 945 bytes .../emoji/apple/palestinian_territories.png | Bin 2524 -> 1135 bytes public/images/emoji/apple/palm_tree.png | Bin 3307 -> 2949 bytes .../images/emoji/apple/palms_up_together.png | Bin 4262 -> 1542 bytes public/images/emoji/apple/panama.png | Bin 2567 -> 1459 bytes public/images/emoji/apple/pancakes.png | Bin 3804 -> 2691 bytes public/images/emoji/apple/panda_face.png | Bin 4128 -> 1634 bytes public/images/emoji/apple/paperclip.png | Bin 3201 -> 2336 bytes public/images/emoji/apple/paperclips.png | Bin 3723 -> 3319 bytes .../images/emoji/apple/papua_new_guinea.png | Bin 2646 -> 1355 bytes public/images/emoji/apple/parachute.png | Bin 2771 -> 3221 bytes public/images/emoji/apple/paraguay.png | Bin 2417 -> 1501 bytes .../images/emoji/apple/parasol_on_ground.png | Bin 3010 -> 1820 bytes public/images/emoji/apple/park.png | Bin 3527 -> 2194 bytes public/images/emoji/apple/parking.png | Bin 2284 -> 1017 bytes public/images/emoji/apple/parrot.png | Bin 3012 -> 2484 bytes .../emoji/apple/part_alternation_mark.png | Bin 2234 -> 733 bytes public/images/emoji/apple/partly_sunny.png | Bin 3467 -> 1353 bytes public/images/emoji/apple/partying_face.png | Bin 3896 -> 3766 bytes public/images/emoji/apple/passenger_ship.png | Bin 3155 -> 2210 bytes .../images/emoji/apple/passport_control.png | Bin 2608 -> 1278 bytes public/images/emoji/apple/pause_button.png | Bin 2554 -> 960 bytes public/images/emoji/apple/paw_prints.png | Bin 1906 -> 718 bytes public/images/emoji/apple/peace.png | Bin 3149 -> 1266 bytes public/images/emoji/apple/peace_symbol.png | Bin 3149 -> 1266 bytes public/images/emoji/apple/peach.png | Bin 3497 -> 2582 bytes public/images/emoji/apple/peacock.png | Bin 4290 -> 4160 bytes public/images/emoji/apple/peanuts.png | Bin 4423 -> 3548 bytes public/images/emoji/apple/pear.png | Bin 3558 -> 1205 bytes public/images/emoji/apple/pen.png | Bin 2693 -> 1165 bytes public/images/emoji/apple/pen_ballpoint.png | Bin 2693 -> 1165 bytes public/images/emoji/apple/pen_fountain.png | Bin 2792 -> 1599 bytes public/images/emoji/apple/pencil.png | Bin 4121 -> 2049 bytes public/images/emoji/apple/pencil2.png | Bin 2475 -> 1506 bytes public/images/emoji/apple/penguin.png | Bin 3220 -> 1521 bytes public/images/emoji/apple/pensive.png | Bin 3750 -> 1679 bytes .../emoji/apple/people_holding_hands.png | Bin 2749 -> 3606 bytes public/images/emoji/apple/performing_arts.png | Bin 3561 -> 3443 bytes public/images/emoji/apple/persevere.png | Bin 3726 -> 1836 bytes public/images/emoji/apple/person_climbing.png | Bin 4008 -> 3839 bytes public/images/emoji/apple/person_fencing.png | Bin 3169 -> 2626 bytes public/images/emoji/apple/person_frowning.png | Bin 3565 -> 2259 bytes .../emoji/apple/person_in_lotus_position.png | Bin 3044 -> 3186 bytes .../emoji/apple/person_in_steamy_room.png | Bin 4646 -> 4597 bytes .../images/emoji/apple/person_with_ball.png | Bin 3131 -> 3091 bytes .../emoji/apple/person_with_blond_hair.png | Bin 3680 -> 3729 bytes .../emoji/apple/person_with_pouting_face.png | Bin 3530 -> 2250 bytes public/images/emoji/apple/peru.png | Bin 2300 -> 900 bytes public/images/emoji/apple/petri_dish.png | Bin 2762 -> 1673 bytes public/images/emoji/apple/philippines.png | Bin 2537 -> 1614 bytes public/images/emoji/apple/phone.png | Bin 3978 -> 2504 bytes public/images/emoji/apple/pick.png | Bin 2202 -> 1043 bytes public/images/emoji/apple/pie.png | Bin 3362 -> 2092 bytes public/images/emoji/apple/pig.png | Bin 3833 -> 2223 bytes public/images/emoji/apple/pig2.png | Bin 2978 -> 1514 bytes public/images/emoji/apple/pig_nose.png | Bin 3575 -> 1427 bytes public/images/emoji/apple/pill.png | Bin 2958 -> 1974 bytes public/images/emoji/apple/pinching_hand.png | Bin 921 -> 2732 bytes public/images/emoji/apple/pineapple.png | Bin 3124 -> 2944 bytes public/images/emoji/apple/ping_pong.png | Bin 3809 -> 2323 bytes public/images/emoji/apple/pirate_flag.png | Bin 2494 -> 1016 bytes public/images/emoji/apple/pisces.png | Bin 2802 -> 1156 bytes .../images/emoji/apple/pitcairn_islands.png | Bin 2814 -> 2160 bytes public/images/emoji/apple/pizza.png | Bin 3518 -> 2003 bytes .../images/emoji/apple/place_of_worship.png | Bin 2713 -> 1136 bytes .../images/emoji/apple/plate_with_cutlery.png | Bin 3904 -> 2112 bytes .../emoji/apple/play_or_pause_button.png | Bin 2716 -> 920 bytes public/images/emoji/apple/play_pause.png | Bin 2716 -> 920 bytes public/images/emoji/apple/pleading_face.png | Bin 3449 -> 2261 bytes public/images/emoji/apple/point_down.png | Bin 2761 -> 966 bytes public/images/emoji/apple/point_left.png | Bin 2724 -> 897 bytes public/images/emoji/apple/point_right.png | Bin 2616 -> 877 bytes public/images/emoji/apple/point_up.png | Bin 2978 -> 1086 bytes public/images/emoji/apple/point_up_2.png | Bin 2768 -> 974 bytes public/images/emoji/apple/poland.png | Bin 2612 -> 974 bytes public/images/emoji/apple/police_car.png | Bin 3356 -> 1992 bytes public/images/emoji/apple/policeman.png | Bin 3513 -> 3446 bytes public/images/emoji/apple/policewoman.png | Bin 3404 -> 2946 bytes public/images/emoji/apple/poo.png | Bin 3315 -> 1696 bytes public/images/emoji/apple/poodle.png | Bin 3847 -> 2057 bytes public/images/emoji/apple/poop.png | Bin 3315 -> 1696 bytes public/images/emoji/apple/popcorn.png | Bin 3840 -> 2833 bytes public/images/emoji/apple/portugal.png | Bin 2443 -> 1511 bytes public/images/emoji/apple/post_office.png | Bin 3503 -> 2195 bytes public/images/emoji/apple/postal_horn.png | Bin 2886 -> 2745 bytes public/images/emoji/apple/postbox.png | Bin 2824 -> 1417 bytes public/images/emoji/apple/potable_water.png | Bin 2850 -> 2583 bytes public/images/emoji/apple/potato.png | Bin 3880 -> 1612 bytes public/images/emoji/apple/pouch.png | Bin 3041 -> 1662 bytes public/images/emoji/apple/poultry_leg.png | Bin 3133 -> 1579 bytes public/images/emoji/apple/pound.png | Bin 3268 -> 1873 bytes public/images/emoji/apple/pouting_cat.png | Bin 3560 -> 2311 bytes public/images/emoji/apple/pouting_man.png | Bin 3194 -> 1817 bytes public/images/emoji/apple/pouting_woman.png | Bin 3530 -> 2250 bytes public/images/emoji/apple/pray.png | Bin 3271 -> 1828 bytes public/images/emoji/apple/prayer_beads.png | Bin 3029 -> 2475 bytes public/images/emoji/apple/pregnant_woman.png | Bin 3184 -> 2173 bytes public/images/emoji/apple/pretzel.png | Bin 4214 -> 2709 bytes public/images/emoji/apple/previous_track.png | Bin 2851 -> 1048 bytes .../emoji/apple/previous_track_button.png | Bin 2851 -> 1048 bytes public/images/emoji/apple/prince.png | Bin 3212 -> 2927 bytes public/images/emoji/apple/princess.png | Bin 3737 -> 2421 bytes public/images/emoji/apple/printer.png | Bin 3302 -> 1333 bytes public/images/emoji/apple/probing_cane.png | Bin 750 -> 1797 bytes public/images/emoji/apple/projector.png | Bin 3872 -> 2273 bytes public/images/emoji/apple/puerto_rico.png | Bin 2747 -> 1520 bytes public/images/emoji/apple/puke.png | Bin 3982 -> 3172 bytes public/images/emoji/apple/punch.png | Bin 3528 -> 1080 bytes public/images/emoji/apple/purple_circle.png | Bin 750 -> 2460 bytes public/images/emoji/apple/purple_heart.png | Bin 3378 -> 996 bytes public/images/emoji/apple/purple_square.png | Bin 473 -> 1021 bytes public/images/emoji/apple/purse.png | Bin 2958 -> 1530 bytes public/images/emoji/apple/pushpin.png | Bin 2802 -> 2086 bytes .../emoji/apple/put_litter_in_its_place.png | Bin 2955 -> 1161 bytes public/images/emoji/apple/qatar.png | Bin 2371 -> 889 bytes public/images/emoji/apple/question.png | Bin 1798 -> 638 bytes public/images/emoji/apple/rabbit.png | Bin 3829 -> 1901 bytes public/images/emoji/apple/rabbit2.png | Bin 3271 -> 1656 bytes public/images/emoji/apple/raccoon.png | Bin 2954 -> 1372 bytes public/images/emoji/apple/race_car.png | Bin 2931 -> 2675 bytes public/images/emoji/apple/racehorse.png | Bin 3206 -> 2181 bytes public/images/emoji/apple/racing_car.png | Bin 2931 -> 2675 bytes .../images/emoji/apple/racing_motorcycle.png | Bin 3421 -> 2418 bytes public/images/emoji/apple/radio.png | Bin 3261 -> 1744 bytes public/images/emoji/apple/radio_button.png | Bin 2759 -> 1308 bytes public/images/emoji/apple/radioactive.png | Bin 3006 -> 1182 bytes .../images/emoji/apple/radioactive_sign.png | Bin 3006 -> 1182 bytes public/images/emoji/apple/rage.png | Bin 3627 -> 1290 bytes public/images/emoji/apple/railroad_track.png | Bin 3549 -> 3336 bytes public/images/emoji/apple/railway_car.png | Bin 3001 -> 2038 bytes public/images/emoji/apple/railway_track.png | Bin 3549 -> 3336 bytes public/images/emoji/apple/rainbow.png | Bin 3330 -> 3259 bytes public/images/emoji/apple/rainbow_flag.png | Bin 2528 -> 1379 bytes .../emoji/apple/raised_back_of_hand.png | Bin 3488 -> 1308 bytes public/images/emoji/apple/raised_hand.png | Bin 3632 -> 1361 bytes .../raised_hand_with_fingers_splayed.png | Bin 3607 -> 1419 bytes ...h_part_between_middle_and_ring_fingers.png | Bin 3542 -> 1390 bytes public/images/emoji/apple/raised_hands.png | Bin 3566 -> 1847 bytes public/images/emoji/apple/raising_hand.png | Bin 3939 -> 2655 bytes .../images/emoji/apple/raising_hand_man.png | Bin 3656 -> 2304 bytes .../images/emoji/apple/raising_hand_woman.png | Bin 3939 -> 2655 bytes public/images/emoji/apple/ram.png | Bin 3657 -> 2074 bytes public/images/emoji/apple/ramen.png | Bin 3608 -> 2966 bytes public/images/emoji/apple/rat.png | Bin 3418 -> 1612 bytes public/images/emoji/apple/razor.png | Bin 1043 -> 2381 bytes public/images/emoji/apple/receipt.png | Bin 3884 -> 1329 bytes public/images/emoji/apple/record_button.png | Bin 2502 -> 939 bytes public/images/emoji/apple/recycle.png | Bin 2638 -> 1479 bytes public/images/emoji/apple/red_car.png | Bin 3139 -> 2419 bytes public/images/emoji/apple/red_circle.png | Bin 2516 -> 877 bytes .../images/emoji/apple/red_gift_envelope.png | Bin 3556 -> 1239 bytes public/images/emoji/apple/red_square.png | Bin 357 -> 1316 bytes public/images/emoji/apple/registered.png | Bin 2254 -> 1018 bytes public/images/emoji/apple/relaxed.png | Bin 3630 -> 1810 bytes public/images/emoji/apple/relieved.png | Bin 3685 -> 1821 bytes public/images/emoji/apple/reminder_ribbon.png | Bin 2572 -> 1208 bytes public/images/emoji/apple/repeat.png | Bin 2906 -> 1123 bytes public/images/emoji/apple/repeat_one.png | Bin 2991 -> 1163 bytes .../emoji/apple/rescue_worker_helmet.png | Bin 3310 -> 2209 bytes public/images/emoji/apple/restroom.png | Bin 2954 -> 1165 bytes public/images/emoji/apple/reunion.png | Bin 2672 -> 1720 bytes ...ersed_hand_with_middle_finger_extended.png | Bin 2530 -> 808 bytes .../images/emoji/apple/revolving_hearts.png | Bin 3246 -> 1547 bytes public/images/emoji/apple/rewind.png | Bin 2677 -> 1020 bytes public/images/emoji/apple/rhinoceros.png | Bin 3489 -> 1630 bytes public/images/emoji/apple/ribbon.png | Bin 4202 -> 2105 bytes public/images/emoji/apple/rice.png | Bin 4180 -> 1733 bytes public/images/emoji/apple/rice_ball.png | Bin 4362 -> 1914 bytes public/images/emoji/apple/rice_cracker.png | Bin 4410 -> 2105 bytes public/images/emoji/apple/rice_scene.png | Bin 3783 -> 2846 bytes .../images/emoji/apple/right_anger_bubble.png | Bin 3694 -> 1469 bytes public/images/emoji/apple/ring.png | Bin 3257 -> 2326 bytes public/images/emoji/apple/ringer_planet.png | Bin 916 -> 3412 bytes public/images/emoji/apple/robot.png | Bin 3049 -> 2487 bytes public/images/emoji/apple/robot_face.png | Bin 3049 -> 2487 bytes public/images/emoji/apple/rocket.png | Bin 3218 -> 3127 bytes public/images/emoji/apple/rofl.png | Bin 3737 -> 2608 bytes public/images/emoji/apple/roll_eyes.png | Bin 3709 -> 2038 bytes .../emoji/apple/roll_of_toilet_paper.png | Bin 4218 -> 1473 bytes .../emoji/apple/rolled_up_newspaper.png | Bin 3524 -> 1900 bytes public/images/emoji/apple/roller_coaster.png | Bin 2921 -> 2805 bytes public/images/emoji/apple/rolling_eyes.png | Bin 3709 -> 2038 bytes public/images/emoji/apple/romania.png | Bin 2056 -> 876 bytes public/images/emoji/apple/rooster.png | Bin 3155 -> 2357 bytes public/images/emoji/apple/rose.png | Bin 3256 -> 2427 bytes public/images/emoji/apple/rosette.png | Bin 4471 -> 4005 bytes public/images/emoji/apple/rotating_light.png | Bin 3697 -> 2847 bytes public/images/emoji/apple/round_pushpin.png | Bin 2339 -> 1399 bytes public/images/emoji/apple/rowboat.png | Bin 2284 -> 2417 bytes public/images/emoji/apple/rowing_man.png | Bin 2284 -> 2417 bytes public/images/emoji/apple/rowing_woman.png | Bin 2307 -> 2126 bytes public/images/emoji/apple/ru.png | Bin 2422 -> 1219 bytes public/images/emoji/apple/rugby_football.png | Bin 4443 -> 2304 bytes public/images/emoji/apple/runner.png | Bin 2527 -> 2453 bytes public/images/emoji/apple/running_man.png | Bin 2527 -> 2453 bytes .../emoji/apple/running_shirt_with_sash.png | Bin 3612 -> 1876 bytes public/images/emoji/apple/running_woman.png | Bin 2607 -> 2441 bytes public/images/emoji/apple/rwanda.png | Bin 2555 -> 1537 bytes public/images/emoji/apple/sa.png | Bin 2430 -> 1110 bytes public/images/emoji/apple/safety_pin.png | Bin 2676 -> 1872 bytes public/images/emoji/apple/safety_vest.png | Bin 1939 -> 3590 bytes public/images/emoji/apple/sagittarius.png | Bin 2820 -> 1167 bytes public/images/emoji/apple/sailboat.png | Bin 2731 -> 2285 bytes public/images/emoji/apple/sake.png | Bin 3339 -> 1569 bytes public/images/emoji/apple/salt.png | Bin 3072 -> 1606 bytes public/images/emoji/apple/samoa.png | Bin 2359 -> 1063 bytes public/images/emoji/apple/san_marino.png | Bin 2702 -> 1586 bytes public/images/emoji/apple/sandal.png | Bin 2882 -> 1399 bytes public/images/emoji/apple/sandwich.png | Bin 3612 -> 2572 bytes public/images/emoji/apple/santa.png | Bin 4034 -> 3005 bytes .../images/emoji/apple/sao_tome_principe.png | Bin 2638 -> 1505 bytes public/images/emoji/apple/sari.png | Bin 1408 -> 2734 bytes public/images/emoji/apple/satellite.png | Bin 4081 -> 2342 bytes .../images/emoji/apple/satellite_orbital.png | Bin 3555 -> 3430 bytes public/images/emoji/apple/satisfied.png | Bin 3699 -> 2119 bytes public/images/emoji/apple/saudi_arabia.png | Bin 2722 -> 1062 bytes public/images/emoji/apple/sauropod.png | Bin 3036 -> 1736 bytes public/images/emoji/apple/saxophone.png | Bin 3070 -> 2621 bytes public/images/emoji/apple/scales.png | Bin 3273 -> 2289 bytes public/images/emoji/apple/scarf.png | Bin 3182 -> 1738 bytes public/images/emoji/apple/school.png | Bin 3371 -> 2139 bytes public/images/emoji/apple/school_satchel.png | Bin 3623 -> 2510 bytes public/images/emoji/apple/scissors.png | Bin 3251 -> 2863 bytes public/images/emoji/apple/scorpion.png | Bin 3238 -> 1956 bytes public/images/emoji/apple/scorpius.png | Bin 2852 -> 1170 bytes public/images/emoji/apple/scream.png | Bin 3766 -> 2767 bytes public/images/emoji/apple/scream_cat.png | Bin 3937 -> 2947 bytes public/images/emoji/apple/scroll.png | Bin 4733 -> 2137 bytes public/images/emoji/apple/seat.png | Bin 3405 -> 2372 bytes public/images/emoji/apple/secret.png | Bin 3526 -> 1639 bytes public/images/emoji/apple/see_no_evil.png | Bin 4143 -> 2464 bytes public/images/emoji/apple/seedling.png | Bin 2532 -> 1278 bytes public/images/emoji/apple/selfie.png | Bin 2465 -> 1500 bytes public/images/emoji/apple/senegal.png | Bin 2244 -> 1160 bytes public/images/emoji/apple/serbia.png | Bin 2626 -> 1787 bytes public/images/emoji/apple/service_dog.png | Bin 3590 -> 3823 bytes public/images/emoji/apple/seven.png | Bin 2430 -> 913 bytes public/images/emoji/apple/seychelles.png | Bin 2465 -> 1621 bytes .../emoji/apple/shallow_pan_of_food.png | Bin 4624 -> 3200 bytes public/images/emoji/apple/shamrock.png | Bin 3782 -> 2849 bytes public/images/emoji/apple/shark.png | Bin 3360 -> 1931 bytes public/images/emoji/apple/shaved_ice.png | Bin 3574 -> 2184 bytes public/images/emoji/apple/sheep.png | Bin 3731 -> 1841 bytes public/images/emoji/apple/shell.png | Bin 3992 -> 1857 bytes public/images/emoji/apple/shield.png | Bin 3093 -> 1518 bytes public/images/emoji/apple/shinto_shrine.png | Bin 2748 -> 1160 bytes public/images/emoji/apple/ship.png | Bin 3094 -> 2256 bytes public/images/emoji/apple/shirt.png | Bin 3699 -> 1381 bytes public/images/emoji/apple/shit.png | Bin 3315 -> 1696 bytes public/images/emoji/apple/shopping.png | Bin 4157 -> 3864 bytes public/images/emoji/apple/shopping_bags.png | Bin 4157 -> 3864 bytes public/images/emoji/apple/shopping_cart.png | Bin 3600 -> 2645 bytes public/images/emoji/apple/shorts.png | Bin 1440 -> 4264 bytes public/images/emoji/apple/shower.png | Bin 3173 -> 1939 bytes public/images/emoji/apple/shrimp.png | Bin 4182 -> 3984 bytes public/images/emoji/apple/shushing_face.png | Bin 3875 -> 2175 bytes public/images/emoji/apple/sierra_leone.png | Bin 2417 -> 1331 bytes .../images/emoji/apple/sign_of_the_horns.png | Bin 3166 -> 1205 bytes public/images/emoji/apple/signal_strength.png | Bin 2775 -> 941 bytes public/images/emoji/apple/singapore.png | Bin 2608 -> 1198 bytes public/images/emoji/apple/sint_maarten.png | Bin 2453 -> 1574 bytes public/images/emoji/apple/six.png | Bin 2783 -> 1058 bytes .../images/emoji/apple/six_pointed_star.png | Bin 3016 -> 1272 bytes public/images/emoji/apple/skateboard.png | Bin 2597 -> 1376 bytes public/images/emoji/apple/skeleton.png | Bin 3751 -> 1589 bytes public/images/emoji/apple/ski.png | Bin 3542 -> 3356 bytes public/images/emoji/apple/skier.png | Bin 2901 -> 2826 bytes public/images/emoji/apple/skull.png | Bin 3751 -> 1589 bytes .../emoji/apple/skull_and_crossbones.png | Bin 4304 -> 1836 bytes .../images/emoji/apple/skull_crossbones.png | Bin 4304 -> 1836 bytes public/images/emoji/apple/skunk.png | Bin 1634 -> 3820 bytes public/images/emoji/apple/sled.png | Bin 3071 -> 2585 bytes public/images/emoji/apple/sleeping.png | Bin 3722 -> 2520 bytes .../emoji/apple/sleeping_accommodation.png | Bin 2793 -> 1457 bytes public/images/emoji/apple/sleeping_bed.png | Bin 2793 -> 1457 bytes public/images/emoji/apple/sleepy.png | Bin 3624 -> 2517 bytes public/images/emoji/apple/sleuth_or_spy.png | Bin 3709 -> 3677 bytes public/images/emoji/apple/slight_frown.png | Bin 3641 -> 1674 bytes public/images/emoji/apple/slight_smile.png | Bin 3621 -> 1718 bytes .../emoji/apple/slightly_frowning_face.png | Bin 3641 -> 1674 bytes .../images/emoji/apple/slightly_smiling.png | Bin 3621 -> 1718 bytes .../emoji/apple/slightly_smiling_face.png | Bin 3621 -> 1718 bytes public/images/emoji/apple/slot_machine.png | Bin 3608 -> 2713 bytes public/images/emoji/apple/sloth.png | Bin 1389 -> 4517 bytes public/images/emoji/apple/slovakia.png | Bin 2573 -> 1585 bytes public/images/emoji/apple/slovenia.png | Bin 2502 -> 1515 bytes public/images/emoji/apple/small_airplane.png | Bin 3412 -> 2363 bytes .../images/emoji/apple/small_blue_diamond.png | Bin 2044 -> 640 bytes .../emoji/apple/small_orange_diamond.png | Bin 2024 -> 594 bytes .../images/emoji/apple/small_red_triangle.png | Bin 1679 -> 516 bytes .../emoji/apple/small_red_triangle_down.png | Bin 1715 -> 605 bytes public/images/emoji/apple/smile.png | Bin 3728 -> 1998 bytes public/images/emoji/apple/smile_cat.png | Bin 3486 -> 2253 bytes public/images/emoji/apple/smiley.png | Bin 3725 -> 2076 bytes public/images/emoji/apple/smiley_cat.png | Bin 3670 -> 2515 bytes .../apple/smiling_face_with_three_hearts.png | Bin 3928 -> 2576 bytes public/images/emoji/apple/smiling_imp.png | Bin 4003 -> 2214 bytes public/images/emoji/apple/smirk.png | Bin 3662 -> 1742 bytes public/images/emoji/apple/smirk_cat.png | Bin 3503 -> 2395 bytes public/images/emoji/apple/smoking.png | Bin 3152 -> 1419 bytes public/images/emoji/apple/snail.png | Bin 3950 -> 2946 bytes public/images/emoji/apple/snake.png | Bin 3243 -> 2846 bytes public/images/emoji/apple/sneezing_face.png | Bin 3755 -> 2468 bytes .../emoji/apple/snow_capped_mountain.png | Bin 3168 -> 2892 bytes public/images/emoji/apple/snowflake.png | Bin 4390 -> 3617 bytes public/images/emoji/apple/snowman.png | Bin 3496 -> 2273 bytes public/images/emoji/apple/snowman2.png | Bin 4327 -> 3006 bytes .../images/emoji/apple/snowman_with_snow.png | Bin 4327 -> 3006 bytes public/images/emoji/apple/soap.png | Bin 3525 -> 2311 bytes public/images/emoji/apple/sob.png | Bin 3839 -> 2336 bytes public/images/emoji/apple/soccer.png | Bin 3657 -> 1681 bytes public/images/emoji/apple/socks.png | Bin 3500 -> 1831 bytes public/images/emoji/apple/softball.png | Bin 3976 -> 2515 bytes public/images/emoji/apple/solomon_islands.png | Bin 2628 -> 1647 bytes public/images/emoji/apple/somalia.png | Bin 2485 -> 805 bytes public/images/emoji/apple/soon.png | Bin 2365 -> 999 bytes public/images/emoji/apple/sos.png | Bin 2994 -> 1378 bytes public/images/emoji/apple/sound.png | Bin 3874 -> 2428 bytes public/images/emoji/apple/south_africa.png | Bin 2636 -> 1984 bytes .../south_georgia_south_sandwich_islands.png | Bin 2784 -> 2108 bytes public/images/emoji/apple/south_sudan.png | Bin 2498 -> 1542 bytes public/images/emoji/apple/space_invader.png | Bin 3149 -> 1112 bytes public/images/emoji/apple/spades.png | Bin 2499 -> 916 bytes public/images/emoji/apple/spaghetti.png | Bin 3613 -> 2901 bytes public/images/emoji/apple/sparkle.png | Bin 2400 -> 1113 bytes public/images/emoji/apple/sparkler.png | Bin 4244 -> 2548 bytes public/images/emoji/apple/sparkles.png | Bin 2414 -> 1336 bytes public/images/emoji/apple/sparkling_heart.png | Bin 3296 -> 1999 bytes public/images/emoji/apple/speak_no_evil.png | Bin 3820 -> 2251 bytes public/images/emoji/apple/speaker.png | Bin 3652 -> 1791 bytes public/images/emoji/apple/speaking_head.png | Bin 3093 -> 1059 bytes .../apple/speaking_head_in_silhouette.png | Bin 3093 -> 1059 bytes public/images/emoji/apple/speech_balloon.png | Bin 2786 -> 1129 bytes public/images/emoji/apple/speedboat.png | Bin 2182 -> 1967 bytes public/images/emoji/apple/spider.png | Bin 3013 -> 1785 bytes public/images/emoji/apple/spider_web.png | Bin 3421 -> 2125 bytes public/images/emoji/apple/spiral_calendar.png | Bin 3776 -> 2083 bytes .../emoji/apple/spiral_calendar_pad.png | Bin 3776 -> 2083 bytes public/images/emoji/apple/spiral_note_pad.png | Bin 3812 -> 1808 bytes public/images/emoji/apple/spiral_notepad.png | Bin 3812 -> 1808 bytes public/images/emoji/apple/sponge.png | Bin 3975 -> 1985 bytes public/images/emoji/apple/spoon.png | Bin 2248 -> 1075 bytes public/images/emoji/apple/sports_medal.png | Bin 2821 -> 2685 bytes public/images/emoji/apple/spy.png | Bin 3709 -> 3677 bytes public/images/emoji/apple/squid.png | Bin 4222 -> 3934 bytes public/images/emoji/apple/sri_lanka.png | Bin 2505 -> 1404 bytes public/images/emoji/apple/st_barthelemy.png | Bin 2888 -> 1564 bytes public/images/emoji/apple/st_helena.png | Bin 2580 -> 1812 bytes public/images/emoji/apple/st_kitts_nevis.png | Bin 2495 -> 1668 bytes public/images/emoji/apple/st_lucia.png | Bin 2671 -> 1256 bytes public/images/emoji/apple/st_martin.png | Bin 2111 -> 1000 bytes .../images/emoji/apple/st_pierre_miquelon.png | Bin 3205 -> 3029 bytes .../emoji/apple/st_vincent_grenadines.png | Bin 2522 -> 1259 bytes public/images/emoji/apple/stadium.png | Bin 4033 -> 3888 bytes public/images/emoji/apple/star.png | Bin 3176 -> 1587 bytes public/images/emoji/apple/star2.png | Bin 3319 -> 1777 bytes .../images/emoji/apple/star_and_crescent.png | Bin 2826 -> 1165 bytes public/images/emoji/apple/star_of_david.png | Bin 2925 -> 1243 bytes public/images/emoji/apple/star_struck.png | Bin 4001 -> 2833 bytes public/images/emoji/apple/stars.png | Bin 3741 -> 2038 bytes public/images/emoji/apple/station.png | Bin 3463 -> 2010 bytes .../images/emoji/apple/statue_of_liberty.png | Bin 2822 -> 2159 bytes .../images/emoji/apple/steam_locomotive.png | Bin 3384 -> 3289 bytes public/images/emoji/apple/stethoscope.png | Bin 1529 -> 2875 bytes public/images/emoji/apple/stew.png | Bin 3605 -> 2113 bytes public/images/emoji/apple/stop_button.png | Bin 2344 -> 871 bytes public/images/emoji/apple/stop_sign.png | Bin 2268 -> 774 bytes public/images/emoji/apple/stopwatch.png | Bin 4066 -> 2679 bytes public/images/emoji/apple/straight_ruler.png | Bin 2643 -> 741 bytes public/images/emoji/apple/strawberry.png | Bin 3732 -> 2939 bytes .../images/emoji/apple/stuck_out_tongue.png | Bin 3611 -> 1966 bytes .../apple/stuck_out_tongue_closed_eyes.png | Bin 3647 -> 2156 bytes .../apple/stuck_out_tongue_winking_eye.png | Bin 3683 -> 2411 bytes .../images/emoji/apple/studio_microphone.png | Bin 3820 -> 2658 bytes .../images/emoji/apple/stuffed_flatbread.png | Bin 3310 -> 2732 bytes public/images/emoji/apple/sudan.png | Bin 2331 -> 1108 bytes .../emoji/apple/sun_behind_large_cloud.png | Bin 3244 -> 1237 bytes .../emoji/apple/sun_behind_rain_cloud.png | Bin 3244 -> 1981 bytes .../emoji/apple/sun_behind_small_cloud.png | Bin 3190 -> 1882 bytes public/images/emoji/apple/sun_with_face.png | Bin 4308 -> 3422 bytes public/images/emoji/apple/sunflower.png | Bin 4062 -> 2663 bytes public/images/emoji/apple/sunglasses.png | Bin 3630 -> 2004 bytes public/images/emoji/apple/sunny.png | Bin 2926 -> 1518 bytes public/images/emoji/apple/sunrise.png | Bin 3351 -> 1601 bytes .../emoji/apple/sunrise_over_mountains.png | Bin 3777 -> 1806 bytes public/images/emoji/apple/superhero.png | Bin 3905 -> 3628 bytes public/images/emoji/apple/supervillain.png | Bin 4736 -> 4553 bytes public/images/emoji/apple/surfer.png | Bin 3524 -> 3403 bytes public/images/emoji/apple/surfing_man.png | Bin 3524 -> 3403 bytes public/images/emoji/apple/surfing_woman.png | Bin 3284 -> 3169 bytes public/images/emoji/apple/suriname.png | Bin 2697 -> 1469 bytes public/images/emoji/apple/sushi.png | Bin 3837 -> 2686 bytes .../images/emoji/apple/suspension_railway.png | Bin 3141 -> 2265 bytes .../emoji/apple/svalbard_and_jan_mayen.png | Bin 2647 -> 1577 bytes public/images/emoji/apple/swan.png | Bin 3348 -> 1643 bytes public/images/emoji/apple/swaziland.png | Bin 2974 -> 2257 bytes public/images/emoji/apple/sweat.png | Bin 3585 -> 2341 bytes public/images/emoji/apple/sweat_drops.png | Bin 3372 -> 1804 bytes public/images/emoji/apple/sweat_smile.png | Bin 3676 -> 2528 bytes public/images/emoji/apple/sweden.png | Bin 2531 -> 1222 bytes public/images/emoji/apple/sweet_potato.png | Bin 3558 -> 1831 bytes public/images/emoji/apple/swimmer.png | Bin 3553 -> 3525 bytes public/images/emoji/apple/swimming_man.png | Bin 3553 -> 3525 bytes public/images/emoji/apple/swimming_woman.png | Bin 3572 -> 2942 bytes public/images/emoji/apple/switzerland.png | Bin 2073 -> 826 bytes public/images/emoji/apple/symbols.png | Bin 3182 -> 1285 bytes public/images/emoji/apple/synagogue.png | Bin 4110 -> 2346 bytes public/images/emoji/apple/syria.png | Bin 2494 -> 1284 bytes public/images/emoji/apple/syringe.png | Bin 2313 -> 1633 bytes public/images/emoji/apple/t_rex.png | Bin 3171 -> 2076 bytes public/images/emoji/apple/table_tennis.png | Bin 3809 -> 2323 bytes public/images/emoji/apple/taco.png | Bin 3818 -> 3065 bytes public/images/emoji/apple/tada.png | Bin 3853 -> 3605 bytes public/images/emoji/apple/taiwan.png | Bin 2395 -> 1281 bytes public/images/emoji/apple/tajikistan.png | Bin 2474 -> 1374 bytes public/images/emoji/apple/takeout_box.png | Bin 3928 -> 1578 bytes public/images/emoji/apple/tanabata_tree.png | Bin 3097 -> 2749 bytes public/images/emoji/apple/tangerine.png | Bin 3355 -> 2435 bytes public/images/emoji/apple/tanzania.png | Bin 2433 -> 1615 bytes public/images/emoji/apple/taurus.png | Bin 2874 -> 1220 bytes public/images/emoji/apple/taxi.png | Bin 3326 -> 2940 bytes public/images/emoji/apple/tea.png | Bin 3814 -> 2071 bytes public/images/emoji/apple/teddy_bear.png | Bin 3978 -> 2414 bytes public/images/emoji/apple/telephone.png | Bin 3978 -> 2504 bytes .../images/emoji/apple/telephone_receiver.png | Bin 2983 -> 1016 bytes public/images/emoji/apple/telescope.png | Bin 3102 -> 1965 bytes public/images/emoji/apple/ten.png | Bin 3005 -> 1073 bytes public/images/emoji/apple/tennis.png | Bin 4111 -> 2004 bytes public/images/emoji/apple/tent.png | Bin 2904 -> 1775 bytes public/images/emoji/apple/test_tube.png | Bin 2702 -> 2461 bytes public/images/emoji/apple/thailand.png | Bin 2641 -> 1558 bytes public/images/emoji/apple/thermometer.png | Bin 2743 -> 1838 bytes .../images/emoji/apple/thermometer_face.png | Bin 3680 -> 2539 bytes public/images/emoji/apple/thinking.png | Bin 3804 -> 2030 bytes public/images/emoji/apple/thinking_face.png | Bin 3804 -> 2030 bytes public/images/emoji/apple/thought_balloon.png | Bin 3220 -> 1281 bytes public/images/emoji/apple/thread.png | Bin 3723 -> 2421 bytes public/images/emoji/apple/three.png | Bin 2699 -> 1051 bytes .../images/emoji/apple/three_button_mouse.png | Bin 2417 -> 699 bytes public/images/emoji/apple/thumbsdown.png | Bin 3501 -> 1337 bytes public/images/emoji/apple/thumbsup.png | Bin 3418 -> 1361 bytes .../emoji/apple/thunder_cloud_and_rain.png | Bin 3554 -> 2072 bytes .../images/emoji/apple/thunder_cloud_rain.png | Bin 3554 -> 2072 bytes public/images/emoji/apple/ticket.png | Bin 3403 -> 1457 bytes public/images/emoji/apple/tickets.png | Bin 3581 -> 1363 bytes public/images/emoji/apple/tiger.png | Bin 3791 -> 2905 bytes public/images/emoji/apple/tiger2.png | Bin 3220 -> 2932 bytes public/images/emoji/apple/timer.png | Bin 4704 -> 1967 bytes public/images/emoji/apple/timer_clock.png | Bin 4704 -> 1967 bytes public/images/emoji/apple/timor_leste.png | Bin 2533 -> 1318 bytes .../images/emoji/apple/tipping_hand_man.png | Bin 3464 -> 2049 bytes .../images/emoji/apple/tipping_hand_woman.png | Bin 3853 -> 2603 bytes public/images/emoji/apple/tired_face.png | Bin 3755 -> 2245 bytes public/images/emoji/apple/tm.png | Bin 1649 -> 525 bytes public/images/emoji/apple/togo.png | Bin 2849 -> 1679 bytes public/images/emoji/apple/toilet.png | Bin 2890 -> 1085 bytes public/images/emoji/apple/tokelau.png | Bin 2463 -> 1107 bytes public/images/emoji/apple/tokyo_tower.png | Bin 2693 -> 2482 bytes public/images/emoji/apple/tomato.png | Bin 3347 -> 2273 bytes public/images/emoji/apple/tonga.png | Bin 2434 -> 1094 bytes public/images/emoji/apple/tongue.png | Bin 3740 -> 1528 bytes public/images/emoji/apple/toolbox.png | Bin 2596 -> 1442 bytes public/images/emoji/apple/tools.png | Bin 3424 -> 2255 bytes public/images/emoji/apple/tooth.png | Bin 3976 -> 1167 bytes public/images/emoji/apple/top.png | Bin 1607 -> 663 bytes public/images/emoji/apple/tophat.png | Bin 3183 -> 1298 bytes public/images/emoji/apple/tornado.png | Bin 4203 -> 2240 bytes public/images/emoji/apple/tr.png | Bin 2534 -> 1139 bytes public/images/emoji/apple/track_next.png | Bin 2827 -> 1000 bytes public/images/emoji/apple/track_previous.png | Bin 2851 -> 1048 bytes public/images/emoji/apple/trackball.png | Bin 3941 -> 1658 bytes public/images/emoji/apple/tractor.png | Bin 3686 -> 2831 bytes public/images/emoji/apple/traffic_light.png | Bin 2674 -> 1678 bytes public/images/emoji/apple/train.png | Bin 2770 -> 1760 bytes public/images/emoji/apple/train2.png | Bin 3265 -> 2268 bytes public/images/emoji/apple/tram.png | Bin 3532 -> 1873 bytes .../images/emoji/apple/transgender_flag.png | Bin 0 -> 907 bytes .../emoji/apple/triangular_flag_on_post.png | Bin 2022 -> 845 bytes .../images/emoji/apple/triangular_ruler.png | Bin 2832 -> 843 bytes public/images/emoji/apple/trident.png | Bin 3314 -> 2658 bytes public/images/emoji/apple/trinidad_tobago.png | Bin 2543 -> 1340 bytes .../images/emoji/apple/tristan_da_cunha.png | Bin 2580 -> 1812 bytes public/images/emoji/apple/triumph.png | Bin 3855 -> 2952 bytes public/images/emoji/apple/trolleybus.png | Bin 3364 -> 2921 bytes public/images/emoji/apple/trophy.png | Bin 3486 -> 2691 bytes public/images/emoji/apple/tropical_drink.png | Bin 2755 -> 2641 bytes public/images/emoji/apple/tropical_fish.png | Bin 3205 -> 3041 bytes public/images/emoji/apple/truck.png | Bin 2842 -> 2194 bytes public/images/emoji/apple/trumpet.png | Bin 3177 -> 3121 bytes public/images/emoji/apple/tshirt.png | Bin 3699 -> 1381 bytes public/images/emoji/apple/tulip.png | Bin 3121 -> 2957 bytes public/images/emoji/apple/tumbler_glass.png | Bin 3349 -> 1957 bytes public/images/emoji/apple/tunisia.png | Bin 2570 -> 1034 bytes public/images/emoji/apple/turkey.png | Bin 4203 -> 3309 bytes public/images/emoji/apple/turkmenistan.png | Bin 2460 -> 1275 bytes .../emoji/apple/turks_caicos_islands.png | Bin 2685 -> 2013 bytes public/images/emoji/apple/turtle.png | Bin 3135 -> 1948 bytes public/images/emoji/apple/tuvalu.png | Bin 2845 -> 2140 bytes public/images/emoji/apple/tv.png | Bin 4268 -> 2285 bytes .../emoji/apple/twisted_rightwards_arrows.png | Bin 2864 -> 1068 bytes public/images/emoji/apple/two.png | Bin 2564 -> 954 bytes public/images/emoji/apple/two_hearts.png | Bin 2945 -> 1052 bytes .../emoji/apple/two_men_holding_hands.png | Bin 3496 -> 3322 bytes .../emoji/apple/two_women_holding_hands.png | Bin 3574 -> 3532 bytes public/images/emoji/apple/u5272.png | Bin 3038 -> 1443 bytes public/images/emoji/apple/u5408.png | Bin 2791 -> 1362 bytes public/images/emoji/apple/u55b6.png | Bin 2571 -> 1264 bytes public/images/emoji/apple/u6307.png | Bin 2859 -> 1424 bytes public/images/emoji/apple/u6708.png | Bin 2383 -> 1064 bytes public/images/emoji/apple/u6709.png | Bin 2474 -> 1166 bytes public/images/emoji/apple/u6e80.png | Bin 3244 -> 1576 bytes public/images/emoji/apple/u7121.png | Bin 2889 -> 1413 bytes public/images/emoji/apple/u7533.png | Bin 2446 -> 1150 bytes public/images/emoji/apple/u7981.png | Bin 3309 -> 1594 bytes public/images/emoji/apple/u7a7a.png | Bin 2625 -> 1292 bytes public/images/emoji/apple/uganda.png | Bin 2887 -> 1870 bytes public/images/emoji/apple/uk.png | Bin 3260 -> 2233 bytes public/images/emoji/apple/ukraine.png | Bin 2441 -> 1046 bytes public/images/emoji/apple/umbrella.png | Bin 3010 -> 2566 bytes public/images/emoji/apple/umbrella2.png | Bin 2544 -> 1539 bytes .../images/emoji/apple/umbrella_on_ground.png | Bin 3010 -> 1820 bytes public/images/emoji/apple/unamused.png | Bin 3664 -> 1750 bytes public/images/emoji/apple/underage.png | Bin 3654 -> 1909 bytes public/images/emoji/apple/unicorn.png | Bin 3490 -> 3299 bytes public/images/emoji/apple/unicorn_face.png | Bin 3490 -> 3299 bytes .../emoji/apple/united_arab_emirates.png | Bin 2215 -> 1147 bytes public/images/emoji/apple/united_nations.png | Bin 2719 -> 1048 bytes public/images/emoji/apple/unlock.png | Bin 2852 -> 1384 bytes public/images/emoji/apple/up.png | Bin 2998 -> 1161 bytes public/images/emoji/apple/upside_down.png | Bin 3713 -> 1689 bytes .../images/emoji/apple/upside_down_face.png | Bin 3713 -> 1689 bytes public/images/emoji/apple/urn.png | Bin 3228 -> 1873 bytes public/images/emoji/apple/uruguay.png | Bin 3299 -> 1917 bytes public/images/emoji/apple/us.png | Bin 3306 -> 2340 bytes .../emoji/apple/us_outlying_islands.png | Bin 3306 -> 2340 bytes .../images/emoji/apple/us_virgin_islands.png | Bin 3214 -> 2556 bytes public/images/emoji/apple/uzbekistan.png | Bin 2516 -> 1654 bytes public/images/emoji/apple/v.png | Bin 3255 -> 1322 bytes public/images/emoji/apple/vampire.png | Bin 3852 -> 3966 bytes public/images/emoji/apple/vanuatu.png | Bin 2868 -> 1493 bytes public/images/emoji/apple/vatican_city.png | Bin 2099 -> 1142 bytes public/images/emoji/apple/venezuela.png | Bin 2527 -> 1463 bytes .../emoji/apple/vertical_traffic_light.png | Bin 2801 -> 1926 bytes public/images/emoji/apple/vhs.png | Bin 3058 -> 1044 bytes public/images/emoji/apple/vibration_mode.png | Bin 2873 -> 1279 bytes public/images/emoji/apple/video_camera.png | Bin 3644 -> 1809 bytes public/images/emoji/apple/video_game.png | Bin 4169 -> 1883 bytes public/images/emoji/apple/vietnam.png | Bin 2562 -> 956 bytes public/images/emoji/apple/violin.png | Bin 3314 -> 3309 bytes public/images/emoji/apple/virgo.png | Bin 3126 -> 1356 bytes public/images/emoji/apple/volcano.png | Bin 3620 -> 3336 bytes public/images/emoji/apple/volleyball.png | Bin 3775 -> 1590 bytes public/images/emoji/apple/vs.png | Bin 2666 -> 1274 bytes public/images/emoji/apple/vulcan.png | Bin 3542 -> 1390 bytes public/images/emoji/apple/vulcan_salute.png | Bin 3542 -> 1390 bytes public/images/emoji/apple/waffle.png | Bin 1062 -> 3855 bytes public/images/emoji/apple/walking.png | Bin 2250 -> 2208 bytes public/images/emoji/apple/walking_man.png | Bin 2250 -> 2208 bytes public/images/emoji/apple/walking_woman.png | Bin 2316 -> 2147 bytes public/images/emoji/apple/wallis_futuna.png | Bin 2406 -> 1244 bytes .../emoji/apple/waning_crescent_moon.png | Bin 4739 -> 1734 bytes .../emoji/apple/waning_gibbous_moon.png | Bin 4541 -> 2423 bytes public/images/emoji/apple/warning.png | Bin 2338 -> 796 bytes public/images/emoji/apple/wastebasket.png | Bin 4891 -> 4614 bytes public/images/emoji/apple/watch.png | Bin 2998 -> 1314 bytes public/images/emoji/apple/water_buffalo.png | Bin 3300 -> 1469 bytes public/images/emoji/apple/watermelon.png | Bin 3016 -> 1782 bytes public/images/emoji/apple/wave.png | Bin 4058 -> 1878 bytes .../images/emoji/apple/waving_black_flag.png | Bin 1775 -> 689 bytes .../images/emoji/apple/waving_white_flag.png | Bin 2090 -> 756 bytes public/images/emoji/apple/wavy_dash.png | Bin 1025 -> 565 bytes .../emoji/apple/waxing_crescent_moon.png | Bin 4573 -> 1962 bytes .../emoji/apple/waxing_gibbous_moon.png | Bin 4707 -> 2188 bytes public/images/emoji/apple/wc.png | Bin 2831 -> 1355 bytes public/images/emoji/apple/weary.png | Bin 3682 -> 2174 bytes public/images/emoji/apple/wedding.png | Bin 3008 -> 2084 bytes public/images/emoji/apple/weight_lifter.png | Bin 3375 -> 3441 bytes .../images/emoji/apple/weight_lifting_man.png | Bin 3375 -> 3441 bytes .../emoji/apple/weight_lifting_woman.png | Bin 3404 -> 3249 bytes public/images/emoji/apple/western_sahara.png | Bin 2425 -> 1193 bytes public/images/emoji/apple/whale.png | Bin 3598 -> 2315 bytes public/images/emoji/apple/whale2.png | Bin 3339 -> 1936 bytes public/images/emoji/apple/wheel_of_dharma.png | Bin 3394 -> 1510 bytes public/images/emoji/apple/wheelchair.png | Bin 2900 -> 1404 bytes .../images/emoji/apple/white_check_mark.png | Bin 2416 -> 1062 bytes public/images/emoji/apple/white_circle.png | Bin 1472 -> 779 bytes public/images/emoji/apple/white_flag.png | Bin 2090 -> 756 bytes public/images/emoji/apple/white_flower.png | Bin 3760 -> 1674 bytes .../emoji/apple/white_frowning_face.png | Bin 3655 -> 1808 bytes public/images/emoji/apple/white_heart.png | Bin 801 -> 2677 bytes .../images/emoji/apple/white_large_square.png | Bin 310 -> 231 bytes .../emoji/apple/white_medium_small_square.png | Bin 261 -> 284 bytes .../emoji/apple/white_medium_square.png | Bin 323 -> 171 bytes .../images/emoji/apple/white_small_square.png | Bin 296 -> 180 bytes .../emoji/apple/white_square_button.png | Bin 1254 -> 500 bytes .../emoji/apple/white_sun_behind_cloud.png | Bin 3244 -> 1237 bytes .../white_sun_behind_cloud_with_rain.png | Bin 3244 -> 1981 bytes public/images/emoji/apple/white_sun_cloud.png | Bin 3244 -> 1237 bytes .../emoji/apple/white_sun_rain_cloud.png | Bin 3244 -> 1981 bytes .../emoji/apple/white_sun_small_cloud.png | Bin 3467 -> 1353 bytes .../apple/white_sun_with_small_cloud.png | Bin 3467 -> 1353 bytes public/images/emoji/apple/wilted_flower.png | Bin 3361 -> 2267 bytes .../images/emoji/apple/wind_blowing_face.png | Bin 3138 -> 1397 bytes public/images/emoji/apple/wind_chime.png | Bin 3032 -> 2074 bytes public/images/emoji/apple/wind_face.png | Bin 3138 -> 1397 bytes public/images/emoji/apple/wine_glass.png | Bin 2828 -> 1739 bytes public/images/emoji/apple/wink.png | Bin 3719 -> 1835 bytes public/images/emoji/apple/wolf.png | Bin 3592 -> 1769 bytes public/images/emoji/apple/woman.png | Bin 4790 -> 2371 bytes public/images/emoji/apple/woman_artist.png | Bin 3698 -> 3415 bytes public/images/emoji/apple/woman_astronaut.png | Bin 4301 -> 3070 bytes public/images/emoji/apple/woman_bald.png | Bin 3249 -> 1649 bytes .../images/emoji/apple/woman_cartwheeling.png | Bin 2278 -> 2105 bytes public/images/emoji/apple/woman_climbing.png | Bin 4008 -> 3745 bytes public/images/emoji/apple/woman_cook.png | Bin 3817 -> 3132 bytes .../images/emoji/apple/woman_curly_haired.png | Bin 5046 -> 2615 bytes .../images/emoji/apple/woman_facepalming.png | Bin 4182 -> 2365 bytes .../emoji/apple/woman_factory_worker.png | Bin 3731 -> 3121 bytes public/images/emoji/apple/woman_farmer.png | Bin 4254 -> 3999 bytes .../images/emoji/apple/woman_firefighter.png | Bin 3793 -> 3604 bytes public/images/emoji/apple/woman_genie.png | Bin 2946 -> 2788 bytes .../emoji/apple/woman_health_worker.png | Bin 3716 -> 2510 bytes .../emoji/apple/woman_in_lotus_position.png | Bin 3044 -> 2122 bytes .../apple/woman_in_manual_wheelchair.png | Bin 2414 -> 2597 bytes .../apple/woman_in_motorized_wheelchair.png | Bin 2158 -> 3007 bytes .../emoji/apple/woman_in_steamy_room.png | Bin 4675 -> 3057 bytes public/images/emoji/apple/woman_judge.png | Bin 3641 -> 2401 bytes public/images/emoji/apple/woman_juggling.png | Bin 3510 -> 3247 bytes public/images/emoji/apple/woman_kneeling.png | Bin 2017 -> 2055 bytes public/images/emoji/apple/woman_mage.png | Bin 3346 -> 3185 bytes public/images/emoji/apple/woman_mechanic.png | Bin 3741 -> 2959 bytes .../emoji/apple/woman_office_worker.png | Bin 3510 -> 2280 bytes public/images/emoji/apple/woman_pilot.png | Bin 3625 -> 2850 bytes .../emoji/apple/woman_playing_handball.png | Bin 3053 -> 2941 bytes .../emoji/apple/woman_playing_water_polo.png | Bin 3355 -> 3131 bytes .../images/emoji/apple/woman_red_haired.png | Bin 4258 -> 2153 bytes public/images/emoji/apple/woman_scientist.png | Bin 3735 -> 3417 bytes public/images/emoji/apple/woman_shrugging.png | Bin 3691 -> 2687 bytes public/images/emoji/apple/woman_singer.png | Bin 3599 -> 3413 bytes public/images/emoji/apple/woman_standing.png | Bin 1603 -> 2479 bytes public/images/emoji/apple/woman_student.png | Bin 3920 -> 2515 bytes public/images/emoji/apple/woman_superhero.png | Bin 3905 -> 3554 bytes .../images/emoji/apple/woman_supervillain.png | Bin 4736 -> 4313 bytes public/images/emoji/apple/woman_teacher.png | Bin 3989 -> 2819 bytes .../images/emoji/apple/woman_technologist.png | Bin 3381 -> 1817 bytes .../images/emoji/apple/woman_white_haired.png | Bin 4397 -> 2367 bytes .../emoji/apple/woman_with_headscarf.png | Bin 3571 -> 2145 bytes .../emoji/apple/woman_with_probing_cane.png | Bin 1787 -> 2463 bytes .../images/emoji/apple/woman_with_turban.png | Bin 3593 -> 1985 bytes public/images/emoji/apple/woman_zombie.png | Bin 4296 -> 2615 bytes public/images/emoji/apple/womans_clothes.png | Bin 3712 -> 1551 bytes public/images/emoji/apple/womans_hat.png | Bin 3513 -> 2306 bytes public/images/emoji/apple/women_wrestling.png | Bin 3914 -> 3797 bytes public/images/emoji/apple/womens.png | Bin 2611 -> 1084 bytes public/images/emoji/apple/woozy_face.png | Bin 3742 -> 1974 bytes public/images/emoji/apple/world_map.png | Bin 4522 -> 4247 bytes public/images/emoji/apple/worried.png | Bin 3694 -> 1828 bytes public/images/emoji/apple/worship_symbol.png | Bin 2713 -> 1136 bytes public/images/emoji/apple/wrench.png | Bin 2290 -> 1158 bytes public/images/emoji/apple/writing_hand.png | Bin 3193 -> 1664 bytes public/images/emoji/apple/x.png | Bin 2122 -> 781 bytes public/images/emoji/apple/yarn.png | Bin 4854 -> 2796 bytes public/images/emoji/apple/yawning_face.png | Bin 2178 -> 3741 bytes public/images/emoji/apple/yellow_circle.png | Bin 1147 -> 2498 bytes public/images/emoji/apple/yellow_heart.png | Bin 3423 -> 1054 bytes public/images/emoji/apple/yellow_square.png | Bin 692 -> 1003 bytes public/images/emoji/apple/yemen.png | Bin 2347 -> 1122 bytes public/images/emoji/apple/yen.png | Bin 3498 -> 1934 bytes public/images/emoji/apple/yin_yang.png | Bin 3033 -> 1220 bytes public/images/emoji/apple/yo-yo.png | Bin 1275 -> 3404 bytes public/images/emoji/apple/yum.png | Bin 3592 -> 2171 bytes public/images/emoji/apple/zambia.png | Bin 2179 -> 1005 bytes public/images/emoji/apple/zap.png | Bin 2194 -> 761 bytes public/images/emoji/apple/zebra.png | Bin 3345 -> 2003 bytes public/images/emoji/apple/zero.png | Bin 2710 -> 993 bytes public/images/emoji/apple/zimbabwe.png | Bin 2910 -> 2271 bytes public/images/emoji/apple/zipper_mouth.png | Bin 3811 -> 2577 bytes .../images/emoji/apple/zipper_mouth_face.png | Bin 3811 -> 2577 bytes public/images/emoji/apple/zombie.png | Bin 4233 -> 4016 bytes public/images/emoji/apple/zzz.png | Bin 2014 -> 606 bytes public/images/emoji/emoji_one/+1.png | Bin 2254 -> 665 bytes public/images/emoji/emoji_one/-1.png | Bin 2266 -> 663 bytes public/images/emoji/emoji_one/100.png | Bin 2941 -> 1255 bytes public/images/emoji/emoji_one/1234.png | Bin 1941 -> 899 bytes .../emoji/emoji_one/1st_place_medal.png | Bin 2651 -> 1609 bytes .../emoji/emoji_one/2nd_place_medal.png | Bin 2713 -> 1624 bytes .../emoji/emoji_one/3rd_place_medal.png | Bin 2713 -> 1642 bytes public/images/emoji/emoji_one/8ball.png | Bin 3116 -> 1073 bytes public/images/emoji/emoji_one/a.png | Bin 1424 -> 775 bytes public/images/emoji/emoji_one/ab.png | Bin 1728 -> 832 bytes public/images/emoji/emoji_one/abacus.png | Bin 2580 -> 1743 bytes public/images/emoji/emoji_one/abc.png | Bin 1870 -> 709 bytes public/images/emoji/emoji_one/abcd.png | Bin 2059 -> 950 bytes public/images/emoji/emoji_one/accept.png | Bin 1562 -> 792 bytes .../emoji/emoji_one/adhesive_bandage.png | Bin 1735 -> 613 bytes .../emoji/emoji_one/admission_tickets.png | Bin 1359 -> 526 bytes public/images/emoji/emoji_one/adult.png | Bin 2462 -> 1281 bytes .../images/emoji/emoji_one/aerial_tramway.png | Bin 2350 -> 1328 bytes public/images/emoji/emoji_one/airplane.png | Bin 2466 -> 1165 bytes .../emoji/emoji_one/airplane_arriving.png | Bin 1833 -> 814 bytes .../emoji/emoji_one/airplane_departure.png | Bin 1915 -> 917 bytes .../images/emoji/emoji_one/airplane_small.png | Bin 1932 -> 917 bytes public/images/emoji/emoji_one/alarm_clock.png | Bin 3271 -> 1628 bytes public/images/emoji/emoji_one/alembic.png | Bin 2475 -> 1094 bytes public/images/emoji/emoji_one/alien.png | Bin 2391 -> 1031 bytes public/images/emoji/emoji_one/ambulance.png | Bin 2330 -> 1335 bytes public/images/emoji/emoji_one/amphora.png | Bin 2518 -> 1157 bytes public/images/emoji/emoji_one/anchor.png | Bin 2402 -> 1039 bytes public/images/emoji/emoji_one/angel.png | Bin 2516 -> 1462 bytes public/images/emoji/emoji_one/anger.png | Bin 2216 -> 796 bytes public/images/emoji/emoji_one/anger_right.png | Bin 2483 -> 941 bytes public/images/emoji/emoji_one/angry.png | Bin 1992 -> 892 bytes public/images/emoji/emoji_one/anguished.png | Bin 2166 -> 1154 bytes public/images/emoji/emoji_one/ant.png | Bin 2773 -> 1211 bytes public/images/emoji/emoji_one/apple.png | Bin 2970 -> 1014 bytes public/images/emoji/emoji_one/aquarius.png | Bin 2004 -> 923 bytes public/images/emoji/emoji_one/archery.png | Bin 2277 -> 1310 bytes public/images/emoji/emoji_one/aries.png | Bin 1916 -> 864 bytes .../images/emoji/emoji_one/arrow_backward.png | Bin 1378 -> 712 bytes .../emoji/emoji_one/arrow_double_down.png | Bin 1452 -> 743 bytes .../emoji/emoji_one/arrow_double_up.png | Bin 1486 -> 742 bytes public/images/emoji/emoji_one/arrow_down.png | Bin 1355 -> 674 bytes .../emoji/emoji_one/arrow_down_small.png | Bin 1334 -> 763 bytes .../images/emoji/emoji_one/arrow_forward.png | Bin 1332 -> 788 bytes .../emoji/emoji_one/arrow_heading_down.png | Bin 1478 -> 702 bytes .../emoji/emoji_one/arrow_heading_up.png | Bin 1415 -> 784 bytes public/images/emoji/emoji_one/arrow_left.png | Bin 1403 -> 704 bytes .../emoji/emoji_one/arrow_lower_left.png | Bin 1419 -> 619 bytes .../emoji/emoji_one/arrow_lower_right.png | Bin 1478 -> 690 bytes public/images/emoji/emoji_one/arrow_right.png | Bin 1351 -> 735 bytes .../emoji/emoji_one/arrow_right_hook.png | Bin 1687 -> 737 bytes public/images/emoji/emoji_one/arrow_up.png | Bin 1324 -> 705 bytes .../images/emoji/emoji_one/arrow_up_down.png | Bin 1415 -> 701 bytes .../images/emoji/emoji_one/arrow_up_small.png | Bin 1316 -> 701 bytes .../emoji/emoji_one/arrow_upper_left.png | Bin 1405 -> 675 bytes .../emoji/emoji_one/arrow_upper_right.png | Bin 1481 -> 694 bytes .../emoji/emoji_one/arrows_clockwise.png | Bin 1900 -> 809 bytes .../emoji_one/arrows_counterclockwise.png | Bin 1830 -> 783 bytes public/images/emoji/emoji_one/art.png | Bin 3337 -> 2009 bytes .../emoji/emoji_one/articulated_lorry.png | Bin 2111 -> 990 bytes .../emoji/emoji_one/artificial_satellite.png | Bin 2306 -> 1147 bytes public/images/emoji/emoji_one/asterisk.png | Bin 1607 -> 771 bytes public/images/emoji/emoji_one/astonished.png | Bin 2142 -> 1176 bytes .../images/emoji/emoji_one/athletic_shoe.png | Bin 2255 -> 1096 bytes public/images/emoji/emoji_one/atm.png | Bin 1640 -> 690 bytes public/images/emoji/emoji_one/atom.png | Bin 2381 -> 1061 bytes public/images/emoji/emoji_one/atom_symbol.png | Bin 2381 -> 1061 bytes .../images/emoji/emoji_one/auto_rickshaw.png | Bin 2203 -> 1285 bytes public/images/emoji/emoji_one/automobile.png | Bin 2158 -> 1189 bytes public/images/emoji/emoji_one/avocado.png | Bin 3088 -> 1382 bytes public/images/emoji/emoji_one/axe.png | Bin 1996 -> 991 bytes public/images/emoji/emoji_one/b.png | Bin 1399 -> 720 bytes public/images/emoji/emoji_one/baby.png | Bin 1986 -> 912 bytes public/images/emoji/emoji_one/baby_bottle.png | Bin 2151 -> 831 bytes public/images/emoji/emoji_one/baby_chick.png | Bin 2435 -> 1057 bytes public/images/emoji/emoji_one/baby_symbol.png | Bin 1780 -> 809 bytes public/images/emoji/emoji_one/back.png | Bin 1899 -> 702 bytes public/images/emoji/emoji_one/bacon.png | Bin 3047 -> 1732 bytes public/images/emoji/emoji_one/badger.png | Bin 1983 -> 805 bytes public/images/emoji/emoji_one/badminton.png | Bin 2525 -> 1305 bytes public/images/emoji/emoji_one/bagel.png | Bin 3143 -> 1520 bytes .../images/emoji/emoji_one/baggage_claim.png | Bin 1703 -> 729 bytes .../images/emoji/emoji_one/baguette_bread.png | Bin 1936 -> 736 bytes .../images/emoji/emoji_one/balance_scale.png | Bin 2290 -> 1183 bytes .../images/emoji/emoji_one/ballet_shoes.png | Bin 2863 -> 1381 bytes public/images/emoji/emoji_one/balloon.png | Bin 2230 -> 716 bytes public/images/emoji/emoji_one/ballot_box.png | Bin 2168 -> 947 bytes .../emoji_one/ballot_box_with_ballot.png | Bin 2168 -> 947 bytes .../emoji/emoji_one/ballot_box_with_check.png | Bin 1658 -> 748 bytes public/images/emoji/emoji_one/bamboo.png | Bin 2687 -> 1588 bytes public/images/emoji/emoji_one/banana.png | Bin 2173 -> 863 bytes public/images/emoji/emoji_one/bangbang.png | Bin 999 -> 401 bytes public/images/emoji/emoji_one/banjo.png | Bin 2274 -> 1026 bytes public/images/emoji/emoji_one/bank.png | Bin 2057 -> 947 bytes public/images/emoji/emoji_one/bar_chart.png | Bin 1940 -> 691 bytes public/images/emoji/emoji_one/barber.png | Bin 1841 -> 902 bytes public/images/emoji/emoji_one/baseball.png | Bin 3138 -> 1541 bytes public/images/emoji/emoji_one/basket.png | Bin 3103 -> 1553 bytes public/images/emoji/emoji_one/basketball.png | Bin 3393 -> 1606 bytes .../images/emoji/emoji_one/basketball_man.png | Bin 2362 -> 1559 bytes .../emoji/emoji_one/basketball_player.png | Bin 2362 -> 1559 bytes .../emoji/emoji_one/basketball_woman.png | Bin 2430 -> 1769 bytes public/images/emoji/emoji_one/bat.png | Bin 2396 -> 990 bytes public/images/emoji/emoji_one/bath.png | Bin 2321 -> 1146 bytes public/images/emoji/emoji_one/bathtub.png | Bin 2308 -> 958 bytes public/images/emoji/emoji_one/battery.png | Bin 1864 -> 597 bytes public/images/emoji/emoji_one/beach.png | Bin 2229 -> 1325 bytes .../images/emoji/emoji_one/beach_umbrella.png | Bin 2229 -> 1325 bytes .../emoji/emoji_one/beach_with_umbrella.png | Bin 2229 -> 1325 bytes public/images/emoji/emoji_one/bear.png | Bin 3205 -> 1017 bytes .../images/emoji/emoji_one/bearded_person.png | Bin 2345 -> 1160 bytes public/images/emoji/emoji_one/bed.png | Bin 1122 -> 545 bytes public/images/emoji/emoji_one/bee.png | Bin 2684 -> 1851 bytes public/images/emoji/emoji_one/beer.png | Bin 2426 -> 1067 bytes public/images/emoji/emoji_one/beers.png | Bin 3093 -> 1582 bytes public/images/emoji/emoji_one/beetle.png | Bin 2758 -> 1301 bytes public/images/emoji/emoji_one/beginner.png | Bin 1754 -> 624 bytes public/images/emoji/emoji_one/bell.png | Bin 2347 -> 1020 bytes public/images/emoji/emoji_one/bellhop.png | Bin 2439 -> 982 bytes .../images/emoji/emoji_one/bellhop_bell.png | Bin 2439 -> 982 bytes public/images/emoji/emoji_one/bento.png | Bin 2805 -> 1620 bytes .../images/emoji/emoji_one/beverage_box.png | Bin 1771 -> 717 bytes public/images/emoji/emoji_one/bicyclist.png | Bin 2968 -> 2422 bytes public/images/emoji/emoji_one/bike.png | Bin 2753 -> 1871 bytes public/images/emoji/emoji_one/biking_man.png | Bin 2968 -> 2422 bytes .../images/emoji/emoji_one/biking_woman.png | Bin 2997 -> 2668 bytes public/images/emoji/emoji_one/bikini.png | Bin 2349 -> 1148 bytes public/images/emoji/emoji_one/billed_cap.png | Bin 2303 -> 864 bytes public/images/emoji/emoji_one/biohazard.png | Bin 3160 -> 1440 bytes .../images/emoji/emoji_one/biohazard_sign.png | Bin 3160 -> 1440 bytes public/images/emoji/emoji_one/bird.png | Bin 2709 -> 1173 bytes public/images/emoji/emoji_one/birthday.png | Bin 2643 -> 2021 bytes .../images/emoji/emoji_one/black_circle.png | Bin 1341 -> 759 bytes public/images/emoji/emoji_one/black_flag.png | Bin 836 -> 351 bytes public/images/emoji/emoji_one/black_heart.png | Bin 1311 -> 598 bytes public/images/emoji/emoji_one/black_joker.png | Bin 2228 -> 1329 bytes .../emoji/emoji_one/black_large_square.png | Bin 1020 -> 723 bytes .../emoji_one/black_medium_small_square.png | Bin 726 -> 457 bytes .../emoji/emoji_one/black_medium_square.png | Bin 698 -> 502 bytes public/images/emoji/emoji_one/black_nib.png | Bin 1907 -> 658 bytes .../emoji/emoji_one/black_small_square.png | Bin 495 -> 305 bytes public/images/emoji/emoji_one/blonde_man.png | Bin 2483 -> 1196 bytes .../images/emoji/emoji_one/blonde_woman.png | Bin 2413 -> 1219 bytes public/images/emoji/emoji_one/blossom.png | Bin 3383 -> 1136 bytes public/images/emoji/emoji_one/blowfish.png | Bin 3080 -> 1259 bytes public/images/emoji/emoji_one/blue_book.png | Bin 1475 -> 508 bytes public/images/emoji/emoji_one/blue_car.png | Bin 2533 -> 1390 bytes public/images/emoji/emoji_one/blue_heart.png | Bin 1183 -> 653 bytes public/images/emoji/emoji_one/blush.png | Bin 2440 -> 1201 bytes public/images/emoji/emoji_one/boar.png | Bin 2604 -> 1314 bytes public/images/emoji/emoji_one/boat.png | Bin 1999 -> 877 bytes public/images/emoji/emoji_one/bomb.png | Bin 2692 -> 974 bytes public/images/emoji/emoji_one/bone.png | Bin 1675 -> 541 bytes public/images/emoji/emoji_one/book.png | Bin 3044 -> 1094 bytes public/images/emoji/emoji_one/bookmark.png | Bin 1862 -> 807 bytes .../images/emoji/emoji_one/bookmark_tabs.png | Bin 2133 -> 780 bytes public/images/emoji/emoji_one/books.png | Bin 2610 -> 1943 bytes public/images/emoji/emoji_one/boom.png | Bin 2516 -> 1333 bytes public/images/emoji/emoji_one/boot.png | Bin 2482 -> 808 bytes .../emoji_one/bottle_with_popping_cork.png | Bin 2484 -> 1420 bytes public/images/emoji/emoji_one/bouquet.png | Bin 2555 -> 1717 bytes public/images/emoji/emoji_one/bow.png | Bin 2542 -> 1432 bytes .../images/emoji/emoji_one/bow_and_arrow.png | Bin 2277 -> 1310 bytes public/images/emoji/emoji_one/bowing_man.png | Bin 2542 -> 1432 bytes .../images/emoji/emoji_one/bowing_woman.png | Bin 2585 -> 1583 bytes .../emoji/emoji_one/bowl_with_spoon.png | Bin 1894 -> 984 bytes public/images/emoji/emoji_one/bowling.png | Bin 2708 -> 1221 bytes .../images/emoji/emoji_one/boxing_glove.png | Bin 2852 -> 1053 bytes public/images/emoji/emoji_one/boy.png | Bin 2263 -> 1096 bytes public/images/emoji/emoji_one/brain.png | Bin 2812 -> 1189 bytes public/images/emoji/emoji_one/bread.png | Bin 2158 -> 728 bytes .../images/emoji/emoji_one/breast_feeding.png | Bin 2348 -> 1348 bytes public/images/emoji/emoji_one/brick.png | Bin 1868 -> 596 bytes .../emoji/emoji_one/bride_with_veil.png | Bin 2813 -> 1559 bytes .../emoji/emoji_one/bridge_at_night.png | Bin 2502 -> 1192 bytes public/images/emoji/emoji_one/briefcase.png | Bin 1503 -> 598 bytes public/images/emoji/emoji_one/briefs.png | Bin 2082 -> 772 bytes public/images/emoji/emoji_one/broccoli.png | Bin 3230 -> 1139 bytes .../images/emoji/emoji_one/broken_heart.png | Bin 2114 -> 871 bytes public/images/emoji/emoji_one/broom.png | Bin 1640 -> 550 bytes .../images/emoji/emoji_one/brown_circle.png | Bin 1353 -> 593 bytes public/images/emoji/emoji_one/brown_heart.png | Bin 1352 -> 543 bytes .../images/emoji/emoji_one/brown_square.png | Bin 482 -> 339 bytes public/images/emoji/emoji_one/bug.png | Bin 2843 -> 1512 bytes .../emoji/emoji_one/building_construction.png | Bin 2166 -> 1201 bytes public/images/emoji/emoji_one/bulb.png | Bin 2870 -> 1108 bytes .../emoji/emoji_one/bullettrain_front.png | Bin 2194 -> 1143 bytes .../emoji/emoji_one/bullettrain_side.png | Bin 2219 -> 1091 bytes public/images/emoji/emoji_one/burrito.png | Bin 2675 -> 1235 bytes public/images/emoji/emoji_one/bus.png | Bin 2083 -> 1015 bytes .../emoji_one/business_suit_levitating.png | Bin 1884 -> 786 bytes public/images/emoji/emoji_one/busstop.png | Bin 1111 -> 503 bytes .../emoji/emoji_one/bust_in_silhouette.png | Bin 1561 -> 660 bytes .../emoji/emoji_one/busts_in_silhouette.png | Bin 1586 -> 571 bytes public/images/emoji/emoji_one/butter.png | Bin 1926 -> 591 bytes public/images/emoji/emoji_one/butterfly.png | Bin 3076 -> 1523 bytes public/images/emoji/emoji_one/cactus.png | Bin 2311 -> 769 bytes public/images/emoji/emoji_one/cake.png | Bin 2545 -> 1487 bytes public/images/emoji/emoji_one/calendar.png | Bin 1891 -> 797 bytes .../emoji/emoji_one/calendar_spiral.png | Bin 1843 -> 877 bytes .../images/emoji/emoji_one/call_me_hand.png | Bin 2080 -> 597 bytes public/images/emoji/emoji_one/calling.png | Bin 2478 -> 1807 bytes public/images/emoji/emoji_one/camel.png | Bin 2373 -> 971 bytes public/images/emoji/emoji_one/camera.png | Bin 2311 -> 877 bytes .../images/emoji/emoji_one/camera_flash.png | Bin 2696 -> 1474 bytes .../emoji/emoji_one/camera_with_flash.png | Bin 2696 -> 1474 bytes public/images/emoji/emoji_one/camping.png | Bin 2889 -> 1897 bytes public/images/emoji/emoji_one/cancer.png | Bin 1932 -> 913 bytes public/images/emoji/emoji_one/candle.png | Bin 1745 -> 716 bytes public/images/emoji/emoji_one/candy.png | Bin 2391 -> 1215 bytes public/images/emoji/emoji_one/canned_food.png | Bin 2356 -> 1104 bytes public/images/emoji/emoji_one/canoe.png | Bin 1706 -> 714 bytes .../images/emoji/emoji_one/capital_abcd.png | Bin 2097 -> 1003 bytes public/images/emoji/emoji_one/capricorn.png | Bin 1911 -> 910 bytes public/images/emoji/emoji_one/car.png | Bin 2158 -> 1189 bytes public/images/emoji/emoji_one/card_box.png | Bin 1634 -> 822 bytes .../images/emoji/emoji_one/card_file_box.png | Bin 1634 -> 822 bytes public/images/emoji/emoji_one/card_index.png | Bin 2417 -> 1151 bytes .../emoji/emoji_one/card_index_dividers.png | Bin 690 -> 469 bytes .../images/emoji/emoji_one/carousel_horse.png | Bin 2581 -> 2136 bytes public/images/emoji/emoji_one/carrot.png | Bin 2375 -> 856 bytes public/images/emoji/emoji_one/cat.png | Bin 2474 -> 1151 bytes public/images/emoji/emoji_one/cat2.png | Bin 2590 -> 1430 bytes public/images/emoji/emoji_one/cd.png | Bin 3275 -> 1065 bytes public/images/emoji/emoji_one/chains.png | Bin 2547 -> 1185 bytes public/images/emoji/emoji_one/chair.png | Bin 1640 -> 469 bytes public/images/emoji/emoji_one/champagne.png | Bin 2484 -> 1420 bytes public/images/emoji/emoji_one/chart.png | Bin 1848 -> 913 bytes .../emoji_one/chart_with_downwards_trend.png | Bin 2115 -> 670 bytes .../emoji_one/chart_with_upwards_trend.png | Bin 2052 -> 715 bytes .../images/emoji/emoji_one/checkered_flag.png | Bin 1569 -> 612 bytes public/images/emoji/emoji_one/cheese.png | Bin 2085 -> 710 bytes .../images/emoji/emoji_one/cheese_wedge.png | Bin 2085 -> 710 bytes public/images/emoji/emoji_one/cherries.png | Bin 3089 -> 1389 bytes .../images/emoji/emoji_one/cherry_blossom.png | Bin 3704 -> 1434 bytes public/images/emoji/emoji_one/chess_pawn.png | Bin 2309 -> 689 bytes public/images/emoji/emoji_one/chestnut.png | Bin 3577 -> 1315 bytes public/images/emoji/emoji_one/chicken.png | Bin 2421 -> 1317 bytes public/images/emoji/emoji_one/child.png | Bin 2396 -> 1247 bytes .../emoji/emoji_one/children_crossing.png | Bin 2469 -> 940 bytes public/images/emoji/emoji_one/chipmunk.png | Bin 2723 -> 1709 bytes .../images/emoji/emoji_one/chocolate_bar.png | Bin 2308 -> 1116 bytes public/images/emoji/emoji_one/chopsticks.png | Bin 1958 -> 796 bytes .../images/emoji/emoji_one/christmas_tree.png | Bin 2876 -> 2032 bytes public/images/emoji/emoji_one/church.png | Bin 2152 -> 1083 bytes public/images/emoji/emoji_one/cinema.png | Bin 1671 -> 796 bytes public/images/emoji/emoji_one/circus_tent.png | Bin 2469 -> 1319 bytes public/images/emoji/emoji_one/city_dusk.png | Bin 2773 -> 1155 bytes .../images/emoji/emoji_one/city_sunrise.png | Bin 3096 -> 1430 bytes public/images/emoji/emoji_one/city_sunset.png | Bin 2773 -> 1155 bytes public/images/emoji/emoji_one/cityscape.png | Bin 2217 -> 1153 bytes public/images/emoji/emoji_one/cl.png | Bin 1738 -> 751 bytes public/images/emoji/emoji_one/clamp.png | Bin 1968 -> 800 bytes public/images/emoji/emoji_one/clap.png | Bin 2783 -> 927 bytes public/images/emoji/emoji_one/clapper.png | Bin 1924 -> 931 bytes .../emoji/emoji_one/classical_building.png | Bin 2381 -> 806 bytes .../emoji/emoji_one/clinking_glasses.png | Bin 2446 -> 1137 bytes public/images/emoji/emoji_one/clipboard.png | Bin 1590 -> 628 bytes public/images/emoji/emoji_one/clock.png | Bin 2483 -> 942 bytes public/images/emoji/emoji_one/clock1.png | Bin 2138 -> 998 bytes public/images/emoji/emoji_one/clock10.png | Bin 2154 -> 1035 bytes public/images/emoji/emoji_one/clock1030.png | Bin 2155 -> 991 bytes public/images/emoji/emoji_one/clock11.png | Bin 2137 -> 974 bytes public/images/emoji/emoji_one/clock1130.png | Bin 2163 -> 976 bytes public/images/emoji/emoji_one/clock12.png | Bin 2064 -> 953 bytes public/images/emoji/emoji_one/clock1230.png | Bin 2158 -> 1018 bytes public/images/emoji/emoji_one/clock130.png | Bin 2142 -> 1037 bytes public/images/emoji/emoji_one/clock2.png | Bin 2143 -> 1009 bytes public/images/emoji/emoji_one/clock230.png | Bin 2131 -> 1000 bytes public/images/emoji/emoji_one/clock3.png | Bin 2079 -> 1017 bytes public/images/emoji/emoji_one/clock330.png | Bin 2121 -> 959 bytes public/images/emoji/emoji_one/clock4.png | Bin 2135 -> 1041 bytes public/images/emoji/emoji_one/clock430.png | Bin 2131 -> 990 bytes public/images/emoji/emoji_one/clock5.png | Bin 2280 -> 1028 bytes public/images/emoji/emoji_one/clock530.png | Bin 2109 -> 966 bytes public/images/emoji/emoji_one/clock6.png | Bin 2143 -> 1041 bytes public/images/emoji/emoji_one/clock630.png | Bin 2100 -> 972 bytes public/images/emoji/emoji_one/clock7.png | Bin 2160 -> 1051 bytes public/images/emoji/emoji_one/clock730.png | Bin 2148 -> 1004 bytes public/images/emoji/emoji_one/clock8.png | Bin 2147 -> 998 bytes public/images/emoji/emoji_one/clock830.png | Bin 2126 -> 1015 bytes public/images/emoji/emoji_one/clock9.png | Bin 2083 -> 1041 bytes public/images/emoji/emoji_one/clock930.png | Bin 2133 -> 1000 bytes public/images/emoji/emoji_one/closed_book.png | Bin 1251 -> 747 bytes .../emoji/emoji_one/closed_lock_with_key.png | Bin 2033 -> 1027 bytes .../emoji/emoji_one/closed_umbrella.png | Bin 1895 -> 751 bytes public/images/emoji/emoji_one/cloud.png | Bin 1986 -> 634 bytes .../emoji/emoji_one/cloud_lightning.png | Bin 2165 -> 865 bytes public/images/emoji/emoji_one/cloud_rain.png | Bin 2327 -> 1029 bytes public/images/emoji/emoji_one/cloud_snow.png | Bin 2367 -> 1023 bytes .../images/emoji/emoji_one/cloud_tornado.png | Bin 3211 -> 1363 bytes .../emoji/emoji_one/cloud_with_lightning.png | Bin 2165 -> 865 bytes .../cloud_with_lightning_and_rain.png | Bin 2567 -> 1332 bytes .../emoji/emoji_one/cloud_with_rain.png | Bin 2327 -> 1029 bytes .../emoji/emoji_one/cloud_with_snow.png | Bin 2367 -> 1023 bytes .../emoji/emoji_one/cloud_with_tornado.png | Bin 3211 -> 1363 bytes public/images/emoji/emoji_one/clown_face.png | Bin 3038 -> 1861 bytes public/images/emoji/emoji_one/clubs.png | Bin 1727 -> 648 bytes public/images/emoji/emoji_one/coat.png | Bin 2565 -> 1078 bytes public/images/emoji/emoji_one/cocktail.png | Bin 2248 -> 1056 bytes public/images/emoji/emoji_one/coconut.png | Bin 3619 -> 1678 bytes public/images/emoji/emoji_one/coffee.png | Bin 2608 -> 1198 bytes public/images/emoji/emoji_one/coffin.png | Bin 2543 -> 1415 bytes public/images/emoji/emoji_one/cold_face.png | Bin 2671 -> 1625 bytes public/images/emoji/emoji_one/cold_sweat.png | Bin 2154 -> 1124 bytes public/images/emoji/emoji_one/comet.png | Bin 2941 -> 1574 bytes public/images/emoji/emoji_one/compass.png | Bin 3494 -> 2044 bytes public/images/emoji/emoji_one/compression.png | Bin 1968 -> 800 bytes public/images/emoji/emoji_one/computer.png | Bin 1421 -> 661 bytes .../images/emoji/emoji_one/computer_mouse.png | Bin 2518 -> 809 bytes .../images/emoji/emoji_one/confetti_ball.png | Bin 3142 -> 2711 bytes public/images/emoji/emoji_one/confounded.png | Bin 2046 -> 996 bytes public/images/emoji/emoji_one/confused.png | Bin 1866 -> 931 bytes .../emoji/emoji_one/congratulations.png | Bin 2199 -> 1076 bytes .../images/emoji/emoji_one/construction.png | Bin 2311 -> 1054 bytes .../emoji/emoji_one/construction_site.png | Bin 2166 -> 1201 bytes .../emoji/emoji_one/construction_worker.png | Bin 2368 -> 1306 bytes .../emoji_one/construction_worker_man.png | Bin 2368 -> 1306 bytes .../emoji_one/construction_worker_woman.png | Bin 2408 -> 1369 bytes .../images/emoji/emoji_one/control_knobs.png | Bin 2855 -> 1200 bytes .../emoji/emoji_one/convenience_store.png | Bin 1519 -> 741 bytes public/images/emoji/emoji_one/cookie.png | Bin 3647 -> 1267 bytes public/images/emoji/emoji_one/cool.png | Bin 1766 -> 662 bytes public/images/emoji/emoji_one/cop.png | Bin 2473 -> 1369 bytes public/images/emoji/emoji_one/copyright.png | Bin 2322 -> 946 bytes public/images/emoji/emoji_one/corn.png | Bin 3481 -> 1606 bytes public/images/emoji/emoji_one/couch.png | Bin 2182 -> 1243 bytes .../images/emoji/emoji_one/couch_and_lamp.png | Bin 2182 -> 1243 bytes public/images/emoji/emoji_one/couple.png | Bin 2736 -> 1804 bytes .../emoji/emoji_one/couple_with_heart.png | Bin 2503 -> 1404 bytes .../emoji_one/couple_with_heart_man_man.png | Bin 2495 -> 1558 bytes .../emoji_one/couple_with_heart_woman_man.png | Bin 2503 -> 1404 bytes .../couple_with_heart_woman_woman.png | Bin 2712 -> 1561 bytes public/images/emoji/emoji_one/couplekiss.png | Bin 2455 -> 1209 bytes .../emoji/emoji_one/couplekiss_man_man.png | Bin 2464 -> 1385 bytes .../emoji/emoji_one/couplekiss_man_woman.png | Bin 2455 -> 1209 bytes .../emoji_one/couplekiss_woman_woman.png | Bin 2678 -> 1384 bytes public/images/emoji/emoji_one/cow.png | Bin 2573 -> 1244 bytes public/images/emoji/emoji_one/cow2.png | Bin 2317 -> 1241 bytes .../emoji/emoji_one/cowboy_hat_face.png | Bin 2268 -> 1257 bytes public/images/emoji/emoji_one/crab.png | Bin 3493 -> 1821 bytes public/images/emoji/emoji_one/crayon.png | Bin 1849 -> 910 bytes public/images/emoji/emoji_one/crazy_face.png | Bin 2479 -> 1506 bytes public/images/emoji/emoji_one/credit_card.png | Bin 2036 -> 713 bytes .../images/emoji/emoji_one/crescent_moon.png | Bin 2419 -> 780 bytes public/images/emoji/emoji_one/cricket.png | Bin 2418 -> 1230 bytes .../emoji/emoji_one/cricket_bat_and_ball.png | Bin 1595 -> 711 bytes .../emoji/emoji_one/cricket_bat_ball.png | Bin 1595 -> 711 bytes public/images/emoji/emoji_one/crocodile.png | Bin 2712 -> 1254 bytes public/images/emoji/emoji_one/croissant.png | Bin 2967 -> 1226 bytes public/images/emoji/emoji_one/cross.png | Bin 1112 -> 780 bytes .../emoji/emoji_one/crossed_fingers.png | Bin 2552 -> 786 bytes .../images/emoji/emoji_one/crossed_flags.png | Bin 2266 -> 1072 bytes .../images/emoji/emoji_one/crossed_swords.png | Bin 2779 -> 1254 bytes public/images/emoji/emoji_one/crown.png | Bin 2854 -> 1250 bytes public/images/emoji/emoji_one/cruise_ship.png | Bin 2153 -> 1099 bytes public/images/emoji/emoji_one/cry.png | Bin 2364 -> 1324 bytes .../emoji/emoji_one/crying_cat_face.png | Bin 2620 -> 1372 bytes .../images/emoji/emoji_one/crystal_ball.png | Bin 2954 -> 1420 bytes public/images/emoji/emoji_one/cucumber.png | Bin 2968 -> 940 bytes .../images/emoji/emoji_one/cup_with_straw.png | Bin 1980 -> 940 bytes public/images/emoji/emoji_one/cupcake.png | Bin 3295 -> 1404 bytes public/images/emoji/emoji_one/cupid.png | Bin 1920 -> 1078 bytes .../images/emoji/emoji_one/curling_stone.png | Bin 2577 -> 1102 bytes public/images/emoji/emoji_one/curly_loop.png | Bin 1944 -> 684 bytes .../emoji/emoji_one/currency_exchange.png | Bin 2570 -> 937 bytes public/images/emoji/emoji_one/curry.png | Bin 2620 -> 1348 bytes public/images/emoji/emoji_one/custard.png | Bin 2335 -> 1212 bytes public/images/emoji/emoji_one/customs.png | Bin 1667 -> 775 bytes public/images/emoji/emoji_one/cut_of_meat.png | Bin 2649 -> 1494 bytes public/images/emoji/emoji_one/cyclone.png | Bin 2269 -> 1250 bytes public/images/emoji/emoji_one/dagger.png | Bin 1886 -> 960 bytes .../images/emoji/emoji_one/dagger_knife.png | Bin 1886 -> 960 bytes public/images/emoji/emoji_one/dancer.png | Bin 2475 -> 1498 bytes public/images/emoji/emoji_one/dancers.png | Bin 2611 -> 1513 bytes public/images/emoji/emoji_one/dancing_men.png | Bin 2538 -> 1379 bytes .../images/emoji/emoji_one/dancing_women.png | Bin 2611 -> 1513 bytes public/images/emoji/emoji_one/dango.png | Bin 2385 -> 868 bytes .../emoji/emoji_one/dark_sunglasses.png | Bin 1456 -> 507 bytes public/images/emoji/emoji_one/dart.png | Bin 2349 -> 1632 bytes public/images/emoji/emoji_one/dash.png | Bin 2890 -> 967 bytes public/images/emoji/emoji_one/date.png | Bin 1891 -> 765 bytes public/images/emoji/emoji_one/deaf_man.png | Bin 2394 -> 1338 bytes public/images/emoji/emoji_one/deaf_woman.png | Bin 2533 -> 1429 bytes .../images/emoji/emoji_one/deciduous_tree.png | Bin 2250 -> 1063 bytes public/images/emoji/emoji_one/deer.png | Bin 2537 -> 1078 bytes .../emoji/emoji_one/department_store.png | Bin 1544 -> 744 bytes .../images/emoji/emoji_one/derelict_house.png | Bin 2681 -> 1372 bytes .../emoji_one/derelict_house_building.png | Bin 2681 -> 1372 bytes public/images/emoji/emoji_one/desert.png | Bin 2371 -> 1173 bytes .../images/emoji/emoji_one/desert_island.png | Bin 2521 -> 1624 bytes public/images/emoji/emoji_one/desktop.png | Bin 1374 -> 619 bytes .../emoji/emoji_one/desktop_computer.png | Bin 1374 -> 619 bytes .../diamond_shape_with_a_dot_inside.png | Bin 2410 -> 869 bytes public/images/emoji/emoji_one/diamonds.png | Bin 1853 -> 678 bytes .../images/emoji/emoji_one/disappointed.png | Bin 1843 -> 856 bytes .../emoji/emoji_one/disappointed_relieved.png | Bin 2165 -> 1182 bytes public/images/emoji/emoji_one/dividers.png | Bin 690 -> 469 bytes public/images/emoji/emoji_one/diving_mask.png | Bin 2924 -> 1881 bytes public/images/emoji/emoji_one/diya_lamp.png | Bin 2467 -> 1455 bytes public/images/emoji/emoji_one/dizzy.png | Bin 2400 -> 1257 bytes public/images/emoji/emoji_one/dizzy_face.png | Bin 2372 -> 1280 bytes public/images/emoji/emoji_one/dna.png | Bin 1952 -> 963 bytes .../images/emoji/emoji_one/do_not_litter.png | Bin 3048 -> 1488 bytes public/images/emoji/emoji_one/dog.png | Bin 2619 -> 1532 bytes public/images/emoji/emoji_one/dog2.png | Bin 2325 -> 1038 bytes public/images/emoji/emoji_one/dollar.png | Bin 2129 -> 920 bytes public/images/emoji/emoji_one/dolls.png | Bin 3092 -> 2653 bytes public/images/emoji/emoji_one/dolphin.png | Bin 2737 -> 1206 bytes public/images/emoji/emoji_one/door.png | Bin 1321 -> 548 bytes .../emoji/emoji_one/double_vertical_bar.png | Bin 919 -> 599 bytes public/images/emoji/emoji_one/doughnut.png | Bin 3276 -> 1787 bytes public/images/emoji/emoji_one/dove.png | Bin 2591 -> 1249 bytes .../images/emoji/emoji_one/dove_of_peace.png | Bin 2591 -> 1249 bytes public/images/emoji/emoji_one/dragon.png | Bin 3019 -> 2139 bytes public/images/emoji/emoji_one/dragon_face.png | Bin 2928 -> 1965 bytes public/images/emoji/emoji_one/dress.png | Bin 2373 -> 938 bytes .../emoji/emoji_one/dromedary_camel.png | Bin 2337 -> 933 bytes .../images/emoji/emoji_one/drooling_face.png | Bin 2072 -> 1089 bytes .../images/emoji/emoji_one/drop_of_blood.png | Bin 2176 -> 738 bytes public/images/emoji/emoji_one/droplet.png | Bin 2381 -> 783 bytes public/images/emoji/emoji_one/drum.png | Bin 2676 -> 1649 bytes public/images/emoji/emoji_one/duck.png | Bin 2211 -> 1340 bytes public/images/emoji/emoji_one/dumpling.png | Bin 3366 -> 965 bytes public/images/emoji/emoji_one/dvd.png | Bin 2983 -> 1318 bytes public/images/emoji/emoji_one/e-mail.png | Bin 1530 -> 569 bytes public/images/emoji/emoji_one/eagle.png | Bin 2673 -> 1560 bytes public/images/emoji/emoji_one/ear.png | Bin 2548 -> 865 bytes public/images/emoji/emoji_one/ear_of_rice.png | Bin 2890 -> 1758 bytes .../images/emoji/emoji_one/earth_africa.png | Bin 3305 -> 1542 bytes .../images/emoji/emoji_one/earth_americas.png | Bin 3361 -> 1447 bytes public/images/emoji/emoji_one/earth_asia.png | Bin 3411 -> 1544 bytes public/images/emoji/emoji_one/egg.png | Bin 2886 -> 795 bytes public/images/emoji/emoji_one/eggplant.png | Bin 2797 -> 961 bytes public/images/emoji/emoji_one/eight.png | Bin 1576 -> 799 bytes .../emoji_one/eight_pointed_black_star.png | Bin 1687 -> 881 bytes .../emoji/emoji_one/eight_spoked_asterisk.png | Bin 1571 -> 785 bytes .../images/emoji/emoji_one/electric_plug.png | Bin 1462 -> 558 bytes public/images/emoji/emoji_one/elephant.png | Bin 2375 -> 1054 bytes public/images/emoji/emoji_one/elf.png | Bin 2425 -> 1277 bytes public/images/emoji/emoji_one/email.png | Bin 1530 -> 569 bytes public/images/emoji/emoji_one/end.png | Bin 1420 -> 603 bytes public/images/emoji/emoji_one/envelope.png | Bin 1530 -> 569 bytes .../emoji/emoji_one/envelope_with_arrow.png | Bin 1725 -> 765 bytes public/images/emoji/emoji_one/euro.png | Bin 1965 -> 958 bytes .../emoji/emoji_one/european_castle.png | Bin 2661 -> 1502 bytes .../emoji/emoji_one/european_post_office.png | Bin 1944 -> 787 bytes .../images/emoji/emoji_one/evergreen_tree.png | Bin 3009 -> 1415 bytes public/images/emoji/emoji_one/exclamation.png | Bin 753 -> 326 bytes .../images/emoji/emoji_one/exploding_head.png | Bin 2961 -> 1611 bytes .../images/emoji/emoji_one/expressionless.png | Bin 1486 -> 798 bytes public/images/emoji/emoji_one/eye.png | Bin 2617 -> 1107 bytes public/images/emoji/emoji_one/eyeglasses.png | Bin 1740 -> 577 bytes public/images/emoji/emoji_one/eyes.png | Bin 1833 -> 562 bytes .../images/emoji/emoji_one/face_vomiting.png | Bin 2523 -> 1428 bytes .../emoji_one/face_with_hand_over_mouth.png | Bin 2715 -> 1355 bytes .../emoji_one/face_with_head_bandage.png | Bin 2358 -> 1252 bytes .../emoji/emoji_one/face_with_monocle.png | Bin 2323 -> 1413 bytes .../emoji_one/face_with_raised_eyebrow.png | Bin 1942 -> 932 bytes .../emoji_one/face_with_rolling_eyes.png | Bin 2056 -> 1023 bytes .../face_with_symbols_over_mouth.png | Bin 2514 -> 1429 bytes .../emoji/emoji_one/face_with_thermometer.png | Bin 2146 -> 1206 bytes public/images/emoji/emoji_one/facepunch.png | Bin 2461 -> 702 bytes public/images/emoji/emoji_one/factory.png | Bin 2233 -> 1183 bytes public/images/emoji/emoji_one/fairy.png | Bin 2722 -> 1836 bytes public/images/emoji/emoji_one/falafel.png | Bin 3032 -> 1450 bytes public/images/emoji/emoji_one/fallen_leaf.png | Bin 3038 -> 1266 bytes public/images/emoji/emoji_one/family.png | Bin 3362 -> 2670 bytes .../images/emoji/emoji_one/family_man_boy.png | Bin 2250 -> 1279 bytes .../emoji/emoji_one/family_man_boy_boy.png | Bin 2440 -> 1595 bytes .../emoji/emoji_one/family_man_girl.png | Bin 2294 -> 1366 bytes .../emoji/emoji_one/family_man_girl_boy.png | Bin 2525 -> 1830 bytes .../emoji/emoji_one/family_man_girl_girl.png | Bin 2574 -> 1763 bytes .../emoji/emoji_one/family_man_man_boy.png | Bin 2748 -> 1770 bytes .../emoji_one/family_man_man_boy_boy.png | Bin 3041 -> 2107 bytes .../emoji/emoji_one/family_man_man_girl.png | Bin 2817 -> 1867 bytes .../emoji_one/family_man_man_girl_boy.png | Bin 3132 -> 2356 bytes .../emoji_one/family_man_man_girl_girl.png | Bin 3128 -> 2243 bytes .../emoji/emoji_one/family_man_woman_boy.png | Bin 2911 -> 1958 bytes .../emoji_one/family_man_woman_boy_boy.png | Bin 3249 -> 2589 bytes .../emoji/emoji_one/family_man_woman_boys.png | Bin 3249 -> 2589 bytes .../emoji/emoji_one/family_man_woman_girl.png | Bin 3031 -> 2245 bytes .../emoji_one/family_man_woman_girl_boy.png | Bin 3362 -> 2670 bytes .../emoji_one/family_man_woman_girl_girl.png | Bin 3392 -> 2727 bytes .../emoji_one/family_man_woman_girls.png | Bin 3392 -> 2727 bytes .../images/emoji/emoji_one/family_men_boy.png | Bin 2748 -> 1770 bytes .../emoji/emoji_one/family_men_boys.png | Bin 3041 -> 2107 bytes .../emoji/emoji_one/family_men_girl.png | Bin 2817 -> 1867 bytes .../emoji/emoji_one/family_men_girl_boy.png | Bin 3132 -> 2356 bytes .../emoji/emoji_one/family_men_girls.png | Bin 3128 -> 2243 bytes .../emoji/emoji_one/family_woman_boy.png | Bin 2370 -> 1382 bytes .../emoji/emoji_one/family_woman_boy_boy.png | Bin 2580 -> 1642 bytes .../emoji/emoji_one/family_woman_girl.png | Bin 2428 -> 1495 bytes .../emoji/emoji_one/family_woman_girl_boy.png | Bin 2701 -> 1816 bytes .../emoji_one/family_woman_girl_girl.png | Bin 2725 -> 1781 bytes .../emoji_one/family_woman_woman_boy.png | Bin 3102 -> 1997 bytes .../emoji_one/family_woman_woman_boy_boy.png | Bin 3355 -> 2585 bytes .../emoji_one/family_woman_woman_girl.png | Bin 3102 -> 2018 bytes .../emoji_one/family_woman_woman_girl_boy.png | Bin 3486 -> 2732 bytes .../family_woman_woman_girl_girl.png | Bin 3607 -> 2677 bytes .../emoji/emoji_one/family_women_boy.png | Bin 3102 -> 1997 bytes .../emoji/emoji_one/family_women_boys.png | Bin 3355 -> 2585 bytes .../emoji/emoji_one/family_women_girl.png | Bin 3102 -> 2018 bytes .../emoji/emoji_one/family_women_girl_boy.png | Bin 3486 -> 2732 bytes .../emoji/emoji_one/family_women_girls.png | Bin 3607 -> 2677 bytes .../images/emoji/emoji_one/fast_forward.png | Bin 1506 -> 783 bytes public/images/emoji/emoji_one/fax.png | Bin 2339 -> 989 bytes public/images/emoji/emoji_one/fearful.png | Bin 2151 -> 1124 bytes public/images/emoji/emoji_one/feet.png | Bin 2043 -> 816 bytes .../emoji_one/female_couple_with_heart.png | Bin 2712 -> 1561 bytes .../emoji/emoji_one/female_couplekiss.png | Bin 2678 -> 1384 bytes .../emoji/emoji_one/female_detective.png | Bin 2839 -> 1586 bytes .../images/emoji/emoji_one/ferris_wheel.png | Bin 2993 -> 2943 bytes public/images/emoji/emoji_one/ferry.png | Bin 1802 -> 880 bytes .../images/emoji/emoji_one/field_hockey.png | Bin 2020 -> 965 bytes .../images/emoji/emoji_one/file_cabinet.png | Bin 824 -> 357 bytes public/images/emoji/emoji_one/file_folder.png | Bin 690 -> 478 bytes public/images/emoji/emoji_one/film_frames.png | Bin 1729 -> 581 bytes .../images/emoji/emoji_one/film_projector.png | Bin 2645 -> 1266 bytes public/images/emoji/emoji_one/film_strip.png | Bin 1729 -> 581 bytes public/images/emoji/emoji_one/fire.png | Bin 2773 -> 1352 bytes public/images/emoji/emoji_one/fire_engine.png | Bin 2393 -> 1542 bytes .../emoji/emoji_one/fire_extinguisher.png | Bin 1891 -> 856 bytes public/images/emoji/emoji_one/firecracker.png | Bin 2239 -> 1218 bytes public/images/emoji/emoji_one/fireworks.png | Bin 3163 -> 1746 bytes .../emoji/emoji_one/first_quarter_moon.png | Bin 3350 -> 1284 bytes .../first_quarter_moon_with_face.png | Bin 2406 -> 859 bytes public/images/emoji/emoji_one/fish.png | Bin 2294 -> 1144 bytes public/images/emoji/emoji_one/fish_cake.png | Bin 2421 -> 1056 bytes .../emoji/emoji_one/fishing_pole_and_fish.png | Bin 2335 -> 1648 bytes public/images/emoji/emoji_one/fist.png | Bin 2732 -> 741 bytes public/images/emoji/emoji_one/fist_left.png | Bin 2207 -> 597 bytes public/images/emoji/emoji_one/fist_right.png | Bin 2220 -> 606 bytes public/images/emoji/emoji_one/five.png | Bin 1429 -> 720 bytes public/images/emoji/emoji_one/flag_black.png | Bin 836 -> 351 bytes public/images/emoji/emoji_one/flag_white.png | Bin 836 -> 353 bytes public/images/emoji/emoji_one/flags.png | Bin 2625 -> 2242 bytes public/images/emoji/emoji_one/flame.png | Bin 2773 -> 1352 bytes public/images/emoji/emoji_one/flamingo.png | Bin 2178 -> 1116 bytes public/images/emoji/emoji_one/flashlight.png | Bin 2288 -> 966 bytes public/images/emoji/emoji_one/flat_shoe.png | Bin 2162 -> 1009 bytes .../images/emoji/emoji_one/fleur-de-lis.png | Bin 2950 -> 1330 bytes .../images/emoji/emoji_one/fleur_de_lis.png | Bin 2950 -> 1330 bytes .../images/emoji/emoji_one/flight_arrival.png | Bin 1833 -> 814 bytes .../emoji/emoji_one/flight_departure.png | Bin 1915 -> 917 bytes public/images/emoji/emoji_one/floppy_disk.png | Bin 1341 -> 584 bytes .../emoji/emoji_one/flower_playing_cards.png | Bin 2242 -> 790 bytes public/images/emoji/emoji_one/flushed.png | Bin 2431 -> 1259 bytes public/images/emoji/emoji_one/flying_disc.png | Bin 2789 -> 1027 bytes .../images/emoji/emoji_one/flying_saucer.png | Bin 2679 -> 1589 bytes public/images/emoji/emoji_one/fog.png | Bin 1328 -> 388 bytes public/images/emoji/emoji_one/foggy.png | Bin 2297 -> 888 bytes public/images/emoji/emoji_one/foot.png | Bin 1788 -> 590 bytes public/images/emoji/emoji_one/football.png | Bin 3198 -> 1294 bytes public/images/emoji/emoji_one/footprints.png | Bin 2043 -> 816 bytes .../images/emoji/emoji_one/fork_and_knife.png | Bin 1704 -> 620 bytes .../emoji_one/fork_and_knife_with_plate.png | Bin 2513 -> 997 bytes .../emoji/emoji_one/fork_knife_plate.png | Bin 2513 -> 997 bytes .../images/emoji/emoji_one/fortune_cookie.png | Bin 2649 -> 1304 bytes public/images/emoji/emoji_one/fountain.png | Bin 2442 -> 1491 bytes .../images/emoji/emoji_one/fountain_pen.png | Bin 2033 -> 747 bytes public/images/emoji/emoji_one/four.png | Bin 1248 -> 694 bytes .../emoji/emoji_one/four_leaf_clover.png | Bin 2883 -> 1053 bytes public/images/emoji/emoji_one/fox_face.png | Bin 2621 -> 1493 bytes public/images/emoji/emoji_one/frame_photo.png | Bin 2372 -> 846 bytes .../emoji/emoji_one/frame_with_picture.png | Bin 2372 -> 846 bytes .../images/emoji/emoji_one/framed_picture.png | Bin 2372 -> 846 bytes public/images/emoji/emoji_one/free.png | Bin 1575 -> 689 bytes public/images/emoji/emoji_one/fried_egg.png | Bin 3113 -> 1188 bytes .../images/emoji/emoji_one/fried_shrimp.png | Bin 3495 -> 1394 bytes public/images/emoji/emoji_one/fries.png | Bin 3414 -> 1772 bytes public/images/emoji/emoji_one/frog.png | Bin 2928 -> 1389 bytes public/images/emoji/emoji_one/frowning.png | Bin 1890 -> 901 bytes public/images/emoji/emoji_one/frowning2.png | Bin 1937 -> 872 bytes .../images/emoji/emoji_one/frowning_face.png | Bin 1937 -> 872 bytes .../images/emoji/emoji_one/frowning_man.png | Bin 2098 -> 1023 bytes .../images/emoji/emoji_one/frowning_woman.png | Bin 2288 -> 1109 bytes public/images/emoji/emoji_one/fu.png | Bin 2067 -> 533 bytes public/images/emoji/emoji_one/fuelpump.png | Bin 2439 -> 1240 bytes public/images/emoji/emoji_one/full_moon.png | Bin 3588 -> 1084 bytes .../emoji/emoji_one/full_moon_with_face.png | Bin 3618 -> 1578 bytes public/images/emoji/emoji_one/funeral_urn.png | Bin 1886 -> 738 bytes public/images/emoji/emoji_one/game_die.png | Bin 2457 -> 1073 bytes public/images/emoji/emoji_one/garlic.png | Bin 3353 -> 1127 bytes public/images/emoji/emoji_one/gear.png | Bin 2585 -> 1194 bytes public/images/emoji/emoji_one/gem.png | Bin 2165 -> 945 bytes public/images/emoji/emoji_one/gemini.png | Bin 1724 -> 772 bytes public/images/emoji/emoji_one/genie.png | Bin 2419 -> 1678 bytes public/images/emoji/emoji_one/ghost.png | Bin 3002 -> 1321 bytes public/images/emoji/emoji_one/gift.png | Bin 2543 -> 1238 bytes public/images/emoji/emoji_one/gift_heart.png | Bin 2323 -> 989 bytes public/images/emoji/emoji_one/giraffe.png | Bin 2710 -> 1264 bytes public/images/emoji/emoji_one/girl.png | Bin 2684 -> 1414 bytes .../emoji/emoji_one/globe_with_meridians.png | Bin 3332 -> 1293 bytes public/images/emoji/emoji_one/gloves.png | Bin 2248 -> 862 bytes public/images/emoji/emoji_one/goal_net.png | Bin 1350 -> 660 bytes public/images/emoji/emoji_one/goat.png | Bin 2444 -> 1022 bytes public/images/emoji/emoji_one/goggles.png | Bin 2077 -> 653 bytes public/images/emoji/emoji_one/golf.png | Bin 1633 -> 858 bytes public/images/emoji/emoji_one/golfer.png | Bin 2159 -> 1190 bytes public/images/emoji/emoji_one/golfing_man.png | Bin 2159 -> 1190 bytes .../images/emoji/emoji_one/golfing_woman.png | Bin 2140 -> 1202 bytes public/images/emoji/emoji_one/gorilla.png | Bin 2901 -> 1075 bytes public/images/emoji/emoji_one/grandma.png | Bin 2280 -> 1185 bytes public/images/emoji/emoji_one/grapes.png | Bin 3506 -> 1259 bytes public/images/emoji/emoji_one/green_apple.png | Bin 3108 -> 953 bytes public/images/emoji/emoji_one/green_book.png | Bin 1266 -> 458 bytes .../images/emoji/emoji_one/green_circle.png | Bin 1254 -> 727 bytes public/images/emoji/emoji_one/green_heart.png | Bin 1244 -> 581 bytes public/images/emoji/emoji_one/green_salad.png | Bin 2706 -> 1629 bytes .../emoji/emoji_one/grey_exclamation.png | Bin 745 -> 363 bytes .../images/emoji/emoji_one/grey_question.png | Bin 1426 -> 570 bytes public/images/emoji/emoji_one/grimacing.png | Bin 2097 -> 1085 bytes public/images/emoji/emoji_one/grin.png | Bin 2179 -> 1180 bytes public/images/emoji/emoji_one/grinning.png | Bin 2083 -> 1095 bytes public/images/emoji/emoji_one/guardsman.png | Bin 1972 -> 960 bytes public/images/emoji/emoji_one/guardswoman.png | Bin 1894 -> 919 bytes public/images/emoji/emoji_one/guide_dog.png | Bin 2508 -> 1508 bytes public/images/emoji/emoji_one/guitar.png | Bin 2371 -> 1245 bytes public/images/emoji/emoji_one/gun.png | Bin 2128 -> 637 bytes public/images/emoji/emoji_one/haircut.png | Bin 2631 -> 1575 bytes public/images/emoji/emoji_one/haircut_man.png | Bin 2554 -> 1557 bytes .../images/emoji/emoji_one/haircut_woman.png | Bin 2631 -> 1575 bytes public/images/emoji/emoji_one/hamburger.png | Bin 3464 -> 1820 bytes public/images/emoji/emoji_one/hammer.png | Bin 1773 -> 801 bytes .../emoji/emoji_one/hammer_and_pick.png | Bin 2318 -> 1295 bytes .../emoji/emoji_one/hammer_and_wrench.png | Bin 2465 -> 1383 bytes public/images/emoji/emoji_one/hammer_pick.png | Bin 2318 -> 1295 bytes public/images/emoji/emoji_one/hamster.png | Bin 3402 -> 1608 bytes public/images/emoji/emoji_one/hand.png | Bin 2431 -> 629 bytes .../images/emoji/emoji_one/hand_splayed.png | Bin 2770 -> 781 bytes public/images/emoji/emoji_one/handbag.png | Bin 2085 -> 834 bytes public/images/emoji/emoji_one/handshake.png | Bin 2584 -> 755 bytes public/images/emoji/emoji_one/hankey.png | Bin 2802 -> 1195 bytes public/images/emoji/emoji_one/hash.png | Bin 1495 -> 811 bytes .../images/emoji/emoji_one/hatched_chick.png | Bin 2886 -> 1138 bytes .../images/emoji/emoji_one/hatching_chick.png | Bin 2981 -> 1323 bytes .../images/emoji/emoji_one/head_bandage.png | Bin 2358 -> 1252 bytes public/images/emoji/emoji_one/headphones.png | Bin 3273 -> 1177 bytes .../images/emoji/emoji_one/hear_no_evil.png | Bin 2914 -> 1264 bytes .../emoji/emoji_one/hear_with_hearing_aid.png | Bin 2599 -> 1451 bytes public/images/emoji/emoji_one/heart.png | Bin 1316 -> 663 bytes .../emoji/emoji_one/heart_decoration.png | Bin 1478 -> 800 bytes .../emoji/emoji_one/heart_exclamation.png | Bin 1423 -> 657 bytes public/images/emoji/emoji_one/heart_eyes.png | Bin 2341 -> 1322 bytes .../images/emoji/emoji_one/heart_eyes_cat.png | Bin 2756 -> 1533 bytes public/images/emoji/emoji_one/heartbeat.png | Bin 1895 -> 821 bytes public/images/emoji/emoji_one/heartpulse.png | Bin 2171 -> 990 bytes public/images/emoji/emoji_one/hearts.png | Bin 1365 -> 690 bytes .../emoji/emoji_one/heavy_check_mark.png | Bin 1544 -> 572 bytes .../emoji/emoji_one/heavy_division_sign.png | Bin 1287 -> 492 bytes .../emoji/emoji_one/heavy_dollar_sign.png | Bin 1993 -> 667 bytes .../emoji_one/heavy_heart_exclamation.png | Bin 1423 -> 657 bytes .../heavy_heart_exclamation_mark_ornament.png | Bin 1423 -> 657 bytes .../emoji/emoji_one/heavy_minus_sign.png | Bin 473 -> 302 bytes .../emoji_one/heavy_multiplication_x.png | Bin 1618 -> 600 bytes .../emoji/emoji_one/heavy_plus_sign.png | Bin 900 -> 420 bytes public/images/emoji/emoji_one/hedgehog.png | Bin 3081 -> 1724 bytes public/images/emoji/emoji_one/helicopter.png | Bin 2098 -> 1093 bytes .../emoji/emoji_one/helmet_with_cross.png | Bin 2172 -> 1024 bytes .../emoji_one/helmet_with_white_cross.png | Bin 2172 -> 1024 bytes public/images/emoji/emoji_one/herb.png | Bin 2522 -> 1147 bytes public/images/emoji/emoji_one/hibiscus.png | Bin 2917 -> 1477 bytes .../emoji/emoji_one/high_brightness.png | Bin 2151 -> 868 bytes public/images/emoji/emoji_one/high_heel.png | Bin 2459 -> 1063 bytes public/images/emoji/emoji_one/hiking_boot.png | Bin 2400 -> 990 bytes .../images/emoji/emoji_one/hindu_temple.png | Bin 2222 -> 805 bytes .../images/emoji/emoji_one/hippopotamus.png | Bin 2173 -> 891 bytes public/images/emoji/emoji_one/hocho.png | Bin 1798 -> 696 bytes public/images/emoji/emoji_one/hockey.png | Bin 1904 -> 918 bytes public/images/emoji/emoji_one/hole.png | Bin 1674 -> 661 bytes public/images/emoji/emoji_one/homes.png | Bin 2206 -> 1401 bytes public/images/emoji/emoji_one/honey_pot.png | Bin 2363 -> 979 bytes public/images/emoji/emoji_one/honeybee.png | Bin 2684 -> 1851 bytes public/images/emoji/emoji_one/horse.png | Bin 2472 -> 1099 bytes .../images/emoji/emoji_one/horse_racing.png | Bin 2839 -> 2064 bytes public/images/emoji/emoji_one/hospital.png | Bin 1720 -> 873 bytes public/images/emoji/emoji_one/hot_dog.png | Bin 2643 -> 1299 bytes public/images/emoji/emoji_one/hot_face.png | Bin 2480 -> 1474 bytes public/images/emoji/emoji_one/hot_pepper.png | Bin 2371 -> 911 bytes public/images/emoji/emoji_one/hotdog.png | Bin 2643 -> 1299 bytes public/images/emoji/emoji_one/hotel.png | Bin 2650 -> 1487 bytes public/images/emoji/emoji_one/hotsprings.png | Bin 2629 -> 1167 bytes public/images/emoji/emoji_one/hourglass.png | Bin 2281 -> 1062 bytes .../emoji_one/hourglass_flowing_sand.png | Bin 2369 -> 1156 bytes public/images/emoji/emoji_one/house.png | Bin 1881 -> 877 bytes .../emoji/emoji_one/house_abandoned.png | Bin 2681 -> 1372 bytes .../emoji/emoji_one/house_buildings.png | Bin 2206 -> 1401 bytes .../emoji/emoji_one/house_with_garden.png | Bin 2758 -> 1653 bytes public/images/emoji/emoji_one/houses.png | Bin 2206 -> 1401 bytes public/images/emoji/emoji_one/hugging.png | Bin 3105 -> 1590 bytes .../images/emoji/emoji_one/hugging_face.png | Bin 3105 -> 1590 bytes public/images/emoji/emoji_one/hugs.png | Bin 3105 -> 1590 bytes public/images/emoji/emoji_one/hushed.png | Bin 1976 -> 938 bytes public/images/emoji/emoji_one/ice_cream.png | Bin 2660 -> 1297 bytes public/images/emoji/emoji_one/ice_cube.png | Bin 3887 -> 1078 bytes public/images/emoji/emoji_one/ice_hockey.png | Bin 1904 -> 918 bytes public/images/emoji/emoji_one/ice_skate.png | Bin 2843 -> 1132 bytes public/images/emoji/emoji_one/icecream.png | Bin 2709 -> 865 bytes public/images/emoji/emoji_one/id.png | Bin 1602 -> 850 bytes .../emoji/emoji_one/ideograph_advantage.png | Bin 2142 -> 1022 bytes public/images/emoji/emoji_one/imp.png | Bin 2610 -> 1373 bytes public/images/emoji/emoji_one/inbox_tray.png | Bin 1949 -> 841 bytes .../emoji/emoji_one/incoming_envelope.png | Bin 2504 -> 958 bytes public/images/emoji/emoji_one/infinity.png | Bin 1998 -> 616 bytes .../emoji_one/information_desk_person.png | Bin 2446 -> 1374 bytes .../emoji/emoji_one/information_source.png | Bin 1043 -> 623 bytes public/images/emoji/emoji_one/innocent.png | Bin 2616 -> 1367 bytes public/images/emoji/emoji_one/interrobang.png | Bin 1697 -> 728 bytes public/images/emoji/emoji_one/iphone.png | Bin 2354 -> 1583 bytes public/images/emoji/emoji_one/island.png | Bin 2521 -> 1624 bytes .../emoji/emoji_one/izakaya_lantern.png | Bin 2848 -> 988 bytes .../images/emoji/emoji_one/jack_o_lantern.png | Bin 3478 -> 1394 bytes public/images/emoji/emoji_one/japan.png | Bin 1577 -> 573 bytes .../emoji/emoji_one/japanese_castle.png | Bin 2575 -> 1350 bytes .../emoji/emoji_one/japanese_goblin.png | Bin 3235 -> 1673 bytes .../images/emoji/emoji_one/japanese_ogre.png | Bin 3103 -> 1773 bytes public/images/emoji/emoji_one/jeans.png | Bin 2451 -> 845 bytes public/images/emoji/emoji_one/jigsaw.png | Bin 2908 -> 1800 bytes public/images/emoji/emoji_one/joy.png | Bin 2449 -> 1400 bytes public/images/emoji/emoji_one/joy_cat.png | Bin 2833 -> 1562 bytes public/images/emoji/emoji_one/joystick.png | Bin 2287 -> 924 bytes public/images/emoji/emoji_one/kaaba.png | Bin 1917 -> 887 bytes public/images/emoji/emoji_one/kangaroo.png | Bin 2057 -> 859 bytes public/images/emoji/emoji_one/key.png | Bin 2085 -> 761 bytes public/images/emoji/emoji_one/key2.png | Bin 1860 -> 795 bytes public/images/emoji/emoji_one/keyboard.png | Bin 1763 -> 596 bytes public/images/emoji/emoji_one/keycap_star.png | Bin 1607 -> 771 bytes public/images/emoji/emoji_one/keycap_ten.png | Bin 1905 -> 884 bytes .../images/emoji/emoji_one/kick_scooter.png | Bin 1915 -> 1229 bytes public/images/emoji/emoji_one/kimono.png | Bin 2206 -> 885 bytes public/images/emoji/emoji_one/kiss.png | Bin 2916 -> 1506 bytes public/images/emoji/emoji_one/kissing.png | Bin 1905 -> 990 bytes public/images/emoji/emoji_one/kissing_cat.png | Bin 3051 -> 1309 bytes .../emoji/emoji_one/kissing_closed_eyes.png | Bin 2688 -> 1258 bytes .../images/emoji/emoji_one/kissing_heart.png | Bin 2115 -> 1073 bytes .../emoji/emoji_one/kissing_smiling_eyes.png | Bin 1957 -> 1015 bytes public/images/emoji/emoji_one/kite.png | Bin 2138 -> 1238 bytes public/images/emoji/emoji_one/kiwi_fruit.png | Bin 3751 -> 1534 bytes public/images/emoji/emoji_one/knife.png | Bin 1798 -> 696 bytes public/images/emoji/emoji_one/koala.png | Bin 2274 -> 1066 bytes public/images/emoji/emoji_one/koko.png | Bin 1068 -> 761 bytes public/images/emoji/emoji_one/lab_coat.png | Bin 2541 -> 978 bytes public/images/emoji/emoji_one/label.png | Bin 1745 -> 671 bytes public/images/emoji/emoji_one/lacrosse.png | Bin 2068 -> 1101 bytes .../emoji/emoji_one/large_blue_circle.png | Bin 1246 -> 750 bytes .../emoji/emoji_one/large_blue_diamond.png | Bin 1554 -> 622 bytes .../emoji/emoji_one/large_orange_diamond.png | Bin 889 -> 455 bytes .../emoji/emoji_one/last_quarter_moon.png | Bin 3436 -> 1312 bytes .../emoji_one/last_quarter_moon_with_face.png | Bin 2431 -> 861 bytes public/images/emoji/emoji_one/latin_cross.png | Bin 1112 -> 780 bytes public/images/emoji/emoji_one/laughing.png | Bin 2176 -> 1147 bytes public/images/emoji/emoji_one/leafy_green.png | Bin 2880 -> 1198 bytes public/images/emoji/emoji_one/leaves.png | Bin 3067 -> 1205 bytes public/images/emoji/emoji_one/ledger.png | Bin 1885 -> 935 bytes .../images/emoji/emoji_one/left_luggage.png | Bin 1698 -> 716 bytes .../emoji/emoji_one/left_right_arrow.png | Bin 1416 -> 726 bytes .../emoji/emoji_one/left_speech_bubble.png | Bin 1794 -> 756 bytes .../emoji_one/leftwards_arrow_with_hook.png | Bin 1675 -> 825 bytes public/images/emoji/emoji_one/leg.png | Bin 1473 -> 525 bytes public/images/emoji/emoji_one/lemon.png | Bin 3131 -> 997 bytes public/images/emoji/emoji_one/leo.png | Bin 1994 -> 942 bytes public/images/emoji/emoji_one/leopard.png | Bin 2363 -> 1210 bytes .../images/emoji/emoji_one/level_slider.png | Bin 2097 -> 731 bytes public/images/emoji/emoji_one/levitate.png | Bin 1884 -> 786 bytes public/images/emoji/emoji_one/libra.png | Bin 1821 -> 817 bytes public/images/emoji/emoji_one/lifter.png | Bin 2466 -> 1510 bytes public/images/emoji/emoji_one/light_rail.png | Bin 2004 -> 979 bytes public/images/emoji/emoji_one/link.png | Bin 2013 -> 878 bytes .../emoji/emoji_one/linked_paperclips.png | Bin 3115 -> 1397 bytes public/images/emoji/emoji_one/lion.png | Bin 3083 -> 1751 bytes public/images/emoji/emoji_one/lion_face.png | Bin 3083 -> 1751 bytes public/images/emoji/emoji_one/lips.png | Bin 2013 -> 788 bytes public/images/emoji/emoji_one/lipstick.png | Bin 1677 -> 787 bytes public/images/emoji/emoji_one/lizard.png | Bin 2689 -> 1144 bytes public/images/emoji/emoji_one/llama.png | Bin 2042 -> 897 bytes public/images/emoji/emoji_one/lobster.png | Bin 2833 -> 1184 bytes public/images/emoji/emoji_one/lock.png | Bin 1548 -> 606 bytes .../emoji/emoji_one/lock_with_ink_pen.png | Bin 2101 -> 1051 bytes public/images/emoji/emoji_one/lollipop.png | Bin 2325 -> 2074 bytes public/images/emoji/emoji_one/loop.png | Bin 2462 -> 873 bytes .../images/emoji/emoji_one/lotion_bottle.png | Bin 2104 -> 770 bytes public/images/emoji/emoji_one/loud_sound.png | Bin 2716 -> 1180 bytes public/images/emoji/emoji_one/loudspeaker.png | Bin 2872 -> 1448 bytes public/images/emoji/emoji_one/love_hotel.png | Bin 2053 -> 893 bytes public/images/emoji/emoji_one/love_letter.png | Bin 1527 -> 723 bytes .../emoji/emoji_one/love_you_gesture.png | Bin 2700 -> 775 bytes .../images/emoji/emoji_one/low_brightness.png | Bin 2012 -> 872 bytes .../emoji_one/lower_left_ballpoint_pen.png | Bin 2020 -> 747 bytes .../emoji/emoji_one/lower_left_crayon.png | Bin 1849 -> 910 bytes .../emoji_one/lower_left_fountain_pen.png | Bin 2033 -> 747 bytes .../emoji/emoji_one/lower_left_paintbrush.png | Bin 1818 -> 782 bytes public/images/emoji/emoji_one/luggage.png | Bin 2689 -> 1530 bytes public/images/emoji/emoji_one/lying_face.png | Bin 2236 -> 1079 bytes public/images/emoji/emoji_one/m.png | Bin 2060 -> 930 bytes public/images/emoji/emoji_one/mag.png | Bin 3039 -> 1016 bytes public/images/emoji/emoji_one/mag_right.png | Bin 3228 -> 1033 bytes public/images/emoji/emoji_one/mage.png | Bin 2770 -> 2102 bytes public/images/emoji/emoji_one/magnet.png | Bin 2204 -> 931 bytes public/images/emoji/emoji_one/mahjong.png | Bin 2268 -> 970 bytes public/images/emoji/emoji_one/mailbox.png | Bin 2399 -> 1064 bytes .../images/emoji/emoji_one/mailbox_closed.png | Bin 2421 -> 958 bytes .../emoji/emoji_one/mailbox_with_mail.png | Bin 2275 -> 1112 bytes .../emoji/emoji_one/mailbox_with_no_mail.png | Bin 2011 -> 873 bytes .../emoji_one/male_couple_with_heart.png | Bin 2495 -> 1558 bytes .../emoji/emoji_one/male_couplekiss.png | Bin 2464 -> 1385 bytes .../images/emoji/emoji_one/male_detective.png | Bin 2686 -> 1547 bytes public/images/emoji/emoji_one/man.png | Bin 2245 -> 1064 bytes public/images/emoji/emoji_one/man_artist.png | Bin 2458 -> 1663 bytes .../images/emoji/emoji_one/man_astronaut.png | Bin 3399 -> 1944 bytes public/images/emoji/emoji_one/man_bald.png | Bin 2015 -> 793 bytes .../emoji/emoji_one/man_cartwheeling.png | Bin 2057 -> 1079 bytes public/images/emoji/emoji_one/man_cook.png | Bin 2873 -> 1868 bytes .../emoji/emoji_one/man_curly_haired.png | Bin 2534 -> 1172 bytes public/images/emoji/emoji_one/man_dancing.png | Bin 2191 -> 1231 bytes .../emoji/emoji_one/man_facepalming.png | Bin 2242 -> 1135 bytes .../emoji/emoji_one/man_factory_worker.png | Bin 2538 -> 1636 bytes public/images/emoji/emoji_one/man_farmer.png | Bin 2758 -> 1934 bytes .../emoji/emoji_one/man_firefighter.png | Bin 2583 -> 1525 bytes .../emoji/emoji_one/man_health_worker.png | Bin 2432 -> 1438 bytes .../man_in_business_suit_levitating.png | Bin 1884 -> 786 bytes .../emoji_one/man_in_manual_wheelchair.png | Bin 2534 -> 2026 bytes .../emoji_one/man_in_motorized_wheelchair.png | Bin 2415 -> 1710 bytes .../images/emoji/emoji_one/man_in_tuxedo.png | Bin 2277 -> 1281 bytes public/images/emoji/emoji_one/man_judge.png | Bin 2496 -> 1473 bytes .../images/emoji/emoji_one/man_juggling.png | Bin 2398 -> 1714 bytes .../images/emoji/emoji_one/man_kneeling.png | Bin 1795 -> 889 bytes .../images/emoji/emoji_one/man_mechanic.png | Bin 2492 -> 1639 bytes .../emoji/emoji_one/man_office_worker.png | Bin 2184 -> 1134 bytes public/images/emoji/emoji_one/man_pilot.png | Bin 2567 -> 1409 bytes .../emoji/emoji_one/man_playing_handball.png | Bin 2294 -> 1590 bytes .../emoji_one/man_playing_water_polo.png | Bin 2147 -> 1138 bytes .../images/emoji/emoji_one/man_red_haired.png | Bin 2249 -> 1117 bytes .../images/emoji/emoji_one/man_scientist.png | Bin 2571 -> 1715 bytes .../images/emoji/emoji_one/man_shrugging.png | Bin 2318 -> 1141 bytes public/images/emoji/emoji_one/man_singer.png | Bin 2523 -> 1648 bytes .../images/emoji/emoji_one/man_standing.png | Bin 1953 -> 899 bytes public/images/emoji/emoji_one/man_student.png | Bin 2614 -> 1733 bytes .../images/emoji/emoji_one/man_superhero.png | Bin 2507 -> 1793 bytes .../emoji/emoji_one/man_supervillain.png | Bin 2665 -> 1836 bytes public/images/emoji/emoji_one/man_teacher.png | Bin 2597 -> 1550 bytes .../emoji/emoji_one/man_technologist.png | Bin 1969 -> 907 bytes .../emoji/emoji_one/man_white_haired.png | Bin 2241 -> 1095 bytes .../emoji/emoji_one/man_with_gua_pi_mao.png | Bin 2307 -> 1156 bytes .../emoji/emoji_one/man_with_probing_cane.png | Bin 2009 -> 1254 bytes .../emoji/emoji_one/man_with_turban.png | Bin 2399 -> 1180 bytes public/images/emoji/emoji_one/mango.png | Bin 2981 -> 1447 bytes public/images/emoji/emoji_one/mans_shoe.png | Bin 1938 -> 717 bytes .../emoji/emoji_one/mantelpiece_clock.png | Bin 2483 -> 942 bytes .../emoji/emoji_one/manual_wheelchair.png | Bin 2667 -> 1635 bytes public/images/emoji/emoji_one/map.png | Bin 2737 -> 1599 bytes public/images/emoji/emoji_one/maple_leaf.png | Bin 3074 -> 1141 bytes .../emoji/emoji_one/martial_arts_uniform.png | Bin 3165 -> 1377 bytes public/images/emoji/emoji_one/mask.png | Bin 2193 -> 1184 bytes public/images/emoji/emoji_one/massage.png | Bin 2483 -> 1246 bytes public/images/emoji/emoji_one/massage_man.png | Bin 2280 -> 1061 bytes .../images/emoji/emoji_one/massage_woman.png | Bin 2483 -> 1246 bytes public/images/emoji/emoji_one/maté.png | Bin 2484 -> 1212 bytes .../images/emoji/emoji_one/meat_on_bone.png | Bin 2607 -> 1282 bytes .../images/emoji/emoji_one/mechanical_arm.png | Bin 1901 -> 801 bytes .../images/emoji/emoji_one/mechanical_leg.png | Bin 2099 -> 845 bytes public/images/emoji/emoji_one/medal.png | Bin 2669 -> 1670 bytes .../images/emoji/emoji_one/medal_military.png | Bin 2394 -> 1155 bytes .../images/emoji/emoji_one/medal_sports.png | Bin 2669 -> 1670 bytes public/images/emoji/emoji_one/mega.png | Bin 2445 -> 1188 bytes public/images/emoji/emoji_one/melon.png | Bin 4065 -> 1335 bytes public/images/emoji/emoji_one/memo.png | Bin 1803 -> 828 bytes public/images/emoji/emoji_one/menorah.png | Bin 2478 -> 1055 bytes public/images/emoji/emoji_one/mens.png | Bin 1428 -> 762 bytes public/images/emoji/emoji_one/mermaid.png | Bin 2194 -> 1071 bytes public/images/emoji/emoji_one/merman.png | Bin 2680 -> 1701 bytes public/images/emoji/emoji_one/metal.png | Bin 2535 -> 672 bytes public/images/emoji/emoji_one/metro.png | Bin 2302 -> 1096 bytes public/images/emoji/emoji_one/microbe.png | Bin 3026 -> 1670 bytes public/images/emoji/emoji_one/microphone.png | Bin 2543 -> 1076 bytes public/images/emoji/emoji_one/microphone2.png | Bin 2843 -> 1405 bytes public/images/emoji/emoji_one/microscope.png | Bin 2246 -> 1281 bytes .../images/emoji/emoji_one/middle_finger.png | Bin 2067 -> 533 bytes .../images/emoji/emoji_one/military_medal.png | Bin 2394 -> 1155 bytes public/images/emoji/emoji_one/milk_glass.png | Bin 2154 -> 815 bytes public/images/emoji/emoji_one/milky_way.png | Bin 3367 -> 2290 bytes public/images/emoji/emoji_one/minibus.png | Bin 2165 -> 1028 bytes public/images/emoji/emoji_one/minidisc.png | Bin 3249 -> 1510 bytes .../emoji/emoji_one/mobile_phone_off.png | Bin 1564 -> 821 bytes public/images/emoji/emoji_one/money_mouth.png | Bin 2654 -> 1571 bytes .../emoji/emoji_one/money_mouth_face.png | Bin 2654 -> 1571 bytes .../emoji/emoji_one/money_with_wings.png | Bin 3009 -> 1483 bytes public/images/emoji/emoji_one/moneybag.png | Bin 2677 -> 970 bytes public/images/emoji/emoji_one/monkey.png | Bin 3355 -> 1478 bytes public/images/emoji/emoji_one/monkey_face.png | Bin 2890 -> 974 bytes public/images/emoji/emoji_one/monorail.png | Bin 2012 -> 906 bytes public/images/emoji/emoji_one/moon.png | Bin 3776 -> 1108 bytes public/images/emoji/emoji_one/moon_cake.png | Bin 2747 -> 899 bytes .../images/emoji/emoji_one/mortar_board.png | Bin 1852 -> 845 bytes public/images/emoji/emoji_one/mosque.png | Bin 2365 -> 1142 bytes public/images/emoji/emoji_one/mosquito.png | Bin 2371 -> 1407 bytes public/images/emoji/emoji_one/motor_boat.png | Bin 1999 -> 877 bytes .../images/emoji/emoji_one/motor_scooter.png | Bin 2103 -> 1360 bytes public/images/emoji/emoji_one/motorboat.png | Bin 1999 -> 877 bytes public/images/emoji/emoji_one/motorcycle.png | Bin 2819 -> 2046 bytes .../emoji/emoji_one/motorized_wheelchair.png | Bin 2365 -> 1384 bytes public/images/emoji/emoji_one/motorway.png | Bin 2519 -> 1260 bytes public/images/emoji/emoji_one/mount_fuji.png | Bin 2285 -> 1353 bytes public/images/emoji/emoji_one/mountain.png | Bin 2378 -> 990 bytes .../emoji/emoji_one/mountain_bicyclist.png | Bin 3182 -> 2223 bytes .../emoji/emoji_one/mountain_biking_man.png | Bin 3182 -> 2223 bytes .../emoji/emoji_one/mountain_biking_woman.png | Bin 3211 -> 2356 bytes .../emoji/emoji_one/mountain_cableway.png | Bin 2156 -> 941 bytes .../emoji/emoji_one/mountain_railway.png | Bin 2452 -> 1055 bytes .../images/emoji/emoji_one/mountain_snow.png | Bin 2463 -> 1231 bytes public/images/emoji/emoji_one/mouse.png | Bin 2410 -> 1119 bytes public/images/emoji/emoji_one/mouse2.png | Bin 2213 -> 912 bytes .../emoji/emoji_one/mouse_three_button.png | Bin 2518 -> 809 bytes .../images/emoji/emoji_one/movie_camera.png | Bin 2501 -> 1141 bytes public/images/emoji/emoji_one/moyai.png | Bin 2359 -> 1042 bytes public/images/emoji/emoji_one/mrs_claus.png | Bin 2698 -> 1451 bytes public/images/emoji/emoji_one/muscle.png | Bin 2317 -> 809 bytes public/images/emoji/emoji_one/mushroom.png | Bin 2828 -> 1244 bytes .../emoji/emoji_one/musical_keyboard.png | Bin 1873 -> 865 bytes .../images/emoji/emoji_one/musical_note.png | Bin 1613 -> 663 bytes .../images/emoji/emoji_one/musical_score.png | Bin 2244 -> 972 bytes public/images/emoji/emoji_one/mute.png | Bin 3114 -> 1572 bytes public/images/emoji/emoji_one/nail_care.png | Bin 2551 -> 1193 bytes public/images/emoji/emoji_one/name_badge.png | Bin 1528 -> 666 bytes .../images/emoji/emoji_one/national_park.png | Bin 2988 -> 2023 bytes .../images/emoji/emoji_one/nauseated_face.png | Bin 2620 -> 1084 bytes .../images/emoji/emoji_one/nazar_amulet.png | Bin 3070 -> 1500 bytes public/images/emoji/emoji_one/necktie.png | Bin 3276 -> 1327 bytes .../emoji_one/negative_squared_cross_mark.png | Bin 1364 -> 774 bytes public/images/emoji/emoji_one/nerd.png | Bin 2615 -> 1666 bytes public/images/emoji/emoji_one/nerd_face.png | Bin 2615 -> 1666 bytes .../images/emoji/emoji_one/neutral_face.png | Bin 1689 -> 823 bytes public/images/emoji/emoji_one/new.png | Bin 1887 -> 796 bytes public/images/emoji/emoji_one/new_moon.png | Bin 3776 -> 1108 bytes .../emoji/emoji_one/new_moon_with_face.png | Bin 3821 -> 1535 bytes public/images/emoji/emoji_one/newspaper.png | Bin 2424 -> 951 bytes public/images/emoji/emoji_one/newspaper2.png | Bin 3116 -> 1506 bytes .../images/emoji/emoji_one/newspaper_roll.png | Bin 3116 -> 1506 bytes public/images/emoji/emoji_one/next_track.png | Bin 1491 -> 747 bytes .../emoji/emoji_one/next_track_button.png | Bin 1491 -> 747 bytes public/images/emoji/emoji_one/ng.png | Bin 1934 -> 797 bytes .../emoji/emoji_one/night_with_stars.png | Bin 3256 -> 1409 bytes public/images/emoji/emoji_one/nine.png | Bin 1535 -> 708 bytes public/images/emoji/emoji_one/no_bell.png | Bin 3042 -> 1673 bytes public/images/emoji/emoji_one/no_bicycles.png | Bin 3281 -> 1566 bytes public/images/emoji/emoji_one/no_entry.png | Bin 1405 -> 648 bytes .../images/emoji/emoji_one/no_entry_sign.png | Bin 2507 -> 1065 bytes public/images/emoji/emoji_one/no_good.png | Bin 2383 -> 1188 bytes public/images/emoji/emoji_one/no_good_man.png | Bin 2247 -> 1101 bytes .../images/emoji/emoji_one/no_good_woman.png | Bin 2383 -> 1188 bytes .../emoji/emoji_one/no_mobile_phones.png | Bin 2962 -> 1350 bytes public/images/emoji/emoji_one/no_mouth.png | Bin 1639 -> 811 bytes .../images/emoji/emoji_one/no_pedestrians.png | Bin 3071 -> 1506 bytes public/images/emoji/emoji_one/no_smoking.png | Bin 2934 -> 1527 bytes .../emoji/emoji_one/non-potable_water.png | Bin 3050 -> 1544 bytes public/images/emoji/emoji_one/nose.png | Bin 2722 -> 674 bytes public/images/emoji/emoji_one/notebook.png | Bin 1071 -> 409 bytes .../notebook_with_decorative_cover.png | Bin 1213 -> 439 bytes .../images/emoji/emoji_one/notepad_spiral.png | Bin 1502 -> 535 bytes public/images/emoji/emoji_one/notes.png | Bin 2314 -> 831 bytes .../images/emoji/emoji_one/nut_and_bolt.png | Bin 2306 -> 1048 bytes public/images/emoji/emoji_one/o.png | Bin 2170 -> 768 bytes public/images/emoji/emoji_one/o2.png | Bin 1583 -> 801 bytes public/images/emoji/emoji_one/ocean.png | Bin 3492 -> 1678 bytes public/images/emoji/emoji_one/octopus.png | Bin 3471 -> 2462 bytes public/images/emoji/emoji_one/oden.png | Bin 2722 -> 1108 bytes public/images/emoji/emoji_one/office.png | Bin 1788 -> 882 bytes public/images/emoji/emoji_one/oil.png | Bin 2207 -> 718 bytes public/images/emoji/emoji_one/oil_drum.png | Bin 2207 -> 718 bytes public/images/emoji/emoji_one/ok.png | Bin 1867 -> 769 bytes public/images/emoji/emoji_one/ok_hand.png | Bin 2806 -> 820 bytes public/images/emoji/emoji_one/ok_man.png | Bin 2680 -> 1529 bytes public/images/emoji/emoji_one/ok_woman.png | Bin 2648 -> 1391 bytes public/images/emoji/emoji_one/old_key.png | Bin 1860 -> 795 bytes public/images/emoji/emoji_one/older_adult.png | Bin 2360 -> 1147 bytes public/images/emoji/emoji_one/older_man.png | Bin 2281 -> 1089 bytes public/images/emoji/emoji_one/older_woman.png | Bin 2280 -> 1185 bytes public/images/emoji/emoji_one/om.png | Bin 2133 -> 990 bytes public/images/emoji/emoji_one/om_symbol.png | Bin 2133 -> 990 bytes public/images/emoji/emoji_one/on.png | Bin 1725 -> 676 bytes .../emoji/emoji_one/oncoming_automobile.png | Bin 2158 -> 1189 bytes .../images/emoji/emoji_one/oncoming_bus.png | Bin 1964 -> 892 bytes .../emoji/emoji_one/oncoming_police_car.png | Bin 2555 -> 1481 bytes .../images/emoji/emoji_one/oncoming_taxi.png | Bin 2204 -> 1193 bytes public/images/emoji/emoji_one/one.png | Bin 1088 -> 659 bytes .../emoji/emoji_one/one_piece_swimsuit.png | Bin 2330 -> 742 bytes public/images/emoji/emoji_one/onion.png | Bin 3979 -> 1440 bytes public/images/emoji/emoji_one/open_book.png | Bin 3044 -> 1094 bytes .../emoji/emoji_one/open_file_folder.png | Bin 1038 -> 585 bytes public/images/emoji/emoji_one/open_hands.png | Bin 2495 -> 744 bytes public/images/emoji/emoji_one/open_mouth.png | Bin 1895 -> 956 bytes .../images/emoji/emoji_one/open_umbrella.png | Bin 1660 -> 652 bytes public/images/emoji/emoji_one/ophiuchus.png | Bin 1888 -> 858 bytes public/images/emoji/emoji_one/orange_book.png | Bin 1458 -> 484 bytes .../images/emoji/emoji_one/orange_circle.png | Bin 1117 -> 628 bytes .../images/emoji/emoji_one/orange_heart.png | Bin 1483 -> 556 bytes public/images/emoji/emoji_one/orangutan.png | Bin 2551 -> 1226 bytes .../images/emoji/emoji_one/orthodox_cross.png | Bin 1527 -> 752 bytes public/images/emoji/emoji_one/otter.png | Bin 2692 -> 1220 bytes public/images/emoji/emoji_one/outbox_tray.png | Bin 1950 -> 821 bytes public/images/emoji/emoji_one/owl.png | Bin 3316 -> 1812 bytes public/images/emoji/emoji_one/ox.png | Bin 2322 -> 922 bytes public/images/emoji/emoji_one/oyster.png | Bin 3108 -> 1441 bytes public/images/emoji/emoji_one/package.png | Bin 2296 -> 1088 bytes .../images/emoji/emoji_one/page_facing_up.png | Bin 1447 -> 595 bytes .../images/emoji/emoji_one/page_with_curl.png | Bin 1564 -> 552 bytes public/images/emoji/emoji_one/pager.png | Bin 2125 -> 887 bytes public/images/emoji/emoji_one/paintbrush.png | Bin 1818 -> 782 bytes public/images/emoji/emoji_one/palm_tree.png | Bin 2401 -> 1224 bytes .../emoji/emoji_one/palms_up_together.png | Bin 3140 -> 829 bytes public/images/emoji/emoji_one/pancakes.png | Bin 3152 -> 1747 bytes public/images/emoji/emoji_one/panda_face.png | Bin 3252 -> 1439 bytes public/images/emoji/emoji_one/paperclip.png | Bin 2223 -> 838 bytes public/images/emoji/emoji_one/paperclips.png | Bin 3115 -> 1397 bytes public/images/emoji/emoji_one/parachute.png | Bin 2878 -> 1725 bytes .../emoji/emoji_one/parasol_on_ground.png | Bin 2171 -> 1634 bytes public/images/emoji/emoji_one/park.png | Bin 2988 -> 2023 bytes public/images/emoji/emoji_one/parking.png | Bin 1181 -> 784 bytes public/images/emoji/emoji_one/parrot.png | Bin 2235 -> 1685 bytes .../emoji/emoji_one/part_alternation_mark.png | Bin 1871 -> 640 bytes .../images/emoji/emoji_one/partly_sunny.png | Bin 2368 -> 899 bytes .../images/emoji/emoji_one/partying_face.png | Bin 2941 -> 2334 bytes .../images/emoji/emoji_one/passenger_ship.png | Bin 2153 -> 1099 bytes .../emoji/emoji_one/passport_control.png | Bin 1842 -> 795 bytes .../images/emoji/emoji_one/pause_button.png | Bin 919 -> 599 bytes public/images/emoji/emoji_one/paw_prints.png | Bin 1817 -> 735 bytes public/images/emoji/emoji_one/peace.png | Bin 2358 -> 1226 bytes .../images/emoji/emoji_one/peace_symbol.png | Bin 2358 -> 1226 bytes public/images/emoji/emoji_one/peach.png | Bin 3364 -> 1305 bytes public/images/emoji/emoji_one/peacock.png | Bin 3324 -> 2503 bytes public/images/emoji/emoji_one/peanuts.png | Bin 3685 -> 1054 bytes public/images/emoji/emoji_one/pear.png | Bin 2772 -> 801 bytes public/images/emoji/emoji_one/pen.png | Bin 2020 -> 747 bytes .../images/emoji/emoji_one/pen_ballpoint.png | Bin 2020 -> 747 bytes .../images/emoji/emoji_one/pen_fountain.png | Bin 2033 -> 747 bytes public/images/emoji/emoji_one/pencil.png | Bin 1803 -> 828 bytes public/images/emoji/emoji_one/pencil2.png | Bin 1580 -> 586 bytes public/images/emoji/emoji_one/penguin.png | Bin 2721 -> 1170 bytes public/images/emoji/emoji_one/pensive.png | Bin 1974 -> 962 bytes .../emoji/emoji_one/people_holding_hands.png | Bin 2314 -> 1281 bytes .../emoji/emoji_one/performing_arts.png | Bin 3064 -> 1937 bytes public/images/emoji/emoji_one/persevere.png | Bin 2091 -> 1036 bytes .../emoji/emoji_one/person_climbing.png | Bin 2743 -> 1640 bytes .../images/emoji/emoji_one/person_fencing.png | Bin 2379 -> 1331 bytes .../emoji/emoji_one/person_frowning.png | Bin 2288 -> 1109 bytes .../emoji_one/person_in_lotus_position.png | Bin 2399 -> 1284 bytes .../emoji/emoji_one/person_in_steamy_room.png | Bin 2589 -> 1214 bytes .../emoji/emoji_one/person_with_ball.png | Bin 2362 -> 1559 bytes .../emoji_one/person_with_blond_hair.png | Bin 2483 -> 1196 bytes .../emoji_one/person_with_pouting_face.png | Bin 2316 -> 1083 bytes public/images/emoji/emoji_one/petri_dish.png | Bin 2592 -> 1076 bytes public/images/emoji/emoji_one/phone.png | Bin 2460 -> 1233 bytes public/images/emoji/emoji_one/pick.png | Bin 1985 -> 881 bytes public/images/emoji/emoji_one/pie.png | Bin 3374 -> 1711 bytes public/images/emoji/emoji_one/pig.png | Bin 2214 -> 1036 bytes public/images/emoji/emoji_one/pig2.png | Bin 2404 -> 951 bytes public/images/emoji/emoji_one/pig_nose.png | Bin 2370 -> 927 bytes public/images/emoji/emoji_one/pill.png | Bin 1821 -> 735 bytes .../images/emoji/emoji_one/pinching_hand.png | Bin 2480 -> 832 bytes public/images/emoji/emoji_one/pineapple.png | Bin 3256 -> 1722 bytes public/images/emoji/emoji_one/ping_pong.png | Bin 2052 -> 940 bytes public/images/emoji/emoji_one/pirate_flag.png | Bin 2298 -> 959 bytes public/images/emoji/emoji_one/pisces.png | Bin 1927 -> 881 bytes public/images/emoji/emoji_one/pizza.png | Bin 3142 -> 1477 bytes .../emoji/emoji_one/place_of_worship.png | Bin 1827 -> 800 bytes .../emoji/emoji_one/plate_with_cutlery.png | Bin 2513 -> 997 bytes .../emoji/emoji_one/play_or_pause_button.png | Bin 1305 -> 780 bytes public/images/emoji/emoji_one/play_pause.png | Bin 1305 -> 780 bytes .../images/emoji/emoji_one/pleading_face.png | Bin 2788 -> 1429 bytes public/images/emoji/emoji_one/point_down.png | Bin 1652 -> 579 bytes public/images/emoji/emoji_one/point_left.png | Bin 1851 -> 537 bytes public/images/emoji/emoji_one/point_right.png | Bin 1639 -> 543 bytes public/images/emoji/emoji_one/point_up.png | Bin 2327 -> 622 bytes public/images/emoji/emoji_one/point_up_2.png | Bin 1652 -> 555 bytes public/images/emoji/emoji_one/police_car.png | Bin 2314 -> 1207 bytes public/images/emoji/emoji_one/policeman.png | Bin 2473 -> 1369 bytes public/images/emoji/emoji_one/policewoman.png | Bin 2522 -> 1391 bytes public/images/emoji/emoji_one/poo.png | Bin 2802 -> 1195 bytes public/images/emoji/emoji_one/poodle.png | Bin 3215 -> 1442 bytes public/images/emoji/emoji_one/poop.png | Bin 2802 -> 1195 bytes public/images/emoji/emoji_one/popcorn.png | Bin 2681 -> 1641 bytes public/images/emoji/emoji_one/post_office.png | Bin 1912 -> 910 bytes public/images/emoji/emoji_one/postal_horn.png | Bin 2217 -> 946 bytes public/images/emoji/emoji_one/postbox.png | Bin 1783 -> 812 bytes .../images/emoji/emoji_one/potable_water.png | Bin 2136 -> 1005 bytes public/images/emoji/emoji_one/potato.png | Bin 3666 -> 1022 bytes public/images/emoji/emoji_one/pouch.png | Bin 1865 -> 715 bytes public/images/emoji/emoji_one/poultry_leg.png | Bin 2757 -> 1004 bytes public/images/emoji/emoji_one/pound.png | Bin 2027 -> 988 bytes public/images/emoji/emoji_one/pouting_cat.png | Bin 2565 -> 1252 bytes public/images/emoji/emoji_one/pouting_man.png | Bin 2111 -> 1045 bytes .../images/emoji/emoji_one/pouting_woman.png | Bin 2316 -> 1083 bytes public/images/emoji/emoji_one/pray.png | Bin 2243 -> 756 bytes .../images/emoji/emoji_one/prayer_beads.png | Bin 2590 -> 2037 bytes .../images/emoji/emoji_one/pregnant_woman.png | Bin 2270 -> 1096 bytes public/images/emoji/emoji_one/pretzel.png | Bin 2577 -> 1361 bytes .../images/emoji/emoji_one/previous_track.png | Bin 1563 -> 750 bytes .../emoji/emoji_one/previous_track_button.png | Bin 1563 -> 750 bytes public/images/emoji/emoji_one/prince.png | Bin 2706 -> 1821 bytes public/images/emoji/emoji_one/princess.png | Bin 2933 -> 1813 bytes public/images/emoji/emoji_one/printer.png | Bin 1480 -> 663 bytes .../images/emoji/emoji_one/probing_cane.png | Bin 1181 -> 521 bytes public/images/emoji/emoji_one/projector.png | Bin 2645 -> 1266 bytes public/images/emoji/emoji_one/puke.png | Bin 2523 -> 1428 bytes public/images/emoji/emoji_one/punch.png | Bin 2461 -> 702 bytes .../images/emoji/emoji_one/purple_circle.png | Bin 1423 -> 743 bytes .../images/emoji/emoji_one/purple_heart.png | Bin 1398 -> 645 bytes .../images/emoji/emoji_one/purple_square.png | Bin 515 -> 381 bytes public/images/emoji/emoji_one/purse.png | Bin 2083 -> 988 bytes public/images/emoji/emoji_one/pushpin.png | Bin 1870 -> 582 bytes .../emoji_one/put_litter_in_its_place.png | Bin 1752 -> 844 bytes public/images/emoji/emoji_one/question.png | Bin 1472 -> 569 bytes public/images/emoji/emoji_one/rabbit.png | Bin 2689 -> 1306 bytes public/images/emoji/emoji_one/rabbit2.png | Bin 2116 -> 823 bytes public/images/emoji/emoji_one/raccoon.png | Bin 2605 -> 1299 bytes public/images/emoji/emoji_one/race_car.png | Bin 1926 -> 941 bytes public/images/emoji/emoji_one/racehorse.png | Bin 2515 -> 1094 bytes public/images/emoji/emoji_one/racing_car.png | Bin 1926 -> 941 bytes .../emoji/emoji_one/racing_motorcycle.png | Bin 2819 -> 2046 bytes public/images/emoji/emoji_one/radio.png | Bin 1873 -> 908 bytes .../images/emoji/emoji_one/radio_button.png | Bin 3353 -> 1041 bytes public/images/emoji/emoji_one/radioactive.png | Bin 2879 -> 1263 bytes .../emoji/emoji_one/radioactive_sign.png | Bin 2879 -> 1263 bytes public/images/emoji/emoji_one/rage.png | Bin 1993 -> 954 bytes .../images/emoji/emoji_one/railroad_track.png | Bin 2557 -> 1259 bytes public/images/emoji/emoji_one/railway_car.png | Bin 1580 -> 691 bytes .../images/emoji/emoji_one/railway_track.png | Bin 2557 -> 1259 bytes public/images/emoji/emoji_one/rainbow.png | Bin 2503 -> 1637 bytes .../images/emoji/emoji_one/rainbow_flag.png | Bin 1709 -> 711 bytes .../emoji/emoji_one/raised_back_of_hand.png | Bin 2388 -> 639 bytes public/images/emoji/emoji_one/raised_hand.png | Bin 2431 -> 629 bytes .../raised_hand_with_fingers_splayed.png | Bin 2770 -> 781 bytes ...h_part_between_middle_and_ring_fingers.png | Bin 2678 -> 810 bytes .../images/emoji/emoji_one/raised_hands.png | Bin 2669 -> 912 bytes .../images/emoji/emoji_one/raising_hand.png | Bin 2598 -> 1489 bytes .../emoji/emoji_one/raising_hand_man.png | Bin 2503 -> 1329 bytes .../emoji/emoji_one/raising_hand_woman.png | Bin 2598 -> 1489 bytes public/images/emoji/emoji_one/ram.png | Bin 2535 -> 1147 bytes public/images/emoji/emoji_one/ramen.png | Bin 3047 -> 2031 bytes public/images/emoji/emoji_one/rat.png | Bin 2190 -> 802 bytes public/images/emoji/emoji_one/razor.png | Bin 2034 -> 763 bytes public/images/emoji/emoji_one/receipt.png | Bin 1849 -> 703 bytes .../images/emoji/emoji_one/record_button.png | Bin 1462 -> 642 bytes public/images/emoji/emoji_one/recycle.png | Bin 2526 -> 1071 bytes public/images/emoji/emoji_one/red_car.png | Bin 2313 -> 1350 bytes public/images/emoji/emoji_one/red_circle.png | Bin 1329 -> 804 bytes .../emoji/emoji_one/red_gift_envelope.png | Bin 1403 -> 486 bytes public/images/emoji/emoji_one/registered.png | Bin 2316 -> 910 bytes public/images/emoji/emoji_one/relaxed.png | Bin 2490 -> 1183 bytes public/images/emoji/emoji_one/relieved.png | Bin 2011 -> 1012 bytes .../emoji/emoji_one/reminder_ribbon.png | Bin 1890 -> 753 bytes public/images/emoji/emoji_one/repeat.png | Bin 1772 -> 780 bytes public/images/emoji/emoji_one/repeat_one.png | Bin 1964 -> 871 bytes .../emoji/emoji_one/rescue_worker_helmet.png | Bin 2172 -> 1024 bytes public/images/emoji/emoji_one/restroom.png | Bin 2039 -> 915 bytes ...ersed_hand_with_middle_finger_extended.png | Bin 2067 -> 533 bytes .../emoji/emoji_one/revolving_hearts.png | Bin 2178 -> 1075 bytes public/images/emoji/emoji_one/rewind.png | Bin 1554 -> 751 bytes public/images/emoji/emoji_one/rhinoceros.png | Bin 2314 -> 1136 bytes public/images/emoji/emoji_one/ribbon.png | Bin 2374 -> 1023 bytes public/images/emoji/emoji_one/rice.png | Bin 3134 -> 1254 bytes public/images/emoji/emoji_one/rice_ball.png | Bin 3317 -> 1243 bytes .../images/emoji/emoji_one/rice_cracker.png | Bin 3430 -> 1276 bytes public/images/emoji/emoji_one/rice_scene.png | Bin 2764 -> 1707 bytes .../emoji/emoji_one/right_anger_bubble.png | Bin 2483 -> 941 bytes public/images/emoji/emoji_one/ring.png | Bin 2747 -> 1567 bytes .../images/emoji/emoji_one/ringer_planet.png | Bin 2198 -> 1053 bytes public/images/emoji/emoji_one/robot.png | Bin 2701 -> 1538 bytes public/images/emoji/emoji_one/robot_face.png | Bin 2701 -> 1538 bytes public/images/emoji/emoji_one/rocket.png | Bin 2395 -> 1818 bytes public/images/emoji/emoji_one/rofl.png | Bin 2329 -> 1225 bytes public/images/emoji/emoji_one/roll_eyes.png | Bin 2056 -> 1023 bytes .../emoji/emoji_one/roll_of_toilet_paper.png | Bin 2117 -> 835 bytes .../emoji/emoji_one/rolled_up_newspaper.png | Bin 3116 -> 1506 bytes .../images/emoji/emoji_one/roller_coaster.png | Bin 2538 -> 1732 bytes .../images/emoji/emoji_one/rolling_eyes.png | Bin 2056 -> 1023 bytes public/images/emoji/emoji_one/rooster.png | Bin 2493 -> 1344 bytes public/images/emoji/emoji_one/rose.png | Bin 2458 -> 1193 bytes public/images/emoji/emoji_one/rosette.png | Bin 3098 -> 1217 bytes .../images/emoji/emoji_one/rotating_light.png | Bin 2655 -> 1212 bytes .../images/emoji/emoji_one/round_pushpin.png | Bin 1558 -> 592 bytes public/images/emoji/emoji_one/rowboat.png | Bin 2224 -> 1363 bytes public/images/emoji/emoji_one/rowing_man.png | Bin 2224 -> 1363 bytes .../images/emoji/emoji_one/rowing_woman.png | Bin 2281 -> 1547 bytes .../images/emoji/emoji_one/rugby_football.png | Bin 3420 -> 1066 bytes public/images/emoji/emoji_one/runner.png | Bin 2058 -> 1159 bytes public/images/emoji/emoji_one/running_man.png | Bin 2058 -> 1159 bytes .../emoji_one/running_shirt_with_sash.png | Bin 2112 -> 1055 bytes .../images/emoji/emoji_one/running_woman.png | Bin 2150 -> 1301 bytes public/images/emoji/emoji_one/sa.png | Bin 1396 -> 685 bytes public/images/emoji/emoji_one/safety_pin.png | Bin 2207 -> 842 bytes public/images/emoji/emoji_one/safety_vest.png | Bin 2934 -> 1132 bytes public/images/emoji/emoji_one/sagittarius.png | Bin 1726 -> 775 bytes public/images/emoji/emoji_one/sailboat.png | Bin 2186 -> 1594 bytes public/images/emoji/emoji_one/sake.png | Bin 1967 -> 884 bytes public/images/emoji/emoji_one/salt.png | Bin 2503 -> 906 bytes public/images/emoji/emoji_one/sandal.png | Bin 1766 -> 783 bytes public/images/emoji/emoji_one/sandwich.png | Bin 2409 -> 1224 bytes public/images/emoji/emoji_one/santa.png | Bin 2669 -> 1400 bytes public/images/emoji/emoji_one/sari.png | Bin 2102 -> 1310 bytes public/images/emoji/emoji_one/satellite.png | Bin 2746 -> 1220 bytes .../emoji/emoji_one/satellite_orbital.png | Bin 2306 -> 1147 bytes public/images/emoji/emoji_one/satisfied.png | Bin 2176 -> 1147 bytes public/images/emoji/emoji_one/sauropod.png | Bin 2323 -> 1033 bytes public/images/emoji/emoji_one/saxophone.png | Bin 2610 -> 1278 bytes public/images/emoji/emoji_one/scales.png | Bin 2290 -> 1183 bytes public/images/emoji/emoji_one/scarf.png | Bin 2603 -> 1067 bytes public/images/emoji/emoji_one/school.png | Bin 2023 -> 952 bytes .../images/emoji/emoji_one/school_satchel.png | Bin 2437 -> 1251 bytes public/images/emoji/emoji_one/scissors.png | Bin 2350 -> 1290 bytes public/images/emoji/emoji_one/scorpion.png | Bin 2982 -> 1548 bytes public/images/emoji/emoji_one/scorpius.png | Bin 1907 -> 849 bytes public/images/emoji/emoji_one/scream.png | Bin 2391 -> 1271 bytes public/images/emoji/emoji_one/scream_cat.png | Bin 2692 -> 1375 bytes public/images/emoji/emoji_one/scroll.png | Bin 2845 -> 1218 bytes public/images/emoji/emoji_one/seat.png | Bin 1755 -> 725 bytes public/images/emoji/emoji_one/secret.png | Bin 2362 -> 1167 bytes public/images/emoji/emoji_one/see_no_evil.png | Bin 2801 -> 1027 bytes public/images/emoji/emoji_one/seedling.png | Bin 2021 -> 937 bytes public/images/emoji/emoji_one/selfie.png | Bin 2300 -> 1030 bytes public/images/emoji/emoji_one/service_dog.png | Bin 2448 -> 1238 bytes public/images/emoji/emoji_one/seven.png | Bin 1334 -> 718 bytes .../emoji/emoji_one/shallow_pan_of_food.png | Bin 3992 -> 1919 bytes public/images/emoji/emoji_one/shamrock.png | Bin 2666 -> 939 bytes public/images/emoji/emoji_one/shark.png | Bin 2540 -> 1157 bytes public/images/emoji/emoji_one/shaved_ice.png | Bin 2111 -> 1582 bytes public/images/emoji/emoji_one/sheep.png | Bin 3001 -> 1131 bytes public/images/emoji/emoji_one/shell.png | Bin 2904 -> 1167 bytes public/images/emoji/emoji_one/shield.png | Bin 2875 -> 1188 bytes .../images/emoji/emoji_one/shinto_shrine.png | Bin 1259 -> 588 bytes public/images/emoji/emoji_one/ship.png | Bin 1908 -> 968 bytes public/images/emoji/emoji_one/shirt.png | Bin 1940 -> 783 bytes public/images/emoji/emoji_one/shit.png | Bin 2802 -> 1195 bytes public/images/emoji/emoji_one/shopping.png | Bin 2687 -> 1435 bytes .../images/emoji/emoji_one/shopping_bags.png | Bin 2687 -> 1435 bytes .../images/emoji/emoji_one/shopping_cart.png | Bin 3031 -> 1565 bytes public/images/emoji/emoji_one/shorts.png | Bin 2389 -> 987 bytes public/images/emoji/emoji_one/shower.png | Bin 2334 -> 946 bytes public/images/emoji/emoji_one/shrimp.png | Bin 3138 -> 1544 bytes .../images/emoji/emoji_one/shushing_face.png | Bin 2364 -> 1176 bytes .../emoji/emoji_one/sign_of_the_horns.png | Bin 2535 -> 672 bytes .../emoji/emoji_one/signal_strength.png | Bin 1028 -> 689 bytes public/images/emoji/emoji_one/six.png | Bin 1562 -> 745 bytes .../emoji/emoji_one/six_pointed_star.png | Bin 1940 -> 847 bytes public/images/emoji/emoji_one/skateboard.png | Bin 1769 -> 732 bytes public/images/emoji/emoji_one/skeleton.png | Bin 3382 -> 1087 bytes public/images/emoji/emoji_one/ski.png | Bin 2762 -> 1948 bytes public/images/emoji/emoji_one/skier.png | Bin 2184 -> 1382 bytes public/images/emoji/emoji_one/skull.png | Bin 3382 -> 1087 bytes .../emoji/emoji_one/skull_and_crossbones.png | Bin 3091 -> 1077 bytes .../emoji/emoji_one/skull_crossbones.png | Bin 3091 -> 1077 bytes public/images/emoji/emoji_one/skunk.png | Bin 2321 -> 1122 bytes public/images/emoji/emoji_one/sled.png | Bin 2340 -> 1166 bytes public/images/emoji/emoji_one/sleeping.png | Bin 2212 -> 1171 bytes .../emoji_one/sleeping_accommodation.png | Bin 2071 -> 872 bytes .../images/emoji/emoji_one/sleeping_bed.png | Bin 2071 -> 872 bytes public/images/emoji/emoji_one/sleepy.png | Bin 2136 -> 1192 bytes .../images/emoji/emoji_one/sleuth_or_spy.png | Bin 2686 -> 1547 bytes .../images/emoji/emoji_one/slight_frown.png | Bin 1872 -> 871 bytes .../images/emoji/emoji_one/slight_smile.png | Bin 1895 -> 919 bytes .../emoji_one/slightly_frowning_face.png | Bin 1872 -> 871 bytes .../emoji/emoji_one/slightly_smiling.png | Bin 1895 -> 919 bytes .../emoji/emoji_one/slightly_smiling_face.png | Bin 1895 -> 919 bytes .../images/emoji/emoji_one/slot_machine.png | Bin 2340 -> 1208 bytes public/images/emoji/emoji_one/sloth.png | Bin 2781 -> 1497 bytes .../images/emoji/emoji_one/small_airplane.png | Bin 1932 -> 917 bytes .../emoji/emoji_one/small_blue_diamond.png | Bin 881 -> 363 bytes .../emoji/emoji_one/small_orange_diamond.png | Bin 738 -> 336 bytes .../emoji/emoji_one/small_red_triangle.png | Bin 1350 -> 568 bytes .../emoji_one/small_red_triangle_down.png | Bin 1364 -> 578 bytes public/images/emoji/emoji_one/smile.png | Bin 2139 -> 1123 bytes public/images/emoji/emoji_one/smile_cat.png | Bin 2638 -> 1318 bytes public/images/emoji/emoji_one/smiley.png | Bin 2121 -> 1121 bytes public/images/emoji/emoji_one/smiley_cat.png | Bin 2627 -> 1365 bytes .../smiling_face_with_three_hearts.png | Bin 2708 -> 1483 bytes public/images/emoji/emoji_one/smiling_imp.png | Bin 2628 -> 1400 bytes public/images/emoji/emoji_one/smirk.png | Bin 2050 -> 1026 bytes public/images/emoji/emoji_one/smirk_cat.png | Bin 2565 -> 1206 bytes public/images/emoji/emoji_one/smoking.png | Bin 2175 -> 1242 bytes public/images/emoji/emoji_one/snail.png | Bin 2537 -> 1159 bytes public/images/emoji/emoji_one/snake.png | Bin 2736 -> 1270 bytes .../images/emoji/emoji_one/sneezing_face.png | Bin 2435 -> 1282 bytes .../emoji/emoji_one/snow_capped_mountain.png | Bin 2463 -> 1231 bytes public/images/emoji/emoji_one/snowboarder.png | Bin 2411 -> 1604 bytes public/images/emoji/emoji_one/snowflake.png | Bin 2300 -> 911 bytes public/images/emoji/emoji_one/snowman.png | Bin 2778 -> 1300 bytes public/images/emoji/emoji_one/snowman2.png | Bin 3162 -> 2143 bytes .../emoji/emoji_one/snowman_with_snow.png | Bin 3162 -> 2143 bytes public/images/emoji/emoji_one/soap.png | Bin 2485 -> 979 bytes public/images/emoji/emoji_one/sob.png | Bin 2955 -> 1891 bytes public/images/emoji/emoji_one/soccer.png | Bin 3118 -> 1315 bytes public/images/emoji/emoji_one/socks.png | Bin 3071 -> 1853 bytes public/images/emoji/emoji_one/softball.png | Bin 3153 -> 1367 bytes public/images/emoji/emoji_one/soon.png | Bin 1772 -> 718 bytes public/images/emoji/emoji_one/sos.png | Bin 1927 -> 797 bytes public/images/emoji/emoji_one/sound.png | Bin 2243 -> 959 bytes .../images/emoji/emoji_one/space_invader.png | Bin 1142 -> 600 bytes public/images/emoji/emoji_one/spades.png | Bin 1689 -> 686 bytes public/images/emoji/emoji_one/spaghetti.png | Bin 2887 -> 1898 bytes public/images/emoji/emoji_one/sparkle.png | Bin 2078 -> 944 bytes public/images/emoji/emoji_one/sparkler.png | Bin 2841 -> 1948 bytes public/images/emoji/emoji_one/sparkles.png | Bin 1904 -> 1022 bytes .../emoji/emoji_one/sparkling_heart.png | Bin 2159 -> 1026 bytes .../images/emoji/emoji_one/speak_no_evil.png | Bin 3040 -> 1116 bytes public/images/emoji/emoji_one/speaker.png | Bin 2049 -> 793 bytes .../images/emoji/emoji_one/speaking_head.png | Bin 1717 -> 700 bytes .../emoji_one/speaking_head_in_silhouette.png | Bin 1717 -> 700 bytes .../images/emoji/emoji_one/speech_balloon.png | Bin 2810 -> 907 bytes public/images/emoji/emoji_one/speedboat.png | Bin 2137 -> 1078 bytes public/images/emoji/emoji_one/spider.png | Bin 2832 -> 1305 bytes public/images/emoji/emoji_one/spider_web.png | Bin 2667 -> 1115 bytes .../emoji/emoji_one/spiral_calendar.png | Bin 1843 -> 877 bytes .../emoji/emoji_one/spiral_calendar_pad.png | Bin 1843 -> 877 bytes .../emoji/emoji_one/spiral_note_pad.png | Bin 1502 -> 535 bytes .../images/emoji/emoji_one/spiral_notepad.png | Bin 1502 -> 535 bytes public/images/emoji/emoji_one/sponge.png | Bin 2090 -> 648 bytes public/images/emoji/emoji_one/spoon.png | Bin 2061 -> 580 bytes .../images/emoji/emoji_one/sports_medal.png | Bin 2669 -> 1670 bytes public/images/emoji/emoji_one/spy.png | Bin 2686 -> 1547 bytes public/images/emoji/emoji_one/squid.png | Bin 2941 -> 1325 bytes public/images/emoji/emoji_one/stadium.png | Bin 3072 -> 2269 bytes public/images/emoji/emoji_one/star.png | Bin 1568 -> 601 bytes public/images/emoji/emoji_one/star2.png | Bin 1779 -> 754 bytes .../emoji/emoji_one/star_and_crescent.png | Bin 1899 -> 877 bytes .../images/emoji/emoji_one/star_of_david.png | Bin 1937 -> 832 bytes public/images/emoji/emoji_one/star_struck.png | Bin 2527 -> 1433 bytes public/images/emoji/emoji_one/stars.png | Bin 2506 -> 1205 bytes public/images/emoji/emoji_one/station.png | Bin 2256 -> 1278 bytes .../emoji/emoji_one/statue_of_liberty.png | Bin 2342 -> 1130 bytes .../emoji/emoji_one/steam_locomotive.png | Bin 2472 -> 1571 bytes public/images/emoji/emoji_one/stethoscope.png | Bin 2196 -> 1238 bytes public/images/emoji/emoji_one/stew.png | Bin 2733 -> 1467 bytes public/images/emoji/emoji_one/stop_button.png | Bin 878 -> 605 bytes public/images/emoji/emoji_one/stop_sign.png | Bin 1442 -> 704 bytes public/images/emoji/emoji_one/stopwatch.png | Bin 2849 -> 1051 bytes .../images/emoji/emoji_one/straight_ruler.png | Bin 2041 -> 606 bytes public/images/emoji/emoji_one/strawberry.png | Bin 3175 -> 1333 bytes .../emoji/emoji_one/stuck_out_tongue.png | Bin 2086 -> 1071 bytes .../stuck_out_tongue_closed_eyes.png | Bin 2170 -> 1178 bytes .../stuck_out_tongue_winking_eye.png | Bin 2199 -> 1261 bytes .../emoji/emoji_one/studio_microphone.png | Bin 2843 -> 1405 bytes .../emoji/emoji_one/stuffed_flatbread.png | Bin 2830 -> 1919 bytes .../emoji_one/sun_behind_large_cloud.png | Bin 2289 -> 875 bytes .../emoji/emoji_one/sun_behind_rain_cloud.png | Bin 2563 -> 1306 bytes .../emoji_one/sun_behind_small_cloud.png | Bin 2197 -> 855 bytes .../images/emoji/emoji_one/sun_with_face.png | Bin 2614 -> 1108 bytes public/images/emoji/emoji_one/sunflower.png | Bin 3038 -> 1688 bytes public/images/emoji/emoji_one/sunglasses.png | Bin 2240 -> 1197 bytes public/images/emoji/emoji_one/sunny.png | Bin 2581 -> 885 bytes public/images/emoji/emoji_one/sunrise.png | Bin 3151 -> 957 bytes .../emoji_one/sunrise_over_mountains.png | Bin 2245 -> 1028 bytes public/images/emoji/emoji_one/superhero.png | Bin 2588 -> 1917 bytes .../images/emoji/emoji_one/supervillain.png | Bin 2748 -> 1944 bytes public/images/emoji/emoji_one/surfer.png | Bin 2334 -> 1437 bytes public/images/emoji/emoji_one/surfing_man.png | Bin 2334 -> 1437 bytes .../images/emoji/emoji_one/surfing_woman.png | Bin 2422 -> 1491 bytes public/images/emoji/emoji_one/sushi.png | Bin 2886 -> 1632 bytes .../emoji/emoji_one/suspension_railway.png | Bin 2252 -> 1036 bytes public/images/emoji/emoji_one/swan.png | Bin 2697 -> 1106 bytes public/images/emoji/emoji_one/sweat.png | Bin 2095 -> 1102 bytes public/images/emoji/emoji_one/sweat_drops.png | Bin 3366 -> 1075 bytes public/images/emoji/emoji_one/sweat_smile.png | Bin 2293 -> 1283 bytes .../images/emoji/emoji_one/sweet_potato.png | Bin 3179 -> 1000 bytes public/images/emoji/emoji_one/swimmer.png | Bin 1918 -> 894 bytes .../images/emoji/emoji_one/swimming_man.png | Bin 1918 -> 894 bytes .../images/emoji/emoji_one/swimming_woman.png | Bin 1923 -> 918 bytes public/images/emoji/emoji_one/symbols.png | Bin 2062 -> 912 bytes public/images/emoji/emoji_one/synagogue.png | Bin 2539 -> 1365 bytes public/images/emoji/emoji_one/syringe.png | Bin 2053 -> 1196 bytes public/images/emoji/emoji_one/t_rex.png | Bin 2680 -> 1449 bytes .../images/emoji/emoji_one/table_tennis.png | Bin 2052 -> 940 bytes public/images/emoji/emoji_one/taco.png | Bin 3220 -> 1697 bytes public/images/emoji/emoji_one/tada.png | Bin 2870 -> 2369 bytes public/images/emoji/emoji_one/takeout_box.png | Bin 2336 -> 1203 bytes .../images/emoji/emoji_one/tanabata_tree.png | Bin 2783 -> 1835 bytes public/images/emoji/emoji_one/tangerine.png | Bin 3047 -> 1058 bytes public/images/emoji/emoji_one/taurus.png | Bin 1884 -> 836 bytes public/images/emoji/emoji_one/taxi.png | Bin 2311 -> 1293 bytes public/images/emoji/emoji_one/tea.png | Bin 2572 -> 1246 bytes public/images/emoji/emoji_one/teddy_bear.png | Bin 3197 -> 1242 bytes public/images/emoji/emoji_one/telephone.png | Bin 2460 -> 1233 bytes .../emoji/emoji_one/telephone_receiver.png | Bin 1967 -> 580 bytes public/images/emoji/emoji_one/telescope.png | Bin 2371 -> 1201 bytes public/images/emoji/emoji_one/ten.png | Bin 1905 -> 884 bytes public/images/emoji/emoji_one/tennis.png | Bin 2851 -> 1107 bytes public/images/emoji/emoji_one/tent.png | Bin 2569 -> 1328 bytes public/images/emoji/emoji_one/test_tube.png | Bin 1954 -> 708 bytes public/images/emoji/emoji_one/thermometer.png | Bin 1549 -> 594 bytes .../emoji/emoji_one/thermometer_face.png | Bin 2146 -> 1206 bytes public/images/emoji/emoji_one/thinking.png | Bin 2282 -> 1202 bytes .../images/emoji/emoji_one/thinking_face.png | Bin 2282 -> 1202 bytes .../emoji/emoji_one/thought_balloon.png | Bin 2587 -> 808 bytes public/images/emoji/emoji_one/thread.png | Bin 2561 -> 1229 bytes public/images/emoji/emoji_one/three.png | Bin 1470 -> 748 bytes .../emoji/emoji_one/three_button_mouse.png | Bin 2518 -> 809 bytes public/images/emoji/emoji_one/thumbsdown.png | Bin 2266 -> 663 bytes public/images/emoji/emoji_one/thumbsup.png | Bin 2254 -> 665 bytes .../emoji_one/thunder_cloud_and_rain.png | Bin 2567 -> 1332 bytes .../emoji/emoji_one/thunder_cloud_rain.png | Bin 2567 -> 1332 bytes public/images/emoji/emoji_one/ticket.png | Bin 1658 -> 609 bytes public/images/emoji/emoji_one/tickets.png | Bin 1359 -> 526 bytes public/images/emoji/emoji_one/tiger.png | Bin 3521 -> 2266 bytes public/images/emoji/emoji_one/tiger2.png | Bin 2397 -> 1501 bytes public/images/emoji/emoji_one/timer.png | Bin 2282 -> 847 bytes public/images/emoji/emoji_one/timer_clock.png | Bin 2282 -> 847 bytes .../emoji/emoji_one/tipping_hand_man.png | Bin 2259 -> 1206 bytes .../emoji/emoji_one/tipping_hand_woman.png | Bin 2446 -> 1374 bytes public/images/emoji/emoji_one/tired_face.png | Bin 2145 -> 1198 bytes public/images/emoji/emoji_one/tm.png | Bin 1657 -> 672 bytes public/images/emoji/emoji_one/toilet.png | Bin 1878 -> 723 bytes public/images/emoji/emoji_one/tokyo_tower.png | Bin 1952 -> 1184 bytes public/images/emoji/emoji_one/tomato.png | Bin 2958 -> 1084 bytes public/images/emoji/emoji_one/tongue.png | Bin 1800 -> 689 bytes public/images/emoji/emoji_one/toolbox.png | Bin 1293 -> 631 bytes public/images/emoji/emoji_one/tools.png | Bin 2465 -> 1383 bytes public/images/emoji/emoji_one/tooth.png | Bin 2882 -> 806 bytes public/images/emoji/emoji_one/top.png | Bin 1562 -> 511 bytes public/images/emoji/emoji_one/tophat.png | Bin 2248 -> 803 bytes public/images/emoji/emoji_one/tornado.png | Bin 3211 -> 1363 bytes public/images/emoji/emoji_one/track_next.png | Bin 1491 -> 747 bytes .../images/emoji/emoji_one/track_previous.png | Bin 1563 -> 750 bytes public/images/emoji/emoji_one/trackball.png | Bin 2147 -> 688 bytes public/images/emoji/emoji_one/tractor.png | Bin 2824 -> 1586 bytes .../images/emoji/emoji_one/traffic_light.png | Bin 1712 -> 698 bytes public/images/emoji/emoji_one/train.png | Bin 2182 -> 1146 bytes public/images/emoji/emoji_one/train2.png | Bin 2476 -> 1197 bytes public/images/emoji/emoji_one/tram.png | Bin 2112 -> 1086 bytes .../emoji/emoji_one/transgender_flag.png | Bin 0 -> 907 bytes .../emoji_one/triangular_flag_on_post.png | Bin 948 -> 399 bytes .../emoji/emoji_one/triangular_ruler.png | Bin 2399 -> 822 bytes public/images/emoji/emoji_one/trident.png | Bin 2275 -> 960 bytes public/images/emoji/emoji_one/triumph.png | Bin 2684 -> 1389 bytes public/images/emoji/emoji_one/trolleybus.png | Bin 2283 -> 1237 bytes public/images/emoji/emoji_one/trophy.png | Bin 2761 -> 1435 bytes .../images/emoji/emoji_one/tropical_drink.png | Bin 1938 -> 1039 bytes .../images/emoji/emoji_one/tropical_fish.png | Bin 2787 -> 1310 bytes public/images/emoji/emoji_one/truck.png | Bin 1979 -> 847 bytes public/images/emoji/emoji_one/trumpet.png | Bin 2336 -> 1198 bytes public/images/emoji/emoji_one/tshirt.png | Bin 1940 -> 783 bytes public/images/emoji/emoji_one/tulip.png | Bin 2303 -> 1309 bytes .../images/emoji/emoji_one/tumbler_glass.png | Bin 3043 -> 1372 bytes public/images/emoji/emoji_one/turkey.png | Bin 3160 -> 2295 bytes public/images/emoji/emoji_one/turtle.png | Bin 2483 -> 1341 bytes public/images/emoji/emoji_one/tv.png | Bin 2325 -> 1118 bytes .../emoji_one/twisted_rightwards_arrows.png | Bin 1868 -> 793 bytes public/images/emoji/emoji_one/two.png | Bin 1390 -> 808 bytes public/images/emoji/emoji_one/two_hearts.png | Bin 1932 -> 773 bytes .../emoji/emoji_one/two_men_holding_hands.png | Bin 2295 -> 1314 bytes .../emoji_one/two_women_holding_hands.png | Bin 2681 -> 1617 bytes public/images/emoji/emoji_one/u5272.png | Bin 1697 -> 898 bytes public/images/emoji/emoji_one/u5408.png | Bin 1590 -> 736 bytes public/images/emoji/emoji_one/u55b6.png | Bin 1455 -> 737 bytes public/images/emoji/emoji_one/u6307.png | Bin 1839 -> 855 bytes public/images/emoji/emoji_one/u6708.png | Bin 1240 -> 634 bytes public/images/emoji/emoji_one/u6709.png | Bin 1403 -> 648 bytes public/images/emoji/emoji_one/u6e80.png | Bin 2053 -> 884 bytes public/images/emoji/emoji_one/u7121.png | Bin 1746 -> 788 bytes public/images/emoji/emoji_one/u7533.png | Bin 1109 -> 648 bytes public/images/emoji/emoji_one/u7981.png | Bin 1972 -> 926 bytes public/images/emoji/emoji_one/u7a7a.png | Bin 1536 -> 785 bytes public/images/emoji/emoji_one/umbrella.png | Bin 2258 -> 1403 bytes public/images/emoji/emoji_one/umbrella2.png | Bin 1660 -> 652 bytes .../emoji/emoji_one/umbrella_on_ground.png | Bin 2171 -> 1634 bytes public/images/emoji/emoji_one/unamused.png | Bin 1896 -> 941 bytes public/images/emoji/emoji_one/underage.png | Bin 2978 -> 1478 bytes public/images/emoji/emoji_one/unicorn.png | Bin 2597 -> 1681 bytes .../images/emoji/emoji_one/unicorn_face.png | Bin 2597 -> 1681 bytes public/images/emoji/emoji_one/unlock.png | Bin 1628 -> 632 bytes public/images/emoji/emoji_one/up.png | Bin 1624 -> 818 bytes public/images/emoji/emoji_one/upside_down.png | Bin 1900 -> 907 bytes .../emoji/emoji_one/upside_down_face.png | Bin 1900 -> 907 bytes public/images/emoji/emoji_one/urn.png | Bin 1886 -> 738 bytes public/images/emoji/emoji_one/v.png | Bin 2529 -> 817 bytes public/images/emoji/emoji_one/vampire.png | Bin 2618 -> 1449 bytes .../emoji_one/vertical_traffic_light.png | Bin 2000 -> 805 bytes public/images/emoji/emoji_one/vhs.png | Bin 1947 -> 684 bytes .../images/emoji/emoji_one/vibration_mode.png | Bin 1946 -> 935 bytes .../images/emoji/emoji_one/video_camera.png | Bin 1793 -> 708 bytes public/images/emoji/emoji_one/video_game.png | Bin 2372 -> 1054 bytes public/images/emoji/emoji_one/violin.png | Bin 2785 -> 1567 bytes public/images/emoji/emoji_one/virgo.png | Bin 1976 -> 898 bytes public/images/emoji/emoji_one/volcano.png | Bin 3444 -> 2362 bytes public/images/emoji/emoji_one/volleyball.png | Bin 3674 -> 1282 bytes public/images/emoji/emoji_one/vs.png | Bin 1722 -> 877 bytes public/images/emoji/emoji_one/vulcan.png | Bin 2678 -> 810 bytes .../images/emoji/emoji_one/vulcan_salute.png | Bin 2678 -> 810 bytes public/images/emoji/emoji_one/waffle.png | Bin 2594 -> 1102 bytes public/images/emoji/emoji_one/walking.png | Bin 1960 -> 1068 bytes public/images/emoji/emoji_one/walking_man.png | Bin 1960 -> 1068 bytes .../images/emoji/emoji_one/walking_woman.png | Bin 2014 -> 1158 bytes .../emoji/emoji_one/waning_crescent_moon.png | Bin 3572 -> 1269 bytes .../emoji/emoji_one/waning_gibbous_moon.png | Bin 3492 -> 1336 bytes public/images/emoji/emoji_one/warning.png | Bin 1502 -> 730 bytes public/images/emoji/emoji_one/wastebasket.png | Bin 4038 -> 2157 bytes public/images/emoji/emoji_one/watch.png | Bin 2245 -> 969 bytes .../images/emoji/emoji_one/water_buffalo.png | Bin 2386 -> 1030 bytes public/images/emoji/emoji_one/watermelon.png | Bin 2709 -> 1461 bytes public/images/emoji/emoji_one/wave.png | Bin 2943 -> 939 bytes .../emoji/emoji_one/waving_black_flag.png | Bin 836 -> 351 bytes .../emoji/emoji_one/waving_white_flag.png | Bin 836 -> 353 bytes public/images/emoji/emoji_one/wavy_dash.png | Bin 1415 -> 453 bytes .../emoji/emoji_one/waxing_crescent_moon.png | Bin 3484 -> 1318 bytes .../emoji/emoji_one/waxing_gibbous_moon.png | Bin 3419 -> 1272 bytes public/images/emoji/emoji_one/wc.png | Bin 1976 -> 810 bytes public/images/emoji/emoji_one/weary.png | Bin 2182 -> 1158 bytes public/images/emoji/emoji_one/wedding.png | Bin 2597 -> 1446 bytes .../images/emoji/emoji_one/weight_lifter.png | Bin 2466 -> 1510 bytes .../emoji/emoji_one/weight_lifting_man.png | Bin 2466 -> 1510 bytes .../emoji/emoji_one/weight_lifting_woman.png | Bin 2524 -> 1624 bytes public/images/emoji/emoji_one/whale.png | Bin 2777 -> 1425 bytes public/images/emoji/emoji_one/whale2.png | Bin 3047 -> 1314 bytes .../emoji/emoji_one/wheel_of_dharma.png | Bin 2171 -> 1008 bytes public/images/emoji/emoji_one/wheelchair.png | Bin 1826 -> 787 bytes .../emoji/emoji_one/white_check_mark.png | Bin 1594 -> 823 bytes .../images/emoji/emoji_one/white_circle.png | Bin 1829 -> 852 bytes public/images/emoji/emoji_one/white_flag.png | Bin 836 -> 353 bytes .../images/emoji/emoji_one/white_flower.png | Bin 3021 -> 1434 bytes .../emoji/emoji_one/white_frowning_face.png | Bin 1937 -> 872 bytes public/images/emoji/emoji_one/white_heart.png | Bin 1276 -> 565 bytes .../emoji/emoji_one/white_large_square.png | Bin 1034 -> 768 bytes .../emoji_one/white_medium_small_square.png | Bin 754 -> 532 bytes .../emoji_one/white_sun_behind_cloud.png | Bin 2289 -> 875 bytes .../white_sun_behind_cloud_with_rain.png | Bin 2563 -> 1306 bytes .../emoji/emoji_one/white_sun_cloud.png | Bin 2289 -> 875 bytes .../emoji/emoji_one/white_sun_rain_cloud.png | Bin 2563 -> 1306 bytes .../emoji/emoji_one/white_sun_small_cloud.png | Bin 2368 -> 899 bytes .../emoji_one/white_sun_with_small_cloud.png | Bin 2368 -> 899 bytes .../images/emoji/emoji_one/wilted_flower.png | Bin 2831 -> 1467 bytes .../emoji/emoji_one/wind_blowing_face.png | Bin 2644 -> 1252 bytes public/images/emoji/emoji_one/wind_chime.png | Bin 2315 -> 1148 bytes public/images/emoji/emoji_one/wind_face.png | Bin 2644 -> 1252 bytes public/images/emoji/emoji_one/wine_glass.png | Bin 2390 -> 979 bytes public/images/emoji/emoji_one/wink.png | Bin 1988 -> 964 bytes public/images/emoji/emoji_one/wolf.png | Bin 2759 -> 1304 bytes public/images/emoji/emoji_one/woman.png | Bin 2531 -> 1277 bytes .../images/emoji/emoji_one/woman_artist.png | Bin 2717 -> 1741 bytes .../emoji/emoji_one/woman_astronaut.png | Bin 3401 -> 1913 bytes public/images/emoji/emoji_one/woman_bald.png | Bin 1993 -> 862 bytes .../emoji/emoji_one/woman_cartwheeling.png | Bin 2085 -> 1207 bytes .../images/emoji/emoji_one/woman_climbing.png | Bin 2809 -> 1829 bytes public/images/emoji/emoji_one/woman_cook.png | Bin 3051 -> 1981 bytes .../emoji/emoji_one/woman_curly_haired.png | Bin 2890 -> 1435 bytes .../emoji/emoji_one/woman_facepalming.png | Bin 2376 -> 1067 bytes .../emoji/emoji_one/woman_factory_worker.png | Bin 2630 -> 1740 bytes .../images/emoji/emoji_one/woman_farmer.png | Bin 2821 -> 2122 bytes .../emoji/emoji_one/woman_firefighter.png | Bin 2694 -> 1677 bytes public/images/emoji/emoji_one/woman_genie.png | Bin 2512 -> 1891 bytes .../emoji/emoji_one/woman_health_worker.png | Bin 2526 -> 1441 bytes .../emoji_one/woman_in_lotus_position.png | Bin 2481 -> 1332 bytes .../emoji_one/woman_in_manual_wheelchair.png | Bin 2561 -> 2093 bytes .../woman_in_motorized_wheelchair.png | Bin 2494 -> 1906 bytes .../emoji/emoji_one/woman_in_steamy_room.png | Bin 2405 -> 1074 bytes public/images/emoji/emoji_one/woman_judge.png | Bin 2623 -> 1430 bytes .../images/emoji/emoji_one/woman_juggling.png | Bin 2451 -> 1849 bytes .../images/emoji/emoji_one/woman_kneeling.png | Bin 1961 -> 1091 bytes public/images/emoji/emoji_one/woman_mage.png | Bin 2761 -> 2062 bytes .../images/emoji/emoji_one/woman_mechanic.png | Bin 2640 -> 1655 bytes .../emoji/emoji_one/woman_office_worker.png | Bin 2413 -> 1221 bytes public/images/emoji/emoji_one/woman_pilot.png | Bin 2702 -> 1443 bytes .../emoji_one/woman_playing_handball.png | Bin 2337 -> 1746 bytes .../emoji_one/woman_playing_water_polo.png | Bin 2301 -> 1247 bytes .../emoji/emoji_one/woman_red_haired.png | Bin 2524 -> 1379 bytes .../emoji/emoji_one/woman_scientist.png | Bin 2721 -> 1782 bytes .../emoji/emoji_one/woman_shrugging.png | Bin 2424 -> 1212 bytes .../images/emoji/emoji_one/woman_singer.png | Bin 2564 -> 1761 bytes .../images/emoji/emoji_one/woman_standing.png | Bin 1969 -> 974 bytes .../images/emoji/emoji_one/woman_student.png | Bin 2655 -> 1734 bytes .../emoji/emoji_one/woman_superhero.png | Bin 2624 -> 1811 bytes .../emoji/emoji_one/woman_supervillain.png | Bin 2771 -> 1904 bytes .../images/emoji/emoji_one/woman_teacher.png | Bin 2715 -> 1629 bytes .../emoji/emoji_one/woman_technologist.png | Bin 2040 -> 1001 bytes .../emoji/emoji_one/woman_white_haired.png | Bin 2502 -> 1422 bytes .../emoji/emoji_one/woman_with_headscarf.png | Bin 2666 -> 1336 bytes .../emoji_one/woman_with_probing_cane.png | Bin 2155 -> 1341 bytes .../emoji/emoji_one/woman_with_turban.png | Bin 2379 -> 1251 bytes .../images/emoji/emoji_one/woman_zombie.png | Bin 2985 -> 1563 bytes .../images/emoji/emoji_one/womans_clothes.png | Bin 2223 -> 857 bytes public/images/emoji/emoji_one/womans_hat.png | Bin 2475 -> 903 bytes public/images/emoji/emoji_one/womens.png | Bin 1607 -> 824 bytes public/images/emoji/emoji_one/woozy_face.png | Bin 2543 -> 1335 bytes public/images/emoji/emoji_one/world_map.png | Bin 2737 -> 1599 bytes public/images/emoji/emoji_one/worried.png | Bin 2000 -> 956 bytes .../images/emoji/emoji_one/worship_symbol.png | Bin 1827 -> 800 bytes public/images/emoji/emoji_one/wrench.png | Bin 1984 -> 730 bytes .../images/emoji/emoji_one/writing_hand.png | Bin 2397 -> 959 bytes public/images/emoji/emoji_one/x.png | Bin 1680 -> 639 bytes public/images/emoji/emoji_one/yarn.png | Bin 3054 -> 1365 bytes .../images/emoji/emoji_one/yawning_face.png | Bin 2372 -> 1335 bytes .../images/emoji/emoji_one/yellow_circle.png | Bin 1212 -> 626 bytes .../images/emoji/emoji_one/yellow_heart.png | Bin 1212 -> 604 bytes .../images/emoji/emoji_one/yellow_square.png | Bin 425 -> 345 bytes public/images/emoji/emoji_one/yen.png | Bin 2368 -> 1091 bytes public/images/emoji/emoji_one/yin_yang.png | Bin 2018 -> 979 bytes public/images/emoji/emoji_one/yo-yo.png | Bin 2607 -> 1475 bytes public/images/emoji/emoji_one/yum.png | Bin 2102 -> 1116 bytes public/images/emoji/emoji_one/zap.png | Bin 2001 -> 696 bytes public/images/emoji/emoji_one/zebra.png | Bin 3030 -> 1519 bytes public/images/emoji/emoji_one/zero.png | Bin 1565 -> 794 bytes .../images/emoji/emoji_one/zipper_mouth.png | Bin 2054 -> 1044 bytes .../emoji/emoji_one/zipper_mouth_face.png | Bin 2054 -> 1044 bytes public/images/emoji/emoji_one/zombie.png | Bin 2962 -> 1636 bytes public/images/emoji/emoji_one/zzz.png | Bin 1832 -> 724 bytes .../facebook_messenger/transgender_flag.png | Bin 0 -> 907 bytes public/images/emoji/google/accept.png | Bin 3048 -> 1198 bytes .../images/emoji/google/adhesive_bandage.png | Bin 3049 -> 895 bytes public/images/emoji/google/adult.png | Bin 3887 -> 1472 bytes public/images/emoji/google/anguished.png | Bin 3099 -> 1068 bytes public/images/emoji/google/astonished.png | Bin 3177 -> 1154 bytes public/images/emoji/google/auto_rickshaw.png | Bin 2584 -> 1406 bytes public/images/emoji/google/axe.png | Bin 2400 -> 1043 bytes public/images/emoji/google/bacon.png | Bin 2911 -> 1412 bytes public/images/emoji/google/ballet_shoes.png | Bin 3648 -> 1726 bytes .../emoji/google/ballot_box_with_check.png | Bin 2833 -> 1063 bytes public/images/emoji/google/banjo.png | Bin 2640 -> 1228 bytes public/images/emoji/google/basketball_man.png | Bin 2864 -> 1975 bytes .../images/emoji/google/basketball_player.png | Bin 2864 -> 1975 bytes .../images/emoji/google/basketball_woman.png | Bin 2983 -> 2390 bytes public/images/emoji/google/bed.png | Bin 443 -> 362 bytes public/images/emoji/google/beverage_box.png | Bin 2926 -> 1473 bytes public/images/emoji/google/bicyclist.png | Bin 3443 -> 2969 bytes public/images/emoji/google/biking_man.png | Bin 3443 -> 2969 bytes public/images/emoji/google/biking_woman.png | Bin 3436 -> 3137 bytes public/images/emoji/google/blonde_man.png | Bin 3225 -> 1324 bytes public/images/emoji/google/blonde_woman.png | Bin 2846 -> 1324 bytes public/images/emoji/google/blue_square.png | Bin 1373 -> 599 bytes public/images/emoji/google/blush.png | Bin 3216 -> 1209 bytes public/images/emoji/google/bow.png | Bin 3360 -> 1695 bytes public/images/emoji/google/bowing_man.png | Bin 3360 -> 1695 bytes .../images/emoji/google/bowl_with_spoon.png | Bin 3080 -> 1408 bytes public/images/emoji/google/breast_feeding.png | Bin 3106 -> 1891 bytes public/images/emoji/google/briefs.png | Bin 2562 -> 693 bytes public/images/emoji/google/broken_heart.png | Bin 1030 -> 1032 bytes public/images/emoji/google/brown_circle.png | Bin 2354 -> 667 bytes public/images/emoji/google/brown_heart.png | Bin 3008 -> 785 bytes public/images/emoji/google/brown_square.png | Bin 1622 -> 523 bytes public/images/emoji/google/butter.png | Bin 2338 -> 1135 bytes public/images/emoji/google/canoe.png | Bin 3001 -> 1225 bytes .../emoji/google/caribbean_netherlands.png | Bin 2626 -> 1141 bytes public/images/emoji/google/chair.png | Bin 2298 -> 757 bytes public/images/emoji/google/child.png | Bin 3522 -> 1492 bytes public/images/emoji/google/clock6.png | Bin 1057 -> 908 bytes public/images/emoji/google/cold_sweat.png | Bin 2864 -> 1784 bytes public/images/emoji/google/confused.png | Bin 2911 -> 947 bytes .../images/emoji/google/congratulations.png | Bin 3544 -> 1439 bytes .../emoji/google/construction_worker.png | Bin 3305 -> 2184 bytes .../emoji/google/construction_worker_man.png | Bin 3305 -> 2184 bytes .../google/construction_worker_woman.png | Bin 3263 -> 1926 bytes public/images/emoji/google/cop.png | Bin 3470 -> 2430 bytes public/images/emoji/google/couple.png | Bin 3424 -> 2352 bytes .../images/emoji/google/couple_with_heart.png | Bin 3418 -> 2243 bytes .../google/couple_with_heart_woman_man.png | Bin 3418 -> 2243 bytes public/images/emoji/google/couplekiss.png | Bin 3588 -> 2063 bytes .../emoji/google/couplekiss_man_woman.png | Bin 3588 -> 2063 bytes public/images/emoji/google/cupid.png | Bin 3036 -> 1399 bytes public/images/emoji/google/curly_loop.png | Bin 2804 -> 1010 bytes public/images/emoji/google/dancers.png | Bin 3952 -> 3059 bytes public/images/emoji/google/dancing_women.png | Bin 3952 -> 3059 bytes .../images/emoji/google/dark_sunglasses.png | Bin 2008 -> 624 bytes public/images/emoji/google/deaf_man.png | Bin 3328 -> 2177 bytes public/images/emoji/google/deaf_woman.png | Bin 3230 -> 2148 bytes .../emoji/google/disappointed_relieved.png | Bin 2999 -> 1443 bytes public/images/emoji/google/diving_mask.png | Bin 2990 -> 2093 bytes public/images/emoji/google/diya_lamp.png | Bin 3325 -> 3032 bytes public/images/emoji/google/drooling_face.png | Bin 3165 -> 1441 bytes public/images/emoji/google/drop_of_blood.png | Bin 2406 -> 620 bytes public/images/emoji/google/egg.png | Bin 904 -> 800 bytes .../emoji/google/eight_pointed_black_star.png | Bin 3227 -> 1485 bytes .../emoji/google/eight_spoked_asterisk.png | Bin 3291 -> 1159 bytes public/images/emoji/google/elf.png | Bin 3501 -> 2397 bytes public/images/emoji/google/eye.png | Bin 2770 -> 1224 bytes public/images/emoji/google/face_vomiting.png | Bin 3452 -> 1780 bytes .../emoji/google/face_with_head_bandage.png | Bin 3171 -> 1428 bytes public/images/emoji/google/facepunch.png | Bin 843 -> 841 bytes public/images/emoji/google/fairy.png | Bin 3475 -> 2677 bytes public/images/emoji/google/falafel.png | Bin 4464 -> 3501 bytes .../emoji/google/family_man_woman_boy.png | Bin 3965 -> 2687 bytes public/images/emoji/google/fearful.png | Bin 2823 -> 1530 bytes public/images/emoji/google/fist.png | Bin 941 -> 936 bytes public/images/emoji/google/fist_right.png | Bin 722 -> 721 bytes public/images/emoji/google/flamingo.png | Bin 2654 -> 1238 bytes public/images/emoji/google/flushed.png | Bin 3497 -> 1468 bytes .../google/french_southern_territories.png | Bin 2760 -> 964 bytes public/images/emoji/google/frowning.png | Bin 2959 -> 1201 bytes public/images/emoji/google/garlic.png | Bin 3462 -> 1514 bytes public/images/emoji/google/genie.png | Bin 3635 -> 3410 bytes public/images/emoji/google/gift_heart.png | Bin 3507 -> 1679 bytes public/images/emoji/google/golfer.png | Bin 2685 -> 1642 bytes public/images/emoji/google/golfing_man.png | Bin 2685 -> 1642 bytes public/images/emoji/google/golfing_woman.png | Bin 2603 -> 1968 bytes public/images/emoji/google/green_circle.png | Bin 2493 -> 702 bytes public/images/emoji/google/green_square.png | Bin 1589 -> 575 bytes public/images/emoji/google/guardsman.png | Bin 2895 -> 1354 bytes public/images/emoji/google/guardswoman.png | Bin 2896 -> 1404 bytes public/images/emoji/google/guide_dog.png | Bin 3491 -> 2365 bytes public/images/emoji/google/guitar.png | Bin 2893 -> 1391 bytes public/images/emoji/google/hand_splayed.png | Bin 884 -> 884 bytes public/images/emoji/google/head_bandage.png | Bin 3171 -> 1428 bytes public/images/emoji/google/hear_no_evil.png | Bin 3771 -> 1791 bytes .../emoji/google/hear_with_hearing_aid.png | Bin 3369 -> 1800 bytes .../images/emoji/google/heart_decoration.png | Bin 2771 -> 795 bytes public/images/emoji/google/heartbeat.png | Bin 3406 -> 1326 bytes public/images/emoji/google/heartpulse.png | Bin 3622 -> 1295 bytes public/images/emoji/google/hearts.png | Bin 741 -> 740 bytes .../images/emoji/google/heavy_check_mark.png | Bin 2297 -> 822 bytes .../emoji/google/heavy_division_sign.png | Bin 1695 -> 740 bytes .../images/emoji/google/heavy_minus_sign.png | Bin 907 -> 442 bytes .../emoji/google/heavy_multiplication_x.png | Bin 2326 -> 802 bytes .../images/emoji/google/heavy_plus_sign.png | Bin 1652 -> 551 bytes public/images/emoji/google/hindu_temple.png | Bin 2789 -> 1633 bytes public/images/emoji/google/horse_racing.png | Bin 3513 -> 3043 bytes public/images/emoji/google/hushed.png | Bin 3048 -> 1103 bytes public/images/emoji/google/ice_cube.png | Bin 3458 -> 1965 bytes .../emoji/google/ideograph_advantage.png | Bin 3547 -> 1430 bytes .../emoji/google/kissing_closed_eyes.png | Bin 3347 -> 1238 bytes public/images/emoji/google/kite.png | Bin 2844 -> 2155 bytes public/images/emoji/google/koko.png | Bin 2463 -> 736 bytes public/images/emoji/google/kosovo.png | Bin 2892 -> 951 bytes public/images/emoji/google/leg.png | Bin 2590 -> 686 bytes public/images/emoji/google/level_slider.png | Bin 2939 -> 729 bytes public/images/emoji/google/lifter.png | Bin 3011 -> 2024 bytes public/images/emoji/google/loop.png | Bin 3176 -> 1173 bytes .../images/emoji/google/love_you_gesture.png | Bin 888 -> 885 bytes public/images/emoji/google/lying_face.png | Bin 3142 -> 1032 bytes public/images/emoji/google/mage.png | Bin 3694 -> 2869 bytes public/images/emoji/google/male_detective.png | Bin 3889 -> 2512 bytes .../images/emoji/google/man_cartwheeling.png | Bin 2602 -> 1390 bytes .../emoji/google/man_factory_worker.png | Bin 3561 -> 2984 bytes .../emoji/google/man_in_manual_wheelchair.png | Bin 2858 -> 2479 bytes .../google/man_in_motorized_wheelchair.png | Bin 3003 -> 2329 bytes public/images/emoji/google/man_judge.png | Bin 3809 -> 2136 bytes public/images/emoji/google/man_juggling.png | Bin 3323 -> 2522 bytes public/images/emoji/google/man_kneeling.png | Bin 2489 -> 1374 bytes public/images/emoji/google/man_mechanic.png | Bin 3536 -> 2568 bytes .../images/emoji/google/man_office_worker.png | Bin 3000 -> 1639 bytes .../emoji/google/man_playing_handball.png | Bin 2604 -> 1794 bytes .../emoji/google/man_playing_water_polo.png | Bin 3186 -> 1803 bytes public/images/emoji/google/man_standing.png | Bin 2412 -> 1313 bytes public/images/emoji/google/man_superhero.png | Bin 2923 -> 2423 bytes public/images/emoji/google/man_teacher.png | Bin 3569 -> 2634 bytes .../emoji/google/man_with_probing_cane.png | Bin 2385 -> 1623 bytes .../images/emoji/google/man_with_turban.png | Bin 3462 -> 1689 bytes .../images/emoji/google/manual_wheelchair.png | Bin 2235 -> 1518 bytes public/images/emoji/google/martinique.png | Bin 3629 -> 1293 bytes public/images/emoji/google/mask.png | Bin 2841 -> 1188 bytes public/images/emoji/google/maté.png | Bin 2863 -> 1609 bytes public/images/emoji/google/mechanical_arm.png | Bin 3424 -> 1578 bytes public/images/emoji/google/mechanical_leg.png | Bin 2774 -> 1303 bytes public/images/emoji/google/men_wrestling.png | Bin 3274 -> 2352 bytes public/images/emoji/google/mermaid.png | Bin 2603 -> 1339 bytes .../emoji/google/motorized_wheelchair.png | Bin 2603 -> 1457 bytes .../emoji/google/mountain_bicyclist.png | Bin 3834 -> 2730 bytes .../emoji/google/mountain_biking_man.png | Bin 3834 -> 2730 bytes .../emoji/google/mountain_biking_woman.png | Bin 3797 -> 2878 bytes public/images/emoji/google/mrs_claus.png | Bin 3447 -> 2112 bytes public/images/emoji/google/muscle.png | Bin 3122 -> 973 bytes public/images/emoji/google/necktie.png | Bin 3533 -> 1274 bytes public/images/emoji/google/ok_hand.png | Bin 832 -> 830 bytes public/images/emoji/google/older_adult.png | Bin 4071 -> 1688 bytes .../emoji/google/one_piece_swimsuit.png | Bin 2579 -> 1409 bytes public/images/emoji/google/onion.png | Bin 4488 -> 2843 bytes public/images/emoji/google/orange_circle.png | Bin 2415 -> 749 bytes public/images/emoji/google/orange_square.png | Bin 1417 -> 496 bytes public/images/emoji/google/orangutan.png | Bin 3806 -> 2211 bytes public/images/emoji/google/otter.png | Bin 3507 -> 1720 bytes public/images/emoji/google/oyster.png | Bin 3517 -> 1601 bytes .../images/emoji/google/palms_up_together.png | Bin 3566 -> 939 bytes public/images/emoji/google/pancakes.png | Bin 3787 -> 2237 bytes public/images/emoji/google/parachute.png | Bin 3006 -> 2862 bytes .../emoji/google/people_holding_hands.png | Bin 3574 -> 2429 bytes .../images/emoji/google/person_climbing.png | Bin 3273 -> 2494 bytes .../emoji/google/person_in_lotus_position.png | Bin 2969 -> 1617 bytes .../emoji/google/person_in_steamy_room.png | Bin 3747 -> 2270 bytes .../images/emoji/google/person_with_ball.png | Bin 2864 -> 1975 bytes .../emoji/google/person_with_blond_hair.png | Bin 3225 -> 1324 bytes public/images/emoji/google/pinching_hand.png | Bin 3396 -> 1024 bytes public/images/emoji/google/pleading_face.png | Bin 3397 -> 1621 bytes public/images/emoji/google/policeman.png | Bin 3470 -> 2430 bytes public/images/emoji/google/policewoman.png | Bin 3369 -> 2375 bytes public/images/emoji/google/probing_cane.png | Bin 1843 -> 556 bytes public/images/emoji/google/puke.png | Bin 3452 -> 1780 bytes public/images/emoji/google/punch.png | Bin 843 -> 841 bytes public/images/emoji/google/purple_circle.png | Bin 2322 -> 632 bytes public/images/emoji/google/purple_square.png | Bin 1257 -> 473 bytes public/images/emoji/google/purse.png | Bin 3148 -> 1031 bytes public/images/emoji/google/railway_car.png | Bin 2097 -> 945 bytes .../emoji/google/raised_back_of_hand.png | Bin 3134 -> 955 bytes .../raised_hand_with_fingers_splayed.png | Bin 884 -> 884 bytes public/images/emoji/google/raised_hands.png | Bin 3397 -> 930 bytes public/images/emoji/google/razor.png | Bin 2756 -> 1360 bytes public/images/emoji/google/red_square.png | Bin 1508 -> 585 bytes public/images/emoji/google/relaxed.png | Bin 3365 -> 1235 bytes public/images/emoji/google/relieved.png | Bin 3057 -> 1170 bytes public/images/emoji/google/reunion.png | Bin 3376 -> 1445 bytes .../images/emoji/google/revolving_hearts.png | Bin 3699 -> 1401 bytes public/images/emoji/google/ringer_planet.png | Bin 3287 -> 2436 bytes public/images/emoji/google/rowboat.png | Bin 2652 -> 1364 bytes public/images/emoji/google/rowing_man.png | Bin 2652 -> 1364 bytes public/images/emoji/google/rowing_woman.png | Bin 2788 -> 1635 bytes public/images/emoji/google/runner.png | Bin 2524 -> 1373 bytes public/images/emoji/google/running_man.png | Bin 2524 -> 1373 bytes .../emoji/google/running_shirt_with_sash.png | Bin 3048 -> 1139 bytes public/images/emoji/google/running_woman.png | Bin 2614 -> 1585 bytes public/images/emoji/google/sa.png | Bin 2764 -> 938 bytes public/images/emoji/google/safety_vest.png | Bin 2794 -> 1159 bytes public/images/emoji/google/sari.png | Bin 3300 -> 2348 bytes public/images/emoji/google/school_satchel.png | Bin 2740 -> 946 bytes public/images/emoji/google/service_dog.png | Bin 3688 -> 2952 bytes public/images/emoji/google/shorts.png | Bin 3896 -> 2334 bytes public/images/emoji/google/skier.png | Bin 3427 -> 2451 bytes public/images/emoji/google/skunk.png | Bin 3776 -> 1594 bytes public/images/emoji/google/sleepy.png | Bin 1279 -> 1063 bytes public/images/emoji/google/sleuth_or_spy.png | Bin 3889 -> 2512 bytes public/images/emoji/google/sloth.png | Bin 4058 -> 1691 bytes public/images/emoji/google/sneezing_face.png | Bin 3812 -> 1787 bytes public/images/emoji/google/snowboarder.png | Bin 3546 -> 2768 bytes public/images/emoji/google/sparkle.png | Bin 3537 -> 1188 bytes .../images/emoji/google/sparkling_heart.png | Bin 3457 -> 1660 bytes public/images/emoji/google/spy.png | Bin 3889 -> 2512 bytes public/images/emoji/google/st_barthelemy.png | Bin 3122 -> 1867 bytes public/images/emoji/google/stethoscope.png | Bin 3291 -> 1447 bytes .../images/emoji/google/stuffed_flatbread.png | Bin 3767 -> 3079 bytes public/images/emoji/google/superhero.png | Bin 2974 -> 2447 bytes public/images/emoji/google/supervillain.png | Bin 3388 -> 2186 bytes public/images/emoji/google/surfer.png | Bin 3431 -> 3332 bytes public/images/emoji/google/surfing_man.png | Bin 3431 -> 3332 bytes public/images/emoji/google/surfing_woman.png | Bin 3467 -> 3362 bytes public/images/emoji/google/swimmer.png | Bin 2601 -> 1208 bytes public/images/emoji/google/swimming_man.png | Bin 2601 -> 1208 bytes public/images/emoji/google/swimming_woman.png | Bin 2556 -> 1285 bytes public/images/emoji/google/train.png | Bin 2515 -> 1199 bytes .../images/emoji/google/transgender_flag.png | Bin 0 -> 907 bytes public/images/emoji/google/two_hearts.png | Bin 3344 -> 948 bytes .../emoji/google/two_men_holding_hands.png | Bin 3446 -> 2167 bytes public/images/emoji/google/u5272.png | Bin 2992 -> 1171 bytes public/images/emoji/google/u5408.png | Bin 2619 -> 954 bytes public/images/emoji/google/u6307.png | Bin 3110 -> 1172 bytes public/images/emoji/google/u6708.png | Bin 2561 -> 925 bytes public/images/emoji/google/u6709.png | Bin 2657 -> 1028 bytes public/images/emoji/google/u7121.png | Bin 2988 -> 1158 bytes public/images/emoji/google/u7a7a.png | Bin 2802 -> 985 bytes public/images/emoji/google/vampire.png | Bin 3590 -> 2173 bytes public/images/emoji/google/violin.png | Bin 3259 -> 1770 bytes public/images/emoji/google/volcano.png | Bin 2781 -> 1821 bytes public/images/emoji/google/waffle.png | Bin 3151 -> 1402 bytes public/images/emoji/google/walking.png | Bin 2291 -> 1103 bytes public/images/emoji/google/walking_man.png | Bin 2291 -> 1103 bytes public/images/emoji/google/walking_woman.png | Bin 2372 -> 1432 bytes public/images/emoji/google/watermelon.png | Bin 2573 -> 1489 bytes public/images/emoji/google/wavy_dash.png | Bin 1607 -> 615 bytes public/images/emoji/google/weight_lifter.png | Bin 3011 -> 2024 bytes .../emoji/google/weight_lifting_man.png | Bin 3011 -> 2024 bytes .../emoji/google/weight_lifting_woman.png | Bin 2946 -> 2151 bytes public/images/emoji/google/wheelchair.png | Bin 3236 -> 1317 bytes .../images/emoji/google/white_check_mark.png | Bin 2790 -> 978 bytes public/images/emoji/google/white_heart.png | Bin 2430 -> 843 bytes .../emoji/google/white_large_square.png | Bin 492 -> 412 bytes public/images/emoji/google/wine_glass.png | Bin 1931 -> 751 bytes .../emoji/google/woman_cartwheeling.png | Bin 2624 -> 1527 bytes public/images/emoji/google/woman_climbing.png | Bin 3276 -> 2580 bytes .../emoji/google/woman_factory_worker.png | Bin 3633 -> 2789 bytes .../images/emoji/google/woman_firefighter.png | Bin 3493 -> 2288 bytes public/images/emoji/google/woman_genie.png | Bin 3847 -> 3617 bytes .../emoji/google/woman_in_lotus_position.png | Bin 3074 -> 1694 bytes .../google/woman_in_manual_wheelchair.png | Bin 2956 -> 2732 bytes .../google/woman_in_motorized_wheelchair.png | Bin 2992 -> 2435 bytes .../emoji/google/woman_in_steamy_room.png | Bin 3641 -> 2165 bytes public/images/emoji/google/woman_judge.png | Bin 3760 -> 2394 bytes public/images/emoji/google/woman_juggling.png | Bin 3311 -> 2718 bytes public/images/emoji/google/woman_kneeling.png | Bin 2652 -> 1701 bytes public/images/emoji/google/woman_mage.png | Bin 3599 -> 2727 bytes public/images/emoji/google/woman_mechanic.png | Bin 3657 -> 2549 bytes .../emoji/google/woman_office_worker.png | Bin 3066 -> 1463 bytes public/images/emoji/google/woman_pilot.png | Bin 3604 -> 1800 bytes .../emoji/google/woman_playing_handball.png | Bin 2685 -> 1970 bytes .../emoji/google/woman_playing_water_polo.png | Bin 3229 -> 1933 bytes public/images/emoji/google/woman_standing.png | Bin 2511 -> 1463 bytes .../images/emoji/google/woman_superhero.png | Bin 2935 -> 2397 bytes public/images/emoji/google/woman_teacher.png | Bin 3455 -> 2732 bytes .../emoji/google/woman_with_probing_cane.png | Bin 2542 -> 1923 bytes .../images/emoji/google/women_wrestling.png | Bin 3436 -> 2715 bytes public/images/emoji/google/worried.png | Bin 3085 -> 1101 bytes public/images/emoji/google/yawning_face.png | Bin 3550 -> 1463 bytes public/images/emoji/google/yellow_circle.png | Bin 2435 -> 722 bytes public/images/emoji/google/yellow_square.png | Bin 1756 -> 584 bytes public/images/emoji/google/yo-yo.png | Bin 3676 -> 2565 bytes public/images/emoji/google/zombie.png | Bin 3674 -> 2515 bytes .../emoji/google_classic/transgender_flag.png | Bin 0 -> 907 bytes .../images/emoji/twitter/transgender_flag.png | Bin 0 -> 907 bytes .../images/emoji/win10/transgender_flag.png | Bin 0 -> 907 bytes 3771 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 public/images/emoji/apple/transgender_flag.png create mode 100644 public/images/emoji/emoji_one/transgender_flag.png create mode 100644 public/images/emoji/facebook_messenger/transgender_flag.png create mode 100644 public/images/emoji/google/transgender_flag.png create mode 100644 public/images/emoji/google_classic/transgender_flag.png create mode 100644 public/images/emoji/twitter/transgender_flag.png create mode 100644 public/images/emoji/win10/transgender_flag.png diff --git a/lib/emoji/db.json b/lib/emoji/db.json index 757aa6690f..ce808c9e8a 100644 --- a/lib/emoji/db.json +++ b/lib/emoji/db.json @@ -6619,6 +6619,10 @@ { "code": "1f90e", "name": "brown_heart" + }, + { + "code": "1f3f3-fe0f-200d-26a7", + "name": "transgender_flag" } ], "tonableEmojis": [ diff --git a/lib/emoji/groups.json b/lib/emoji/groups.json index 80286b1456..9fe4b12da3 100644 --- a/lib/emoji/groups.json +++ b/lib/emoji/groups.json @@ -845,10 +845,6 @@ "name": "woman", "diversity": true }, - { - "name": "blonde_woman", - "diversity": true - }, { "name": "woman_red_haired", "diversity": false @@ -865,6 +861,10 @@ "name": "woman_bald", "diversity": false }, + { + "name": "blonde_woman", + "diversity": true + }, { "name": "older_adult", "diversity": true diff --git a/public/images/emoji/apple/+1.png b/public/images/emoji/apple/+1.png index 2302bb908cf46df5a348cb610ba010d369f60f5a..d68407763298b250e36777e802e2b2b274331826 100644 GIT binary patch delta 1343 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 diff --git a/public/images/emoji/apple/100.png b/public/images/emoji/apple/100.png index e15cae22dc0f1bbb33043402478dd5e261942afa..7a675cb1b79856a6e12e3da0336dd37723c1ffc3 100644 GIT binary patch delta 1346 zcmV-I1-<%)8Pp1pBYyx?P)t-sM{rEt1On0x2HOz`-U9*77Y*4H3eOl1+9nv&6bsT6 z4BQO{;uQ?n1_9m+1=|P%!UX}p0sz4X0>c6TzXJi{5eVT51iJgshZy-2GHXab8Jfh8kxn=8hFlD(deI+rsxpE#)Cn+3?9WuFn^)c#ZFF-fX4e-K9$+~M1++Y zTpiuj^+qn+oLn^_5nW~Wo-rh&D5TF~EDI>MU;znt@HSjalcbAC(X@L!iFpiRfr&yn zIIQ_e1Q~s|b~Ub>_a=jCPkRyV`77hG=K^H&S;I|oLJo`%rP0!bB(-3us>(8o6piIs z7CAwT{(nY>=0OjtVwnV3y}$;~FKdqtlVPA>8^R~6Jy=7C+5iT9>5 z3{U=!Uzd$({+f_~e#p^}D?m&iM~N#2ME2o=QUejDkT>S0`B-$l9a*F#xpcu`2Qsn6 z0Dna0DUUACBLb^vb5-$flZk>ap1+eCkL*cQiu?nNewng1q14!zE3i|i-z;WCkNuQT zqW6wV!FAuEIiDv)J;2CQ72j#a3n@liPx~w8{p#G%b!+P5Ge{TGnC(w7q|`Y#x*>kO z0hVE=h;-?#)M3gkh#}j}q18v$m>nVnHh;Bo{}=E zvJF%EfI&6oxdOrxO0AZ~4QTY=o+zb>ndgS;;vJyWj9ju+vUn3XrQo?g2Z=Xclrqw=T$|>vN+cboiocaIwD_ajStpUYfZ)uFaXvFSXW#OZhyIT zQ3&RHDM&J`5RdQ&U>QPOsk$R-b)MnUBS}U82nb*)8)J-BcY`+NPIM>9791HX+h(G4 zqLxx2)vewnX3ZzSa-`saplOH@n*YdUBGy&*UL_s|Nf0D>1Da(Ilm!mP=1ElYZLiBY zn-4V^D}?;e*`oLiZ;!cDidRx@#eYivQMyWVUg>cJV|ASyd$EAo`=xq=K`aaH`*Cm` zJ{xI7a7MPj-6(#-q4+{a9I!Q;ksQF~^zY>0OYgeG;17b3;2HC*1d|g=^ed%Qg(Slz zhkAx!fEB_Dt$r&j%|)B93-ZrL&T#)3LGCL}&&%8bE z^>|hrD){FQ$`qiQvTTj5kmPenQyZ%_{|nQ0lgWSl0`IDGj^%1`?*IS*07*qoM6N<$ Eg3ruwd;kCd literal 3206 zcmWkw2{@E%8y;i}WuJY1wZm^nvSi7AsK^phIaw>6h-6otN(rS9vK;%?Sh8

rJq=J}q?=b`%5xNtv6O*a2^|-;bCO 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 diff --git a/public/images/emoji/apple/1st_place_medal.png b/public/images/emoji/apple/1st_place_medal.png index 291d1b3c2c5902991f2cb736fc296905283546ac..1748c751343be4a9ab82f272726d6cc46643c999 100644 GIT binary patch delta 1970 zcmV;j2Tk~@7rzgXBYy#IP)t-sM{rE)x9I^w|;JmH_h5An2t6`e|VIt*Y6O0Dy|Y z$IaN)i2&i60rTA*N>{S|MLzW13iZhl^}PoFV_!y5tn}Rv^nct5=fPPkH=iIcoIpyQ zyQqfs<{|2{Q267G7bKS=AzSa}mGafo|Mi}Rb5Y}?0_LUz-J1c~m;mXb1J;!T(vScj zE}ZeT2KL))^|}Y#j0E_~4)Cr9;GqKEo&o*okNUw16C#%W*Ae@?2>rzi`O^{l;(qzx zb^XZ<{pW`BrhfzFodW+YDe0>O{vaIrwg>R^^Wc>R@X%E>MW^k_I_&D|{_B?S&uISB z5d8f1@16nbuLS{QUatBktJL_pS#2_@NRQY@VFJ<*X?8S5faj5TSK}Y_K@r~fnnuf*La-nQW!SwgX>ENE`-PZErxAaQE?+eyx000HaNklTGWIyqy`LgQdQ{a_ z-PSO-B!BwuMS5ZP_>V?ye4b$zyYIU9TCKlAq0qRWaTNCpCEeXTJ`FW$lT2ViNguXa zz=mq8Zf8*NL0UDl)K-Jh!!-VV{0X2*#$g^SO8S!a7Fg`2m3zCb(@-r`n|BID zpF=yl$EUSgV}4Oly1mZE-A*C*0|m-xwXPeD)qjO_dVzMyM*&{4h5g%0<<mUUjFE^BO`n{|4*BUw-1$vB!bh@A@bgf|< zU4P6-aXn9`53!&_DCh%hBQ0p8xm_riWG`XEYqeF^sF3UB#l;V$zm4;6Nxy>vh})}J$U+L%<=F76Fymz1Z3hY$JOhWs_MCnciLf9;U$?kJaGWB zELBhGsl4~~tdq9x`@j);eQ~s)W;T^GP1Ad_;vU+WKu7910Eu;rLZySenLn8xR)6}f zo@zY7w|Sng!q~t8D4)-qtOOl72qgqkT0G8Oon;Z)$wN+7hUqKZa}eTXANO@*qtn?g z6hu9j11LkJAx=E7B=sG^C+}};YsF%raP+y_%;n63ot;bupx1%H12ZJ4Urxg85T;xP zNX5g3-mtsD$K<~mSAxfKIvPS{0)JUqgrKG!9NpLeD1uG`9XX*xTL57}$#0+A7R;Ye zumh&|iG4}_8G$-+LC$x;DN=_(O(FqRGR?f#zNCpZy+58htUn5p-i1Cmm1fBPFc<*jW3RYjJ?Ulv{v+F`o~ z`(a6^Z_W+|r2Xw9fC`1Jj!Y_I<5hh11gX7b`{O;G(do;a0VlIVA#e(1fM{RTk=hZ) zE@NIZWfCU?ftvO^M}OcHivYzrmh=UUNwVMzGq!o+1qhWsbY3nLAsaG_<06hA$;Psq z8BkK*%>M?dopW$Btq0vWk`ZPGWW@_Fd#0CzKBRr^L*U591f9L@;JgH)1(o!Uw(*rj z0Ejr)7#-Q5=58b$e@f-z2^f+rux!5|2~T=(X1y6RpU3&bLVxD6s=8n2$OHV#nPP^@ z8jI`TcX@@SNZ8V*aQ63zmUQY^Hii!Tb%7 literal 2986 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 diff --git a/public/images/emoji/apple/2nd_place_medal.png b/public/images/emoji/apple/2nd_place_medal.png index 4fe6fe8bb25454e77655645a4bb66fe71d7053fb..4aea5537a8527e0dea9f5bf2897242de8403e0a4 100644 GIT binary patch delta 1722 zcmV;r21WUc7s(BfBYy!AP)t-sM{rCdGNF8Zf_Zv)fPjDgJvexHew>euw6m~wc!hg= zeSCa;qNTg_+1Jd{+LM=``Zh6^mX>{fetLR*$H~zDRZ)$Ni`CZE`L3)sL7U0W)B9Ue zv#Owpm(La&VgHGTOIfzn)ztrPYN@E9{7^=#tE$-8*eNxk|9?0&_*G8C#KpC=u$!8i z87ZERkC2|8o|BW4i;IhiiHXn8&xM7BmzS5)($lJ`s-mKzfPjF4f`hlWx2C41uCA_( zjEuCjw7tE(+}zvk?CiR_y4cv+hK7g#Ff9E1`0)Dr{~;aK)zuFkmEz;)#>dCZ%*r!G ztHHs+d4arNaDTr}S*QJOY5a|eh=_`@x7^-QchC<{cJC) z{{0>fO5uz){+ZC__U_AUklsW7-L_Ak`207G<#6K4z{tP7_1M+Vwvw;_00lcqL_t(| zUcHxha~f9^#aY^dEK3f^a#SqaaaHoR_ul9o$u0T*AAcnG-Q5N9hZil(Rfha-5=0BlLMx7pZ>CCBxKU~kYEyeSJ}uej+Wym>Gf z-<&br<9}#~$zHU|f?97mj+qTd_v7)0*BrNoWZ%Y(F(fOWjhp@$!n?;mVMOp(d=HLp z%7a*jnXYM`u>pr4W6HrjTPd&447ZF&@u2aVn?4L<9MMZ0(P0I+zkguz!!J&@r`$h( zF1aO4J#GxJ<>l47!btzDIWAB31po(S11r&diGOE?$^JmVVFifR48zQ@*4V~_vVERT z*NbJE>>C<7P}S*_@t{taY_PNV<@arR*JQZ7jW?Bpb@6a_x8&BC41yi5*7f?1;}lw= zF_iiU)vg{f**D}IqxKz?63+f*mAGPOFl1(qG^7-I6dsV>K$9{_hsPlyr>b=OTz0{<+r2W zv}{{dw;;hZg1K^C(pCG!vMl86fLy~{_1;~S;XG^ZZ~!Exjyx}Ll-}9Xr(XXL2OVV~ z$8i?Xb*q#gn{s5tP)oU^B$?07O6QU#Nq@F2O6>ClW<)_@_(W1Q;~+@2Bw_?f;uwS% zO#}gH5j|nz?8y$tl8u$p14WS%3YwdN!rnV}f3R#m$PpHkR1_5jBnPdcz2R!jT~2SJ z>pF5MX%?6PkN}m;qkSFk?r_A3uB04Fih8riG?3&Z&g9b`L!C{5WGjpmYG{!-bAKR# zVn+ZFV4Ps37h8I^Euzh*hUP?)L}!AQ7J?A~DgY^kQ)+c>D_eQrG9nz1VDXwnvZE7R zC}rSzo)P}Z7ACWEj&FxOFx1n1ULzujC}}nqOpnSiTrVujR<#jC7sHo>#Gw@NQeb9#K67;l7LT1Zf)4 z5Uq&dx(H&0R*~1j_f}xx)-JI6hsdU=3^?c z0@9TPV{KDOa2b5>w+le*C4VpTd}hd)WSsd%3lshg911$A6<&>6KTGDh$xO+l=b8v= z#_4~r7vK56!MSEAC{rWQdl?PoM^-#u9Gm>TNw;2QkNbU8YlCXFR^@-vzd$m!fjp>^ QHvj+t07*qoM6N<$f;N#{$p8QV delta 2949 zcmV;03wrd)4T~3$BYy(`P)t-sM{rE*)7eSUj; zdU|_*eSC9ub#`=gZqUZb@=89=&eoNcmSJqQdwX?ydV7I^dVG6$jEszul9GRabC#Bw z>}p>~RH)9;+gybD5r;>{Uvpq@l&d#O+&9^>JqGMmbhtvFuDipq`xBNIW}5m%PNygOtsHfO>Ux zbIQuf(b3Vv!+*q=mzS=ttb~Muz`?=9#Ke}Cmb|>Y&(F`;*x1$8)tZ``n3$OFRZ8%0 zYVV4MqN1F(w6W}OW!l@@G(x3RU$Z1KoZIT^!_?PNV6_`6lqxx&n3s;v&dlfM=Q28( z$E}&Swx%jBYUFWSTWq^%XLtJl`s`Fm85&eqV3)(g*nf$MiHwYlhK7fakC4&P(VCi? zo}QkRl$4j3mz|xRg@uKPh=|zO*n)zBp`oFUj*g_Hq=bZofPjIGjg6C%lboEKr>CgY z)YQ(-&Y78+k&%(Nx3{CCqukuw)6>(mw6wdsyREIQ(9qDZu&{o9f0mY(*Voq>DVEjM z)g3LGrGKTRy}iBj|NrbqJG#2Mv$M0dwzlZ#=*`W|>_Rl`O+x?w`r6vstgNi^^z{4t z_@<_&si~>BxVXp1#}p)!>pn2T!ot75zpARL;Nal$`}-m>nJ6}#gM)+J-Q38@$@4}z z5Fn4_@$vC+db)&!hwXiJ;^Xc1`hWTM_wzGBoj**a>+9?8v#_$Z)$BPd zBQl@M%ggcD*X@jkOjxSL$>8qx_o=Yh3>bhE9Azv+tmHZ?@8RF;U{&(z>G0Lm@0^$D zXI{0s+K-pV>+JGE(XRc)jr zC_+n1ZnL7R)8n6dWZ6aewi+J#^Wl#D+{VxP_HyIEo|$YeIBVO<2T2cJnqK~z}7)t6^<8fO-Ukz`3A zxyo^gdw1-0PJEnXv)OF2&Ytv>?51w-z4yM$z{~&x8hXc~4+9bc3_=Br6pD~#V}D7u z&W-j#SUx~*@*F1hUc%g5q>r^}uzOAlWP~F#q zfx@xLvERk7{_Kfh;B9brelQXLqOe*}^V&iobGoPN{F$roy;BIh-ronz#ONA9)$#N1 z4j&rt&z~B+`tK`+_5zH*@AM5(VV1HutfqB(~ z1P}8K@Y+A$IU9iD=b`wEzfc25cwb=n&>#CR{_DLf!Q;pJ^DiF>FMjCW8bE@1dkSFb z5;B~&O;~%btBM`0)1T&}q^48hmVQ_Zt2-Iv* zO(4OdA7wJ*e+5C~Am~-7S$}PUz}v%zE*B; zn^XB$!r{eh1U1LHrI-J41)PoL&&R`GomVqQSohnvE*F9?^jv)TNPKtg95ish`Fr5_ zn^Rq{p4nX|m{Y9%^`Y^e{JF#fbL0r>esSr=p01;hEt(@o@WY?{^ndi!pC9|kx8@33 z_k-1sKK|o1-~QU%Fioo-CBNU+*0%T7uYCF5n%xQKuh=Q_wM)d9)F3lBGWj-Ir;XwwO zoFM6etoM251D~$KpMP*cy-ueq0!IlPy_5$zOm1()?n&M=>seX2q1C6;fgVaJ=0P@t z9~1#7YEMt+J~PWMU$~&v=hL+pkuPKn0wh@>N4;KWI^BIR_rcj|`WUZAD^Vh2%61)O zTr80iv?dGI(k|D5+�&)3$n^gMKd7>M+9Obh+$VLhW~?IDb%Qr)A%|%AAH}oG+fE z6Q_o7Mx|0ElO7i-H@PF}ZkMYQYFDufniuG<F#b3ZV5msGQyWS$|;#L0ki&Mil#8`z*jQPrK{~I#8ODu{0TRLMuh>&Y_O-k``R&h_RxY z#XWcjQ?g>1%x*@Y!_#Co;)IAqoR%lc?w?IXU6CI!OlL|$f>^UcXY*qOlLSpUiz4Lp zMj~FXH{1Dix#zM)1d|F0g1NwoohlEGGq_&uCuGEkihoHaa|aa;H&A-BS(CT(Q)NIa ziu`0?dbM8c?2bAk(Wnfj0}I7a-A1|zO>eI|n=*wo8rNOIGE+~1AV@TtQyYd1>ZNik z;g_0oEP$8+LX$F?Od$tN)81!iZl$L66qFtk4Xey%u))7U=9kOm;-MI7%6&s}GK9p? zq{2v;?th+ni8pN077<4;MF=?xtCb+c&KLvTl*B`F+Mxk4q>-@7>Af>&yFsMom$VHj zAqb;_RFFn}I>vT@AjT^*A_}Phj9*4PbMwrLT107;oG}?>hJ;_y4q6(Csh}+xl?yF5 zUX4r!ir-%rL~$U4A8|qhrj$wMiZQ@pnIXce;D6P~0b`Sv12rs@P)f*G#Q^~)8s1~#;to<51A!DTyXlpf%q?AX+LOe|LKoEaq8DwT-A z8GrZoWW8<&9`jf{xEYT^b_hadu%YB2Ibx+!{al$>xA9ITfMoEhYEtg3!-6;-+~P7S zXa#XCJ5oK;BT-70mw6Z)wyTwD1OKY_rpz%5;&@6!rGpR$N~LL9$>|X*CCbgK%I%Sr zatVNp$eGD?*un+ufa}4MTB#oSg2CQd_J5ve+#%Ip2c_BlK(YLH;6^Q`7jq!p^71>o zO^%@xhDIRf24Mew_=B(zMc4>piG-TCqr!o+dWS&@iXca!bkc(Y$9ZoaR6wE~mbp?w zNqmi!4w283T-8D;Q?%rQ=uW5YQGQQ*y-uqHWr(6Cwp6^hZr*FOfj7;7$)wS6tAB@( z%lH-qM`AA1)P(4xmEY{uI|u_Bb4@6u2@L=V<_lU8RSN}RD5`$>Y_5?H-D(AMB#rhd z%_;I5I1txAh|{`tb_WtqQUD7mXuh~6(a-H{8NW49^L~IDiMB{-H#JssZ8xm^q}9NM?V2l2PElLGaaWax zcFRgB8g(9nO0K1f#nz3DRbTAFg)J*L->JTlWXXh2w6SqvP2VDdhHYDJ-z+Lp#dguM vJ2tGisrGML^nEnHrLnPP{;DRy|6BYASDmNja6-CG00000NkvXXu0mjfHX$}e diff --git a/public/images/emoji/apple/3rd_place_medal.png b/public/images/emoji/apple/3rd_place_medal.png index edf6e91ae57a595b4ee853fba020fa3425bf3a92..f7586e008fec6f72cd95de8c52c1f273c5654560 100644 GIT binary patch delta 1977 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 diff --git a/public/images/emoji/apple/8ball.png b/public/images/emoji/apple/8ball.png index f5b0a3b0adbf039994088aa314e4fd4d4b51b134..525ac00ee330ca8d8c6ba71ee1cda83666bf9a4a 100644 GIT binary patch delta 1549 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 Z{{?-J$;?unj>P}~002ovPDHLkV1g`tY|j7y diff --git a/public/images/emoji/apple/a.png b/public/images/emoji/apple/a.png index 6f4f30ce0bb5b9f3c85ef87d9f7c32bdeefe0166..6294cf740b875ede21b7e85eabca6b67d87f2cd8 100644 GIT binary patch delta 1141 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 delta 2814 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 literal 4883 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 diff --git a/public/images/emoji/apple/abc.png b/public/images/emoji/apple/abc.png index 652efafd5fe523d9c64cd9c9e0807e483fad8411..187a3a2a0bd49cbb79e9822ffca2cac36acfc206 100644 GIT binary patch delta 1033 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 T000GaQchC=n%de$(1`}E z000C=a0Mv4ZNmQ5`hqp?_n93>ggdG!Rn_jlvJP zwucg90BOJ`jra<90AU!?8DxM1lY0fpGblrh&TAcP2Myimnj=Uu2u>JnHx`3H@qI%D z4%az1polxQccvZ!8pu9^1mrsE3*Jp9_IrdLg2u~@T%5Fs9YkhhwKr!FC#v+)g*ZmfS&7ye|kggxotg(eKailFpI-$CZFjX$K+kUngdxoFEJXV0Kz6wluZb z`#M3dOHsfiI7CuHZA_4e;N0sqNkO6AJh@e<}^xYoUNl!DIlRk$=$` ziYteIbE%`-ra>{m@Y?0aijbF_+ z*}^RilfMzx(870V;CtbB$V~5R#6aVwH(f(-P&5skwuO@U7{mMVuf`-WY!2t)(D>n7 lw##@qE~bg9!}Ur;%NOr#@n`s++0y_3002ovPDHLkV1i!JN@)N9 delta 3255 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 diff --git a/public/images/emoji/apple/accept.png b/public/images/emoji/apple/accept.png index e8cbd963ccb0435613cf832b50f0d0eef8372fb9..a9d535e3a17595248e5ff5c52505ef0b9043c730 100644 GIT binary patch delta 1076 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 diff --git a/public/images/emoji/apple/adhesive_bandage.png b/public/images/emoji/apple/adhesive_bandage.png index b51a33215fb933a8f7066a81ecaf36d97228de76..6dcf8d5132740affafe063b0136811cd6bee81c9 100644 GIT binary patch literal 2950 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 delta 498 zcmV)7y0016POjJcja7_KZgZ#~*{mi5N#FG8Kg#5XC z{=tR&#FhK4X(s#Rg#Z8m26R$RQvl*3b5f`B0n|(ll9vxdV&cvlJYDENRA=2kk^q7Z^D1fkV=H6rO!+$YZ^(g&oN9LbP(6Fx^ z(Zot3MZszDEPs-siPgdY&V3P_77{yjMahb#=%yz!s@2mnf;|^S)q+)uNU}+c6vA{7K5Z5Oa}aq>h;Yv@ zkwsvs(nZj!WD!QpY!opwrAikivn*!^lJt17?}tlMV)M;(J314X%J1+ z85v_1rKmT`q9Tf#Nfsq{vZ(Pki{aT9M>q o3A4kn!KY`u7&h6x%Ig1&-*@3ypYIcsO#lD@07*qoM6N<$f_ClTTL1t6 diff --git a/public/images/emoji/apple/admission_tickets.png b/public/images/emoji/apple/admission_tickets.png index e329162d5adde5cb636c30c634703f4c20296222..bd879ec5392ca88a2bf0b8c5677b68ca6d2a5211 100644 GIT binary patch delta 1345 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 diff --git a/public/images/emoji/apple/adult.png b/public/images/emoji/apple/adult.png index 38a07000e449067717dffc1309aa1c6859ec5871..3d972ecad05f75b12381e9a9de9d863fb898e4a2 100644 GIT binary patch delta 2035 zcmV@3b4rjS|h15$UfS+nyMa5$dlSqGk&1vmn`=7W(9= z@wzMf!zTIKiSoA}%8eBEy&{NE2$fn0dPN5P=(_X4MDe{k{eSJq_|R))JP!Z-*ZS3X z`rn!n4F~kaQ2)?J_sd=X$tu2;NJJ|S&983Y%#{DlF?eAzFBAr$f=K?#{vZGV01|Xk zPE!DQ!H+ssmHrPS-KV|ebJ*+9e3U;s000K;NklicyPvO| z=KJkrFzR~!Z)3WH?P~3hXQ(9(9n!1Ds_K74_g0>X$@k^ z41oR{so$MW0&3Z6{AnWWxZ!}C1N|eZKboxlIVEtr=Z>LZUX@N|#tEBl;ga*4 z_Bh`G0P$1zEOlQ2f~F@_E()I5U;-0hS}B}80Zn13-r(RY)msJ>^gUIwKoX%a>3Z$S z6cxY*nz$WM)3o(9>K$^xd7xyLEeb6YW^fY9L4SfY2m)gQU|p4tdNq(2KpUTivPzEsxj3PQA8p_im0hFl-IK+XWsv=h4&X=rRHy}P^ ztWK2Wc~N8zMbQOpF$}R`3=zf&9K}!dtY5c3If{xzDN2OSiY(_cvDU$i1G0pcZCC{@g%Qe6Vz!VawBuFsEkxV@7)&9JO*qXqBGA*l%G9tOo zvpmnW=2)gOR7j>21XYn9Y9JGq*-@sH%!Ns@*(qeAs3lTxt#fdf3#)jZz#(HAK(qo0 zjTz81Oi^Kge2k4*l7PD`m!i;?a0{IKAb&7`QRYR)SqM5DLKL9T90~&>oF}>vGLs4g zv^wY|h2V^lc_Op|1_Trw!fE(g!h#fW7_Lc`&UL{_38J;I`_HKXSK%vowU-icfY5dh>BFtE8HfrA`tx0DweEq@us z>Nn&N`lE=JX_yq81+P~jtHOc6A{7}AX&WX_{m? z0S-&*&)O3;ia`A-vFqoXKUX+Ce=JT5IBU_8)P!0BS=Tg_Rv_p= zkN(Hv^0wKW&fD-4=koS;S!_0M{+R%XXvxG6sI2ZNNkjsm^f+F>zs){2o6Uzm{iV7v zI&VH^Z*crLJJZlu0FmL>_4+v`f&hqJmPc^&zS+DlE>YDk9JT;?KLO`G8-I_Fam=`2 z@#rgP6jKDn=NY;|or=qBaR=jVXt;@2qP>09h5M(QI}uL7DcKa|Bg} zmTx6LRa5||^%c}oiXdn=Uiypo)B8z_<8m1tureI>%jM;S#|1wxXRB1v1VG+b zkVloZcpvTk<;AU#$Jx@~-G9=Kmdo>EkqL>MFb0sI^xoP}6?33)7cKqs#}UGc%A9v) zar5!=a{M@6mi|6WW5p7p?tQN5KO@KhC_L;|_@QXEI{@cOf?wu%INIZ%JODuwZk?@b z1R&;a?VCyravZ5rh>r+mgkjU}rH!YcwhDzASD-p73{yibVHC2y7k?6(b+wh03boru zs~tkF7z8N3)@}F>@+b(!+R|Hbhu9pjvNXP- zVRudAkNx|g{*OXpNa?ShXhLI{W+_rjOQDO1@x_l`1L(2PjGE7ujO0QJA?ei+2*}jt zMU$fr$umN)mP%GgC4c8!vJ|lusjRHXnm}HnGvO?`&Q-3k3I@IWWC)JwBA1=}pjM)_ zwpU9iH#J4@FO{WOS(4?s@a}`!QtMozr5or9xMGlN6ysU0n?OUswdS{!oRKgvCQadm zix8?ZgrAsXt08P}2*C=AmMZZgD~ck^@Ri}(0T@ik>Rj_5kADpyT-=6jnJ^XqB$37Y zPn~ju9+9J%1nZBTUh|i2IQQ^K90@iYlWcJUEpq140S>laJa|9KrLkH4e!C>4xVw)) z%rXPiD~EWUKK$e4-@mU9EmJ0TmK0@-g0Po}!Mf_JYqRm=u literal 3830 zcmVILbZZ0x`;8|twFVeFv68O@Wx!^v_-*>HMxf|z>hVcb1C=DRQStL`s~f(u|ndq zME1x}`s~c;xk~uXQS-!1@xe;ww@Bo*N8YVK@W4vjszC0&NbI{u_{vb@vqkE^RPw`2 z<+MZl>&olFS?IS#=e0!i#!c9zJ?Xeb`Oj1M&sXcaNAS;j^~X;4%u>vmIOVZJ>by(m zx=rV}N#L(R?!ZjOlsD|gX6n39_sUWF>&M!tKK0(Cs(CEcq(0!VL&A_X^3{jyxkkN; zGVjDq@X~+m#9#U6z0;sOm}VrQZzr*UFYwH4`RKs=(p2B7Khd2!&73;+-3Z0^i*@5p2O?a;4#E!U?&+^s}_P#gEkP5J4>^xK*D z=DO~_O7Yf??Y&8gSRS>3FY(TE^VpH^#$EE$gY?>!_|aXthcR|X7uKRY_TZ@X+@7Cn zCeNTf>%UC+)M;=-7Tu^mJS7n6z*(GXC5KfVzK%AITp*QWBlO8q6cGs#5DR@x8fZQf z``Usl5C`|AOL$Wu`tZ|QL?QCVPm*CG`{I)P@xcE2)&BR(>D;OH z%VCjUA%s*OVI}0iXP0d!qj@&p!hF}PO~C!?b)V&_Q(5p}^7FGq&YZ!4J*&F( zPmtYQr5H7jTk^5XwR*_Q~1wrerQ;(@fwcGBr z`~C?O38CHYXP7_#dGP^pQO zuX=jJHfO~28>(fW#O9va7qFPP@Sfj$OXE$z{oo4J9n7*6=(Px#%dsc0@RX zU_D7q>dmN%o32|t(;DBg>WpY3S2GJ>zC{X?1m6TwGNK zLRD2&+&ffPm*&SGJ9aF(#MjY|aoOm7D-T?g`-4)a5ROO3=NA_jmzL&QDJ?B6wvrE` zAeQK?tgNDx4WQr)MLWi-K<3>17@@vKd~G}{`Yb~HEa3c@m1sngbt)$2R7%N~?GD!S zmTBwI&&EJ%lZJb3JO=bx6g@{#R>~%edd4Z|RRL~?)x2S4`kO{428P6oMRJ-R?HV|^!W-Y3al;=D{4gkv?D=iV^Df} z`oO@zFSfcmP-Hf~P9$rUb;}tjq}VXwPj2%>>wKs%jE9A70xHQODwkhw?yBfAMz*)7 zTWyFdF;Uai+$z(FVMrioFclgQ5t{%0{QbXj)d8@=2h89(RWVf<+QeiZTAyZTPTN>nsy7tK9$B#$S{rvps2sWEv zWF(!QXjF7*u+YCN1O`wf0^=`sd+iTlFbpYbAPdpLrdutMezVNE==&ohkMFO;6RF&; zD=OeId~AP1`j7y_42?L{f(_*PN2b@+CDP|ivo=3^BKU*C{mh?0`;EV$4`PT^VVgWz#83Xz{(iJ>6-QX3 z=7bU{{)F#-e(=q`d-q@7Oq>^re)HvvOXn^+I-zJeofj$vQ)3ukC$B}VU-+P1A4bqCMG*&zM@A+)IyyVG zQzqHyljpSAK-sS*zST~F_H)hu85+4Bi-Ht#=OPrn)bpdG}tk3MnU?Vu;+*;Hw2cH41yEuGCI4S{)p#z_CGv9tgO7?ZW3eO>7#uP@dSECy z9Sn_biO95x0<9u5QftlUUW0Ugw64GQG19U>_#s;O59BZJ5Z$CPGbk@dRx)^*r`43Iv8VLvK{SK z9qbPw@ATvMJ{~0R-^nb^1}#79zpXV5RR(>Ck z$7g51p7X;kPT&N=BC^>Sb!v}q2bM3q7AH1>-G@(j6^oW-iK4K1{NerY48QG2f?#u0 z9zCy(4%U}k7giJW4Ywz7Yaf*rY=bc7$kF-dFT>&R`0I3=YeOuomeFR$m)h|Cxk>O| z52t~o5>dpWsOq{N`!PM7#t0#fr3Rd6#P6cquD{&Yz20ldhE2i%(sXk&nV9BaV(J9; ziZ!{6O6kis5i2)=Bx@LB0wh#zG`Jz>0VDb>tFpOT*x5iKlh4F_1iDR07*qoM6N<$f*^sEy8r+H diff --git a/public/images/emoji/apple/aerial_tramway.png b/public/images/emoji/apple/aerial_tramway.png index 7134ddb1688771d263f83b2c629ca5680c136f2e..78c2f55c0278c762efafe1ab0462d6ed97c2b7d6 100644 GIT binary patch delta 1590 zcmV-62Fdw`6~+vZBYy#9P)t-sM{rC;Lpg7Bd0t^-#mLQAS67gdqIGtCT2VQDgpFfl zW@Tt@ZER~GARlRIX)G)(HZv=2ZEsgqRaR6_WL{2yf`{qVbyZhZQcp^wsIXjPX-!Q` zc6M}rfQIhiigk8*^X#%hKQ~E5K4N8TPF!kEO-W2jM9#Nn;eXk~PhWFKR$tDyYOk0@ zIW{rc&5MMFk8Evo&$nlvnu^!JSl!Bc>*&p?ri$m^u)n2O_uF~?@`WirSVUZaU0z`_ zL{~3GU^hruN=ivUJ1{OiP12_V_{%pVIad3~1Xfm8>bwfOm?+@3DY1+NJXCnyumU$s zWHd~0+`B8T& zK5mC#vVw-7e$u*H<$vek8`Av6`QB5!-OiHnp+oyx=ivURj;k;L00dP@L_t(|Ugg#Y za~ek&fMMhVA+bZt2i^sZ09;A;@kwd8wgsPMFD4=QvE!@Aw>JJOLReoY@0zwDq}{5bm3 z+TVCh2-)84-rb#yx-1q7#mkcu`0Wn2^p+Hw6l=XQs)k$U+ri`tA%EnI z@A1_=J)S>A&?&zM7hkR>lgU>$17TBR2&B{f!VN&E@}Zbaigw~vo7v+fL?8x1ZGbRS zMFWWra_EW|LD3sRhlf>JOx}tzImBM^+*i;-S$C3@P_hif)d)I}tB65y@+%uTbS77a z4u9GLs3`%1k|`mv%4-Z?UTBq$4}Y4R=7=ICBuQl+!W$Bxo7+q#lgwl|PUJ*#D1@Mz z#?++db}5A*F2g}G4aAt&cPpdLL01d8J_Oa()T z`I}Jv0n`&;(m~SWkVplcVn}NQ^>9>>5kt~r5GRTUP&#IL%{6h8+ok;OjOsa)GOPR(0GI~1WcupdJ0sBtD!?< z=@%NPF%CmIr9l%E5R8;Z7k{)<+Rj7t&@_e`7dv_Y?Ofv!2GAT0G-8g9cG^Rze*F~a z!>D#kKfHlO4FT|8FJ0JA;}6)X(?MD6bU=ZM?SfVtDwRr$R8XhWNe{yZzn1m{rc%dq z^OO)!59)N_q?@l-HVC1WrKRrfw_WaDqTmo2CcHK0nk5Gb-v+-bN-tAki4R%{w|nsC o#eD|Sf8C?$w82$_W0rxumvHokGBme*a07*qoM6N<$g6%8xuK)l5 literal 2694 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 Q{{R3007*qoM6N<$f>>}cj{pDw delta 2248 zcmV;(2siin3DXgfBYy(`P)t-sM{rDge{W(N7z-2$GifDKQ8RLzY(H}$0RaI40RbH# z4vv9wnwxhB2na_W8(SF_tZ;E1MG`g<5Gg$)TNxFtbabd`Xl0aKs%~thYGhzwU}0Qb z0|Nsj5(!@$7g~`|97YplWMpWQUshOHB~cm#1Ox&C0ssI22!99&2?z)n5fNKkTOCFc zTNxK!8y9VwWLp^(scUL#V`E!&R$*abV`gTlY-=o69ieq>RU;Q}foUH}5(o$g0RaI5 z0s;U402)CLQ&Ur0TU)Dea9kS~9S#l$3=A1S4QiBOXOUoEUtg(lZ*7!hUXfH9LJp>C zXKq%SB+N=l9>B8DX)Xq#TSJu^m+G%;-<%9LZoaa72FVYWst z$7N#WySVY@-|f@T;>fArsj1buhJPa;oh>JoD}N;y7Z>NiyiSWj)0ch2Xi@6X!>%hP z!#gwLva{mDu-&<%+^wF!TSwc!l>Pko?Agn`OgbGPAjoQD_w(z`u5HYUa@4we#bsU1 zoondXwlFX-I5;>xJv}^oEKiv}SE5L{URk|!LD!p$$Yy4|d_*G?5-=GUHaDT0?!N;!JLeP|3MN(b>00k*YL_t(o!+-79XIN8L7zc2{Mp~di!GR!sKzJOFw(dH+ z_uc~t1PCA+G({0fwTTS`n+q6IpqKy|3_}))B_V@S_8wKXEM+hE>aIOEH^HE!4Y&Q& zhyRD0Pxp`tZGV>q<&WmVYc+ zzWnvq-rBKXR+z;ihc}&{TD&xE=^rH}`T6--Sy`>E;F1rx58mE{G5nUDl}W-Dtm8$U zk(Q8cs!ks$G2wX=eNFZ`1-?6PHQ}@W;C`rZ&;kBGcq$zpUydd z? z8NkTE5<#Y*{V@at!bQ?!ra|65VTp;CE?>El4!ojtkY9d<37vrj0uc+x7=H?$8S?h_ z2@DE3I5?Q7&)`uKDTPWRk@N77Q;5K;ifU(;;79AD_U$-JwB2 zAt51Q&3nJ4rQCxebcr^Gbh~W|0+Js>!4MUOU?&<*1bjJ;K*+KA<8ZiOLd?vN-);cy z3u!(Gpg3wAa3Z3~G$xrwV}Ak%dmJ3U?${0?kbf{C{2w8592ItGP-%@&Tq9<(@}@yi z=0Zmih^CUTyM`29Y<3MLFB%m@Ap?k}5)=y90#PHoML~{6psx`q7=})o1;vqQDiM3U zMkElj#wGFsCer}zpB+SsW87{OGejbh3W6ranz*b7AoFf5g~%Blmw)D!N`~5RF)H~L z1=T1ahOB9fr)p~-?pO3el!_`YFCG=dB5Fn^XyV?siye|$GKE?^Qd@uyBFifI)lx}L3L`3QT~KP zJ5a6WH#JqXF_`?D8ZIhGD(SCNipi?G6&$&?Ls(s)o+w52KteoC<%M=>)o^!jOGj;C zk5*d+p@P8k$Wh-B);6-)xAQ1%EyHy}=z%g~)}I#Qj@)dh7k^VqYeb564VPcZ%0pL= zSQ&Sf^;+3bp+dm!;g4~kXtaf`Q`ErWG<6pi77DtCN103`h+uxrhAX6$H_}w6Y*g0P z*0GrsGN-a61AmTMtDA zMJX7oEY7EADzPs1Qxn5JyvpPsO zvLTb!zL32?0|6$0@#GVLuroD@TW{TJfG}<=S1fzl*Z1Dg78(@#6Ce=7+72^|mjt(! z&#YLzYeCtnN8zm6wfdEp*W24Kv_tpiV`XjaI3JE9ya){D-@HT_wsG!#axQcE-{&u$ WkIt8E`|g7P00006_CiU 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 BotXdt diff --git a/public/images/emoji/apple/airplane_small.png b/public/images/emoji/apple/airplane_small.png index 2741da3a5b1d590f713354876e8ef98357083da3..9f84d3ea2c5e0b7b5c3799e9e21271c4156b57bf 100644 GIT binary patch delta 2353 zcmV-13C{M^8oLsZBYy!+P)t-sM{rC$KSYO&lf}r%ueG+o#l*zO$d;R(Z+n@@%gkbA zWlngm$<5AseSL_IlhW1IVrXyA($mS# gwYa&*%F4>m(9_u2U1@@&r>J~=fa>n= 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 diff --git a/public/images/emoji/apple/aland_islands.png b/public/images/emoji/apple/aland_islands.png index e33d71de9a98b7387e5f362241f6fb76f0d2a420..46cd6be5f9763b585d450bca06b62c6f05d46076 100644 GIT binary patch delta 1527 zcmV{jRRtzv!TYaBpgrcX86m|+9i6Ak8GbNUAA;f2N zePa{Ox?{YZb+e6GlY9~}TZCd;CB%_ygK!+UX?@c#P4&+iAAehx!l4oJ!ywTlPZv{- z*-1zOM1~Pon*v3O*fCQ3)F1{)jTKs-2RCWpw*eVUf8Sk4A8E9>6*fV1qPeR?=*u$8 zB1R8Vm(8&$2uzVLVUas&m^E>%Re!6M6fO!+lo?*5M`dkqihjstBcYT!yF)G7#7w)i zU6rA2)`cR$8-G0|YOmw4A@Iix*sle#3NL?yQ2x&m>A(i5hYSWkcmP9^=7l)pc02#t zANH>_LwK&-l^*JoL$oL7S5-n%3!}lk@}gf@aX8QUt0a~5=~ryltXXcC z%c;xdp2BcB7rfrJ)x|}NrEWnEhh=ef&AZ_INn>^KcT}&}v)OF5TCI?()vN{Df(lq& z?=Qu8T|MMPJcJ5{UWL{W`S$t9Jp*H4@Gp@4wqygCPtMFlzhz zU}C{yvmA|vLZLvkEC@oe)nkL0ru7(<|z4hp@2E`P9GY#z$8YQuc~isR%|M1zn5L3$4g zM5AS2Q9v!>sfB;f@%)vnKxxfU*A|8JLnssiRc;oG!C)|ka;FM(qd~|BHQ$3E5eO6g z5SpAQWC9ht{8z+K!+p(52L~lYowxT9M#PHMwQ+vTk>bMi@+(jzKNt>2 zosOeY!9$x&w%gAqy;34E2|>q-v478WzYiqo_3~2%#HeGzE9o1G1<5gTS-wP3U;Cst z2|>~>KfM9eJDVD55_^s44mKPkP5m*l^xPAV6bGFm4a(O*0Q%5T8we!Z7_!ICnp|!~ zp0%mYZ1V7z%RXO)B*f^`KgC-_Jt2{LuuV0Qc0vY~gUxIr_R3~&+9?iy?SI|>aj0eT zrZs$xO!;2ZZlm|1kSW9%q&QGWfPUuPPYk9A^eMYQar|81Yp7`s#Z-vL_Ynwz5-{Ru z>9u(L0<76*O^kkM6}W<5l1de3#N#%bZN+1^&#~;D6&tbQI%o-FV!`^6a))PQ9L{}F zJSSriVQzU|_aW`ZuXTCOV{nUmUjOL!uqi19%}45q;`c_QvA(4elJ4Y=dW8B3rTY*T&}Nyw!v-fn8SXJj-enrtu*D dy3Lw3>pv-1bLUi9fc5|Y002ovPDHLkV1jM_-C6(u delta 2594 zcmV+-3f=XH45}26BYy(`P)t-sM{rDnQXechOMQ!(4=!11f}ECRMIS(A6)#yNL~m_{ zi)e+Y6E0E|El(ISQeu3ZZH1#^ewz|2OA{?l6);j0D@zhAPFi)AYZxMaDKro&OdL2{ zZ-=8EH&%XPC6IX}rjRlZC`lkaV+|)saEPT~c$RI3reb}baes=W#ISmhd@HqQcMd5{ zVtbiGVu&3#TWp7>UU-)sJY-vSmu!Zlm4!E$X)>UYO>svlX&)=PnR~*VddjQKKd^(6Bo2&PuB)Iv6}}Gh(3k)lVf)iGR4QSKEt9^VLnrL{ueKoJVq~ zPIaHxh)Jg>H%oDy^wCbkIa8n_GQ2fRwlPEO&Pm+ALFdUv4=hy8Vox$&mli^d#ynOs zT#?kaJ=?W9@X}4?zCl@isa<`XEnT4>Op)2RJ>I)Mxu7{8N{A~`g4MG->BK}JP?pk< zKH|hf#DA|zNNkoLLUBK1j{e(Dxid#DSBdk@N4Kg|?a4*4F+wI-r01$ln4faJJ4ws2 zM9hgg6ERv?beBM7ls|2#FJ`kEM~<&dHpHnu*~MQsU5VG3K&!DJy2N^I)25CHMplrsh2(9#7=}X zG=GdqBxYqi%93NjdvA$cGv_AsDO}2 zA|eRLiXsWiu)^Lmf*?x}L52v*5M)?q-P>x{ecm?-39H)Uryl+vIh^0Q&v@^BGGoSc zrZb&a7ezU_nNpEc{11klit2);AFWvS+44BZQHa*(AHM&ds@zK%3zn`}_Q4yF*ne1m z|G>^v^F z0v4PZh{vy^zJA}`yLS&pvs?r1^!246gDD|vN)p?VO65kNczb*A*v$yr=YQtxb}$G* zdU*7=Sy>^-#L`SRX)=gRp(N>&NS0I+6AN>51LJ~x5k!}QK$1YF6o8T@s0cy2Br{7} zF~k7K9zp&HB0}_V$Xo=GCxLWEAp>LM-R{vCv%JhG4}nLGt#X=x%0v7{kA{QM;l zWnxHF5C$CW?Woo|abDUG}7}g@Bhkpk%Ai&ep^Fj4scc+&$bmoE=TJVvKjHd+!85zCLIQa|)4v7q( zUk|p?BKO<7g@ojW7I`q400jpJdoqWsZ+$$vG=O+KUVK7AOiWBlN+E>7h~ADt$Y}GW zMMlyhX*8OHvrs63AOTE|i>KyEptAo`oPRJ#VSj(Sy@P|VZzLEr zUo145vpuQ^Um6q?9KbA+g?v$KN(O@z>Bn0Na0*?}vt z*JWkh*9Y%aKNwdLKu~7@lj-46R1_MTo0}UF;wFM;2NRh_qr*y*?*jZ6?;mcP*hNe zn>|2nJ|bf~x=Mz0mOFzJ-V0wy4Z4m|Q3(lS?$MLM>gr*pSP}|hFWLv3vEw(S!;Q?z zp+~#c_H>k9y?;5ot`0uh=BB2hu91v{_zSZ4h{qFjwtuw1Hm1RTm&BxmiH@H|r{@^f z*LIYikMpb4hp)f5crVsQ4xv;fKfKYkQRW^A1o6_x&k$comSHq9T;Th+vm;6x8woWw zBZ>|`)l9mLJi0bgBZxxR5x=uSFm{|z!W zH=&{(vc@twWF{He`O%}V5zMgi_J+~u$ZqV*%75C0XRCE1n?2PdLiDT&0VtaFED$5O z@S!^OWi_<6ww9M4z*1grv#YN!Yl8QYxFRtm3^~i;^k!4@lAWBg8Wt~}KVM^^_9At4 zH8nN$McPX==Bzo;+S(umfxOk)8cHIW!HC4ptso`6yQt`5HH_wFFhE$RrmRFzkbe2f zD}O1gFVSpWFaD!~HdJW?7A(0jiH)bLCh^v(=jWcUTJ__?b?QK1&*$+!859Z1%HoP< z5Y(1vu7MS|+Q0^8p)@pHJG1J$&70@W`)LzFL4L}gC$cy}d6Bk;rsfk07*qoM6N<$ Ef`YrqrT_o{ diff --git a/public/images/emoji/apple/alarm_clock.png b/public/images/emoji/apple/alarm_clock.png index 794fdb0913222952a5116d8e8c5ad8b5ca96a3d8..e85b51e78cd430a09440f7da4114e50ffdd49fcf 100644 GIT binary patch delta 3474 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 AYybcN literal 4606 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 diff --git a/public/images/emoji/apple/albania.png b/public/images/emoji/apple/albania.png index f30603438b0475ea628a0fdd21cf199a5529e8f3..aaf2199c84e2a770f6dace4ca47ad06f643f8ec7 100644 GIT binary patch delta 1100 zcmV-S1he~=7vKnxBYyyLP)t-sM{rEBYHqP@aAX)9i6<;+6c~RwJ(5XHauXPKDJ^Ch z9kg+Ewsd!77#v~~7hV$=mq0|dIY1H~9fvP7(>+D7E;Y$EJ|rY0nl3ZzK}t_4DrGG% zI3y*(E;X|uD4iJ~x+gD&797e?R;?Q&u~JvUXKbp!)!+aC0Dlp5QchC<_}5*c`!*A< z{@7@vgrAw5@~_O+000AwNkl3AL7=(M0#xb4sU$|3VlAQN{#SSUibX+yI zdsP(v3`o8RKFkalMfu~u$&DK~9vh4C_AeES#naRC^WELAiMzY!r>Dm&9WX%fyYf{b zd@8U#EqdG^n|~Y}-~%|K!8QUl+xz3*^Zt&6GY(XN16Em8RM z5NH{`THiWhTXPx%k|RgOX%}tq`CM=9v1k`sU+mYwmr2nbF^(Q`JrOt+Z7iYhNL};e zt0`a^iIgP-(wK@i(V^R^2yU!L4d*`GNK1li$fa-&8h?dN6SYWl)gXduy~d9W4L4Mc zlVl8X81_C<#9d+?sVCabi(mrPQ?a&iVoy=q)uiODhQ4;+XjU{prX-{4eevGmhLwbZ>_zJz5<#=C zMv+jAIe*2>a1e1dp=;1HiB7iWOaui)*l8k#oLzM8(nJ*%I0S-{d`Fxb(Qnn}6ZMH) zu+Ej5g}bK&q_bT#e~x-HP$gK}pO94@=o=x?Fqde1IN44^aMI6DOBW5+zTucDo`GBEgl*v45#}3BJ^GbY`O(Xm5hWbC6?CO2ni& zsJm_>NkqPIk3)roDLQb`M!lMpP)y2`NF*=?=HjkPq=}hwmYmTMB2F5GA_c7Yvk)giAK+iBy{U4nS{g~= zx_^zF3kVR2Imc8l8Z}GES=D_%M`s=*P7Ow(B&G(!LgKPSbi3pnfo*?`7%2s_MDn2I z?2rje$LRbMa;i4uEQnJ`O0FUkbma6c;>;7$4N;0~zoC+n_hdvtPqe=DnLVhn>Qo~Y zGVBw@e-PPoV-K~2R&q)v_dvbbkAM4nxqnK{L_%C*>=T{5)|^c=dO#%3qvyko9=o>i zj4xXD!bD9agiDhUSsOywY<7*!X7g!h65$o;;F(Ml2Ze|+4@c~FA;^59gKC1{m=s{O zTE4y9H(p*|SIuRPL=Q+gn)*mE^cdCfa=%zSp1yzIFIQ&yxEH-bTq^_AYXlgk7)4z% z%j5n1(f7A8C6Hak>|l5p9asI!0oTjh3P5Kba9_S+3dFdMUU>o`{^#7dapNzt;Q{U| SU5xqw0000P&K-|Wf>ijFM|0j`S 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 w)#}$PgW{L@UoCljkN^Mx diff --git a/public/images/emoji/apple/alembic.png b/public/images/emoji/apple/alembic.png index eb9de8b00344ec6d6e511c4dbb7b38bb5f67eafc..abcd6ccb3ecf379398705e979db4eeccb8575e2d 100644 GIT binary patch delta 2475 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 n&%#U-=JQD*@$ZyQ{AcJxBvijz05p0JMaJi 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 literal 3628 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 Aod5s; delta 2611 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

u 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 delta 2759 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 N002ovPDHLkV1n{dIsO0u diff --git a/public/images/emoji/apple/andorra.png b/public/images/emoji/apple/andorra.png index 7797768fb43284251b433e8ec78a44689f7d2609..4214fca27603795d1d28068412927558cdac125f 100644 GIT binary patch delta 1433 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 diff --git a/public/images/emoji/apple/anger.png b/public/images/emoji/apple/anger.png index 9e3f4c23cb0f53da3ec5eaa0b4dea2c4ca02dab4..7024f00d0e2ccd03fc6266e8f808e9b635e0c69b 100644 GIT binary patch delta 1214 zcmV;v1VQ`Q6wwKgBYyysP)t-sM{rD@004^s0CfNW=}Jpn004sk0AU0GSpflj008lH zb!Y$pegFXJLqe$m0MQc^?sInRVPTR00IC20;1Ln90RY|@7w~a&%nS_J0|f15WbI^R z<}WYnR#nLd2kmHRV007GX0O%YW zxBvj>4Gq}<0Ou?#>6Y7(0000ebW%=J0OZ4k9xR#+9BB?oujqy@Fre4$n5b_}OXiMv zyUEOG?XvjW)xrArV%AI2000BUNklfD3`+~(X6jkynQZ$s?F^V@`=@!3N1>-b0@Op_1d^^1 zgfDfbvG3hDr>>RJqbXP1FoOe~w(CHSf6o@!W zTI+?Ys27y@+IZX0&Iz{)1pdGw5KwJoM{n;nn0Mc&^roM*9@p7Tn$bEWI3+etasu0k zq>@6nwzXPmvDKhr@Oh=;z;El2-hb=omG-Mhszx>tlB*n7(wkl~67*&RnI+CuZV>(l zAb&M%YH#h^x5JE`*A1rAtT7NmygyQpF>a2ruH?fL!-{skjP2nb&p}2WS z2IYJccB2`F?zOzQLN~8&@=L?OBuT-VOTOu5UvX_&AUp_(0p7})OyG_LYb90=5+x2{ zYe0k$>IKi7dCu4qP`|QR_WZe%1Rf=Xi1n-IYs$Mhb4cyP%4z+wqY^ZaQPj?voqw2J z>;F56HA3+m_3b#5GqnJK5CT$)ViK!UGsBStT+@eCP=1nTqjTo{do`7zcpe8*@mvOF zT7R=xH8y7g!PN5u9g1~O4t$T|2MSbTb%!5Pa~~OqfgzvQ#Kc2KW&y&Bp;s|Q1t*{m zeyb{s30?)3!*&|1t~bNKpae=6NKVIjvPE)IE)XhATekKJ(_Y3k7f!3q63LuOk;u2mrz> z7kCs5bszwr9~55?2rK{q*j7`fAQoW{2uuhD8UO%u6AY9b5^@s^S_}tL3vD_1#J@v!YCZvZfTz%6`~~*#ws1FBNpC! zcj171o*)&*rRJv7icFWi-t&OI~RYGvDC zTd5)z+hkz!^DX1Y9)jc%U zH!RjNCe11w%qktzLp!@B8q_*4!YCWZDIB*Y7}Yl{(=;g8E+E!9F4Hk3(Jms$DICEk z8-LI%AJi@(**7fLMLkEG7CQg{0Mv9+PE!C6<{knrn*shC3BLpAPYEFWV;}~T=9oq@ zi)!ivD^-dP6Nn}Zp>rs4U&Iq;Bq9=k9(;{4x35Ow=rajt?beYmMWcqz~#Em|lo2R(IncXxMpclVaMySw|-+1)J3CL!5`1cDSR*7lLvSRuR1 zxA)<_`M^2M{qJvg?!7bjPRz{yGvnedZhd6jTNharw;$iR&(67j=kaY8$-P|Fqq}UJ zyN^`4_gFL!EAi3?tr(ZbZS|lOuYY{V0_q^c)Y8l6Bj^j#2mokB{V9X=0+hw4|`Gq_mt6qo{UPD33R%4XKf9t>Yv@kq!ma z+M%Bi2_ZgzI-`VIvZ9n`d`I+{m zjh=M+6pn~ZVZ;c2>a?EI=6_4t&ypV>+Uh}eo;*xlo%1Hi9J)fmsy&d4pcRR};y)n87!8IIMa0=|&M^)L}m3i$<_tT;M_)88r*1xS^x z^)K1;8Ps?M%{i~*&@u%!PQ`EaWEUztToA_b^^r8FwF|G_uCjv+64uAgob2f zgoJto2H6?Md4IM>jmcu`WRhjFS`+fj9nI@=LN?!#sYwNOvSnRcs1kk>-nu0_r)6uH zXP7e7gfV;;uGy_X8h>oZ#<2^QYLo;%E8LX1X#t`!XKozN1{%LnvoL@ZG&O1F*i)PJ zdvF70PJ`g@)aJG4n6x|212Fxt8B3T!OJ+cCioiTa(}D#OK3w{gnarS>Q=l{Xk_9vZ zhYi%)u!)TBwws7iE8E~eqiAMNDag5vnLv%_lGOX`o6(((Yk#Oyh~I836KL#jlnh@( zcTRE_0~l7KV`nB%=Z?@tnP4$(9bJ?KC4{0U6R4+xQe`com8{i*ik35hmKSM3YiT7- zbf7s*pgB5F6E+a8SjGferoh=i1M{G>@u~?-pb1qFl$ke>R?-{5(!rOnW&*92!wnz? zy=klDXt*+f@PF1bf!6cjDFKMlbm4D2f_fD~o3h#sK-D~Q1lOk1I3C zbq@xegblMXY46ty9uNGgT`WC&gI!f{ZDg;0CWGIXq<`L%^e5Zl-#&@@cCxRjS4RF0 zKM0ZRWG_cMB`}r9KO#*P&k7iO#Dc?KAUPJWV+9o^%5wB^Xc9WR)Td;-IK$(eI38Wc zlu`~k#V3p#XrKPRJ;rn&KD_&w9=`p3jN9=O#gJ5tRLw{(-jqn>f(tAL@ zs<2R%KYze`x;4J4`-NWaZrsqa{=VK7CA*p#RH^q=HZ7)?xlnHM7xVJd4 zuUc)o%~n_MJD~3lIc^C`N!2Aodz|QX!OAOLA1N>P>|@dO$+gI{Iu4Er@jQj3KrSzkDDrS2hU-XYBkOSyKUb=y zAb*vzZ5FeqTE(td5oAvqJkTL(x4TRY zQ6ziEYV*9TCd09;qhTSOI{la7FLtdWzTI`KrdeL0Z#JHxP+Uwhr68NkvQPL zdcgvECK6-n*PfR23QNz|YD_G8#sYeYlu1dFJ(x8f$&xbUB@5_D5zm(O2HnV(SM-EM ysIyS%-~$;$Hc^!xn%_xSn!{{F-mJzD?( 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 M07*qoM6N<$g3j@rh5!Hn diff --git a/public/images/emoji/apple/angola.png b/public/images/emoji/apple/angola.png index a2658ccb9f65ad5c69c4150a37da979988d41aca..5feebda6c6ea5f29260934dcf056a57cd984b6c6 100644 GIT binary patch delta 1212 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 T;|{w600000NkvXXu0mjfM3NRE diff --git a/public/images/emoji/apple/angry.png b/public/images/emoji/apple/angry.png index 1675683f8bdc0cc49eb144225d9673da1a8d19f2..4539eec423be1ead72327af48da9aecab22412ea 100644 GIT binary patch delta 1680 zcmV;B256a(Xc^%GtAIW?q$ABr-eH-nM z7szlE#B2}CYzy3c8QXmY--rp-bOL`x1Zgn>kW~hwX$#6~1LL?Yn_mjiswujO9qh|D zuz3~AmL31)Y5(F>`;`O#*+&2EfB*Mz|M{H%`>+4=S^u~s|9||!{<0eX$T$3}5&yaf z|M-ai>_h+k)c?;4_N5g6#w-8OIRDu)|Kv3P&Mxkp5dXq9|NiIyye;OE4BIAj1^@s6 z4|GyaQvmYm(42NwIuwe^oUP-nlV|F>000GxNkl~sw{RahuE$ts~;n~ygs&V2tx>M zXpeQi`vF!mK!(Fr17NItjLEZ}l()$nqm40sdLyg<$jb+q4`L>6oBda8-&iePAE7D+ z+YEoJX>}NeK4aB=r>u|2=w?6nMI8LhH6u~=-G8MDS_ih-gOmn*qu+6<;~TD9SIJ14LmEVIWzR9KA}|Ib11aZTui^CbjvwuXRWg?(EyHFoETsJ zE*0o-d&wn{5u=?pZ@kO^;&vSExL7tZFc{HRpL&^cELo%6}0N)06^B zI5XS9Kx7D#&sX1&Y`YgVQ`2H?GZQ=tolbQ@(to$KoJ@u;N;pUPX=T703?Xo^Kh@Y< zi|R-e1>g};kHj96O2x{R(U*}#XfQWJ{Qv)J*4}kX2M&GaFfX&xG>zJyYnK%vX`1{Z1BL%_F#tRKE_g`~rfZrB&~>-`%$|T)>TkpFIjoT-jAxk({7$Y^V8NU*BiDNc;1fAd)~4#F1G)(3pe!tr8#_!YiA$Z2`UB=e=EPK+hVL zSi($2k(H#CJtc4pGwG7#@p^ zL$xV%!4kPe;!0kcNK#orj+cr|tsI87n9SxF=}H)mC8qex9iln(0}~i_Tz{b`0N`hf zLR*O?rVK-AIGXVeLD2@2`2?usB~ad)W~Jt@jCWAz#DK5lhVxPbXnK`W(AOeCYv%>$ zVz#xfM8lEvSazCo5pzVf>hpl(3;7&AxDuwT5m0R1QxFmXSHhkRgFeQ=3axUySP7j# zkp+jCR8ysA>Ze(tOR#o$FMqA1dl?HM)1)kulsbjbYjSiSg4`Zj562QyNEpXhW28Z9d?Q;TV1LX7@w|$JoH=+WBZ$v@)U**5* a`wvEp1(T4X3T6NR00{s|MNUMnLSTX)8YL0{ literal 3635 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 Q00000NkvXXt^-0~f;f(pA^-pY delta 2692 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 e|0@4g-+uv#&pS;lpKdz<0000ReyN^ literal 3782 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 M15;3)o@31a08I$u761SM diff --git a/public/images/emoji/apple/ant.png b/public/images/emoji/apple/ant.png index afac68ca126f74adb1c22e9eebdecff022956674..c96409280ed562e173f1db053fe08aa0aced80c6 100644 GIT binary patch delta 2152 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 Ta8Gw500000NkvXXu0mjfIj+{ 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 LNkvXXu0mjfduELm delta 2594 zcmV+-3f=X>3#t^5BYy(`P)t-sM{rC{Gc#^(Zdy7!ekm?!XlPp+9&H{SfGR<078q%1 zX<8Z`To)T@8XZ{~9br*eV`F1i6&P6+8E7FUXlQ6#8XaCA6F9=SAP~4WkN(;TwHG^Dr;+N zc_k`kWo0WfGg1;1TU%RK78XuUPFh-8kt{NEO;3Is99vskRZ~;{|NlgV$e<=DoFpfo zB`2XLDyb_lrzO8y%}KHm)x;`uqDKAtAIiJEtlx1O)}HE;1Dq6ecAlxjaJ}8X2oC zG5-Gk1_uWU2?-q?972P}ygWlYe84(-y+MJ)4-g-uCo4XF!4?)3HF(0mKuEPJEU7Ov zH8nOlIyyIYx?Egbi!3o07a*@OH@-bXK7htRK|xkmRew)UPaPg1UKJOYBqw+q9d;%w zHG0+u2pobPA+k6>!9z*8E-`H(B@hS(ximPSGB-PY$VNs+WEUELA||jZEsh`~$F)lO z-CBqtB)l;+B~*htfztivT>auxFD@=8DJ$~UR}>W;s-8yG##5gxF-S;AKZDMKDlf(_ zD`;alFn@Z+{PJMl&sB389+fXO#WXc34GpR{KD;X@GjOyufXy*2BjegyRZlS6>Gh2! zD%+Wy_UGwZlFgbgHB5}n?aIwuX`#$xV>>l0>)=^(YBXS4Gee5DiIi&p|7NWB4~PH&06KJ1PE!B^84;o;I|~S{R$J}<8wUQIXZC!{3;|KA)zen(9)W}z5QH!U0)HWcgs?6nfgoWWvfD7ed618<0+H}mc}VavfH8nNa*|A^{ zc#^X6Q5FFjse+)UhZ!If+ao$AS#vsv6$UcRZ#x$SoJVrw6Pu{Fqz^|W**(r)!um? zWD<1RVh*x{A!uZR#b!1&UVp2us4mGr+E@*-p|MHQ9E3~BH8r0P?c9-&TZp6h%!8=R z@uqraRY`%3O@U2C$Z6V%>O2tBi;l})N;J^W$n*OO` zLUW_#(2*z!5Gsh?h7*JA*ia>V|5Qmqg^eJMQ}t|?aM?JEALu4X6MqSi2`YC-CPfI5 zD!WHU!NpuvB613zO;$4P@c7x;%uFAj$8EVmNR&j#)HGcMCxYy#qt%VinwmsRL1{&P ze$}=5KTe(c66BO+E(-Mm$icJd9%XLXZ01OHi47=JPzq9U?!uKPSFavCR9joi4Q=55 zL^m;cA!O<0)<$vSH-92gne4~i`6Z>L!#%+G?wi`=d?s>oFt*Z+m&{XnxbV3zv9Cap{+m*-ted)@R zhg`Tvt+6nCs9`WY*E47_$lT1k?iaAhyLTgE4izUScX4BUeSeL`!h=HZq;{CS6rvL! z7IV2=fB%4h;NZYOUkOmxtvWC7mqKA3?RO$NBO(F<{3Srffx!XAKi0V}0rGOKd%%s5 z41psHJ=-wY%86PEgBnp%cQ98Da; z_;EOgd4HYYUAfPkEJ{nG`2ol}%4;69pwYbZ2NHObA5Ve4Qe#(1g(Z zn}|FliVvB2i$OF_+F>#%<32+^kBR0(sn)JxpbtP25)u|d;2)&m{Jq^=g-as(`4y#| zC(ppr5Qj!2rlz*rXSF!@6&CJEfm4{5u-E?iMt`6ZZ%JXUe8|Ox2twnWIgfty=)K{(8v|A-3Y3^p!ASbbK2N>8v1X-uTX>ZTUYAJm1*QF#N80ag@ z>wl>#N{ipatIBH_7-nn{LF%Ao^Uf52B_Q|mGBD86;>@2!)9}-c8uEIwQqt1W3!VnR zZ&cT>Unzo>)!*L)Pu!fihaY$q8DJ8FHOlg;veHu0OMXa@U9YdcYV+n5ycimSRjkoa zmY0=!1%h7+{;^W^Lp^yodT@!?^DwpiJR7;3<^1pSFI!XahU4W;@c;k-07*qoM6N<$ Ef_kix$N&HU diff --git a/public/images/emoji/apple/apple.png b/public/images/emoji/apple/apple.png index f06c7d5f8774f7da5a631a8bb33016cd1712d3ad..4b8aa49f84fdf0c69bbfd77c5580c242bba6a8d5 100644 GIT binary patch delta 1883 zcmV-h2c-Dl8|e;^BYyz)P)t-sM{rE(U{=#uOW9pc(_l+cq7Ah|Ki_jw+htD7PD$Ec zPt#dU)mcsEXH?l-PSsaU(N#)KjuF2{Lp6d8PM8;iR61fdCrO|Zu0lXdPZGmNLq?ks zQz{thYF0}i5?3xDwm?5g91*NbLee24tr{K5A0gZ$CAb_O!haqhW9DJ$$QF8N$o z^-)iv7#qncExsr&|Fx**H#YG{M*VST|E8JyXJDiwC+a~!m>3(eCoJACFaCUS{)m0U zLPGzRit#!*{X|2978?FhPxv-9co`mpA0>_z8Q42Mp))m?EHI2HEs!1~S+E%0RZrVU zNxU>Utu{C@lz-gO0000ZbW%=J0RC-O7XAGN4gDyrmV!Lz%01%#)A{&jr6h%;i_ZFI zzqHWg!|DM500sX^L_t(|Uc}GMZiFBdhGC*mPSrYP_!pvM@5lb!|IHLUjbt`v$SnGX z1*<3DA^(&Y*3#!05fo#aczR7>sf|@b;Q8GgwLA5YUw_RC#jy;XP5DYF8e<|a&H>Rn zhsSv~dLfuVCKq_^X>mOyp$>=%QXOAr{Xz35unif!tiCww<^C{cAKy_*lF>d5$_zRR zDizotfmJ&kgpd*sE0CjrapH{@w&t+H&{FcqVqB03s&b0b6>8N=${kYKf$X0;xCZFh zz72gp41ZHIb~s7OEU_Ty*i7zrySb_D_}L!dwCyjSsjt-Q<-Kp(PVA6WadOv}@4tSo zuH`4rZ{zjbleij00UTOWXhAR}CL5DYHUcYFYJ0(@(qd(C)q;duzWlqt>3?NeRumB>i4s`O7w;6*q*&b@DUX~9 zLLguy%tK@tj=~WFtthgdeQH5iM;mpZOasakSuQ7&l;U&x{XYJN;cy6wq|9pk<{;;F zjP)3dXAj71Hhy{e`E$8k-re2Z-rZ8ZBan~~A<4CVAFRPnFn(A(Q5K5_p?;AC4KWrM z8-ET(vX2WjY;x+er|0J%$n!HSp0MB!490Cl}8)HwSJh@2n)AWD5Ifg)+wYAS?H z^I-M*LL9M52~kNXav-77&aM>lP-s_wcoIh?Os7(HPklcmY4^3Mg_^ZRsOl0=}{>_woX zZ+|$XLQ%AL+>5gV)ZrBYf`q6;P}ztek<2v$sfY?E>vm)|vuj+fs04{9^4I|cCx3vm ztR8GY(g>C814PG~AxJ_Q2ZaCyFVnJ+IxH0oogYIafs%mXLV$vwQ-PqU!-W!p+QQTh zcMw#9#DN0FIMah8kT|2^2#!JsLH`2cNE}Yw|^-Y5{DT; zpkhF7OCOVMKt|F$P9Ndm*^NHf5c&wi84RdV3`o8-6Kj`IB}A3-1t6W2j)4Yn2FYL$ z3uG(Q>AF;DLX;2^V$yVixqR&dh!ZCaWpu06CAnDv2q_IxFcsyy?`s_};!vRtc8wKj z&fP2v^K?>;D5>AqKEm7&?tky&dpLlqFA^Oz3jH+ARY~=YMjT}jhUS1AnoQGdxkV9% zsivZYS_h0|KHqE!YSk*S+ze9g`vTyT`>8#en=yQK+II?ypuBrghFQ3nhsTpAb+t!w`5c1cq)e8 zw^Zn3v+sFIXr%}e1qLyrkeTB;lN z0ii?9m61ZHHmz4&k$)g+$Ymvp5U;PRS8ha`J~5bHC~)Fr5c7wwrz3_TGnjcV`g~1% zqZt5+X{hb?okn@(h-4P@hac_@kEHkzTu+oYic0LP_1ZWcuLa2{b8~#x>&?f9Q0k!1 zpVPc@i@g-u@QusqefxIpIKYIG?@NDReI6U*?eU7E-Hz4j?O`EcoQqEF zZ{oFk8R9^(yz*__v%g&T_747gVKo8#9c8uKZL4#<1{Aw$TlU%CA^IABat)vD=0C~S VW4+KXsb2s9002ovPDHLkV1j2GV}t+z delta 3550 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 Hu0mjfD`QF) delta 2866 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 N002ovPDHLkV1hF6oDKj0 diff --git a/public/images/emoji/apple/aries.png b/public/images/emoji/apple/aries.png index 26f852709008120c82241554f9719107d7be4f3c..b0823f72ada6e81deb6dcf2141a834d948fcbcda 100644 GIT binary patch delta 1204 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

  • ~b8RPX)@bV@jM*k{8A43}P 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 S_`$*e0000vm zRcLx%bBbPbh*@lZU2%j|XL?UxaaC1oRAzcoWOihEkY;<8P=8``Rcwo4bcAb8e3QS> z-i4yUWqOf^qkqC-c8zd|qR7_cgP*=}h@!;Q;d6_oo3F%ehM~{f=YpQRgPy&CoVtLU zxp|VVTyciW*W`7MsdS8|caW@hkE?;3x^s-Df0?&gk+7Sx%5R3BlBmGS(%XTTuD!m&gP_8xu(sCK)PbJBj-&dd!nNP?KjI!0{K2f`Wo5 z!*S={^G!+yNn6_()B2`V445Jn2@Q#wg@2kwf{+*rVJHEavWJ`;ZtDU8!M*pqbJSg} zyW6feVBvkpdVzlae4gL?y*%%|ce#5YsExb-G=f2`Q!0_TIK(M*Myb@P4TNd_?hv4t zuP2E@W-#7VRD|PFQSpYsAX7-5zP+%W!GvJ4vE<;}b( zsm;6HQg*2FYuqXim9^Z?)4nu&wwFeEmM7#TzFu2dx&E6jSYKJW_H|-jLb>Ot_wR?0 z&e@+?9~zpGkrA2^ic?1GcxZj*eoi`}^*xRCH8Vw-jfcK%^%ZVy^M@KUMNG5rSTy86 zfhmx+tgWm2vK#8^*0#t5%nAPJ2Y)n_5m3|gqO9z*ZYe8!(Nq(_80rp9o>423G|b(% zZ*I4s&oxLywKFC|Q>JU>&GjGlKz*}ZJADc?bhbd2+SvGUw>37V$^^5ALQ`2nNom7J zJ_%W$Rkrf#V_@g)pTm4oYNN#@qg2rHhqo< zIyLXXj%_nCij;>;Z2d*eU*Pd)#Kmn_ zH^4A_e$xVAqq+4L^<|2eM=Wsaj~}+b+wog2Y_aC|UBF(%axoJP)rwavp6}H5caN^^ zf!nOvvt7xH2YSAQ<~z_Iz;BQLd`sx4Gn4Qwx2DP(&=UM!Kb(Dv$-9slIQ zu>FvTA1Cg>AdOtKIkfuf0wXj-(o(hJ+P$4jrCKXsh z)Ff%zV!H}=U)Y%oTZMp`G-(nQ4Uwbek|nlP7jAvDa}V5E?B>0|n14hbO}2!>yQ)K;)u_0hwD%4WYkeMfxN&tHk&)xXz9t=AO z0rOHJ&rE>&kT{}MD}S-j%-O3j>?l+NJg`c{A@za!AWVT=h9Q4u=N)&1HrB|1Cj?9c z4F$22_|gvYi#EO-tB@3npTrJALrP<`cvU+&e+vvd4V_tqC5|>K`#=MeSz$tXJF)mQ zo{$_%7{*E-2o2OR0z~`{`%fHo8d|rXk0lCV=qw>>z;kg2;eVME$DM}q#8}S*sA#CS zn#xNOV#E||y|da$=pgn1VG@t3?hW-;kU7yJEMZ>3x;sxChkys7Ib;PI;u4u*F#wUE zpy2Ki``=RRy8>W7j7j8LLNsQvptEHqf}iZZs@RkQV7Qn`LqkI}fkth#m87unbH|R` z3zYz~T4SJQ2!9%y&eATkrQ~GFmZNq;z@U~j9Syl^NOWG9ZQ z)?2^`yIdLnKEw%eq^j!f5inGR-R87~Jfeb$#srQdJbzYB@v&G;s3;%1onRyeM|nVQ zdL50_K85wcB z6X)ChAd7N2XD^=Q~}S4s4J~+$=Y!e-;-ZGH{{Ob8;>|KK^ib z4!BN4xPMvwq5jzhH(!8+Y-_wQ)c6rZl-l!q9kk3(4@l}9fjN@ z6rJYqB*^cuN=-^9_CPvGtvc)njTxs`Ahe!@Xox~TZVWVhyvdLpNTGEbB{11w8b2Iz z_cN)~L6jZ{QmagU?hxcNI?51?%n9tKIY_V}YJaqkt%Ypi#w-^zH>-vbp<=aLqQE z^f&q_ob-B=Dcf~~Pp8W|)Ue?*N6d0@#m!~bh?&EOLI1md0p~+42POZE!vFvP07*qo IM6N<$f;YSy%K!iX diff --git a/public/images/emoji/apple/arrow_double_down.png b/public/images/emoji/apple/arrow_double_down.png index 668f41599c123374d15ef0cd90252a67570ebfc4..10d6c7862c048c80a9ce1fa91d45318ca69c3a05 100644 GIT binary patch delta 990 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 P00000NkvXXu0mjf4I?S5 diff --git a/public/images/emoji/apple/arrow_double_up.png b/public/images/emoji/apple/arrow_double_up.png index ab83c52c5aa28fc7cccbb93c9add38850d37b9f6..2aebc0d2bcb89f6afd735652d10bffed486f5ff1 100644 GIT binary patch delta 960 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 RV(tI{002ovPDHLkV1n1>G}-_F diff --git a/public/images/emoji/apple/arrow_down.png b/public/images/emoji/apple/arrow_down.png index 8b9ccd28ef6a63e4ba83800cc5e8c2a3689e26a7..0428aab8490b0b860426d45cea7c86233547a204 100644 GIT binary patch delta 959 zcmV;w13>)!6VwNgBYyxnP)t-sQfGQrZ-!E7ep73LbCt7hjjL&gqRa;8}8sp(~t6)KO|aN?U7KI zRl6=oc@;~T)rK6ppFsJ%U0Y<*;NQ57eKnGqzD+erHS8Hy3TS{;deLj%@9obQw*S;`DQL^z^lhDCs1^J zH@;bXIjtVImuOgrp(#TkP?zoVC7VBq0~$c0#tzz5O(zxzGo<6?vF|9Jq;+KCID6O8 zHH5dJEshTw>1doD+D$a0^iXWT^SOs=O(rja@PImO41b-(p+Lj*Z|w|%C#0m`bmZz^ zHo{*aIG}Jq1IvAfoN?EXGkKPew({(udWd7x=L^I`w&IxYP^s1frv9KI@ujVCN28W1 zMBoM)LgN5Xh2UQxOL!ZCF@$8fBZkz-v+OW}xYiGbYDYP)E!U_Xf?C&;mq7BRIy-`D zou^P5(tp909zss3gX9DlRrUL_RP27$6@xpo%9XFx-i2vy!n3wEJ% z2={YmN9v_u3ls=dk$Ay&=4?RNQ6vycR3=M=!GE1dn{HGD9g%$=g91iA&C{DcsDMZ7T za6%6m35Z1oo-^l(KL?H=w8OwOPOqd9Mvx_Sv|*gS8rmg@iwRf5+QsQBTC&Uo#J^b( z1%E+d8qEGM?GMcmNX0!-79?_@{fP&G&~S)?ahyKGzxI`mit?}+r|qoAenID5TkknX ziWY$~(qp}7F!!ZYcQ>RfP^Wc+xqB^j_htY;*pR6|>xnC>CA`gNo{E?fIxD-kIbe#c z2xhyp5|U<3sUTH_@?B8jE!_-><_#5^^EmqmVrc9gQpTY>_jf4tCDP(Un9_^wr5-%i h-HzjjzxuD|!yhPe$i#3A&Pf0O002ovPDHLkV1ge5%-;Y2 delta 2548 zcmVd|GdYUv-LDY<^#JiBMv6V0DdBVs%z%ds1X~ zQDJpfXna^{eN<+8P-1mbV|86|gjsBVRA+ilUvW}oc4m8(WPf>(RAzc$bcbAUgJE=w zWOm$ZYQ zzJi{-ft$L6o`1c5nYM6;p?sFJ#MI%3qr!!v!HcHEf0?(bz0!}V#hb6hufo-svB`6b zrpVUgl&r^|wajpcqH&0#Tych^xz5Yi&f4bJ-{tP{^nRDMZil15(B6cgzJZ;*z{}QXft;AI z$o&2Nr?K89JmnF&UVIZt2miTE{BgFhr5Mr?R~O!j-v4sDjVwR{z81!WBPSn zT|;F8pBCk;|JhBSO5+ta)*d{#2!F9-$D$r;UmiSI+gQk>O`VQ>K`vxme$~r@f-m}{ zpx|XyK91~S3pvh;=CgwrK3mvF&lU!=`O&i+p_$DJ(Yr$j4txvpy9warz=1>WM2hB_ zkc$_uu&J{08<6tre;B!54jffhHWl)`T%b8r;jxI|4Z-F%Y`A&#Pa{`vZhrvIf+LOz zsdJ#YG>I-^>kj~1xBfHV#ObZzU4%|Tn+px#h*(YEfs~bk>#sp7Dz>3Q z6&1kY>ugC3@~zRN%l(#uEPq>y3av*Tf%q+#(vT2S>c4Lp$b$3e(D?4s}Etgl42G}whkTAWdn!B5-w&4WJOd+&n^dHAKqvh+UU;) z4$n#zL@US&uMmp;K@!YE3BaLPsK6tks34)34U)h{hl&$`L$NR@$_g5Y~cy zp|b(NVF;gt9S9ACX@5LX07y;%IwZ~k4n;f~jD#3@;S#ZtUq8wbqeCG%oi7@nkc8(k zkdQo9APq6d=dbM$zV@7H=p6E>13%yBh*S_O9|+keQMp1{VnOU(zY^@h=ARQH)-C9BDYi$B|V?=zk3f$CGx7tUoiq2hP+- z8qV-=q&N0Ze;Fw#Txd}JWPkUa{ZFcmj)Vu1Wc`s4fg|7>2;*0FTiU-eUTAbgz#-^E zbW994)PNuQ{NFuYclP}EoX0mh!i~Yukx&bf#^o8SF4^66Xm@Lvw00_9z?+^ZJ?oAm=uje;kMqp3+~*#*UCk&qe-xKC^&?}CEnQ%>TJK0XujQ^*>WQ>(0rShEKh9@F*$)|ViL>EK7USo$`fPEmmFqW$a=LmCN`R5 zj#hdF9lBCV0}P{MG2W}KA#06_NTGp{$*2$JZZa7-q!3jaYp9=Eh9@yW@=B=>jXMvi zrFp<12`^LkLqhZy1S$|S@u|_Dqo z{|Oi}t=b9se|^-%)HrY0!?TY(VDGrpiKFxv2;FGuV~r)p(M3>fZh28J0)GHvQ;yN}m3c4IVJy8b$g(JT5(ExJ}S z#%<1Ufn?{V)+&*d%DWd-NJgnuyV)6EX^s7CLRgqGu7%zUEpf`QunC`yHN9lB{oKhW zU9Hw=R`-xbqgJQeIE_MG*6CA@u1@Z5^K5!(o}0UqtD|}5ll>16fNeia-JEX#0000< KMNUMnLSTXg@E+Fy diff --git a/public/images/emoji/apple/arrow_down_small.png b/public/images/emoji/apple/arrow_down_small.png index 467a4809ea8eefdb144787fadc842dcd503e70ec..e58e5e32dc372e7a3bd2d86e9b147d452216b5ca 100644 GIT binary patch delta 889 zcmV-<1BU$h5|0OvBYyxkP)t-sQfGQrZ-!E7ep73L|NsBU%FEy8?U}XAiK@tLjH#`~ z*m9Gxc$&Fca*ASomuH2ce4xR^)#T5gVU+*?00eYWPE!HeMVc1na037U0|ZG#K~#8N zq>srC!ypU=3mm+%jcvNuy?*pH3hEAZn7 z%!BIPycvSQ5PyLEeg^k$iCpvy7tKU58J?ddkpUQCeSIc+$V@aa$g=Qegbq+F24Nt8 z?!vDcW2?RYWw&8mYy1X{fr1RLGNrVRik`F_6%Q36K;eJ=u`wQL$rs~A$7gGf8aJWf z_8=E35_+hYb|Lj3K-5FY??FEG5&>d$x%H%5IozOB>VJ7Q>_8!vc2W<$RN=UGV)yUi zMY5s^>DEoxWWq3A4|EBH0maL{J->Mk>EV0PG!OX(4H7T<4g-`3P!>om`9O-RrV(T; za|T45aBwZ_Y{wxeu}U#DsNTO{Z$q9KIV1dHHaou_GZ%!XwU^n92yQ2P5O4EGdK@)N=MftjgDM|Y17|FDiY`v zNLbcO`5v8{5F56KKmllMa$ikPk_wtnjv9(aa1F6jP4f~mCEr8dbQCnhGIcFEvY@|G z%x%d*5D20y?rQeZ?f?I6;#_Pal-U%+Ak<9P34cxAID%|E(x&Hz=1rhmYT6V?C~M?+ z#E))T4ar@_08!2LwB=udexs)$Wm=0Pxl(&ee#L+f_}}uPdi?I P00000NkvXXu0mjfAwQYh delta 2415 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 diff --git a/public/images/emoji/apple/arrow_forward.png b/public/images/emoji/apple/arrow_forward.png index 8ecc0338d47417a3bceb41aa9a4147c1a886b804..071e1ad0af61d87e7aa2736a0ee2cbfb5e8826f9 100644 GIT binary patch delta 925 zcmV;O17iHa6S4=8BYyxhP)t-sQfGQrZ-!E7ep73LWPzNYy3lr)wvMgHw8`6GdzHu6 zjwV$%sM1bZ4i{5&4O`j5*j4fBX`)v4QEAf@13X-A!7z>KQvUMn z^<-zqzkAdP9!CrpnX&&8#mJ&75i{%&AODc`fQt*cEgO&m&Yf{;m?e?nDa`ed< zo{3?Ptb5)W_QgZ%4Enh(zpzy0^5IdSk zWgnb3q<^8KS&Ha2)U8`k9li( zQStpxXxsHbq)~t#$siz;(aNf(=dhz8_PL|FkO|NupU(hI89J69fNa_k{xL4bbPyKm z8Y=sX;Z>HU1SkP%>k2BXH6WIyOsHRk_;Zp2pMMr1kG2X>k#wB#!H$g(n3e>HQ-Sf2 z(vFTD;e3GVVmJ;RktPHwc7&;>nL}ky_nZUDBa|J&RDLq2eoHaKCWJu{3={6Ub7l4a ze{H}9w2(_1sBG+fTdL6coT>s=1;Z}u46E0Tj{5x=faQFYj$OXO%pd`WVY z9e-NsXGl^qR_viN51*i5b*BuOgVJp?pkko^IRq+zjY#J>3_`$78?kt?ktArw!O9Rs zTOg&dnBA4ZrmfeT>E>c&PD21KX%G_mS`YwUloU`p{Y|kJ^@c#jjoI=QO_-Bfx;3%L z5p@aaC&hGmYfP+8Ia|R_vu@h@jXylqJ{EifIoiCf1uoI200000NkvXXu0mjf>}{|c delta 2488 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 delta 2571 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 literal 2570 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 diff --git a/public/images/emoji/apple/arrow_left.png b/public/images/emoji/apple/arrow_left.png index ee230485c186a8b1dd2b563c3b0cb5b663e1be9e..d818c472f83b630084ecf37ff30de7250a9fe1ec 100644 GIT binary patch delta 937 zcmV;a16KT|6TSzKBYyxnP)t-sM{rC}W_?y~hEr;PQ)_~Al(Tu9y#N3If1|@~jHzdZ zp^vV~Vttpl%iNx~%c#NC;pXaDa*D>+<+lLJA^-pY1$0tQQvf8|PnrrIr>+11120KL zK~#8Nq>%}-q%a6T+Xb>OdjG=?K^!{m^dIwmkVUHUio};PEr07g#JWtcD`eT?ARD

    cch_Lj(h6=CzR2>;{xS%kTodm?l!;@3usKE)#w{U3HSgv$`tsha{RCx3`vz{DTLduJe`X99ioj?xtz2h|?h z_5{+Z#{{G>6Lj0B6Or&LNL<1);vc;CVs5z)g%K2}(O(9tACW#p5)=fj7SS1C&9I2^y$Sil>Ph+iswoyjtCoKAE{KtAM2D$q-SE4ssE} z%ULf8X^hpNF-qjJDI&3UsmD70x7B0a`Sal~FQvlYxH|KJ00000 LNkvXXu0mjf-VVJh delta 2461 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 RgfIXA002ovPDHLkV1m*G4;laf diff --git a/public/images/emoji/apple/arrow_lower_right.png b/public/images/emoji/apple/arrow_lower_right.png index f520a08755c1551efe9306ea5382b78703e91043..c9de3c24c8d7ff417d944cfeaa020a5e428b29b7 100644 GIT binary patch delta 973 zcmV;;12X)H6xRok7=Hu<0001|!>)7y001yhOjJcuXL?p|hEi#MQ)_}`ft`J!!E1`A zV0)Exm9+o=|B|oC$JXSx%iN^D)L3wc;o#ocwkYiY000DZQchC=+C`ccAh^%I5^tuHtLfU%^fJE1w&l7Z7sOL1IH9ZM@o8EdoR zYU+&6Vv zk$?cd?*ylimGCUcN&!qlfaNT!l7nYP;(`l@2LObs62ehZ4u>CFr&a0qfasybF+=Ow zsDI3RZcrfMw{*4?4-1s59D+X~DJZO!^hj#PNMW<%g7m}xOMkPSGz?vsL)20==s?ZH{+zf92ROx-zN^cZ>DlVeTjZbz5M2Ed}lfgSz z3R6nqb7mQjOaHDCuV3w15&HA7mRRIP+M v3kV@wX`1#{lcx5ju9L1|L5|^G^DX3m%$ezI&fW#300000NkvXXu0mjfhFZ%8 literal 2569 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 JPDHLkV1l$`$guzb delta 2464 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 eoEZxI@BRbQ*$ha;7`tu&0000 diff --git a/public/images/emoji/apple/arrow_right_hook.png b/public/images/emoji/apple/arrow_right_hook.png index 6de6d80499136d66e8c7c6eea16b95d91e326201..6b32a25d85516bc5298a854a49e5f87b0529bcce 100644 GIT binary patch delta 962 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 GLSTXo7@o5L diff --git a/public/images/emoji/apple/arrow_up.png b/public/images/emoji/apple/arrow_up.png index ebf4d0b3f6eac4b684c755b2d7a6edaed92f3513..4d10e01f26497e1fd6b9d2b2d850509688ece83c 100644 GIT binary patch delta 917 zcmV;G18V%q6RHQ0BYyxnP)t-sQfGQoYl2&KjZ$cSQfYp6n75Ix$a|i?ZH%gMk+7e- z(XhqUVt$xthN8>ZwGK0leJUaN9`v$#9(e_WlGX8s^iGx zeOf4F)!iQCST1^UReFfCA~Q-(y7f>V^`b}*I3wor>!0H>-H3)J>$b42;ZICh!{+RS zmIe$K{t*l}V1KgIkPn&irLfNrI5vf#r8r_T;si-T{TU9$<+*)d!i3o{8T)tP5H2oY zHb91brmCn<%=5C$jl{C+6PpUX2^>i8B9L`v>oZ$eUJ2a4w3UtkZM>zDB_&5VBIOr) zPmkIW0zpzKI5l4XRwKvS5s7q;@erzHwod2@;^ml`JAaZ<$oxhbo|lf)gW#n7bHQn) zdO<3$25KFYQAZ`C7t|?`O%R+Kae@MxKzczhlP%CW1g9&tA%UVLx^ONeayGs?awmv* z>4wjeKoO9vQp9r~npv)DkwRIL66Zo{DnpYaBs*B*^rhBG(4>%|8mCTAqBaUOfpbr? z8L~&og@5IPgr=bbg!L-tmyhBdgcp;cXNJU~JCJ&|4I$9?usFP`m&(sm5e?oD8rjAf03$vCnl5=+F^J&?1B*w6Qpm&IA2CQI{rW zf?{$AjE~q2+3OIKL-HylE0E+9NzzD2G%l5VqNI_~?XvnFAqeVTgjy8U*7y`59OJ<~ zyMG$rM(9goj}B-vNOR%*_?U9~o)$Q^l?o_}iajsm_Xx%TR7=IL9d0KY-7$y~0kqeG zyRAq2%?j?e8s4n@c_hO?SL(hl@fV_Gi%NGWnMl)Ig%8uI-4Gl~fk|oaU>-`FA%Z6g rI%_^dl7HEDdpkQAPhHkKnU!yPzThhr-VRWo00000NkvXXu0mjf9NDwy delta 2496 zcmV;x2|xC#2gwtVBYy(`P)t-sM{rD3X?wRAzclUvXh}jAM9@Rex-YVRVZ#W@c4ocvfnC z|NsAIeU)l}nR1GxgrL7^f0t-}mT7;OXnvKo$Jd^<%x{LEc8{y6z0z=pp=*JfcaW^Q z%-gTR)pd@kztG;Kxz1sBjctUUXMB`%i>7RYopg++afqUntjBGGoo0NKn6b%jg`aGK zoR6u+WqOfyj(@6)ro@M%!iA#2$kyY;)ZuG^n{bGtbBw2LhM~{f=YyZVo3F%NafXAQ zz023+f}XsAoVtLUxpih_Vk&t$*jN8$JOGTv&wOcr)z_rg_*8*k*~_v$3candSsKwOb zXMU92`y=j+CU(~ zP3-aP*Y%*C-u3=r@WUZt1z+2nDykR&00v7*L_t(o!>!nNR8v;~$MGj1QJF_kz*YB7 zLX#+oN!qj|0ZK{=t!=HfSS4kM*cWU}Qh$E1nFS!>SU)7>QSDgpn&sE1qBiwsuwEkoLub@GXus? zA&?l}2iLA$yP#LV@Srz?M3^#ufN5vg*Z_vQ@IchcqSrt4((9s?Q3ndujDWGjOn*9~ z$m?@s4|`@e7k}St#m(8ChhuZslSg%yMvjT2#->&`6c?}iu@BZ27dKR=#!}c2)Hl6!s$<_=5>KO6j2jL@ zt`n)O9M6WkS3c>7D|Z__b6C`gu7BVQ*4KWk4&@4qlIS9 zIX9=D&dtdTrRCX7L#DUnhG$h~WPEH%M&}RsN zFzO&=P?IdUX#eLH?7w~SS_&SYa_!=6%bTKLSrZ7+Wt#fWEV;FP8|Z-2w(Ykpj_Nfs zIta~|1wZ-1g3H^t+{CxLxn=uhORFcrviTrX7^cbk67Et~YdYR2y*2BSg;|y+tPq5# zf{;aD!7bc+9pCBt)`b>ki+@4{h7UVWuypY}C}p`x2b9W{@ZI92g1kY9jX!hQk`E!~ zDa-!FoB5|qIS;m6vW)3(gV?ZX@R0Jt*%8*5VY z`8J3(V?%i85{w=3tyl3-S6kzEVArAH8yMCdp`S1!wx;7PNZ%TPT^mD0t}H&-Tu%9B zyhWSKb1?IG8JB2{*il{yB0|h)%X;X5Qkm9#A0c=}u|w=giOk5QCPK7(-r#%mW{)<+ z^hP8zkpx0y5DGP+t$%qM({m{1X^qzO1_+Vu5Gw+mc5hi1ZO!u({5$M^UZXX+a*swQ zSRqy%DoYm8DfQ*!cXq%R^YKe<*Bu#)$^jvse|}ixTd5Bp?ZfxNzDEyJJ1>Rh`}06Z zqV^H|+-XJTv%S9%XkjKEtT0NWEjJIXrlq}o_Q3Q8&BI%72=P5w0#i{&%qUD~ zxq$ihnb`%F2j379s(kaAFf=AM1dd?xeN{pb5;5pLG?>8de_9}P=tF0S1|mbeh)vu; znAkvU2pqw1n}3L2LqLc^<+5O6S=bObg5gprhENh&o#+Ger_X9k2pqvAs>w-)PzyWp zI~Z69I!t7@fDkT;;OEPQ$=!eradV+VUq3<;4#9~ze7XnBrj3};s*RhVLpq-$evcvB zXf)2>7iNJkHUy4f{NvDQ+l~-@J_IZT+tH1opa7zp4u7+jz6uipM=)w)K#(mmSgxn| zQDN9rYzQ2|_)+xo!N_2#kfid5IhcnH|_OeM-YmW9g)eC)B2>cR^fklbNKlbDXsE;6*EJ49)b1-`~<~TZ9tW$XPi9#oi9_={5{3V;ci!&}+ zDmj(QgL+9Wmr9dy&Mugjb-)a_na=LEvv9pM%hug_rrQkUz55S2#{FN1Ga&x}0000< KMNUMnLSTY)OB}%f diff --git a/public/images/emoji/apple/arrow_up_down.png b/public/images/emoji/apple/arrow_up_down.png index 96475afcea97090e529705f8c2c6c5ff2ac94b6c..5ebc424827d2017eb1b273dc0eacae53c14e69fb 100644 GIT binary patch delta 919 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 LMFvhpu0mjfb9MAQ diff --git a/public/images/emoji/apple/arrow_upper_left.png b/public/images/emoji/apple/arrow_upper_left.png index 5033cfb3b6b546c6aee2a7b995e05908adfe7445..b64d66e6905912c17a757019a12ac5ea3f84a401 100644 GIT binary patch delta 934 zcmV;X16llm6uSqIBYyxtP)t-sM{rC}W_?y~hEr;PQ)_~4jHzgbqGW)Zb(gkzoxEXu zmT{7>y3O5@t;Sh$ihiTRpSsb;*X6Fo*z4)&|NsBSv09b@000GaQchCiH_?q2nEn44d6A~y#N2!hi@0$PHauuYk%xk3Oa&|Ww=h`sZ7`5 z@;j=`K_gY!g9wg&46|Bq%rMPCgoV#UM8Z4`FXN0s4T?UWh>xUL7_XHx3lsS@ZKsk} zPsB1`UmTagoTRd=q+t|_Zrwi0?jp-L0Ga~BNvIP^rGHf^Ojs;1xix*9)e(oX+{6@@ z{c~u~kyu9>#(%Qd{zb}igbRqv2C}AGogve<_DLic`)qibvv>ZJk2&gu+dCg*txOi*G z;u=u0t|x#8kSHV+T^BNEF{F-*C!p+nJ7=JuB0VwJn#lQ5cmOpd=dJU0Q4fe??Zg%Y z2?YV?jz%s}P^gYVt(njW<~76t5Se5Xb)_#LWILAP3#1o6fci6`*O(fLa8v=*mr4_Q z@voRQgn!^G0qRN)1q`=>EP(nF#rH6vS%{9Il#ZYSi3Jl$JrWtT+yCxNL^o&#M3GPi zC8Cz($@_sfzIUgx*bphseA$g4swcwpfTQpj|?MuU%AR6LH;2JnCF8IoX>-h zIDc{kA-C4UFj&Q-T1Rmd>L{u!a#@!IiNM_;OmNQ3g0-OzceER5Lhfj9o2t%&RCQ~M z^)_p0U7GhMm1fP)Bpeg delta 2552 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 LNkvXXu0mjf{T4#l diff --git a/public/images/emoji/apple/arrows_clockwise.png b/public/images/emoji/apple/arrows_clockwise.png index ecd5f9621e8fe3e05ef903a3df1da7e821d166b5..527adec05d924e561cdb84ab16d986e9fbcd8e87 100644 GIT binary patch delta 1144 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ⅆ60!s@vgk9u!djZMEm%0B{_DTnMpXRG zDxzpfhy)hN!u{eR9O&En9q%I}+mWb$AB~<#(? z$i$$NOWolJ4wK{0M}I_uO8=Zy82YCNGjWRzFI_g4T2r5n?xijDs{nHRD+O-QG)|b1 zw+1DDHljYw+-dVVr5Oh>^fsXCtoq$-sy|iq32_dtwVZ z*t3V?*5TnLFc1-qA*zbAapLsgCKznXY(pMWPM*NBC((6l;D33?;i(caXw#r^RHoR^ z+Xk;XttKrk>jElTmX!wcGY`#vvC}5L8I593pq&0B2m!t=Au z$fG@H7k$h-#KYsy)o6*L;RZ}}>kBa6fr`=(^^u62DfHIhC3x&3x|IOL6Lw%CKd>RV zl}>SnoTY5O(0>mPZfaoMF7gK(gnYIX7Wsx&iv025L}1)53KjwhQDvwvERsvY#KCyB zIz&PsZWjp?fCh1xMD7etRZ19KAs&ZlD;VEr7i|U-T!utB6`E>}X10p(6z#!8MPM8g zeJtVviB@K`84(GXd@-I}O!TiJFm4x#Lx2RIDS$<^r`9|bn;9MfsKo>|AWTO3f=)3p^6EPF>HW9w%o@be{plF6d zUKUD^#bJGF>ngsl2|`1fqurpw3o+oKgd*okuE&Ta|5LBLXV!6Ji> z#eb0i2qaj~`LXVVTv&`OsXW zLPe>d5z*G=5zp%VkF_+~$VyrTMWry#h33sM>7-N|iRs9F!u0Oni>Hx5mFi4$=6^vR zZ*?UrSyU40;tS3?=C?6@PmfkhR>x8%cfI8Sxz05xRKBF9p<2q3b7!{?rVQS0xKnVv zR!Q#hRVfT};s4j2<^(1O4EeCgkk-~J1?PKuT6}72=D_sSoQV1-^2f!Z>UA@_%RcWRqGY9~z>NGhF_X9A#)ou2P#O&$eBTOmYuY ztCT}8RZ(898B(g$f$o#A>zYaKCWTIAmdky|gdCo=PGNF*VADi{LJh0T0b{@nYt#zE z#7X!ot=DF`D-`PF#bY8_tx&kndJVi}b9GwaVl;G_Oo5}sWa=^)T^0~8>nsqJ$Gipe pC%)%0O5U3|f5AMDk(&RTUjY>DDzM7(WOV=l002ovPDHLkV1lFnEzJM` diff --git a/public/images/emoji/apple/arrows_counterclockwise.png b/public/images/emoji/apple/arrows_counterclockwise.png index 71e010e25b3eb07bf1997d20e381a1add95f9072..d37988e84ee4221dcd42c77f48d508f448f583b6 100644 GIT binary patch delta 1212 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 literal 3726 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 Qd#VAtPvKhCn%J=a0a=G>`v3p{ diff --git a/public/images/emoji/apple/articulated_lorry.png b/public/images/emoji/apple/articulated_lorry.png index 34e34360485819435cf69ddcb18e6f56fa11475f..585b5334b7187e450924480185d194b5acf29dd3 100644 GIT binary patch delta 2125 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 Vv8NRn@+1HN002ovPDHLkV1n*c14aM< diff --git a/public/images/emoji/apple/artificial_satellite.png b/public/images/emoji/apple/artificial_satellite.png index 57845bc55084b382ef58c3cbd20e3138e1f02310..223d1f170ce5708856c737ea1193f4c44c95ec23 100644 GIT binary patch delta 3419 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 delta 3545 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 TzcHN~00000NkvXXu0mjf1-QUt diff --git a/public/images/emoji/apple/aruba.png b/public/images/emoji/apple/aruba.png index de62ac6b7721cb4fb995e0dd647181fd9ae1ba26..c0439d341ce6103bdbe199a8969d660d829b5458 100644 GIT binary patch delta 1300 zcmV+v1?&3a6Q&A~BYyzuP)t-sM{rCqLR&jeYB57wSZRQVo2!SGs!d*VGDu`cUVw#_ ztSmrVEnh?lH;i=u>-sW(YuFhg9Kh%_dY zPI01akH2P#x=(41RCc6$n7(?9q-u=0WQ@vnkFb}XmS23LW`BjS#jrcr%TjcOeqMmE zNo$&Ll*Chj!C-{7YJ;L~lEOGsckJ3YLt~F)hqyjxr|ZTJ#ldRUA|R@>hG~qwHf6Z8 zr%+vo&ytd2;KMKBP)gHwcha&Iy{NQ=nzyd1YC>FpGDl@lf7biq7M+MAi+we{g5tjb z000Q%t!(omatxTPtHj(=Nt%Y`~6?X_jXS!0!!F(?GK$1Ra60A-Fs*i&2PVEPC4b2 zyp-D{pZ^e%%UxdHUVr&=Av-KLH{Y&rFLUq0q}=5-0Dtm5#D~<=AouMyx0&{p5%U`Z zW81dxMo~#67E2h`eW!k&7tr}RoAB7cRW^iOsWf!gr~yMPO(|onFbd5rR50s&-<$-~ zNs=hzLLg`~bX_00Mh77apj0B(F7#;feQ$0qSY%n|f-poF1d@Q11E|@Cbwl2s@AzqS zU*Ah(7k|=TfXa%dgliI(B9>0aFbsF(jz&zt2cwThKY{=+J4;m~L{-&NsZ^^W1&&|@ zgd=fCc>yYSgN3hIC^4raoZaaAkfJ>UwdryYPz#+GAzeTuok+9PLx|Sy7lUQBYmpL! zImWJ2VUK{sNJo&oUM?4d!C-AyDLEVn3GVDd%73#^+W`i%Sgvh#AF7CF3yG4HW2jpT z7Ae$7Au$jWz=OO2QrgsB3>ItKqZY47Kq#Q{MhK1(U9z%O-Zf4n9Fc9=uR#h81_32% z3K_3K>Z_3Az=2c|s(lg)*TniM5V0+?g+AVqrfC3?&rbx7nCR0G`B~6=I#PZBk^g_9 z&wq8KyBwmQnaK0J>2zAH^3{|sMtfgJ4K%!pEeFGgelqVtR&hL;6+?^C_OlQdkTG zVx9lt4g#nmNyiB88_bwC?$eG~;tBqMMaO#`nZ-%m!^|PA9xEeZ#*`aCB(NX^YKddk z&mjwb*FG>j-xL#u3>kC-NWwA+exaI#@a1v;8Numny$>Qt*>j06#emWf0&n|*@( zj(K`&KDN!r!}}3#ECPoG&ZG@0000< KMNUMnLSTYqg=233 delta 2521 zcmV;~2`2WY3gQ!xBYy(`P)t-sM{rD6Ux132t8IymHAiHKl%|fGtvF0uk&%f^UVMg> zs6|BnXQPFs53-aG(T4}L0LOVVT_xvik7M`JySPDTrNFSKTl^gLtBxbvW=Ur zhm@u=KvyBwAcae2JkqMqDyKRgQ#5ca*?( zlfQS9z*=^pZi=>Og|Sj@nrw)+Q*WGAah!0CxlwJIS96|Yf2(VUv|f6rWPz=7kGx!X zrF4jeyUJxm}Y~oQ)!A|d!{~9bWv=UX@;_3e5ZAizIBnjOJt02jJR=) zx^j-YWr40wYnEDeqiu(;Pim8NhoftNpLLSGbB?-Pb(>vyqk4_0GD2KzjL2z&sb+qp zjGVQ4mArS6xnO#uQfG!$ZA^V4eHz zTeF>gjB2zjKlJpC`47RHw)oK6>8-7zQQ>Ru!>z4?nXRHX0&e{P00vY^L_t(o!|m63 zJk)6%2k=l+YYCOuO1f6pwzci6_LLEWaeoZPIL28yCSx=v$1sj@jB%4IXSvVZgb-3B zky4@3ecy+A?Y8@BcfZff7^GfX@~6+gc>6w|=b8CEzZo;8Go9&7VZ<;PiCKb3VCGDU zkdU0aXu-FOMa7krA|oS9R<8VU&5{LkXMGlikz54A{P}zL?)6Vfa;8uyyHO|<=YJCM zHNQxTjr_0GA6Mr{AVZvI?Aw>TK6DGPT2NFtx~JGBe2Cg%S0Y5L(uCnzvp_)E@?enFVDmSu83l z?$0wGBg55-NTgC#Rn3jHjZA4+4SzK)TU!TPExfyv$tW~4pldg!1nS!&E((7xzC}q% z$sdBoK!&3gkxC#CL9$VWiL`YA!l{t}Qp3}nJjOs~*05Yu9xT}zB`E>ohC+l%gb_d% z`dB=UH<21lG!6>3Wd<=B|F|<;AojedLTqeyP!V9oi=zQi6QEt%7Bnng1Aiv6C8=TE z4Nb;D4z}cK%D+Y$?xq$NM%sFT#@o$x)KzUXsXWENz!73;Nz}AaH#gQZ(nk=CL}E^a z$mEn8FOpKQG*eRxZM|LKpoyqda2y@^jHRW)4gq8r0T9WSg!{lmWzj8XZbW1Cbzvgj zK&ogUf|Vsd+aQ((R81j-(|;n7Ng7zw_n_+N!DqcUTdt)oc0*7cIK={y3 zC({t;dU|LeK4j%6WRNrhp>0FZgo&&pyU*N= ziHSMW)BWU`ED z92I3@J_%A&i@wqGGFsn42x)3g5@MHhCvedzf|Z%8PaeXt8Bg>h5Ty5o5Dxn|LVqeC z4Lr_niXiMXG*wU_dVh?3DMSV6c18x5o5EIuC);Eo6%{`^o#o?GUI|Y~Lqj|}Co4NU zgsc1MkgKwa9~j3)fQ>BIeTt!Zfo+mB|}*Vh-^FKBLVEXvRKZR&XQwGi5P>woVoHiEFUk%{1ot)ilW z1&CK)dR1&(O-)Vg@P+ezrJjTFS95b~^9r-Gs-qe@3OJz;e;Bzp%>L=Gx(0SmNJt8o z%gxBhh>x!z3m7X1QyS5EPZ_;Gd8ZZ_2A*lN1K|OnwvWt z8;dykoT7re9^*PHEX?UTd9UMs0W?{E<NJ&SKI1{0Ky< zr>A`&!+#wc#3Yj)P?!TyB8t6vr4Jl|3Ifs1a|{u%KkQU-@g6~n z!@{ji4vm4rf*nZcAcfS{)*gVsNva%#!|f?Bx__b&A-`(Xyzkcis-U=Vp{%T;!cw`d z->=_uDs2BKw654J*xG^2)Cj`Tc=sdiK!{5qLpTNq%M=!_SS}?ZHuerLy+ZM~dGZ^D zkQ@wo$}Ai(2PQL!7iJU^&`RXzEnA9+8Hf;@coUc2ym@!{xq+}K3wr<$)4L?wY+)_nZ8L7#=`G`nMFPB*%BO|k1S_*~` j6Ptb+oX&Kn^Z)q|`)CpSb)?qc00000NkvXXu0mjfFI&?8 diff --git a/public/images/emoji/apple/ascension_island.png b/public/images/emoji/apple/ascension_island.png index bf3f3907453df36396622098137839150b8a2f35..c288a110e3f66c94326c1b530471864390a5d366 100644 GIT binary patch delta 1797 zcmV+g2m1Jw6qF8-BYy#sP)t-sM{rCQDp6Q!jSL?_Ok8?IP;C<>Ni02I7%*G|8AX=hK%$(b4Io3fl9*?AmSS_0 z6DCPvagcTs9XU#9x1OZ1Wo>JEnO0|rOkR7CN>C_EjTSn5B7a7UH&~M0-{JiI{U%6- z)opcRd7*-wx#6j;Dov0LFmeejZzxQV9YBM>ATk6ZU=cKU#w$EGPksq2Y|uAH1t@D5 zH+8feEZu&DB}t1ULVX}ZhDBbB1SV(|HE<(6bELMzXP+aW7 z$9k5msIR%!(0|d*kd@_*m1%Tm^NaT;BCQO1CY)4|2{>FNa? zOcN|w`uP+ZG-c!B2BADo2O?J?n1WSmk~T6Jx}dKyi=Xt_+>xua%gi{RpdE~R7{=A& zesDzq9&CQC-%DXw&d(#K3m>JQQ-_dilzWr5w;nJ?K!1>FY1GvaS0O;l+qM;ju|_z0dl3oxR1a zt9ANa-K(Zyy-vjd00j$4L_t(|UhUUsQyW(phT(uE2oe~9!B{wsOPuXhz4zXGZ}i^X zyHoym-hbU?7i3m=aK2KZ;u`>FKTZxL-%ZXVRn{b7yu%Xh)XUK0qyyO0%#{k60qaR(j^1O5sC_-K3@#- z#Y14Z9?J)u{C(+(?g}=k(Jd}NTrxH}y=dSNkAF~MYZ`T!OlG&&8;!bSzEFJa=L=}V zs9%EfK3mjjG&&uOcp_ZJ>^M^_(>*dF8a#p^LD7*Qa6mHoe3zi-A2*Dp;&x z)L7hxA}u{l?~{65Ab`1m93!A9S2I~A^xNWz56X>3R~SLHc5`%}Oz{|^gi+yi`Wk59 zGJpD;M2YdCAv6_mIs=Kc)mq?k6*9wEF=>r5=~`%$GA0`(!r=3o*?`|hCrlVy@l;5n zg@$?jT(Nu?dc0=0hYZPNFQdoLB#1B4o;-QNwAjQ+03?)y#?5Cc(61X!u2ec9xN<3z$#elC`_O)# ztI#=*XTu_gA=NjBhli`{>!03t+|j7_Tj-D1uak{#x!3EJN(61Q<+w^fAe>I8M}l}E zOXP5Mb^XoTSF7vL%QH1d%37<9rfh33*!``k!ho^6k-d_j#rGNlL&VQ4m zE4%U_34%$d$Li3+yQfM2Ic4)pi$o*9<@;nNF}�(b4)Vb?9-mSn6@*W}}gWV2~%k zaru2PP7*AG^P;0HdVh5E3i_l1O%0+hhSd{deYk9zB*}gykk_{`G#muyT&jNg@>lWT zfXx=zRLT`qf$Vm>%Rpp^GRPWYZ!PM1ojQVw6kj z)INLw=R-W|Re|jGsM`#X!++sGT=94)Yz<40tjK5Uv_J0EYPGGcn%Aoe0WLuhnog$` z$T9?B_0#I!7JSrV--l2XoDonE!}s>Kz;SrtG4kUOTv-@z?QPZI*W_P9!EoBjQx4Mz zXdpwTZz1H$BIzjtP!zg3WDy#Iyw^d>(b51>5+oT{Aopmi;!%$R&Bnd@jXvi2F8@u=5 zmznANccA;zGgA-d?|uTcav2)fVI@%VZ3~-1kVJq1!t|ZF35|C6jqlw3se6MN1)3Q^ zaAE;7#pFa`1q_h@K|Rgf96(aqJ2Nm+#5Pyt;3T2}D{k^1hjwmy=E1%B`MW~%=T|Xt n17i5dnh7y+#Q(e7ZoBOtA7gH32v@ST00000NkvXXu0mjfYY0sW delta 2572 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 IM6N<$f^%RervLx| literal 2834 zcmV+t3+?oYP)Abfqr#7=#f755WqOgs)ZuZ6qR7_ce3i0rh@yLxv3irRgP*?7+vjbDp_{M7 z%h%*wafW%4u6&lWbBm^fp1pXHt#*&AbBw2gp1ggRw0DrKft{)Dq?(y}4oxF05t5<4%*4EYP?eXpE=ex_>eww;`nYxds!J)Ov!O`Ee z#@4R9%eub7Xn>o~*x~Z^_ji-B?(Xh=ldFfEw2+{&l&QdXk*$@i#K+X&Yk-=pzR~jW z?{9^llB&eJ$=7?AxX#++kfQth(Xj=Huev_xbwu_4UQk z+}z{o!NbSM$;p6~th>U<#>&pJyT;+)-Il4n)ZOLN*W9_v*o2?G*52mC%+rdbz~txZ zeU`I9x^#}Mu(Z0bztN?&$C|Fg-QeV;tFzNkl6ojg4D2! zl$9b<76e(9CN`|A*uk={1>5#zd%v<%f|&qw2juxDlgax&^UZvd348!R;JVDq1yZVD zf$)P5g#Q;bBY;&($i-`!D`3YnOBOIVOz!)7y?(=#K!fjdnH3RGby}Q0Jv`j5OY*0Cxa0G+WQcc3H`uoA z?QJN3nKD@V?QLy?x=XyFCD`08d!Co5sV*oe_|ptPYt@=W-t)`Q0eNxRX;q`6quc*D z1Gb~Zsx&s&%N2ORGgrdD@am2oug(axcY!a-^?U(%>83R7TKn%Ep#55y^yW)|*Xl$~ z=iuO)88bN8sYzVz1-uBx^II?c!2vF`^5el5ftPua=GNaiM5{TH_cAc&x+1XiHERB8 z<$pvv0~Ocj0CW5m=Bn2zY1v|>g*sDZR`{c$P(|Q3Z&0!JaL=1KJ%`s)hQ0|@gkmF# zG+$dw#j5QzE8AC5hOU_-u@UiNlD}L>Mdq43!jrcqlQQ&Watsd@1;y~={!B%F-v}WZ z>C2}K#qnc;<^Y~Smo{!%HIDF7>qhD^!vG@6BYs){G z5RXdodjb_DhM1%6$Uk(KcH?4mWq5RSX+=FDst+uUjt;MEzIcOn_fWol-W-yMiC9LH zIgU)J`J-$at*hsXE;BB!(mMYIm2q*Ix+^_hG+OpY=2E+Y*<@s)B4$Due-oL?-g3NK z{!@QNsiqyD|CFCKr4{`@SwHBlv@7t#5}24s9L5hMQK9>|ix|bdN0;~R?ZZWR)qD3| zet3`A-}SMsg52PTiBXXUJxie@@7CPjHFh^=Uu#?uCQL>&p<^&UZNsu9Hz8^AKFR7dOVn)e;7zJ zjZZ5Qc|ueq*kg&_AA9(Wy>AZRloKO8RZIWob7=-5o^Hp57B+?#* zV!-(Ql}D$t?JrSw`J*e}8wV7Mad8QotHMMqc6SV!cLpq}=MNm~=$bfZDILeqVOa*= zu`6`5S*U21k|i?6laPp0kJNseO`{*mk& zb_FST6BRi_3_p>Wj1<8i_#-t4A{M8g!OJOU(#2u~slmT~^@!B2Ao62C&VaK_$jW8g zp>IMjN6{fUlEn^1z9!D*Yb2DNg~$&Tp%<=6Z=cU)31yRt*z&_E^^I~Vx)mz=f)ITn z3Ps;a<&E_zhvn?aL{1s-?mb6EWTg5JYmUpM*yekwcL>p))c5d@uHh5xymFwEhz8YLpWn@#Gss_UWTRgeW4I4(9q(Air$=3A%S#PL;_8 z>A?|Bz-)uc+mA;@-IlRGYqr!;hWxx$hS|VuwUWaMq5#}_&iV}KI=2<1O0hUfH73&f zFhL5qb!ST6!YMgZ$E8X!eYBXUIDoe!Il$9+7o?C3t z3cVficnh_L#m@oDpH)M!5664PaC~4${p@nUb*WmW6mT3spp>bXqW`ZiS{wnL5c>Me z5MSX5C}Qy;x4C1>HFMnzvH+zDh6U3ChE>V{nZf2kP0nf=gsN1*(?Er4Aeq{E zE_q4IeW6>141xlt1q8`5+!ngqFS5BVTIpP-RvQcvQ^a6UtIM2ME*iI3hpCpovT}u! k^OSK~vGSGW6EzO=8{dZXalJW1mjD0&07*qoM6N<$g5Vt7egFUf diff --git a/public/images/emoji/apple/astonished.png b/public/images/emoji/apple/astonished.png index b7b5ff3682966b1be855404836bd95b5c5e96ddb..382cd08130f2e28a0d664d2e6c7e540dbb4fdff2 100644 GIT binary patch delta 1966 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 diff --git a/public/images/emoji/apple/athletic_shoe.png b/public/images/emoji/apple/athletic_shoe.png index e49b7487caa5e00f7f982ed24a9e41c1149c6849..17371d55bfe067f86407badac9dc60551c1d2126 100644 GIT binary patch delta 1409 zcmV-{1%CSN8j}lzrMV?yVKLtm6esSu&_Kl zJS;3LK0ZCWySh|VQ@Xmj%gV~Ft*mBdX1cn#lai9e!@|tV%DcL`w6n2`hlHP;nbOhF zhk||A*Ve47shE_JrlXFMcrbaK^QXYl|40Dl#9QchC;O65C-5Cm%zrbwzrQt4+;MNUre`V z2;QV36q8CO?5=dHcSzMk00Ch0NcF_UpjR>Tp2&eQ381 zkTYk6oU@GQ{@V^)OIaMok{Q>BZyh^0;G6~)h=>YD2-~mo>lZqt=Vg=0F%tl}kjecS zso%YQo)_iYF;Em|FoS%vR3M4;vvvJb?e_(l4xdDn#eW%$k3a+fSR$j_PHE9G1I5R8 zuRjwpM`4Wd2@stNt^{U>J9W?j6Y=(OV{uv^YZNl1kWeKMA#M-r36gq$2))}ZW%J;T z_dcVPN})I*#R&m*QO^%gj7_prsndE>NvKdRQ|Zlld*mRbaY#}&c`ZV%D!B%gnB)5c zCpaMEhks#`#@3s|nhC?DaDjNC%-aV}2|(;c63UvmRey z@$ZsUbsCg(V3s})vr>QPUZ_e`rB>6JY>Z@e19F7xhfZn!vQTN6Vhhwp9kWf525UK# z60h~(=63up<*P{ECLMI^4RW%mUWP>(u70j?OD`V)x#F`Gqn~iWM2#g4fF?l4Sn%W05qL zAQG`v=ql9?utJ$GA?_APhgIi8m4>R+o%Fs*gapg}1nZ9{ClXQ|tJ5xt_u^P*Z4h`l)E+EX2w&DfDn$b1duz-0z#>N9LVB6@qr$NN z*Kgom=i8(v$S9QI{#;rfs^7nAe`!>yLJYrVptbmZ9I(>92ozGKL|6_IR+I4-}`Yp{LBg5h_rPLK# P00000NkvXXu0mjfAq~lB literal 3437 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 WhdKg*cgcT73IiP@?a!L;qW=p4rY<=E diff --git a/public/images/emoji/apple/atm.png b/public/images/emoji/apple/atm.png index f7c8cd703b5cc6f13c3413664e9f423fc56454f3..cae9b40788c1bb0c38923f5517fc892464ff9da3 100644 GIT binary patch delta 1003 zcmVZ?voX+tAgX<@j>59klK!2a*BW+u50000AbW%=J z03@24+E3N~+uUGK~#8Nq|jRqgfIw((Kb-o1>oKNuW$h4Xl9-&->c?? zzvZqrz^O)2D;R12_P&p*0$QG{^_7FZ zKzkhXeQeubAbO^a8ad>kCaQjHJ5$hL7sb5|%R!AfDk9K6UZCYn(KjCY1R+3` zamQq2Al%LvFb~adq|M`I)J+nQSY;D1_qG?)9Dih;pMzOtAaO^>bTxX*KnpQhCm?3L zL~l9Bd7V)s0ddO`1I-D7Q4U&U+_qcNcGERqurmri=LCP^x%s||s zP`Shhddop$_j$=cqV8611eZP*xrPO+U_E-H__Te|J2!1X8 ziTK}Y8LTi6gHX^&-Bu*<9zFEh|NqKj0%db+){dTsF{eEL!b1)+`m00_GC!k4FM<>~ ziKvTiSyUAT#%c8;43VZN%0((h54Xj`SKsS-awC%#zvzma|np~#mL{k#m5TrI)F?A;RaR#n4XQi1QzJuDS Z<^zFzgc8TYXbS)U002ovPDHLkV1lKG+j0N^ delta 2472 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 N002ovPDHLkV1g2t;XeQX delta 3466 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 N002ovPDHLkV1g2t;XeQX delta 3466 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 literal 3025 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 B=%D}r diff --git a/public/images/emoji/apple/austria.png b/public/images/emoji/apple/austria.png index 66a8d0f9c27e2ad24c35591431e97869d2b06823..aa4087d4d0bbdd9ba04731cc741808274fe6b139 100644 GIT binary patch delta 1153 zcmV-{1b+L%6O{>&BYyzHP)t-sM{rELYG`pB8FwBWd>a^>Ff6HIU#D?!e;XHn6&7(E z8l|SEkCBnRaBgrM8FU^TzISxTc67scb-;Laz;$!HaBsyV9_mIx?MOq+DJ0V`D(6By z*fcNn^Yh0wFw}8v-rwKQK|He{9O6GZ?(_5Nf_}DKS=6ei<$vYn?Ck99H!}G6_?{*s zlN}n@*Vo?f@7G~n`~CgkD<Pyxum3|55nYm0000MbW%=J0Qz0+{-PiWtqeD!t>K8&ruj8if5(hv-u(ao18Ye{ zK~#8N?bg?F6MsPvhEb5@T}hzev^gv1oSfkOpNhYGyrY$dMaEYYrLV*dRX)|-E;M}k zH@kN2nyzayUH=rJ-QC?kG@FmLukY0!n-BMQe}(Bp)NXHY!!VrBU(&i=(jM+4P{~(y zjSUcN%-1N6V`V94 zH3;GuwG#umZmYHTB$OD2?F3n9e89e4x?c@H&evoD#+nQnATf~~=@gnIye{hEGk>9D zZ~{1oJPFzMIRqQUXic9M<+`Su3YKYE7VpN8Jd*7x5P0M`p11e*h$V(BiX{cI9c7}_ zA<4@+R(~e3n}F=g6R87nncXC0D^Tjlfsir~Bsk0E6M93m+9gO#bm|Pza=CA ze1D&vKSJQ8lMj99Msl}Yh-O|^pAjl9zv3gi+ zG|KgQfveZcjUri-3{;vVM8T1-KZ=iIuu!O0&;IkPRSV@tseFVO#>&J6q5}yaN<~3b zzT~783R16-OBgh6!lx(-Lxb`0D%iQvXcReG1VjO2d@5bjs+<@C1OLBWyLRmtU0H4! Tm&??R00000NkvXXu0mjf^A|Xj delta 2489 zcmV;q2}bsn3BnVQBYy(`P)t-sM{rEBcy^_wrFJYQjy5lOAsUa6k(-v4nmr|T92lTm zP_l7tW+EMJCLv}b9%&&QxPE=McywnX9dRuxyMTUgDI~aoe`O*Zt!-*%AR1~VAij8X zxp;J89T#ybB*BV;t7~U#BOhZP8M%FWxO#WFe0gmsBxoigX@4IZZzm$JZfdb}aJqVT zd@(AzetK*tBD;NiynubTdv~^bcf5jqyMKFZA{<{E7OZb;VjUN&Y-y`+Y@bg_h%zg8 z8xxK#CZ||au5N0QLOqEyET^ifnsjlfv$OyI|J+qe*i=gX{{QUk?ATLCzB(}Z`T5mP zMc?1w+S=N|Jby9JOF_0XD7ZE(+f_^2R7$fmDY`c-yg4q|*x2*)^wUj4%tk!AI4;RV zIsN_p*HK5*PDIw$*2+aY=;-L;;^O=J`}g+t@bK~J>gwCu+rvIHv@|N8Iy2i-NzqI~ zwlyoIFD1=LKF2~h#z8l}JTk*VH;X48&q+VTKsLcYG=I21HTnPlx^5Nm(v{q2sMmyG0NWU^B-|ge4%TGnjJ~FgGH{|j1+Tr5cPes>QPsDa|#%^eA9~iw! zK($CgvVUJ%wJjmlN*$kBR&9^6Rm!*F!k+_xRUUOwMIq&R9>!P)CtAFuY({ ztUoxgG%C7eUW6tet!ZVpC>+<-)%oP(^w-tz#ec%UM?Lla{)sa#?&am*Ju{t||Zk07rCEPE!CTqWPk&tqBJU1N>yPIqe(XSrIbT6d&c< zjQ;JK=MD5Mb$iO1#y}WQd)4`^UxT)Zu})V*p~Ic^!Be23t)el(leD6uqRS(EqW}N~ zDoI2^R9M69*JoH$XA}o;DQ&R`$`Ztih=1d8Yg<>Xb`J>&pg>62Ll6*%5T+zyg9))D z3|n?k_K-aknF=afp$ZQmigjRp>aKRT=e;)z2p{0_oBY4?T0UU38SK^Fe^euW5@PYYd%`7x&WnX#fl}Le7s?g+>9_yjV&L3pt@|+`=?H2Wq);C zx^xUrUS3z%k}o%WA^ugR5Z4OfrzrKk_#7VYUaeZ&VR8098b#(#VEPmNazqJ~}SCy}S;{ zrH+Atfts3{Rzwg81QG!c34?6y{h3e^8HWNVLOxVFoHryVCx_4Hx3#6FrhoEyys

    GZiwE1<~mic9w=FOeVwM9u)-8 zn6V>=M4;e^K7``sXpH@A2!FDe4kD8=h~e*tL+E6VBoc*!Bl`MbVdmx}R+$+-nijlU=ZBj5=%Ukcs(LQAP|gmGa_GhNh;d>;@|vuGCCRD zHFh#^Yzhhrnw!}aWL#<7hsD6v$jv&I=pO2_-{XLllT*(xk?!NK-V${Zg?InibSyp} z?k^_B#4`76hh##RG^a@SY`U2l9a=3*y0N|R$r&Db7QxLJEQPeRv_xGSy?LvlI>nLQ z%nr}=3abi(J~^@Zlj$;>e|~p|YCM^}4v{N7p3#`@p+uJ+)LaP-ve{390fzT3xK^6g% zN4BK-`-_@CHjYFC62>jsA~0yeHZld0G1u@(D;0bjakgiODxywVYcR-e0%VHs5R)Kp z-_wCimVaFZoz_lmmj#JuKf_;Y_KUU=2#3StrSkhi(k~AURVHJptn|5G!Ah64jTi=? zB?8tOxNcL?T7wfgxtGr#`T62cadGA4wY9a`klNbv&g7w?i=RrMPM>zV2!j1cd`V+K z2n`_Q<(DsCtgN$DNl8gfO=;y)on4D|XP3vtNq->a@}rga+uPBmC0s{NqwxE3a?|lL zg>|iUW8@2_G0Co zOEOogEmWV~m(TolT6zmn^k!CstS_Ls@5s5#<&DYzly!rDsC@td00000NkvXXu0mjf D?*!dn diff --git a/public/images/emoji/apple/auto_rickshaw.png b/public/images/emoji/apple/auto_rickshaw.png index b2f0c6e93363fbb36be9f12c192d2912f52d8d96..59b9b4d7a58690c3ac099b9fda9464809615428b 100644 GIT binary patch literal 3459 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 EAEb1T-2eap delta 2379 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 diff --git a/public/images/emoji/apple/automobile.png b/public/images/emoji/apple/automobile.png index 5e3f8476919de037ff25fbb8a0baef6d858b1441..b0654e534cd728b025907e0d06e899f91c99fa73 100644 GIT binary patch delta 2322 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 literal 3789 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 TyUP9dlLL$pX7E})NBn;Q?_GDo diff --git a/public/images/emoji/apple/axe.png b/public/images/emoji/apple/axe.png index db3ae0cbc145993ed294653080d43979beae56fd..509b2cdb9332897e4601f67922681a2f06618c74 100644 GIT binary patch delta 2332 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 diff --git a/public/images/emoji/apple/b.png b/public/images/emoji/apple/b.png index 1edf1d78d4ed3d6f6187873c83f98c54ba01357a..572eb0c33b8578b2555341b91e2130c758c7b8ab 100644 GIT binary patch delta 1098 zcmV-Q1hxB(6y6AsBYyx|P)t-sr5g*f8V$Q05v&>x!X6K;8V&#d|G69v_3!TW*VNC; z%I=qs$+NM@XI{#Pg6k#}+943(Bop^JCHPW4=o<&m9}xV2Zu@Cf#U2m*mx%H%8`K~X zwuyoydP4ibS-e z`jZM^3`Z3Ge|N#iL)nQg-S;TTb3B5kRYdE%dl&?lyG|7&gl2^kZ1 zdSGG?s9#V1~1jr%(G*T%Ix4VIgC6s6AN|GRwjXb5} z3S}vCob>>CKHm#uRJY`9UKN#Hm2f=HL1rqK{CJJ~*4~?9^urL4}a=iVHi|!w|Y7zzDK)&NLOq z?DWwAybIJWf!f&X8p{27Tp_(oPYR!*+Y*5#(aKgxjt7k->8DMn)G5%*rADP9JHaz# zthFXBBh(y&OzB4VhQ96&v!E8#M!PSG>q9zDNq*DBa{mPYolwZp&yoR)c~Q; zz21!yq)bkT6{_Dlz+NEBl~ha6*Bjap+RzcI39I2sdMMD=L4BkCaPJ(2@HY@KG{HHJ zA%_5YXAxUSZdA8$8pk6frSfar2+Mg`Oo8^mfPezso%qPDju794z&}W$H;wKBAvEg% zNq^ijvt!oKP9sC#8RDHE3e5}WHk%7)#~i4Ckf3jd+9+gdE)o+1wozz1OHQCZ=JCPV zMo<_+_UUj4z1~owD(6Ox%pM(LNBwKYTy`9WK`82nESeo%cw~vr|NrI?z;l&28Y#+V z4mfpjd%#_mWe`NHY3N=>uQS{B{q>1s#(#$`r>J{r#?EI&8^;%;FWUDh5`KjIXOWs_ zULcG!l(1Y>h(Z)9;dAhBBLvDKGKfmbw2uVLUhH@%Bh*?5nV+srTSFV?I%jO z+mnHEN`AMlsxJPBu)GXQyvEI9B*ls_c_P*m&lpH)mBwxYCINq+jX|}gqX}*1Fhgr9 z7!DqolzyKvJuuOjE`Run?XuAv2AK!6OscvK5ncStR_Qi1G>fa$8xR| z8mcZGn<*QUCmNS28k{N{o+=!TB^k9bAgL}NuP+~~E+4iqAdw~+peh`jDI1z99HT29 zlqMRnFCdyJ9FZp(k0u$lFd>d58LciJxG^EXG$Xn)BC|3eoqsDE|NsBLG$Y40B-K19 z-9aqeKrF^KB*Qf%#Wp0!HznFWD#SG;!Zjr7c46a3F~Kz?z%(Q0WlzmHCh2Wh?1yyi zkACZaYT!gJyD}o~n27J6k=8sZ$u}k2KP%TfDgOWe@1~jXtD(^~BJi-N*gYxKJ1D(0 zBC9VS;YBdtLw_#WJ}S{VC*MOa;a^U*F(Jw~CDJ=5=2t=HQasK%C(Ah|MK9-F zNYgqe&^jmILN4V;GUQ1!-a;+nMls?>FugM(>RChIJ}JjB9@AP(`|$3#F(KhRC$BFc zvM?a+*3{BoOwG*8**GMvFCV5X9;q%K-aIGHIVRaXDSz(Q)!tG-);A-*Ga|P!A;L5x zx-uflHYBq!AmcwO)HNZrF(KkaFVRFZ`Q+f=I3wClJl0D(wQgnMoRZi(C;k8b#JIQZ zmWSb1L%uX4<)4+~K`igt*5E)Z{QbIzfa-p0@1&UPiFo8> zQs-`4@UEntDI4TjMC4RI=EJ`E>F3EV8`3c!;emADVp7U8A=#3N^u)g3;NQz?UGS!x z?e_QQa$>q@UC2;D&Ct;BtfJgPFzAVU;z%{zM}IZ=*VD={9_gKw*@%74Fdp4`Z2tQB z=yzz*JSyp{qVUhk>*3$W!^6R&pTMlD)>TB)*VpP$Im}#4%*DmmUry|if##Qu@1Bs$ zyt&CoHpMk0=4w~gK`!s1l;l`L@2#WYw5{^#=i^2(#yTm}g?qb}kjs^i(zCDGnv>GS z#DCYx$IrmN(OymD)6xL*KOq1B04a1*PE!Ed+CbU_+uGXOPEOj|AWG~h>?xkwm|)wN zo$;U7^_Ro&nV0qc!(qdCBP>Dy00xsuL_t(o!=>1FSQB>`!0`hFM3Kh@ZtGUU$RH@` zb>wUkP$2{alL$cpjiymT(iXCmKu}S!m4B$TrDy>`kT4Wb1hwwH$K&36K5F-FFS#7y zcL~oElFy$nFW=`f?jHC-5XRGEth+*n#1goh!3TgDf0i8R&M<8TDO^)`$hFOlP-EcvhQzIZFBYJo0^rx_eS!Z{id-E>ZVSn%5 zoZEReOUS15?``c+;UeR#^}C{Xotf^iGwAyIS;iumikAksQ8h)OC#Fq5*3vSq8(Lb9 zO`momv`9mBGrv!s0~v6Pw6*2U^G~|%`J0wjX$;I5X!`6t#=$J<&Z+CyPjv$NTRWvJ zc$^1%K>_(fWA%=wA35pij%uSYKYzdz^7DdYN?z~y&}lnfm&Cwce$d46LgV?#&CMS> zskwRbd82UrL@0pFlJ1`DlHF1kIRKg<(5APye&B-E_H?aa0@M@cFyFrKlDA9_+!N}l z;V^e^oeS7H_fuQwn6QR#?`Co|XegP(Oqxy5{^Z}!L5uG%O?o)nz9c3m8Gj3sL-F%dK=W#=qCf_NVf&WTzdf3lV#oY=a|jMgUoaoEt^M0T zdyd~Zx^3Qk8w=9IOmDVmX8OW;pl>$V4+U;|fR=15OrI$-hs1GHKwX9c4S%iKHialo zjD@sahb|t&9%A(uuVI6z#(!Uz|7;u5q9HFqWC(Ks2oFVFF3dEOp1;1@a!Gp#$dduubnM%S*Z6A9b#Az?xa8p=!1hNOe6p~B^6nT4zFHkwD#(sUak+JrnyNDS%-{dr@R z*{PHFj$<#Z+9hnn(`eCu&Qm;mA6(I}f&)KC*_4mPEB}N6d-Tkle9Q2*_v& z1vVJW%JU3DA)SU5778-1Sz_mg{jcfdDWf#hRv1g8bBFvTBCca0)1$5F zrP@x2E0Xv_{)m99<$yM?`3(ErjjJ(xGb}g%@pY%v93m}OfPbJNJxv%B2Es#8H!pl| zw)DXM!wuM@?QvNlVLL2FNYkSs87(2Qi;!V$X%?om^z3DMYW@SZVFYn0W&4hJULXfNn)Pqk=3yuNh;4f`$PRDF!>4A;dB^}BltOuu2 z`Dmzs4s#{0m9Wl*=>?_`MU=_{bqZOBS*tAHi9Nx=;CiZvVhSnp zL@3eA^G~Bdlx6b#g2O3qdty zme3zxSv1`{vdMDG)!(Qgti$GzZ?+^zlm?n%2?aKOhuP9-z;E4*CszpDX`&!WwlCz% zL&(HX9Uii^@#>Xin-Ce{nL_$kf@DzFp{lEwG|5DQS9()OrKhlAP+gh*zee^(S6+f` zu_=0$FMs5t%8j6jKnKfiWe`=}y1Bpd;6afcw1`}l59FidGlJLxKz{Q5#YB~>@_$&A zFR+6h#NaEnk9$!bHyMUtO^V$YM zem<&Y5=J=1Y2ggXGL?@X-=`qB+LZ#w$gGyE5J%o5zXG-}E8Zyayu(yK-drulN$j>(8 avi|{}9^=n;QCnvK00008TTbL>7rl6^2R`zl9(D%{>3nL9uTX?5q;!rV`qh65*c{ z^|}`Ky&3(+B>BJ{|Is@0wiEx%F8|U#@39j9)ky!&GtrC_y?=QV$b%C8=#Kl_bNbFxl8voNo;jvBN&!Xwmiq2c|1^@s67<5ujQviUUTNfP{2IDN0c+Sgu>rd!hG^<@l zUEed#Jk97>Q{Vkfx|Rq*g6oFsyVmnRb1t8v0Vs;4)_?J>;2$krTvjVWNGU}aMO^O% zu2udy1t2%~wvIAQU5jI{MRyqa&}*CoHNOiF)#B26eJi28<97Lv1q)BPeth13gD>u5Jy9qAEE%j2?7U|IWq`^BzC&qm-kX| z_KD*lCs1+<7?Dh6iQiZMYlurUbj%?)K~E`T6`oY*Smi%0yJ0v(+7YL~6sTj8syDm( z+JCrf&e2fOuLH)lND8Im9YCCa%~tj}8B$}2eiX)XEw|^wn^3?ePXNj-RlX(zkY^ur zC=OV0m4Jxgf}}u<-&}m@8DrQo;uyrS5aS+%o=^&eB-``Y*HNl6hC>Y;0I8m1Dj>aP zLJ|nm9b5WZq%wgrL){sdA`HdMa*5;n3V&tIqyTMaG))8oQu*@~At*D{Wqdpy&*11G zh(xH~7_^mPC=F$aK%cAKVw^y<;3*oWauMWbdR2vj%mIYYEiv9YP#TSkE6y1vQyjHg z14^bKcqj~B$~tEf=<1@>$e-+<%i;)RXiUoSY-R=&Ec1i1x?>O0F}(M|)PKDz1aZwk5T`jBr^#lreBVqa!_i{*7WjqS@%wVJ z*)8Bdj5Z073{&%f10anlklocpmd$=kk|mfK0%*VbNDOi`MNlVw9|3&=S5}KOdD9G) zEcA4n6G#G5sBAi$CMkeOtJQqxsAL36=0o5UsF{K#Oa`3LgDxYeCAkJ5L4VtkmL|yp zssI}H`ycD6d#LvAeWXD9{vb)x873o;%|#1_=}t&n6QQ6T+W^pJv>zcS-t5+iOWAOV zr0d;cxChiI9&7;A(KSyB5r-a}?qHB!gk&20E+iJoPr%ZuxoQg5e_yW?t8g@3uiuw= zh07=SqbZaKlf}YjLfqjd8-ELK=OEp5(NnWOh&RC5O>rWpQyT09eupd3)8->deZ$N_ z9v5Mi9?3)Li3ms>L0!jBlaKj)zS||~D=u6F(Rxjj-Hxs#)1E=&D8o1sknD+W0e7Kb zVi1LbCJ9%qI|cc!Wzl}-r}VSy27%?%6n$s!>-){pLVuJ@Rufq}yod@x&8ty*5ymh|~j;k8%S;vrR`$_>m!vNeEUi zolqOXN#+%u>y5YD?RW+<;n<>P?vbG|>bFa$RHu3q2@7t`_J6|>X|GPh;b@y1!eC_R zq;8uSj@da0Hp3yk=>*3DN{2Iq!GHsmKCMQ(uShCg5G;n1VJ6~$pS<-Ff>EVUlOFp~ zcto1fZ=)%9EWbx=Wxi=BlM1@fKciSK=Is<^YdMO4!vtqyd0H1 z>lg|{E4A4^?;HE=1DR4N`eI^ak9v%Yvtk`gVWmQmvrrnCks=068)BWUdb`%d-B$<+ zG!O?0?1w+Z5bE}^26v?>isKL!M?iVJRhS>M+K&&lS|}4#t35onfzl}bqZ*BRrp7mn Z{{bwe+zST2LP-Ds002ovPDHLkV1ggJ>$U&@ literal 3859 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 W?@G6Gp6E~j0000uBerxor#x=aG8#C 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 P00000NkvXXu0mjff1Pwc diff --git a/public/images/emoji/apple/baby_chick.png b/public/images/emoji/apple/baby_chick.png index 13b0ebdd9511db7197342d07cad19ebcc09b4341..dcc7827268ac1e26ff70dcaa758d723847598add 100644 GIT binary patch delta 1261 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 SR0T8u00009GU9nI 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 literal 2329 zcmV+!3Fh{RP)?{q{R*H21Hc;KC7cT0g>xG?^}?F7gu??E|C`HAT_%G{3+xje#A|4%F0{ zmhJ~QFbNK03KaPVkSs$zVK{yPqz!}=_)g&X0gyBjm*E>&#Tj%U<2X3th8c7qJOiH~ zUN{0M(>^FT!~*r$2ZsY0IxVlFmx;E&3ep+J^$BAQLMuHz$EVzeX1Liu1+|!N*_ZSw zf#eO`epeh;aK9CxQ8cZ0AUpy6sW+JZEzBorN^g53$Z&xS7)~ER)&P_Zjd%cYdIgdn zMysG@U~zf@!V~a&&^gdJcLgGI;H>a@{{R|de8qeRvxoiyq{$nekR1Ij83d$WoO<3| z%O`q&0@7%b!eWjZ2G~k{2%}?E+!j+S_8%aP#u;c`X!@T#V0P*gh+pyX(G9&JAu9D- z(NSaHKx`A49DDTc4z8yL_NRY}Ok-(E{yl_eiDP4H4DH=vBsQWICyI6yR`*XScym=v zKDwuf(J?A^gYgFVOdSL2%t#)jn3@hru$ZrSdlQeT9fNt4wrOL|>iy-^A+GsTEJyVI z1f$}V-#u$#8U7M`@9SQS3Y~oyK zAxgxgQ-V{`3j6>$u5TpJ!fV>j=REF_YiYzZk|uU+ET*o$pq58GGEHmD`YN+Nz21J= zGHi>m4zhez>J)1oO zJ|+szJnGzE1;3xRI>P=IX$8ef=z|Hvy8~H6;2>s}By`!C{ZD$Ps8pb&_j%U_ znpmUGE4%a);SxWzbb7a zB^|RGxfL(@0wF6;szy*7-B9M6#OnbFb}Qp;FIeWz%R&`lUD~fyJQHaZQz2Jt6#F@c z;@v!VVxSA&{^LWQiex&HMC~-0X2)tYx-O@7KB}9Dz9EW5i{CvE(j$jA548qZ zA0#%^sAC?KdvROWN1f!ftSmrqOHt!LXAS$&K+2HSvtAwkMUOxd!&q{<=#7=T3U)57 zO*w1oK-^kw;1pXVn#~lKZ5X-x)jFa0B5#~1dhG^ENxc^!iN>?Ggp#9mckv-3cWU)o zH#XXdS{32H2GbRw60R9CHJ{V%#&6>{p$7j~Xbf4PNak@N6ZV|Gfg)%^TlrS_yE<`= zLdSamaum4lg+Gdp6D7}KUM4h}sD9@9&Y^A~RKHI%L>q`cz{=Z}wO+C1P!xmLKq)DW zn(P8%OTDw~T^cmkF7UXHTZ8)4A#I>k#qa8=?RQMz!r)sWe7?C5rbYGoiOhnPqH*&6 z>=Eu(vWCH5h$1PO@h%;bXzDlHCnW3wi}R% zW-fKBvMzyn4;xK1UA)2?AiXXtQm}IMq0#%s@N#H$)#K>6*nsuB*ytz1RjiB`oz}mg zL_k9#!r-X*u%6mbIliae9<3qj#6xj6AOp4R0TV>C9V-h}<7=So-AT=xW=+^6qQGiID;So&$)OI!A0Gr4nSPx%_a3qQr?%-Q=cOVFbFT}Jl<$u1LFrp4< zXQcyE;lNt9IGsEG6%?U|R$j^R`BpE@kb%1;E6pUFdEFFz!G*-*LYWF2nJ)c&=Tkk$ zL#*$G__k`kS?WQQl${&Hv|4HTp(6T^qk=y^z&4FbIZYym!_^YlK;B)f!86^7r;@9;Io1 zW7gLzKdwsWJNNXF)>Fw%_NMg4{9NDvnqsb;&uS)LPdF^%>*Q%Ehiz9Zl$SV~K(qc+ zwtw$r*ZYPDTjTtur0W@7On53M7GT0Ffqe9H`X*)((ei?z?5dC1jm z$+XIu+t|IWqkN_Ax8r!tidoL*T(RSUppxg88*&n|ZHp7u>-SEjfu32W4KG#BteCZF z3g2$r5kbk+idkD`Y@1m=BX9WqL*)JIXLtP{PA)~J`3#iR00000NkvXXu0mjfYO8qA diff --git a/public/images/emoji/apple/bacon.png b/public/images/emoji/apple/bacon.png index 6bc42fa621db44415fb932773c9d903aeacad46f..d719946af9788d74522a72511c51ad922991fe38 100644 GIT binary patch delta 2747 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 BJ1GDF literal 3819 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 diff --git a/public/images/emoji/apple/badger.png b/public/images/emoji/apple/badger.png index fe47eaa2f00b9a847d40cf63d25cc3b04e3afc59..cf4627454154b648bc235a60b40c8a17506cd713 100644 GIT binary patch delta 1302 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 literal 3519 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 bcmpPP=G1Zvwy*#FLIGMp9kpT=EBJo^f*E0p diff --git a/public/images/emoji/apple/bagel.png b/public/images/emoji/apple/bagel.png index a4e5ae9bf349ac8413169c88fdef6895c3b08c2e..9972894cdcd0fb9b25ee3dd3703c2f8b8c2a5f0c 100644 GIT binary patch delta 2895 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 LNkvXXu0mjfrC=4F diff --git a/public/images/emoji/apple/baggage_claim.png b/public/images/emoji/apple/baggage_claim.png index 33a4b1c62dd2d36937cfc1a67fead21bb345e9d0..c8ba611e3946aecc30fe8c022f39f71f906be5cf 100644 GIT binary patch delta 1016 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 XMMXRH(DlW!00000NkvXXu0mjfh=v8e diff --git a/public/images/emoji/apple/bahamas.png b/public/images/emoji/apple/bahamas.png index 39ccdabe277de50da95d7e45a7a8754abf11e810..c2aa0ec45a21b69e563e8dd1c48c512ed83d8356 100644 GIT binary patch delta 1230 zcmV;<1Tp)S6X6MvBYyziP)t-sM{rCARbvWOVppK44rO#@qpcWpgj<-02qh~3005wp zJq%G@4pduftF~R6s4a+?4xG0P3k)W<&j$tu z5)u<1uErFjy9t-EDznNWA|eg5*cp|o{_R-U!$u3L%L9_C4u5ut5H&p*85#rw0~)Bo z`{Z5N!8{p+l~=RA_TO1Qvcw{ww@0I~K8u&oQ=?ow&2ZX(5~t!a8j-+n1AC+8k5lkO%btu7PS`tDAH+s z!-Rzfj=~5gI1|S)dp*k{wjIaUw0Ju8hu>1@yF29P#r|mNGB_d(&DogdTgWCkNOy;m z8QUN04C~D1poF&BI2)8gkcyyn*GNpZJ<(*w479?M7<26rHJMsFw+_Ox>)!=9jF9S zb-nF-JxC@Jjxe;*{r%m;!)pFCe?)_qmz&*kIe#VBg^+6KMziOcaw2AE&IrV+9|XV9 z)6;xDAF$wsyJaB+$xz)S0%b;G4j9`2_50)T_=!0olowh!f4upt1VXx-Y&2(*8hsgu zkZ=a!JS>8Q)9Dy$`*}rA0wb+xqEbjopk8mbL4TYg`H2KHcpvIOazVMzIM-(<0tL&Z z2Y)k;P)U+xvH9WT^k*>4Py~XjI5Qvk4sW%(e?3 zY)ClI^e7V;43SAFe;t)iq;`A_tMI)1B_byx<=0VuM|!*G_4p-H4(*>vRhypn=Hc(q zFXos9cYn#lzms_By(X?}eA1kBMf)LLt@J$0%5H4I2rIv9R0yH`1qn&!@NZ&6Tz@H_ zsH;{;lz)kk6n|U8i=KZy944|MM*1HFseKIwj(|Y1K|o9?F{DHdRb;hV0yYP&Z}oO! zS+-3$#T+CIPBfdX)@7qnWi=X?mrZKba&K&42#I4rVkFCgkc~lw>gnm57wMDJ>SZf~ zl<%E(g&!Hku}`~Z0*IO*ieAFMC`Z7mRV9V1jaG$CnTTqvCNoZ8>@Tx$=2ol8lB?ij sVDJy7oYYTQ7=i(x4#pqav17;n1FErn+a07*qoM6N<$f*3bSg#Z8m delta 2444 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

    t@A!sL+_m_Ke#O!www(f4VYY3 z_F?}@v=j3=N&@{;Et|Oh%9V!dpKUCy&Cn|2VP@ diff --git a/public/images/emoji/apple/bahrain.png b/public/images/emoji/apple/bahrain.png index d0caeab6e2861975c752c3e66fb7e75a5fc0dafd..f7cd2bfd11d9ef644c4ff78703d5f8e6d2b4b53f 100644 GIT binary patch delta 1039 zcmV+q1n~RC5~B!^BYyy>P)t-sM{rD$WooiwYh@E0auXe+e1MW=bBZ7=kB^VFjgozR zeY0wEwrX-~GB>)nx3p<-Y8xZL!NFw_8fzCIcXxPnbab?|v}F?<%`HC1Dmu_HLc|ax z=;-L;;^M_3H1F{6z8x;rG)49N{IMc2x*#voGepcqQp#Cl>3_b$&2D$#kCn;F%G1-+ z!^6Y27AKV-E2N~Pt`H#D*x0KqIq=!sm5Ph8MpE6~-Mq=d2LJ#77<5ujQvewJU;Zo! zqODT(isd`~zOUJd=GKyt%$6W;q5uE`5=lfsRCr$P*Vl65Fcb#hH3W8PhENho?!D4W z-v7<^=*R_=Xn#D3Z*sxUOz!f{ufrKz{P~@E=9y=PiZUpoD8nBS%3w5_Oy=`xugG*h znT!U*ZyJ;NblOXjUKHI#&ioH*gR1RNt`1A1mqd^-3~wQ&zVGpz(!meAW9H2m5C zBd{7TpK9RPAP|hXMd@T02D&NF>N0mA^F}tbWpSH zcB_Ji*>1B;O`}^V2sA_p#YVeI+C4zqJkPQ`!{m8>IvKiki4($&nkg#TWu^TW5dQb+ z17aA4uIrZNT4_j$06510Z9o|B6NHjrcw9FQHIoRY&cl%8jSzxkxt9bO(o{qx4%sjy zc_VND;(wBBB(_EgX-ZDuFobM`WR2=Vx{=zNNomt@z;W&x9or!*4s8vjJIE1C3AHsU zzcLHId9XO-@D$P)kpBrf)ey|ub*(rF11RJ)(%J~2%7IR3rDiMS%ONfy6i0*wO{hK^ zMB3=%u91t21Se~0w38oAI95tE!djsAMphc~y?-VEIUQ!?#`IY1b+;K=mo%!jsKbnK zjda)|O(UIWBsLO?wa-Wj;XYQ2B%jd{rPfBcNTvx+w>{#E#5Bpb_Kg|2ZW_Q|cikgP zk0VX%yhpf@)pHFT*|1w1VWl)Q#YT3U5e&)V7L^>$uOYAPdE`Pa>75ktFeZ7gNsfjA z$A95dYJ?!<3rOCml*A$h8f6a25|z+7MOyKuC8dCUKoW&K!R%Y!{Z%fB?xc9s>qil`F4- zh9WT}?rgJJL&li(dI1C&9e()C1`sS!6#k(F90D% JPDHLkV1kM)<_!P< delta 2363 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 hn);5Ms;TY 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 A-~a#s delta 3270 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 delta 1185 zcmV;S1YY};9kdCMBYyyUP)t-sM{rF2o0a*saQ~IV^wc-@&_4UMgZJAO`>ula);9RJ zUH*u#_`P29*dPCXxB0+k`>K-vey;!B?Ely4|JCUIx267*to*8u^~x*%z0d!0um5hY z|82AXd$s>+tN)|T|8cngio5^F;QzJN|9;2+gQ@+Jlm4Ni_+Fv^Sx+-prevuK;J#w>`OIIq~LYw50*GbxxwLThEkQ;U4FD20cMrJ}x z?uy$T0L4QHqp;d6S_z}%%g@iteE>i}SV(RU2uu>c05XQ4yaji~zO1N@A z&1ZoILVwD%#Se)TlQ%sqCjh96Z(&+IPHGJyCzp6821 z-xsN|OX5v7s*tV^0yZ_wRp;uh^$we~pj;VehapFX9-32@-A&hZ%je7}QAS!=hiXv9 zzJvl6)W2~*Y>sY>5S9-x1Bt_9^i`HIv__;;8J_nDj;e>PBTjEBd&cjG&Pgk56BlYH>gUs zxDq2?i16;G1~cT=JqQIlIH2BbqF|P8+?r{H575PNggYLgEaBjuA`8$zckzd_RCCAd z6vzp7+6Sn*F_29bqYNB|73)sOjF#H4}bAe6``86jBnD3@4)Ps)|xt zRV~?2i?Nm2B*_VdSV~I%hdL@%Od7QNcn0tvcu@53=?_zQ00000NkvXXu0mjfpNUOU diff --git a/public/images/emoji/apple/balloon.png b/public/images/emoji/apple/balloon.png index 50f566fd2590999f5a99e4fe9de1daa0db839f4b..8b2ed683b5642186c7ca8e266d7547d8e4d5e820 100644 GIT binary patch delta 1302 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 delta 3034 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 delta 3034 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 diff --git a/public/images/emoji/apple/bamboo.png b/public/images/emoji/apple/bamboo.png index e49a95dc28490810e6b6a70150137745511bbd4b..fab1ee7af12eaf6cfced49df595baf90cd3b60aa 100644 GIT binary patch delta 2192 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 QNdN!<07*qoM6N<$g1?)haR2}S delta 3112 zcmV+@4A=9`5v&-HBYy(`P)t-sM{rE}_2=>C&ieDu>*v(cyprzX&B(&XgNpI*>(ub% z!}s^`?cT!o@XqMj#qi|D?8{@|%A(Dz^y$*<-MRMQeC5)( z=+>&|#$(UBo7S{n{Pe@^-^T0R#P#gg>e;{R&}8`NsrByP-hae=>C~{}w@vurar^J5 z{O^v+w2txQ&g$I5!mNk*=)CjVZ1Cd5)V`hi?2+^6)%M+-=+&w9?Ahzw$Ncem=hwpc z=XCh$(f#am$+VF7@7K+_n9sSB%(#*D>el$-jN#C=*21IP!BFSWm+j43_1|pl%WL4k zQ}Nx1?Ao&R+kbQX?0VF~qHa(g{O^7A=y=VxkoV)6ua-OX;-}-&zVh9J_vX0g(xuzV zt?<-d@!hKW=yvJUv*gBr`|WVy$4C3?Z~5eC$F)X=U@51EKKJI8j&LsBx>(`NsNTML z@!XX7@Zrg_jN8Yf@7=}Kz?tX5MdZOl?AyWMxIpK|NPoqziP*!R%e9Wpw~+Me*!Ahv z^5xLt#6{D*mfFRl&$yD~ze4)-=kw;$*u$LY*1GoX+~m-+)4rJ9%B;bvgukeQ_}f_4 z!JOHxJ?7K3=eW@8HV$-EqC8 ze(A|h`G4JH&73&Ux|Q+b&HCVJ@Y7G^$VKedv*ysO+r^*x-Co_nMB&b`(Ylh~us!?Y zbLz@R|MPYB)@bX^RMMe2``}#q-C5P02 z<+VTZ*HZ1yO8e$%{qA@A;ClDrUi|FO%CCp;$$w(`*j3oPM8}jh(WF7~$64UXr1i>5 z@xw&?>T&eadG6Jo?6W}q@YnO%Wb)Qw?AWLA#83F^)bG7V^WCz?r+n(pf8V}V@6%z_ zt47bXhT61E?72ea!({*HUH|QD*SSK)q;cr5KL7RL^v`P6xo($#S?9e_*1C`4$eF&J zZ-2h3joaX=l0CRLwPE!CVRUQs1fCd5zB@#s$$1#!^qRu>M<`a;P zQS;32{`@ttrCz>sy`Mt<_WO3E@a>%7z2R>>k=Oj$@$;(K;^OOqZ&9^t%=X{?sZGLK z`0Ks3WWwz>)t%+(>(tKB(sT9Eo;BsDe}BV{`Ho#N;M&uw=G%>m4;laf2xv(}K~z}7 z#n^XHQ|T4}@K6&36cH6fQ9)E3`&f2e``TE$yKj51uQzTIh$Q!tm>VP^jY~)j5HN%g zR04*zAOecOvI53}3Kmd`pxEoaE$^K#ppuAX$j-bolRp^Xm-C(PeCK`%jn+pDntwib z+FVaBnzJ!b#(hqgU z@%>mO

    B#ubBz`?qd?#0CV%J1`LSkZ9QbMOu2C!w+p3bxr2P=xBAA;w>XCMO! zyR9O6(j&i^!6m$r)O6lHt`$9AohO5?M$ld<5QEJJ3Q2E}AQg2u^74KpEjWt`1zqYO z@``XNj;w7S_y{W2tLxOa9egJyz2V+n$Cybu~jB=lo7l5lr zqS5F@^z#qfsQe)otI9f@lP6zDMpA9D=|Q#7v)NcaaUe*33BfN`{!Nf<{GN8EdWxYSxn+QB}-2hH~Oi>bV2+B$2p1F~0DklfG6c^h5gWFy}R)t@d zTzz;(B1{A>=FzodqHF@Ry~l}+1se*0z$tQ(Y$Go*MNWCxXU=Y7T$kw2AhQ`=$el9% zr4>qP{oABpn@_CaM@o6D@Yvr?I7T3)vg}3W)KQT1)w@sQ>Vf>~DSzFqw+ZpH#Z**a zFqm5Y^MZos1Z`~3pI76tRS|rYz;i)EgO1RWV!sG%lO6L=k6~+!VERX#H6CH~hG%}> z4D;$~RUoz=g0Lfsr^YyUy2f5c{%C1)aM8JpwjXJ3D$uBXawQa@ToaKhvC{}EaJ|)J zK-iUllbPuTA!LDQ;1@rwnIV~cujwDcTDOtYw)Xbv+lm(z^X~UVzc?A$&6tZn=IN^& V8cT?dy8Qck0B|S@QU`X4`wsv){&oNW diff --git a/public/images/emoji/apple/bee.png b/public/images/emoji/apple/bee.png index a575a57a9755dfe95b6c651ef04bacc0bf5a77bb..6b193ad50dfcc6fd974f4e348e1ef04d5b5bda0f 100644 GIT binary patch delta 3400 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 eceU;EAO8=IQ85;`vp9JG0000LKhewD9Gcbeb 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%0AgNiOfe*Ee~W?^IV; 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 diff --git a/public/images/emoji/apple/beginner.png b/public/images/emoji/apple/beginner.png index 43229d6aceeb66904386974102a575a02db0f656..f4f2e6247e7fddc5a4206a13dde6f45147dbbbb5 100644 GIT binary patch delta 1126 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 N002ovPDHLkV1mClg7g3Y diff --git a/public/images/emoji/apple/belarus.png b/public/images/emoji/apple/belarus.png index 013be170e810cfbe0eddd80e4b2e1d720268d79c..b458c25d743fe72a8ed4d0650aaa3138486fb762 100644 GIT binary patch delta 1294 zcmV+p1@Zd$5}*o@BYyzuP)t-sM{rDgL_-Qp3Jg*Wp~J-yToJNwaBDOoi5VAR8X2-; zVhvCYAWRmCZ*K}r409C}w{vr{V`H^tW~*dmvS?_wZf>-ytF2pGYEo0Qqof2-0~3=I z8k-sde*qD05D;GwB90^nu_MW!pR-3svpF@uYirH5w7Lxq#(x+?K z000|wQchCh#2ZhKVWV z7+6CaS(ao;Q3yvvkla*5W_z}CHiTe4tBa3Ym{Sqbh=Hg;nxc^#gh~o4P-AQRc|OO0 zR7DC1YJVIQL1hwBr5!&4x#2dq*ARB04cq1ncFIALKB;O5C>I-Po+ zS9r<+q9Q820~xLLZpZz31SoLb2_yk2Cp!)xwf5;oD?*~&5s-_NjSvOZ8tIY3puUmM ziGpyNa&)0;qvN&f(1tm_!{lk|G9_sv#*@^cuz$AE%%%>NW2?(_BSplJpq+!(gz#LB zt+&<-NhC(jL1uexleF9jP8|}=g%I@@e0~~|$feMVMvMW1BO&iJ6rbBjG@_})N=Qh> zEl_K=M;TWHS`})~cFf7^ka9AGERi^gqUWC?d+}N? z!pWms-6-e$=g27^0NXDkLi%YK+;R_Uo=EaUcr7 z@M5=7Go@a5(arX2ENvAfo0RN=3kpI-hkrWr|No9>=3wVkE{L~=H{o&~4rd4r^~+|v zz0!#Y3Z>Lc+%$5%=1T(2p9X_bnYXugGhUf7{^T_nhS-{f5a1vb>tq-b?GUJup;8v=&#MZ4k9e|N;wCpd62cn90Vvvo$OCeb4YHEU^?yeZ zB%nRWP82s5qEC^mn(|meFu7q4LM9o?Pf+<<@ z)JT=kTU(TQHU)?}D3S2?H6ww+;6Orlvq~+u6we}b(sTHnvxyOCV^gdY?l;9 zJR)PD;Q2nBF~>09J8>C-`sb6$EGQGa2C1aNK!A_{fkrW}rGI+8UtpzrPTZpr9ETVb z>PG&N=y|=%9%IbG814ez>g#FN_k9n-RebM`9Xs|8+ojvt0P{e*00000Ne4wvM6N<$ Ef+Pf082|tP delta 2414 zcmV-!36b`o3iuL`BYy(`P)t-sM{rCsXe1v@5+h0%N@ymn<>;ntYk(mkeIp%T9~`QS zg=cI;p>%a3OBW+d7^P!jc1J}gQXD2y8z4&*s&8&(4hL{JHLGf9AVwFdXJ#c)9i?Jm zn^Z?`DJ6z?cYj=4Dp(&MNENDYZ>?@@scmT^O&F(VWgkcqo_||dt!88(Nfaqn9M1kA4e6ZZfvh{aI9@=o?crdO&W$F9zRPgmt|yOK0RewR$3n%oP~vs zH87u4P+dJAr=_L1tE+QLNpN3bxv{act*T{HQ*>2WzP`S)rKN*rX2Uo!!ZP`JES5Qt0o=3H7&0yA*CZ4zcwzhDj~cy zEUYIUy*4hQDIr3RET<$JHhUqeC?A_16g`G0pdlBsEF_^K7etXSKZz+fej&FpDNLL; zOPV!Ko;XRDG@l<8QlvdkpE9JBteBPqc<-&btu3#E-q*t zN0l)^iz-FJd94LOeQxB&{RTsV{AT@O&$f~KFiHNIvdZ9i!pj1+=SXIos zy4Tv)dn_o-H8Hn8Iy-wRl2|TIr#d`;D>iQ@!I+n)Eha#hEwCOIIf^BmN=AM-E{|Sb zlX7vhl#|P(rn+u!vqnL@NJBf4Dp_D5p(PxgCVwE89}?Qn&$oVj(!|2PgM(73Jy)bW z$1EtVNic1LH?$ucXV1%Fm) zX_@I&!YmGpRZ&rqlhewtWNWYZ$WTN2zeuDJ33W3yy=Ak^7g%LxrtjIackijAN3W)& zG&Om8diM2s<}q19e$I#Q;cq5=vh>SuNW&P0db4NgFF?isxmlz~uPFlYnac}uvB4F>%{=;%dL@{uwggCdqG@G0EM9tb{x)PY z2M5Ff2nM3bq4f|l0dgK@B9civo5K@!qR=K~2qmxpMg$L-?TH# zZFGtvhOD|%c0sEoUAZ|ivQ!XXIlV%^V|emc+P?%Q{6 z>sC8EyNFO6iUP>nn-S|P5H!4_Dm#zv7>WB?L-{A3{#jB|auDM9gjx3(Gq~Jy=fK#C zLJhUm2EVb z*Tn+}MiSt=h2fA4fdiJiJ1*{6d}&6;4lEg^vA&8O8F3_;H7FG5g|r=mL#QMtj%Oq# zrKTP}{C_TKz;<1^%t@y%9#byq* g797ub#`6mK54AgT0-KPo82|tP07*qoM6N<$g0@die*gdg diff --git a/public/images/emoji/apple/belgium.png b/public/images/emoji/apple/belgium.png index 6742c0bda85e32785663ae5975a86b79f938e7f3..06b613fde6cf39306824a167e7886bc26036003c 100644 GIT binary patch delta 912 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 N002ovPDHLkV1kcEo3{V} diff --git a/public/images/emoji/apple/belize.png b/public/images/emoji/apple/belize.png index b78f23ed4e06786597be1665761e970c5a68b4e7..51f128e8e5d80bb5c049963914aca5bf47fbaaff 100644 GIT binary patch delta 2120 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 diff --git a/public/images/emoji/apple/bell.png b/public/images/emoji/apple/bell.png index 09875773ee63f77029ad3d24aac97b5b0322b7dd..0655e9097c073b18ac50b9a1901d75d989bc1eb9 100644 GIT binary patch delta 1818 zcmV+#2j%#`8>kMDBYyzxP)t-sM{rC=G!KnA@=?j8JgkE= z$(tnQzdu<@9RK}nvV0=;&_u$JC3svWk8CTug(bODE(OK(;qzMeXcc{5%<5Tl4ThI2C4sw&KU2yS5~_Ssdej2Hg?hT4x7wU;@{su{^G zD#-u<02XvoPJdGX{y1Yzd;SX_{GI;1)Vkz}?wtMVdZrjCr2qg0)Ja4^RCr#c*aveO zJrD+9bH!I;upwC2E4}xQdr$fP|Ihh$CBZ>rO3Y@)<8j8%yjrA{#%G61g;LH=E+O~b zG4i@_vUA?8x1G^2E1l*jxz|O%@%&PG&z!b8H9u&#AAg=-ik0GNixcuQXK53y(aU|^Ll#DAoOjO97= zhVT20c{l+pq5h>;ikSC8zwP$>t{YeV`NV0WWKro-R*rUbBaA;5i+cSo>bq?&(MTwD zbmdsb^MBimZnt}LL#5bn{N9Lkyd(#{zxes{=LQry&#Of5_oY(m>KI3|!g1W)hJLT1 z%JBWY)JaK)9VJ~JkK>I*?bv?+=+=0AL8t;ysgqU?2Qtg$ar^;J_omLEMgkQPLPP{s^;<3TIFyP**7N7|w!5iMBTffnJ)5Q^%o)d}BelXP`K?PdH{ToRd1_zo1 zBEGi0BS}mkH)2ri|Fw^3qRQT_EhChC{C^;EDA`8|baf1bM-2}@9@=e)A2x)PJvSPM z;PB%(O2&wT5T9%a;ULiuLVQ3%rYLe(-S%*dSQZ~`0PP#wN`^tN{GP4zE@32(UL%Ft z#*9?=oDd4V_VHFrAQp)|NZ8eewQoiW1R;7~^Gk$7A-*DR5uy@xN-1gIeC+iG{eLbp z^%YZPPSaaQ8sY;0AbBU0Azs6;x*u5hHgaQN@TE0r0%QQhrF(!nsh!;xG~1c`)i`cL z#ZXmX8ezx-p~NASIy;{d$^|i;aPIrnYLzqoe2#fA5O)%3cO+RGH36D8m{i3)-~hxD zA+-tNJ4yM}F+FDzqJw$3)R;4fM}OLuI-g16$^piOYOko(;=I2kT%G)xLm5!|ef-S& z3_}W+=X};Cl(sX;=%DhkU)SMt|%JnA^bDar+tz% zyV>yPZucivLIK40_8d+dcIlSyC6p@b)vcYZ*$W5bmWzjspEC}D(_Sa?o`1o49F1PU zDe}`xC2@7;Nidtu#y&!cbGLRHaQY{X(}bCnEX}G_YQqXUz5I&P3Eb1YaVy3{wpd^k zK>9okC=U<6VT?fG4S;jv#hD6U0RjO+p<{6hRtBAW8~1vX5Dy8=r2#<9`F{_p)uIwxi+rZY zmroc77Fag0>AhaL90Z`+8wVeY-~DR z#<*vj0eAqCTJszVvC$TU%qXAHMFALAimFPYtY^~seBLmYDN4e>{3S@n zNEJF$?`y^cu92a9_JzVTXhIEPVptz7K>h)K-a2o+;w5l#G>gY%cLZN5Co z!AzGZ1#q%V?Gl`?mwJ`X5~%z1m3oT9x2rBoz?@!+as=={7!zRU9fKd%&Hw-a07*qo IM6N<$g2?-1X8-^I literal 3519 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 diff --git a/public/images/emoji/apple/bellhop.png b/public/images/emoji/apple/bellhop.png index 0dc920cce368a0234bd1d3ce6b74794b94d283fd..2bd91ff9db6f4aeec84f86f11af39a56009aa3c8 100644 GIT binary patch delta 2204 zcmV;N2xIsE9H$YGBYy!7P)t-sM{rD)d0Cf&X?1aMRyr@2kd0Rn61Oq%H8Z;yyN-!v6LpduR8*)rRUo|IxRZ5Ux9G`YBpnq>7gjW~2i7>v8GOB+t zsCFp$%SxDSCX;b4k7_8gdncV|9sKB3wt_2lOBKeKGKXg>eqky6*-zN3I_$nd@x?r_ zkUIX^J^uY;;IKJ-YBHsXI-G$w&Z$4ppEcyUJ^k}Tk$N^&&!Pd>94S);MDMel(~CYEC2upFG)l}RCr#bm*+e}DBRr}dE}wSYQFtuGI=ouQ=t z)=8K~trI0iWGY_Psh!|S{%9;FlietZ6gO*j<)cAT@_9bLy_{^O>&N9Xm5%i!54LuG zGq=H6n~Gu$V$Qm#pHM~r z#F^^=6Mx6?X_YkChVyW+dC?wrrT2CDFRiqs zc0Wx$##jL1p+Q-*dC~6v#blCegFbUq#j;Gxhkw+7vQOf!mf zk`YC|Z&{Y2C?%@*N2vNBRV`CDk|fz~w+Unzx*kPliOMpBIIO=t5*;ftz!)v?8I3p$ zBt0?-<+w0Kq&JGHA@v*^b5!pj>hRMI?9vXsQ>ETsH-Y z)cZwrt-h)koXc;8fFcq=_ej$epfxy;X}Vl4vnBG>dVSOfdLlTb3eaw}fu*UwGS@sb zY!pFizZP6gLtu-^gWw2D0(Aeyn8ML|eSdXz^$1X*v{`$_P=`@q_6(d`l5kXlrqk(a zt*n(R_Xh~6>ePQ>Xl#GJyuHO%oP$K5e1>D&aFDrLA2>p;QmyuLhM0+yxAPDf5_g5j zY@FKWo=wbGvmgFv)V?>6)`ShtIh573sU@`((4tuf3>m5`zKp{Y% zNE{S~xowa6p?%@85sGt~z<8cxD(uC%z3T(C04N8jB$c2IITA@)6(IQWT+i{Xz-zro zQ2>yg=Xtmf$_X^u>^UM3@3qu*9e>9}Y=;FPl^{ER2`VD1KrU~$%p;KRJ4`wN4Yj~e z0J7~I*)BL7w4b7>0A0CPDI6)Tip9VNhy9_c(RN3m5FFtstU#3`#U-UhXcj;ndH>M* z3}rO7MT$t3BNX<*sktIa$hPV$D9OWIM@dyiutOXHqEq9X!#bjh^iY!f?SCe>`E1-x zsAWrCVu+LzQXGE;63Uiord93MkTl0M67>Fr##$vlvuS9Hon%(S7E`TMuiFruuI4FN ziF^x9pa-F9Apv6m1d;+&xdBR$*aGqpeqiXwHX{T+9J2$a+P5ZOB%CCci9ijBR0D^* z89yMfLYHC}5v^niOCmfdrGEf3%2X3KXP#&si5}Zx>K{&Q&}c{UJ%RyX(gHvQ(7+Wr zPazG()XJC|(TuG|Q8m^uX>GDpb}h6PCs$zGLsB+L>9P=A+RS1jMyK1Y$x zZxGZde5w&<%ohj}O;-_9$J3;n7XZGaM$bB)=r^W)JR1^7weXz}MMN{uEeMIuO2@y` zF{zHjw7AKzHv<3Jc!nZ1@ZrX?R2TwCy4L8%sR|7LI~XvG2tQFh=6N1LG_APa_G0FP zLZE=DfI#3NH2FO)!GE1jUjvT?j>?6HMNe^|jiKUQ3n(5zz+jNn>~}i2IRD>u+3mOq z17WmXY-iP$Rw$&%KQYeYyh0zM5*OT9%=^DczZnBzdpuT5G(H;8gn-fVSbovk*kCP1 zuvV~3ph_u-jk$sq(Q33lKg#Qlto_&-fhw* zghOs2oWV=VMa`kKryJY1mMD&gN@U{;J6a(iN(cq}cM8Sz)*O#~x9q)NS9g#w80cJ# zM`0|33KKGhm~=Dm;`yrbBYUM(R^BJXZaa#L%(&MCaF&G!pqSL-=Y{L}HBHayv7;~{ zO^moi1)@L}h<{9=LM|a)ZX-|ZDsxWc_ zUc#*@M#~#9XNKERSOUX+6p9s*7ts|GE+_*yJi@PNhJTesHWbXQ5AP=t#D@s*e_L}^ zPOPw@76p^wL{vls&sk(4lHM+bU`py*ds3UBYx}Fdc?afqp)i4?$ e18JXk{uKkik$_`Eer866V=}aq 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 diff --git a/public/images/emoji/apple/bellhop_bell.png b/public/images/emoji/apple/bellhop_bell.png index 0dc920cce368a0234bd1d3ce6b74794b94d283fd..2bd91ff9db6f4aeec84f86f11af39a56009aa3c8 100644 GIT binary patch delta 2204 zcmV;N2xIsE9H$YGBYy!7P)t-sM{rD)d0Cf&X?1aMRyr@2kd0Rn61Oq%H8Z;yyN-!v6LpduR8*)rRUo|IxRZ5Ux9G`YBpnq>7gjW~2i7>v8GOB+t zsCFp$%SxDSCX;b4k7_8gdncV|9sKB3wt_2lOBKeKGKXg>eqky6*-zN3I_$nd@x?r_ zkUIX^J^uY;;IKJ-YBHsXI-G$w&Z$4ppEcyUJ^k}Tk$N^&&!Pd>94S);MDMel(~CYEC2upFG)l}RCr#bm*+e}DBRr}dE}wSYQFtuGI=ouQ=t z)=8K~trI0iWGY_Psh!|S{%9;FlietZ6gO*j<)cAT@_9bLy_{^O>&N9Xm5%i!54LuG zGq=H6n~Gu$V$Qm#pHM~r z#F^^=6Mx6?X_YkChVyW+dC?wrrT2CDFRiqs zc0Wx$##jL1p+Q-*dC~6v#blCegFbUq#j;Gxhkw+7vQOf!mf zk`YC|Z&{Y2C?%@*N2vNBRV`CDk|fz~w+Unzx*kPliOMpBIIO=t5*;ftz!)v?8I3p$ zBt0?-<+w0Kq&JGHA@v*^b5!pj>hRMI?9vXsQ>ETsH-Y z)cZwrt-h)koXc;8fFcq=_ej$epfxy;X}Vl4vnBG>dVSOfdLlTb3eaw}fu*UwGS@sb zY!pFizZP6gLtu-^gWw2D0(Aeyn8ML|eSdXz^$1X*v{`$_P=`@q_6(d`l5kXlrqk(a zt*n(R_Xh~6>ePQ>Xl#GJyuHO%oP$K5e1>D&aFDrLA2>p;QmyuLhM0+yxAPDf5_g5j zY@FKWo=wbGvmgFv)V?>6)`ShtIh573sU@`((4tuf3>m5`zKp{Y% zNE{S~xowa6p?%@85sGt~z<8cxD(uC%z3T(C04N8jB$c2IITA@)6(IQWT+i{Xz-zro zQ2>yg=Xtmf$_X^u>^UM3@3qu*9e>9}Y=;FPl^{ER2`VD1KrU~$%p;KRJ4`wN4Yj~e z0J7~I*)BL7w4b7>0A0CPDI6)Tip9VNhy9_c(RN3m5FFtstU#3`#U-UhXcj;ndH>M* z3}rO7MT$t3BNX<*sktIa$hPV$D9OWIM@dyiutOXHqEq9X!#bjh^iY!f?SCe>`E1-x zsAWrCVu+LzQXGE;63Uiord93MkTl0M67>Fr##$vlvuS9Hon%(S7E`TMuiFruuI4FN ziF^x9pa-F9Apv6m1d;+&xdBR$*aGqpeqiXwHX{T+9J2$a+P5ZOB%CCci9ijBR0D^* z89yMfLYHC}5v^niOCmfdrGEf3%2X3KXP#&si5}Zx>K{&Q&}c{UJ%RyX(gHvQ(7+Wr zPazG()XJC|(TuG|Q8m^uX>GDpb}h6PCs$zGLsB+L>9P=A+RS1jMyK1Y$x zZxGZde5w&<%ohj}O;-_9$J3;n7XZGaM$bB)=r^W)JR1^7weXz}MMN{uEeMIuO2@y` zF{zHjw7AKzHv<3Jc!nZ1@ZrX?R2TwCy4L8%sR|7LI~XvG2tQFh=6N1LG_APa_G0FP zLZE=DfI#3NH2FO)!GE1jUjvT?j>?6HMNe^|jiKUQ3n(5zz+jNn>~}i2IRD>u+3mOq z17WmXY-iP$Rw$&%KQYeYyh0zM5*OT9%=^DczZnBzdpuT5G(H;8gn-fVSbovk*kCP1 zuvV~3ph_u-jk$sq(Q33lKg#Qlto_&-fhw* zghOs2oWV=VMa`kKryJY1mMD&gN@U{;J6a(iN(cq}cM8Sz)*O#~x9q)NS9g#w80cJ# zM`0|33KKGhm~=Dm;`yrbBYUM(R^BJXZaa#L%(&MCaF&G!pqSL-=Y{L}HBHayv7;~{ zO^moi1)@L}h<{9=LM|a)ZX-|ZDsxWc_ zUc#*@M#~#9XNKERSOUX+6p9s*7ts|GE+_*yJi@PNhJTesHWbXQ5AP=t#D@s*e_L}^ zPOPw@76p^wL{vls&sk(4lHM+bU`py*ds3UBYx}Fdc?afqp)i4?$ e18JXk{uKkik$_`Eer866V=}aq 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 diff --git a/public/images/emoji/apple/benin.png b/public/images/emoji/apple/benin.png index 9d072c7885bb3e04601446dcfe8491f12b061fc5..a7c0f045517696c4eb65ae203257096fa167a49c 100644 GIT binary patch delta 1071 zcmV+~1kn3~5yJ?OBYyzZP)t-sM{rCxF(+>l9mTb4WouTJATF@4by!C-8{obn^wBxrEJ5luO2;NQ2!D7>(ytU5iCqqUQ36ym z{Ma`HWj+#=X7J4}6NFdnGfS)@Guz5T*~4K&k8!!1B%Kx~&9g%)f?w_>NbOlg&KWT1 z#wG-DM);~f*daOafI!VuCCo%k{NyvTJwjjXlzRXG03LKwPE!ClUhEm8D+#Rr{-XHY zRPwyOEykDXFf>|!^ywdv17+{qRDjquLw;ujOJ~*{ z#=`e~$M+|bhX;>2Ja@5Op9_eTcdKfrb7N?Pz&b*RVcgtws?}VdxBp>}>dG=LmujBoJT#dVkw4g76hdh#TNY$jgV+6{*WkfMJr7z;SaH z^|{nbFH#+Jv?-(@!Kg*)qj}kjs58xg(1(1N zReuQ37Z)Lj12X_A8K6Z7LU*koVWCCLK@gHs5Fcbo2;UKYwT~eP28oj${%RJJ5-wDW z%Y=1Hrsk1@vp#X~DZs+q&lDV0i=(6$8UqNq$ z(^Q)cu;{YU*#MFTBQ7s5F51^c)^)pmamlo|&|t(UwFoHaw=_VwE*1(zPygRrC<2y( zpizP`4#t6e3IrH!N}OawibbiDM!8iRaE&$?QMgvCF#}c{5GgduSFKj7Mr*aM$|&VV p1B{cy)9H~(fk#02zdLs9*dHYCOyTu zfKDkT96&8PHYduvctA5MbR;T_pNJhqFKd&589*r+Kq_Y)BE+_M8bK^(9wTxhD8sjW zs+gd}4V?BafID1sius-(KT0nFZ9+}F>p#de^^0?V6rJK@X}YdD=|EQTGd2P^wwHJjA}-XX1*{u z^VL}+R5v0~Hqt>$uP7}nW<$d>JLJYq$2UJhiDJ>TK!3Y0Hp)6e&_7Acu07knN9oK_ z?9WucG(5C4JIy^tw=6TzvOv$YMly0t=gCh#gkA5^RXToGD`i2tEi~4+LfO1T-M~oG zwL!|QJ=eNK-@-}u*ICrJL*GA4)XG{gY)GCkI7X9czE4ppTR=gIXq+xK)j~|zyh*d1 zKG!->Y=0OWlOiYk=v;jzE8xRSMU`s!;amOLSJlLG;LB+4(p$?wO1-dd!LC;~byHc0 zamOH##cIklld$d5kDO+V__QM*YoyI3)$MMu=q zT7S~UUZ*K8(!)vL&P!0b(H#H)08n&NPE!CTUIPfCq6@7D85}ti^eXof@8w*knt&UEQpu9I1Wix@fh-n@F)(xt0byk=)L6gDzaziNe@Iq|pLbjKyE!5j|GFGJ(ZnVOoKFF*wq6~&pE zCqQFk9UUV_-^7PJ#$qMh%(`*A^qxG=*n^?gug z=Iyb2({SjSw{8vFc&v9>ZSU@GY=3QRY;6CEi_04x9=0a+)yN!xsIBF4xjCYp2(&|7 zoRon;sf87p$DSjg>1DTu8yg#KY-~(yZEa0VOqMM93UudAS5p&#Adm=y^01No3dJWB zpxH6;4WpwshoRPZ9O>lolc2u@&_Jq%KRF1rPXQ`chJ@V`*2V_kJ)@%`H-8fo>2!Jk zti1e(??rGDZV-|n2$l8~OrGhewm6kSJxK|=!va&V?2K#z(IFUZt+5X{)bO_}j ziU2JrC`UwW5*aidK+G^!*5<&#;9%c9oXG5u@Njwn3K5J7l;P(`3WbGbZH5y;#|MY@ zf6c|2Eg*p$f|~>+b%-g4B7ea^aAg7IQ5duZ3*97Qw?Pp4KpBEtgzS+r6oe~9pilu0 z<>wV9A&_{7Duhnt3n8#Ff8cD5irRkxKt)8M*xC>XnJ6hw9YQWzu$LD{5&A?BibD(r zqbO7j5|cx4B65hq&Gze)oQ=_@BS;X#!mk00bHWK(w^bu3fu&b#QPnIysm38I0F^_x>>rpg*B;{bw+R z=ZB!vrw_%Z?B2dDA%7t{H=W03N3eOh(dp869uM7y1`Q!RVKh}JJvnXH!KZZ}1C@UI zO9?P&ojMe{; ztqMu-%SJ$n^na}w1c}S7t?g3jH=P${vgYRIkFc6$hx-q9zMv~Vv2{zZiI4*lc0Pg- zZa~7w$Y`3VRyWQ2`(F)2<$c(3FPnpM_M~(EOxS- zKXsNNRaZyh_)DSAa$UE!*^+=vXU;qqBP@d$SYHEdXmDsqB9UC|l*x?NTABeuf4q}8 zbvuS0|CM$w^Y{F0#WILCC+atn)RVHV35%{6^-j^hmd t$-VjLQVk7fz@De-Q?xIF+O%oYtVgHexduSaBn1Ef002ovPDHLkV1k@i@X7!H diff --git a/public/images/emoji/apple/bento.png b/public/images/emoji/apple/bento.png index f6096eca8a51c41976f6f8cd3079b8f7fc33febc..3a44ee9139e1e1517e5ce78ce4d0e9a90ccec83b 100644 GIT binary patch literal 3950 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 IM6N<$f*_Z5N&o-= literal 4190 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 f?;6fJ>#TnP1pB3 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 N002ovPDHLkV1jY9MRouH diff --git a/public/images/emoji/apple/beverage_box.png b/public/images/emoji/apple/beverage_box.png index db92b67f78554e4861167c8c6e58205ca10740a9..9b1c1b2363c4fa9b96fbdddae7e40628b980fa5d 100644 GIT binary patch delta 2646 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 Ef=KfPUH||9 delta 1594 zcmV-A2F3Z_6v_;cBYy!GP)t-sM{rDe%ftWw{`>s=%IV{H#ji}4Y^b%a#Mrvm=HHgy z(M6JFe$mSI_V8=Nl>gO{PoI47^zFgk(f9fGozAsPopt)#sM_!C`}5|g(!bg7>(%Jp z@#4h((uMr)*#79hq|(0p*R00n+nBkdwcXB&%fJ2BjsLy@TYsW{g3rLcJDhyYva%(X z#8ae!h^2mQd|RG*d&{bZ*3xjnu4b)?XtS1JjYV6egI%bKhSJKA+rF+on0LsadC8`S zahh?RdWwI}xqnrbWP4Z4Vy#)4 zb9TnLcEy^5wttqF=Hj{M*MW#@uv?L#mwJJiT8Y})pYHF3yrGPuSEuAN?f?J)D0EUz zQvm)W5u*P60R(sc{QW}w{r!*HSN{Cq+;r)wiDHDj`OCtz>Yb;a{#0IYZ~y=Vx=BPq zRCr#U*w>QcI2Z+Bzzw)*JTzfxI#1fgIS_Nsp>vq{{(sN0N0Lpsc4`aR#}~e!>f`*9 zZmdY?h@wc}F-eFd!x2dlNfJvcl}g3iY$TingEhJObeoya%jHiXLpWfBeChhSIG?Y} z<@J1idlL#0BSN;A0YZ#Sv3MorB>-WZn+y>p#y{6jjb}DuL`RK9~BUV1MzNT~WmJ;)4KVM#cM3Kj8H98ulUeEvj3YtKi5rkMa z_c2w8M$_p^rIN0sN6|-Uj|#ZLyj(oX;s6N;)_)qilRZnlRML+uQE*6mlvbd{tF3SI zZ;zeAdG0J95f4BYKY#qFRN83_g;eoSQHd&w65T?JSCP)~LFfn&LbVaYSmN-uilSBP z^?K`95C~MI-5x2V2BVN_y@fQnA?5(08A00;1fkF=H{>xM1d4S5)ND4nA-^+%Lm=wZ z2!C|S4Z$JtGow*mW{qm6ybuWgSPW8>db7z!JC*s?=!HRkg+72}3favjKjb-}6i5gf zwVHOTUTet#ApcZwJg6nhE!*aXzz}KV@3W;4Hr|%ua6)OKPzVSZ25lL{@)s|ZZYyJN zrtx^JY?1n&kpnaun}aEZrklZLGlk@9B!6=^0`u*+H6@)kcQb2e(nc~<5MF2u=J)sE zW;!uV%UbRR<2@wf;e}EJg438;cXzXu_4b`Y8iU{jfxZui!^Ud1+F3JeIDFeo8N?V+ zoY3@*IE}^%)NIvg42Lr_4#<-NK@H@t;e|mA;fKZp>R>c$gv7GRgLA+A{2pYULD)! zhPK=3LNyFkRdu~<;RsALN2}Sc!w(^*4#ZH6`>v`kce`JXWj&L zp@$$)e4wL`-dzkPjOq1j51#YD3B@&>W1L7Gt-L-x1_22KVY??fRvU$SRDS`~1LPJ8 z0AV!sUey;SZ38A;BNW0K8C{g5ojO#Bme})-{+~vAl8W!VvcVvnwqNwgZypw5E2w(hZzQS{)7_G zSBD|(L(g9b&K|NULLgf@2!CC?cAVbR2OslCqr{2)ML2jP5|fV4a)pl5fBHa2+edcW zoFr<6oOI}0oBl4uBz)EuIj~x9XeSTP=SMNN z1{@I?hGyB%DCVFTq*?;Z$1IqnC#{vLX2{UHV2-0QlwNS|U s+61@g4M&n(ljOnBnZpN`%l;qmFO@&uMCTJj3jhEB07*qoM6N<$f*1fG^#A|> diff --git a/public/images/emoji/apple/bhutan.png b/public/images/emoji/apple/bhutan.png index 88b41c6d18cf4d4b8e6b16eb60b8659b40698351..427637efcd515630ebdb35539896d90881498dd1 100644 GIT binary patch delta 1700 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 D;GkZ) diff --git a/public/images/emoji/apple/bicyclist.png b/public/images/emoji/apple/bicyclist.png index 5a83ede4b422529d45c0ce5784cdffb69334da5e..fd287646aacbcfd202aff99a6067d1819beea6ee 100644 GIT binary patch delta 4029 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 delta 3970 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 diff --git a/public/images/emoji/apple/bike.png b/public/images/emoji/apple/bike.png index c1d625842af7e4c60c79af5ad4a8b685e96a288b..ce20d7e6759841ecb0d0689dd1bf5fef387944a0 100644 GIT binary patch delta 2646 zcmV-c3aRz-8Qv6-BYy$NP)t-sM{rE=>fUc}Z+LiljEswSb#nIX-`KpOnVg)6g@1j0 ze&f{8?(gr0hK3tQhIMsze13pYGbqfp)Gk-HPX=!M#uCAo5!XzXl zU0q;VTU|jxK~z;%OG-*LH8v1dsYggiw!zO14h~LFQ8_w1KR-W9OG{;DWydiY`lY zHdBOfp6a@hg2r~i>SmRwPRZb;M{{BEtWd0X# zKRA_`V}JbVsCPT~go_|HtyX??@@v=ry(#hAowA3kty}w|AT>Mw%&NEi`B&N&!NG-F^Kusx3J zG-112IS~AJ_iM@HgYnL;IewW3>Y*QW>ejto_o^gtgB#r71~<3?P*^l5!Ga$LdN45_ za>NJwi60f}DwfOTta~`&^|k+y(qPIgbcMz}wOY0pd2#G=I1YNlOo^({2yrxln6?=v;w>eXp=zr?y?&x~6TEEC9Fylt`(&`j@xe*L9=eN(!-(+NB zs;jF~k+Q?COEE#lJ;jXJ(c5oefS=hr-H_H!v=;wR8lCQ_=*qsQXA3Xr2IJPTu?08n#CNQm>A3Ul)F14a+8|e_TJtleB6Bej3vdvuVG=DZoZ3S^_(N3EfSfKJ_f0Rb;Dh1B(i1}`8H);lYd+Rsq{FeVmPjS01N`J(VSo!E=;oW=xOV7z*zzNjW_CVU{K^C%ZL z&S#;=q~=a(zh%8FEFvl%)jmBv9^lmqK$&pAm6<;>2d3c=hXwOC1%DKN6UVWD2_D}& zG1+)E4cIlYkVYPzozEK6+i#Ply>LK31bZxzk%*@q9FF~__(ppFF-4EKp1-=hTqoRs!YY`obRlA-B9UR}|M%-gJC=K)trS5+tY|AJsgc zlvD_V{!aZ4gEvc=pnAXlb{;f!G+xnd1cn)Sf&0s)J>pvM;HYjL9V_)JpZcWfxfkW4|k$)Vim-fAG;kEYFvuDrj z%E54?wfZhi(v-%gRq>ods&zvlb2lIh=0^>&gE9(?>5)Ha5D^`2jzsQmL?XLnt8aFepLD`=DKm zkwq)?i=_!d!+3>am>rvFw`Mv6@1KmmzxaJIY?wzW1R)$VzdIs0000tE#%nI80XnDO z!a)N{X9S5LF6ZYkrH90#A4K&J*rB}cH;fpTVsO0*1b=?%xBGe{xS2p~2nvJBy1CR?t34(qD1awo503I_3+mj`ixDQ?o$A=>@R2M$x^Pg{7(sKS z_sjz_S`bqR0E`vmHSho!c=$^ud8oALcCY{pCNl1t)AxGKkrju>QjtZUma_mfhyj{c zoBWU%HGjK9P+{Ivj17`%6K;T$VkR3LMT?uXB;F;}3;+W4=4XEE+Uj z?yF`2%HzBWp|-@rA?%3sm4yzMfmNEI%W6AE0tIJdG0rQL$6A04S3ZhEi^+7sJmk{S zlN_wVFck%#T7Yp5F*|N)c_7wXWxp+*VV!QBTcmMzZ delta 3311 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 diff --git a/public/images/emoji/apple/biking_man.png b/public/images/emoji/apple/biking_man.png index 5a83ede4b422529d45c0ce5784cdffb69334da5e..fd287646aacbcfd202aff99a6067d1819beea6ee 100644 GIT binary patch delta 4029 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 delta 3970 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 diff --git a/public/images/emoji/apple/biking_woman.png b/public/images/emoji/apple/biking_woman.png index 7493a647bd80319135ce7e317481b55f94854379..f9630a8fb8da209d11bffa8dfaeedd8c130716d3 100644 GIT binary patch literal 3773 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 WEPTt0;VT>f0000y diff --git a/public/images/emoji/apple/bikini.png b/public/images/emoji/apple/bikini.png index 78b5dd73ea6980c26753dc17c5504b6e422fa063..673a25610b3f8ed3f68dd146e7f4eeeab34cecb2 100644 GIT binary patch delta 2609 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 T($3)v00000NkvXXu0mjf&;~@N delta 2674 zcmV-&3XS!-6#5j9BYy(`P)t-sM{rCD9RTIEYItWKY8gu{78htDLl8XxFg^z@3?)h* zEVo2^&qI^TRHIxOJ~0U*5daFKI&{oXriCwCl{#i^Axh=aQOlQ3t3G%z2_mefJ4O;O zgDG3CL4{r%KAUkpJPaweMum7LSI1J2zOpyuw0v)3%5TVc zd#jZ$!MH?E7JoF|zG+oQ6TM2x>poX}XY z2t~1X1CR0v*%^R-c!2lamv_Vy3<~+*SJLKY|6AmlCOcG2r@(A;Cbt3QRKhb#8&SfV*>#Y&y{=Y#RYki=A<&vb*}XT-}| zsNBC#_J8kW+f|tCzkb_MsPC?m-dVEs!kYDK)8}}(+g`KojJd{BrryU*iz{BhT8*z~ zTkzpp=*nN*a-HzzQS8@a>t)LP_h;cuv&kkv|_#6XhdSj6OHxa)zndL>cMSAVMAk$Q<-GKfz&xrk2c+DyblhWqq+ z%vyfRM~=yJY|ejhhju20Y9??{Ceg1zmo0aGJ3--bvDIas(~n@ec~qm3EzYA!z_B*< z(sjM1GNfQo`SXYV|B0JOVcw04?SjYUqlM?1jg~-M<%yhgJ~WmzXxOn;n}sT_e?H`h zhJW>F;PQpptg8Ta1D{`CH|_|ix$cq`e+{^5)FX7BT^{;pzdu5N{kvfySo=hOOJ z_3V02_0y34zTN4xMEJCo{^^bN$MDa_*?-!J@p#;o^V9gEdg|H1+3w@xjpE{sjP82! z000K8NklT20oS)wwX_&$vwr|g z`fvqMP&ADf)oLjZG%9P=isDVd5hqSzw$kzW$*w<291*<1MN7X1zzF_HFiuAQ7KMcHweYmc}Z zErnbsIRy-N;tDNCSd-cd6JA!vnad0bWgb`gGGU?i$at!f==21Y`LdkzReuub^rWhh zFe&eQmsea&PKw(v<8bi(aY^Lj;=FhJl!tBmUH7>YFV$QU3E8v0NHb&>TPOmY6S?$7|h*9PCBzY~}GPYAy+RT=txyJH@Mo-70jfsj2PZaT^>4twlLB zaCtqoH8qaHR(6ZmP<4r%q<<1u(n+S#I2EGAIP|iC-eu^xL{SBYMk9BY#Hma|4k54( zDnM4qv_ck(L#9_3qMt=(oeG0f!$@H%B z+&%I_nx~g9t)$c9V`F1Q!C~0=Sg7k~<)Z8gEsDnm2aAeYi{feYN@=s+JlQ-Dk5kRM zd1PF!v_N`4G`J!>JiL9!zwRCF;jyvl!J+rVrP2Z%*;%*wl!r|5Q$X12Wp)twM0Rs? z^Ruw9T4{cGx8|pilz%n5!}F!J!NH07`T15v3ZWxY&lVv&_ihpB$a*Rt(*S*f!(xfg z%X8b%UjGP@7rHIC{5dNiAmBOl83t1(!J{MGWLJQhTf|=^v4qLs^P@2U_+96!TQomz ziqLF{?COlh0f>&~Q_3Xbpt-$nX0ngAAuB=69pEq@9~fM} z+8!T5pi&qNN?93Gl0ga*^k!|4eKdu&x3VH~ZZ9R_#TnzV+tL#T-9BzuONUT=w%5ynXN>ClXpv0FAtT z@7`sBpWkKR1An-4E}p-0YxWF;yoy8^p1FSQ>b2gRk52=5ar4ES({~=)=*7g`o%;~@ z>x-L@&jWaTv-iSgk5+ z8pF?6h{@{Xr;b;jtgJC;PbCfIk1hnbX-iSz8@}QH1Z)b3i4`?P?&OBD`$d1N=c;KF zhAC+XY?|r(t@;~(khiVUk8RbF&fB*y*<|kR;2k`NC<&}@y8Ld>FEKXeR!Il9vB)L7|2RZ#SwA-7)lx;B*fTg z+|U;QLC)D+&!kc?{{BQF7K;U*AK7Zp03REju_%;@jcY)Vb2|qu5ZIWEN$OBWz#MY%;@gP1MyRog zCc^g5z7gl4En=+lJFn>ifNk@}tmBX^O^uD)wm`=IBACrCEuC%l6`mGF^_er(zsiK8 gF?Fhj!heUq0oz!`4riQwt^fc407*qoM6N<$f)hhd(EtDd diff --git a/public/images/emoji/apple/billed_cap.png b/public/images/emoji/apple/billed_cap.png index 4cf941be898cd210605667481329209268fb487e..6e6220876743ab2e793d593ad74fad1710eedec8 100644 GIT binary patch delta 992 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 Ri97%R002ovPDHLkV1i7^It>5- diff --git a/public/images/emoji/apple/biohazard.png b/public/images/emoji/apple/biohazard.png index 7ea105d0246f47f69c5e7a1fe30551ce983d46aa..b2b10b5da189cd8365e8c858c06b6dbaa64749e4 100644 GIT binary patch delta 1623 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 diff --git a/public/images/emoji/apple/biohazard_sign.png b/public/images/emoji/apple/biohazard_sign.png index 7ea105d0246f47f69c5e7a1fe30551ce983d46aa..b2b10b5da189cd8365e8c858c06b6dbaa64749e4 100644 GIT binary patch delta 1623 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 diff --git a/public/images/emoji/apple/bird.png b/public/images/emoji/apple/bird.png index 3aec5bef529418038a44d6c141b3fed51c5113d9..ff196121821615f1d3ffd6f27e3359c6fa9aed79 100644 GIT binary patch delta 1427 zcmV;E1#J4#7^Dl3BYyy{P)t-sM{rDZla)6*I)a6TMn^|gYHCbpX*Ez)QEP5eXJ|G| zP&!LZH&j?}gM@dPn>0;PMMg$Ya&=&XhE;id#>dCd(9m|BpM$BZI#^x5z`$RJiE5LT zZ<(58jgPpwx>8eAe59qXv$S$_b)uuBil3p|+uN0vmOx-+x_{5pMrdqJadcy3WK(#1 zBPJ(VfP$R8zY!A@nyjsqx4Db3vf|?6z|z;N$I8Xj*|W>fqr${v1DQ3>*GVF>0L4pwi;W($4cllRkC;00faqL_t(|UhUV{a-&KR2H*t*0-<1QXUI7! z2WP+ki=FPC(SJCs`1QZdPkv%Lwswl`SmwV}w8^ya@9#wJ z{bD-RobNM^hRQuUGVsFprkeSE29-VJ6@tHk@`19yF_dJ;coHEDY5_H|uB|imXg7O8 zUQR)5k5VzcZdJB$pbaSt8A0KIAlcW96$=L#QXcVulYcB(sz|iILRu;v$zY!8L<&oh z6l;HV67S6+<@uR@FiI-C`0MHH2nGX(-lNx-#Um+-Qj%YIbL$Jona2qYcISIu(=^8? zVpK>H!+FWXyu9d18slJh_g+&n7M4x3U%Ypegu|tmhqHGn74p5ZeRz0iTb?!k%g0KO z^xjdWi+{tJbK20o--N)B)Uvt}l7dvFB-Jh!0?3E)L+m3dempKNY$={!*wTb1^OLfL zaNf3pIvyWCN@}*~{Fa>C2qCXwob#-!jFLZ~#gDJ&*6kNbJUKtv?FKhpkM`5t5bE_4cHox%DNq zR?vWnO00Z*Ur3EMcP>Cl0#JyMuylqDZfPMHHQAky(Cs;Byo%B!IRaF@HR1?C7|kXe zxqqS}Nu%HPAC5Dr`kjP2fOI(ZL-ha*hQGWk^aW&TMpsv>CJy<)752GFLxL>iHmr0CNrqXUIH@sgxrMeT2}dGyFS*N@Eol{;@RA@HHt2%_RkQ{)@ZW)1u6j>_r+g~9a zEHt)cq0t~;ud6N#F&Xvgj4I#7i3g>KLJJO5B=hDh-BTeKAc#?B(!f_$zDZM{3TTCx z3=M^K)LhH{G?{&qBZQ?8!FE+;RDb;@ia>%^NFfG?Py};wU@`?^29O-dijoJL-A+Y~3H40MQeDAjt{uQq~03pFG#v0_%sz7JgU-4lZ25_BpBM?UPAD@CQT zN(#z}0jD2-x~VxM_eM$s8g$tAOGyDn8X2e%vqC1Aow@N_jy-bS8xegN^nXO5g__Dn zC|D;z=R!==f|$;17zBzUi$aKEf-yQ@$DR#|5*BfS5DGB??&lf_DQT$?BAL;3k4VlK zBx$KAC78L^uPbAXW{M&X4w>QDrKzr`sFmd8IRwSFzW+Eoa>p~J&1PeFq?GStwmrhw h^kn=W<|jY-2k(z?qWR(2-3$N#002ovPDHLkV1fpIq;>!R delta 3150 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 diff --git a/public/images/emoji/apple/birthday.png b/public/images/emoji/apple/birthday.png index fd53720f680ff0f42466256b2471eadca5b6b4e1..ebb55946c0283494e79fb6b30359ab0a34b95788 100644 GIT binary patch delta 2287 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 diff --git a/public/images/emoji/apple/black_circle.png b/public/images/emoji/apple/black_circle.png index 1acf19090666c31f51f4be6e2d2b44fc6dfc3eb9..bcca1e9353d016719da88d99d7219f2b45dc1e35 100644 GIT binary patch delta 975 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 KMNUMnLSTaN5;zzD delta 1770 zcmVo2us^$ODpguYpo=VAC?aZ

    Ksd7ZuW${urTDtaMi}u5?j~5v77HjoBzh zqhk|keoRJ_%w%RVnVkt0X6Lx&Cp4jeeJ>fphHb?`6k-@m_c z&z?Q?U0q$39UUFswzf8vJtguYoIZWJ{`Tn1`9NrG%Z*zjtSmFxzirDKAAZo@KE{>_ zjvqhnj>qFZU4Peou~@7|Rn=fFmkVMkn8{>9h*uegQ3LP69u2V*rovL#lSD3#XQGJj zD~fX0;c(n@I-TLNva-LrySt;d0(I=zu{ji~|7F`p?f#!HTxE9#F0lHb|Gh81K6QmX z2b?)`Mjad+tVpNRwICJ($@L)A4D#y`*TPrA{D_roHh;??P~LcqeBR?ZhV{I0;CTjt z@&;j;rfE8C3h@AzuO@5v~Whb^ZPQEg;qal2v$JiM*Q=B_YU296Za7$7X@@u~{H=PTpKD7xQ>L zN_lyCt$)|+-HPR{$z(Et4*eMMc~KzN($X@~+|=}W(}p*{AHH`_ofx@uEuD4;_U+r3 z>FMc-u>t@D9Y>EIbuTO|ctNHL1+D{;W)Rtc!d`{12ceZPH)0|x5+@^p$cuY;Y$+1J zJBSO!aJ(2q;_F;sFGTWM9x;x#?b|ne+WqaN?|)952;BJnk{(*UX1t=JVgSnj0mW~_ zkKqk@OU6)4s&_ z5D9>+54n}7$4j4sJRJ{CfV#j;j0oq+n28a@dxcDZ?Hau|)c`*EoE0>4!l5|w4}l~D zTNaPcF`v)Jl~zH%f*V(!E;}j!f|-jaa)07qp1hbR!X$_#*#d)v6JvXUXtQDH4CgUV z1h+eHM{accbK?Thr6&>~qE<#i+7?M`#fI2n)&kjp+8;zn5VPlbQ6wIV1&Bt^&>r%I zBwa9}wSS{Bbp;(G1BI0aY`fA1OYS6XxskU4b$@Un z1TGDM#5-s?LU~5t21~e$N?0K4i_zW${67VvZ>d6~^aTBxMOjEag~~%!REKxcwKk5`Q?#MLA;PyiPHT7V}Sum{)@Mt%tKC@g~YQ4r;#%)nB3ovN;`PT#zFGiRd1p<=Mq zIX^$|#5|%4=10dgfm0(oZ#~xE#`CX0G!Jr`{fuIs7%%#tK}z#f8J$;gii|vU0b;XR z3P<9@lW`#)aYOnp><;2E{C_R@`wa~Zk;|7aXPFHmk%(1VA0Hpjn76^ge8iBWrlzJE z;%-I_?}NkWqGQ0Vt*sjmAN%U!*|WWwliz&St2)aXHC25JVyqxhEGEdz@sqmEJgk|( zKHdp`;<>xg$fD(H)LP&SuSD+5&zU#ky%Ie##fn(^gwuOs~q z2sDETZ^M_-O+I)Pc@2$iUCS9zu)=1eielfOi9458{1B5XXjxhvWRC z+46w?giG3in=PZd+=he2V$-PnR|b3Bie8-GH6T^@_`-XU8;E*9oD<9;)`2ME30!&+ z9MdTbpHFYvv}q25=3_Zlg3!c-0S)ze<`DCflamR!!Mr^sMn*>DbjS096i5mr1(E_u zfuul&kIQ2+n{ M07*qoM6N<$g3?)8&Hw-a diff --git a/public/images/emoji/apple/black_heart.png b/public/images/emoji/apple/black_heart.png index bbadeda33272c1e0f3b80988f43aaea64fc14513..69424a8ccf204d274702ecfed7e5def3b0280829 100644 GIT binary patch delta 1034 zcmV+l1oiv68J-A`BYyxtP)t-sM{rC$JUmKDN=8OTO-)TcJv~)bRYE~QBqSs&D=Quz z9yByF8X6j1U0qB}OmA;*%F4=^n3%7xuY!Vt>gwt&Bc7`O000PdQchC<+h~tM{T;M+ zQ^eK)00V|eL_t(|UgenWuA49nKyQH*e+6i}_kY&K0pm1nGJk1E`?C{zky>-Goun7_ z=f7bZ#(AE{ak{qz_Z%^ggGMxCW<~@6M81vF_lTQDXh@h_cN=a9BqBtrLY}8D5eNz? zfVZzVn;Ap|LX2x%7!zTvBM<>YT-OwVs^amB2T6q2=k_bHJzvSiJQvAN>f!iE0m}0g zG%1TP?l&ajmw#H0!0oXh7N+UO2+Q-Av%QcA=QjR+DR&rCWQD}d&-dk9~feV}(zk_mVy%IEBP7_U4MQFFiN$^~B<@YIn{%Jx8k zl(aFU(7In<5rufn0iXdkPM)iX7dJ6UI0dVYlSPQ90e?kedb=V!xkzb5p|}=AJz|Xd zmxXRjvaA()%ROh|!KNOBcY%&KmKZ@293Ay*?Cx7pYza((WT`G+oFF2!B-C1RsKQy> zz+xg3m?IAs;dH7nn|3iwXN#8jcKI7D6gcd-&}~9Im8fZ za0{}IjDKdvg)9S=$kK3BP{1YT`xLq6Ljee%CM&iO4J?p7?kIo*OAGf9S1m+gG7*^v z-+>c!)5&2HNFrO19QdoJQq`!*H=Aw|eAfV?IT|J~Q}8X4za+B8F1K9XTzJU9E6yem z{i3lZ39^-fcGUWUw*df*=wZnG^ny6azJAc$`BZRhxKGdXS6;ZCtY9j$fKivl$ zuTKr_9#h%mpYtY^F&9}bl#gnh013}O&d4O>fC*h;MXIz!APj|Q3YwCb%nLNl={Jw$ zgG4Z`#ww+Q(q)HB55&SfA@9eud0jiGQ&y#fVw9PDNT4i? zY=6q?ejC)oMO1aV?l(!RN6_uGKO;$P>SyGeqb|-(JJ9HNt1x2-(3&`}%oD<8`e`tG zn|gE_F1wgM1K%hNsV{CdCT0jd8)GF7sSA^*w#=$#mJ{ zCih%75nS>3PbOqPlUy?eG|yGjvY6+p$vl@$KmU^71KKI^ppZh)E=Xt*8+;dI}(FVuO0p(y~V&cYIn3BNL;{PtT zQ{e7#)+C&X=@b)@;9!OeCU|>$TUlA5(P%Q6?CpI87@bb{@$zzUc6M@bFfcGUtD!+4 z5Dd_0Ljwb62m6$i6ch?&V{L72Zmy-NX=G$%V`HPMt7~m-t@Hn8YHDhP!B`Urh6ZTR z5r@N(9Ubk6L^Bf;&<0=&9PaGdvlxJ}w#H(ypaG(g?Ci|VOkG@DEG;d8A267inK_Y2 zAPOKM+S-CwJv}{JYXaa0T~t(5fCr?ls;Ub7fXBkZ0+2g8IsyP51R@YnIyxX#U>X`4 zAVUBK9YGs-02ps>cInb3GztaoT3T92BvMLB3Va0^B_$;Q2DHEs2!xoJn5d{I91fR| zkN_|!6e=kx3Bcmw;&O6wFc?fmMn+y6bkk7@*)z6R+g5A zhK68Rbx|m!gapv@R%~oUL_~CSw1hYUCL#>Vh>wrAwYAmP*9TI|$;co?MS-5m3JSTo zxxvA~nVFekVPSYYJ|-qc7Kt>_*8_8aL?VGdDE;NO445TwGdOT0=uab#?X2moI5F z+Q`Vr^768ps%m0l;{E&gOG`^LGBN@J1F2MMOG`_CfB*RS_`txx>({Tr6kT0iJvus) z5ED&LPcJGes;jGOYipaDn%dsp{`Be7`ue(^on3Qtb6Hs#g+iI1pP!wb{r>&??(S}5 zW8=ZW!QS2;gTctj6*vKYiA&c=Hug-XjZ1mCSWd7*B^M6D_cqN>?s(vSJ`nw=TKRW* zr|@@lnpXUXpLEkvpMdAN1otkLv}d!~wok6Q#DDRXuRXBo*!jISkb`OKN!uUj*>23! zTq>yk*!8z)Y;fMq?kMWcSi8@|I3^}`HoPg;f!s4R&FUZ!DaIO{%Et_wj+*je%!E6) zc5Jq9y=b3`(#X2tJ$9MH)KN{xtw=MzrS_E|AaR#?&V7v=5pcB`y-QE~2t ze1Bt{a!_r{8eZeQ(hp4`57Ha+mAEdaI!9}i!(^vpSrDy!9=M$Y?)u2l&=gC4?PonI z$p;KOD@tnivWb?jND5TD59v(fSlj40O0kSvqQ%?$&xXFn7uXiMG`d-dCMT_zLb3)wq$J66uaZod!osESjx0zz(i zdRF{bt-~DO8)J{woreo_!&WvX+IbP5P>jzj%A(y4TtDgo*L{5U_a7eD1=uD`64hb;c-<`)!H zQ&lx*&;47rqf+tl9THD;?bI#TC-wN>sdx9i`2ZqAl5EZ9TIb+hbb z6=^cdM7wzZeMDC<{dEp7>jybYc;^2Qivr*Oi~sE4_yiTQ81?JV(c+u5iKw3r+B)u? z9V$cd&vG@;EbJTX=OQ+y>wR%xVKXr?!D6kgU0uPl;fgJ${++DE9Er$|wZ3XFCbJyo z7)4~(tyBfOrVtRUd zFMW^8v%j}$q3#mqxudTZ3pa~#nrEaO3%9F$-R#9ECZjud2{xA2)kDB&w3=s%1Inwe z8yy`jb00sHB2(|BoBHWFaJqTl?y*T4S>0SbEg1w;kkFNvZ*HkZwkxS#jq>m)9`YV| zZ)x#%YF3$cSasO98R_LU6Fws?-4@tfQ4wcuoS~jS6M@Y`uqZpq%~X_gdB#29Jtv!8 zhJxSw9^Ba0q-oiE7WXhop9Fz41pIC}?CtIA>*#2Bk=gR0^zC$>=Sf%xB|fQKx#7dd z%*=+4zC$HuN=bFezkDU5SH|*@p;mR`WmPt}i@8gxGM+CjCT9_u}Ur}l}yMiB`ck>tY%v8=q|+YswQBgHeNaFi)zCf_e&B5HS2h3 zHX(T>#nrB-H26-YIxpDd6da%sv)!;yJ1?AfcdtcVWvZCtuWvhM=793`3F;2n zl+X&D#f>VB=i@6g-hJlarc1Fy%Sof{g*nd@mRYf(aB|cQ!x&>8ZV6?MGRHLG4^ohC z(k5K^7jPcdAQcDqZXROoyPsHvZ`}P6PF2-UERRi%%icfqD8bg|JVTbNYgFRPq0nMD zPqZ;-d4NHBL-=}UYC`|LAeye)=>9sw2SRtyb>R1~b=xmAnjJa$nb%|?D@qq^qfrdW zuNP@6^{3oMD5C*s!ouqF^)(}iU(sUsadzSvd%1^qYkL32xSP5C=)`w!DK7sZNhb;W zt)iXT_hgrenX@?e`k4(WT&ng}^RaIetcG0S*z`B%>7TUM(XAsQ{7re=dEBjS<0U1_589PT zCtI_6GCxXeIPqmD;~sT>Xu6i6&jFw4{X$Bvc^OW%C}+EmBZiEQs?XmI5IJSeX(os) zww23CyA)o|1CM*oT;%C{>-5}aU5+}95c<$G3NN}S&np@o_nbd-lru`$hjpk?qm5El zT2ROaw>ck#UO;Dzj^8o(CCa@n&nFOu4Oq{MD=6a=Ft0cdnS9B7++z!Iy6BJj9y8|Y z8G(`5(mSDt-#pKJUfDyz-1^31RnjOU5W;}#R4Fp^sHFPf4^*SyAIb$+WF)k!o}x+! zg>QuXEB&=~x#Dbfp{li7a|kw1hjR2(e3G8ABy9VnalfGC^yi>*YN+m7)V&bw=f=UK z_|>(S(zTUq5h2$&ZyL;^L${)vnXuHf;*W_xnztD@Cq*h2G~~xQU!!@FE(i29$qyU0 z?sM9WX7(4KM9e%|4Y?R0B(tH=9d-NW(f8HIS8b0h`d;f3*F^0*2e)-)x6GLG zew}&j0i)m#ztNS2j71xW{Y2~tCz`+p$7J@J%88XNygGAJiJyYJCSTZ-z4zpAJTEG~ z50+t?EYAg7+bw1%o1W(&s?ld-+*gVQBxNlqBntbVeeRh2ex1(C#kweLo##q!n9(B+ zhz#ek+Q_Q((jTvEqE>{*$N=WwZwABOQKxwlxgC)>+F@v!uYzeI; UCp5@<-~h&iH?uLVF}@i8KlkX{BLDyZ diff --git a/public/images/emoji/apple/black_joker.png b/public/images/emoji/apple/black_joker.png index 0f9d7f7088216e598b19c3f2d3d02f1bbeda054a..3f40e57bdfa7b47498215206ce41867c08718d28 100644 GIT binary patch delta 1013 zcmV*Cq#(2wbgS`zm9ePQurXP z$m2_?Ssv<#7a>j)q{1ndweII-`BcO*#NAD5^vM>}G*7nhs;RA{jd{m_};>nUDnXwvYV4|71r)$xq-2(hShXtTwSr?Xn z+8MhB&=HN}p@3>S0$Fn;{f4GeA)SR#MIi-()gCzq6n}{baV}UXObBeOJ=h6I{OTKg zWa^d%%`$*v79BzEQwM4)g-}#`ixwQIcQ}q~t7L<;vTEj>J*5J&5KTmZMyPjO3aN_V z93<|@Qt(#4L%hV840OSfDh4AIEFnx@LwGC{p;)kyjvWb50Z;{qArh5NNx?Xqdr>H< zKF=KiS%2|>0-Rz-By(4>WW>_C12Ltj=RK0x*2ObM2O(x=YA+l-l2VMc5-lbNc}8>4 zROV)+pXhUtwrJwn%1;m$({Vf&mS6gp-UVDinY}yypbi>Zh~}eNQZ_=4ff4(I4RsmR zNxc`uBpl5hQK%1Q)a#B!9h7mjDSJG+=;&2)1%EY;G*ktNtb=;8K8Q1YBN7whHxXx* zYmSCg9rRs?-TZ zRWZZ*^1D=hUL%o{h)PIJ49kw%$+r}&6ifbK<`OHj6l*7X5!CJyN>%_%Enf)33=$sg5EQQRgAQw1}9AktEk~uoEw{Ibu{4OxZ0H}%r2#49}RYxOVNDMl; zV#y|G-H~S7oC#nXT)Y69-I!WGYqBo<2OvCmv`o=I2jQfEAcFpVH1+dqsDA>&Sw%S| zCtU-fk4bT9Oa>K}^>3s3h8H4Sc7*RQ6K86ST7Y*vodlTn0I1N4N;O?X?Ky zQ?%PI=>E~dR_O)0?}DDF8!Hnysm!@MJ^0UdQ{7VV4XE9Z-j09PZN2Q-`#R!yy65fj j^`^(q*T>`b+~)cZ7;K0J=7$Ne00000NkvXXu0mjfOnB0n delta 3222 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 IM6N<$f=8~Vo&W#< diff --git a/public/images/emoji/apple/black_large_square.png b/public/images/emoji/apple/black_large_square.png index bf5d1e88c91aceedd0108dd4d75135cedfb6eb66..67d480767a82f12f62470c1b3afcef9a972f4162 100644 GIT binary patch delta 628 zcmV-)0*n3e42%VkBYyxqP)t-sMn*eVO3RCUteEBLP9}7L04B-4-XDGIX6Q? zK^qzwFfT49CL~l;R0jtKVPRoROiKU&0CRJ5I_%lW00008bW%=J+hAY=VcOf#xbEMQ z0005^Nkld%;o5p9+D>P>WR*CFh~^7z8dCuLeg`S)MkFaPmkF3d5;{a&_8HM$xQk-o zJ=O{0&LMVDDfx4PTFN0>x~NW&577cqtN9uA$%|UsAksX6{)4DJeq$nnsCn|ZXKW68 zpVhv#y^Hct_J4VE`m*=q)uc@zw<5K4Y_MlVv-}XLwq6LpZX60Ui;f~Lq7Jh)ms_Bc z!h>jnQ4|kxFXVB#;3PVc2qJ31?v7osyhtX1i0E%bgsUZqzedt}{60@m zP*+!1UteERQc_}KVpLRAPEJl&S65tITw7aP4Gaq?C?z5xA0;IsD=H{7GchhMD-jV7 z1Ox;zF)kDo5;{3IH#Rg64-NwZ0|^NTARiqW85acw1Q!++7k?KO9UK`Q92yJ^37#J256A~&aC^t4UA08YF3k)zYEe{V5BO)On9~?S5HwFd;5D*U>8yO@c zAp`^kDJdy4Gk-8DDkmZ$A{ZAHA08VfB_kmrAuTK_Ha0dYDk>5Z5j{OU6%`XVH#apk zH9b5!K0ZD!Eh_~C1sWO`FD@+(4h$O_7!M8%H#am64h|a|7!nc>G&3*_3=AJ193ded z3=9hi2nPrV2MP)aRaI0Mn_IgO+i6GK0Q4X6B95n zFk)h2PEJfkMMOF}I4vzL9v&VnEG%?%bYWp(GBPq!Qc*QFG(bN;NlHjSKRz!nEl*ER zOH4~rQBXBCG*nbm85tQuK|oGUOH@@k23))d zC;$Ke6m(KfQ`!L9+S*~#+S&u&@?qX!^4`+T&DXMfApigagh@m}RCr#bjMa|hFc3xk z*7Gn@_xx;_)5y%s48zQ{%4)P_tT3%&dftuI4NgwjCvqPpFVIqVukuvjh#(L1!k=!mzx_(TE zu1n>%e6)p-Brmv1XMIJ;x>Mm6vV;uLaM`*hrnMZ}qDi-p;=siG;naRFV~e=`KrWce1>wOpLJ%-pct&f-&E70V8`$R@(LF!#`v-1LtN^P$ z_tI}o-acZYgXdAPICAsV3b1`Rsy`V12_vfqixHZalM_+!Y%iP-Spv++AjG!Mmz3C%H4A)Y2CUcf|8e>fr2 z)`Wo|4EIm;uua_*(wu~3#YlrFS}(MCpr{BUNbl0~>wd8GpLb_(#ym1T@(tU zCm)ApT?RFkY3p4 zzo$e&12@nl9xu)7bTq{CKt9326B|5!-4F27#uMAJ;ZbUFs8uRai`pDmTYsQbS_;Yy zFTrHYFerSwdmkyUWpp)uELBH*gF^_^U6vyiUHfV707?~jH z)UYs+kW0Ec++xB&Fb2YUn|~e)!`;`o(TR=moE+|>*=N-nN1xmE_kYcMZC-vucR}h) zHvVIz!R{*Bwm{lG#OIBuk0fyv%aT#(LEUt}Y{hEswWwq72w0~@0l?ruF(?*5H0<19 z19Cz=YZ2o-40*_9Q*elEYQCbbcki4t{YO72ZvN;EMfYDtMr1@rWLiWThx?H)=QBsP-J4co{(`;uJVIGaL89>GA7P6X{tXIRg+8|;?CxtO0krI900000NkvXXu0mjfdgfhw diff --git a/public/images/emoji/apple/black_medium_small_square.png b/public/images/emoji/apple/black_medium_small_square.png index 2f61af05a2711794133ede17f576c379ce5d676e..94a2a2fb43aa0ad86617c7b3816a61dc462a409b 100644 GIT binary patch delta 238 zcmV)7y001FSOjJcja7;%>M^jT%US3{YTwDME03aYB zIyyQB2L}=o5-KVx8_fc300005bW%=J08vsysNK7xv;Y7Ahe07*qoM6N<$g8KekSpWb4 delta 557 zcmV+|0@D5d0lEZ`7=H)@0001DGedO%007=lOjJbx002lxNK8yjMMXtdS65zMUS?)y zU|?WfU0qR8QBO}#QBhG+Qc_e@R9aeEQ&Ur3US3sIRbgRaLPA0zAt53nA|xavG&D3O zCMGa2FgiLqCnqNn5fKXu3nL>VDk>^UN=hXqB`Yf{JUl!_MSn#G1_n4dI59CX7Z(== z1qDb*NI5w<6%`c-2nYiM11u~oKR-Vj8X6A|4+#kgA0Hnb9UVzYNi{V!8yg!I78Vo~ z6h1yaH#av!Lqh=p0YXATJv}`;J3A5*5r{aTyHTyhm+Q?% v+^(0nRwgyTQ&ZRSoS}GLtN)%FLJ0W*aoy4~tDmE$00000NkvXXu0mjfT(rP) diff --git a/public/images/emoji/apple/black_medium_square.png b/public/images/emoji/apple/black_medium_square.png index b9d98e90cd094ef93f1cf9d1096291d3577c30c7..fd63b9444e0ad1157a132b273b0a6c1d4760fa2c 100644 GIT binary patch delta 237 zcmV)7y0016POjJcja7;l#K|(@8Qc_Y~U0neI0Tvb( zD=RB7Ffd3+NW7+?F#rGn1$0tQQvl7?&V+KJdPo2O0EtONK~zY`V_+BsR0ht1IDiR4 z4a>}qa;%_ZrUP6N^Ng}ItRTJ90HLTo4F||jfGc8bORp$z$7X`ckQIS!3&Vy`6oujd z=|m_BOCL39)TB|9Mok(uY1o+5MvO^qsW?nRs#}0nSt=NWg(4v!NUKmFtx^P5uQ&iw n^~&IEh`pXRHW_WiP#XXMkLT+mOHFQa00000NkvXXu0mjf1OZfR delta 557 zcmey%xQk_iL_G&H0|P^nv2!Vqx)I{u8xk5va+(Co}RR{G|+k}DJgDlZV?d? zRaI4Wb#*N*En{P2Sy@@2ed6Nc%*@P&hK6QlX6EMRmX?-+f`UND$;-<#F)?v)aEOYE zT3cH?I5+@Z$;ikE^pCc-HZL!49`D5;K#qJ#kY6yv*|S&Ao)x@$s{Z`>vsYWro;uso zbm`LhYuC=UHnpBV+bl3OA`qzdlc$SgNJZS+>!EqfjsmWM-;d0bFe;p|uu$Ucna02G zHKaAXV<*)MU5!2Pvu=IaC5=;iGq=tCwY0Q!`Q1MSj4!Ho&Oep!QnV|6AJc{3j&6~S z8r@GGiZ#4Tzu3W@H}}EfjBgC}4mp!V_F8PwdnbDG2~WeEhSh7GwuIVPuq!^C?eB6- z{2(h!t4(~pV$}0L5>NUKFIYT(DBsSZ)S=J>C0^V($9JT2fdr>y{E-W-6_=Q|8g`gv zEm#=**-ZcFBle3SgqLQs~ml)(oH8Uar#@{969mdKI;Vst04|fwQ~&?~ diff --git a/public/images/emoji/apple/black_nib.png b/public/images/emoji/apple/black_nib.png index fc76020f1514352133c8c0bc4c91891b19a52308..815332cfde21ea5531e36fe3c47611e67fc9ec3c 100644 GIT binary patch delta 1448 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 Hu0mjfa)^{B delta 1154 zcmV-|1bzGX0*eWd7=H)@0001DGedO%00I6`OjJbx004l1fJ8(@K|w)DNl8UTMQCVf zNJvOrTwGOERbF0RLPA1ZTwGsYUr9+xQc_YrK0ZxNO-oBlQc_Y>R8&<}RZ>w=BqSsl z7Zwu|5gi>H7#J8VEG!uq79JfNC@3f}FD(-j5jHh5HZ?LZFMli~BOyURKMV{E7#J2i zIyp~IP8u2-J3BcsF)>6$L`_XiK|w!OR#rYfJ{cJqTU%N^Jw0=Ca|sCuBqSkHQc+7v zNhv8QDk>@i0|P57D=#lBH8nC66A=Oe0z^YXP*6}D8yQYcOfD`iGBPnoMnpb6JUcr& zB_$*~IyVju41YmEK0!b}BO@Xa5f2d&5HvJ1H8e6UEGj!XI0gm<4h{`3FD)k~BnSuy zNl8a4Dk(WRI4vzLAs`+c92*c25H>b7A08Zke}8s%c64-fARr$vFD@4r6dfHM9v&V! zIXN>kGdMUn5fKps0|E>T3otM+3kwS+B_&NvN=r*gPk&BMOiWBhMMMMy1TQZySXfvp zDJMooL;wH)Pft%785k`sEFT>n6%`XRGB5=O1r7}iUS3^NQc_Y;P-J9eR8&)5U0qUA zP%0`WQBhG;R8&`1RVpbaJv}@qC@Ci>CR%y)Q-`O(~FDM z)YH_}(bUrqK40|!00JgSL_t(|UhURJbKEc(fZ@iQY@mTAX-&(_jA3SGW@e@`Gcz;( z%gT=H@nPM3r%n%gb&v;9Gd*K6_d4feG(jUb;UkP+>~D4#=2bKP-vikv$Ap%5jLs*fei_@% diff --git a/public/images/emoji/apple/black_square_button.png b/public/images/emoji/apple/black_square_button.png index 55323cbdef1e81b486b3a3661ebbf286fda996db..a69f8fdd4ce9fbc4f0cd6b69e4d926d140662fe3 100644 GIT binary patch delta 679 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 diff --git a/public/images/emoji/apple/blonde_woman.png b/public/images/emoji/apple/blonde_woman.png index d82a04557f5b1f90011471de5d2e5094de1742d4..6caa7aca4ea54ad2b0a6bf492172bc3e731e2429 100644 GIT binary patch delta 2446 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 MNe4wvM6N<$g2{`l0RR91 literal 3971 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 diff --git a/public/images/emoji/apple/blossom.png b/public/images/emoji/apple/blossom.png index 1b0f0d459973336fc012373716d5d27e1deba74b..657ed5c761d7e24cb9394bb5c57f81d8e6ed8bfb 100644 GIT binary patch delta 2798 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 P00000NkvXXu0mjflV0aW diff --git a/public/images/emoji/apple/blowfish.png b/public/images/emoji/apple/blowfish.png index e0a4d50aaf0b993d4d840781d095ea5e58023e8f..3dcb8fe53f51e21ce2d8f3d09e20337baa689f08 100644 GIT binary patch delta 3221 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 Hu0mjfpTbfp literal 3756 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 delta 3379 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 JPDHLkV1lZZu?GME diff --git a/public/images/emoji/apple/blue_square.png b/public/images/emoji/apple/blue_square.png index b1afe749f3c780f4f3a41d0c0b0715aa32fa9360..8f8d7fd7b1c509a10bab8288a9aa6fbe1f9a6c7e 100644 GIT binary patch delta 1147 zcmV->1cdv&1B3~X7=H)@0001DGedO%00E~^OjJb$Uh)K8@&#S;1zqw5Uh@D|{{>z1 z1z++7UGYYT^%-jODRuNafb|}2^D=w%FL?AEZ1XsN^+SdA7HIP%ar6{t^C58a3t{pO zV)7<)^a)_{3SjaMWAY1N@+NZhAaL^pUGf!Y^ABV5243W5oPl#b@U)^^bBG0D|YlNck~Qm@;ZR^ zA8zytU-BJo^nX{A_EnMg1zqw4T=G+o_E?klRFU>nkoHZC_F9$pQ;_xtUGh$h_CSO6 zXPoy&i1h+ON#be zmiAJP_EwViWt;a3Uh-O$_EC@aON;hLi1km6_E?nmON#YKiSK}XiWYYha5K_>{rbGZ76o7F>N5{M|Uu{po>k&~_Y&5ZyPEhbj>-f*+G zl30{QYw?4(+#JN$WYJDy`#4sb&wo#kw-Y;xXn+4j$nPg36!O!HK?{CzvstRLUa9f) z8xSqTJ^)^Uxiql_Rg^yog)yRthZqUt5vEZDPa>;FNJJ-G2s0u$`f-w1MHzp*Y=Ug{ zXMku){KAd61Vq{3cW#1NAWFSYQgX>cqB&NJ;x(EqCYOvxlP^<1lwN;VHecDgo>oQZ z=zr&a+5BSb?<1t1sHa!YO>Yl4kx!p77EqL)UCtQwKJ`S%WlV8nbOBL!HqA}88+;>o zx`msxTlq!-)b->NH!WQ#poqLa7dN-P9!2E2H+G(zv1V0-X51IJanFEPo9y>;(?1DB z0}q?Ic{Bh-_h;L!?Q~f2Bri0SkrON1vwzC>>{C^ge?HQR>A<6-wIoF?BX{z$=mr{} zGnq^_lZ4GiBb!vQk;}$5OiGJMVQw4?WRYR;95;goAetJw$j#6c5KRvoxEY>SLgI_zz*&)x|{j!q3YfM~*@feBUQd2o$zRRRYjA#|xU z17Lx~D-t*$2}z|H01G50k3CaGd8e6Tu~?+lEMp-xf|+cQMJm!B*6qxz zCmMBXU=+OCO-%ricB-PPs4A+8s-mjszYysvBhppw*I31V)>Z2F;U5IDM&M`~`(ywB N002ovPDHLkV1m+DEsp>I delta 431 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 literal 3749 zcmV;W4qEYvP)Vv{`sZztV8s+M*jJ%@t!^U+gA0u zO8L-P@tQmM(^mic!Sba*^s++w-B*lR9{AQ*@RKh%x^5gm*?4_s3B7z)k((cIchr+_r_G?p*+%xGVPl= z|NYDHrakt(PXG0EoM0a`rmu;szB$OIp&i#{`ZLX&t3Yz zM*7TG{`F>;WFz|BXZzxE`rB~$(q{I^TKws3|M`OU$VK?iN0MJ5WHu1mhB5irX8i4e z{ql$V=Y#$2i~jX*`qx$V=UrMY4Efhz{OEf9@q+#Hj{WnR{_<=2(^CEJX8-=;_rp^8 zus@h^Dv@R-g;^l?p*sBRm-fL!s)segphNrTjP%b&=FV0B|MK6-Q@@x!w3a>b+hVbGEwza@ zq-`nt$47Nb8pp9p{`9J;f;G*oOj0Ha)0;o-yHD%YRO}QV@fHLZUH2fsoK5o9r0baoCq(6I{Z+d>|^jI_`D1Gv~ep1huW5|K|6{V>Ex|;u+Wr>0DmM=CqN1nxqbl&jA7Gne5-)dQ= zz5dG$tg}B>R!&V_0j8!ZD}Ox8+VJK2MazCmN(P(PID=*CN@ie0c71z${rQN%%qvsi zqORFu@Xje}Z(h@RwxaS%Lfs9U1BVa)8*w-zY##v127hn5!Ptm&ysBYQ0o_~tg{KyN_lepcv#r+;~~g} zWS9gj$FcDc$C3(G=ce_VzvPJqPl;og%{CjGFqJC=bA%ub4B6OhgL^~qtWKf2=FfZL zB&>=C$8C;|j@wYYQl2H!yD;l2Mu&~&UcxA&-Nzfe&3yT|1`j}Kn+=p*n_rLX0`*Ut|bnMx) z2SP1WGNtc`%7G*nd-iW3Pl&+t=6E(eX8)vZ-dLGGGowM+XGv z^hhK3p&+g)7#fmomegVKTBa&c*IY#bUYV~JeVUw?3cDw9ZvTFE5w3w$`Q;Cx9tophYI- zC00MW^{+W@J*rOR@z^Z`3Fi_L5{gr5TU+Jj4BtO=a$WaIc zOlG(*4(D}C%0`|OCupO03Ii_%0)>O4G;FAd-E+$eXHN-dG6ez!M{F9KzjpcT;;;6J z^`;ZW98N$$P<%SYYm&_?s-n?oMOCutKo!%nsv;PwD&nyx36%8spn!k?j+jU{jrB2{ z-2jU{ePTUK-04JOaxw>0O?PB8TG!y?0UC|n)f~tL0-L+oG}^%9!7dt2HrNCjPI5Al zNT<7d$NG5Awxv~`K6xTb2E*Om-HHyX^kG@zKyzVX;bSSgyP4a}&E#^MyV=smFw{Jd zC>u`aBoia8Al!uE>;a;WX161V{BoTv0fw_lWOC3jzvm||!H!!v!0*oFW&+&IZvH?a zmq6hD)WaVRAX=F?GZ+kbAXfyU_f#TvBof&ooSZBfRsnai9(Y}Bf~Rheb~k5YGaPLlV z?Z6YCKHfEBW$9#VtBm$TB0Wr`rD5cm7ALd@LPJBX&B2rm#Z145BM`g-o4xEXyqW{O z2)L&7cvx7XldU-lwzf7mSBg-ZT&l4IMEOD?nT&UJb;XBT+d46*M zN_-H9XkrN-GQ^U};1b5AdFpAw-d?t3i8_el@Nmlka1AxLwR9(Pg3>8XIDmkGBcOA8 zm{77i!wGp%D5!+O{4`G^EiFu>V+f*X@cbQcC0pBCn$S5x@f3TU3WDk{B|S(f3dLd_ zkSIDo%}`w_TDi)w#%E6CfJeE}QEn9bITeOIg$bFtLuO=GEEFmc9p_VHxJo6`UtQyq zuM#<+8DXLzBzmPn=PD7*2(OIAVD89bF@Hlovhj3<4fSAs} zRt=BGD<_oZxpBD$>PT8kR;ojhpxk&eT2NbC|0IT(1KlYcAo;2wk;21K1L6>a@8`j~ zg+ee{7>7!vuA!l(+(`PX(FTYnlhGElWjuU--x+$78D2NK8y*^Ru$5N7;$eM79i_%3!Q}ganP+ z#M#u_9QOZvH!eIEk64NX0RekKDc4P2*wEx}FY>%LPO_OoyuSobpfl=7Tr> zeOvjbsHFX;Fq1bjp;-w?^6|;R!8>;bpN)*m%@jmB{C0rH8}d3Cd}{x`s6Q-!^Rsr* zil}{HLfQSd7qeGw5DLSvisT%tg2q5WW3HeVkW7UPnK}kcNg#1^GZ~5wP6eTH%WBOv z^cMSmM`H^yKVAAFDo1>HzE9zJT$2=7)A!li#}@^2^XwG^8A+@Iq@hg>iKKuc)_73|D#(O%%6$w@6oj^VE<|Y6 z6i!)sAk=aqSigb+*pz5bLO!9@>kz`wiL}ZfwILLF2^{U$leNG=CtI}~*0nm~L_)`l zW0J;)O(|H*wFsR(mxM`^tf2nbJ&AX6M0J|m&#MShgxbRkv^s!n_J=ryP7zgkf21;=s!m%T zn*M0|VC6xzjYPIpkb~me3Y4{5J}rvAE(VG>^bN;xLIelHA9~6FQ?teyyYnwgU7*BO zU3NXwwk+H9Tv_kY7-x55P6eL%!}PD5lNW9k_i`Mmztnw zH)2mivXz1;AQ~ng9FTTpO*}D&Ze6pMg1NS_wVaG08yI7sJ})JqgmIL2WU`fj zAsZE`jCd0c3SKoPE+ZS#&&%=g?wFE_d30`yUQEHixv8a}a*bb20000QbW%=J0Dd%E zFUd*%2^FMu#k!eb<+ttnhSJ#Tq@Azx8f5?g1$jwCK~#8N?bT^h<46n!;G8~^a19xT z?Yn*7&JF+nmw&CKHiTNJnIUY|?uU7CDj(83B`LBq`XA;`g2{~+{0q$VE*7^lCr)M; zi?hc%6^Zdi;dH%vu(!(#otqyzw$iY>^{OkBF?@WPv+k-oQ^pic1I%V4?BXJ4+H|_e zl+;ZnfVmi&{^)dF7j@Ib2|1fnwz$ZtG(sIX8;Urk^M6k-!sM~5DqR<`ZffNmd8$7R zh3g+(hfbjzZH;rpNvF5r=gL_%uTB>$Gc;CI8C!&(bsW?+btVZqolbQp7@vE;Kjm*t z)4+saKtciChMsak>sC9c$cdzS$@!NH;O#iIi$F`(1}B(nXx6agkcZ z&E}-5s(;amAxJzd!(Y#5aA2p?43kzE=9gCC|R#yeg z9D|O{pw#&8=BJHOQyN#u6=W$H_6OlyqLYCW*Y(X$8>x5$~1OK!39al1R|v% z2ji#@O8RS!jdihAruUCNhyE~*%79Xe6k;ee@DHH-aI)&^RLHzP?)+8|R6C2Xw+KuR z6UVdn(C%@C&qE=%t>LRpNzDI)7vc%JlwTu|!h;0D*Ka2M`y54sJOfbkI$u ztBM$MVtL%}j*L5LDCxBv6evm|WPpP9>|HQGF7(u}9H2wO&Jape4l;@&C0qy@!?;xL zTbpQ2CE;T}&V*vwet(Z8DfI#&lM#b+k!U37aK;Q=iLyBC;0~u*X=LDN!qk5MReow3rbT&bd1)cD6Kr)LJO% z{$RI#E)*HAi?WQO$Vpfmy$#Ta5-gaTAbZ-WDBAY@VF%FB@AFJ?gTbzVp*X30>5`R( z&jTkd0LA3T{gci6zHg7uhl9;ql_l5*%?6wt;%Y({8+D)ZdFY^V$tY3&1b@5O_7Go6 z&TS?QHUJ7C&Oyir2t0($84AYqA-uNi{^{8FIiQKM7W#tvsi%B9KqW|M-~~a*oGXHQ zBRbyq+~+ARr%H?)FSfL$U_p@^`4EPZNnRii&cM0o>blJni-@Ezo2Eia+mhoti{40Q z$n|!0b#*=Vf^cqAD8(rQfq#GP8wjs66oJGYG+1smrIdyZt+eMjCwdb%A|!o)XtCdB zcFW4#34QP0T6_lt_Rlakcq+^VOJo3z-a*8CzaB%buc6`Z5NvztdERm{=d_q45e6ti z?|&e#x1f08x#19Ut~>O`bKeKZwMkI!bLqW<0?(U`eiF16%!l?Oe0Y`MY)f3D3laq0 z9H^XTl|xDnBf3Z$h2vYF7L^ilZ**~HbCAkmSkT$!3CI2bm1A%8r7U415%OoFFUDiE zQCGp}t6Ab2_~X&nvnb1}S@*VhBL;eU`n`5T@=OsO2`mY4tl002ov JPDHLkV1j$E4kG{n literal 3621 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 diff --git a/public/images/emoji/apple/bolivia.png b/public/images/emoji/apple/bolivia.png index 6673de10346c54a58aa1068f675e13acfe8f406a..d3a63c11e990d0b13fd4e185aec361b4ca0decd1 100644 GIT binary patch delta 1563 zcmV+$2ITpY6RQl6BYy#UP)t-sM{rDxBrXa)Bn&_%0zV+KY;+J&F=$dS6jCw?LL|0x zdvpyIqK_gCLMIA8BndwxwQqNqeFwE`bFE!w3qK{bW^S}>bhc`8t6*rdYje49d8%M( zgkV06g$avy42*US6m>)xd`cmOQwnZ8223dtgj=u^B;djz$bTp~+rAq4+&JUNAN1EV z^0rLO%R}gTSn=R<>EB7V7%8#GM*HeI*0>g`3n1~*F443U?awT*Au+B&Otel}$wyV9 zj1a>kHPJvz!lMX$y(YejIUWmTGv!mC|wZ%n%fFqf}IwV;0taX=Vk zJY$VE1!*|-%^c~!5SjMA3jVGbuAQb%K{e=2|>gk)a!Jw_Jt%Scr{{R34KuJVFRCr$O(nn7lQ51&Z zu&_pQvT%qnCZz19clX|V@7?s?J8AztXJ#_jV;nn%RTjJpKuCV{oh!fjKYQ)9*D$l$ z^e3|!dw&sOHd!pzwU5iID=QzAY_|0^tHp#p)37SS4=51`1pHco0C4M8(|GP|6*Cx# zL?Rdr#-MQ0rp3`eVS3u~Cc^i@<=RLoTQ)=X^%!^nXyh*JfLWkFUaWss!4BDv$_L22DYa zd%k2+c|E;gAc%ILv`Gk3Bzy{T;W)e<6w@k@F_J7mPa&9;Q>4E`r+Y5=KaR_?oP)v; zIpM_BA8`!|&xJGxK}IKzQYRU1n+4(E$l!oPY7$ygTpYsDq9=|qut{<*R7H^SiF5~5 zRDTBz1_K;-L9?OhCo&+%N@O9ERm)_2@SViv`HR3IHAk0@E$Ddbx4gkiej6 zmUX)UVhBo;fFh`~cL@3%3T2ac)rAjGVSlm^X}4QV1>x`dc2SgQRhohh4A9q*hf?m% zX0)>Hb9fCm+#)&by~bUCc*Tk00??OG)Z?TmMy--kV^b_7ilfn}-)Q_2S|CkB&S?k& ziy%O%RJ@Se&0dI7U1;#-rX7Bl9pEgm2poWrq(Ws$sPjB`B@Rnm9-xI5A&3}55`QOf zo!-^`J&&N5EMi%j%X6h(x4&Pq!(T631pR?Jm;Ksp37}`cQH9YLIqLax=eAaR=t_0{ zH1EQT7y`W!K%BjMbJOK7@&Y)}1+)Y0syXLD;2?;D&-c3BPCFquAev6`_Tey{-h$HU z^qI%GyF>kZ5gaGvg?4Ae_Zkj~w||%R_iGQ|j*gBtHnz7mBGN4anJPv3jlEnU`1DTHZTP^j;X7%n_i4x3wSyz;NMzWa8qL4Q2$jh#y= zYa_@A(-i^IY`EWit=?XL!yDrm57@*T38)n!f<~IM8wQ*Zy==Eu;ug!LA|QsOlz{pq z)I+DQH6N6;Rv`d$NO&kQQQsOQgpd-Bml6<|G(-{{l75{dNm+u-A!O1J9D?lJ0Ubf< ziQ41U<`enN{6t9z(tI~HJ%4@Ibt9$m;f>6EBIGAR;o2$?j4`eCxlfO9V~EC_pm3zv zV0BfMMU%OjrmSjEnjJupK}F972^ta3fY4+)=d?wL=UG|l@&F>)Sq?*;i&2hZK_wSEB9&=KOEMyqc0+zB zE@>DTDpooiJt(4KXB#{wBuOzCJ0=`GCaP|8Aw?~%czvvTe;Pd{8$KqjZ*>?tBCK(E zscmzoZgU<$DH=N@6gM8HX>P4?cdm1Ju5@~>YjGb$Dkw@Wpnqd&EJ`;XK`F3xeIiLN zp=4>NYjK}sX`5YQh&(zIG#?;BEUtHZmxM7MKq($UDtaX=aCkRHid@1$Nx(oyEoePO zh+E~%PvXi=pC&1_HaxjHKq+B2(6>QBgI1m-Cp>&mvNJhDg;=2{E6lV%yF5cMYd|Vv zIHoHvIeAT~D}OP*K19MoNiuFi&bC18(o^o$RyTG^EM_{`zeO`~M4KZf)x1MLfK}+v zQQN~vHFHNqhFZ(AKCdx1^xIk9#!93qEY-b5J$_QIFEpz!GommyCR#KuXGAYxKOajg zHf~7p*jOl2HY8Fp)Vf1GgI?jrOZ41b!$V2ZxkB5)M}O+kQugOyxi&z)LrkMdPk9_2 zx}`d>Jw&TjTjat-v7bKJz)8-xN40En?6_QwEHOEDPrpl2v}0;3TRfbKFZbJ3&Prdu zHA#7uN3JJ0_SI0fOjH^|C*99U?#xOpZ%n;tIV4{^qf}asCoKH&V7yaXr6Div-Bi-U zM9$7!(|>(Yx>PzOO);l5I;1*4=h#q>AS1b8W88yb{N`Qcn_RhBU~7p$u}d>hcRi6I zB>Cc6lfh!-t5%n-SMA(;;?qwzdReYuGws7>#GyWxj90F?Q;DivXO>^bz*NgXOYq5D zcA#nL)n&5DVBzCo!^~lPjyp?HN!ZFpRf|=onSVCKusl?GSlpRSq(Mo>Xh_XfPQ^S+ zLWyJc?si^jN6=|q-o#qDqHBA0O>3curNF7#x^0l0dgHfGJZn6ZnLCm-JC{yVr8+9Y zia2eSQJje{v35ewk#+OsjD?I*e_~eT*o#(;k5R3LJAaF{uw!tdvyVSTr>RGrh%bsE zF@N#v-FdiVkkHk{u8#4WfcY{NypqaFy9U|yw000IDNklnZk!i+#j41XKKO4uU=B11xyQ8h&Td6S-@Gy8Bo(nA`F}}1kl%Tp`(DmTrcIk_s;U0Z6x3AZgsG~{oD`v| z@#PAYC5snn>gvvhty;Evjmko~55m+mRsdna(j7Z?WM-zNrENhgDVaTc*=iLH(SP5~ zlC92E)mW&qSQ8qVb#({#6%-VtrlwX`SBJxD&TdI7d9YRibJnhrHlYGEmMmHT$EZ7a zaNoY2J9qNzEeN)ZFfuuagtzwc!iQI<*4+OL`|PZ5etm%Kt0AYVprEFvCWjt|0Xm0} z;PH%&srD8KL?H)32S`C-;orZ5K7ZeOAK7=+s$~WS2AY}+baj_zf<%Tfj0#@t?J!=m?I)K!i=a?3<@Fv2QL!>1BEgek^^nT!VU?2Yl9?lL@xFc2Ua8NbrbcL0~gVC_@55fP@4iqg+_B1+{VytgET%A>PZn zj3NPHXN_$JA!IYKkI{wx{(lR(3Fj*+&a~Yz^Qo<^?cBZlM0t5)z~P_wG=={m0byq? zf~W}8-=BNo{P``9+m6L^OG~*e`;*M#0yhV95}iTiCwBWD?piDH_>r>?6+y|M++5z- za}C|sN1qK}I?xi&WV^b$_?Vdo`g(XLS~_nC2yo{3mZyAzK?8gei)n0cI|k2`=4u~-r$LJc{`240ViUA!?2-f@`_N&-+EfH>%doPRLHAGz`B)yt8VoO(DA zlbM~JpPye;RFn?ma5xitYGAec(rYho3|y(JKLBcBcM6UkY0t~cYiw*he*E64)1368 zV2KMU4PvveWtPg$m?Z}#x^ z@Ysf2Z6BBX{A^IIV5ohd&+sA;ObtP%c2@KdCpSM70-4bKqO-o3jzRK;5zWW%rFf^O z7r|UyT$0SeS@b?S>Awje7ZF4z6eR|+BEZTfcbl6V^M7EEPFjV8`~(sXVki#TjDs8` zAxC$26O%|7ILqRU44V+Tm6e^pzp1!nIvyetWk3!NG*3@YKQ}ig8=DXaA(A-c4>m&} z2NU$LWlZEiqj~y4$VnPxYAS-@K*&VyG9Wk-3IPd)z;f@J2;?XgvKt5a3y%o9MgKJs z4THdG(|-YE=PyFwqt9@Qj*QBRh=_?riXfWMBp{-r2*O69)9J`WLLwRvQCTrDRV!JA zg@rR zK_R9}X|BE&BxHRP$LZ;bbY(>yb!1~!RcvewQfyV#O0bE%mf{@TtPlB-pscq}XTG|+ z`aGCAIEt^dwDsmFPwt1$bY&cF4h)A=p86R$)l^eWuzvxAv=ccjbvzRSX^Fl zcz$1EV^2|0S7UBGJwG%zI$l;mTv9VVG$choH~#Mt_|OtZIUZ0x8;g;YhmDc($bA3& zfsxv6P}W*EJb!vAulA|McEXgxvtx+9jzVI*nA@|PV!(_~@@Gn#_<BU96{qoWV z>gG3qD1Vi!!bu4u2-Rx2T&`#uW3o9`bo{dPkeSYAr>);eVxd|pnzA9oM$kFQa#JQJ z9FIq;4v;&2X}>eg(3<7$<=LI|Ap=h@5V>do$@19zPjXhTf4VqiQM!J*xcQK28i}LP zhr$QLOckBEmgQIs`?^By>FiX@JJLzd_#m=rGJhp!p%;#p}%p512$}EwD^E@O9&AdSjIC?NQO>)AS#2w7xu&IbO|EZKZLad~WPMOCm2-L@ip&dFA z6}snz4x6I%t>a$`>ABPO5Ic#IT2N`irEM}8I^W^S?fRG1qdSzz+@VSI0FvbbkcN+{ zJ&Te;hs_TV#B=|moVi08^@*7@K*kVAihrU^rXHOb^@*^F^vl1KvM-0MGvNu2Gl6A~ zLhl{}&gMjvYOvS-XWC}5sILN4~s;Gof z0^)3R#sIC?+SyP{Hjr}w|_e| za-^QCF>Hi|$QcfYk3$HzAc=#85c0gO_p;wN`i;hJ*XnYps$rwF5IGRSVhW*P#0z0O z&w1U0(Rh3Icl|EClf;VaW(%n*G7qpIoFd4!c_D1HT3OC}!>`xt&(CkW`Z-Bb(Z$iQ z(1;*%C@7^66{0P|O3r)VufIJ%Lw}>jRjVuFnZ?j}uG^Cd6?(`(!vsnTQ6t}Ppybzg z9ICnyYBU81CnG0YDOYH{=8X`7J!(LsjtKXwn`wlT9YMK5vlT(uXw|Pb>OQRfRclbg z$C@{q;U2|}5(yk$D1H_J^41v7v#ggLrP2R6=!kS^B*`H`REeZ?Foho(y?;SGln8QG z?fq`Qhlg@7kmv?kAY{R8(~%v-PkpA997nsorO0NSDie;t&ZbqNuQ z1keH~3oDIC0tzgZnAE{OP=8|!@nAVTCz&5&%f-?~iC3~=I;8NEbwciN1rkF-0*S@t z5<0nyM523*#|9>LppXL&HR4VlssKck#U(0bE4DHrChda-7Nn$5!m%+}!^38jj1fpSGL@X=+U_CK(VExx2o}Ia#LOyfRFalXgmMxg zFF>ThLP_AQMafB0U#YJ(fMArZ646pY$)J60&CsJLc@I3rPk&(u;v3p`=`nzv`~883 zzVWp^2h_M&b(9@FAV`FK4JJ#)$+S_2bzUajk0VGVK(1298Is;C;=>hA=q~`?NdeLk z1z8|DS#JqAm-gkWUJ>oN*^^fdH%OqUe5Sp_drrDIzVdyq%#c%8>a-8GlioSfsInrSO~Uub}w^au32_SK4Ca037U002ovPDHLkV1lmA%XI(% delta 3430 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 IM6N<$g1lIKLjV8( diff --git a/public/images/emoji/apple/bone.png b/public/images/emoji/apple/bone.png index 8b34d66fdbb55585a1aafa2a4bcf40f5d2d8abec..bdbfabc90d6b40cae7d990ff2d06f151edb61374 100644 GIT binary patch delta 996 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 P00000NkvXXu0mjf>VVC? literal 3843 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 FV1oP7!VLfb diff --git a/public/images/emoji/apple/bookmark.png b/public/images/emoji/apple/bookmark.png index e688622b22bbaaec688d057941fb482edf3295e4..c68681fc660a31cdcbf956644ba9e5c2c0e8752b 100644 GIT binary patch delta 1279 zcmVgM0<=i%$QxaQ&5?djy?-`C?& zQ1gC%)KgP~HZ$UojO*s#?(*&6+R@|P)!EX>=;GSt;MmN=xYNnL?&;w2R8#3hMEGA_ z`)FvQotCt(smUoRwJt50etDM^6gJP*VgLXD5p+^cQvmBqw1074EAma|_kNH5_lco5 zEboi}00c)#L_t(|UZvFQQY$$O1mKf|9daW<7u%C7aNhqRSFN?m8B)t+h(dvXebp^g z`Sai`_Z=Qj&p)evwfqKb7MuB0{pGdS{&gsIv(x!JTg)frF-P@Vrp?J`KFLu`(vTvM zIg9BICsni?1b>=!(|Tc2w2MGCht1?XVTH7S6UFB92@Z48lwwbF543imTbvgU_QDXL zkU9@^*#2kQ6?6~xLLv+^t(M!vdTq|E^EhW5!G!(zFcFp6;e1}N4=A>o8Dq0~$Vr?k z#Rlcs@ocj`ZvV^|U@(hur*1|gP=Vvpd^4-eVZ9k~Qh($L$Q^9Oq}dtzj6v^#vdgyopC9d{fEDLEvp*@!B^d7F>tA!bFEhH>Gv zLl&3Z`F~n1M;wEwb<+xw?jU%kBb>sJesa9aV3;|JzHg5;)5quAMTiolpPUp=6Q7SImh}!jf<-UL4?MkotN^k(_ z>+=5{vy_UkF;XbX(&ZvOhOU=zIKF*{jxo`UOMlLyDmmv??sB>2lCK6DK}3K;8s=$3 z#U>^EHk%QEhz$V-29i6ewYzsTv48+1&QdLc90=}~=WLmp!x4tmBQYC9UeHhgZJ?!~ zbbsq`+fF7mBa>_9;GNPphJ)eg*6taYm&&a62aqUbFNmo*I0fXC^2`1GATgklfS_e6 zIe#1v5S1zfbbsqW;<{-uN$j@>{+JWD6!o16>-9Dd{MenULL#dqnc(<$8*$5&!lj#D zFMfx$KINQ+w5O8Iz;665N&G(m=XMg&Fi-4`(ZeWIkqo5Z4HZurbi&V#vs@|PCK7`% zl)#{&K*3XdkHo>Ct@rZT*X_iQG6^;W#eWBeh!El2YxGJn^2Bs21ywaj7;q*iA%|*j zqY9)k%^7whYWIQhO;cnOAqSXR8jd?`QnUjlCD-v6uv|w{A_}JE8D@$zlByJ9Uy$U& zD42^&5MV^FdnpnX-?5~g5J|F_EWMJzqR8!!aPHgrh+wC^DGTG3(UZavhI2oxBvX~=0-m6J*(^3xsL>4AL#F)r4o=H`W^IU*XN;Q~7;fzWc zB5{btA)e4{Ad&CIg;MAiLY@f{Hh2;jI(CQS_oM)c+>J43f;6Ziu2AbWNg_|-ghNiH za3*F7iiUfhE>RQk4ri*A$e{QD8r<`5Hx3ETZ>0z|+H1TWtl0B2k~zShb0G2aPDoEX ptzDu$faf!e*yWz)KD(TDO&&l002ovPDHLkV1hqQf3g4o delta 3501 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 b$^X_FKPgOv=n?Nh00000NkvXXu0mjf1Ph8= diff --git a/public/images/emoji/apple/bookmark_tabs.png b/public/images/emoji/apple/bookmark_tabs.png index 3bca1dbd0af1a4b514b519b54fbcdb5c58487c8a..530c11a55633eb96f8d97b18b23993083c972994 100644 GIT binary patch delta 1575 zcmV+?2H5$%AGZvUBYyy3P)t-sM{rEb!NStg(!|Qs<>lqa$H%0kq+6-3m2q)# z_xAK*py{f|=~kQQ+cD7}0000CbW%=J00@pIL;i*S{;y`&`G3+RIsgC#dPzh4N4*#)EG6QA0_pPlde{vjhX8E~N)$=sd3XhBKS-ofVvIU# zCLLd2FE9H+fqyU|@Wu+k+<`Q`><9HZ=Y+0Tkm8brG!1_ayFivAZO=#3Orp7?g7o}@ z8iwNO&7mSL(a4)1#kGvI1i=kL z5ZH3{BMOgV4#&w6^q91^*25fd5VPe}QjZJD00s3V`Pe|77aRSpKrli}chz+jyd??o zMj~bAY=0wSibHg+R)?zC#MQ4;POwT6nvyiDvDP_)Xvg(*W*@rDIpq;62F;kG3KoI+ z)V3Qd5DU@VHH*H9IWV{wt3-!I4>^ly4T3;Zje&RS;~}u)4cCu2zNz6n= zW9rRRN*qKu@8|Evk%#w9$H{qn+sxY?Waq56y?^kF^Q2XOKU**D z5NVt5*wE(zaIw!v3elUSa6>g<80ZsWM51(u2zWp2KxATGmve4*LCbm!C0)PNSe59 zmw)3OmJ2hw0Xgy|IK?D5m^6#d^$xqATSTvxqe?n^Wdg5XKzyBoXoz;0k}VLYDlTVB z62+bxkiTyt@-XsMr<0AP?LT$F#cmh|DY0xL5~repQYS$?gJBaESwf2DY!fk@DaR@* zn;a!Pl2Scz(WzjHOSq84{U0o(^Ld)4k$>u`c->l~x@M4LTd*<}EWjW#GSv53yhcSG zT{qir58q@961|4{(*(^Rj64Mv%q`jPEJ%&_h;^4-)Mpg>iILVW;hIt67I9E3SGc7K+m)NO&M6NPiGI zCn)f?!ZZaWx6e?**dsfndkh=Ud}I`AK5lK<;#W3y_N{^J_6#z!mZSAxI%D4CtmhgRoj}S3rXlc~ zQUko!GK4-mkXF{ZQx%4vW!|o>o_{x>LT9x(QQ=-|;70;i$`0!w%2Fz8(ArvXfQTq9 zau&3Zja0jbA{42aqHePCGBjSjXFytksLoQpiv&=AW=KKTpf#e~1Ip)V%t^k0G}VF>9`3TkAaaxk3n{KZkzG-> zpMK^4F$4|gaRV|l`$cQ^8-G`HTaeJ+O*7E&0Q427cp^_QCW}|(`LNJ%MBAlS*9O|? z89x;HWApz-P&MWsfe6?IvQy-H&@&_2$s&juf*x6;j==rgZ0~`Iw;*IMLBIb&zh=Eu Zz<+)&D~3@a_wWD!002ovPDHLkV1m1H4H^Id literal 4029 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 SV!%HLk>WcwSf!k4(0>6|1x%3u diff --git a/public/images/emoji/apple/books.png b/public/images/emoji/apple/books.png index 071b52bc29e4e8d8f4f6e7fc037975672ce1e33e..07cd689cf423ff03bdcbbc43b12da0c7aef37319 100644 GIT binary patch delta 2454 zcmV;H32FAS7oQW5BYy%kP)t-sM{rD-t(GV@WL9i-JV|#zO=y&+iO9&u$H%E9GGZMz zjU_d3vgAPmPGfa-7PGX^dAJGlrSdgrL=oC^BIpFkw(?Z%%5u zhr@6;Und(gglKzI$WBC>(uRt{bdJ7ziNAD{m}R{+FD7CWLw{SOd~|Y+#d$ksE9z8A zo3E5Pb1PtXv))lgJ$fy^zP_WPq;@AYPg`AMpH5klM%&xm!otF2q)y}F<0v<0wk8|r z=IEyt3o}iq!YLkZadO-|Fz7EL;wBid8xp54DA(TKmk|f>?eMr549YJgpDiaoUcl2f zDsmGj>KqMXVSi!ND;_&ioEHXKQU9M*vX?0nHl?gBS%#X~3l;96vf& z^F=wDSXXv~u&J)WWi14bm$yqZ0LWNRh@pbAzpieMXn$@_UdW-GRGU3Ojw*AsTZF-F zhs1CqV-8%RL`s%4Vy8}34yTPY<{qAVWRC8=$Dix_eyOr4; z_i%KOy!Ic4=ZZz{9|@kz7k3MV@wl-2*Az1ZFv1jynVTcoe6=iyr2znNq6kI)20gM| zWq%(GZ8Eq_j0yQ`7O7RsVrhQRQdL#cvgIMK)rKj8FnA4smc1%c8c#DxWG1QIaH*kRmMBNQ{ck4^&mi^H+89O(}dlhJS@# zQf04OYd&f>YspSI)`=tuC8Een2HPo?*?V|@Ba_@|=Thp(rU^p&O|Z(zv$N^+ z{89RsQvZGgoubKQ6E+8nqJU^gwtqkKa^Fra&KA?>=U;yuC!uw2Epuz@PW{twk0c!= zS;kT!1&HkHL#nbs0`TX(A%b)Mq;xv?Ovr>*F^?beSo&IUR zZhz7`<2Vj8?3wRO&OOvwvsK#-dkx4wI$AV^mji-`!9oEr^}zMU2TmrPbe&*` zIX+&TJw4so0SKfwZ+3UL_kVwf>q!EVAjlvDQob;#R;ypU{NYwh1EiX?V#u(}EHBR5 zs?_emX}AlJ6fA+uK|6>7n0i#5jc#-u{_*Yg)+WenEm=M9?k_VRB!J#d%)^v~JXXX8 zLBJSQ7hnAPc0at=|K%;JP0|RdCS3r9v@By}Sdb94y`9OW(()J}O@GQDKd^Ba4)=d@ zx0j4*hP*C~Cu9Q1XkZuLqfz0#T$0ZZqNBhLM&tt<2jS_3{=2;}KVXqR+sv%6D#+_9g~p7G*6FND3;UHw9u#%$P!6W27uMI7 zS;k=K!@qUGNr5q^!GGZZ$-o|iv{OmoDS&kC)sg$C+me4wNux>LfX`vDSR6}L>GUWP zEAV8AZJi)Et=806Kj-F$1WlSe^I41*J(i5j@q1h5&jWO_wzVci>ofVr#snr^qiK-N z+&ZU4r`JzS0R<8)nT6|VL`){r7&JWmjlj!94@d}FvgklU)PItbU0*}DgOM13AcZi) z9UY$wOp?MRfE*6p6Cy!?IkhMUGAxL|$Z!WFG^vxOIlEh@M-Yq}A0MBZ((4_N1qTSJ zgY@((fp-#_6hRKh6fooU^dueW3GOLL;J76Un)AEQFP+9!l6lqK(1>}YxxPMt1SWC* zk-)vn%bAI4^M9zJrY?pqNJDpIg71I|E;texn!l)2jz~!;)lfVhk4B>rRQmbDn}V;n zlr(4#93>-(1fSq>a$LDwmXpdK%FcOKZpwrtB|yoDJX7IKLR8?Nea*;45|r0z|)e+T)>88wNwOd)^bcP`t?nLp`c6S@%ZZmdJRb@ zQ0YiCnkK*0?8jn|ObU>HCK#Nl5%{HwuRkJk9vrwa3dOG}@kuJqKQWW3009F2c(!(5 zWif$n(k%b;GflS`L`hYgJ(EkOc_7H=fj|{OD1Tt$`Lh#`>&A^vnM5ol&Dp_`V+27& z0HT~ggcXQSI~Co%l%!1*qIv*ICCX$42!-m1lGW9Y37M?5PKZwO=i+<}jfmAov=ibQ z5RHa-Ej|7mNO(jeApnTpm440(0wH>3l=uj-2ZifYD$ok51&n_Y1>br8v;E&+AD%X0 Udk=)UHUIzs07*qoM6N<$f>xe{%K!iX delta 2989 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 diff --git a/public/images/emoji/apple/boom.png b/public/images/emoji/apple/boom.png index 9609153a3e4adf01951472dd575dee2440b267c0..1b983b59f21e4b479ad14486e72c7ecf544a9dd7 100644 GIT binary patch delta 2014 zcmV<42O;>?7wZp@BYy!_P)t-sM{rEyST@pDH?<@hyGbvrB^;Y59hf;L#5*X1C?E57 zQMV@?+aML#WJL3PRoq-Xts@)IBN+I2QQ#pL-6a|JepvE-R@@#G>}yNdAr{;y9N{b; zuP!3gA{fFY8TW%+&ma}xWJUOYS@3I2>L(iLU_i$!9_dy+@qa8G_IFV6VMpFoJK7~0 z*F!Pya7*z#D)@C$^CA}8YDwxI6#af#`DjY=9u)m@QT%vS{>LBsZcg)eQTNMg{P^Yh z*n#`bSN(-v`^iK5ydwEhJo+9L{Ni`-5)=LHoBZ2l|Nr*;<&5ifDD|i%|BPb){_o`; z6z?-8{l5(QUw=jEDI59Vo%-y-`qp*gG#=SD7zP`irs$$#O``oZ5-ZfAtB@z;F)-rq`? z(yndqoS?K<=koB8RY|N`000INNkl3Y`UEOBtVcKOp?qbgXLdG?*&o^q8w{r}2l|5MPU=?_VhbJ#!i-+{2Xsfl6e z*#0~AdVj__B-xzD!wz<=FHNsyhBDb_KMy-od-{nSbD5z`TWeFp&KhQ*OW!ieM`=AX zi+yx5D58uC4IdL=Hh|Kk2|u83o7tLG z2!hx+HVWC{`_~%;l2D6au`;FI06s#^P3R`sduzp%LS%X%5g<(x1WypCEt97T!!QJ) zKSZX$+@47j;lBMoPoPEL2$XJP3mk%Bc!oJOFhtVlhgKhSsi``)<6uJ%fw=_9?5ZJ@2-#D z_kh-w9Dgdh1=1NwlKohVBa0gnTop-D8_iLn_Gwhy ze!zdQehlec`{3|AEa}CPu~?_bwPHy=#7nVc^14Xwj2$A&5lNE}9dYD-AmH5LNOGg! z;X_0+*-9om*GUj~sVOyuVzIdXFGp*6hvdk&Dng;ROib$V)nvEaOiIaCvs!JoB7c#m zP;uWh9@6%Q1hU9?Iy_h*_&IAfB`FeX!}@YJ5{Y!n@hTZA9_S2_>j)SqPH0NPS?8M9 zBv{`TTk%ReUahpN@v~4Uw59t$?D7sc@XbsW0afAbED~vzcz$5>pf6VC%cQ|w|{7}E*+g{ z%0ueuQI%Vj>;Mv>?Ly-M>h?Z=b#(<)-nTfW)o)7u{`FRc6{^rGcSQujtD-j8M&tG+ z_5J1w)uv}<#_AZMV2g*Fd6Xqz1LyYk@$pe@6dGkfz=1>p8+-;N91erBx?~xJ*z8Dw ztb-~cu%2!R?L<}tNRqONZhs?PqNwoISKs!`xaPRbs~+E%1-G{b0&<{o4{5dB?n-hM zwiPT$Vpd>N)Rku$qKqvE=D;w!)#932UN)P}tKJe`OEns@pau&CIV;Kqkg^pvT??;# zGF~oE?i{w&2nK^}FbGh&koq1hR7IhXihi9o%3#}Gs+IzRW!YdFL4OrBU5X;9+X&Xe zyN2W7cs;ElFR2IkRFH+jLlj4nAg~b0WrT68cyWjmOh4b(OS$v&+zV`ueZ?sXkJf|i zBkIzwP2ZXE<#M%D>Y)b4c@7E(h)vg{hpQA7&8JyFqtv2)95}mUQFf=HUejo^yLN7A1O!`Wz^)8KPMmqom|yUiVSH!iaSeLS<$g59X3kO3(lfL^JT{We?AC(JyT7cOXRJ0vYtZ=% z1UMW#CbKt;Q_t)JL>fEF5Cj?T&e2<<)VbUA^LOqr9(_)i!heUO7;MFj5SQKYQP-eU z4R!jxL{X{xkq5rUR&*}?Pc!`38Vzex7 z1W{V2hb0OR?@s&@gnKOj3`rhNZKiyAs!+O!*l(4!w;Fyt!+A-8orqYe4jX=9My4J`}1 whMK*q+X9Qv$W&q$12;4OslPR00R5NiFTD4rs!puLr2qf`07*qoM6N<$g8i)IGynhq delta 3024 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 S+aOo~00003ev47gVoXDqx z#-nztX6G%P6M zxPs=qgG)t1sHLPOA0CB(e0_9kvyNkzkcjBJdud}}FGO}_0000cbW%=J04v-~U=bYt z2s&uo{g-<_9e>E1>22zXxtR0A{@8-C^kDq!t-s8xKz{}R00de|L_t(|Uai>Iaw0ht z2H+-kg9#2`FkU?N%vkD}b09g+`#;g1BZ=Ad#a2(N_OJ5oSN}N@DzNh3(K@~Uc023$ zIs-*Mol$4|C64Pl#!9Bs<$vQ3wK$z7lSx2n5IBzOkkwFv zdA2Om|3C=~1=xtRZlpavhZZEP-%h83O~#<>meA!7&omJ-tGAEWfUP=KJ3-Wuw^LnEvddQ}$s1vLQDb=@##?V#ab39Dp! zeo?`nWq%mFkuy`;W#%Ucg$Vgc5pzd3oPJBF_mucyh)_~zPzpwKu~BPiuoAPGVfK1@ z^Vw*&L?dPPp73*{)$8Q7KnO<*T0^7nSP7xx47s?Yp3-_YpF>vhHudrBNOm@Mkv@C|xduX#=Vn>N2?*hkT%*ATW&?t zZ)ksTyF-~3IV{F`G<$!DjB(qy{|Wnuh(=IpudlS0*HIJ_vmt}fA-WsM9lk>dB}~#8 zwAW|tzKy6VNEk|~MF|YY8y(=mZTlFhsGtK043r{P>9!U0{vO9B66lzwNkI~o+J9_m zxQTr)hKOH)5Q~5mwH;2oz4v_&f)pnHEgcS@_GZ-P_yOWn9L8aY8a2*RcRct*=<+77 z>#QmgGLz{-j1|pXmItyq+Obpd6xK) z_t>QLw}jN)X54AC)+uY09*@Umntx|LCXQ)9g~Y8x_n~R;{o@XU(0Z{v)&u+i!T-ZkU76LYeG6MvK-$Pn59 zX|SZS%yR)@7Rz0kCF1)ahG3|=)f$$RB2?!$JygVayRxnd-wPoo{~tqE-ZX4`oq~jo z=E7k+#|v6#kP80lyi9j54Un?fy}aP@FF7Pi0d>rO@#M!cUH+WT8*caIVme)~r_<@> p7k|E(Ua_pN*6YQ5u6<$t1{6gtIem{#r$qn&002ovPDHLkV1kV3$D#lL delta 2835 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 Y0AhBocy5ZG9smFU07*qoM6N<$g7utW`2YX_ delta 2389 zcmV-b399yi3f~ftBYy(`P)t-sM{rD5R$9-zb`%y#2O3`m6-X2oM;{+x3Jy;oBV`p8 zOTM#yhJ}<45JeCYNgWAR|%_5kheSz&$hmbLA6O(NYB)K1kdUX} z-_XUy!#+P@f`Wf9*Q z?#xWxyFnNogC!}9BPWS5HJRkXL?kC~CMt^}CX6O2f`8$^Ln0=H3k^#D|NipJK^z`h z+PFaR%0VkGjyXM^8Xu1#C5P6)Xd54Y1`dOvqtEZ}_1(o}A|-qyBxM;KVh0a}B`TE@ z7jr8wm=YO_TwktHQjhS@RC;{6DlUO=a<-0oQXM9&%*^9uX|fR$QZhD^|LjjdM5EEa zZ{o*XGJiFV5fxz$5@_GTQ7SEVgoe5&FQzUrh%+^V?Z-gXyjuU~PW|9cU0#ijki-ob zok>lk)Ya*#tJA>2;ONU+?9Nw^d{Y`8c@!U}=*m+@NQB3?Wm;UA86Sv1M3?*8M^aUt zK}DYU<4u~I%rG~l@5w+24Sk4#cO52~QB|rLB7dH+f1;US-Guar=4u6sHMuv&TDO_TwkKq)!+B``8hn8H8*%e zMT*Y0ROQ4-b73~>#XgycVM{sxgUl zPJfhsKT%R~s;jx?=Hxd7*opuE07P_BPE!B^7TXI8I|!|!UL^;d@c17xSSAx}`VQWV zv)X;MEbaSHllQ@UN9lkV!^*ek<o%H@#8`v?Ut)r#)^6uibBFec#)v-Rt@N5D>+sZ2!&A-|*)1e1YeAexpW>WF#Z`4`bzK zJr0huv-6v7<1HerC%!gm`kbjt7EGQzx%!uyRjb_Ry)plF=V4*i6DQ4?I&IdgM}LmQ z#pUPUyLT_=QRdyMs>jlrBKLXo-?Gww*66|2@xYi48*%&h@6X7{$jQn1a{Jz6Tg2ys zgH!VI?n%{6obYnlG`l37prYj;?N-`*8l!a06qNn8zc&as!T}9 z%*%b(0L{3w8d~q9iQ~Zh+^ns~>3@bXZ2{aPb`as7-w~L9O#ju>k(pzz7YhWHf=)r0BDy18f_Qh8=RMy z_vFd7n#WRUL(9qh{QR7plOW6x(=f5v4TD2t0EDXaNvT2CU-zoN&T4Jx@qfSX?~lbY zLE!h};H+Pdqk&2rK9Agc;roMVFe8+YSAQr8g+^cWMrOv#+JkSG{Lq8F4zw z|I*NCA8)+Z#d;w}jb}p=4S&m|0S5;3F+lqOgg_ur5EN<#^1FEBrn0!1T^Cl;-GgJ& z=yV*_1j5mo@U-`Bfg$8zQ2a)D-42=PIQUmFY|kpm%JBYcpTpXb+}Y=Q8WP=6JJ(RTN&qZ=U) z5MnPBIRwa)wWC?dQFdV{1Z`1Ip&s(^FoC`@LSOV>8W>S8l-6;hytGRu5o@JS3#lG` zGAt;(wyv%#>Ncxgppt9rekveZ3`K?4hQ+9rLQdIPjDlw(4G&^P1%!n~HF7u&d@@7R zbosCc(K09oK$xz^j(>_`acMEXO>^b&I-PSD z@th-+Q<@Yl`c4)=7z_auSj^#+i^*iNqUCfU(Nc&)iRL$S3Y5{wjp=+v(a*4C8AK4t z5Q8TIeU!IuwUeV2MNh#G%G`f#2v9VEM1LYll$__HXdX|&dsbk& zjUWfvM$AAA5}7Qns3=p3X-MI#xBB=hyk?9UO5F(QrOGOfXx=r>mmQBme~hC=iT_Clhii_=MQj)=Q`M{?jD_ zI@f}N{QNw_!`WeZ`%?nzBeeemlZD5((#&V?rSg|d?%$Qy!o@76;=A^-vy zxw*R%6MwmmjuSpw`?149S9|+4Yg`vjaag=;?%Y%^*9a}$vpE~wkbF#_*w~{-p&B}4 z`HC3}?QLhejEC;jhI_S>t*f04_Zn)il+aKhByzcqHZ!I` z1oTELGdFRk*|YVK)gpTbo4H`csS#NRdcy^A)J_>rW2{D54f!F#WwxusVjG)f6QC@& zS+Ue%imSb?i)BwfV;4Eiw1qO$$;IklK17W?M~-A9|C_u3L%T#@oAkF&00000NkvXX Hu0mjfTX<|` diff --git a/public/images/emoji/apple/botswana.png b/public/images/emoji/apple/botswana.png index a85cf2eedcd4f831350bd42177ce82950077e846..5809f516efde87b936f02dfd990422595a82ff59 100644 GIT binary patch delta 1168 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 diff --git a/public/images/emoji/apple/bottle_with_popping_cork.png b/public/images/emoji/apple/bottle_with_popping_cork.png index bcb5a57197396f65c3d3309bb4ffc967ccde723d..69348ef0e2cbf329bf4fa1e832a4817f7beeef97 100644 GIT binary patch delta 2312 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 delta 3892 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 literal 3022 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 literal 4204 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 diff --git a/public/images/emoji/apple/boxing_glove.png b/public/images/emoji/apple/boxing_glove.png index 368f46558712e403d675c40af89eac7b145deb57..2ec7a911ad77f50e8b40d86a2d3436c15d2ac567 100644 GIT binary patch delta 1939 zcmV;E2W=d3t+M9Ua5Q#J|S1$;!-!6&9}}B&Qu7oqrx5%`7c_78a8j8Ou00 z-%Cr6A0W_6OSUa8zc)9&SXq}fHnT%Tf;BbNKtF;cB;PqY#wsknCMVM{G1xUW^;TEq zKSAwAN9k5prza@$VPbM2A(|>H{$^+PY;FB=bHYbRsy8`p5fZi|B$+@#u%)Ep=H}a1 zR*{H@qg7VDxqrD}7a0F+ZRmb?cn=W%Utsl2P5o9^@r!}}cX;S(Wvw?btN;K2C3I3w zQvmKnqW=C~3N09m;CH?KNB+Z^`_<+4zG#^F^v~GFwA$*=rL3z;iB|vs1`|m{K~#8N z?bg?J8`l*EU~~*X00aq;lte{Q>`d1KPT<9nx3H;y)L}1=qLs zK0We(l=r;nJ!vjR;WB?uiDmQAXfYa%mdo)RmwuCx;ZoUr(RGIu*IgE)R~N6g(p)P3 zIl5ay>9G(7Yj+h-y`slVDqox-uG{MgR?iYF0qIGSG#oCAZ49{<_0->a%C{hHz$aWf$Xd-J+b$8i6n18@@&Y60y?`gKFcUygYEl`je4OtE; zaG>e}FlkuKbCJwTS-;hnb3AXkoCbjjrau~u9v`2dAyu1=BZUwMjtxE9%jdpcW{%-* zvZuZh9;V9C^TPR;pZf>?;kDbO6Q`_^V zdVi~HZu;ZNJ7u+-mvD<7Y>-I+3FJn1_6Zb zI&Ffep&FnnjeQlpQjdaC+82eog}D^{6(H7_lbD**Zhze0m@Pn*J1U8db`2A?sE1IM z(xe{wLUN}CL7-{1<^G=pW&V*!n5L=s$A1Lrqsa*xJ-0j6hAdPnhA7l)keba-m8~#H z>UO=GI*4gH$zKV|B@&LgA!jn~nr8QoqzOS!?RK+K=LZ!-B1x9D4wO!(Lz1*j7FJ1Q z0LOJ@sACLYIFw%&~saFH)U~tP%6fe!U}C;wK7TE?)Ph!+rplp*ncM~ z2m?fuHQtz0t^M>!X;lL%NI4u111d_W)6@Zi1V||C*ZTyrTCdp{UBW>@4EjzbO|fO$ zs9qySmgW>@N#deL5R)2WX`S3{?(gq6pVsS34D|&dau|f>Ol*FZAiy+R%KU+4K1Wqz zy-__uYGM7!`S$JG{k^kV|4MV_On*-hGRAn@IDwAq*XmVZD2l@K^oN%ODk+3k>)j7P zpc3m}(h=^{PtfG9-_>m#ts*{2GL#2=d>B;~>vA=mHe;3C-G|WaZ6*>6A&k*+Z;T*m zR!=evRlG483Uf$Od4H9yfhMiV zYEylI?g=`LQI|pA88musJ>fqabf^hD9E3>(EtpgVv|T5D+_P-<$rxtMnT91{9m2T_ zPY{%k^}A4CAfm)j3Zcyp7H4(KMbej!M^FpL84$|pR6|vAo%J>kDOM6TFrk=W z1rVYr;V=o18nU{*^|XM+V^I2H=h*>Ctw*9l2vS&42n_~`QehGss5-yhFYB}m?AmO_ z&ZFFJX4|-fAoW2(`KdKSfyAIeMd1xdl0=kJ*t@8XE@AfwaaYTkt$(52r&g==d}I)| z#cMd_D~d8l;2=CvBuVqa%I8%Ue{~t5#EY||)By#H(n3KrX}H2FC@6#&rIMubhr;&y zL7_a9RyhW7QFmrRVic_Ka%=}03K}kbI8c1#r6#^|mi@XdeL16C7q%$|rL)UWYJ)mP z$0CA5cd9=hoaN)$Y=1l-EiPeEd|b4tn-pD+$YlW#g*$VZ1PT`Wa62$Z8t#f;K5&^d zf(IeAayg%mpQovS^vfgf^egMT!=7amMOZV?z*zK9GltRJPcILEfA+-6`$I?;S+}jDkJk$J3EFNT3YWUm}?<9tIQytI&_8B5%m~m%|(sWx)1? zUp|k#DVdM|Ivm)=N>{62igS^-<{T7da9uj1<@@%exep(a?1ytM^0$-D;Nkl}o%g)w ZKhE3?{(#~}YzzPZ002ovPDHLkV1kRTn;HNB literal 3401 zcmd6p2Rj>z!^KtITZ-C65Jarln^Gf^hKh*TGn6P|g;*7r#HMOhi=w6W-g^|as;J$n zQ7&pmsY_MMzwftr&-0w~`vm7XCjpH@Fy92+q@kf$DqwkUcid6wx}!8{ zpdSqa?mlqv1p+*Ixkh2yAp$&!V#0Yc;?wtGEt;w+(&Et);1)H7PiUhADe)pj=>s3n zLRH0HJ*{eG*)>bkA${$^`|y2t*G+q?2(ZvgCD}bv=yN6cdL2z1@9hdT#c{aK7y|l4 zQPx{RY#wD0BPw)2@SZ{&Z9Cc=1o#agpdP}&U=Xm@%{5;h5)KjXH$yL4VfJxOA>txL zDTx3OaM{sj&DmiViTKywcfrwaJtewELuJz1{LvltgFyc+ob!&K*PI#Z$z9E_o^CBr z%`UiJhn`jo+PKEZu*(9oVQY~oBe@k!OjT3f@WEHX^%@C&D{Egeb#>ku8{z~2t8OlH zR+!Se8n1NjzOzQx*;s96#C@hb+6f7oKqBH)6h|?r7KDD0wM`!y8K|VVYHgk)2iXbq zPl$@j)l|0@0^>dA?-kU%vCvvWvIz`M8QWDVjy$WWa}JT2%ymDnR&=`mt-B*b@Oy-FZevh7#bOkh6>SPgc!hdMGOoULYzAek22YHb&HM6SY0JS z@r575K6Qt!&>gz@xE;cLx3=7Vz28vVVA1|Q{yl8nech{fchZ8bJ>C z$*Bi7>FKnYUmJ*QW_BDYsBN7iCHW8t)zE_NT?lYWg%oyGk~~J_b&v3=cPU;wUtj$4 zP{MOKv9Guhb#<=tquQ=VeL1L@O_{6>puNuVw zoO1-uLV)(`_P?RY2C+&cTJ35fnweUtZPb4`med#L=K=jJYn22huA~H*LaeA?yX(yu ziusjrW;PsWfGqB@? zAn$?X_r1qY;zu^>H~4wUlSFV@5z&uLf$6oAeM8>%FWZ@yzr))md&_+HZVKWnwdTy9 z<}R(S9vX4DHEhr^WK5p4&jZS%#l&`Y6-RpK>xNz^w%>3!1XD5$EBJs#( zIT@&|Gb=q(zFgQa0VX*#D9?GHr8Fht^iT@<>{4FA!qU-K>*}N2sd>;nLkDMPXTt>i z`)gQ0oPIHeVFD=^$zUS6oP>HC&jVL(*c_`3>M7~l=KC%>Gmo{LZ&k_P_R$Dbd0pdI z_u9p;?!%QIlF3-M^j#SfMM+mkS6z<1kIe#!WOMitt7iJE zp9w3&T$vWU1B^;mMiffVjVi`MuU`%xc|sH(FhY#{j)9R;#GwC!?_XS7J$O^@s7*kY z?r3i_R%UVWmANI@!gXPe8Jnk3a!T@LPV=&lnUaRgF^U8Xg2nX39@f+6Nq->lOgLiB zI$to44G#~Gy$j$w?CPXFNYatut8hy{-fd`zt+m+XvXx6H>~auE>@S=6NUC_4ob~qk z$VP*;a0)kDALDEGF8f&XZi@gG;Cl;;|4_gFf~n8M#O_F5WbA_(}cwZ8sHN9asyU7r6F_hfE6XMT_p~=C)8L-N#d_`fZ|Ik-Gji|*3iFUL?&-Ww44MKVMFBE$} z`fJaKkB^VD`)U4=&>GA@rq@OHq|(EH`X=*}##QV)L2b<87sX3?#)k*k%R5m2l5-@~qFD?d4m z3U7fMfcz8G8kXB=R@$_YJnsapmX>XfFMXNp8*IuUzFM(gPs|VRvgWp;;ToXQMlYuJ|C8b29~ z8Hm`HjRBY%{@!Q2nNrlMoVodv?g5c~d1Cja7&nWiqS&UHP4QEuqE?u*I=)U{B=K0Ae+CPFZs^ph>A!4RE>peqoL!XF5XqY~>@o^EtOQV-TTM`? zmaAx3or{!Ihuw6F-bG!jmE54ji-DROq?qhFj@*PauMpg~EoBu@fPyQ<0TI|*5! z8|P=w-Z!^AeFe(oybXj{v!9D_$WVp}&lYX!(?*z~8g#D=9u#sS{bR?*C2?oX0dJZs zKCkwv%Ue9L%s=oMr7@c=pwKp{c?q!-ZJov9bPM0w6<82IBztomvVPGMc7b(>=!v<& zR+j!Og1zzPiQxFF%HRJq0YQ4Du}D*TUp`LBzd3eI>9^HjOOW1u?0H!L;qM#dZhZ}`W1MKZ{hG1mqlp*+Y zf#z33;bNLz!q0^=L2tz_%xa@6w3CYr`wa!gNs5LIm3qL|);uK9Vl0}?Hyal_)$iRF zsjK%0beRdeAlZdah6Eca0$`W%0}^O|x}-IDReSC+@@Y;^g{q#!&B2KsYPGiAkM*^+ zbe-R~azN?=%R?>>{Hr0`Xwr;a=TC246KciUCx}eafB4_o|gztvkccPGyE(zG)g-d&%tCwUSuO5q;#vtw^qrR#ly6(Z+2Gx37}{ zX=P)68RRXk=zR6ugloXKi-qgcIz6?Y@>ebR_GfY!Yo?Enr>9ew&@bNr$Z@4#KidA@ z%+*z^+3l>-EgdTU4&>*@(}5-5%1;`9^f=k+A~Y`Mn6=Ps8CEXDeNtw?4D8 zu{eLMd-mO`CXAePom!2}4dooRDDEIMMl3gt42u zi*-$C_JUik&{^kVYWOxEljFL7%uLu}upsG2!BGpdTif$)>e@H_3G=00Fd}ze%JC>- aeDxY$bayWUiu?TM57HRIQLq}Q6Xk!Y-m|O# diff --git a/public/images/emoji/apple/boy.png b/public/images/emoji/apple/boy.png index 84267ed6c7931275796892528c8bcee9f0c1e633..fa993dcefae483d1bc509d9a40a06c5a73868f62 100644 GIT binary patch delta 2000 zcmV;>2QT=fAl(m;BYyyyP)t-sM{rE_zAf>&DDk>4^SmhW#a8mVDDb;A@3|!M!9wk` zAl;x9=&Km-v>f}#Ir+;`=c^g`z9RCsAK#)E*O(N_jT63q4(+iUuyG3i$SVEBCjQV! z{q)-Z%`*Aij`!c6`s%>{%P#rWdHvI1qh$&I&pC`y2Kw&K>3^~-?#XZY<*}Du3@;uC zQ8W*$d>z!NNpDLR6c7orkxPZC^wa@8zrRU7Zjk7P` zWi|_f;bby`On-(!Fq^&nOM>BO{ywg&D$5~RRqfwbqe<|W*le_Vue1D6Y`2Nec3T_{ z+5UY#{J9kj#&u?qr)&$b20yE7IH;=}6iDK~`qm+s9c*GZ{lQ zUuN6Wi)=jk&Kbnjp(qZ;;j27=Fek4^-#E|~B*zbY^?!n6&U0*@)q~$VIVg|}KhN=$`})m z<4*x7My*xstiiK0jQwHEYy9egb-Z4~Klh`Lo8qPgPtbd91RWyc6ohs_J(aYILD|`3Q51#%`Fc|C#J{Anj3_WJ z;iT_Opc;ROQh-2mo%#OS-LfM9QAR-_FniU9=B0B4XN*RXcOWH;%Cy}e=O6?UV>?0! zoA!DOrZ9@*LJ@`~q2$&xPD7Bo07QwEG(ej5dVd>5I0}?B0*;~Np?FP%1{vH=qC$h@ zAUc19-Y7am6Q#J|I%vX}b+l+WgP*xw$4~<-UZ)}BU@6dG63h@ArCGa4!w#BbXBgFJ-0O%EApwKh zxPM&=g@h4h1b!75(rko-IH8jcS^>ndvqnJ`kTAq`+OC4B;Ml;ZKl5VKaP6V)NjZC? zKx08iLXq()(=PBcLP$lZsf~eB37&?*17wRPqLJ8_S8RHgtI0{sY!o55jLkno+%(!2 zWT`&VQe9Ex2ogeiKI=h(tA^8dhuUh|8-KTNAw_w!QCx^Vq=^vfC>XO9*#^Rvah6jk z!zpDMwUUS0EHnp4+F4;pxs*yt5v@^jj0H<+AW8{>4rRm~6+$l^M7Y{0ywswQspfb* zHW22R&I-Xd4IFM1Lx>U8NUjHukZc-`cWX$R&89I*5>4%$)yK*(Vp^DHV?bgIFMm9t zM;$chvN0B-X45D_af57QozwmfMveNJH`l9Cwj>KF9=-ZqT9qYfj#6-h zLMHe5?PGkt-_QH~V@;_XUvAgi{eJq$E-DIJh?MKq44v5$sxS>e1S?W`aXTl;^$yZu z$2v&wKTdg)-$B|JSJhTzbXdLx4x$lNjg$z5;+pJFr+t2g`KN2HyT)F#^MC!L_`vZ? zl3z4J9HA&$dPp-Sjj|9Gc>;57PG?!XmMs+Rs}mr2;Cw5Rs|pd4$`Hodiip+-38JaK z79DhxNfx$HnD0-1d~+<4y@@Pj6s&%m`5S~_uL>bHPLg)P@p4V_(p^mO*+OeJHzl`8 zAt^vY0Yvn|L36^nY+7iW9Di=7^XYy%?o^%>F*-=aTPPLBZ&R~Rk}Yc?&h^4yj#>z5 z8YS)dueM2kJ8v%hRb7+hfCa^|gASMTrV+0a#*5lMM-UR63>*|J`2!Ti**5<;LSNZ- zdx+7=D(tN;lH%GNFLJyss@R=T#VPDt~vk$3-5eAc1&* z1638{9fA7ecn zvMy=3uIhC}5pCaZB|=QQ*D>r+m&szWFzqIVk5a@r$nd>%kazr@CYHm|@TH&G0wAJ4 zL!sOlDb-N`(TDIg%YR2N&lxJ||HyijN@g|?Lq9tVAiK@aS+oxTgj%T#8J-$ec2L+t z#BTF*0x4`s^iy+@)--IHuAuJLc*?9y)bGyOz*q5cb zU}TuuzC1L4`CTR)pspr$|C9?}rLG`Nbocsr&KxDp+L|t>M}OvYfqJ^e`aAt}F%guY zCQGH{29#%Ryw?}LslS)FtI7R=lk&?EUQPH|Nu5KzGXUTR64vDUOUnq@5*dHbgG2C- zqCZLVzJwTVFey!JviBbq_bS}x`j*VMmQ izy8;6G7LcZAMzhbRD~+8-maJc0000Fr=C?}ew@mWUa^kQ;^vql4v_#jW zJ>INA>9Q_t9eV$W->qSl_Ne^T<}?vO?CQJmRrJ z>bgedv_$X1Q0BT$>99$1Bo;vQnNz$*nm zyh!rGOZd`b5f2LQze(4nJ^1a=_|jhb^WOI9#@VPo)uTMOgD>~bR`}3d`p{LohcWrf zQSre`&YL;Pmp9s}KlH~?zKb%Zawwv0Cicow`_5DK->2)iMVDhDwN3Tcg8TL1w16(hl{fhA)$`!3;IT;K zx>oe!v-j)E^2Jb`Xe6z8E2(uU@YILv%z5hRrbqR_|k?Y#Nz z!9+F~!j(Pe(xCtQ-lv5$_216ijQn9&Ztz;u3fN|U#^Bc|NrYsJSNV;qm_O?`)n8-0000+bW%=J05pV5 z{SzPv1Sq8bK@I)(h3e)?U0;scbK}A1l~}uF{+IZ-+RmN)`t4N3a9{Yj^s4vS^Klu> zX}GSwrMlze{rbSa*u?g_mNWnW42?-dK~z}7l$LpL6W1BQA(#L)Fp#7CJbQ+ z12liMP12cGhb397YZtHVRU}!`3R}WNhb^yUT_#chV+nCc1&nNCFvd0p+Z+Y~j-lKp zn5&QyZiXAe6(C95@2%{}G?1jf-O+gVz5VU?zW2TN+^5frc)8!SQB#ICEZ%)+_UY57 z4((n%^{v1`nT9cae|}UGNA5cF>55N(^)=tG-Zhrah>&!~B=bLLc3R4iS(^g3L#dvO|`Ra7L6o8e0p zOHZvH_9D@+d95J1-r3o?5Lm;q7IEkh+^0@;cFvx?G|BbroeS5dO?;>g$)Y)EE9Fq=^R_7qG2$9UUj)alc$H=h`_OF^9wBAr+4Wyt4b1RY_`a*2Liz zY@L@EGMg<_HZGL#LB@)3kIQH>WvenVOlh1jpw~t}o(xiYOc{*$JS66fsVS9_aZAvM zz_isLbZshgS%Vrp?)O7sNE9BgGFwBd3>b!e@^-HRcr6{tu}mTs(9(1^rY$Q^M3gF8 z6BqKig?U+g5p8ysIUJi@W{OaeB@NVWiaM zp7K~it+kry@Tn*`73mfJc2;P$s`DPmk%qY2c(h-!J|;%4C&hw#WM8~v*nZD4NQqXqas?Z)mv#`W+>Q*k{btCPEh68?W~H6 zMwuZILQH}gkw9Bit5#cylxV;RsYUIyH92Y8BoGN?#l^CC+zoHC8ga6mQB?l)kSb(! z7Z(d~95+QO+ro)wL<2_<)W1Acfk2(&X>~_evyQHek zESe5WL?5kk62DD}-u&3p6t!eZ$r+khLbI+E<_An%4hs?`_YaOer>Lli%grbiQKSOT zh7GB_T3zyLO7!acwrh@vQc6$96;MJ&rSVXxBfd9_owKBfHSP6>mbEO3e_on_<}DkR zNTNFNO0N^C-}~Wf9xEly29Zc6DT%dob+xp_f_srDd43=fH{t5KbSdEp2TNrl1%pKD z>hf1!>N&Uvjrs6nZ<9xjL9%g$%;b4+=hE$qx4*m7Whv?<;`u#Y55Bs1``af^ZrEfJ z1*1VCpH1ujsQVJe&;{?Zta_! zd+h1L@4~nUH^Ii{^o2``|1pLw$sxlOb6w8>2o)nU+#%gz6_(9yQ;8 zboq9EZu9+Ht-)@QSS+tU`oqqGn?_VkUQ07Ma2wU@wWypf5%We-wl&hn4{PD0i2P$;U#dOjMimK@FLt*c1`&GRyyxup+ATNm=`^ABRE05u zcqjR9(g;jX#eA?9L8Q7<3qw1en-AC7FCW*Q_M?hKbFXVZdNFq=JfC~}FX!58ua;{V znov8cqa_$IBDwxw$F%0MN^jIvLKuyW?Mu$@Yu<5e=do`Wg|9EUkY`7w4Mm;Te&z1Y z9mkG0?_2)mz1mqTLZ<0-rqkxNna#xSyUQ_C?JV=bLX8kK6JOlEyw~^6Irkn5-gsIjW_u zCoWt}XM7Y3KxXpY<=2~EY<@5@aTd~0F!=EEr*=>R;>61bBOmVGyEf5o2jO<8EDB_X z(tTli=Ym9*H~5n2n~^i%)GF3~o7Dz#4WbP?LRg9SBcIysR^SAmn(=oixN8c}`T7P2 z6Mk9$>(cIR?713=4E9Ku+;D42%|Hs?aV#oYTb|r%IWO7)wBRP#;B1yQH$w}_Okdcf zThu8v?c0AeJ(vg}HdF+%Yep0dlDp15y#oc{QUTMT0BWC zCDe*&zf`wuE4eQLsijECzJPSx+S(OKC*1Y|4596im2`+W2rZWDMOC`HNAOb+A&ZNH zUuj5A28AH4VW%zfA$X|C`}f8b+w zwK9~4GF7kC&sGUS3bLq6+oopqL}&oy@<=62J!ROaT{y09?Dq2w}qxI*{_nJgY#uwOGhlHg@CA zmB-d>%!czL=qn?8XpY%#SZfrq$td|#w9K%I=mIIQShPS%!UN>Akcj&R_&;=pwPz!S zy(YTX!$B|?T_Ft$7er8JNX2v{KUcYBedC&nI*Ow?1liuL0v0Z()1@j9h&)nC;&zm- zckr{Pw$jUiNijU@Rzy)%MG^8DgE%P_pc>Y*tl#%eSIHn5A%+1kmgjkRgGF_w8g=D= zH`6L9)76>0UIyWkDGHiJj&7{lURv_^WzZY9)|r@rfdMb?MN-uflp9L^tNIDxp?s#(1W%{{0000#M%>v&YPF zi+3|WdMiGUHBR@k$o8VVWg05?uf}K_E%&Fu_^ZPEx6S5;qUnXByI6I%Rc+;oq|9rF zsYqh4O=z4xSBf!5lr>O-B|vi;G@?LVZ!I)T6C7a>CO8ihT7MxY_o~DFwaoLLxc#rl z{=3okk+1%##O{->>V~8Kz}5cD-u}kg{iDC{im3aSwf>#E;CYz;(&OcSo!WSm|J&)& za*O}v@Xu+7+H#S~WrD$7dDd-=yjXL!Q*Op#eauVXvj6}99CT7nQvfY}wvrj=4lHC) zW!J?=$mxScuYa7+-g2S3mdRS?AzuIh2dYU#K~#8N?32lk8%GdC4IjApFa*IF9i%VF zt@i4joK3d>|BoEiEeR4lvSptYBoM_cT^}DGubGxvti?6keScN^^8+bK=%Oem5}nYE_HuhI zk4=*bqkneAY}Z`U{dY+FOZ7DbKu9`~nSt5*BX7>1OVP04p03bzyKN4{)yfLW*1EU*T-s&19Nx%fga%h9%lCSW4__D%om5OFO|RHBOK83;rP;>}QjirF??i|Sb)_Mei) zIe71!_kM^yK<3#@LuHUm$W{&;#0><~1b>9I%p$6C_%zTw%P>S&Ywbq_H1=qzUDcH* z#4MFjhBg`n)ItD_yD>=E*8STu2G_f#>xb&bL79~Rlh}?t%t1r~DQgomymqa&%wX3! z3Jv%B74#HC7sfxM>xXU}+NLUCvh?e*RtZb2UN;m9E{b}OvPi@YYVO!Tzb-Mx@qg(h zI*0ea_Z}c3iZ2cz1=7oH6e02iXy3=hd8pmg_&g3c_wT{ke^}zYemdvokJyyQ*UR#I z2h;ZKiri~J$Stp39WZAju@14rkKu%Df3;(FJBk}Y6gFTh(Et+SB0Ev~&-M(9G?6o0 zq@iUCwfpz|-zcZrNRg7=WHZTS&VPkz+wHGTRds{RlfMHp4EmzAMuOKHIB>4L8QuWJ zwCiBwG@5Ce<`7l5LD$<2D1;#rW_&_s-i~nd{;ny*NKZp=x2tudeuEHWOr7j`^geQ> zG;yw|15k*g#{s85G}Su!$&8mpqqmgAb$A~Jn`X0IoT8M>;za9rJq-nlG-ZJ)cWuks!?4((?iP(UCKS$$)T9tllAoGt)iWtl;!G$Q z<6LxIx?CUWlp2Epp^ZKFc7`mEa4|<0$cznU3eQ;DwUV4O##ygq+keWg^WcyP^aulB zCS^y$?h64%=&agOG3X72o*gEhfJBQL_q}RQy&1^>3bOF@C6wB6KQ8rglFc-HA2cG2X3p8Vr;1cF z##Gkm%VsDC7;S&zXuIX6>f=~^shrb))4&a=xdFQC;P6;jBm?M}V5VL}|s z`j~U%jJr`20Z$kRh!DfHjEoKQ99+)+`|3dw@FZo6j^V0vJ|)U0dme*eh*}pl+x<={bWO(WJV&2{G4#;#Jm!X8rln?MDiK8 z5e(&v&IX?_^z5nngPP->^F*c)2%lvEGQpz95lgjIEI~0w9~sYZ>0^p~4?};{8dWC} zP)rsdN^tNJEq}EW`U-Ol!4gv}W+<{=t*bw)*$Kf)NKZrndY*8gFO}2l>npJ&ZSl6n z4U&*B^aa(JRzfBo7blDf)d6xozmU#nf>D}%Pxsn=Q+-Lzo+8o|;Ajsj*%F2*lFV`; zU(T=wl%#vRue}1Sc5N%Af{4))<@4u-!&1IOE;9A<3V)pryG;#0Un6Z0tf-^900Ry{ zvInQgW%z1gYt#JY8`pQ+&7teM!{KlS1}gPw(LMTwnC^F*Beg-u`fuOZR>$LUwQ9C! z;w+g-k+Lm@${ObkdaAxv>s_(5RLI)}15VDgP}kMBtJ&6dy`d5*<{fRB!toGo`G2Z< zNzG@15M3rhY4w43_6>@yXzvt8BJp+g0X6mEg_e9FEWbJ6d`QR5;e}X5Qtr1O|4ZUn y1Jz2>ZrfD}SJi(Y?1~TSfBgogu2pZ~X{?0+0000%YzHw#VqIzH>N2W-&GEwa4zf z&FZJUT^uS(C@N+iFz>p|>AK17w#n_S!R)oj>!rKkn6B=<&+M_p?XJRB9VcTiGD{{X zVlp@A%F#a@9-wJ>ynm1HvBj28VD7NR%7U0xkthoAc2>&<(V^~&1%*bAF^Y6rdMu) zHA-zXIl5_qd@e)cl&igNe$soDu3vXl7$o17tgm8lbSXVG6BW*Zn7wF$zjA|DCMvmM zd&zu~>$AmM7bv7$XOc}+V=gi2rMv5`!Qh**d_F{gLP@M%XSir`pHp1Eafq^Lc5*sD zr(kWRS73%iNV8*Y{Ot7Orn;I{VUkc=jY&`_4Gv!%Ey8+`B<}@A00014bW%=J03HSW zGB5rC4iNqS8Dsxp{wDmX;*R#$ZdSa2>Q_JW=0e1!cnJO<{NKmxQzm~9r*O^nN z_kL)~k>uj&OZMEzprH77ec;TV$9UV))6}^4h@8oh$;WN=;Q#;(FG)l}R9M60m0M66 zX%@$+l%tz6S`~fB{qnN4lSy7Oo0+Y7*{ZqE<38-Ixphkbm5a?qr0FK0K!6S=pb-R_ z#sRzpMNAVwz{VP|02NclN~mP1DXrR=2ldIf_%hj#WOr+JcV>5X_hqa0Jbc~#(e>kh z{^y*pS*-v2XlnXj1O3-=wBc0Csq^R0H#9UH{f{9HEtlIbovnED7cN}5c;VvdmXe-Z+uP6Xsw5I~>t4}lW8%nlU0YjpxAns5mLDta=<$Y=*F1%SDoRoe4T2$T zc;%3cON9)XKiq3R{lW1cp{3!>#}_a9tf*?IR*~X3!{7`}kfnptUJ;>%jLM8ibEbo6F6E z7!&H-vSTk_jwy>pb^UoP2S`dnt2_Dq1#kDHyQlX_LhV%2ty>3&Y5)QW&5s$)&KwYw zHJXVm*aMMO<3gvBI&tiKK*z5YsuLZDUlKO8Q?0hWIuJRXPNmYB%Q-Q|nHw9+5*V&j z+i0QM=~Q=8U=`t~|FI2@oxV+(2lfe?0al9C!qSdYtrQX>XVytzHfJ`QwMhX-Da0h5 zpa69yc({G3;qN#{E<+gJs;3BC6^}~^;ZBWKD+wbba;imIsSOZp6h_-@A|YNtRmIjA zA{2>4HY9rD)Zd&6$9_|FsIZ#(I)hiHVmg|s?1@A|9ZZ9li6TaTl_p6b#YS|Z{o`|% zr!kBMPo%jMIr$w@(`EMbG!#u>IHiqE$0-`mBQ_xeVT4df;PHAxq;s}2~AL2y9gNWoxIqXC?fq9`KO;&^<=SP#`Mg5#7< zg;4c527-+$8Qw`#aS1Fr^JkkHK1_rP5?4?LLGnlp)=|1BY}CSD6ayr!xek(&c@*4h zF^mGM7C{)sSd3CMqculi$)z`vny%_Ij&j+NEX(C~lUIW2uqcTj@dOG364u;`NRi^6 znFRM3i~%1J1RPD2)VwQYDBZ3j4prWC)7u|qGA@@ZonW)e9*ZjgV*!-JNK{{dU<`v2 zl^wFUn=g_iERlc>1km>O&BfyWzLe6zda=Wscyl^k`E08ei#etvU0iNb?2<`f2qj5L z^Qs+^NF?^~zIWH_Kvk+h08#~jBap06t$BAVTbUvTH*4m+D5w4PIsX1Zsaj2}+?Y#t zaSURP9FoZL0Wx0M^2h=KnH|l0YtQxhxC%r(9*q{*j+z%)V=}o+27ZY* zuTEK9a(UTvwO;(+Zq2Q(hSQqWY9bZxPIAlgf*nO&ThBt=D0p8cFSBD?dPl_@b0mQD z#oiE`%jL4m5DdeR%M{|U+1!u88Fyvl`D$h^l{BRFp@?`nW7^?D%jE)> z<4N)+r&m@M7sqeT3TC>woGuU?HfR?}&M{fJY;M;FO{_0A4puU&`b1T)p9@(8VuuTm z>@Jt*U|_Wx^Lo9GRK&D)e`K^zFflRN=f4}NgVq zgTzaQ;CekpD{nj!iTFNey|d{T^bS0j?Oxp45>N9K%VJGtMZDPEuXr)iabtOHl<(Gf zdSo(Lna$zUO$Od}c~ZRPP%^j zLnz!Y=;&MPw}ee5pQ(FEY_a_QXRNmxM>mJp9`*5u@A@10ef)cagB_+Iw+wX1$_t#j z6j1G8FqwKVtZ?^FjZaPS`UF!Z-_+#x61Zr1OXBIJUmRf_d2eP$p}588^Besm51(uf z4o>($i@a{$au>MatVgV%z=o%z3b%VwuqIgZ^Pd`GE>Cyknph7&cf{g4i1m|qhZVPm zhek(78;3UU|KVG=&$U3d#}ISd$)4a>43b61aQa0>y*|*rN}H zw>SCS;gH^th*bxc!ePtQ@-pwv`>(%_@7?0xnz=vtr)tb5v~4pEvY{lmu^kF!}c5m0=+*y@2mF}|L5=Zh#tN!L_^?ne79{c+P>X( zZtfsHHu+=nk>kK+b2^<5oxAtt)E;58*__+o5L%filfvOa{GE$m8}ubgaUT9$<@s|r zf<&Up9|#0>%PfskC{s*+zq`Bpa5Gd6g$N>Pv+c?DGC`CH+kFCw?2voHVf^lIWfyc^ zT;1J84ZO(WZdrB*&)fT@)ly>vm?Tx z@2lsfE^NGhN0P$cx>sf$G^J;Jk)M)N0{{_qk(xb1l97mAKuDL%Wsf7^2GIc5AplO? zhkfvSKDefX?!EVQi4WtxqJUuKwob(_TWZ59~ z{)<)8%<6{}gUQna>|ilGo6S}#7^?UyS&S3&yqcEKTrP!SxGdu+!vdEyj^We>{MW*5 zMR|670Se8FU}uRQh04;E9K|W=qblzWi+YY?QYqBqudpomu70;?<&xwyb4OIr94-g5 zK@`P+AIi^QIm$13`SWTflc^r5b+4qjl~UTxU_d$1yK!lCdmFsd4_=8eOa;sg%b^^n zg!!XHBGWo46bdJ;YW1A2t7_Wg_H!Jnls1+xEs~dSmGU0NKYfN_C{C|P`LtS1Bn-2r zLic!lT5BJ7PO6ziRpm?haJZy?@v;a2t=CK5ut$<4QOcLn{FKsIYMqz{-SKHG@ZdpU zzt$TSG6~?(y1ur!{IY1NgVwBky`D~|>%0oq1z;LWhSqGM`}BeXNX=MnI4QI;iTN4$ z?-D9(TsK=)tJ!QeWD<=tz{vp6VAAdf9syl|YPHA1k$wGmD0$#@Sh8 zy3VE!Fw~s-2{fDgv0A&=>)pKfszLJY&py8(8D>uk-EqGe2mm|#K(W}9$Gzisb+4XD zmyMPM%fcU^<}=REQ{8~C8u)b;L(_l1i*ZTebbe%7> z@;WUA*fLufjGm6$r|ouoIPCR?H?Oilf7aaEtZC4h90N@zqtVAk-RpJ};5m!gR2X!+ z-A?DD#hEwhZs?%Z#fAC#`A>{*gn9l;hT*ra>HdY*&3~r*^MBN@4+QDl3!n?G00000 LNkvXXu0mjf5nL+` diff --git a/public/images/emoji/apple/brazil.png b/public/images/emoji/apple/brazil.png index 318debd5bfd56b464afcaf10de8c08e1cb6f4239..f605982a9a30a5fc38e2d405b31ca9754cb9bcbc 100644 GIT binary patch delta 1370 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 X!sQd4(kdL|00000NkvXXu0mjf_&7F5 diff --git a/public/images/emoji/apple/bread.png b/public/images/emoji/apple/bread.png index 8ffe0f5cef4a6b1bedd4119ce797d5b220c60264..341df20a6f398f05cb71a5e4f7b1fd0346276b16 100644 GIT binary patch delta 1683 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 diff --git a/public/images/emoji/apple/breast_feeding.png b/public/images/emoji/apple/breast_feeding.png index 68a1acaa1d1d4327d57e7817f522c13ebad7264c..b902c1e69f55db2c0a7a685c67e854ef4bce30ed 100644 GIT binary patch delta 2709 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 P00000NkvXXu0mjfyGT5# delta 3476 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 literal 3763 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 JN(X;y!2Zl2ouHL7=46R1{EV=Fet9%N|QhJHRK5 za6Ulb^MyhNAtb2X!w4a!HX2dyF_Pf)ex4%9klY5PN|I72(s!Um4?TJ$i>HUIX`l#h z86J;72M2>00SSi&hX7qOR-BShpu~&}IJ4B$)O$g&wh#Sbi5S9xK!GEsRMF59<3=M5 z@&S%e2thJWNf04135k--nEUzSyFWY z&M65MQDPFH5I5)nfH34TDj%KS*s!hNR7+Q2IkVRA{BNv(F&-78Rul6qA;c zlBr}0Wa*coLlNR2e031SQ4o@caOnf+-~)K>r#Oh#pW+!a9PT~$+@CKBL1Z)Ut0I1^)C^Zm;kiYK} z5ef80WP)g4`fO*{ij~O4)UzzgaX6-Ok%z`m&Y0eE zfDo(Ipac!e#)s+UI}z0k2G`dRLHI(kvUC{}Ig-epabnq_&Af+&{#tvXwXQFyYn$mc z=crWgtRNP01QnFGtPlYXpM4=TSrSo^Lhxj9{k64~*Qz{lc_7vx6R@6rO2>4B1<gEejbLt?N-g`7mwP&2?%v0ob2o4in)d`EoyG@Q zan{oEyFYumQ&{pr>2VP)IkT~6auc6;Fsny5&0-;&_!Xpf`Reu&Wef*7-*OIEw)eH=$UF&A46MN0nh&s3&RFLy7_udf`lq{@36{dP+g6jf_zZ7G}B6q#fy dl}h|SUH}If#j<57vl0LR002ovPDHLkV1m)Jm~;RD diff --git a/public/images/emoji/apple/bride_with_veil.png b/public/images/emoji/apple/bride_with_veil.png index 0378bfce33d4ded9dae55ad4dea3dc5457679345..4440d4dc50a47b56410cb7c813e46a098d0932b9 100644 GIT binary patch delta 2748 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 diff --git a/public/images/emoji/apple/briefcase.png b/public/images/emoji/apple/briefcase.png index 2c41af6b6a4a070aeaabf9ff4b9e1f659f569b3b..147f564956cdf09a9ae5294a68c435236c1691fc 100644 GIT binary patch delta 1602 zcmV-I2EF;(9MTMsBYyy&P)t-sM{rDFLNcj}bT%X#P&O%vWl>u`FfJPvQaLS9HYY6} z7DO;6nRj55aaxIGPp5}%#jKiXNjRi|XS|+-Xh$~IzOBWnl*_T8@$&P*!NK3ix8B^_ zp`f3Ccy&N29>Ac8Y)d*hBpSGwd{H(jMlB+rePyqXbBbwHF@GHtRy!@XwX}m_O>s~@ zeOpIMGA3O=F=InClyh9Dhi%fUj&@c<8`zG|0000KbW%=J0QE@KDVOAk3PP@Qk8-Q& zoxaY-{j!-p000F}Nkl$)OFQ+Z(br}d|%bIN{-^>mSB8{GuP6S zK<1@hsAp8K7<0ugMgU1L$h$`4!x!R}<%OT%H`4Fm| zjb7PZQK)b{#_>10>9)mf7={D52@C94OMB~V!@Y6vu+4BqYvJ$z*(T|PLv!b!pMs+N zA%t9m^M96j=DZ`pg-@6U)Dqofo>}HyxN_3+@ydQ!nkryc7_5?p1O5fC*4wF^hG?g} zUHHvh@KactD%rnqeiz)8KGBU|nwD%wsZ>>xI~tEj&~l40Of>)s0Ujw##durH5~rx4 zRZul?AxKrXodjKSj#I6J>Mc&?`1@?m5hW;V>3>CTFtjW^d$Y(q5ib;!Gv=w%#hq5k zBIa+z%gLNDA!6pik$Nz$m42roTahZ_XyRQfNrP0vBMwp&^hFwHqM+2$cTg5=188~d zz(a)C1cjM{X=rD7@b~|0ee;KwwAnrNk%AqG z`r#o|5;%h-)5qz;^A&$K0R8pv^V!F!+oBf@dCx1?fc&b{kgRP3ECI1bXwPn zv98pkcP=XVf@o{szd2Oe7zMh`?Xa7Mu~Ar)=VRHrpTm7Y%*x{Y(x92!kUU(o2HMaif$rfpBrBjIg` z(1-ij8>z4kB~U%E3`)J6l0YiPkbf3s(IeDD66%p$ZTo^F(|5!eA)KmKND~?+aV7JF zke;Cglcf;6i?F~IIJ!5ARb1I$I56rYqI8Jn1t?&sYv+|okqMz&cd3dh3By9*RL00~ z750&KN7rI@rHR(j93BffeB~XU3RDCRw2gY)hD$H>; z9ETKhLe4k@DJlO+MU6cVobc3e3<@ft7ZVbj#lF(#uYASH$|;@H+~*bb0?jxm?Wo57y)i9pebw^Z)<=07*qoM6N<$f|>yp Ang9R* literal 3674 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 delta 719 zcmV;=0xQruhYKZfR)cC{5B z6ADN`Hq@qS@;K*`hHdiv)_TV9MVRs%fGEngN_3hNQGZ3tGj)o9g|+LV2+K-vZ9{NH zJHjSlZD?J3CQjs$imu_gB&p~kQc}YeT}A$q`Z->Ww;rR35d$CI%@>Fn8?w37bt%p|*H ztevM8)!KA!f~PnKq41>UWQTtB9EF0znnA5CABCFiOOp?Y+sScGO=G8$0sq2dCvIo; zoX!XToQtL!Yn*dao)7mP*iUsnpH?(U{qE$?=t#3>=Q*!xb}_~vq8Pm!G(8s02danj zjC(vtb1>CeRlTl!tf{Io|6I|CYD4osxw*Ny`2*5tisZEJarOWJ002ovPDHLkV1f{l BXPy86 diff --git a/public/images/emoji/apple/british_indian_ocean_territory.png b/public/images/emoji/apple/british_indian_ocean_territory.png index 0af6235ba516d1e57b770bcfd7880ebffdf46001..ac7b74d3f1066eb5913f8de07f8c03ac576f2190 100644 GIT binary patch delta 2800 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 delta 3487 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 N002ovPDHLkV1jTS&lCUv diff --git a/public/images/emoji/apple/british_virgin_islands.png b/public/images/emoji/apple/british_virgin_islands.png index 1d244c30e4fe53228678bc3b838fc46e67432075..710f21c3600552b49a47eb5d19cef99beebf4048 100644 GIT binary patch delta 1887 zcmV-l2cY==6zvX>BYy#pP)t-sM{rD1PHhttM-vh}0|GZyS9=Q!H!~_q6&6m~R#FNI zI1CLrRaJ#!V~-3BH)3OpZC!<5Ux$cnhQeiH3kx@YY>9Gji3kZZ5fws^2?w~y%7KBO zU0j7eMrgO6qyPagmsVGuH8h!^sKB71S5||9016}}dmQp8^6l zBrrt$BqJ9WZGn%yhh;vqlnYl$Z{v=NaBga%o~3^7L048)&PE!CB{y458T?wN8?cM(VgwHnTSN6+#uA8u}tNM|um7t)d zu;SCL4LeqE000GNNklW*e&5-hqu>6UdB{T^q8d{UGp4#1F*ZN{Wa-7zxyLipLLNV! zd$IIHsrq-ulUGmxnV!aRd_xS5Pfr7FehA!BQ3Z_U7OfPTCGkKCuZDiHfvC$|9?2xbzydnYqeTf+X~d*htTpu<^A%j zrSW;NK9y>0ObLWn@8;k(@KnI5TPH}`Z`L3PY7`s@LC4VIu#7)#|<8*UZ>MLPL4A~Oz#L}=nwlRsZJ3^H4qY)?HUceWFwY?ayn|dXcB=H zT7aUNy=?S|A)1L)w!}E{6~vHbBt832%0A7x^(XnqSAM?xwZp%IGX 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 diff --git a/public/images/emoji/apple/broccoli.png b/public/images/emoji/apple/broccoli.png index 9beae79e2dea21e6d1a061e7c7d5ec0474b7ff56..d3b947611c8f5a10f9da5f1c9759372bb5f16b82 100644 GIT binary patch delta 2701 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 Ef|dK)F#rGn literal 2196 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 Rg17(x002ovPDHLkV1m?kM3w*m diff --git a/public/images/emoji/apple/brown_heart.png b/public/images/emoji/apple/brown_heart.png index 106a132ff06b1ecc74af406bccc7dd6b3682de25..a3b6586afbb349fe21eed5cfccea779feb5700b2 100644 GIT binary patch literal 3257 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 diff --git a/public/images/emoji/apple/brown_square.png b/public/images/emoji/apple/brown_square.png index 9c27be182bbc99157f1ce6466ec7eb52101011e7..cdb43b6528a5adf4770f91f3bea62d0b897edd20 100644 GIT binary patch delta 1347 zcmV-J1-$y#0?G=I7=H)@0001DGedO%00HArOjJd6KOJ>H9d$t*s#O4WK^=KV9(F<> zcSjy}LLYlXA$30;c0eC?LLPiXA%Rgbj9^2QYfz43Mu}WLd`TvQQ!|idNQPKBg;h3q zL?C`mE0JeQdPgIcZBl+rDSk^Sc}63CO)QmdQjum$fln`YM1LQKS2=-DFOX$Pflw}m zRyTuFG<-=Xfln@gPcM^dPIW*Wid;T;L?3rTAB9#pj$%fDP%n2xAb3O}dPgLOSv!GJ zGLmOXeoifXN-2$DMR!9Vhgm#|UO<6RFn2>BgH<(^Yf+3~LUutNf>AMvTt9U{9)nah zlx$FdP%evKLVt)`J&|TgnsHc zK^}HM9dkVybUz%Rd}EewQ=@=qop)cNe`uL;SCeT@pMQE{qJCzfePx+)SGSyrrGsmA zKOJ*E8kKBPs)=);dt;k*Ty#Dgs)}@UKO35KS)6uUr-g2qa8{UbRH}+~rh{#sd0(1y zS)+hynQ>U7fM|0)8k==mrGjglbz72XO_FF#pnPPWd0?D%T%&+$qJC$fdt$SfgKP=L z3;+NC4u5n~PE*?6^aI^x)@9LV-PY1&=+m|@0009BNklR`C$It1?IZ}!~s0qIlV_O75!vqQ8uV2>Z?_7{|v_bo*foIvraX$QG>})$5yvBHGkn!PGa3Xxsh* z)7~ngO8HIUiY(C{@%Ox3k)n9iswucN*A*>=&16elIkraP*B00d-oXSOUI)#_^t@GS(GhFIor3QFc@?FFYVB zp3QSbL0V>(62>_WR zOSR(5^@<&p&>-=C`5*4=^n5?iLWgGW<9`Q*-`j$Uz2-p+vDwQtkWTX;3Y8#hc*i$@ zyp}hwGiHP~_2h}HFmM$hN`qi-tU-Na35}A8@7$Vbh@K@!mQZVV5u07h2yNZ|=C8bk z2Yq*Ie)Q13il$_jrO0i&tbep0cjwjE%)8^g5@Jr(6=X8fA&LhEsFkUuOR5etLVv?@ z3dp5IlqNkyF4R0hDi19oI&px!Bce3vA@UK;gleH8Yt+tTQ){rI7P{%60AqpzL@~mM z5QHEh$_pG2f+-Fvgig^E1{I13u3$I@4{+zJ9W&QK7>2ml^&n8AR1Q**c+g_F`CD_Uc0~9Re7d7zpZV;Bg^i2Q2?)7%EoTh>4IsK+GV1L#>45w1WKR;N}z2V&?45;*lKc!^jH_?`Eb9Se*g_QqP~IjEad)7y000$GOjJc_HVIWK2egA=ctskfbx?;@Eth3K z5#_X10002}Nkl5|6921yZfAKBm`msnqh)sYo_s9j%ng z1TLV!Va+L&c2LS!B*_B2c!c+omEtjeN#na{iR9^L>H^T*w17!XLsM4^r5%*4BO=ye zP9@{4wZ;PYd_fyHnN7(U<9KtZ7&SE}l&rzHVJ&{VQ2GOlSeq$rc@OE9Zt0e8>6Z3f alfD3&3fpm8>m&mJ00004( diff --git a/public/images/emoji/apple/brunei.png b/public/images/emoji/apple/brunei.png index c771504c72061ec535568fae1efc96219f61ad16..a427d05833a0fcd64960a75a10296a61d1607bb2 100644 GIT binary patch delta 2028 zcmV>X zH|o|duALKma1a6m5!K0RrIsMy&{NOBQTypDrlh07!^F?MChOZt(!Ln>-y{G40n4MH zt8O=mi-y?49q!+2;n|m9Ut3yK7PXR=k5y8*86@uK)PI6=ahn7mw~ja0)3?R9N$}l3 z^6IAj`Oov;H^_`Uu2)}PdRYVj001F$QchC-y000H=NklP9I1SAYSAw8Gm=QTBS#++_GBzre|H~SJO*wUeS;c zGSprMY@=g*f_(iN2p|VRM+gE*Ym{#FKqEF2jEmMcJ~cH3-xJ+Ypa(JlL7zaokrY)@ zLi(UTY>h2H%*$qt4O#~>0s#;Zg91_yq#cCbY`pZuwXi)a8wVsBorlQf;PeJTQKw8M zZGS^MM>0ONdAGI|kM9_dq%zs;?5xuXP{*0G_d~M)akFU$AXV#b*&mM=0h0AO@^5o< zV9Y`KXVVTg3fEOF)!njHS}X>k5kSa6klmkjKqrJf2C73;tyZgkvb^eW1|e>g-QB?Y zJW1c$Q6FUSAnn7DN~Ka8S}h#E`uzFx$$#)D|3JZR9b#lCFjmP7I z&}(lO>NpZk0_!|??X3f;z!Bt9Kvx_$z%Knj@uBB04pjyYGC(6-&p}9n4&Gd*T7S*e zYMFh2z>(m%UJtuO4|ywI2LDV0i<%1zD!%*KUU!9r>^JR5k% zt3@pj(wR@adWjw?aSjBa@P3W1lo+N`p)QiBkUC$$5oBN?_Q0I1E%ZWrdpceEFpR@4 zJB0u`FWg*S(%&!6&%>7eOSMapD}Q`fSh|hSUe&m2e})eMW=%$zi;oaQKRcZ#kWuK{qX~y7!Sa8(n2M{M|Ab(~vStyuw z1=_5^uq2fyQbaP5Ni+2IA)H+`u2A55aQY$P3tbm_nV*9SFlPO`$|#nNT)H#K=&dh~-0xY>J@?0)x6RfQC5T2tzGC zG_s)drF45ejj$NTP?}7FjDJBRIvLBB64h9iqOur)VQ6$6!r<&#^gPJc2uc^uG(d3< zgkY#xJ`o~gDT*eOWO8B`Jyyfe72m zX9NthBjJby?BV){)Vv|}_% zo$g(?EVANTJj;_L5hJKjA^{eYOqNM9%Tj%i1~b2S-VYr~rLx(mdv|?(-EJymtkz62 zLo*CrO~NT6s~71Mq0ykaI!G77`XDU_wO?xTK-9i&s)i2OFrg~>&2FEQTO%fDo5Fzk zA;i5OxwqP!{NRSnB!5EXGK`iv@N+K`JG9+(A2kGLn!kmdPzgbigKrc`R?7@c-8!Jo zR|tEFfXZ%n(BnIUlld@Y>_SMA+wBg&KXQBPcYrc*i7*C(jm4C1=>e!`N!*)OK4(V( zrk(q1%?^6?8{rtIm&|_w$?l=RLzfXJdtXy}P?Sb@w3*^VN`HX3CGjpJZHT*LIndoP zVlpi(tiT7-Xn2mCrfDA3v!u?JSKyz$SHFe_8g(mi z4lB)f4J5o88ylGxi$@`1@%#5QT8L93V+gTV(LuMG`z83N(|ou@qIDSrZH^T1gU{{M#n0000< KMNUMnLSTZ{P{ua^ delta 2900 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 diff --git a/public/images/emoji/apple/bug.png b/public/images/emoji/apple/bug.png index cd3740c7d6cb2f01a016a58861969a6b191aaddf..91d89088ef48a6ec93d6346101d24aa5734a6d8c 100644 GIT binary patch delta 3391 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 F{{goxHr)UK diff --git a/public/images/emoji/apple/building_construction.png b/public/images/emoji/apple/building_construction.png index 514e1cc066266bb1381b8cf74d0c21c7df77416e..9b927ec449fb268a83bf0c8867a0e9b53c42d872 100644 GIT binary patch delta 3049 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 diff --git a/public/images/emoji/apple/bulb.png b/public/images/emoji/apple/bulb.png index ad1388e89d2366bc0804869c67f23fcc5a2c0b9a..d0dc072fd1f1f84642e9087563a3908cf5f8ffcf 100644 GIT binary patch delta 1115 zcmV-h1f=`(7Vij)dx)}^-YdH;8tbG=}M zTEaNeoJjoqbbszmY!Uo#2{}(w&cks?nk|+|5=BX}Tx6*)#^Ytgs!Le3jJZ#nI3Y!d zLPiKsEQud(mF8eX(KJn4*L7PrEihPl`k<3Yrmjn5zsC=_hNvWc)FB4OMujj*L3+p$ z1__7iW+DPSi{H7dXZKzcvswH=XGJjSTHMRL9VtmNO|Z|h*eE#9T>myK>9FJQ!$rH3o1m8oC=Hz zEF;yTTHJSdQZ*RN^s$bWP$}Vep_qw!V+zq+HY9x?WhEBhUG=Og%9}#Alc`ixv%8b! zRiQWZVSl0PH61@Oo5=ay(;*syE`=;*_q}h#-E$I0az&TP{yH0$6vcOs$2D|2npqOI zojE~v*LeOinj?fAU7wC?#~q>_*|$avB>ezVZ_Q;#X<{HH*=UEp$kO4h@myR^2qdzU z29+FwoW7%ACW=zNHY3>_^rf_~3o&!JMG7+;B!5`Y=$E1k0b;4c>6f!v$wpncYDEs$ zHco9#5F|tsK!|}O3sp0xD;t%}#cyLB6mq+?GjsQ&lSL46Fqm5*g#Qw_w3Q?SMKW+` zutxmifm32uTuE91Bb~A-%=PHD?>$MNj)sA=fnx@99nMNBV6@{nn7t>pgb-sKd&=C` zWPksRSVu3&JzSTmPiVS6 z!2t6`P(K=iG#2W53!MOQKWP3s9lE~nPe{M+hUs(Qm*+{>b!$N9^QnjP8hS%$v<8Jj z{d(O^SAqX%kN_dDhLv|CFqFQRE1LN3h`-Qm!yq}VYeb_?6Kh)0;NNI9L8epG>Qt!M z^d<1j{An`uXIeD%8eZq#(EAe=nocNBPnc|kbjdp$|Af!~=)Cb@R6+yIgOQml2Xl>< h-Vk!eCk!2q{eMJ9`nqsgOSAw0002ovPDHLkV1h5KG;9C> literal 2931 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 U6jzmqzs~_+Vq|GpcHb@Pzu)W27ytkO diff --git a/public/images/emoji/apple/bulgaria.png b/public/images/emoji/apple/bulgaria.png index 5f23ca9d91fc8811cdaeb5d4c8c96ccceb254b7d..13786d2d44b1d77e596447654e8918cedf19000e 100644 GIT binary patch delta 1244 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 IXt|*O2M=MFng9R* diff --git a/public/images/emoji/apple/burkina_faso.png b/public/images/emoji/apple/burkina_faso.png index 7209f20fdb959faa71cc169892666429ede19f87..993ec91288bf14c84df4c3b35283f31fd7ad64c2 100644 GIT binary patch delta 1163 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 GU;%<4V^N#{ diff --git a/public/images/emoji/apple/burrito.png b/public/images/emoji/apple/burrito.png index bdcdeee2d30587585a52178017721609bb2e4457..3f12b882add9c923260c555a352a29f64b62ce51 100644 GIT binary patch delta 2679 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 literal 3753 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 diff --git a/public/images/emoji/apple/burundi.png b/public/images/emoji/apple/burundi.png index 4a948d6197bc574b314d993a4debe03b7abb1f30..30c5c80969b4d572811b8920e6fd08c877b470a7 100644 GIT binary patch delta 1673 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 Uu$uDd^ko1*4a~uKkXzh;0sVv_CIA2c diff --git a/public/images/emoji/apple/bus.png b/public/images/emoji/apple/bus.png index 39b2a8696a23953eff0aa7d6c9d9f5dc6f0ce3ac..6cf27eaa352a11d1f0dcccc639ff03a552c92a94 100644 GIT binary patch delta 2287 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 literal 2172 zcmbtUi9giq8lMK)4h~67mQjou*=7c_U{=fw29056kmV>8<4|Z(s;LYqJEd?mH{@Wl z9NS2iiikqpljR~gNKTfJQ0DyZJ@<3}f&2Y@-tYUo&+~k~&+{&yH^tMPrlJH<0)ap( z47wu=nCbr>3Nirygr>%UKr$dtH?|Wk+70l?$$hiNOTg1v z5(6**BN%KK05F*3=s|FB06ey6)PExXB`_F_LZUEO42?!7kw{LCl>bG6kcWo{mFhS+ zG(@3Lhy()8j%00VO0c)HurMbO2!ChV+uO^^%EI9$K%HP8GMmjdg~R*Pa34j)^=ju} zCvz&5N+c5ScsolA3!sFbzaJitM_O4?$>h+`P-|=JrFthoipgX`jV-LL(LOw1EEenH z;;OF?U95EGxS}~6A3%JrgrcsY-r3O+7Z<0ZqLPqsF4sCcey4nv4yF7Yj@lfE`E z0s{kYMPMWn$fKMUR_;vGSMXItM$Hkk#!^4$DRICX!EU=c`A(d=p1tXq0`n=c6*+~ zvtq~DX7|p=96ZP<%P+oP|r%p;XHb@gKlx6jYx>6;~>(}khWy((nu=@xT^kG zmb({7OW8n1eQg(bw}QzVS&WL7<@AbKT1##c$ucHd)61#0lNj zD=JqxI{6(tu{+;I%biMenC+CtV|C8uLQChSTytYJ>StUb|%}nq-$E(C9|SW>A8}juFNSa;-hu zQ{UGYDa=+pmCp*zb9mh&9be;2ju>n#5;^FjaclQJ#x$nJ- z?!0=mB*&g1EXIlbRC)%ZzOXM0oe?KUTIaT>%f>3~F=R+lMEK6Piif~cwv26XEBK|d z#)NE3?o1S}yc?uC?1$IWu{3o*Cr*35evbk-`_xn14dW2Fv3bs zqQl!E=dZpk`va4HzSO!W_px{}ugxO9@Z%l4m+B<#p?5*iovrQ9eKS2h25nVbHMLRp z&q{k3D>Ee{`5G{^_K5e@5Ce3B7t$&r<8<< zp!erPLU=O*hnV1MX?zH>+W?EQP0W%WKi}6qpZeB9xH=aVg6{U8CuUB4jjFzvX47Pj zAzeO-JJ;@|vQDG%yOS0Y?lOon@=5`bL1%yG5DUl`@GOso%acAzb8&_*GTTR^Kf`gu zzF|Qlp<@ti-6~y%Q8#~3rJl)zsYWMlrew4@bEY*J>zGTWRIC~|Uj69stVKDj>V6^C zf6{};%X)H}oObakOU7#DYKb_d+V^ZwG0He2zf~Xu3&JdIMy|5*ka(dQv`2k;^lEnTw7XpFZw{aDJqfSB&A*W%9^cqG zvaGY&-p$vu?vF83ydzI&Qq%vfHs;+C$Z5L>Ms)R`6Jt}A3Zh+Mkff#XuWG(QIhr#lsdSoPyK)1rNq*50gipMHZ)5 z;tsF}9);bADl-VY{LMf6nRi>$rS8=MgG4`6z(~f)GFeVej$B?Y$+Z{7Dxl6AaHrbRCuaODe#4Y7*6hvVoH$UFQ1>xv;Y7A diff --git a/public/images/emoji/apple/busstop.png b/public/images/emoji/apple/busstop.png index ca3bf91ebff1a7f3c3bc693bbae7640b7d002b20..ebecda051cea6547466067ec0a7c89152a16900e 100644 GIT binary patch delta 1771 zcmVA8VYCb$VWM^rMjgDSmVw;dNW@YId8yhAp zP4dZO@Ww<|OGu%quJ_Ya%%e{}F)TVVFD)!BV`X`qrKk)Ow|8Pg zM?E_H~*4EZLJ>`CYfNpPantzLS<-JnlwL%sg*;rUm z=(`z2N5QA4s*jP9Y;0yoMnz_4XyU$7U0z_Mt+Uw6nRa=Gk&J?gernOv(`RkBGdAp8 zU}T)4r6MSrou;mFac)OR-oTw*%EiNoe|`S``1$$wo12=%#>Hx7WajDTb#ij__V|yD zjfaTs?e6q%a)0Xc_v;7%-P+yeU})7lJmykX?M+kD$jZvFv$omX-1^>s?(ylctg1;# zNYc~OC@JZ_z`+IqyI@;bC@J*_0?M~{O!t*ybnIjQ`rVccqyW{j8NchCG& z_1$E%R)4Kh!?U+hglEtUiRu6V1h+{1@b#((8+!QWSJwsq_C&Pwd$Y%}y8VD+y`sEx_2H?LqHl--u5KN|NQrEd=M>3K$p5}(p@B&g=0CIy7%eGq_ zfPYBxgse(7i!lj`Y<6ly_MFNZ!|3Z5m;*gSPyv9JsezMRY0SJc~CwSi(peOnLb9)f{@MDFpxlKL9ie z6xskn-W#$R3XfA=bR(w5;N^017~S^IK7Va@OFe~<=38(E4Mva#?Ip(s5C9s$W(PPy zFpO@@q0kl&A>{Z|=PkMwOGD7|h8k}5raM>*h=nwQcy<;)gCd^LJ2$K04$T>aUqP~_ zD7{{kNZ-`{d_}@&CYkzbM z#;A0=Iy&|o+TE!R06dMzJqPN^nk@j?6Kd*393zb~**GT7v)x1jv);cV9O&`$h{yxT zMe-%5Oh&c^spP#;oWinreABSrep}om64{z{h7ni=LA8k3lYnqh8cY4YBu}QcAZI+G zlXPO8sU;G6{g_%OFlVE^*Dq$!vwu}lL|c&KzF^zJbW94<$r8x?fJ~%! zvi8FM85G(PMUl4!!6u!M70E1tj@{~S=R>8ww{ZnktD@%Y<2dAalJSP_{d4BF7+mOK zXs3#xd`Z6OOa18>t>X=?9G(4p)qA&C&|j>i5wzb!keJVBN|Q;(?M=|*$A9zV(b0qJ z{So$kZzR)eL2KJE7zSXkZR&)Pf&+Fbkr{>2^ibHAvh2{qPBz3s z=&lT8BXkfpzUdE$9*m_QJ$do1jIqyQl(P5m9Uop^ALQS^VJ{MdcSR+3&lkS&iv)j@ zaMo4kaB~(+jEAa999AcRI)C#Dp!t{q>O8cALGK@K$6PJvGX{p1+oUYZg+D0WhIaxC z-KUzdqNH6R+H}2HfuZx15>m?+Q?gI5FX;qG6Iw?t*6je*3=TPCOj!$KRC+!ITA*?4 zGFcGWPH1FAkx5-;jwh2K|c`C1mvwtWmg)qbNeipZIpZ(G3vt(z~lM>mb~y5t@|YC&HWp3OrPt z2%51|LEVox3{|fXy7@QIe~7(p==m&|oX^5T-#<);=HEU(eY*c6@Dr}e7Dj0+Gv)vQ N002ovPDHLkV1l{vjJ^N> literal 2596 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 diff --git a/public/images/emoji/apple/bust_in_silhouette.png b/public/images/emoji/apple/bust_in_silhouette.png index 92c3b48f4346b6f5a049e877f4d0d40f7f047ec6..40863658fa440df59a18b8fc69a51317ee00d848 100644 GIT binary patch delta 836 zcmV-K1H1f#650lkBYyx+P)t-sM{rDuz}rA#hMCFXfw9h%%i~jcnNW3?J7$I_MQ51M z=SFFaY?!#4)$3P(psL*ObDq6;p}}*SyI_W=Sbd*ul(c4!u1ao^Mrn;bUxRb+l$`(o z01L_t(|UVp684UdB$3G3=OF^`0KQapu^^CXNHBU zR|@GD2P{+~y+8_K?Ofs2kfJb<&IJx5g<)UYJ~8R?3!DmRBYc{9pTf60-eUM(|9Ka_;390PDtyDK#ZL*g;m7ZjaDd`I*4){LV9!{1reP)kmPQ$3&RsZZ@`!ZtroTb O00000?5y1Jmc-qJt;eR_?jS&5E=6S{K9yQ_ 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 SC|QmG0000jZANnL1cp}NNYuC zi+-xep3&%_+3!hgkDSx#M{15kW{FyVp;C95VTh@CpulL4ux^&Ne5S>7o4n%T_fG%- z01$LiPE!EQDk}HS!u}D(OoOROlY(Xm3gG|%0{lrtK~#8N?0=B$uB#vrMURR&5w!{6 zN8kTN?@0Gy6d~NdC+Qj_wtIDp{rUTR`SOLRE>vmf*K3-l*W8wcNrV#fq?qGS%rut; z9tc_5=`2~-&&6h264rtMtx*R%VVyT@-k&)u^{F_*1tHVJ8K<}yHruP96tXC&CkR(f9Q?5 z<`5z+N1PzO-Lz5Q{0yQPSRnv|UjtadH+Zu%fQ3qYG)Yk&cy$5v@1oaNg?rH+Cu}l3 zp=i&~+EZGDmOQj`KcDMDB(qM88Ax_=irOkMbe&Vz3lY*<_PGa+1- z%=JiJzi%kbN0-Gug#0Yzf;F*pYw3}h?H zE%m3uWd#=90qy`0(vg&wsD~-eWh&sz6bHwBK;U7D8UduvNm5E1zUXHf<&YjNHlbYjS*{X2|&Q0;n&3baH{AE sQ#4+F?eZfh2q*eIL08<`6Esc#yiCl@!4Kr)+W-In07*qoM6N<$g5O1>bpQYW delta 2623 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 a*ZvFV(zH_Q1O7Sy0000 z&;p?wV93M*(ifGI5f+jV;Aw6DL`_FG+S_Y--bFumK5k1-oh}3nH@|}Pg5;Y?r zV3K6`Y6pRtGb%fEX(swDUOLtj1BOY?_;cf;ZNr!A4!BdR`cu`2IYipNS2q#;`_gxS z#K}nS)J9N#Jc4?^kIXrNn&+|zK=of8ATzgJIxi%|l{6E#k;y|QWrt4}FSQfb;L#JP z%2SJ~UBmoyT4q)l3$2`gk49M2lj%#OPu%_N71bv*@VG^&vWg@2@7>8 zfm=8W870zl+%e&1Hpre~prO)oa~ytt$-RYDf;ng=V0 z+zMX4^dC4zkDnTaX1VvyNV;U1n_I@k#&~kmNqXXy7372sy*)kMOmce6%H}w^6Jg8T*6q4NKf_=q+$GACQ2XSxLL zP*6(^+%l5*3%TUDy1InKsWw!vYnJb7PlTlBy4dQqb6lwUT#b{iJUsljEZQy-NJ-1i z5g#sQFZ+Bg+z()=%eIYrNaWY!oU84ywDIxl|Ib`;TI-6Fk&Q znlQ6Jc4?3zr$VcgP495xC(qD@uSjuE#Kx;HqoIn}lg@~)rS^r8C2a4dlcO$eyGr>c zA`D7AQ3fl@?F%aK+W*E7B+*Vg`{0J3BZRSz#UH+53B~R0B+cvkusVeT-9B+j#6FF5}k6vE6 z)5ip6P2#U|X_=qOt^UXkjt+^|J3LmWO|Mr89lSh9PVpTYZXW&$ph)I_A+6BC7l*7^ z#Aan0>exLtHJ!xs7_8b~gZpLu^!o8rWo53fC$h8AGj?JKW_1b)}0UYa_!#2NG@7z?yVr)AcAY$T|&Ku4TpWjDYZBKP&`s~yA;4@Qfn=+K!eZ4;q{ z;|<&L`v{MzDKgQY@SYC^Cm`5^!d~UsfaR$vsVcG84QIzcaB1?qdIjW8osSxb+W~Ih zJ0qKxLDV&^A(MB8SH2Zw3PL)Yj_W z%5&&rqx&EBe1;dWEY!As8;~s1tVs#V{v0ldI@`bdX{C8}Nup54txlppSBq-Ujr-3o zZLi?GoJ+j~r7LiEOL=IZ_te?*n%t{6b<$en> zx^q7wRCzVR2uj#jgBIt_H;!Jz!pR?SEkZ|zEyRMA3Q_c%z-Mp$r^y4hZx3Y7>IMZQ zP}LG)K*Ms`U39B{g(z-eLF!(>G2A{eG-Nh6*Y-2gdxo6GKD?gO5g$muI59o?nlDC6 z<9mLN()&@rN4~pfIvhr7%cG@k?9;&&Rw;|4Yu??$WIUg)x?Q~*f7#*ppUq2NEfY=v$r zJ#GqqpL0s5nqK>xR@@i}H}_nA{X(sfJioBAXYX@J+vQZZlD>}HR&G3D}mz#90b4j1ZrFxV}GLeh{HOgsmnY%wEUoD-R!U^4g0r{ zgrl_QxRsp&!8CvO<9jijug?DQh_v;aBc;&b0Ubts;6|2E-SysNmg*WbGjs2#D62Ti zO7g9=0QM#Cj=#Km`c>4LMMkB0bBHKU0*$5%?gu)*;|g0mWcPI%loZ}kaZ$;)vjI~Q z5mDit0=}72UKkA8=@+2o*{_>=onwm;6M&a4|M>D(_jwK;*y3&g`2nSn*yw*gmGVag zBPal`7#ABM4(+?Zyz)N`UwAO!hm|C9_mUdtHgt#VYHFq!O)M=92rR9UWmPtfO-d)o z-bTV?OhG(Q?RL3XPWdA`8xr74ao#zZh+XFUx*gGLd-1+}wQf^bjt{!8pBeV&eJ?>G zI^+O~`%+ekv&p6erPN9OiJG~%>1wX-7d7Jm*nL9@pr4W82+G5^U)yzsL>$o`Z-Z?9 zvY`On9|cgyjwq*{<+aC2eH%y4KE;px8z0d=w@Xef!vor$#;HUd*l}-lK2pxoGlm+f z12T(>^7CsZE^em0#U2T+otPsv z0T?3+t=4}(zc5uU9=ICSUZbKBQ5fKDx*ef-Yx=*Zsddx4*EPA1=Gxls#@B&+%78x9 zy@|lL)}vL%{f3OG%jx{TzYPto8w%l^wDmV}v2Gr=*6$Y^1(YLtXO1in$sls-uOK@# zx5H3BUYv-msw>LHsV7?$D88aD^+2H@pcFy2ZIU;Q(o=lhnAL~$qdy87yR#_?Y=#d; z;>N!l6}83~QXHc-Cyv7#UKYF@C^g@*QEI&``|Z}(!W?`yq_8>{WU3CnOC_S1l;qyf z(#egeRK5(7j11dPwztpFdHYy_`)%SN8%lBPYhpu?Tx&ufsK4m(yE!h_Y*?UetWDI0 z{a{7wlU3*d`!P(M3$>2!*u3?q7~G%|HhLO( z3-R^_O9}2eYA@>}dDuK$nlp27C41(M90^n|<;ymKS8S-u?u~WL_(C(ePL;7+JAf`^ zkRKd)cH+@b|NX3(XskTLl&`>sozP63)@fn=P>B{PP>X{+Q&1z@51LLO{jfz6d;lJz7JEB$XfAdnEDBKbnE9TiB*>UwD16z4>`peK)L_!uXt1Mt5+)}`P_9gHg z$IjF!R`*!^gu$!4fXuacB+n!SmLMr&%&R*sT-NTPsJ6CW#H$H9-(QY; zGGlDg3A=Ii-~Xu`VN?>IeSNV??%O3qEBhShOE~pBr)i4_5?he#AE}RIXwg5}7>^gp z5SVi_z*^p~0)Qm{l8y=UV}6~s%6X*7g0Cf3n6}_y5GT_)t4-xL6Tq`aDX+y1z*#ieZfd+_b$bm1fBpbQY(1Sll2mlWJ~1Dim1il z!6QW#{Qa1JrAjRZBtDI3BIA^_BAVw7Y{4^6KlGN?Oh+Zn&K$gM&MR>iqsYz;WM;A&7Y5t?e^5S))$f6AJPd0Rfi!j-OD0W$dVDMY*OO)jcA(!H9| z%ueS@x=7wuEbyIo?MUOd>YOFwFu&=(Gpm}VuEpM(~@`{%01W+k#OVziU9IhcMEv({zse9}e%E?*IS* diff --git a/public/images/emoji/apple/cactus.png b/public/images/emoji/apple/cactus.png index aef19794313fd50e15cfcdd186fa52e6514a7107..3bb0484bd11f5971a7470af8bd4733295ee0b169 100644 GIT binary patch delta 2514 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 IM6N<$g5$hN1ONa4 diff --git a/public/images/emoji/apple/cake.png b/public/images/emoji/apple/cake.png index 92d4c2c0e53d1df9e152590ce3ebec30135e5139..d089fb1b644940450824b011c7cf4eec00011c1e 100644 GIT binary patch delta 1958 zcmV;X2U+;48nX|OBYy!nP)t-sM{rEZlQ`_#!^x2@(Wgu5+rr|~x7y3A-`T_3%CpIo zHN%)o%i`L|&A620)U4{^%j|@IWp_Wuy`|c}bjhfc z+s>=s!*uuO#)Fk;$ik|^x}@`$??Qe@qgsT?z>6vz)#$)LgKMQ z`|Qo_#$);F%JIQU;IvBf$XVyuweG@M*QP$umM++xG4HuS-l#g>xLWPWZtT;T*sxO2 zpFHNkW#`nW?$3ket~%?qJ@474=**7hx>D)KdcwJ)&&aaLz^T>Fwza2-*D5CJMnS7F zDu-7*;5jvv8GjV=Xkv||XMmYoae+pcwQqHhQtaEc+}69PTuAEOzU$w^<=MLI-MQ%7 zyuTb5rhH_@abw-lukPW+^W(wp;J+>|K)nC}048)&PE!E5E&TpdJ`Wvj;%wrUA~{ow zfz6Q6t@!@Yr~SIp3vAg-!BuMm=!HMxV* zY(ESnl*I7giV7teUt1I9qs)Q;6f{l}MQIAx6OxhC;3Hcp_JR@OCQxGqrzqMGLKtNo z$};uajA1_kL;Ng22SeyW86+i+!`Ev^y}^vkDStzUxM7O~rxQSekw&6jX+1RhwgHC7 zE(svAG>tYsxhg;a10iLpJq)=z{soy7Lr1iZJdY#W?Hr?zX(@5u#Io~Q_zVp^z2EPT z$Kw|I*R*?ivy`q*8AR|QZ36Rwra&NYfbfN_V47CHI+70GhO$nixe9NA?cx1aIIF`z zxqmv^PuBSxoh$U8$H51szr)rs=V0(>IQ~jV+3mIo1W~w(IvhbukUhLmCP!O!4z8Tx&ZifJPd>q?QYaK<3I9h2ftbfBq zf;F`#(D7bC&p|K@LXZrxjiWG(LRirXFmj|d@wD=qNEtP}T~U*+R;b^j-XTRyA>zpKo7<^ zKx~$wDrOGxtc@b8IT9NqX8;LG9Dh+ZZqg0Ewg+-#aab#$P|~3m|G*i22ZfWeADEna zl%9dUIJU$j3k)l!6FxL!n8W6%KPmgsxZ70~_een302${!NsnNOP?`)ejZhK4ew3T6 z%J*}yogC&@x;c^UIOf-ZO+;H1gy{n*$TG9UrQ^*RtSq#t@-OD%&y zs#i+}JsOcEKnwt;_Z%?8AeZ>5TcSYYSK0Of%2-lQ34*!SU9|1>?sQrR==Q_Vd244LW*i(CekUgmCN}HtBianp z{6n%A@2hN|oB+C*g94G5`5(a@lq!pIe}Yy^4?0gah58fG9*IyncYipjrxGfP;)y|+ zkF13^f4X+KPo!(av_C|-}Sz%Yk< zKnDpb7r&5NSSd2Y8h^wR1WqrL#841>zwS^8MHdnh=t8y1Q5vqLx_o5Y9r+n zgk_YW>%|w=nhG$WqzeoJ!leH#M~7d#Zqv<&P|{|@=UA;)@jRX;Q>2rK1B9(*t!4HS zKHAM#8Em$-AQB*96d_TF@FP&nmaN2}qT;->&+pylwCq9Rgny-`OiCT!NWSqo=bV|3 zk4n6u1kI8YLLi}t5@Hc(98Ok<*vi7FCxCbmMt#2^$X3z%Yu sMjDunw%e|jr-pH@PltazPuc5f!*U6{i+STvr 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%0Dn|C(|n<9 zv#PbIu?~jg!=u=f_>5eDfTCG>XCf##F)=ZgQ8kh}VgS?#h9oo0SEP1ZfPu=*&5ef^ zpKE4hdPiqwW+p;sGGk-+C+;r>F)XkX6EnAXSduq?)3mV*$Y0g4pniDe0-!(IJGvhT zM8Vjg_M_<%Rf&1m}q}xCA7-Q!yxc6H|F9$ULhu?PJgxo#DnibI2%5! zs34ef0;#NI5LJh(fKg?QE?#)?89;Ep?_vUIO$nitm!Cg)@Ze#_1TNsrakB}z8PLw6ntH#d&0000|ZBO@RnAWlzD{Pgp^YHGS? zXEiV|K|nyaUtav^~9(AUxoB1o?7>w`TM5 z1e<2JPGMr5Y4-CIrOmwGzC6WlJC4ocl4cyow_B~7<`So`_ighKTP*pO*yN2hO392? zwyi&Xp1k*M+keXZQ1A`D9lDW9D)JV#=d;R?qyC$VPO%~# zKTk5nM@U2Wep#aY>sxk|z*?XOK#+;zlVS{d(^hKiLVERo*(1os^Qr$tOLFJI<+NiO1&tOIu(Su6PV zam3$(Du2UDdlN_%lbK7e{qG#R-v|I3%V1*3q&hB0CB9g!l@v z5JkEO)r)PH6T>7i*xNJ0jL;wM1*C~u<+_;58c%Dbj;IXIvkuvZxr;oK?G-!050$)tXK=7VHaq14tUIgV3*U! z04a(aM0s7Gn$Vc%BCWYtBRG|_%py>)*GfoehNz_Ar>H`+`!A?P=uav3y81W>L;-xS z7k@}t=m(8sMx&$e|BO4M)-~O=P5B=~kx+gdr%>9gA=2AXvgC#0F+lykYMXKUJVa+` zo_{s0tL7y{kwa}WhKN|{Yk-#jK@pvEej~!<#?-qCTa=1VA&NR2`+oRHXpX%vzBrEl zIuvQ0Ls7Y%)1h-lh$yNlL=m_S#}+8qQ-3Pd9f~-Eh?13a*wRQTI7JScs5uo{W{{In z810S<(U6$sAMhipzD@@%BrQ~z4&2j9&TYr$!WkQ5n#>0;34!#AEuoe+g7RQR?tD~+#W1&r< z&N7}h=A<-f7Uu z*kL?y{t>~MG(u{>802h(k4}q1de#WbrHBP8DCo_FcC5jXcTJ%lVMK`B0k zx>KOiC*?cy;5^RgSr9g#b3^1TE%BcH{%mA1pdSMg-M&?Wlu0}tw*HfYq1tGbXFwmw r?=QdV6RjT~%{Mt2KV$oFxE9bKDn?(^EME5Y00000NkvXXu0mjf{>-n7 literal 3689 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 B`Y`|i literal 3776 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 diff --git a/public/images/emoji/apple/calling.png b/public/images/emoji/apple/calling.png index d23b16e541c60eb6d4b6ee794a4b1339b38bc75f..8b4cdc7c443cc42b4b9c67f01cc3f5e13b49d858 100644 GIT binary patch delta 1741 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

    pE zS$==~XjR||gTwG%{Ocyu_}OO+=6_iWqcf)#>?l`|BE{m!{5+tjuFla|U#?g4?C9~Y zRzi|~G2Y|5V6d&epn)!k$)t=n1s>mPFu7%{+48ilbMqXYdDa(!T(~b@zgx+yjF=}4JN&X&t|Jm+Rn^1m%ICZuruC+*Gy9>RaNnAhT93TvHO|jX`dw*r+;TE_t|_9 zWZ_&nP34@4pQRdtkQ;@~@g4}{1DctY%Rk(!BM(z&s4EXXw46C-_@rzI*T3fWbh*3L(piR|L5z?)$Kp>yH(X|TAQu5L@r%0yyD~INXP%mnB zi*aZ%-yw+e_&7hfiF4P*wSNXVcG*%Jnl-mHrxx`^vlJh6&e+CpZcM*BH#vrXsC`$< z1d9Y+xYTmk9Ofnz+UjOD(!bks>AW)ak0%!e^10M<1qM4W6nv#yyUgz6U9{aga))5U z(#3F)4+KI0^1qy>3o^SiVmYtF_r7rDqCh?l6`jB}|I7F*ZxadOd4GpH=Q3Z_cT|im z4rEJL6}Xx2T|LtM4)n)A6GcjG0kW`Hsp1v|T7RETFSzo_ml9&6_uGv8+wcGWhr3Yc zX#G2xgpXgu4nZuri;KkOulw|0EB6iXQHK{@T-^TL{6GhBCjb2L=jX)`HNsie=jV?f zXE$jw0d+EAk>{@R^+F9uGh!kbV_ZHz{{IQ6=Eo(^$)e89%}YeLor6EQB%T{zvCats f#H1ol2BHA~(GICVF}!8b00000NkvXXu0mjfrtE=9 diff --git a/public/images/emoji/apple/camera.png b/public/images/emoji/apple/camera.png index 330ee5359d6183804117ab6acf8687e50b02b942..67a60ec950db39dd67c0c8c2657aad5ee884b606 100644 GIT binary patch delta 1591 zcmV-72FUr!9>)xjBYyyUP)t-sM{rDke}7U^Q>Le=G&D3%P*SzFxYgFz&(P7v$HzoO zM76iLmztc?)YWZoa6m#sH8nOpJw72JA}uW~MMXwTOihA>hJAm4Zf|c>RaahLVFd*R z@9yYjW@vSGcdoCn-rwK9zrLxbri_e>mz0s9pPu^FW5={~k$-d=e^=Ol0000GbW%=J z0FRR+96tU2{r&B%rohv}1E9x6000GRNklJAWHcURNWHnjs&(EGo`^D!K?XMd9O+8EM=CqsGt-?m7B?Y?w495zj}In?!L z*Sr~Htg%02R)5(@%#KvrnrRBbQ9kaP#RgsWugzO9O8sQHM+AtBsgRu@lO#Y#(&aJ& zDnyvRWFmlW81J<`F&q02v>bQ4HT2yR@F`E{SAKm`I`GqyjC&8v4$t14$3YqJ1-4yQ#4e5iT$iY?N$Z9AYAPtWp%6hIK3DI|sQm-h2~KAp}V?Zubj zk}#6n?MBQiNUzP*^M&=tj=A$-K2If3=wtLc6cgXB*Xu13F$DuitRE%fjb$6v8$JuuO|1azesfE`FihsWKsdH=#Yw3I%(v&S=n$XHi3e=>j zvor%CSLNGRto~2Gua;B=Q74{>EiXx=A&jvxBDk?p1D;xlPk^5EDQ$e(ppbIUP&bYN zC5*F{8KXfww+Sc#s#oiIKA#G(%G{tFLL$WuA_7;$U2dRfVQ@|HIODTw}A;?pa_$nE|3a+P&pYYq*7`^V67~GS_1`w zslk-HrL5-Y7Mi>`5dDOSLgDSRuGZ)5Nq^AU$7~fO7}Z(I#DH6985X^GcAnvAl{#qX zTx+J@C3p#pjvw~qdZ`V5Xi46l8s~EgIVk{Cl8PXups+Vt32A_VEWu)5`^M#nIdUhC z3L)201)$MImCu4}RyCTEC{P#yxF>sDAmca;_AJ+87C=B7-vze7Y^~WMdk+mAuYb6} zk(Y5X3)UPwTq=>ERlWlynkQpl(3@&CN0F0jyrd!LfZ>uDnzFF<9-2^om7taZf+XZ5 z>i>ZL-dibC9JG>pWnUmZHmA@AMdJWjh4s!u@)%>m$G6WM+e=-dmc%!Z666XzHO^8e z>yCypU(TS+w$`fk%Y%vF02*SB=6?l}chPU+gpl@b>!urrr1MK=`NDEnlI|c04C#tY z)ngMKYmN!ZoXu1pEr5f_szlG-Jv1>Euaq9Wlx9E4a0;7M8mm_tB8#uk+I#~!#4Ra6 z%H>T`6eh?8&|s;Up>%A}-I4wAAO?{igINj*Bu$+nXy(YkSVZ%PUKaO)41f0wv5sM> z1=eSb>T5p>E6xL}df@)|p?P))qUh*IWs`iV`Ep5+w6m6e5JZm3ye0dhkOR=sNfMyQ zg8X$NiJXak8X_rd&`bbd40LV~(^P5?w2@69O0V|aG|=48sT^;>JDvmg60&mx1wL+=u(tET3fBnF1P!yJrhAcKfZp(7Kf$_ z&$=gWqi2`D&8_A9N(CtO*?jL@KR$fN=KJ;A)*O2;;3;xB+P~P{H893#^?ZEnz4NcX pVdwwjKk27`)!X17{zLt*zX6zX5UE7vE5`r;002ovPDHLkV1mVj`&Iw| literal 3914 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 YKX+a)ZQ*F4lmGw#07*qoM6N<$fw9u0000X zbW%=J0R9W?{{9>s{*IF2Dma#t!K8@&G_UScWJ0Fa(W}1M{+1imFaQ7uCrLy>RCr$O z)7N_2I1mM3feXrXNbibNVo8qe_z3{8_pV-CQ?|bUYk%wvR2=&%R`zlaAsaXRzk`9) z`Puv*rTbq&*60~kenuMhj6F0k4y5sR)6n;lVh;9@H9Vq{Np_N=TYE=0j(`SaCmE!t zNYEnIQRCJ@>f*Er7D0!MI>*E!TgfD3fRh4Od2<`AFd|Y?dIXNt1?Py9DW+v~Kqv?^ zM|ecTWPb!tc*Nxsb7Zk%Oqk9JqU$UxnEB(c4~Irq+20w_85!Gz5j$&GW@l{h<0l&Q zbltRuBjARN5!TpaTSA#_GaUR|D0rXgde4MD83CZkU?otInRz6+fS&VSE8$(rw-Sr|I4@IIa>A88ndtx#{z zMmmF;#7UfyI7!B-jgQ;(sYWSn519fa9Bm8H(9x*yf=hseCb#Re&UKYH4Fd#Xk7tn7 zWp!QwFnL(7Z`Shja1V_%`V6%aI@v=v06DajRGg&g3}d^SrjGKmTHOlnsSu9`EAJJ= z)qmhpd8f8`Y%jR|Rk?OFkm|bLxbYT(qaju2U+0zJD(7O_syE+3=MKK?FD^Up{8pnd zqRBtMbgpUH$3`31wYSh1ASu<$xw^|_-$;Rbq7Kx6xrq;-TD%AfTlK1sZNS-V+ytSg zS>iJ6(=XTes;BxgcMm(LOJ}ptfrPL^+<$2fq$=_}k7^kfkJIrijnmYvqkhS!)78D| zPbL!j`v9FkJ)xuF^Bj4_RaN!t21XRal!{H9+ALD1LIC6=gPE*eL$4#Pe#CGrVA&gJ zhTkJ_#OfPYF=`b)O--AXse&7dz@2fm`+2|#M3xDgt zteYBw5L@0Y5o{h8fwy?TtYEGFy5}Buo*@aKu#X0HWTHqy_3wZF@fkX8>iGgF4)Mye z6!`zpXnR}89S#X~5LrIX@8$@xuV21^1Z1=PwpdI&F8I8#i*hPN&y|PxNwSU#!Z)9oPwp~s~OzwE18_RFHI;H@3~>3B>I zHFcCo9i2P!CV7;kjud3YvhdurOHC~E-SHkAC3RgW;=P=X4|xwuj>siCcLWeIJj00h zqhAdri^5;XDdYEh0Jgm_`o5J_79)``n?U1tdU zI&*|q2B;WH=F$-v#}*O@c9_Xy6}iNeA#$CLZf?#yUK_vFruopIxNOYpqw1ngNEzF>^8z3$h|% zlSVIPELhb0{WA13NUxtc@1<&{g(#^bUY5hQfP)qgpf&dNEk@J5teG+Q=~-Mmy)S5*uA3_wlKdh*4N%`|Z)c+b&ZbVTr? zOBb<{b1+=%B|t3Xx&>0opl@@7v&Bn~WO=J7^F>Dr0t!6B-jLbFcC{pwIfM?{Ljdhf zLPG(Dq>kxw9qH9?G?t<}RICP@%&yMcg5+~YF*#u^2Y#HQ0NUAhYK8=okS^<(@sn)v zR)%J3!){kcW1@nVGl&35iomAXGC;e~PHoRghb_)gayUZI7Jd*+L0dGpbQ{Q;Xh2X9 zHiBOTL4O@QO#$%$ScRG;;M`Q{=Q)}c#E+l_AT0)VjKTl~2&BzZ(~s;}EF>&pZs2F- z)Y_3bN9zZ#jtr@`Y+E#yofI`MLGN~BSSDbmX#{6;WE3Qy9Tk8WfQ^+%qkSgjZbdas ziyijBRB`(V12E|#+OXKDjsVhja0Eq-wkhJ0pMP4FQsypg7>)MWk*k7&mP#^C;kE7n ziBS!mRdcBHG8>j4`SSesoAnBMj>ptr4r+SSgbkX9YJH{{i>@279!J(u%xf=NrSoCY ze+J-BH#h4O+pp{M`lb($!m}6X8y?shZmKSX5wGozTMg3zUqw_mH{brQPyYX^AEB3D o>LZ7L=;g~FpM-CE|DFEV-&=R=lxbjXNB{r;07*qoM6N<$f^9dxPXGV_ literal 4217 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 KA+=hL(fw9u0000X zbW%=J0R9W?{{9>s{*IF2Dma#t!K8@&G_UScWJ0Fa(W}1M{+1imFaQ7uCrLy>RCr$O z)7N_2I1mM3feXrXNbibNVo8qe_z3{8_pV-CQ?|bUYk%wvR2=&%R`zlaAsaXRzk`9) z`Puv*rTbq&*60~kenuMhj6F0k4y5sR)6n;lVh;9@H9Vq{Np_N=TYE=0j(`SaCmE!t zNYEnIQRCJ@>f*Er7D0!MI>*E!TgfD3fRh4Od2<`AFd|Y?dIXNt1?Py9DW+v~Kqv?^ zM|ecTWPb!tc*Nxsb7Zk%Oqk9JqU$UxnEB(c4~Irq+20w_85!Gz5j$&GW@l{h<0l&Q zbltRuBjARN5!TpaTSA#_GaUR|D0rXgde4MD83CZkU?otInRz6+fS&VSE8$(rw-Sr|I4@IIa>A88ndtx#{z zMmmF;#7UfyI7!B-jgQ;(sYWSn519fa9Bm8H(9x*yf=hseCb#Re&UKYH4Fd#Xk7tn7 zWp!QwFnL(7Z`Shja1V_%`V6%aI@v=v06DajRGg&g3}d^SrjGKmTHOlnsSu9`EAJJ= z)qmhpd8f8`Y%jR|Rk?OFkm|bLxbYT(qaju2U+0zJD(7O_syE+3=MKK?FD^Up{8pnd zqRBtMbgpUH$3`31wYSh1ASu<$xw^|_-$;Rbq7Kx6xrq;-TD%AfTlK1sZNS-V+ytSg zS>iJ6(=XTes;BxgcMm(LOJ}ptfrPL^+<$2fq$=_}k7^kfkJIrijnmYvqkhS!)78D| zPbL!j`v9FkJ)xuF^Bj4_RaN!t21XRal!{H9+ALD1LIC6=gPE*eL$4#Pe#CGrVA&gJ zhTkJ_#OfPYF=`b)O--AXse&7dz@2fm`+2|#M3xDgt zteYBw5L@0Y5o{h8fwy?TtYEGFy5}Buo*@aKu#X0HWTHqy_3wZF@fkX8>iGgF4)Mye z6!`zpXnR}89S#X~5LrIX@8$@xuV21^1Z1=PwpdI&F8I8#i*hPN&y|PxNwSU#!Z)9oPwp~s~OzwE18_RFHI;H@3~>3B>I zHFcCo9i2P!CV7;kjud3YvhdurOHC~E-SHkAC3RgW;=P=X4|xwuj>siCcLWeIJj00h zqhAdri^5;XDdYEh0Jgm_`o5J_79)``n?U1tdU zI&*|q2B;WH=F$-v#}*O@c9_Xy6}iNeA#$CLZf?#yUK_vFruopIxNOYpqw1ngNEzF>^8z3$h|% zlSVIPELhb0{WA13NUxtc@1<&{g(#^bUY5hQfP)qgpf&dNEk@J5teG+Q=~-Mmy)S5*uA3_wlKdh*4N%`|Z)c+b&ZbVTr? zOBb<{b1+=%B|t3Xx&>0opl@@7v&Bn~WO=J7^F>Dr0t!6B-jLbFcC{pwIfM?{Ljdhf zLPG(Dq>kxw9qH9?G?t<}RICP@%&yMcg5+~YF*#u^2Y#HQ0NUAhYK8=okS^<(@sn)v zR)%J3!){kcW1@nVGl&35iomAXGC;e~PHoRghb_)gayUZI7Jd*+L0dGpbQ{Q;Xh2X9 zHiBOTL4O@QO#$%$ScRG;;M`Q{=Q)}c#E+l_AT0)VjKTl~2&BzZ(~s;}EF>&pZs2F- z)Y_3bN9zZ#jtr@`Y+E#yofI`MLGN~BSSDbmX#{6;WE3Qy9Tk8WfQ^+%qkSgjZbdas ziyijBRB`(V12E|#+OXKDjsVhja0Eq-wkhJ0pMP4FQsypg7>)MWk*k7&mP#^C;kE7n ziBS!mRdcBHG8>j4`SSesoAnBMj>ptr4r+SSgbkX9YJH{{i>@279!J(u%xf=NrSoCY ze+J-BH#h4O+pp{M`lb($!m}6X8y?shZmKSX5wGozTMg3zUqw_mH{brQPyYX^AEB3D o>LZ7L=;g~FpM-CE|DFEV-&=R=lxbjXNB{r;07*qoM6N<$f^9dxPXGV_ literal 4217 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 delta 2235 zcmV;s2t@am2*weRBYy(`P)t-sM{rD=hcl918$UE-Eh88~G_!+wZeSs4jDspNEMXxe7C9~&I4>AGFd92Cuy%g0aCL4WCTfp` zYK?@Sm4~izcU(;-Wg#VEA0xi8db^^4uylE}eSmtEim!2ZZ-0)5aFdG@H7jdfA+dIS zUWIwMs%aTGFJ*^)a9|=DK{an+B5{?8x~y$wAR}~)gt2~khjlM(T_A2=AA4>p6g4bj zA0uTVC1W8aXd@UzIC8~ty+|~2UdpXK?a@=rWJ&YfS1e^wzduL1JVPyKRJ=VzFl$#l zeQ7FUPtvzY&$LFtI6%QXL%}*p;loSFt324dN7}tczdJ&}I6&mbP9<4MCRIjLZeYDW zMZGpi&402*+`mWb&r-idOv+?Py*fd?H$J~INj!XL=*v*?+E#mNB(`O2ID%}wN>Z_# zJ^k}vwLC+(US(B?d&#gzyEI0}Vn@S2O4oZ&_uN~)P*{{NHL`4TxmI6Qf_6cEZKIAe z_Sag9E;GfjRLizotv5iwu3R;1TkqIaig+yg<9}QkLN%r~J$xxHawRLNk~8DNO`SA5 zO?qzDy-kB~Dbc=X-o;kNNlMXfP27x7yevuRu~hu&T^>n0B2Ym%3O;(pt~BQ?Hjcwl+QDoKwtROweadMOsinZDKM+JY{@y)yZ_ha9zEE zbbsT~VTVF7v{*pLQAoS-GnN1V09tfXPE!D)1NWjQ{s;@L5jgKYtukf$9$x*O;m}w1 z|Jdmb(Hhx}9~7<{73U;xQCNxl^es<)w~;yHESh^!rSHRZw6wD1al(3?g|w68n&7`x zxq_v~!NabtMU>*&H&7#b000FWNklO2?_feL>ht^3=j|{ZApMu+Avg*LXoCa#bD7Sij*Lu;NTG`dzAgSy5~9fCO0?h zDS>`#{@?xio^!bG`)1A@bIdX4Ka7Q&x7R!@US8f-Ga{DRzP)7gJ8!=BoF$r7tA92= z@zj$q%`*w}wq5ez%kF;8HNXG*JxD`C!)1`BrY1|vjjz9Ai~nEqEsPRY%YfnI=j>c_ z>eSh@mwx-BtE;P{qvLQ+PDwS$<%Wi)rdQQP&42d!HU9dR8!$HexI5Qi#)S)&mHZPU z6~}T@@&mavDn|fPa=4>9YAy~v^M6zO3omX8ShK<3*Uie!*VlhTK)@y+cXvP3xP%&I zWjvnn-1(7;)ZCN;0MR&tyu3U{aDL92dvIt$QFD83?aGx4U0ojladlk?f|h|BKoRnI z=gxlzD=OHX7))aTNI>Q0mk^=Qz0GOE!|gz;t^EeeFO`*$DC4n!0U;iX#ec$}eWefr zXVZi34=wy8Glm@-mliTS{4JXJr1El6R#sNA5DGi7P(DBL^%n=!+^xz6&ttb z{csc#iHeJb8b$}AF&G>UsDFqEEr1mTWx|S}11j1Npd+xLNF0HI5PsWKAkhL3?g-jg5ppQPNIF_1Hs)87L5I7nJ#ipYt0~H;G5R0ic$T0j5afk~csy-Bv z5fm1d%|JxIo%l#ciDyC;y@Ktevh4^a%R%cm4da|h`6ZLmI}*8~myb;U6ESo&@r2^81d(*hWn>iu+K38b82xAsK|SET z5JU`5MxRzcGImE~ND%uG5#mhmTT6y*WGA7o>Go_6gO>R3Uw^-LW20y{f9&<)6fq8^ z5&97ZQ3%bSIF2|R-ML1D($OJ8=-CvC&RoMMtw3+mqCGn^(?Ijb#t|Mc`vIhyMsTe` zXTRYo5~qPghMEIp z;<^jTbH`FZSR4C6;IU;3u6rzZa0J$s!O)?hqN2hgn4eu-NF>ikfMIWKVZx6D>*WtS zI5{~w-ZTf}=;XA{Vd>+GY^-Pa%g5e+^}R5wO)J72bIkc)=O4oW_O(EQfn)#x002ov JPDHLkV1oSS6B_^k diff --git a/public/images/emoji/apple/camping.png b/public/images/emoji/apple/camping.png index 034c0a213caa2a9dabc2ccb37a950b0c2decf0a7..0e48a0be03bdaa3b31014c1e12cd34c1a0231c03 100644 GIT binary patch delta 2543 zcmVsg0C+mJ{~DeFJp)z zTYe`hK_@L$HA;R-ZWblk5u$`LGqSv{gr4kTsT5r6zYUll*UZ# zZ$Nsrf8S93IR=P7;}~;Cp`&;5CK$m z8+V#3aR~vaED2jj6q6SNtQP}iU>d)wQi`xbE?zVxQ7acS95Q1$9Y-WNbU-UrGew9^ z);}Rl0sv8!RS6jgKXgRlIvPQJM^lVd7&{(Von1U`KYt}kDl%+3=sq10E*0|BbKp!U z|B+@=gi`9wYX5RT*Ebmdi(UVOR9pxFZ@qN?d`!+Z6#HK?Gvu_% z`=aH8dT8L>h2QaaT+qSX@u%|i%uUml>2T7nr+=O0vZrLvsYse|000L#NklytVq)m zcgfidx%u#&^K-y^|B3vcXum*@!~Nk5%*Xo!`pioAr`%UowlCcV=VTo3i_m-7O~?9h z`+vFj7RQJCA=F@XFn(vH`_EaHb+I#iN7Cbkj4WFwMkArv-9Ygqv;l*B=5C;YhpfQ4 z5V)9(-C^(O{U0sCVp+k}br&X6w|_V0Q{lAGC_;p7eZ)7XVz)Jl-uq$%>n4rkBp#&V zx1MS6q2aoaa{(cUq{FwS%srIe*6U ze2=f(lR}UHw7roRMek5hWmcChU|IsFB8O9_db`y0zo1o-f?nGe%gMUQII<-hNHLw^ zo!b-FSnzHc&!j-E)S zdJ(GLfT}?=&GRlg`BBtp8gdhRB0e_L{;AD0@ z+Eu98q@*ChLRY7y`q7rAdHVzr*G3owbDM-m55kd1SD|Kk`x-?Ts))Il(q(Q{^Zxds zZ6n3Tz;!Vsgl9rsIfJw1azF}Lfza0aiFBCT(!9zsA&jCR)8{zoa?od(v3QqiGv)Jg zfTFD0YNd5{klU5^OQpQ#y?;{}A0b~+Opf@x6U?3H>@>P~e*S?Z(xun;E~MQTxl`KB zA&$dCC-`yGIP~ktc(?;6`t5l;?Ru-NtJC$|jwJoDmwQW<_A$=`0Bjp$m44u9oKS~y zU!Sk7-GC;=)@JUYbSOy|FH5t_?PzR&Y$$zz#8&WghqD$xY z-bqsZs6^-1v}1^w#BerK%ov7&aXJ!-b-36!D=RA$)h7Mcx;i^Jc=P9lRF`(%luA_T z7lu)WA|bW7yllvp-SJN;_8sK}sJ4;VqD$vq?9}UZ>4bu|Dq7`O`FtoA8M2p$ld6#E zbh3XsFT3BgtuPKlaDPLmmX9z3sc5Cen_?UfW#*&G-?!g;PMj)bN~b;eoO8qb==Z)xGWP!r$rK)H?zPoD{`>vM zPJc+EL$lMd_w*M|G`h0vSzcONzP7&duXFZ${K7BqrT{XCUVp!9A7j$5%pGH2-QOSg z5$Q8UibmJhm+o9cQ@9opevLoAe~&zf!~*e2clv|5s;c|*5hC^5`g25j_AL6tk1Ol9 zAY0J<^msBEyq#Ls)PjpdY|;oc>Zv4BA;P$IUH>!s@(H6{Ub%VMB}9U|yN%X~1)yOf zG=@oILOVxWgnv3P?T$^6&bXvpsZ@%^;-gy^D!(_ln@lxo**rIK(cZCwNx!oDUksJe zGtG`||Bgr+JX{15RCmtf#FGu8R+CC(;vTDuNh6Rs8q9g3p=sK-{h_PtXJt1KQLR>Q zGS7pC#7Il&^z49{aQC~4@&SR+S+CC6I_i_iJUH&^&VLhEQ)O)4_IQ>PjWm&GO)iDVNLVXt~G%!2|pW8Aw2uplTUbn>5aNtZAo} z^U55urs>WCYz$ULTLO6qApj47RQX&%J8L?|VSj6e#4eB!{9CnJjV)QqW^rcjdi`YK zCP~UlSXmtMY*xz2a8kbK1kYpeqKzY4e`xElAykmbMO z6JlX6`GRXOG65Ol-f&Ft{f{?B_(EYX5e|o9H?Ch9HfxhWE}ti002ovPDHLk FV1geg%ZLB~ delta 3139 zcmV-J47~IB6UP{kBYy(`P)t-sM{rD^wQndoB!{R)hM-0yEFgoXNLE!hDlZ|EolrSc zHerfeDmElDLL(n99DABRa*sGiTOfz1M0Jx$9xxtor)uAjYs7q9i?2pBN-`KG89!b> zJykd{PBNjxmy4}Q%7J2np+s(QFY1F-H&8MyKPeR$3nVrmI)6+%f}%ijjyQIaJBqAD zprlV_i&-{NHG*03Kc8zD3s6&(;ADG@qWIZ$&*?3s1mk8O03Ic07%g{4J` ztVHQrNo7Bau11s1j2|o@B|j%I zG24h=n6+7qq<>03SSzO0q{Uu7DI*VvwS~`aPUMAQ*>X?dXF`pqP+D>;>W^Zg&S1Qp zR-nOrK5~jSdY3%$kZ5+2IfbP{?sG|ipFen&I^bkMYlbs)jW>0VIPi>N zCSnmuNJF~dVB z?}l3)G#!ktMIkvM8ZR30lx%*OKFLin%0(&_C>1D1DL7j;@t1H;c}qrZL)pP?YMf-_ zWIziR3MD@!VtX&xOfM@;D?n*JNOMM1eox}ccZa7!UwADvRWmI|ED|6MSP=(dkz4!a zk?GKUFMm!gGEOqAJ06815w|=a=FE2P)qs$(OL!d)%Cly0JRJAlj5k#{OJO5aY9~Tf z9bps+I!hUxEEqIJ7I{h}(z|JDEf$V89P`+PNC*QHV;k|39OY+ z?}14>4FykTC21B5WL+mWJ`};KU(r}MriV+1YJWV*Yd=9^K=zq%d~Y*i84OKK9;H<< zqdFZvP8`HsH`t+K9~B3Jx_eh|C|X4vic~F>uxUW-=!*_c!<6`R4luY;69|?-(biArj5A8yb)8hP6W@T7S6F zWk_ms8ZY%5lG+x2TO*%36r%AT*NDFvHUzEy_G78SG;=5t>h=){UEVt-#~*wiKNe$# zsqbl;w`sXfCzWBi#&^W~iKhA+#6m63U*h&&DJ>lDLl?;nLOCXz_8$GV{l^9=UFzdQ zmy1MlZ?A@o2aqBT9hl6u88t7p8qm@g1&WeXO)O)8_m9QD^J?3;%UHGea|+oW?9 z@o~CP%jd}WDY&=Wpy#CzKKuOB)Zplwafc33xy(n8)md2rfq{eLYPEnP5E%Vk#to{v ziJu-z1y3{^M71<7^FRNkE0iL+LWs*T%->&aG_4=plk(ZI)O2J5(M2weo7t)q)jU?# zNQJT*y27%~pb*U;RACcW9DhqsPq&I9X&`!Nk@_ffB92z0lj>a8WylOO2KAVXLY{PM zZOur;b)^f{t|=KAeB2@x!%;hJtivE4^%YPV5Dcb^G!QW}Tj_L>fRkl_d&Yqc$GxX5 z8caf|sYFH~ss#~~nR!Pl)rl0CT#T8F27$(8GP#WV&2Brd2o6pKf`0)vmqzR1W@es} z*64I}qtYU_h{WwCQ~NR(zp=m7rcuGs!B$dJZ_#M1JC8C^Z8{y6;);okbfpC|$rkwf zy3HJTC^>%~&F(d&|H7qF+8*4w#>_k+R|;{C4CY#)E8T)apS<~;83PaMXf``K`WNU= zaQZD4i*m_af04mnyMcZv@tUurWnL9g2b3mF2~ea z0@D)T0X?Iq#KwXtjvdF2hFeBCo%^8SLcwV!llQ$$z|YX)9Dlw-VUQ~fd@X;$)B(CZ zDmKh&0#PlC)mEZ6H=NH`H8V3SGPHag=VxTd6oM4BL7T!!@$NsTiBrPDkO^GuI2v?1 zx9EPgnNe_$m-$emF=*6kjV2`pRsoqtBhaj$Z`V(|ZGQ?&2(zl<*tIOmz1*sny6TF% z1$Vhj=5@@Z#(yxOMU1suOc)Gtwc6m@kLZtK2?@QXxQjGakG@3JT3vm=Nw2@nV?N{< zF{9AmqEssBbPU6$P4}MO&rCV-4+%(=K!}=I(CLEm;_B+UXZiZ)JSMNf*v|K!;isf4 zU0q$<+g%(S`gz<&|0#i*(3jFJ7NxDEN_FFYbzOCfN`J3v<1s6>{EX=%+${9v=*`5h z-}QFbcL^~7$WTUH3UsK@>^JyPaE=U(}kDlT&?OlCNi+f|SmjneJfY;O6UKw{)@Fn+B1Sjjh)j>NX&T z5XDkylz*Or620Vx8HtL^8G6+{9*&24ufG);8QCi$3TrDVDUcLh=_o5J z%jsy6s8p)kEFSN^_8`Ij{d=d4eck0X;j7)d(|;OIT#H0lMO0c|-X)Y!Q)}6gBOM(b z^%6!t<1UTHyL#~8QIPEI>iXBnkt1EEzIdCko%HA3Tf@_WBA$Y&7EFYwIS)ErQoty> zVJ<`Dv`8c>2BVEdjBZ8!+XBzeS0IV3Qa=7|WZk6cQXc zUtZ2oF(jub6yD|iR?XqVU@0v<`0MX zVikApIk01UA4yOeX*M~4Pz6|BPfu-&iKOfVQQ^NU%n$18uT)lEHk-}G6&0;lE`MBy zL$Ue#@#Br9JGLkF5$}OUfagj=1f52CJ#9P@6GH>f$$h&DJL(!5jy5(PAVPMOb{#$1 zwdd^iq%A1(_$@C8@bDr=(QLwEy>o%_jpkY|c=lBm7oY3wgj<6mw?J$lIw{Hu(NefN z8LA-%%gSQI)fBqAaN?PT;B6qNXh z`-_>@%Om6k>#np+it&VtBa6yjK@i_myxOIuVf=6!FS8 zfEf0PiHT`xiHVyD!o$(W=J3#2lbm0liX1&w1_ea~y-Fgwq7@=2JpAX^2!G8Eo#jsY z^_(`z$>DcwZW!L^SN#*;|3+ zInl`dW$4^y04l$3nG$}x4r~@-3^TS zXzm1iM_bg4!Qf1C^t7Mw^*r3wAB`E4OfUuvt0vfcI+C2<{%#0|S45e|822Zvg?pZ*Fh`0+|#P ze0+S*mX-bf{`mO#{N&~RJv#g$A^Zad{S_Ab`}@-Z0^th_rhftg*a8FG1_tl&@bmQa z{j;+FCMEsO&HiU(|B;XVQcl+x82x^HHq-motmnvtJR*K0~n_70000UbW%=J0R8*ettI&l2cj@rUf=M@Mx0`a ziJ-RKef`6+oPYOKjf^`000U%6L_t(|UhUS|QrtKghT#Cyw%M12AxskO-uI<9_GIS% zuW5cs$T9}f-5lkh-zrX@`dVcyfBG}qwr!g`vAN!dh{@#W=;-|X)Vbc(?d^T}ayIcc zn{jl0dg?fLs_R9c(hlt0_f>Bq4M!PIy7VDz+pv`_T7RkSyT;kye`}!&hD7ePk)|1x zLJ#+0630Oh%mRtc_dNrBTP*bNow%;&y6*E~oSGd#U>!&nk|oo20R0us7YluUvfUq! zV|Qp{3>hg2UqUmvQMC(y|2-K*Daao~Q!^=k1qDGHw=&k!@Yf9>lF?2{d=u^=kQ6i> zLzGn7Kg@qJWt zo+FYgOfE8zbY3sggF*@2YADkXB9sZ5(^`%4UoMJ&yXf|34c89@4^HPm3gsk6N5@aje8 zh%AH<$~D9*ASvZMzgcgQg0nCF?CpNs35OVM2w1x`s=y8JrQc z8p;TzRl|5i8lfjCk9Qc`MZr1{ZaC+R30e$eMMdythkerl0|~3>N!f;HbW;k!Siwe4 zjepjCjx59kgGPIhzu_XBQ{}MH9v^3$Ey~JwiEP%MA!sIr0Gk2L_FymG5jVVFM{f9nt9S zUww-};6NI(H@1bKmC$fflOy{zGKRu;FGzdS8mR)v$7T?G`o&40n!O8!!@FNYko2?x z-%WRpvxw%AYBrk%?HiDh0D97rF@TW5ztGOk&hoJ@istiZ1jTyNbN~UBS_6pV11h8eKy9PlK)>xUf;3r>QU7g7EQCwV{0r8PM_ux4@;^TRq h_vz1V+qP~00|P^;f=82r#{d8T00>D%PDHLkV1l=MF0}vv delta 2532 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 Q$^ZZW07*qoM6N<$f<63Gc>n+a delta 2272 zcmV<62p{*w3F{G%BYy(`P)t-sM{rD7VPv0%F>hTRzp!#`j;NolxT20jjEsz-i886I zrAAIp#>U2eetsiDU&6w|z^`b#tdn$fbRt1q!^6YF!^3-fdmlYmAwF7rm8~j7TyT%5 zbC9UJsbV2OT6dGF!N9U2YW+9GuD`|+LkfgG$tB4XZ zQFvw}hi)Q-fq#HReXv4%uH4+* ^e6HBFKGU%~+S=Ob>FGp%vFPaNK6k3)TR$w}Y4K<2|m&Z{{=dadB#;MmyM zzP`Tb#YWMxKtXw|ENGz1sW{@|;?&gCF><``@9)s9I)6QNr{?D7?Ck8*)6?C$Lhs8< z{?|wP`~2X(Lh9=3ze3lvJ^K6j(y%++xk2^x^s29MfuqCZ zMt-l#tUvtH zMN)*Xe}sXzx3`&@nJZFt)U-c{awd$7jaY=P*S}?Bft`hiie8bvz^PErw^(~;AF8UV zIBJ-srKQECH(7zCQh=y8bgYe{v9+R-cAB-FuYc27eZ*;r#oN3`J8zxf!cVZUu`qD8 z#ioomVz2VFdyS*dg^`xiv7306(oc7~)`)FHZ@E=%o5QYH_s~qPt$(aINL1Z=RNn+o@otn3cVjd)SCpOKz@Uh|I#m!o;y)OJH)BeJPrn zWPhruw~d>omyL#wt>^~eC9wbi08?~QPE!CCqG2We76(qE3nTsR_}cvhINT@fP(EHV zi|*I`w1t~4-^5Vq6#77!g;dzWU3Y%uNty4WvG?(_RGp*0df;@&Qn|yWJ+4t+nXSsR zdU4v&pfseqHvj+yM@d9MR9M69*LPG?cYhQIaH#?ns4W$6w3OxEt7`Y&yF3zt0TPfA zRv1QF8)_X&Ef~Xn&>YXP+t=`T1;2c=qrKKY-$sVmU!xNMdo4lAWHQ zp(ovn_4I!A-Dha{G>W02o?eVka|00NKoEvVgki#ihw+L+ovmG6SO|&&C`$oK^Nop) zp%NV}PPFmnACO8Ul6Ao~QkG73Uh#%n5UZEmhkwd8WSf`5ST#{=0|;ShS% z{LMdoOF+D)z1@Fnw%x!4Oi&OL1O-_UCky8Xl8}&{nsKALwYj<)HEs{pAx{&Cs=DDKb zzVq$vH)S9-q^JowW{Y}mH=S=A?r6K2U)5hGQ~PL=mRpsw^1+VwUSUH+%C!`=p~{}J zDz3D*txw9$Pibsa8_E_{$r>dBi8L60KgjsZ0Kw9exwS? z#}PHx#(*5W6GBk$2T0ztEqPRwCM_xmpR_7aCPUAr#t{#VNBPJmW`7V`B3x8vztR*L z1yLg#ho~ij+xu z5(P+oy}y4D14PgM5XIR~tTj-K$k8rXy7f1iREBKaoR4MP(=Jx{H1FV1pDxV4;kzyowWG5Cp!EGi>6zAHGdP zI!23^Em>R$SejeiFOa%Aw=}okH_VV5`s4mc&@g&)vBffT^QZ8bTUdNO_lw!HG}Qa@ u(bmv4dltn^L*sFMOig}IPG&Oy`}_x^bGyRqsj_DP0000h(C(8qufdAX$H2&`d$pZgu#PmV zeK3^&|Np}B*fRhC00(qZPE!DyB*WX>PxBHRk^le%&q+ibIQ!{J-i+2 z73yWGmY899F5Ls*bsaY4$!>WL15s`5Fw?>6{3ltVBT6N8m~sB&IHHPlB4_EM|5IYO zkRG=vyv zX~q7gM4geWdyLYl-TDW*h0b=SlR>Pq_LBlfi>YIP&VP3Px(wYbbSuCyM8PjmH(VG( zfXIvM=!{e^6i9C=zzs@3Nx8B!&MvrFn0!Z^pLcD%-4oOWse+O|+jIXM6USvJCJ7L& z(j-#UYlEI0+N6Pr9gw~CEcI!NP0`C-B-Pm`GCQ>988#R4c&Wr%qC~PaWOSke@j!lO zt(W;~3V*>LBy0AGM6!`bpn-I29S^ucmKK){GfU(jAruJL@;BF$Eb6kvU`NIcLMwYbsH4qKg%#0a(^gJ+2c%pdkwMMA(GG{ra4Rfn9AWET^xg&8j?O^X(Ww0SjCo0SoKW>X$;iT zOwJqGp=W{6ST}A=K!a~W&jW}-2eZZ zw|^h93&h?u_by3Uk;iwP=@2+T4+a%61pT6<2}_zN9Sz<%(N4qCl++Fd0bR(ElWc;9 z5%X|JX(y$iENujONNEs;f5@CN=0*!Jue{q{&H)GgNQ5a?B_{;|U49A*sanZrCOPPm zLDcN4RIrwsrE|{J1qF4FNFa@r!eF6IA%7goS=MP<7wK+xD@1n0Ae|YmcY2Cp>X4;# zUIPSxVHBo3wgJghnEnvynZhmInKR{Qil_A$t3Y~XVNxj@S$XCaf(j-95wNh6VVI5EYwjNo|&u>hYzzvpvOvWaJT4f5jWTdGiAiht!h z<#T`H$b_q|Bv7HCb#$Y22`3;6fa~$I44}9y?`X4|(w(`eSpzy+5R#%2LN*2?(|6R{ z(#F{!Gis0-;)d(2s5`R|SU73LoFQ?<5S%$G8}>{2D}7HXVVZ62JeJO4N_0mR3Q+%< zd;`Hdij3CI@+Ec1#~mTKv^wk!b$_a5K*PAB(vqQITE6Fu#5oikq_wp|g#LQYS|;!r zS{Z>p6m*KhK&-i;jB7BAgFfEg4Rne^NW6<*MB{bs17CXvz0<}|-*yQ@YbNDJ=~j1B z%Ail#tm}e5igM%j27mk|3XD{j*>bi(PbHI6u--(*y%p&qcJk|y7)c+ xdOED@9;|q@tmyrib5rMsbN&9X)uCjFMe}3 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 J^@dK7{{fDWfvx}m diff --git a/public/images/emoji/apple/canned_food.png b/public/images/emoji/apple/canned_food.png index 0bac7ba2d349c5a7b68c39207fd66999198f75d2..fb33609625fa13b04ff667f0fe1a57ad594ce96c 100644 GIT binary patch delta 1770 zcmVmI?mSE;?BwN`1a`U?Zr<&t~MyRIxEdWG0oA^)_+(@^Zxz3JuSt{&DCI1 z+iYLmdTzu$EZ5!N&_y)ji-FwZ<;XxVqNlL9y}gcRZ~~9 zw!fI1rI$Q0>fzn_nrf#sCc82ry~4uayR^DtRLO~Z&2Cxys(;@}F4bf_;gyNJe00K= zkJOuy_!qEwxwrj!O0zg9bVx&}K{P=`Nu)F;<#s)KfluP;@l$azpj1kuw}z^TjF5s> z=Z8_^NFCNc9;SO_|5PyjMk?xIEdF0Kb7g1xo1d!y0Dk}+bW%=J01^BAo+194n*N%d zLtB2obkwEXy8h^k)#A0N$hMe?000FWNklh4<<oTQUl7N;{P=5^ifnX{K6iArD7LF+?1uX-V0tV;l z(_smRHARwp$-gC_=cS1XqJUS0m;>UI5Z+|0xAgu9M^A#3_3J;>({6 z{VTV(&5Cnh3i`ur+&#*r)5nm+G)l-P$Ye5kTPo=&v)$>H1?}i_xp+K&7C(cePtxfV zlz$zo)kV{^hcVk7a-r=roNb8y=;+8`FzoKSTz)@oG=x}$g;Gr7{x?OTUj3Sr(Na7`Bt5Py=KWA_Uwh_ww{&E5%ow7ss|hgLJN1OZWe z(N5Dw%F!rhgmp>CR0swO!EUSB?6ZCL3lxU%mW;Piy~L z3&J}5w}ppa2+xNF*-)W?m)C=f8*c07;^wa6?e_aVUQC!2V!8dw)m`W9)zw+=;(zXK zxt+009TLc9vyD5Q&h^^W)z!ttMKc<8IGkG`kwcBnVBmFJAK#6)HaeYm??*6!pr$Z{ z0E*b!8-qdYurufkHmlKS^xb=q%njm-BHfLRZ0ryv)`>+wz60oejWTap2rDXV0F=$f za1N)?h@l#!6?FlsZdS9^tO$KBNq-zA0;r9kt!i}>Fo3>!HX^7jRbEE;66$R`S!{a0E_cwSPq1cez zjwoXj9Dq#SO1)MS6$o-%_6%NcGYwfiWWLuth@f-B&`B{&ZK^;y{t9+7`woX!W;1%y z#J#ntU7DI*eGYq>w~c`yW7*2;uw;`bz?O&3I%TA-qcxkoKB(ebcaiA9A*(mRgM} zy=&Nh;(Ql!l#>e*(9C?|Sg-&27@6(OPw{(?hw*&=!ddSAlKKE z3EXrnF91W38TH~k!ajWt+;6OCL771S`BmHE;^I7xMx$0kDZf+x0d6j+jS%h($ delta 2609 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 TgNx$z00000NkvXXu0mjfRj5O2 diff --git a/public/images/emoji/apple/canoe.png b/public/images/emoji/apple/canoe.png index 9954f36a3b47103638cf57cf1f0d16ccfd9297c3..a560f6dd468ac44993616aa678fce5c67107170b 100644 GIT binary patch delta 1800 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 UEAv&Uzdj^@WyNMZp!+5N1FjadHvj+t diff --git a/public/images/emoji/apple/cape_verde.png b/public/images/emoji/apple/cape_verde.png index 55f15dfaba379cb30e3e9b325938a024012a360f..119029626ed5124ac9ab0b3a06e6d375f420870b 100644 GIT binary patch delta 1602 zcmV-I2EF;C719ilBYy!VP)t-sM{rDMdz=a*Nem-O6f|cNFI+H1Xjf=~79C0jAyHs< znptm_X?~yzBTQs@onLmE3nWSnB~4~~ospH71|CLbdz}j-N;FJ$tg)|i5*LUSB9voj z7C3DrQ=S7cd=x^D9!{DWNR<{pf<|MKHC>(!L6{>+h!;wv+JE2S_V4TS`uiqUp;B?B z2{?oWENvuClNUO2?&;zMG=Sdg><>MO&Ct~WE_(a=`Qex$km!50?|NjFYO#&rf=kxWx3?b7r zMD^F&@V>#441XBVCpl$=yY=OI%N#GqvRK8guFk|iqEJ%s@4x=zQ~&A zQOYbO5(#ha`rK((UsppxW)LD)udAw>OiH>S({#NI^>CFztA~e}aItZ)=^6y#I8hRW zTs)rP`F}!z&&YaGPyG>^LTkF>?CT4L5C9@vMGC8~0AL117C`($sK9sW;ps^?k;DLa5PzO1 z^AiM|&&1>LTrMXFf+R?YP_9BPNFKy5hIl}pp0y~I$9H`riZ8>H=3d&1q4`VGB*{<)0~O3@tj>)D2m`@EuR-vsqiIP^ zlz)<=KF1k-%F%#mZImOc@rA!oA@lY`{kuL6+b{sB<1ry%Xq;M)UH7W3Jgrr&))Zal z`NS&|0n#4^eGRupj#}jm$uJBx)@$XnC&kHRQY>1Qm3A`o)!6JrN5_S^m(gfc21Liu zjQVwTXo6tbwtYg%X0xVgrmggFZwiI>Mt_P-7B0|>!x^+`5?8{gi8=hugYL01HZJQp#dcB>)ffbNg-lQ9wd2}~4>0z*#0pj+G)IZZv7c_9YycOfQiqK(C2pZL8kJ6o)ag_zk4-|& zL(qZazmXbLI3=q%20CkWN*CwnmSv;qrR9gEO7kC(yYwl#bp`=Iej-C$SnSk_X!=4j zO`K-Fh-ScQ7M^9g(~t;+^qyxw-f6N@tKke$?>biJM4{c*Btsc1QKoS3dG_;cW&94c z^|nBtB8K`f7#Y-@NTC2a@;XkWQm=lj5psg2 zkq6tu1J1-T7_qVQWo>`kPut$!|FQup5SW1=gQ61=i6lvSSqH%k2;2UZl_1>$6F3D| z{A)XbH5b|^L&Cz!-L6c&WVxG4brT?9IK<+Q;lTWU5BBfxzye0OKszEp+t{E+a1|rG zyH!6{-r3opIY&VZ5T7U%46Zl@vB>|sWy_ZR4Guu&^H;2ivj6}907*qoM6N<$f)=a` A$^ZZW delta 2716 zcmV;N3S;%s45Jm0BYy(`P)t-sM{rD{o~RKcM~axD2Odrc9Y$(-c`Z(nPGylDK#vP2 zawA2KBuSMdN}Zu5Cm%X)5H54=>EgdKIKVkTy*E8IR+%nMjG!PO`1|{u8yQw^o!sBw z882Go@bLHX?x!Lm2Ow-9MU%HJGGKL|@b2lvLP|eho`092xxha~4k=(2E@BEFPV4ja z9y@$ITbVFShTZAyDo>lXGdUMJiS_sRCq;o4F>Og;jwwin{r&vT)7?vFogOu0Kv{|> zLwQAEm^)O6(4eC6{QNgpk}Of6qb@M1xYNpDWzLhAx@&Fy`}gtL+Oa7t`}g*&B`92P zg9|En8Gk>PgOOC}yvW@aH-CcF-RR}%=*ezvMO=Zwwp{MrTX%ku z$F8t=6co+CRE`}Tx{i~QNaH{6GxVB+q{q2PN z?yUd*Eo2<#XX{- zZGYe8%G9E4(#C`G+j=V)U6lX;06TP2PE!B}I}5G-CI}0n)BY6h{`VXdSOa?=wccQ` z%PsTf{C$v|S29UzjNjv;@KBt=#-^>UqB@s1cN{*1VSK81r?AX8w6zu zC;}?Dx8iK8R>eI#oSn~mvjCyBo_^%d;T%42f9H9g_ul)ychI1L3}hhxV@!>V#|_hF zobh|_WQ?0VXZ(Z@KNvZE+8Btr`Ly|q7ETyH>_1_~v&Vz*@u*Rw)~;H`OHNKtPk-OI zF+Dw*XKp@!(S)h`az~ijShBFM z3XPzb30NH(BO)RqAb`bnw0FQ0oh->zh-FM-pfclqJv8xA6Y6))>|x`KjEs$qhiQf} za=O8Y4G6&DNGv+tk!^z@J2G_zgn#UWcV20LhD2pRzdZA4)8>za%crApA_29cH9$eX z41nxy@I-4nOY*WlAlD@4L?xOYa9B1#Vq<{-gFwO%TyF?UT4vcBTE4>4F2*@AB}EyC z!qtSqV6jLDA!vhRF_?~8$Zgp&fUMtusARIGofDCQ$2-{A*xR$&j!ZgT<9`qc{XtX& zx%Y&~2(q�_9+X94(}0Tp$DuUIcgysL5mn5wmpLE{v$+iv85T(8*=L#g3h#%Cv?W7GZ-X*XgwjiqvyXvSVay7 zh}9ih3bB1l2vvmFLtKW+0DmoA`qq%84zj^kpUD-nvV=Gnnyu|peclNYWSzWFB6P{N z&CaI130ePBYff6op6w}PG6hW+FUAT9*~d<9$TmQ*Z1DIKoj4qhn;W%Hh=ZOGO+|cu zU>Q_&tRz5{T~hONtOlZyR00`4;Ys{%j}UwR&3`5Voh7_V!l`0! zo`gzN0)b3Mim1NbQC^XghEjXzp!`6xGRBRX)Gx$WeqU2khHfLAi*2mxDpM#_MI0{A zNsCj6tgKSE6iKCFK3H~&)8wnVR}{U*gUW#!Y41n=v11!$bUIxi;PcB=)g4E+o<#(f z7LmHEOQDcRByn+-;(wiCQlG7hb+2io#h02Iq2E$Bj@=m|C4quZ_$2}2NviJHb2?7+ zqUQMn3@MTxEoeWLS6`o>e>cDW+Lg;~Vu_-1>qmO%(<8f@56KVkHm2Z-XZV2vdc^IH zJvpb-;?&sn5ANN!DrcVF)INdNfI!s6oMkf5NT;NW1d>wnMks(L`RVxO=uA8~V9 zZEfwJZI!q5oxn_r3Xsw2@9XR9=MRaG-%(dr=LG>RC}i_bU+SO{Up=`jj+00_J3GUq z>X)zoQj0{QmKLj)qN4>T_U_vr?gvCTN~E8EXklS-NC;L>aBz^<<{g`V{7gUWPrm!% zc>a~kyTqLmMSteQR}VA83fk|S%G;gW3WUF3WO!?9cqCK=e{Ij*w|f&x-nIJtFARGpcb*`?4d+ODci`PX|w zURXjPFv`Nv_;@HJ5;{SH*?w;Ksdj0qc4VS0+8b%-PJgkuQle>5nTMD=H3=7QP`e11K5;prKRwod3bm?rjL?0`?MLLZ;rHy zs!e%$d4GRws%pOx1}m4^qN(E7-`jG^4@WR$d=wiSY+vKJtw4{h2cCDyaA$vUX)CmR zqq0*XQFOg}{W4Rn7HvsILs3H+9o5-FflR<4&}f7=Hb^3oyuACf<~~M#sM#m%SE*EV z|Kj~rwOXyHJe{-WaJ7q!UnXO)0HMJq3GX!ngn#Y*y|--iYH?0pd!Sri0YBvjZf^)+ z@)HvH0wM1t4|Z5>5X9D3)aN0BOs0B!KuSxup=A7G&t}3dBFuVR^Hhk#8BQZQh)nJC zSfhW{!W+rKA?4|X{Q@RkAY`b7zun|%Ap$^j!-37)+Z#cYJ|OHgf?i1QVrwen%F;_% zEPq_q)c}pbVsW{FaCmHVPfCi4`WDObB+HoI#~O0CZG^vnzfvYUf8pm6AxVW1fk0$r zxUXEle)Z~xhUn<%p(xSOu2D%V*Y|+D4G@yb*p343_m5cuuExNKv17+hnlkb88FMF3 zo;7RkjCnJsj2=3)VfE_n%kR1zC7R;DA#lpg3G>Qcp#k{$*2AjO&myem*)WIlI%}h)OJ_H9ckb%5i{uKt> Wy#&cA^I>NI0000+SERvb|=6p!@ce?w-_5 z&GX2vH;xw&AjtcS=JiL6LI?La7Z_B@7f_`I(|krtFl$l_v_H+TW|M-PAj&+RXXJNL zXFhOm8>kObog6zpJQZykO5h9wk>u^yU>QGxw6mo5VjxpbBm4%k&hS)zZwAuuDs@6_ zASWQ$D}Nn*J`L(a&kpjiL!iMMEC)j%psl2k-mB^kdUh1_tuq6O>3OTVgcW3dx0DsM z1i7;)n!N?92!~7Nvni+%DEK+}ojDiK9RJ?}$uTH!cytL{l7proldlNM;=BBwFVNWs zSvt9y87c!=Xi$POo#)=%tjN^kdboQ)OOy&KbARrtzVsc`YgWz5gvlf}$3P>qKJWjm zweIPZ{>WrWQY2YlR%xJx3J1NyrTwU=z`;Fxt(-m>S}}vBZ?M+vNk=I;PB%ppclX8| zoZ8HSo(VW@N=HnWf{qYNc+4H1e|lO@NPo4erx>l6qip?(#KFfX2Y3Zx*LQQ_0<_v> zCa`{k^n`~bQBhDfHU=FMrxJ9%3I-Yi!f%lOND!_-07ighgM#{Dk#7}95Gn!$tCKk* zNhpe!oDs8hseyEp??{7(pphVZ*e~3p+NK!hAi(YQbe$lGguQEn>8tmC5*HjKC4c>n z2vwAz5VikPCt1KF{G)ILn7gSXyAl*Rvou|>)~9v{NU~M`(jq~0394QHx1W-|l>*fF z{j{UMSHhp5oQKu5;h=PsdQSWWXb=aGjWFuoqoG-8ynuS&K#;}u9K}FR@%p;Sh4R+8 zpt^=(aomHt%SJY&^ bqo0&-VTJ5&bE=Ya00000NkvXXu0mjfb}4sH delta 3351 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 delta 2943 zcmV-_3xM>w3WXPtBYy(`P)t-sM{rDWHi~XEh-ol_WiEYWFMe$_hHo>AY%+vrFo1M8 zj!7tPWiWnaFne=1jCMJXV=Q}YGlpm{f@UyzS}k~OHHc*|ePu6qa5Rl+F@$S1f?q9p zVlI1bH-&CBgK98^|NsAmKBt5|rG`GJoJzi*Ou?T`!;eF-lz&FHkVLYCJ*JF8u7W(I zi9oB!mDzqep3R-zl}EUTKdF*MwZMhc(4^nRjn?t@t6#^YQ^lA` zyR&V}i$SfBM1QfENVJ+hcUy^=<= zhd-v5Nw<$Zw3kD>l0LVCJ*167tdLHw@8tCV|Ni{{`+t!|u!cXRbT*KBIGKb$qI)`< zf;FbKhsugNuJ7{g)U)Eggw&Qmx`8*OltQ@P)i6hjn;TOk&i~Lb~%pf?&#*!?vYBd*xA_m{P?hX z$h>*drhj9>kY=NkRj-^~xTjsks*1L|h|!8Zt(!-_z~b8F^Y-zHL8y2+ zl&yKgfHb7Rk=4+s-uCv zokzj7sk_di-;hGFjaQ}8s^OJltI*KV(!<%gkblgcRlK8FzqfGDyL`{HYt7idot-7?m#FEzV=<(Uk+^&Yb>euqUkI}=j%CKn4taie{xx~1f#HCll%&gn4 zpSGQStKP`xmvpC|Xt=Cl$G#v5G=L z%u67f;R{IRgAS_}C3h2l(fPxkQ1%G8Ji;D26xYn)iOWl|5t8MMfIP>m%_a%Wy z3VieXCpjnQ{=Rq5yEl2cBodCJle2@t5br+@;td7|XD3I}FkW`H^RKHxkojW=L6Dj{ ze>>-w%{^1>{c8}8l$X}LXv{RH@uVE2#@~L5na8dU;bhge-#t|L;aDjwJao6cHh+tQ z)Y(ljd1?e%n#QWa4+|HJ1GK!VQIjR8AxtyuYXrQ^9X~Gk;PcNv7zb$ef**He@&q;Z zGk|C2Yjvontgr9H-^R^}zP>WlRQK9URODnQ;GH~LSy}ns1VD!!J;@W;IiU;470J<@ z@BQiB3G!3#c}))D>PT|25%5%HH-G<$^7nBAM%^q^@dP$5q_^sFWaWR%TQ_fltef{o zxh$vdEz+9^FZ_#(7cT||ZeF+<@M$3AQ;fjB03G^8I1hP~Gz;mXH$Gj6QuSyTp!>o? zj0uihIGj|= znTCl5m*Xs6dJtSg$KmsTf`56%#9){7q;c_bs|-SsEXi*%WJ@I&`{ggcccL$A-+LFE z>b|^Vi>=~^PHh_2qkyH5ExXsCBMTlq0iGWc5?X*M_H4*fs{|OE9pE+_2N$jBj3txz zZ%%NVov;pE;giN=v#sDph%|KX;UbI^sAu-E<=e2iZLuoyrfX0Ux_=;15yT|AGuVd4 zAqgiyyZ5$*xLLuQ4i+R31%-?h#jH!f5(!UB(4b@Rm=#Y*5EQXhVSXVv3IBkiJ8o@Q zqM~I3=zimtkkRoAQ?XHzji5^v;Rhi^CA~#>;@^ItN!vFj_*o%B)g`bY+05@!MZNq2rtviI{*iYHngM!5ScQN z>3C*LSmN!K$wLSc1d0lah=g~_FJFRgKQLu1!9})6Vy0JE5DqSi-JKdlP!R_9@%D2? zL8B7pm6?dx0+BmCA`B-r58EQ2q=p$u?ZcL&9*=@5QZOolOn(&-bayC{(IX&6QG}7y z-C(k}k|NRf6)F1qrqfrio^Gnwr&JhA=rT+s%#zU~Ax2T8k<_DLNj_=TM@ClYo30-} z&`@05aNzhiP5KI=gf7bxqN2}oG^*8*WGG5rZA4!VmSpFH)Yba5U1vHo@RgrYaNxQs z1(v8ZIiJ~*?0C7E$9HMQws0og?Q*01aJcnJ{M0})$Aha`W3iy>rkg%Dsyat+FPH zlH4V3)V6Zs1IaTmUvkH_WHeZXi6&)p5@mBB`M9Vwe~uZFqb0a#?K5Nkr1CP>?nM$b zkR@`mCx2lgPphKna@gBmzA2f11Zz?^sPu#)W}+q>LWttR&2W#tj9*ZBzA2f11UwvM zl!BBdkqJa1CY9|Di6cbr=J1c;o#jUxQ_;0&L2gYqsAN-_A`4M0_&ypTYTb*kn$vMg zW8r_cg4F&+`9_h0NKR$1g7EW7Vo>tB6V;yWaYITfNQPMX5@cgK*}j3V|Fv`HH#hdgV&R5nJ}3xfsr_NxbE?Y6F(0p?NVV~kF;ODh zlDSy7__|XMw_`WDS$D45T(hlIp@5}{gosO-Ye8t*)t!LrXD|=>ibA2QFa5O|Jod(H zIQUijCS52|OX1=oA(t9#fuafhwJ0v$Q-6>S?~h_`u%buNw5WSyX?t_6LZ>j*Qn^Ax z6lx)&c^)*I$eMFHkPKxhbh@4%or1=+M-1vB8=2x*=QcOQBiN^L_PNoNv3=D`-}r_{y^luYZ$V zCX2LOD#cR8N`p{(JXlsV6e?FMn(RVybQbwA86F;#k$9|!FeujW@L(`~M9z-r-}P6; zxm>jeWrBF9xw+z3oxlOY^mre+FN5kaA*c*rxljD`nb?uWq--J6SFNT_0JYkeDa@WU zgE(XnYnfaIW85k=gTZBL#pcH~VtApP%k^c96JIV@E;RF?CfjVGmdWIz_>K`!%VcVW z*|t;6kF;Kz{)&%Kn=6+y$BbN_s}=gZGX16Dhir~cu2V%~vDjzKpv9u8t|JfYz%p=o p+jW-h)G=c_%k^!SnWX(15fI`kA^vt) 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 diff --git a/public/images/emoji/apple/card_file_box.png b/public/images/emoji/apple/card_file_box.png index e6ea7e7d9255a25f2bf1435af051aef6a80258e6..a570dcf7ba393b18c97125e92206d2475f6e22ec 100644 GIT binary patch delta 1267 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 diff --git a/public/images/emoji/apple/card_index.png b/public/images/emoji/apple/card_index.png index c2e74d4b93a9e21688107c2fdbe6e4ef7139b9b9..d6c7068b69053e4f959cc31ab3a04cd4ed0d40f6 100644 GIT binary patch delta 1911 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 JPDHLkV1nhuXj1?H delta 2589 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 delta 2461 zcmV;O31as53Z@f~BYy(`P)t-sM{rER!NI$_xfm!>erz*|c`%Zak{&%?A23~ui;NK; zLBX|okB^TKA3_@{Q5Gaf7$!{2%*!b>P|3-wyS0+QxPTTUNfIDL6d^+pA4bT?$P^+* z4;(-fBSa7$K+4L>%F4>Zw|^HRM8mm+!otAL&dwJlO1-df4SyR!!@7e86F0}Zeh3yj z&CSis%+0;Ab_y3a2p2uSvwgg`ow2dA%gf8m%*@Qp%+AivxUF`ekxjR(a+9?G_V&!RO5NSv)4NaOld^Yird^cN{w$+Ah@#8nLW$ zR%@NX$lJ%x;CF|wp{l>%(TV2c();=L&wqdr5PuNCMn_*?UpF^5&%0F&CTf>{Np1HlomZZnm(5C0$x%l<+>h15vXK80>YlDM>ii(Qew6&U=n%SbHm!Z0> zw$8%G(Lz;;ub@!o+M(Omzr$Hu=iA%o)z$U?|IBD>u)EdS-|Mfn#h!~bw5MaFoq$?t zkAFr@W1XU}Oj_$TYsh$8H%{A>zwYr*Uf;03*$`}ce4ONgQx$>drsg_&U4=P%O&?RX3S_t zGn)S{);10=nBrh#{TznF%sH>SxV^T-(ozAEoE(P3eetE6%S?w67&bHKxV-VIrGF+` z%;zhWydbT1O@;+(}Dw_ZkA)ymrH}V}HlK2dS>E zuB%J0yO5a)7Kt!{Nro@*18xI{B)pw{Jk879-D~9#5Rf)RMy_9T&TQ$=7KhkY~axQ7RTJe~%vhtT2EnKA%jjt(J#kTK}usr})>F)MXY$Pm-k8l1%R zd(vE)z7HlC!=#EjZxO>oR)2>Fdwb{`ts4lf#R_55YA@vG%5)zWb1*~~wJ`#G16GHx z)IlMhtDb}+b&U=m$&>;IUOOg-4nra#dk;mhSi?ixH*PjS)ff8u_~3lN0f{h(ZVG}N z$Y%L443O8;AW#R#SEzGJYOym=I2GpL}VsO+SIG0 z4}cD4r{M9=f_~kYbH3)3SS)PJ3!_Sf4>%kuIsY<~+zo zVMbFoj*1*?XVEAo2oFPi5(*g>Vhcs`hR)6o3WLV=*Fktgh(v#`z=sjx380~FN8=|! zC`hS;P*mC}ImGgzaWRO9$3F>$1nQtccUsseLu-K8!heegvV9o>8kgpeRq79M0mQ-} zZwwlE?;k&D7l6Pv2uY;EjyPY2kAOzgZ!* z{V7oBY5C2A*8-7KpQ>ILrHht<`XUEAPj?Oa{ zPM^QLHOV5u1bx$3g8S=__%!dBzz`q-h?Rv!Uw;D_KyY@obFv@X|H*gUGCRkq(=6s1 zp|39gS(KEtrJ}O3yc~?i0)Ta(MJh0+&X{cHWHsEQxV@d70kXDoUATBT7!0t4gamMu zsoq`P7`39?4MH@&1gpR bKNiftcCu_3rhG?|00000NkvXXu0mjfIjzGO diff --git a/public/images/emoji/apple/carousel_horse.png b/public/images/emoji/apple/carousel_horse.png index d0af95662000a0a3337d5e71e992b9609d1613bc..a2c80a57ea47bd1c70a212da08490ce6c2a47f9c 100644 GIT binary patch literal 3691 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 Z007-w!c>9VH(CGy002ovPDHLkV1nlrWRL&= diff --git a/public/images/emoji/apple/carrot.png b/public/images/emoji/apple/carrot.png index ce23bb69b18366dae52a338b973b7ed4e3898d5a..ccaa69745d1542bd7cbba0fabcec61977cb47da5 100644 GIT binary patch delta 2003 zcmV;^2Q2u472pq$BYy$cP)t-sM{rC+dLPx3Md7Dv^V_=dUk%@tY^AKr*u9v`YClM( z7vgL#UF-(dZ z=w%-qR16tF4j@h#>~SjbViNI#J%qq4*mXr)q$p^oAwQTVU8yZ#nilDpWNVZ+UztXU z!DM!VTJUu(@MIN-!X(UhO?A00l*vl+j6_nEKv0E1MNBZ4$U1AA6+@ygJDni%hd--u zHCS^``iwj{mVX~6T_Y=iBPdZN`;0dFhcx(pF78_vTcQ|GpBeRX7V%^o_JB6~kw5is zBTb+q(nu9WpB>#!75925L75x*gDV|N9QJf4=~opnjUqFQ7V>Ns$6Yloaw-l#3n+gS zAZ;A@hCB3kFk7t@;#nRnYaS_#95#e2BX=F@Um71(6n`{UGVpF36i5*6Y9{x19rR@i z{F6E5Q5CgJCc!}#zELdsek9676uLha>u@soVF+on5y(*@)?6qil^Fb&L-S}JGM*UO zOBLi|B}k1IL6|M|Y7Te447ETTyhR=RiZ2<^>CFHD08w;OPE!C76(JA)Yy$`U{%BV~ zl`w|>Eq`&ujK>CJ@t000GNNkl2ln%A$+xqs9ny0XOMnhDYWq!0;^V!S_0KOJfk zq)PatliER1x3*g%CE`rdM}?zPoft66$^M7Z$qygiXJ2aHzy0~`!!`ntQgd`v2-CxZ zz|^X<-ySaRf6F?b?0-WVC$TgRAT~VQsT6fDsfqaqVh?oHMln%3ThGUq>=_y?(ur%hF0h7AZDI(CH1r~tJq>1MN#IXNyAXg<(&yNsA zQ%nrKU;xzQM4(~LNWM}}B1W zWo))cCz%BolTBup7?T0 zU(F29>Z;YQ;^n0igise3^CZnzN`IwbfAX^~H3uBsQ=b#de32i!bM^X2(XV>AW&WGWxn!t63}-@9%$fabIQ@?xNRBAqIj%Jb3l; zbUcWzM56#&wpeQGU#3UyiUdjWdSxYQSzg}q`?r>B(cV`AIm+vM!0~SRd4G!M{oY#n zX16d<`wisBucz#GDs2N$u2(9A({W?vt7UmhPaPj4P^MA#9QG*5Ic-1f$)bp3KR!OD zY#8L~>ktr3h79?6;81DG=5RD}9#>3G%;~lr4zr1A76vq~z!RHU#rR$0$84Dq8p->neCR$b$g~ zFm}5Q76Z>=tWT~G@{a9U4EPoEH$tH`*T&A~Ej-WUI|lVZuMZzQDdRm=$pt<1vS>7j zC(&ySg*-dWJr&fkWv|zerVJ;>5ES}gvk%`N@{U0;8wGEC!+(hP^ibfh$Gx(wX0WAU zfXetD#%@BL1yx#Bt7YI%!C^G6!Fv(A*&*;($Y^yK(vS=7`}TUQw_6xT3WhRiDxJxB zAlE^kTq=wMvuF+4Y_{EU2*xl5V<=RQ%8d;CNu7IKE?j1zlH9iLA`XhB>XC?AF|@n8 z3%@NJcuQL_giJVxF0k_sx+Prg=ey_Uxq|~$FDykXx}G~fJUj%9RMe6b?FR@0v(u`S l?e89SNJS8%+O&d;pHBD+WHc%_#YA)S(J>F?B+>c<-mv-2mdRlrX&3}<@$An+RdsC0MPs@Z| z;JTDsjWLe4R!Dv}b*)1rKo*9maJS5qJ5x44XfoY~PTPJ+-)b*sk}lSAJY0$~%6d-4 zhiRg_Y*&vnRFE`qrcT_NY-*E8;EPn9!(Z9r!*`}TIb9)5i7?XXpPR*OZH-q&Y&PJ8 zP;;0#C`}f!V}C(5Vkbj$Dp!&-aGN#EiDE^CHc^5xWt&E7oH|c{Fy)X_YNbJInmSvU zJXeT5w5N%WyhePgTp~XgW0OiURU($aSC+z6q{>=)eO^ptJw{72Sa3=*Qy<}hNe?3r z;eA2hZ86%Zlv#o+#d%%ba5cbOGPZ6yAh1 zgF?zyE9ZVW?we8MbvWjIK2wr3>x)L^cQfvqR_K60=!i(cQYt7(ATUoU?37RHhd

    4Q7uaX0CUP3n+N zzG_9RNG5QiH9BT4MSC(?m^5CPH$iqWI&3N8ZGSb-Rx8P3HO^WrxnMg>i#F3@GUItQ zLwzXWY%Z@@II2-GzfdXJazEmDKS6IaRFyeclQT(#F=?SWJas9pOe^4UGb>OXe6l$^ zS~Ij)HQswh-*z>)STY(p6G)CPU7I}SfILoxIx$xvSdB8VQ!!PZF+6A?K5H;TV>F^h zD1TFiD{G}e&}ccBTPcE!G&2AI0E=`|PE!E?5e*0W3E{MeOkDNvy@oV@_ z{`@=b%ueF^T+ftsS}Tar;z8afAC36wU~y6Y>n9iCIoPI$kr#r-V|-D~TrTqb<{o&s z&NYm)YQf&|v%1`k%hq(Zrs(0=V%@Xy_K{_j_UpWwpZUH#EB>cYh} zhE)g7{Cx4u51SD{gjFL2MfF{;t%N@h1Q@PgSTl6p(7R{oI$pa_ByB4ws8`j$=HrI# zUK3z2q@)-OWLvKTG_;B^X$&c1|9=|=J)M@-!AE?*3J55)S_=ymij)e&(2$`*_Ywl= ztu4OwmdZzul$F*1g`%6svnmv1T}6eV!v9`V$mEUrymjo&@hYXVQmcCKz{=C>_1z$- zx1vJV{a4cw@5x8)bET`^Ql*q?wM7pKc={fdUSUh=?Ii=|;mgmUG;Ldt%74XA|^8SEKR_1Sx@ylyht)_rep(05xGP)eS@ik4}(#xVZ?}tgG#MLVgWr>-Fn-TC$=8@VCvn})YOR( z6cFj^zBe9AC6Yei@QS+Eynk(b+q5AJNgn!KZAaqc$?W zvk!w_p7b;lBfY{-?tk2Qa(m#V-|gDa(6ej3SMJ!d_1KmZn@%5n|HDb=JSXg<+qZ8w zHeMV1<+r`kcQ1#o#lQ-|ZKE6J?!9vI@f`ku+C1O@H8$S<``wUV*J4gpkblw5r6M86)bPElGoaai zxE?lNEfC-!Zoa9u<`YkJ&a@fX07{IJ(FFp5S!C=0kodDebYs&OW<$_S23-)ZE>(*% zIQb2+;<6<~L=N%U=UCK)I4~xot7F()E;wt5ZL50`6@<;qPD_X@=9}qsHJ{1ll$3xV zXF!La%cdq2^MBLn0y={!qll5<*?&q3?h%!Q85Qz-H2d^Tx47j4;~| zk}d`gC7r<*a;sf5G_gE6r*-~3w1hUyNOJ^D0bfiZmw!{8M2i)d0|#-4+-KnvH7=1M6F@-F`DzFna=tlt9s#-YR6L+~fk4LQaxyi!wPNVk z+bAtbdq`CMhpV-hba?JE9(<`>gD=YsJhMwagsD%*f28(PESTY%SYPLfv^dLa<_d z3Y;=nj3n@tC2uVYL*~E{N&`+h+#tRX^xP23b8dPpL%y%>Gg)Z~Z2Z`#L(Z8E_@1_w zy@>po;21>?mk)YGT<8}~Tn_n!q2K!ri&@k-A%9zBmhrhI8px*&_F@?c{oK#Yrp7Tv zYC2s61D$&V_Ny-33*8sIW2{CtLl!TfGxL*jZ;0{zT0lhSO#7Tg9gD$VpLA|@627PR zJ-nRYxX)^)ax(a8vspAYkd#|n{$~sFzW+ChX&G#xvD7Ro(d5D*yVDZB)EUmS#Vn3c zWPethjrsUI%kP)12*jMJMJAU4wg~ienD9H+U$Xx&GsAUFdB^=rd)A( zdEH#+;=%9P3#NRd@m9O3Hct#OFLjoK&2xD^vjgYgwmgsEV1Ub4I{d>#Rt zf}s5NTkSPs`JMUS24YjF>8AGfr#0d`Wv?zEO@)Jf+3>Wcrp9Brmn$~4dgTiovt+6m oxFD~5`NHg}V;m>~_P?or0DTyi9~KO`kpKVy07*qoM6N<$f?0bhga7~l diff --git a/public/images/emoji/apple/cat.png b/public/images/emoji/apple/cat.png index 47810699b50bf49f52085819bf62a5f079ad3a92..93ccdeb2710e47ecf6359ffc1265dad1790f939b 100644 GIT binary patch delta 2074 zcmV+#2<7*b9i|YFBYyz%P)t-sM{rDbO8{g&0Dw{e;g;@q^K>@3I z0qwdX>%A^`O91M*BFmW%<+B;~%}e>!TDgY@%a;MomQ2NzY``BNYXab*Z09;8I{oH7U zXB+9|Lc`lSzkRqK;*eNx{?~Gh#tY7Cjai9f@w+q=7y-3grK6Sw4;>&=#SCS z(bCe=kmpf{0Dk}gAaqhrQvg{*ohtr73K%lQ^=kdLWtf4nj_S1Q!R*-M+jhp$#Gs8& zuK)lB!bwCyRCr$H*k^Mi#}Ni#A}n{oDDre9FKT9Uj>w5I+?^!b|Nqzc?H&T64m&5i z$}WF!v&bT_!)LpD0=BsK9}08t|0VkWMyY0B@9e)nIe**#*O>jY^Y{9pXT@ZCb$--@#DAHJD^%V8JO3Fl4vsy&B z5jkljeI0b-1nPr_Wp6cQbeL@wMJI@RAt z^wFKsLnJU6sfw5&QwwF11B?(^DH102#OG_WVw)a5{8cB z_&$DwVd&QIK>@?Jh@2B$v%@TlM8pcZl|b-3&)$aTIkn6L?u3*vFx1XkB628T$_xx4 z!{Km(7~*R(9NL~A)*?f~a56n~ltei(c`01SM=GRD5wj@;C`gWrK?0Gi5M7&6~%0(B+p6W9QPAhdU&eaYlk(UvW!DGfF@*&RFH(E?2QDfKHS&temBd? zJPjQ{NQaqg6|jgJ+EiVVVorsN-LHvHVU%S}0?1~EnQtm!txz2o7rH6>9ey(Rw3|(0 z)&Y6SVdZZepf-~4gb5_+VA3>kED&-3-Q zab)jW&#pvjmW~Hh=R?^BS7sYr-ih=XwQZS`=`G+$BKin>NV$%n%$t z?AOcZV#q16gM=o-;(59D>=%g^z-Oy%>q|h~BII8z@9(PTLZyVDgy2+n_sc>-K0&hW z0C*EO0VPDxq#pnF_q%0*%}WqhHi3TkkKe|10f-hQHL0aG^OqRwni4`3Pk-aPyZiA2 zrNn0>RaQKV@9*x$Pk<%_C4hc0TP8mRT=}~2XXh}w=yDcIp1cV@{s;XBIJ;nl}HgnJFh+<$4dkhCI6qEShZ zCNB^|eN-n&f}~MCMyLZxii6$h++d>WP{d=&7r)?@;Q&mdTMlLv4@`R??07L*c8 z4j@SMo5y>v0ORqS+sk|$NwMhcK-Rk)U4jH43?WfCKts2#vA|d-pMR2*$|!%=a*ljl zWJ)3`*)aa|`YU4njDK<*MG>Q%Z1EAmZc3$yVn|FuBF1*sUw{4m_g}xR9UGEL1`Io* zL_#gmG4gC9sa|B2^F%F*K<4z6onzeG=znP+M+TS2^Risb=ZnQ6 zi>X8^B(JI*zw(PX!zElVOXK)*pi5{lFnh7Z-+c z!?B2h1mQ*t^?%whaPhL&;i2srS>1tYb-ETrYcS|`J_1~1SfVOqwlFSxA3NQ_z%prc z$1(>P-I9;B#}{7HJwtVe7N61k{_0@QYRSnoO{Da_-nlf&Jj>9W%g)ZlK^K42p3-hu zo!+~Pi+8&4b4X{LZXX6;m<{~Oc%Z~Tw$e`)>`{S#IH*S`HzT>t<807*qoM6N<$ Ef+Pm~dH?_b literal 3732 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 biC%vI6C9|2Ze@qJ00000NkvXXu0mjf-|xeE diff --git a/public/images/emoji/apple/cayman_islands.png b/public/images/emoji/apple/cayman_islands.png index 0a6b2e7923f7074000d01779abd2d7f4c21207c3..f490fc3fb9ea01802e2c2ee7ab5d1991c068ea41 100644 GIT binary patch delta 2053 zcmV+g2>SQT6_OB;BYy$TP)t-sM{rCL3p9R*qz?)*2?8``Vu?^mY(hX?rKGGO1}%Gh znh**!2m&z@4K-n5ig#m$ifn}o1}|e@g?VR&92P+j3NjE2G#?v8%UW3!4mM_Dh!zz; zX=RItaC99OOS;I)oH;s2QEHG02f(1Af&dD`hlx&3doCh#EPp6_6&7;*|Nj;WS{xE# zF(q{l0#Y9oWf%=zDIIMi7-uCKYZ3=m2?0m)7#IlxJ@Wh`5ndh?O#VJL5Cv4^1qC1&Qz;;2{3Ij)XkGml6#2==Ar@UhIc+>Lc;9OV7gN0M>3jhEBCv;LyQvf#oU#|Wl2%-xa?f%`>H&>kJd;NOL zP4JAtuz#VgqN|^+t>Uei?$v6kLjV8;%t=H+RCr$P)@5_tRul%{dTsC8PR#6plctTN zWoBk(W-~K0GdtLS+oRQb*N!%>(@&j_-_hr1-g9(ESHJx?^PJ~AhgMTV&8Mb@_OFPV z`uc|E*RQ*pDl2>Od~E7^-P}N>{hHBG)l~-qZhxrN>M0^S>fYX_uIBne+iKb)lTaJF zyE{7ccIbc`)6*u?$jIbm-y~$jGzIG0>O1J&y9OASY~Z8RQ6i2|$U&z}gE6f_v;sb} zkIN7avXx4L4FFIyyo#aka~(N?P3>X^?J34JbGT zhfzp0lgfydgURz z&3>z33X*zpAdnriC=`CWSM2PuxfBM>n15tJa7e&^q>)4-^GyW84x8Jm)?DkQ*{pPI z9mB`+xYv@`iFIFWLyO>0t`b)`ICuv!??JTpUx!66{f;Gh&_;JtTsg>TjZHXVESn`h z5e<3<=2__7Y)me11SSKC{Sc~tx4L0TY@JzW5_LDjB(r;#WRoQm&7;RUaqXH z>CwWU_d~M1Ra?GZ@QJhhxo;u!u$+)zusxF1Zoy&1xu&O9V7T zI8v#2z_aX)T7Bz&ml4BMDgwgL_?acK-=Zk7>{naVOA<$>{W&woV3=fVuS zd?Vd#CX-%Frx$NZLn6`FN~_K0NClkkC=QMJED<{09UU7rk41ad{3ud@(&@u=W^u8< z1SC^atZur^5gH13W9#}HWYOpnRyWl04wwf#JuyU^A8m0q^BJBrG$Ji~-)^(n^&xp6 zX!kLVdB}hn45&Y5qtm0#QGauYI7d9DZ*M!cZH;fo)FSqeP*r?y?>H5N9qfVnI&I(=d}j1Um-)PP7e_9KqCa(Oob??@lRL2(}nPXT10yN5{ZZ{ z6oSK4D6Thdj*e!(Bn4V6I5?vsD1cVCzny=Ntgq~@SftUKOB5D2a~@7JdZ!;2#<~fB*y- zuR6=y%c=n&2MB6=dqJm`H`eAX=vfRtNkwOQ85NADr@Fnhv8}fD1rdA|oiNHT5D!PD jmJxvx|MNWOInVhU2%o4bUx1?g00000NkvXXu0mjfy@#vW delta 2757 zcma*o=OYvV1AuYdWu9}+=$y089%r0QI&?&2-HDX!z0OgTarO*nHBi|ZXGEQlBFSFS zur6{&mn{v#`~C;-`}_QSfASzB0%S=NfXT)ZZ*q}fX=V}{eJj`5G3E@jTB6@g0wEKL z#3Ep3U{;kg%qSiZ8qB4tg}n>rQiJiI19PeH@o0nCRXABulA>mwZi(Jr>F(~S5D+>x zIHlX!i4Uy7%dN@9rtIyJ=yoGXP~e=0TVgUC8crm~hTP`iM$5}uB?rWnko?1f{4-ih zE0f}Kh7!wU0M)n9f#FEl&DCi33> z`X^7zZ5#r+Kh7Cn_UV|IwzG{@l?&qlSb*8Am1RP?fS2KX*OX-mO41=JazqG+ohZzf zA8aor;v*;FuOJyH26H3M92}&?<|K5r0gvKi=~)20m^MGBkne(CcS2W9+5}%$q93Cd$Dm|Gd8|6 zr;0o|JynnzwT@>PYH&kb&hlP^!a_uaE=?Sj2 z{IvPatqo`A8Kt?VD`h1{7CGK-#4cH3dd$r`#qR|nmWtZJtLs1Nn%m!fShKXx7UaWq zlvZ$nInoUbipwjLwZ*bxOrIeIqx0)!U>8P`5@T+FDBP&Cue?^6q~Aj!|jR3Gub`&UQWHR9Pw9;p``in{7)qRUek=HKjREEX_BE zf?dyKU8+8?;s<#Kgpu7H(&SV>&r|+`uKxRt`F~*JbhiExfQ@ zf?7S99=>yUm%7w*+iKK^`4$+ zgdxFjFB#6u;j2MtcAB6t-siJr(-aV^rlDu%DaiKgu~hZkhbST6_8U;7eWll>2h4hq zD?C5HX?_ci_qT2CvKdrtY|Q8t z8o&2a^XN_RbDJbpIUGJRqn^}c@|6Dsqw zlmEuYm3SokrLpZMGjQ%6K0QX3Sh>>oJ(|@q2oa}c+eS`!rxY`B)Xz56a%XI1n?|Ah zu&;aH?Jo%AO`A@y=qia=92qQ5 zY3r!}2?<{D?~y=c(9pSqoiEQkM1cHPgwc0&w|C+JWj*c0 zm0&sU9t|-uF%nq^n4ZSYoCUiT37TFv?(f?lJ|yLx7AE%XA>kIud=8wYpwef2(vr^J&;6 z?d`;t#JzNRTiJD*p{lfgrw=GNl9 zI>UtP8Uq1Yd5Tj`k>^aTZoi|gm(c#%u?B+j#QZc3#HlWr0-b?s z72D3TQ%dOMN15bJSzC1m>k*q*OxscWuHHm{%x^|EOLZ$HZ}`$|MLf#`ONnb=9)GG? zw67cr-QoTY53l&~p}kRf^uFl9x^X>et1>m^aqg$egXTP>?lOc7b6rk$m~uK)$zM7e zD9rz}|2oxrOY=z+Z{#{W>t5(Hx5PgEKFNzCi+G!=|J#eLqXSUS2| z0f?yUvYpM0c_&kUapclB0#b6O#K56Dze8IOU>JR#m4~S_5ETBRcRA_)iA^@?Wbe=L z>X6H?VKG?q1a@=tcUnJGCm8W^()F3?%J-~!E2qiAu9 zS=-wK%j{~$ilZN0cQ)4}KcbVSd2&M9s9UGrr|jYFo9V=25HUqu)&N42DAkG!Wh|Nf zNId>Zu>F=uOEMR>eayKu`1PF@{pw8HO55LnLM&Juq+N&g>UJSwsy1c}#XEe^P0k@N92aCJ*5_>W}RtHc}cRy}V z@1#ELL+oF@_fx=wEa3Z{`SSe2X6(+QGQ_%>KYKtb4CSDt<>C>9?j5lluYWZI;=R>PDmM>GT;OUP6=Ii5!~U+)MPEvTBXQ;O{i&mQ~( x8|U-L)TXQ%J~O>!89$+Z7+$UZ==AmpD|0cTz}YU0^S_5?GB>fpHX6Go{0ADMI9dPz diff --git a/public/images/emoji/apple/cd.png b/public/images/emoji/apple/cd.png index ae561515f85511dcbfb0435c2e6e7fba1c2cc00c..bb030d4b9027e27f3ec7c22e79417b93556e3e81 100644 GIT binary patch delta 2102 zcmV-62+8-h9l{WhBYyzuP)t-sM{rEy-`(Zk*xuaR=;!A4_VecCK|BwzlZv+Vb-9 zySuyO!aJGpPr(&si~`^w#(DJyMM*1`u^3i;iqs_JQ^~AKN!ic1dq`$_foRGh$sFszMu&e zvTOrjSMPG~J-wIR_kW$eGY|wxw&P^4rTj=vzH?_tnml~<+th0HY7inpwO*^e`hTfa z18=A4`z6Qsn>$`u{d=tHHHpwlii{(b2G{h0zbX^%Kz~u$N0Wnti%*}r-6F{qtevp_ z$4s*<<*$DcD-ndi%3w9aKbkNABYqtpA6p19P*JqoNiI~Wo8gO0z2Y;o27O`(Qaed9 zA+;|3$_w*Vo25#w-WteB4$5ikoet*v?bbuToSj`=T^(~a8?hs#>U4&!Vd*!XcN$uM z`E~~B?SJNMfLtLsgMO>@z2_XSRQsb5L01-X4$@wQ-VI9aJ=cev(f(uUU;#M?(7S$F zdQUo1ec9h1?W5A!655}auTm76MrbggW0soo!a_>gg!YrfyBcRWF>n( zVlq>R9G9V9TT?YsCzL(zG=gP@dt)1!$%I-A=F(put|H5mlfIKiJRCPV0E9v*CZj^@ z4j>G-R%mYz3`ur6yKmbFlVL*}gZ2A^LB|i=rsezdb4!^{w$hu6>2x|CkK=CJ6k28A zw0~Mdx9_Tu?;#O2;8N(s((&iqD4Wvza_^(Shrq6JQXuq>BWI-h==baIf_?) ze|ZUrB~ysb>`wm?qomRvuX;;<=PW56Z-0J?xJpzg&!p@yWEc%bN-0Fytnp-7uh%ow z;gTxn_kd`)@w6z?cpMkxu!K6cj1XCt=Za?wpnuiiV8pj$ zy52XIEv39RQ11vK%z{VQQ7GFCb=fe_W$74+<9zk-2be6sX6dGf(1~Yr^PobUkO=@o z0HLS5B*6|-+@>2OX@)ebcqo3QO5;jed+;+G64SdLP3P(qbq3RW!B8nm*Eour)ugqTk+5t7dL z&MjrF?4jD1Sz zV5Yp?jd60~J_5%`^RIi5P|8wdDXa+bI!dS|!w%B#WO-7gV}^`GjrM;+0_9pE(gQ=Y zX(+^S9XLkPNx_9yD&3Fv*Ca#HWSj~qrVZ7xP)jE<3c<0^{Wp5*{jy1kEqnGWP0Xe< z?BMEIfj+f#iC_WMwsgla&QXH5jr=p6e*VnRrUXiE)!YTCTf7~Y0d8J0 z!1-)sQPQ4^EDH7-Go{x7hg1Eogn=kQR;-REVJT!ZmW0xYG<5>yzo)pYmJn}oYYdaE>BckoCzkgZhuo}HR gY&7`&;qQ_E0D}Zl4VjHc7ytkO07*qoM6N<$f{l7L*8l(j literal 3766 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 g#>7A=;3Gl}0C507*qoM6N<$f;1}km;e9( diff --git a/public/images/emoji/apple/central_african_republic.png b/public/images/emoji/apple/central_african_republic.png index 23d4804d82a932fbd3abebf07dccb405003a45e0..0201ef0f0db7622d5a4b652d77bb54509a6698e0 100644 GIT binary patch delta 1732 zcmV;#20Qut64MQkBYy#;P)t-sM{rDkX$x9yk9cDUe`f=AQxd>qbzNyyd1Xv-cawW~ zlaO-*V|JD+X)6O8Nur1qsHdlrk&%053U^@%dSwj~R2CC2UUOdueH<@ib(3Fll5KaD za6TG2OK`e#fNT{haTqIdA}C^XmAh_!MRPdPssz}s1@_Dy{D0IV=))TD#~Qnu5TJty zj&%zVek#r;P;9#iqNz6*5@ zxHMJMuou)ELBL8+VL^BM-4;lvNHBFR%%qtl;q-n0001R)QchCv{0;=*hp?V~;%+iz~8N z?5_w#NhDU+Q!B|x1DZr4k(JbHLU|AtR}yQfWK!4lM#GzU-9?khB(k!u$hG%OjG?ji zG8&CG!0^0GCZiHkp_CdFLaUpOEueH77KR$DXn$arQ7{1EieVV1B7+iAej%a%{H}Pf z5{Gs1_~IDJ#x){GQ0~2o5pXIM0nOldY8W&Kz47t6c)uiko{Zo*`BSce$Q{+|^*)CP z4w8$o@)9(o)W_qUXTbCDm%-HIeqAIN1*EV=e55ftH!CFA-e&=cMVNe=JklNLbUZe$ zs(=27(h5W>L8usj$ghwQ0`1=1Y?`L&Bg7qb@3>#A7qMFi74a%j=%SHtZr)U{s38Xt zfa(b0B7(Y_@$}ZP1`S(!qf7BjOAt!0tJM#5B%h{|;3BV8%WAf}g}FOCW@T$SncacP zySwI>^U=Zq32s#6<+d-KDbLM2w#}GjX@8K#c3kTqC84xGgWx}-qbn033{MJ+0Kv9j zl}0sf3;#oDC5rPE77YWB=+F20NY^G)5 zfN(**)f)0^Od$?o5?Wfc3}yLyck(VjCVU`5D0d%Zg+MUVVvO0g1Lcu)!y);!@P9=@ zl8_5f_@cZcCjEJl7!>l6wb?UQz)(CO`GS>Db* zY|-UKuhaS3K5RBi%~EMTpTEOO?cRQH(HS~I3ND)dg!-QbhXZJ1FlZm1oHRKm`u4ws zo{tYS`!=C$@oPBj`vUsWe%-V<4S$7U7@iV~fkA{O5*Gy(Of&g1ZJJgyrh*KJu4Ec0 zB}AO=CRqdtoP~=b*f7}sYM*mX;~B?P85DCUP6*jO z642|PJ9_cO1>3`(;v2nW^5d!zN?M`m6bE0EG`pm2Q<9)EZG%WV1RP^yT7Qy|GEMOu zS=I=ZhoJ-pA!P}t8Op?I2OutS2vYkS9bS}_q+!tJUPF`Bgv}iC zqA0osHfmiY-sldr4a3>YG)-$k%k%Xhu)`r4-GO59MubACfabuwbMuU47?xQ;Sr1U2 zFNzP5_|H~%Q;gh0^`f*~m46iCdFM3)r{IpR>w|TX2ao?ir(@fXqBy1}^U5^KE{Eal zt+(XRQb5)o(iya_>|2l%V61M3;gH21!@z)FfR?uw8TBFo<$psqa2#A`EDY8j0>&WY z>@K8>MFP?X7@FrrVVM@KhFBbeW10mNYP2n)4ug&F7ICDi0)N{cBY%wSKwq~( z1%oUu)sW|HZm8hLkeGx;H3Va`d4qh{?Q|qb)fA=Q@AVW#)1(f= z1f;r-9R&Q1IK%>IQ{pLl{z6rH-L6cp5XoIdmE2PS0d}0RO|?p|D*OZiyW|}+p7lXs z`AJi9ulG>=u1Wl4$35|B_;lGNDhwIM;e@4Vk|cF#{3$e?BH#CmkKE;n5%-i%{`Za@ aJN6sLFdkF&hVQlj0000=eJyfa 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 Bke>hm delta 2070 zcmV+x2A6)}8jC81($eQ77jyLrmFamcxIVs3|56dVN=FM)0+ ze{CnJa(cUwfLInD$hvpPzIlpcI;CfFV{V3Mbc>00Dq(AV1Ah}M2o*DYY$nROcn%gd zrDt-YVQmH$ILNzn3>Y+$KuvaICTMevWpIo*L}FiRglZryr)hMjYIb~UCCs^STNWVA zzj;>^8(kSAcqKDn8zu)5EC2u`$hdS<5*mYXDag5Xpkr@sa*bGHeo_$_sBCqSK1oVc zZ(wSJSY>-%Xn%lLVtZd4B~%q1a3e2yS|@;ph*V>W$+>lHca3~%BwiRIt#5tExq85- zdHB{*_tjDL(@^%*P@yF-_0muB&`qHxG7lwN^wCcpG-{(IF%~Uk8!~7WEMgcgWvwhb z6f0l~Ay)FxPZB6yqbD<_FhH*^Jq#mPsw+8=EIAG&S$_;8SoG3MzBx^=F+mwHXC5_d zAvkTSDmV}(TuxbL=d4Wy7(t~cHKr&vwlhQ$E_DYSO!3c5_0vzNC^oz}NxwHyxi&}m z)KUB6Qxqy+2OUngHAeH%P6QV~?#xTHGDDywF|#p14kTFf(Mhr}LAp0e( zKdCD@Ab&P$Ojl&OHct;HU8gBG3nEte;ZdI?FBvdq5-oGBFh8a%IrGs>y*Ex{79R^B zQ|`}J>&i=xEIF_*KN2HKNLPA;A1c+tZS~zz1r#(LHErk1TkpC^=)OkTtYFP^?>Mr9DlTFg}eRDmOnzwPSTROo32aXv~;Iqb@~sdw{ZD zYk%a#NY1Ts*Q#6P(_euLOius+0AX}ePE!CA?DnDpCkqIz{Wu;53tXMrUiv;V?$PCe z6WO#M6ljGSEyUF%{ryq&k5Mh^ez&v9lN(5Pm-12MnTYz`UGK4?)pQ5oo#dn9G55n& zrT&~zzu=iYt>T#exn6Pmu0?unj${M?0DlBpA5lqsR1VPi)`O!j|k>3`dc z-i%my8;YNw-y;!=W;`*7-W!1D4ePapT5sm)qLf4njIQI?iAATNp883X}S; z(au%x$^Q3Dn)N`ylA-#>#?HU~92^|Hbm>fYw^*!Fsm`6daYNv&0sL1=Ds%X(vy(I+QmKf7YEm;RBv6r>OK56Tme8l#t_yvAy??zr9e5C( z?#H{ngXr~o5gnOKgrNM5#d{G%03;_$ZJ^EC?2MCLNjv-d`@hE7^iz|vuC7q2lp;ZZ z6Dz1JDc_U7ZMzBL%DMJXfi^u|k^NrA)?{H-RZ>F2&Tq<^3QZ1TVoiywEZMUL&bD`D zW6D4^_k`O4o|Bte|v&u#=pUk^@k6 zS(6kwTTBcmmIH~ae4nfcAW0%X5`e5LN?-MkB0k;*LiJ#V3_u^P`7j@SNb5f!61f0n z+Es)gvLd*nb=74>QhYE%mgKJ`FV~Y zeAmfB8rrRdg0^rdh0SIU59Lx&TACFkpdmKfB?wL?tjeJwToBtFS1K|?t5-{9asL@; zmm6|J!$Y`@#n9nvARTWZlpa5$Dd8#jO3p6v*N4ru{#ESrC^ zYY^SoIOgV0&9zi=u762NogXbF$GT^8IP_e*nMq6aY>QUQQ&Qu|F@$Ho#u=1MPLb*j z)HpIT0&0n%w-E$68j#eaO+W*(2v1rbtPTQ!3`Zog+K;%fAQ75Vs+*X!N?enSjDUpJ zp3-PwUpov@^X(z~*{>`lw-H>8USD_g`=dYqqPm(j(9^RY=YQI@0lqDSw-FK|w-LP7 z=y@jM_zy>pecRH~Y%my%#xJNC4f_YOdhWGawD4MkAYlr<)}TcI1 z0&2BphD`PGod#BGYkT`XQ`)bilVD>GgGtvg>^s9FWa@oBvweL%J*Rm>d}q(}S^WCA z@r;qZeC}tlrr(Y-ofX3Tr>`jYL((00{xA6(yEQ1QWDnfdQvd(}07*qoM6N<$f;yw5 AI{*Lx diff --git a/public/images/emoji/apple/chains.png b/public/images/emoji/apple/chains.png index 50cccb90a9103235919b9a1d396f412d9e93028b..f64f581be36acb3c0f6ab4470f5f67ead77bf6fb 100644 GIT binary patch delta 3167 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 FV1lo}BEkRw literal 3714 zcmV-|4t?>7P);vc5`m@^YV|4k9>rUsI0AhfP#E}fRvV)LqtVjU|)4~aYaQ!b98lke0*hQW^Hb9 zX=!R_W@S7}T%Vnvj*g6>pqPt{i*|T-iHeGNeS(jbn=33Wetvu@Dl1}TXGBLzY;9~d zHZ+5OcsDpXH8wV$prRrpBzA|Hzrn;D9UgOnlW}ZjPf$>2Yj00aP)<=(Xmx{!m8Dl+ zWLjiyO;lX2v9XSXdM_|Bj){U{VP0u@i%LpKlar8ee~(#PTa}oca(RJIR$XXsc0NK! zl9-)cUtVQ(hEh^fHaR>`QdL1vVoz9MK|@5<+TKJ=REvXmiH?$Pd4+6fVt|mNdW@c1 zSW^MhlrP&oGdIYkdTq=@bO4XO+iCOHZ?Y#rL2~fm_k24-{a-+^!Bv2xg{heoSdMk zu)3$Fsp#?d9UdROzrbv9bm#2v`u+Zmh>FtI*q^JnR#sOyIz3%sWVOT5S6g4Mx4~go zRQ34!b7g2iIXcJ9)0mTyqoAMd_4bHc6Xkjr`q4-#LwBk z!^?z!;qGquEpJPU|!DA&<_s~ld8kP&)-pHe2IK=F1xOK0001obW%=J09O7Q z2@U=O0R|}l0u~^F5(q_<-Vq&WE&eDprizT%pEY!5QnLOGdlGNAKSfpUlH8Zd#?jBV z-#PXEDfp%Av;LRKi~i5R{zm=1$H}*YV&s74bMWoDjquWD?vDJ}?)u)f>wew*?A*=g z{H5XTg3ntEL$&01B!}L_t(o!*rK-SQBX;$0s2$ z6T0-?L03VV2#BZ%h%5F3dwbZmtaaB_*S$UWx##}4^pJ#*LLiicBE3oPz4xjV0To0< zK(V0b-mv%Vkx6FWzmm-4Gr#v&zVCMc;IFl@CaWuY>o@=ZPS}+Y{cd@uDIm8r_Arv7 z68G&V0_aN}$6|Ly>KVWviJD5QznD{n{RLaKCD@58E9o=xidpK(cq}94Tk>@Dw$eL?$=kNvQi$T)l^F_a*#vHyILH4rp!9jMr zC|Ex@j?<3ko7?$DQ0bS^LxP+3yS+L96&j{e4!e zgQ2gq`VD$UP-YP<>Wu+XViELPT3uBy|NcAUB5aaYp_=9Zb-Bc5YOD zwXS?XFsQSCYAq$uZol^fjHx@=pt|xl>O|%S#T?DSptXnqTUu&ED|rj%)?A`i^7AHk zsw#r&I+OpmHFa<`F3qr-_{2XpU?rPql^<2nyHC#qQYimGXN)l{2cT)d-HY&Zlx`+T zsPl)>F`(m)V~o7)m%UX%@&X8I)d(tkHmL(T*IHUyf>Z(TTM|M3K1WoJa=?|!5BT<1 zt<`TwisS?kvKvY&OunrI-fgK$cQ~g7*xr}s&g-FSoA!=mp^(8zX)Sv&RPwy&ln#WD z>rk=a+4x~~_q~fB#;bIdk4I)jf3hc_rRPM6RKQDrNQ;O_Nw0``E+?hR{t5M^Z~RS; zkC${W73rSd+c}s`MorP-5@~%lO@*t*;ZV5Tmoapo9kQn&WE(M5U+Uv^X0fnv>}lwk zj95n50W=lS{^^lmS!J7-iW-GNasE;Cu5D}vG28mbxfQvk_bH>XkH<#RM+;eH!#K2n zoHC^19N$AWzG~?yd`ml5Zbw?+K}6|Hy|~Td+MZEqEPZ4sxuPt`0`1%ePjpHuM4kkj z&k;i@DjuMn?@(LvE#&N4dx`kV3z4KpAD5cR!(=zq^MCzM?AOiVA%LTAcq&b_3)FB; zZObs$LiVMRnKM@n20eR&=l@`c?jub8CTwdia{`EmoVh9Mp5b4-M$@ZLdRP_`Fwl!1Y)jY-=r}mgS{&>_;)Nsy`+zK%Zb8Z_F~^>jSU zBVAITS%zp9=%SCXxPqegP>mKr9_A;~myV#iBjVZc_DZ@R4K|}+-g5WmCS{i$K-A3p z?*hR)uJ5*ouojb5;)YrDk)KhOMEiJnb5!MGrF8PSPkM6H%d+3Rktbw~l*iq6IyhX7 z(#W?ri))~k1fsX4s(Uzv(UU})q%SVuTXTM~MWjIKRIwyGZZ|PFF2XM*++5R@%S(&- z8C?XFU;#`mCQW`EC3E@iPRNVa_u2KC&fbvO=ZFN3$Ob$lGR~;|7rOZel^8Mk$?Fx3RGSb<$_o}w~>R#D~5YKv7f3jS$pG%P0u`|~hu4d7BQeO#G` zS189i`}il~J{g_cZb_BEW|W8tiWinf<)eAX_k+=WGP7rs8vleIh~?N<9h;;!I=@d> z0d(Mfk}ODlcYFC@N8UW9hqM?F^s^=&Y*YlrCoy|vT&;Nulh<5*2diw5Ma^qo!90qG z3>wJgHOZJ!?+fXT!^2jXN@ZjAblb}IgAtxXfR^&9dj zEm*nY_;gcI|NaRVc2%J`iB)F7q-hr~O$BztA4onsHYEXT+^ZMQSoU(ZEQ9jzl}yKg zjZrTBMHdfCqUID)8LO4YR)89#?@w;rD9?zs2oWpXJ8Rt(Mh1z31#2eFmStx#U$by+ zuL37p6EeJ??GUgHx%^;)5spTrV#?lmFUzGF*mccgEMkF4$Z5^DuB9fZS&4&3Q`w>q z)EG5W#8nV6PMa}jLnf#V$->19a&yp^WnD`#OG;7W3Bbna7TiN);?s6cy8_9p9H2sn z#i@7V>Sq{(b--5bg!Q-QKExQT6NDQS+!$=Hjnrau4z6!*2ouL>u{i{{*0%)vh~jJ@ gF%SnhIIyY&0KU3H7mvzl0{{R307*qoM6N<$f{mL~+yDRo diff --git a/public/images/emoji/apple/chair.png b/public/images/emoji/apple/chair.png index f31c21ee60acd69cc13c0e57efc53a20e64245cf..534d216834a0b996939eef1c83773e9c62d3f666 100644 GIT binary patch delta 2844 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 JPDHLkV1hrYSQG#N diff --git a/public/images/emoji/apple/champagne.png b/public/images/emoji/apple/champagne.png index bcb5a57197396f65c3d3309bb4ffc967ccde723d..69348ef0e2cbf329bf4fa1e832a4817f7beeef97 100644 GIT binary patch delta 2312 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 literal 4358 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 A-v9sr diff --git a/public/images/emoji/apple/chart_with_upwards_trend.png b/public/images/emoji/apple/chart_with_upwards_trend.png index 2fa552c36c147e72c09e9450a8a2fb7c915f290d..c6efd947218d2aa43d1be4634d1b144fe363102c 100644 GIT binary patch delta 1749 zcmV;`1}gdgA><8^BYyyRP)t-sM{rEZ*5bs_+quBS$IQ>&-r&l|#;n8Gth&ayz{t(o z=lB``)!ydG)7;J4<>2V=*W>N#?(yvE=+5Er*4f()RQ4 z;N026&DXpsC$<6tzykxrLqpQ6uf}?P$7N>6!o$pzn775z%6~Ed$p8QV40KXXQvh08 zrTmzsNB#R+2}W@)PXGW04@pEpRCr#bmkE#KHVlQkMT*6?r0&aS?#%!HhZRZN6D6K$ zfi(o=;Xz{FC!3D)2VXz``i<)+RrqHq^wDD%LWcn{gsMiah z(StUFU6rkB5Vd-g&EDo$G>pJNgW=`FQpku}JUi&Td4KeU<2(n~qIGmPU=437M)oP2 zMX{HYrw{QAd)L#9g4S-f_SzZ=pS9IlFd8LjbzZK z7s2s;5q}^p7_Dk?-I)qS7hV$;N<&wDU%pR+dZqZpwbD3kPye!58l%L4T9B+>{ur$BF|zyeb8En${_PAGHli ziC(=dflx;U5x?Cd!}}phJjJO}YbU1>)48 zeSZWj@Lb4HAz8jD@%(+}?#MtZN@xom;wZng##BPL06i(cD!T@9G+hNkdrw5WSAjIY zE7PiAOJtPR66oS1C&F-O(GZuu<$5OZgFsVLVzqe^=*+*gYUdC!28{9Z5MiRzh84u- z5HXArNb?~gVi;SrLkMMz6%7>EQ*ulY1%I0|V6Pk~8bxRk-_WM%`FsQd$tsBwFZHu@ z2hT(7x@i{;2rUYb5v4?l7qbK!Eu}<8JG>PdBSL(}*w8kmCD1iH+JaJ7;7g%jQ`aGO zyT?5E^gIWeyF~M_W3*o_S_spUs1gdKa+{JH0G4mr@#2_s_IMGG5R+d1&sezUOqf-gD@1|cBlhg z(^hJl0}H3iAL8%-4QCso+(=t>kx#s{=;QrDQIjZWP@|bG(QxPa_kNhh$O zw1@nnBRxe!^KT-HOxtkzZekl@;DOB+=jBP^6t1K6@5?ptKfL|w(gdpSQGbMtb{Tu| zP$w-hOY-DANMne4R5Kd35qD^S0T}HFLoq11irKtOYCe4xwC#PZLL(w%JO1%J$!@ZNV_aGTleLpiEkh!h^78G;ooT_P{b;akRSj^}Fw zqneFJ?bV5Dv=%bO*u`ul_oJwDcZ=g9=4&roqJgwS^RxO)UBH5dicyq4=9MigXpeTy z7@xt0_7t`^`{ydO4IvPj9hy_HKHVa&;a?~~MuSIaA%iVG1ECC?YJZB_qZwNr+SHc~ z26lk@=Rj%dp&t1 z%IpEd3q`qzjhx-1%>g1JleBAigy#wbjZA&kOzQg-3=riB8veC1jOO-ewx5Ef_b;2v z?$E|bgBl6(u3~^xCr(O9f-0JM(@3T}R~yOYayhQ=it3)KGVoO;avaJ!9sWnzv>JV? r(Z}KAR literal 4351 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 diff --git a/public/images/emoji/apple/checkered_flag.png b/public/images/emoji/apple/checkered_flag.png index 4018cd6abb788c6dc9392d114788fd50981d5454..83cae9d8ed0c82f9e8c33088c64aeecb9511173e 100644 GIT binary patch delta 1282 zcmV+d1^xQt7L^K+BYyygP)t-sM{rDJV`3yEB$btwadLCN%G0N(r?a!OLO(rxe0*qW zYi4FBPfbjKhKf2mIyN^q#l^)vJv|*A9cXB1 zo12@3g@sK`O^}d~BqSux&d%4@*EKaYT3lW#Dk=;N47|L&-hbZS7Z(@gj000CfNklTew6ovzFZHBEtZc^{dtPA=7zpv-mnHk7%16BK_5)VlfMd8tVjy6| z?jH#jzz)8@|9|=YlWZ4{33jjh{d&Cx)OP!R*zaF=lWvuT&+=X*R2&YBHJqCguz+hA zWAv~eT#LVi{k8bfv4IdYd_jZ|1yC6fH2{5mNof@r zI}ukBHd(+6L^%dR(Ub^1AWDJijKjA1ZBf~IUm-3}f%?lteMHH0YIPPkFdvOwiZrg{ zI??$I>wgXnHAW-O5M?xL0-x<@E^1K}ub;4#IZ|2yQ};P6kcUv#ovZ|L`akOdI2zrVYU%D)>Rqn5>VYc_KLz zVUn(^&2U)C{0I(UcN_>3Z2=KH5AHpNZOW zG+3Oc=^pV=))48DMAK-%8P!7AQaMLrMJb{zc%`2$d$yw?(HZD7WoW}g-Ye2G$~P4IL@duBzAT>^&~1ll*fYnO+&_NDSt%j zY^NECV^sLif@KnkJ0f)BiJCl&on56G>67PvqIp9OeT1MWaUnuY!kJIt(ZF{*~jh|TIm(}v^c#`tEvjO~A2*g|KtB6+)#@Mbm zn^k=OoW=6E8b#Uh)J0XPzp&CrV35sf2afxo=+D(6hU_dMB*U){e>%b_t0Bk3A{4^N s%S~c6GdwK%w>(8p(P6)M`9JaGZ}_b@UE(52Qvd(}07*qoM6N<$f^O7g3jhEB delta 2909 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 Hu0mjfu!Dbr diff --git a/public/images/emoji/apple/cheese.png b/public/images/emoji/apple/cheese.png index bb849ce31c469528a510333e1112362c6947b069..47b86af7b29b49bfb0e6f1bc99bee88b8a147fcb 100644 GIT binary patch delta 1234 zcmV;@1TFjd8s!O)BYyx_P)t-sM{rF4+eYxP9`d#%^Sm+ftRC>L7xBG0^uRRsz%cNv z9sl1>|JFM2t{3vL8~@uv^RpxW)jH~t3-X;6{>n4|;7IYU5$~xB=Ys?LyDRdxD&Kek z)^Px?u0O&6000eiQchC3{tDQMb+gMJ2bfvvN|_-DpL9 zJ?+uS34a3wMt7ea3ff#=*DHV46rwsMmv5#$bVTA%U<6ZNG9Pq6TY!TcP{`ZY)9za* zO*nkv=uBpIxUmFBpzR$h2Hg(`D^Fy7Wxn+7%8*QG{RmA++5DHwHWGocIG1@xb5=lP z&>KU!uoDIIlaF`MxuZoO8<1lMS)8#9v9u<~(0`T#mjlWV_xCbdAZZ*RbL`|V8Pu9t z*jIQ8jraF5t;kV;B!~5yNb3op3hA0nJ~0H4a}V|Q+(2|Uec03iPAoa)5VSNeDagUmfc#%XZE7;D<7>f}Am+n?P|?!~RyxiSkGhXc7f2 z)t$(>cK}s~-V2&ymbmCmIdZbm;$t9v%F!5>dAqa-kEOqREo(be52W6{NFR#h_3Q2uu6rL5!0nhjw`Elz2DX$J(jk;@Cro%<(tM)7(jW wcI1#%6xRq?e{Y5)KL07*qoM6N<$g4AJ6od5s; delta 3447 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 Z008^}J8wy0HUIzs002ovPDHLkV1kHhEQkOA diff --git a/public/images/emoji/apple/cheese_wedge.png b/public/images/emoji/apple/cheese_wedge.png index bb849ce31c469528a510333e1112362c6947b069..47b86af7b29b49bfb0e6f1bc99bee88b8a147fcb 100644 GIT binary patch delta 1234 zcmV;@1TFjd8s!O)BYyx_P)t-sM{rF4+eYxP9`d#%^Sm+ftRC>L7xBG0^uRRsz%cNv z9sl1>|JFM2t{3vL8~@uv^RpxW)jH~t3-X;6{>n4|;7IYU5$~xB=Ys?LyDRdxD&Kek z)^Px?u0O&6000eiQchC3{tDQMb+gMJ2bfvvN|_-DpL9 zJ?+uS34a3wMt7ea3ff#=*DHV46rwsMmv5#$bVTA%U<6ZNG9Pq6TY!TcP{`ZY)9za* zO*nkv=uBpIxUmFBpzR$h2Hg(`D^Fy7Wxn+7%8*QG{RmA++5DHwHWGocIG1@xb5=lP z&>KU!uoDIIlaF`MxuZoO8<1lMS)8#9v9u<~(0`T#mjlWV_xCbdAZZ*RbL`|V8Pu9t z*jIQ8jraF5t;kV;B!~5yNb3op3hA0nJ~0H4a}V|Q+(2|Uec03iPAoa)5VSNeDagUmfc#%XZE7;D<7>f}Am+n?P|?!~RyxiSkGhXc7f2 z)t$(>cK}s~-V2&ymbmCmIdZbm;$t9v%F!5>dAqa-kEOqREo(be52W6{NFR#h_3Q2uu6rL5!0nhjw`Elz2DX$J(jk;@Cro%<(tM)7(jW wcI1#%6xRq?e{Y5)KL07*qoM6N<$g4AJ6od5s; delta 3447 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 Z008^}J8wy0HUIzs002ovPDHLkV1kHhEQkOA diff --git a/public/images/emoji/apple/cherries.png b/public/images/emoji/apple/cherries.png index e4186a26415f28adcb0fd3bae8b2f127e0b2b87e..73a53c0f444f244cb9736d0b9fbce40848afa463 100644 GIT binary patch delta 2295 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 a({vd{qs|%7v;Mw{EEtqAvPRo3>i+<9r?E5u diff --git a/public/images/emoji/apple/cherry_blossom.png b/public/images/emoji/apple/cherry_blossom.png index f3a61dd91a98afd85061219dc5b70596df6b5c28..489c5f520a7ea52f3395de6108e746a8233488d5 100644 GIT binary patch delta 3496 zcmV;Z4OjB7BdHsZBYy#~P)t-sM{rEuk+bH2r^jcG$8V6wc9s9m@P0f;re${Xr_bDn zvCwFY?VQHwwa)98$N0PB_@K@Brr_?0weg_a=YFZ{p}O$F*Y=FK)Pu6nUwrh1qV%)e z^wQ?VW{>2K!`Wbd*L$q>cAV;Nlk};@`g@=Hp1Iy$e!W?C^na?-+iRBpwBi5B@Bh2z z|FGTvwdnu8>;Jgq|EAXcg|z>p(Eq36|HA73uHyf>?EkFU|HbbAoz4Hg;{U(r|Gw}4 zlDhxH@&B5_|Htb8wcG!e$^Wd;|FGx($n^iQ*8i^T|GM7)qR0M!sQ!_{^?$7GV3Ylc zy!&;h|EbFGbAO}iZJFY2hT>X@_iUc{tJ&*>vf@m5@r}3hn!?#-mh*?1tv6EtsptR1 z=KrJJ|FiS^pV$3gjsKs!{f?^sahLzl_4AO!?skatn$VUbLG4h2(O+=*y*T23kmrwr z4a3=pftyZ9nXAa z|JV8a&{6Qid+l&*|M-^q+<*V>iPTbu!dhFbau@EQQ~vLh#B7JcA|jgr001g?v1*;yTmi|FTZ_mLr8dG-eUI3hhD2Y zKX%orQ&p$wpVW5e+0%z@E8&Lr!JG@^jT|DQ*)2QF*Wt<&cEU)pHjSm zx7ntiwl&|i84NbZ>FKk7VXC>8;yCw}ZqE_*-~a^F2nVLk@AuPF z&(yc$wDykfmF4vIT8-Aj`4JhFeDHlzf zOgf$i2x4^LAhPlQ3sNgP6beOi>kp8Q21%#WF|3}VC`JcP$QvHN2u-d2Jy6};)vM8H z%+7uVP@M#1H30;Ym8BrYI%EyOkX<4F`hP)JSJ#8)|1AY&w|UqI5!B1a>XxX;QjAGO zKqeh9dIGYzVQ8YIN!@wxE%~0OdLCZ8G9A6cTD`zn8T?k`OulF-vy>p{NN51T5ldMR z7%}ulsqC|xMI#F|@8ElW=?KktalQrz?N^~va4?Z~ZwLsnksK9sMFAjd!_Z4bzkky# zvVv7-GMRYZVSRX&D|L5JtM!rF4aulTUIYmF)mg2&mAMsxb%#QsK-f7EnY4@EK*-`! zk>5H%@;|(~5cdaBy9OITr>Cc+?7UKfVj!!jvnQY(7Hwj zLDF+JlT30Y${}x*6&Q+TagyxzwrCD}!(qD=fgu7K8gfBatAIx3fTK&@2@*>n@w5u0 z_KmumGMjPgMv>H3dC4;!bvm8kjM=>i5-2D{s=~)Po~oO!Vry6e$%MA!`hWYYTM#`W z{Fu#APqdsZ7t3Wk;Y>PH-T+WUFss-5IOf4mMSVBe0Qm&oMod+f7^5dDiW-kyN+e?0 z^vX(1N=}X)M8c_*w;_#26j?MpOY`NKb&qPbgfj>{Idj|$-BN}1NKrF5k))K&W-^&{ zCOLL6W)EM=3=pc)z&lhu4}S@(4MjApB`7^Y;~3O8s=0khM2U0#_Whs&zi&yvN=2mmL>{e-EYd)XPr_(V=f+4Sw zWm!tL1o5wB5Zn>*L@4r>9+u{FP%q@&N?NSnvEgUUwej=Q|K7TqtTl^5ur1QxOLl!`g zZuC2Jd3)!@#sHM&g2n93{k^m{LsVKgI@;RNY5=VA83b;WCpxLETVW-{x z3Wf;jiRAH^$>o7Fw$RRMri-{13kzRQPR>4k{tG(a-G5wMJgm>H=1FY0Apk&5Cn!?n z)n$)VcfOROU;zf97^8_;CjMph>(S!b&iSX$2yAzG?c`*=K0g+hNf$zsipA0|z`0c0 z<5zE_sMF(&LckzHrSM8=IWOm6IY9F)(WB%)94p*G7M5 z-^(`%IDeIJ$;RfvSU#c7RGbN{Tz#ST?c2ALul4opOb!JZ zOGLNVw$eEK@$uB_=HJ`t9w%)Soli7Zw%3ZWOyF6b`*vn!p8r!$(#l*^rl&ofId-eM2-rNT4EMY1Eq^Z1r6hcvZQz%R9 zBG>fbtut!&vI1!?OkuBHDHjuobhVb<+t^rL-Pk~Pti_6Ogug`wE$&#rn*!-NXWWUP zD65XaWYf6^Dznobv$RsHefhGtg@%S6n}3c?l*{Exd%+FP5H{t2o1h;28kf^)Hc~(^ zjE;6u1>881^%RS>Of?4($ucxCQK1_*?-!0 zIayuZiUWjmkJ=|v=njPf8)5*WVTyD$XY&=Pd)UbF4(xd@+9a?5F%Ab+C{${*o>(=v z70(k6dV_tOqCza}3a~`WB(%q?6~48XtdKU$eA>jIyHT9O&tpt(myPCPHTNF%Ea6Cv z#?-hKGlpUt-Bc!F4eq;)4U@#j0e|F>Iq)N3%wYv^*9w%Tn10upOiI|`-IU;7tLOxQ zumq5Ra^djAdu>M=;G7<{n{-x2;D7WG$5(&> z{YbX@=}0i>(`$zTB58LRFfcKWRaS2~@&aXsIRlW6RyAH;9EIOPTC%oiM8#D>c8vrF zwTE^ExX%8B?iN{|82!D2Fq3K5?_MdLs z{odaDPX|W;8f+NCgQT*Od3+f>Dw35KUL67H^)LhtJo=-v=~uNWm2Jwq!60mL0Ff7U zxR`#Sz6`z(6+jUZULZJpq~TFZM@L7?ZwEjtK-iT5!tdRh^2&d%@~G_hkTh9Qj#Q&i z2Jqz#YQ>v`fH*WtN`EuGQvKO>i$q8QgI25`7RAxgftDLVcyFN$K*9jPMpAwLYZpzB zvZN^Vmr*%A0NtcJs3+8t9={}J|cN^yl&VL?X{QMVN W_SRS~B9e{(0000Y>l>rM&B~*~EUK(rb<4hL!8T*WkFt@5h{0q_s8q^%Ix#6<@LMd^tavj%JBBV>Gs0l z^t9mhz3BJK==jp~^|#>o&GPc5$MdSo^}g%$x#9Ar&-1U{^t#{n#OL#=((|q2^QzwV z!szwCsUj_4T{j^}XEo#_sW% zy6=|0?uV=NxaaoA==8Jc_ss0_sN3|P#`Lr0@SDc(jI;E&)$^^+^sdq8n!w_Gr1P=h z^}^=#vefmt>(XY8?tZ5D((v=K&;9hE^rgJuZI$q)*XfJ1;*z)0bA#H1s`R(x?v=FH zk-y%HvCmwB_O|ZthNADW*y*Xy+jg4abDijPo%fo^^{mC)WsUNbxb3gi<)F^fQ*+sC zmFIq_*?OSojhpne()gy%`myNiq0#V>t?rJw>}-yo|2XOY-ie*D7h;(LbHb&vb4*Y~o>?0lE@own*`hWXui+Kr=fA*2S@yl-U z)r$AgW7UO_)1gb$X@uWihQ()ggDE|sL0rX3ZuqR=y@@y4d1$IaV!vf(#aL(NzIWV_ zgz2b_>yxD0dXBwSZrOf>=T&#MMrPocjNOV~iWR>`TT-C#`yY{z3Hj&u-w1k z&B>GE-u2zij>6cs>in7O;L*i390vdZ4irg5K~z}7oR@h}(`OpT!;Ofpj#BZc9kDvHpQRVv~iC2ADPU24DvqJXIHRFmO^CgX z$?0GW0~3rWDlrN;0HOv3k>XFdZj9skR!s~U4+sE7omL^B#Gt@Hl2Eu~W1s_H3V1Xs z6(ND2)Krx!m>L*wP8QPlZ>UV3Z+^*T5QBoKh^63EKfly`8p#}JPNvJ=b=pvc>eBf6 zBmm+4{ew@ZhVgg|0GZ7JbnTTlHUjdxmKMW#4#N1WQo{j6AYrk|aS7E|_HG2U{h9zk zSS*%Ez!1m=9#3qDBqj$02u0bYdptG-0!QlPWD*e{5rN?u7z_q3G$0_3t}V6vPmrt2 z=DmA&czgZ?Vya0b5|OCJW6%sHlZgve$I)fkrCl$U=HdEkpojOCgEciZDY0*D_e5$W zh@oVXun0<>iEscEDooH`v2<-me$;8l&MiB49R2lCaPr|^7K_Ev>FgTGC)+%{V`C_k zNGK9mA`v-ECW8|hDx}M*OD$h}qddI+aPsnHW_$bYV@LigGMf)x<{8KYLZq80ot@(R z-fvFwLPBsvD3V%D!c&+`bV#HS46!X;huvLH$!qvxGzUkZwbOR}q9Zu%`{!o{44xW< zO%9-ovRQ?H_vLXoA(Ll{otA%W>C_xxtHpj1n z{QZM={amL_TQ7!%g)vl7RC7E+GRM)g>iA?F0-;bSbF4fzoytU12v+>OT~ia-G67N_&MT<)FWw3ZA>Y%Fl<3v^nM zEFpmoatom_nEB-PLofGj)7CE#5D!R1AgRB*C&Hzt#h}q*K}xJdk=u}a_Dn%RZDC_~ zqeNF-tre{c%<>paGWq9r;Of0|UlM?L0KyUQSgg6}-CkUDnu5>grztdbb<&2aygX^H zb7Ob6lEv2PvOzkXj?0hXG4g4GOGb*t!go%4 zgxq^rP-m((QDLBk(rDDg&8XwBW6;}E4ZL+j z7=JQ{Nui+sF?>N`s;~NOYwPWP0QK8PXWHsbN>DC(?+1`y z5;DA^@H85YK%n`<;waHvL5j4YsD81n|N7&O>FI@=lQR`#Wmao(v0gdecOyfWo+W}q zPvMX;1Oogvc|XeMizF3HQxX+XA|4-sSQ2w#zlxrejV)G8KYZ3Rw6wDP4S>#{KW{Cv zjbCrgMmQnRX(BU2L-7%04*59h00P1%!aPPqr4r#|4w|dTm6mkc#wwPFW*_$SEDfwq zSG1KGM@Mb8hCA$ZHh^SqKv4&PGI31i7L?0Azf^x3o)lyb1i^U6lPPF4Um?{OTSsp# zJ9-A6t`5#WdOGB&u-h7Jwjw3eS_d4uPz`|#h>MGh3_**xBh84Hj~pHn7Wz>jbXPnx z8djF8x0a1PSz4JL9Q-~f=h14*>}=A=B|7bT{ON89 zGLaVgR7$zmiyMQ03jr0w!N3u5-%d0PFD!I`>@y=H1NRY7&i%ojp`mGerM1MQEC)wO z1JG)#A-rssL|%UC`CRhcqlrxsti#~AesvDbZOJR@w2jZ)d-x0i!Quv2XC02^>wV27 zCF`D8Y!HhDp_9vNm49;osgZbn0w{?@09_1lm(mnOfbfKdWT0m`W?bjDNKKk&l+uUD!5p>z(YciF9ti}#obN|ih zk(K$Wksqd}=AZ+#jahFkTquVM6?ApIbHEkl;qjU~j?0#lU9dDwol>vwuo?SXZ`_@l zfA(N%`oWL)F4*lxYjLG?_%Q61#nNT@bm!|X-L5-6=qlHgE7AmMEiH#_Rr=|)Y7!#G~Q@vAy!Txr)y zO|99Iwre)q&24qbvMxJ#4hIh)GAAB5I0UpDKZ4H5M@O~PQ~ZcS1_cf1bcI+@Su+x& zUQ}{LcHl&;Na&|Nkw#HvD}n_zVipa$wVD;5YgrBzq!^~Ro_rkSCsmBX1LyQD>D5Np+#7FCPn zlwTYS(1^|Fi-e~~7qiNBS}$);Gj?Ovg&%cw6^^#3wqSm)wQKCApW2q93{AJkx9>Pm7*l)KtS&=H$$kx z7&W*?3ZY1f=MjV_q>ZeeW=#)rd+-|x2I$!Z;U;py3ZKO+QFf=QM8I*!aj6g?lk;o!9f#ICJ zntBiy=eloV7zXwnMJSk3m_$O5!lp=2-0KT}nx8x{vS@1%8!6t;moO9zSZysSzy3BroXtG2$7TnNS}2b6%g9<%D*0AQ2zkG+;vEY2z=x^VZ$Gjr4U`^_Jz0_nQ9#M! z(*ie{^whoO15nD9F#y5DmeDli7f78rA&`{*`K+>I-kqF(;>I6cx&{Q5<7xa5jxhv5 z%4FcN1PlZ6H7w`8D2?;huESAZ)7@vK!L|`MC7m?_p~$;eYBAc|uBV?!x@gnU2m~$5 zHM0^33>m(LyOr~u5U27Urg6%<)R2&K4MG$=RD`;zn6*tH002~}4PvLs9@ z@btmIolcsj!S&wCNq8*)&&G1Bn(xexdWT2Qh^bA3?1I`pPK~Gc$p(aEMDZm-X#lcX zozZAisngAVl5lIMg5AvTG!Awbz| zxrygLyJ~J@V{VS+n5+7_rI=a{L5W?^^VVj5Gzo_YoCZiuN_ad!s(|ARg}B@pKkv{8 zDLi@p{K*Sdz%hf(5jKMHsqV46$Mg4#f1qm+qhN^Gz4pl1#&EgOke6SUb@Y)ZB|S6c zZ8LDHx&=Zto2ch~;V42J#U#%kjKVg1`L71C&C^&lDis~z+I_{Bk4%U+fTX1T z{$L;!^Lo9d>92W2D1ev@jg11QH2sp^XFsspU0+s|ANM`Z znW9B|ERNxq|Jy@SW=c|CUV7%S-N?w`WSy=kE2}u2#rY3!E&uD0@E_#q+g86@KDGb= N002ovPDHLkV1jJYO4tAZ diff --git a/public/images/emoji/apple/chess_pawn.png b/public/images/emoji/apple/chess_pawn.png index 35344e8b5f9a928c186c4f7193b00f0c1d059b5a..14cd5956f546caf050cd742238c009e372a222a5 100644 GIT binary patch delta 950 zcmV;n14;a|5y1zL8Gi!+003e$Lv;WE07XztR7FQ{OiD^hPft%$Qc_4rNLE%>Pft%t zNl8^zRZmY(SXfw1O-(T|F*`duF)=YcJv}KYDH|IbAt50X6B7#y3vzODl$4a3LwF(p z000hjQchC<=yTJKK(77}BK}v}xkxk+p#T5_9Z5t%RCr#cmw#=ut11jew+aNc<^|gQ z|9|Qwgj4r9Gq>)h>r-uKR^yX^_;pQge0@xgAuUS^`}&z@Pe24fM9ZB0nmkX)v^^dV zK&0d^Y6dR2J-)xcA5@B(+#V?iP4w7^MIiY?Ul)`rOt5VmVUfzPyF>v>tx^~p+&ooi z@syOcpk@*&rGJRj22ar;iWAp+HI;d4q1hvXQVpryb8n*HnMEq~pIZ|O*&zZp3pdnN zofSo3vkaPwT^X$tssIi9>>H#+$X!rO$ViiGk?f$Fp0h|%l}6+t0kYJ)Q47-IT(#>$ zMLmY#w0}8?3!b8)NqboX-fLeV_i{wPC+Bz@qa?RIXMd+<564YsvW#iG9iB%(o^Qt%|&D z%L|^OrW9U$X~&T@Gg?Rt(H9X65kAwNoe`BG!Xd)sJ!bzc5_C;cgj0kj@`W@LYpYDe zA}aEPl#g+$WyEJlo}+)9aAb`{CK5r%y#-*42!E-8cEJ?hA8XLVRAO`JE96z4gzCMo5Yvgm=!4K*(H_A;Nyej0C@)$~Z4A6&Q7lLS)ni0NXOh z-)PdN8ilMZqkBL-`f8f4R5?t&l*Tv`Z3ETfc~F`{zDSug4N-c~usu54j~^_m@cOwy zy?;IDJ7|yCavyQs$C$p%JobVV8GkP0Q~7hDSV{3!MV8PNgmf_lIc;hpq}LX0Lb@2m z4d9iDP(3d=W3F;Ucw$l0cOt$wJHZ-O>zhj(!ku2=$hPF*S!8DEB~YT Y4?=!rVUe4L{r~^~07*qoM6N<$g0#1+V*mgE delta 2226 zcmV;j2u=6F2eT278Gi%-0095wd&~d;2zp6GK~#8N)tPH-Tt^kh|1)#%J|Fh_5f|IB zNC7q4Gy@7~AU8Lo~-dt-%s=(>9)_J6N4ckX_;`_nmR&$%-L zEJ+U*_HNzv{hcRw{^g5r+<$u4i+dk@pchz**phI*IsPfXO znb?7DPpp5o`ps(@2OU_64?$oWmobh2ovQs+^^I5FX$*)rinH#i%E95xBogRAA6A80 zi5}#zfDt~iQ-2)W(Gx4s+I{|^i+mPzV`1KPZrJ##HN z2ZaDN{0GB$Gt_xp#XNi{xEMq2fn|GQ1Ij;C=`BMdfDZ>#7{f5$#wgyyJUj$Y;k9g8 z`#zPA1?a90wqqJqNT|>pEMNxZP*a#gjXb2_V;asK9e*2Q0qS1i_RK>9P=w@#a^ccd zA~4^&aB?gjAgfE}eW-fP(4lA~fei2=!B!23_x<$u4iBMT+L zi^U|WO$UO@v|t>ZaIDZ60WpG+6gGf^L3`aYj*v}?nvEn;6>7Ih&3ivpL1CGCI2)61;;PgZu6p}+z9aY|-_qimw=%A)Ox zz4_Eg9EDK^FQ;W1HUJm%n8OTdILfeS3J#ZG<}hzmA+QAi z8DxgNA3(%=#Sp+F z@3c)OzxA6FvA;1synOQT=-}m68%fG1NiC$!S$(GGdqaN$VtpUd?7r-8tHVRyXgfMk zL?KiW;T+c3^&g-3cYjv1*gSMkS9wG53H>p-QuVPen^QFcObL)dFrlwnm&Ap{U%USP z$A4>02I|kYJ~p-2TVtm<7(6(rQLE7OC=LrLs?*d)9C5Mb<#jLoywb!<-E+`;x=nC^ z5?F-_NC354N^ee30xYH0>+epq>u)pNtQ=y=bp?@wZK|?G9gC9M%&4cCHvoY&TA8(e zkT=gm+CP%ZTA%ZTLte3wL#kf=H1#z>1%E(8Ac=&s&!nC@9yB$n2Xbn=wcFb?b6Xi6 zw85YbX2fBmfa3N18;M^RUVVNphB`DL{LQsvS69rMWRBj4lxeKpV_o~#ohfqov3pHNco!G59@x%uXG_XPMk;sDA&wQe@4pXDeeF_N!Y*Fw8*ni+7$6xx}2ey1YxFbzONeo(sO>cP}U{}OY>ye*LHIzdo{;$K;169n!q2L%_nA(#7 z3(ZD`kSs7rI1rFP6vS*ka{zwn$&zXS=)#)nULZh)BHd6=|QZo$!Eg!x1mVFy2K{>by0)RzO8tj%(WG1A7 za1zKO^%ft!HITS9(4YN{qxwEwi26&keveM1Zw4{r;No{K#~Cjz6j0$0U}ix?ZEhwTF0I*`#-we zc^SR|5CkJYVW2CCJQ39)O;=4bniH&rKCGP1Ju!5A34b0^6+N7jeeF)dgJ*sqN>{qp zy%QzB0?fTBid56nUZJc^m zN;4HmIFL+gPq@}Rn^p6PDL%=sq_0@xvzK05SQ1bq&0ew3+Ebj_O3W~qr$Ul|%`-($ z2uE;Ank%gKw5=>Hv<$~WkddzJmPdT1@&EbxFZh6^rT3LT1^@s607*qoM6N<$f@_Z^ A?f?J) diff --git a/public/images/emoji/apple/chestnut.png b/public/images/emoji/apple/chestnut.png index 83339380f66b2dc5ec6dfef9b07d5fae152f22af..06f5dfb002c61b2fd5c377171284512e9401e3b5 100644 GIT binary patch delta 2140 zcmV-i2&4D5ALtN}BYyzxP)t-sM{rD}Q9rbEYumDj<-K^6QcCX0gyGi3)wG+?tDC!n zdYM{Lno>rqb#AY5WRqJ}>&1t=Y+B^GZpV|A#ei?=)s=WWCPEnsKpYlqRWLOe7I;r7 znmHbFCkmG{4yr>bx>r4+JtMwRFp@PJ$YVo`F%w!O7gr`Cx_?L{p*IhVMLd~AGufh9&!=IRcSK(x2gO}J#7HIT!+?ouJfnh5cseyj9T?xUWu;wSQyd0+UNsW- z5*Gjf02g#pPJdGX{@GH={(B7`I)~8fX|AfL`R}3b)ARVl7YqOZ2NOv|K~#8NoYdEH z+gK0;P=gc&W{D;74LL`~9F&ve{{QD}&)f@wl*wAJTV*{S_4Gyg%YR2z)jCC0zx;L7 zdZW|1x@xs4t*d6I@i&;-Xm%?~nhsq0L9{e!x4Mo0t$$Q{R&Kk#@4K#{#TsQWNRoE9 z^T)O7LNPVhKw@Mk18R^e-RhrEjp|LM=jEmu3t=s?Tf>QWF;g`@@ch#>svT76d7fkL z;uvKF6uohP?LfPbzNPIm_oo@)zByCn_r1}LM1&+;( zyos4t3PDgPh7V}FIwRF@!5|upvJNZkFeIy@(RMUCBQ<(TlBBjxZv}_zNJbVSDAo)P z9DR0Ls-n<9(@;pROisyQt4QwS`}j4|b(WH!H-G9e)Wl)L#N4Mm%Y$PLojfwv=FaA! z5r3o4kjV+DTR4WCr##EDoE+b|%?|Ce1+|?CX^`})hmP7h+&L=hkWx6drb&o1VrYU& zmHOeEr%ut0dstpEQBW8Jrt0%N@~`vd^ok@n3^FT z9?s`|Y`#kt(jhVQ@GvGQ#HXZW*YfeL$bUAB^NzerY>bQ~^um=0>Z{_id>s=MIT9*& zhQo!V1Asyv9ER|9r&+%tK5KG}ve5B+6%R%VIS&XNKzD#hO0xGVU#9E~QD`_6hn?EF zU=IY;}zp?&vl#t=jTK#MT^_>pB7DorE`MF)k!6f{w$3d32~Sa&U6|e;rGe&^6818X6pO$GBD)){_G$q z(wTxmeg(m7v3Q<8E|)(5sojC^(|^=}$Z^;ypIyEcA^0IjF!#6$jXoY9AD2(>*MM4s z&4%BMUTugz1;hXIh>cm|w}L~;{q%miSbU#7&*uzX(xVNw60)qJBOSlIN`@WT=N?(W z3BS(2&X>yqS_#O>5q8RNS@ik06LZ~Z8;F81B94pOQlhA;HwgsMsN7 zueo!h6kOVl8mjBs+~`)5BYk*yf)7?o1dJXN*G{1y1)(5G zW-LMApdx?{E-<}#28M=+BoYkIi95IegpQhm(zG@J&8iY4IFfOM4!{|U5lO{rje@_!>4LEpwOq9-8k z#6;Yy*UQHOM>>3{#QdIiVU1p^KFoAj>hLA%B+*H<{~8a#XICrk(&YP?is>ffbJIG&B^nUm(_{Zc8X^1;zN1 zp?=yoDA^8duV;H~s0qg5p8TG`h=ig@awy-j=VXJPd_b}lg2}#b)LP>ig(Oy@v_+%T zaZpbU21P^jt_Eu?6_d$`nVO!@8xCcJW5}VbG|gaMJWCL+A%8813aNB>WS<5OisnoQ zLg;&4Ohz-3v=@>ZH(=oE4+yfJqXj((N0MKASF|S?w<~frWH~{B^O#hOD4^;(tr013 zi0NmRc7Wl+lk-@~8<6shsM(BXsi}F!Lqf@Oj1NRRF4t3}b&=;;MiL3N$^e65h8en1 zP6wPPNvEekk$*JDn14Q(~YrO&r~8PklJ_@n^jMxl{x+c1a1`bAE@`!a&>k# z_rl}mrW?gCcrg}7QTOKN44TVNH;UrctCzl}YsH;T6h)m*+)A26FQciR1^5F-5ZdS< Sp$2RK0000{KXbHtmV zTrQHN7X>d=_3gMGDwcB*)GuX%sy$Bx_1mC&()%c^eHl?b4oa zLpOU2JW@)p9Z}#A-NFEGVBM(#}4^bfwLmdiA9t=Sn z3R)!)OdkznDH25;3uY=4KN<>+J||8f4No8rx?)9PClPfp7CapnYb+FiHy>Um5pFCL zyJSbCPB(}91lMq8M|jnaxN5h zG8&^rB%MJZr&BtgOEWtf43t7Fw`56?Kq^2T6^%I?m_;qMTRyB#FQ-Z?X)68ZsId zf^0;jiCB?%OSD-#u~asaKqYEaGKe-CbYDDtXF<4NLR}{ua6LGxj$2(VD046xLmm*0 zJs*-j9&b4RYc|J3+l3iFT zAErkpRwfsPPe@EDCAykmg*+^BG#{f(Fk&kitVtD=Hy`E~hQ7~yYHIIBye>*CsP%^}%W}S#xoKioHLo#_`JGPcyif2A~I3$8! zIk;Fnv`sIUU0A4IM$fElyj?(|WoD9TJ+g~aV?ijknQO?Tdc>t_sen~&G9#&EPOz3` zdq_Mg6&9UxN4c1D<;acUzJ7dgO53@CzI0Z|fl!%rLyKHP*QA+q0000$bW%=J05<;q z14JJO6AkdbzbraeiFt?5CHiW*N*d+UzVf7;g3j-nqS)lpW`v>6_g&E2<>u(hrt#rn z&hz5%^z`-3YHMm=000anNkl_NpK7>#*@BfbG2hQ!w%l;4!Ia-WGxX*xSv#}i+5yZE zeq0V*8=N_Jshlge|uE= zv)^C+)tY%b?qX`)hofYX@DwTa4C;@Kjj5}vBN9*`sWc8CZRtL_^sNONtbTgt*U}N4 zkrC&E2m6)kNJa?+B!72a^sQUB@^9ZJ5((|{7#*#y-m?F#_6%0{{kqG&W3Z!RXMd_v zrdFvKhA7b)rKLaoa4SD1hN22mM;0Y}crel*^xo3bSHFba9qH(~7OGS#Wiqv=GH_o^ z-EKy)wY6oS*#1;ZkgBW8)ivPJJ4hd`d92d`jIddtZ#X1xJ2 zd_2-~z&gA@CIyJo6Ad*^P5^D%5uKM`N6tK}in@}!ii(oGY*n;FB)>3!UzLS=Pgt-D>?&_-Yiln**Ud;uq93y!?-gJjur{QnyW}8auvw|Dl6Yk=B7{1dPR?QflMWpDREmd#Bt&{wZH^B zhwO|BEwFac5QjkiB7jm-AZh!S{gch<&cD+Uu9T4+@)b?C{9bXOCp6sJWxYc(4ZQhF z{3Y=z3Xry6?mqeD2d_Y@9*;!HWGWTqvpX+C%c%t?*cp0~IF5*xaIL?SLzC{mD8 z_sL0;rZ0XRLi?;v1&8SYX48%|clY4ngCR+r9)JRn4rT4{FA-_lH3ukk71xEoClp2fP zZTiDW$o&{87W8PTx0LXLpB{RaG)278*J40%+4q&WpmJCqU%wEf&X# z#oz#B2auxqXnS>!&Y6F3kKE_O{W49Yte*mM@&ky=hvaZUyEt$dZA&#Y^c~hdI zx%ue1hQYqSvD=-oqF-61sZwI2$ruFfAU)16awb7;0SrSNfxuEAjW>~R zuLfu#bM|*|G_q7`-pP*{bDz9F>m9%mdCSEZU<8(Sc6Q(ZlwPAK2kF0Op8lCSTOK0Q zKu~`jOM2H!P7;?h?I9Kjpg1N694~Wo{4q~VPggX8G}ia@LtQvql2p}IB}#rN+2tgVj!T1yso6<1N{6 za*S05(PVXMKVE5EYiYDQIH9jaouGlXq0cXZT48W@`wowmc)7SD4?lGYW~j(Fe;385=WhlhBKjI2zo ztSXNmPd{G&WFn`fPwKv@@VW+UvJ8@WO?S=cu9vTc86@4Qe)(c0@|GUQ`YI?ZHJG*+SxyHpR`lILoAjOIqO>>@Z!<_ z^4Q-rLQ_*@V@0;WF@Xeeyx@mL zV`GC?M@S?{p>)j180BN{YoAqrb38k{`1z5X8)rY!e&N<#)+&};dU1D25o2B8N2nb- zb}KWM4&y`sl=aj7@v-cZl9K0F_O_gu{qmFlyJPVJo+D0yy~RAf4ZI)|>iL&j{auO1 zrqY?M1bbH3=F^3T3JW)4ww2@#Ox&CO#uxute>rxnEYX7Y?|-G3Piq=c6vd65I*L)$ zNE-raNw74fNO#?}bX7{}Zazc1>>_Kk5M797TnGh61hY^#Izw!B84;<5j4{N~3=y0~ zBoHJ}C7@{vg|_ECm-$m|&IkB$&$;)_a4!v-whZn*P*-R=LMCGv24_2yS%a_jsIXh{ zT-p8}#LH#L=cAKM1Ewu|KW_TxkK|DVgJaGb$@xnTzKqtZyC3^F-Y9Q|d=Qx;eA|<> zWpBr}ILe89SI6a`^KD%_SaM&t`8@x22TZN2#%RbWM^;4SY`S^jpDT>=jcf_508k{B;0DBT&65)~Moht#TvT+iQ*qvM zLSSa*s)bQJ3sfl`2!uAq3Vv08ck!;)Nin%-kr%gm%UhoBM(N%H&B&01H68%5!Zh*%VkJC$X}1h*gd z{_``S;zs}_q^8!uD2B1Q7EY^&`P84Gru9Xh=ZF1%U)ux4XkBqnbA@7UuGi;3&If}_qW-0( z?d{j=i%%T(sSji9%Iu59pTFw+1BgPb&UuUBe`GP)y-v?8k;mb+n;63##IP2#*=%9& c1escY0Smkz0eVD40000007*qoM6N<$f+x3wK>z>% diff --git a/public/images/emoji/apple/chicken.png b/public/images/emoji/apple/chicken.png index 55facb4d1f01fc8685543aef9d64b1d07b31e955..4ef517fee45832d74fc463a4796a77f451bcffbc 100644 GIT binary patch delta 2195 zcmV;E2yFM%7@iT3BYy#^P)t-sM{rEXIyT}@Oxs04``9btTUqjTbk=rY(!sFot)j4R z2HR#~+|8=k%edcPUEhdW!(vzD$+p?cxVNa4zpb0$R#L)9M&Cz6?p|Ef#>_H1gqcWv;_DtfwE-qOO)zkjRo=-lk%*3dsZ!m*y%%et|jjN8t>ysMeShXuH#k=3FA{q^eVNJZkb z0MxgnbSNaUH8Rb{xv@=1iY6k_U0T(iklb))4iORh^5&f`D)@naxP1c1OGmDohwa1x zEif?MtpM}P49=DU;nl|U>)-0&)F&Jp>AnHw+s>Y9Vt=o%sLx_4mx_Vli-TMn7R!ix zr=gaon2MfZ1M#e<|NQcrMH)p%NB`tP$82N&=U8xid#0Y`!Tq zB`*m6L>pXE6EP4#?8=*-^QrBE^s(KB((?13$9iLEsa44QjY4=s9@VSkw6F|$TwQyN42&W{!`#b^d~7M&n4 z48<@h0Hwk9S2SK^hL9f@z0x2`Te3_L}+7>(AdK%$F8y=qbSRq>ws}(Gn;xiQ~HP({T z{lpXUM9LL`(H%MbTYkIU@AsqSAQJ7ZNPi^s-%F0Y(eqN7|GnoWPk)RUorLU=Ed>NnsO3lrXj1$NSK?xV9 zRPxeyt{#BCabRp5lbzXyAT*EA$B#~cl*KtnrO{hgLN9YzhyrMZEDa&24ApmuK>Xb+ zpwGx56 zqn(!x(Dbiw(yNK}1Ii}o?r%e*nS#ZlpZ6sZ!b%NmyL6Pk`>kVbIh{zv4k$q=>0oU$ zSsd&Sv$N+Rd2Kk8^xdX)-gSIYAR8mFg0Ps~E;1}D>a7jXxlQsuFg9_1|9|pl$6C58 zwwj1h40$e60ca+OA7)(uIU69{q!8U~llotwv$l|ZznVAzM|r{u0(<0hZO$f9!kMg1 z(q+T_4xQ!Yh2w>E;(*mbSOLPYM_Zdd1-dxg-V2*F-9en?)mS>cdccYzKqO_q&+c;} z^s&|mD_!y}`Ht-K^3Klk+J81gN7O+4o!?8#pXMK>AwUI{uX*>bCzeh*O4pc%3 ztWw7A2WQho3N_vB#;@DY9pLPsLTbTw2Urmt+P*~`93zq{WUoTro`!{ivjYKVO|F!P zsTt_wM+X0%~ylG=YMzm6?RxnrwN57 zLNQw@vP%{wLr%F+9dZyT^PqkJ7^mN?lO!Ok@B&I~q04r%TZ2%-;DJPzR)gHL(IF z|2%GueJ{Ym0Q3Hnntv&sMjTeGL^>(itUBZzX$D~oPz&-NoLqn{o#heo+mWgT8GC&m zgVBo+wi+saLS`$cs3lws;7DbWuF6vN%1}c$| z;>4S7QLm;@EM~_?LnVN87GdwyozIiYF=oRvB*4gMa5~!ho|BZdyoX0%&fo_;^gB7(D(1d#6#i+Y6!VfuGzm6J846Zhng} zFA``-BT+=63WulBV9?!|AS%d!bIF6&q(*3NXc!#~w|96Jjz=*;5+neLhk;p&4_tPu z>DQq2`mIFC5=AW@o}Ha7g-PO=FdCR}d|>MGo1a;o%YTiVG!%xxm%vYx1Gk?eQ~iBe zeLgYS1I*!v;iV9_IGzG>FzhG zTFjtSa{^}74brErO5B+0MllgdlC+OhH%#A<);6pi>Qmi32D8af1OA`?w*UM64Uw@< VJd2LsL<|4`002ovPDHLkV1gdNPu&0j delta 3152 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 SEDt3B0000Lw?!Ywqz$yF08}Y$L`@Sp!0s#Ni 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 diff --git a/public/images/emoji/apple/chile.png b/public/images/emoji/apple/chile.png index 1cb82c77b0b1c921686e0469414453228e189b4f..79462bd687bb24ef295df5e4958cdb328c727c61 100644 GIT binary patch delta 1197 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 diff --git a/public/images/emoji/apple/chipmunk.png b/public/images/emoji/apple/chipmunk.png index c4465725c7055a885b50391c81c0cf528104bd80..ec0750be1c29a708a6d9e821599a4d43448b7c16 100644 GIT binary patch delta 3126 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 delta 2927 zcmV-#3y}1H3-uO|BYy(`P)t-sM{rELos^PZNwo9-w1|0=V^8Ccbh791$E}~{o`db& z&#bJh%f`mdX<*Y=N9V+?p>0~yQA3SeM|xRIc2!8sXI!d$YUs?l=AnqWg?G=qxs6>( zt)rme=jxA-kKvAO&s9g`iEX&JxVMde=9hfri*L(iTa$@|cYj(@f`WpbXH(2fK;e;i z<&ALo*v+77Ro;MVv!|ovjdHYycH-2~y*@XfprDkKljom@j8;Ihva|f>;FMuj$fugO zx3|H$x3aXfgjGXkLNlA2oA}ty;fZdhRZ-uGbl;A6jD&>Lf^o>m$j{HunpRWks*-;$ zCx?oPg;G9|jem{mpM{^0i{Csq;yyayJvh=eFxWUVoo7F1nW>Jt?LylTS zv?(K#UrUx@O`Bp(jaEQ^OE$|hF2gS>z%D7@Jvoh7Lw}E3N6s@Z<3Kx}Xj7YJQIT9n zy)7taGaY#5cS0Ui;J%?EP`4~=IH3>gnwz`dt=5Wb3{VDqUzPr1Eg(JR! z9kd`05g+}?q;S>9ibSj``u@$tLAK38#(H7>%A?=?dS`(wyVvBqzH3gifw#a}e8j(w zjraBViQc%eAO7|L00+-WL_t(o!?oCXRDW7$8U}FGv6^U|HcQi!Z8GVSb~;OEPER|h z)3j&yt+TWHq z?{|SrXAal6WZrZ2&)<2T_xmn#q)o}DULW+(Q)+^|rTeTFn1%Cra z@uk&f3R}mnS13SgTwSK58V+NYPt3gac5K;*ph0a9(}~Adps^Df(-AqqgZD zgfc~}XwQ*CPF1bF$?pJEw6e2{UdO6Wm$cPZHqiqPUFu^lUy6=o)$eUgmsCN!fWx%4 zN%+g%Q&=RsY42W;Flg6^Ai5qLtbgc{C!&_ui`|r-jwCur+D33J;1m>z?aR6aa1Wc3 z35bxIS&a&&P0bM%iN!hg`lU-@kyvAHazIifml&H_8kL&Ep^E{k6EC?Px<9P+T!Mn3 zCzn*IY-%B&aB`5ev`o=kgs>M@GC=;J=Q5=hHaqCl$(JTUuOe-U(Fjt2N`KchYb)E7 z_JC7YC(2nuyRdZ}JFBv?gvbPAwxxs{c6rcW&t7TLuXpQ->Y z2=cVp-jiCwe;xB`EcrdeSbsu3A5oCW*v!tgLoXq}NShBLU7N1U|M9y(=+AnzwE_~F2441NQkm^{kvE|;VW2*Bd2b$?Zugav1X@c{uwP|#vKK6ks{JcL^v=6|MT@~ZcM^a9BT`R4WQ zm_#BFf>VMiMM{uLi#m(=`t8j4&0r%b)w;&cdGY*^yF8g$lA4ISbRv0g}{Luh0Fd!|8PP$DBNQ z@x!yAzypD(G#*F~k-REfztgPO7ie0D(O?3#4oVpe3tn@~_-x0(<-HN8dLR1S4PbTBh%3HrdmTB{b zV|pfxhN+jf&s}riUcCQ;!R;NxKR$or#931y4wXie@p!!W^471AW_kuBy`E{AyVPl2 z81FDxT|>iOx99SS1{0hZ6$Ro!EgCqq_>}Vbr^qtJZhtst(OaZfFS^G1#yY%XeRsw# zTy%Xh(hG617idzT9KfRgVd+uCs5A4STk*Ej&0-lsqF1I*wk#;{GHn`1B zv$Lba<9{4=-aOoGGWGPBOvHhqLNtV=q^6{%G8l}^r1Dl0De5I0$E`E{vks5d6Z6qX zudEv=zXQDj3>V^X8Ht%mSqbmAJ{7v%3o%1O4g-E+#_C!4^GI(`H;fD*be|y(QHcQ$ zgOQj7PDaLb>lZ_2+V;A6b{O|KE?7^F{o!y=cYi}e13*+NI5ZkCL>5pIld`fB5;FGh z+c$kCw6yl8`0%W`V<@KY#;x84G~M0)Ylw~hmxFe^f1h8;%g^7@O6E`^UL5`9 zGrzcUwresqMV9g(B@s;$%7d7^{I}5Tn16gN>DPgs&X=~o^5GzY2nX&T;bbOeqPv3} zi1OBfii*P&>bAE|2nMj;fQfAgY=Rj%p!Gmuv z+Uqk{YU86dlMECmlW<_o2~aHP9KKJl&mP~yAQ8JkPT(%zbMDvczcPW;gEj+iR)1Co zyrQsZVn2klv|hn>aWz><#0%=rQwVN?Dt>9WuDjnZoG?NkW+zr9esQgWd#%U^rOG&Dhs?9rN~)+ zufToU2omJ+J4a5fq}RQ6af9%&foK+e`qavL1u{Jy_x|7kw4l?czPy&Qiiy}5H$4b1 zJUF{o_dguCPt!*#c1-WSDmb>{iqlm{?TKl$N9lm{}~HdFrZ Z^KZeAc1E-yq#Nql~M?2U`%jEL4|V-OM(wjLhcXl1h!6sQaj|Ei|B zDJY~rJ)jQ~l_w_CQcsUYMfabZ&q6<=Ei5Z3Dmgnk>WzsZA|iMh8SjLE!Z3;aX)3N(HyQ{R+-2H9Ik>b~l-i%m4rb7fD1xRCr$Pm)Bz2KoCVGB<-?@=6`}60}dENTuXXH@4YwI{Qq}k zcH|J*dGYSPdfqv@XXfq$ns?skecp%I2Gi7s1tSstf~s?piegn5TDRsODKhoY|3*>xJ&M zPN=9?w13<`E; zsl4F$qy2vS!Ev}270(m=%h}y)fobWnr=J^|Fy|0CuGYL!tkvpG{hKM!=T{um8kcJK z)8uRG#6*%+^uXSH-#%)cI^Qqhb&S8L| zR-bEiaLb}z9!}iKT#&j z!7`&3l*iJfygI*A1mEbWEwg3heB5yS(Gh5Ms?9XfWH@c)@G{Q}poLwQ@M>`mJa@Y7 z8?}p|6_@$rV!3(Xxm#JTHLK#5WjXNNGrvZKyxf+NgI)m!Wd^MoZdsZG&jQxt8-EvP z*ky?^!7JZM1mWtSmFHX5WQKxQewwhM%%esgwj40!IM-#D!?hsJj?JVv3^^&o%=!uy zesrSA&2_6in;ux1eb9m}%f-P$-&Lkzb9c|zuHeyS$J!r<0_?0%7|*JBbm<`h1KQK5 zR3~XeQyT^x)i^krpN$!IP<3dwx*daY)Jc}9iueQO4#U8F-E@Ee0000%&Y7c_9mc{JbIgp{(9B$OWQJtqoGVA}tJZ-~Mky-g zXqlHcN6FDj@uoK-Dlff#|A+7M`8?0_>+{3&JlSq87^x#FM*skT6xI>x{@We@M{%*= z8f5Aa2LOlx+;E;KOcbsh@0HoxM?UM?MGd0IT+s3gX3ejM(&*t~j9?Olfx}V!NE8Aw z(AAAc@QFHeMwFjb@8uOq4-eAO3V^}d0|EwU=g8JJ5m+n}jT%de5B4Ika&iz3h}Riu zbzb-&YVcKpcN>Wq;!mP8<3v^E6#bLkRLW9wJ;cB;?5tZX3dwLfn~FsTA`mPzimU-5 zy1QG#;ZDw2HWD$HlQ~z+&Ew|IWOIU$$dHhb02An|%(R{Wq9`kUf*BDAKE+N+PsSkW z2!tI1fp)~ws1yzg@%D02bW9YPOrA<(d!o_Yk^(w|A&iY2XC-u#2)F$RgP~Ly#yJY2 z_m0;{r!(SF$S5>A5`{J~H;+Rh$){}%451h&=W}>`q9ZyQg~m8Jp|MyZSf7H&6VyRN z(czrTbapDcCpd^k3wsI$D)Lgf4wZ1>lZ-hqW zdARu*8Nw{#Hnyi@u+AYU6cUMagTu*IR=<-cI3VH?i0s_#p(q9(?^)&V&yI~|qa3PT zoWmo+Z!n|ohf#;(qeTrhlhqaJHkO@Uo&gZZ73~vS9k*nU%5S#a$cO0OFgRJEp(-sa z_x0vgWmO8iY-UEv&@^d=q9| z0R;~ey_(Dnub4ygaE=@&ObNpFk&{D`fxeoWT0hCBPy@KqSUr`Rn2WS$Ypa)*mozrl zccV@>8|prBbu5FM85kNy$42LAshzevQ>(AJTwYv-LA0an1Z2MlE|^9ei%T%mm&}M~ zc-Jf(w!jQp;)EUv4xnp-va#qAUCr6NOEq;>PrO{i)PZ*zG2uFmrC~1j~Jt{0n zR#{%_tDOP{5rewbTnp_cikprfpZTmSl8FCAA9?k1()KCjI29$=_1-hq`cZX4-d)jh z-o=xsd4VcC<3L(d(blK?`(^mQ|QBys)lzDwp!A#lKy=_lB$QZ^xN6~qdWU9 zy^G+lUJlCaGLaa%he{n_kw}B%)`~lccTG=nSJo#QRo3flgfU#^L{VBxryisd*WHnG zS>$(cJN^vsbYAvn71^xkJL%Bq52dTCLP@pj@RQM)-oMu>8chz5+Lz7t$dtxD`r$Te z%>L}SSST)kk9r10;cC4j>$K=jkm8W9W&MoR7qia$rX0>QuMsO-Z`sK*l1z%b1#Io{ z5XzNGVH;P?CMgPItP9^+VmI{Y}ChL7$^1> zi>VH)FoC|GOE*^$YIKE5YtQfW?`iDk1GUF9D;IjTz`U~B`NVS%a~zVpuAh6bQF}e0 zGqvD@!-RfqQHi~)(WbFaryZf|tCLH5Me?xs*CJzIrVHS?aRA0^_P!Ye^n$*Xd+i)) ztUl%Se}xn5`2GCBdD|S6GgYt{=6-NG2LAQ#N;SUD{Q_>D~?qW*MprMTa zV1qv$38#0C%nmAuVG_W%ERRJ=S2h64$Ef{cey>i9f~=^JY8~6d`Jg+cy5CsSvI1aJ z1QlSLcu;Ox$yDMX|GVgM@ySRrT$950`;wO3>EpM1fn{@Q$8!F(u4Lpxci(@CpuQOe zur3xw$vaZI!@z#X8@C8sPz8kG{V<<~5yj&j4ndH!=fnq4^X@Pc&&Ul{W`{ zZ~F^nLxd|6EB_4U$_0kVkz|_kKYkRAm@M{0%Sk&z%u5f2PwH20zalR@Z++8~d|^X! zvDy`+FI3uNOf4K5GJX74EKRL{UF6qRm~u{>Q60eRq2<~Nu7mdQ6_i9197!wOGkhNP zn41QX6K>Scjn(b&dg6NsKRa}5k6$eHqk$KFZmaJBrNeFA!?VpeYs;_FVum?)ViINg zSyKyuX~CuT^x4-*lQwC%vr^!;WV0h-$_pUr&CRk4F(d^Lf5y6Djel)XR8egYfBJ{V z*V_5866!Z#^BYyzrP)t-sM{rDJnR0BFdJrO1a+rS>C~GZcK`cvK1{hx_Vmu5R zR1qImaF~7&AY2R_S#X$sZkBrzBU*Bre{P_DDo3_ImtH4Cu^e+d9XqHRH=`p!tS5a$ z6f&P7cs~aqfK!`i->E(pGJB7#UTcp@I8v<4zhtJHKt!2f41Xw<;KpQfg1#L#k5YV=Hb#^YiZp7+ijUl)|ic>$63YpUj<;j2uNq2S3c*0000K zbW%=J0RHbmDS!T=3a+APA5Gcrr_GOe{*Zv1*#H0pC`m*?RCr$P*Vj@bNe~6l6;4`Y zFw@?9dGEc&&;NhVW>%F{XlT*9^RzLcE8u~L6E~}}JK(SXWzIS0oOJr?Q_|_*A+Biu&W=NwajkZb^X9HF>@fH& z6aj`f6fz?xl2K~z{^n4lI>341_-LR30IY^h2v9@#{swI_o%S=$fXE zSgV5}4qzjXqJjhzUFuYMgeil>A$a(s z{(odH%krtiF7;-!o}oY_Z9D+SCeFeOx5UBK2B+h%B4p&a>o1W;m8Yi)&Za4vB#j5f zko57o+eJ#Gh1zZ3i+p4l6hE5s{;rbIG)1DA1XIm7#ktY^Y9%QxheDeH%4;d;t z43ebRvKNM4QM5yZY=rzSUYec+QA%O61%G8cWSA)&A;i{*y&}z6h_4Zagi24+q+qcn zZ)$HbqG!bSC~-8DU;#EyGXbD5T$IaU(Ho6k`5q-T8ZtYrNrUHk z`tKn1eZw353TXhT#u#60$&jWY6e}U5ss_B;d7~3Aw*6tpJA0^Ja(Bs)s`5tCDX8R5 zlOTgbUmOO310zh6AudsiT%SY>F@Fdp_Zx`Mc5v{EC~PtVoFT*lX%_=gN$pjFquCCO z7NAmvxRz^KjfT~*EO)BwaZtS!%$_QB2BAcAAYAwQ`udrt(U|UHAV?3O!^6fx4I~Qr zd?xd7OY-oL$rqlVuYZ1qo}s11By=zeeDfOlJOG!M$A3ttvzND-{Ljx2mRqzCs}6_N zQkBGIlMo`C{VW_~mj^w2n<dI|?v<^FN;~ k)FjEmS^U{K=bUr?0ig70TB@%6D*ylh07*qoM6N<$f&^QHk^lez delta 2597 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 delta 3195 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 O0000#RPvB0^u!j8n0k7r^(z^SCjr=kZ4 z2fRQv#KptRd2pGBG~b+)+_kUEoR_*}T$h9`dgM8PcnaP!p zs3aLxU|`36aJ#)a(x91~6$-MToW{t=w;|JM&sE$!?--WySJrt zQuF%yk3>7QnSVC87X-r@0LshDwH5#b0|UPr0I@eM%+=Muz`%V00Bs2dtrZ8TsHY+W z0!s!2a%5hGe|(y5YHc|*RT&uN>gwphyzuJh@9^*383gU~^6c&F=8%W&(#_v49O5}9 z>Y|wC=H&AF`t$Vk-*sy3v8v-(PTXr>)6>%F=;!E4K!4ISC#i^n`273eM?2;1?c2S% z;XyLveR1C*3FX|_wz#(J+0^3H&fJ4~*<4fICl~O_#FHo><6czn;M~<30@noq+*K^# z=H<>90@znf;Za4<`V$E3IN)spWoo$n+gT4udc-_ zAE8@Q$A8Dg+YSKH+1cdH$i5W=)z;O{V_444&cRno*xA_12LPxG0;!&w*Wcd89S+wc z6r?&aj{yM9Bo(e~WZdK8x0g1Kjf%>?yTe91z;0&p9u1n9mWU7svGkGa}L+4$yo#`t(%k;!wrEN+Ex$asU7TQ-5?)PE!Dz{QeFXNC_wYIQ}*MAN~Dg z{QmQSjdf4!#O(bzuQG*=f71Ttp-9(OlKXt;lCIq6Esa#r)M=Pc`zKyzHZwDZnYqkkroU zrU}uv{QBF+wkAM^4}TvTYD%TIhMwOvG-cZ-L!&b@GZu?Y+o06)ys)ye%oO_GA2l=x z1(sKqzgk^gb@u50bC6c6ZwhoecH_pVMSt5kbm8&lTIr`ri@q69J|8MfTIz-__4Q3n z{c`%v>cD2?<@3~*NA3aXr zi$vbId-rl@B(k%)`ShN`F z$AfzSDi+(;9+>Q{vzj`fY@)OnCWv4@r$QGGx7SbVfM&ZlQcNyE5QLb=9>QF4{qRBj z+1z05(8UdS@6IBClzjeYxLBO~cI~(xNH@1ZDGCW7RuqFVu4p~^IbVphrrFXWrwsz9#w0mpIolbxE^^4mbH4dAG3CT+b zQi6bFuq4Lf4u|-}CB|ac%r$iC=r^GVS#dp-a0I6qEQE{con)^rKEXpISB7bLqBk_WOq9~DJ z=n$4DYUqi`?-oJvLV2q=(vD!?$I5Y5mc zK_EcF9aZVr81q5%lxbwz{PJb#J9-CtP?nh5hRz*MI+~uin!D2_s;L%BZX4$|b7msIM{LWf;{-k^-Sl1%GS>NGfFv zLmV`JFt?;Ths@n=XGMqLk$?dh;AH=DJaEA44FCr8k`eUJ2y6v>2Bfk`K|dVrFMVmQ zHtPQ3`?IroPV|B}olZIBc^NX`tj6mMq|SL1{CM(@O6#sCk$*Fa19+p`R_kk7k!;pY zs*;%Qjm_$XNwa&iZPMFjW|-k^c+u9hvnHF;n072gciUxE;s(PQKrV0qN5XU%kpYna z2G9{cRnLg%V6{pA$=uESnDfkecusgV4A~9u6=@99q+8J7%=lALUQF&YIlte}Fz)xQ z52WNb-|KdA%71=aaluw$*Md*N#>wBpHDJY zOY=5NltsSx?AT(l9G@MVM!a|?RhcjC3h&F5PdCDwV{Q59l~FIZ|Zk|blXyw_{1 zR*!6PI4Lu+*zxfRW;UC>cR;5Y$HBR*+;bfBn7wg$#%uP(VzHVvmZ|rZIkOjH#xxl+ z135KuoPYV;cn4&{1p1<3AW7wjPSOGgzlcTZ2tw8neX3D537C@PY282?$U5B5aR6!m z4GA=V(MTbP!Jr>5$}&$2LNXGSq*P6k&_^3MNtGwfe;ncS=xii;B{%J8iL7&`YUGlQ`Zom9k_uo zfX=5>P=9ZC8zQbDkX)h7ZHlVdQObWfq=JweDD4?lLj!5OrVSBo2qboAoAFugdOvd* zY=4*50gdG~U#Ou+l}az)u|_g%PB!pv_ptDX10Q>hMk7UFZb6*6tFt3}9vLIWPzZXb zky1We<4sY9u%UIg`(fCQTUXuD0R^IO)@UHfK?ifj^h5`w?-FQsWpT)zkR+v#vQP&= z@0XW9jN!N=yym6DgPI)rC)#gb9J?b z<97YSosG2sw5TX%_Zo>rqmht;NlaPozK%xHA(xQQ7lk#Fq@gu75D2jAzkJ9w5eJUr z*4*2-%fstz5ioW)MZhZ6gQiR9+rf^rdc2Dl1fH%$2?!F*iouam9=6wEvEDsO@sRy4;e|gU!@t|Kf`&1k;~$02%_v}nV0{LB526-7vnQM|2c4dI;R_d@pV#`FN_&-?Bz%+I9x9? z^-Kg7`#a6-xNcC5+>iB4X{Vp{=D(l&OqD0Pug)%@oc_W8H`Y!~%zS+1whyi+Pqp`! Z^AD@4y>dkZv+w`_002ovPDHLkV1hwc%RB%8 delta 3279 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 N002ovPDHLkV1ft=f(-xw diff --git a/public/images/emoji/apple/city_dusk.png b/public/images/emoji/apple/city_dusk.png index b68b0e3a8bac2e26fd1276f8d0a80481d12757e8..4712aef9f4a9f7fa82cb54161cf3ae387757bf26 100644 GIT binary patch delta 1909 zcmV-*2a5Rf8G{dyBYy!1P)t-skEEnudwpkvh1J{L*4^Dn4Hi!j8D|$DUlkog3>8-p z894(EhHP?G92jXL8-!nEdOb6EQ(0y$Et+gI)4xiA9w*^QOob{e|NsB*hFPjlQSEd` znm|M2V^;p>E{!}n{_i&Z*d6}$E#y*C?Rrw0UuFBl5%#w{aDN#h=3->exBh!GCGwS0CnyU)jvgw{us)mzg+~k9|4w?yqn4tipaq&AeFej?Aw2jfsB?7u zU7jksq^1Ly?>|*T}_@vm(Q1f2yPKgt_0LSyMKpXpy6=1hT=FriBEVQTx0gd zgTLc73vPtl?^(C~3WUZGjYr7y#*i&FhCJ^Pia9rg06UW*WJ-rCrQ^b7yBxB)$v)I1o@*|Vz#xi(N-YCa<|$d(4}Sq;cd zw9qh&4Syr(sRT6-hI`r|-!*7J5pRJ!NIDoI?SD`ZWI;PrA0+lX>>p~-3>I~-5408f zJ;=8aVh%D72vHg8?^+?|h?AjH&eB?OILl}PGSM<=(I0V0#Tr6q0(yX~?xsVnCve{VHDp@5q zUo>%u`Q#8?Lujr59DR$5Wf08gI;j-Z7JqF9gRGlDQy(C6KS`g|sF0wAx=0zM>xB}T z#EBfxTOkM`;+#*?MNfhVF>mx=klDLQBXv;_Qhc~5VT*_Z6HEo5P&*F;gh)XOgwl3M zZ7foXq9E*}Yml`x9sWlO3rthTqrt}kC~YiS0@US;e1OQ$V(hL(aU_fa@XkWL^?#v> zF|mnChJqbsGgD*3;4)z@w!4=|{J0SILj3>#WY1fbw4FG8w=lcshtQA_H@u{<)L!>WQ(UPf7&us=G7X^5PH1w zEMLF26ZN3o-@6v7b6aPw-pV38qklUHxw7KZgTO7H=g%uZF!Od{qN23>rrpw;s49Fc z9^-e0UR>$pN=)>HCz2%=!WS$cXOnhEZ=$vF8>NF3AVyeQE=~(Tay@bDDK`NE+wG8V zp>dKxVyIYtUi|p;#R2x=Z|(H)q1+#mO%p1~P@4htc-~)?hYCQe)sL50mVf>w0i6~f zoxB{9eIwBX2q(W}AKIKZjgrV42nuI;I$vBLGY`TMt;*F}b9i({2#VSCj0Ns+?07=8Oc?(U9ROvKT(%Rw`G8Mkf0t0y{ zyf`YiISVQ|C%kPiky+z5nSbXUgsd;tgo#SkN^T|x+l~HOiQ3tsW3h5vdhz@cd zn(o(zPkl(G>(nUML53CZ_8u}14iF+!sfG}t5C%|Od|ocIOaU^pI2Ri( zjNq~djd3|SrljIHw=ohKY|Wk$5gOz~(+*HQgA<{fUxkZfkvtwW9=0$>456e>02$&Nhzvr4UZLZbJEC-7i859qym<5N@ZKd?HYYAxZ+ojq$yT2oRCt0~HOS5CF#`(V+=o2dQv9y;K69N?@c>VGSWo zzB7>!vznsKg#s;--G2=d>Ac}OR*^`XallCrA;Ak!mI*pn;s)&iX@5C7Ptc1vigda; zXz??MHz0sUIviMd>mYpgJ?a1*&geL!9yCJJLPYQYMl^uZC@c+#y%y3xhqOK(HC-AV z%`*KK(o}D$&Z0US0qU6hiF62{S*>Yv(b2ap$`&#mw2i)bNN%GDhrWk|helbZbv4$M zCA_PH*i75SP+-`4ccRhg^|(!h4uxMD5b0Zb&~(&Bj0UkD>emWm+|q*%=)>>-OFsMup}leb14rQM00000NkvXXu0mjfdU$&z delta 3312 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 Z005_SE`0|=;9~#)002ovPDHLkV1gj7*MI;3 diff --git a/public/images/emoji/apple/city_sunset.png b/public/images/emoji/apple/city_sunset.png index b68b0e3a8bac2e26fd1276f8d0a80481d12757e8..4712aef9f4a9f7fa82cb54161cf3ae387757bf26 100644 GIT binary patch delta 1909 zcmV-*2a5Rf8G{dyBYy!1P)t-skEEnudwpkvh1J{L*4^Dn4Hi!j8D|$DUlkog3>8-p z894(EhHP?G92jXL8-!nEdOb6EQ(0y$Et+gI)4xiA9w*^QOob{e|NsB*hFPjlQSEd` znm|M2V^;p>E{!}n{_i&Z*d6}$E#y*C?Rrw0UuFBl5%#w{aDN#h=3->exBh!GCGwS0CnyU)jvgw{us)mzg+~k9|4w?yqn4tipaq&AeFej?Aw2jfsB?7u zU7jksq^1Ly?>|*T}_@vm(Q1f2yPKgt_0LSyMKpXpy6=1hT=FriBEVQTx0gd zgTLc73vPtl?^(C~3WUZGjYr7y#*i&FhCJ^Pia9rg06UW*WJ-rCrQ^b7yBxB)$v)I1o@*|Vz#xi(N-YCa<|$d(4}Sq;cd zw9qh&4Syr(sRT6-hI`r|-!*7J5pRJ!NIDoI?SD`ZWI;PrA0+lX>>p~-3>I~-5408f zJ;=8aVh%D72vHg8?^+?|h?AjH&eB?OILl}PGSM<=(I0V0#Tr6q0(yX~?xsVnCve{VHDp@5q zUo>%u`Q#8?Lujr59DR$5Wf08gI;j-Z7JqF9gRGlDQy(C6KS`g|sF0wAx=0zM>xB}T z#EBfxTOkM`;+#*?MNfhVF>mx=klDLQBXv;_Qhc~5VT*_Z6HEo5P&*F;gh)XOgwl3M zZ7foXq9E*}Yml`x9sWlO3rthTqrt}kC~YiS0@US;e1OQ$V(hL(aU_fa@XkWL^?#v> zF|mnChJqbsGgD*3;4)z@w!4=|{J0SILj3>#WY1fbw4FG8w=lcshtQA_H@u{<)L!>WQ(UPf7&us=G7X^5PH1w zEMLF26ZN3o-@6v7b6aPw-pV38qklUHxw7KZgTO7H=g%uZF!Od{qN23>rrpw;s49Fc z9^-e0UR>$pN=)>HCz2%=!WS$cXOnhEZ=$vF8>NF3AVyeQE=~(Tay@bDDK`NE+wG8V zp>dKxVyIYtUi|p;#R2x=Z|(H)q1+#mO%p1~P@4htc-~)?hYCQe)sL50mVf>w0i6~f zoxB{9eIwBX2q(W}AKIKZjgrV42nuI;I$vBLGY`TMt;*F}b9i({2#VSCj0Ns+?07=8Oc?(U9ROvKT(%Rw`G8Mkf0t0y{ zyf`YiISVQ|C%kPiky+z5nSbXUgsd;tgo#SkN^T|x+l~HOiQ3tsW3h5vdhz@cd zn(o(zPkl(G>(nUML53CZ_8u}14iF+!sfG}t5C%|Od|ocIOaU^pI2Ri( zjNq~djd3|SrljIHw=ohKY|Wk$5gOz~(+*HQgA<{fUxkZfkvtwW9=0$>456e>02$&Nhzvr4UZLZbJEC-7i859qym<5N@ZKd?HYYAxZ+ojq$yT2oRCt0~HOS5CF#`(V+=o2dQv9y;K69N?@c>VGSWo zzB7>!vznsKg#s;--G2=d>Ac}OR*^`XallCrA;Ak!mI*pn;s)&iX@5C7Ptc1vigda; zXz??MHz0sUIviMd>mYpgJ?a1*&geL!9yCJJLPYQYMl^uZC@c+#y%y3xhqOK(HC-AV z%`*KK(o}D$&Z0US0qU6hiF62{S*>Yv(b2ap$`&#mw2i)bNN%GDhrWk|helbZbv4$M zCA_PH*i75SP+-`4ccRhg^|(!h4uxMD5b0Zb&~(&Bj0UkD>emWm+|q*%=)>>-OFsMup}leb14rQM00000NkvXXu0mjfdU$&z delta 3312 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 QfdBvi07*qoM6N<$f|>Y1qyPW_ delta 2651 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 diff --git a/public/images/emoji/apple/clap.png b/public/images/emoji/apple/clap.png index 9dc6ff8458ffe64cc044d05e1accafed1659e6cb..7b15af71fc57cd90619dbd58de232cff4838c4c3 100644 GIT binary patch delta 1633 zcmV-n2A=uG8}ST~BYyydP)t-sM{rDMXJ*xh3Swem5`&K z5CvdF6s5%lb!uN()b96xzne)R^r$es+|v`r{E#nBW|c&J*0V+Qe`GOR%>$4w*1vG( ztIK7UhH9J5_J1w?8MB_R-ap<~ivWSSn*B`Lt}Y)RAD8(6&41Wv3ynVBXFar??7x^e zpSRWfJIofKslgWW?Pj*VKeT##{=)V?&;q_V?rgAcSYSHCN7A8b)cdmlEvAn5a=CO5 zFYtseSg&)p>wBq|Siem!Xa>;T#1mR=hqC?7=3ltnbAMb+Xn+T_+V&GcSJ>Itv)#P) z=W}U0^c#D>Y+&riBuP55?*MHdRy}L8nSTntm2CG(O8-*U^V#b8 z66Q+KQq`I{EJ97~dnt{U8EQ#3As2K8@0y6gvC- zN|~WFe;juY4QN$q5hMbgg5-pf+#jRNGr~^E_{%KDF$0KE{QXvKk~(!Jv!=iOJngv$CY}5KSb9C&;OigbLf3PAWxJD;_#Y&MZs~ zSA(dDo0Z0zxYAa_;TH#q^%9j_)k+dD#c4u{6{i5fN04yi7*G?ye=}6H;!W zwtuP>E3t=fj1<(BrE?r55+qY89L_O$$|ovmLMkH(N<^VVoC6CbLGTs;Y7~Bf3a+v- zDA~hsvbLS%Z2v#H`hlGk*rd?b6rpqGP_?q*Qb||CMBsXfss_xXh#2%fbEXmK!BXUxS8H(@G^u?SVOjhJZvs(l5{LU^Qd45uH?P_#cEQ zqaGnp+v#NS`rND}ys_BHp`;kac}RD^!GDm1R9W;=@{;IQYL`=Yx7h*XJ~1USp^`qP zV-i)37eT6P4PDx&hM#3V)DkXpj_2 z;bwzHJ8DSK5aK>wj!Vm;lW;r0ggj9Q39X95xRe{kiK!K51k+i8988K3=YP`2spNYP5|jc8tRbBRP#IRv zvuHBOVegfxEKphk#swGn5q~g3(LqRvB>G3vJT9unc<&Wr7zB}mPTh_O>n59~k}UpH zS&J56kRUO^kV1!uB?4c<4s~UW1rDrGDojVnbD?Q!Z>kznnSNhDb?0|ZqOT|SQY&w6 zwXsO`i-L$O`c4jt!!zbq8KkgOXNhCN8X>Ot^3?TU=XOT3T~+a&B%PU077+t3+dC zV_I5V?z%^tStHb$IOeiOR#sPBTwL$TQth@$#DOkXS5(!SH(6O&US3=5xk==&LttQE zXJ=+&Vq#=uW73p0?7K|nu|mazFu;8*VPRorW@TVtUutS;Wq)O4ZEb9CZ*E{&@BVPRm_nKtCEK)G@(;j2L4sXbz1Vb_~DVPRfrX=uTRFvEK(X=!L< zV_{%mU)Pv7;i^5bOT(SXjh? zF5<93#epvFyMIpQu0YU{G~lK@)|oe=dPdisIoqN<&W9a+$pj@axCn*O2mOL z!F?`dWMlEaOu&3C$%r!f)@%6HZTZz{_||Uu&|vq@UisH<_|*z_|ISX z(q#G8a`C}W_|sghRrbnR_Q_cH%v<==XZX=$^2Ag4)^PgNW%9yN@4rpzwnpTw zLHNj3=6|t6_{>@O%UbERMe@T^?Ym0xz)ktpXYjpC=dwff$X4sQNZq76*qu4$gYCi!*n3cKX?Me}8_XU?rwxCi%}^!GJH?pgQ!(R^O*R)Rr~DeJ|0GG~J>) z<*z}#cr4kPH`SRp_RCs)e0$uTIN_^6?zu;{aepf4utKtLDaL~^$%it{jx(QIB(Q2I z(v>!jj*jD}J^I&c``B;csXn=NEWLa#sbwbHqdoi9Xsu@``^;Ezad3r&gy5t*v}`H) z*K^dGI=6Hyt7|Cs!%uB(Y>A18_R?ti&RpucPTi(N^~+uJ$Xb zHGku;NtKn9&zC;rvP)NK^49X*OY*KA@d^`?v2)?+qBdHst%1^!3vI-Q7yz_NT@B z8m}*+L+jJYqd|6#>7nwI@X5E~H^0$voPU8FxaqCjmDcvKRow8QRGsAL_o#Zh*6qX7 z?!=+V;QB|8_p%HC0153$L_t(o!Q!lx6Lild~In1~m)$i&a`%0EpK$I%<+9GN=w#W*j` zj_o*iJ$8K%G^f1$+JYA&&AwKC?tkaAk28zyg%!?0#%5x_V z#)%%)`!ptb^}uKGv*veP?^u)~jDJVZjZF^gSbWNqb!!&v5yx?f?Q5n!C2IY;-17D* zLC}KmX&XJaJvVn<@I6WM%JX8UJbq_PP-xPuIqk_p-cnv472d7**|~Xnvx75IVy~aO zo|`w8}}L4VW|H)y63 z+hY^O!O;0afE9Wi?PK@p7$eXviFWN)@37pQIJK?3LW*nY4 zHgvpS7eR4Ha?2M@c|2{;f{*9V|9HWM36JwQar)PjA`%vU@wdNB4~6OtK=g)d>r(m` z=bmW6Vxk{`c7Ab;{?~y6XMc_#J$h{U$WWTZAWq#dD{1f`?B!0K`hMHLb23nM`o$S< zg-E+&s(-}KyJdq-|pMAWGj1HW@aDO z`E3N$*$Fg_e8$3!8MvMj_WQ10v~&ZPGHZCAgEgRKM}O8V8*p#L77cRp zR;d{ig!H&;>q{sGkWv-PhxL2g6Zu=8I4?H0eP9ueJFStVZmZJKs?5yJbi&zIpl2C% zW+r-U`Phhe77DtC?caBB$fF5EC;$1HP=r$lfc{hCz*2u|^Bd(5Abn3%U#>T>44kP> zJNC`1Tbz5xMvUE^eSfuK$zwsICM3_vEzeCH09w1Wfg^91HU%gp$X90i?FW~wT9#C+ zVHH=bH~SAp9I%=&*{(@X6hY$3IRiimV@4dZ%QCjzX|~(sC~ygo+WZEZfz+^+)3e6S zZ@r=OlH}E2J=x3RW1d)DLl$m*chgs!bq;+uAQ^c`AoVoYS%1wm1FK;&$6>16z0Xdg zP=2~WCC=8|Yo_x2S;z_AWb>U`J zw~ykbuv#s>S?9i#t$<;KGX8R5xQHKKT5QgE*jA+FL4R-{xxcpAzr;?8UvKO_uk=JrdPqj%d1L=wu@=RYuTJflLP)Sq01l_my-)u`mY zyV|E^5lm*Q+#J@s#Y;iGJ;<-u@*uRS3Tv%fh!X@s=N}I5)?qlfi)OI(&c(>u3{MpLy%NfKimygh(J1dUnfT)Se*$&IK%lYI^XHLREIP??hTxm63qdsHxHA@@bG8 zD1Vx!XaxzAlXx#k@D3J97)=>Vc8>`WrB90Nrk*P22?SQ-w6En#W0nNW#`#vag%?3k zFG!RmWq6q_dsV0(n1oM?^w`Z7XAT0vq$$vH#m7p33`kC~1gP&IM=&8;fP^SCj(%;o ze+B%bOpD!Wso_BBklt3;6+JB!5lWIE?tcS8s8phq85`aR3yUd`x=kikoj*}*R-4z{+fd(LgdP#5}2qzH} zm2C~PGZ0C4^Sf9;VoW;0J516?>ZeNhM~cX^44!a5=TRS)8L+$g)*va6@8)${B&5E6-mVMy>tf(y_Gs8W(4coP-y ztqR+5!LFpb*!aVPI*-k(#4sfwNhAb82wwpy5m8c7LSTw4qd9xywD4QHmy3!GiU$?N z4pyNAECfM>uXq($f-*soQf^`?oA%PLcSeRKIm`5Hb*WX)dF4FMEBhNJqJMyk5(MKF zUKy2R-!eYDcOUunT%p@qV${$kg{_#pqp}3k0Lx-&lS#oV2~wyg29wkOoj&*mdhG{$ zt)~l1>phl0iNTQr+C4CEr6|CX^9TTuqy&@8-kuwDg_1UQINe(@JWo_!#AZSl*0{L_~;MFoCqvBlSDx0e{qW`83mXi^B3Kw$jw z_eVbONpHmmmzxTmMMXt^kI$a1H3Kgx4Is%u%rWJ~_n!Zt67|=@in_Y0w(jZz5U*@U zjxmTbfy(;!55s=Ok>~SOm4Vi-!rIH#MgITq_&uQaphnF&G<%u?Nu4LL7oeuhmFpLe zUOl#D^U@7VwryJjj(@**v7Drh=E!f~x_I@f%e*&EUb%J}oF0I#TC;V1f)I(rFj9$^ zwk}?Ka4*QDoj~s`UA}6`swEeUc^F6qN)8*=EZ%hW`t_GUHyr^+-_jGyFBxZ$J~G6Z zc4Yac^}#i~dqF1M+yYEh_q>J48Dp{*b2L?u6sqQZ2zJxC7d~;OoD38I=J>r&E*{-^ z#7Lfxfij>RUs;jjucXY#Kq+80v0=7mpcw!F5PRhy!2?DK00000NkvXXu0mjfp(XdX diff --git a/public/images/emoji/apple/clapper.png b/public/images/emoji/apple/clapper.png index 4c58bb69f1e3cc53d7914f82733b8902f106a0d1..ed262c5a11d973be3c8e4450e00bebea8905bf93 100644 GIT binary patch delta 1556 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 A8UO$Q diff --git a/public/images/emoji/apple/classical_building.png b/public/images/emoji/apple/classical_building.png index 50ec2406e69f557bf80a1a91d61d5318f499b5d1..52ed4f53da04daf26c40ae9eba411c53812f2076 100644 GIT binary patch delta 1933 zcmV;82XgqTA({`6BYyy*P)t-sM{rERxt`e5zV-6s=HJ80!l$5@c>VqFn2>Mx`}?!2 zkMZr`)y}#4`Rm!zw(#uU>Eq6&n|`yYipRgB_x0t8eqh47qMD0qw5pBE!={>$amBr$ zpqF>Ku#>;Hny#gYm5gkupn}@cwa>__rJQ}>*t^xuujJjqjemk;cW+s0VMa16B7=BZ zML<01;>J8TG9(@p^6b$V5(Q66L|9EL2Lb>YqCJ@a000tT%m00xgqL_t(|UZs}@d-6CIg#)B4g!Ig=dUvI!eE)6#(x;CZBn8Yh8ra&)4N{{&4Wrj zdPfv(q?DX<$)z-!*(4O>GO35b_4o(Og%Vaq>zuM0hzQj+N{xU^!_Z3>rB&+U#JFEg z2g+H_naC6n>aZ(#u(b6WD50=OkBzVry2jHIGn^1rQPbp-4QRw-T1GtXz#<)E4Z8%4 zPe>*bq<>mL@AJc!SAEEQH~An#-9_FXrgq+ z)CIFVqHS7r{52Ard+azzS2No_5cR{2pGjnSX8Q1!GnxraCxZ}e1GW|X0a?bxUw_ljxw{@dG40wG#iOYuDaO=%6NnsG z%i1h&ncFr!eOXQS&Nw9RmG-72jU=p~?l7yBpkGWfLP5fKEhrMWj=rp;dnZ%woV3#B zz`$9}5HN#WAa13nEAA-2SgqCQ3y0pz?=mPjsWLcm>`UWm(>>Dk!HHeD&)T_C!8oW? zsDF#*fBkpAZ;vw6P$(}doqPU6As-vX$kqSO_BEX_50xb&puBE!oHI~Ga9b;=*asxE zuNzE1eVXU}`|Qu3KeP9KPOf`@e}(Hi7;1a}1C_QGpU{f~-?u4C)(g@0?`wcw-{+39 z>H68Oqc-BsDQDp(2fw)^W{vf8WRUgVGJk6YafsAA?QPqGlSy6D*0&Eghreu3#+c-g zeAY^7X2pD6T%R=auHQW5wY9L~^6UtRbLmyT0WGYNEVWyZHO8m;2DBDdYMUO9f+Dx+ z1H^Vg9h~(aAjPC%{ut=Cj?sDoz2bP&l56kQa0Jp)GJxPRNOQyNDG&qb6#~fcsDG_k z!vX~mXSPL1ZR=#X)W<kqBf82&m3*t_uiSdlRK*KY(608OaQq70{gWW9?OrT`+%WvmTArESe*j7AT}M?sazpmhe-fj|Y@^13$KtxMaC z@lc-tHC1JFN1XNgwT~fioo3_+6n}y=4lx8!Bzp{WzHAz4<^Zh;R996renwD$>QHeb zG6)&zx(Zxg90x7AY{AK(P&Ku*vx0SX)o`h{85um~6lhsMSp~$lps)pzW+otA{!38R z5NP!Yiac#HTFKCy0=+Dkkvn=K&aP^ffop(B0xoilSZ-T!dP@8m1QI~YFMpsKAZq(P zXf^|Bn-SU1j9|8)_!DSG`T#A~7XdWl@jW~j zwdi;V9H0f6m5cQTl%->+Pl2ki&4@rHBRIfZ3{?S<1*kfn(e-)t5`SveZfRDKZT0b4!!H=F_US67DQk#=+W%Ggs$wW_1(90F1b=h^cUXtbK*WWqg z^9CTyg%us7KU0rjgT-SBZguDgP$<5(t zy0a5#n|mJMqGas$?tkjb_&hJGDxf*5T;f&;IYd=9Svf|z-zNATF{v zn5Ei6xi;7PI|yUTUP=j+9XaR3_y5#4Kf@|N-Jh@q-73ln$E~PCbjdZva7A@d_56Id z<=kMpmfwVl`KoH)RrrC*?Rc9|lXu`d17dSvarqdGBA+Yo5r6ot5-a099z9nEcOJS0 z1@bt`^+S8V==X literal 4266 zcmV;b5LNGqP)g3ACz^v-#*82JHq@01*(!jvDp3}~{+||U*#;vogl&GPG+S0kmz^LBZ$jQQ~o|Sv# z-N^Ry;JB`nyR@42^X8wIdbqKe!@HuEj&-JiF20G5w(q@973jc~E5k>%dRqnm!_-^SwH!kCb9 zwXKvTAsIkDI-i()BOVsJw40iebrKB%*U+-$-ou!XbhfUR&d005yrJRRz@eFZ&≻ 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 M07*qoM6N<$f&=V+DgXcg diff --git a/public/images/emoji/apple/clinking_glasses.png b/public/images/emoji/apple/clinking_glasses.png index 7b3465783ec4133a9e200c6f497cda2e7f20bbaf..1c17a30c2b1954931d3294afc5510468bff7d53e 100644 GIT binary patch delta 2187 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 FV1fiKC@TN} diff --git a/public/images/emoji/apple/clipboard.png b/public/images/emoji/apple/clipboard.png index ccc43930063dc58bb99e5998ab60ba36cefe6b54..c8a688bf602d1fed5e7e7da2fc44481fd8a92395 100644 GIT binary patch delta 1088 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 B$jtx% delta 2099 zcmV-32+a5B2fq-IBYy(`P)t-sM{rD-goqL=OT4kXmOnPMdUlgMHk>~{7cX89FIR_% zh1-yH_OY*Z-JI}gq4DVf`EU2 z%gf8Kb#P~Zoy^S4jg5^XJXw2&k63k;dV-5+fSkg@!V4!zeSdv@Wh5JegM-V<%MK_= zwRdr8B_4o*fw6UOvvO@`fShQ9of9ri6D>^?FHaLLOjB-+ZYv~iCm_ts%*x8j%gf6R zC`QfA&4z}CgM)(r8cky&8eSa+O-m#c9tCcS}sb1Nl)aBUDQ zPjDg9!rSALN)pM_ajk{A54iHNQ5U>lz-P#N5Mce#Y8y2Ks3lkIow%H zT7t7JU!BcLJ|tI}Dq5H;TbaX7L(We_&`m({%Erq{J>gbKBvX;ZLpI7sJNWnaFkzs| zNj<4WJgGuBAWe%RP>uQe_}NuS-&##1Q;-}-gYok6)KEj)SW75amDW>7%T7YUO+xkc z^}Ihb_kZ^G@5sf*M?26@LN8yQ?(Xj0R7hBWuOd~J{{R2eQAOBQN%ZvdEnb?_PeaU0 zKAkr$*;h*wHex1HiTVHk($do5;o;od+vMcrwRUiHCm^_BSn25KQFEIiPKemq*-LAZ zIcA+6L2iFAD5pd`h&3~_8$D^hOhUD{xWr06 zrlzKzo}S22N3gK4z++o^DlWVw01SA4q>sbf3w0Z`5R3D_4)~ z?CcpnZM;!OI$@AQXOh2IPc~SBvPM1V@$!_El)7?lX^OFWk*v{PRE{$$*Sol)j*K=> zZGYm(#?{2atU52WKQyHz>G1#n0A+MiPE!C7H3_09q6iDE_5)?~@AUmL9~g_B8_^>c zv}aA|)wTT*E&M`M@KHKg-Q?W&eOtnQ=XW94=E?7|_=bI>bYSGr3W=S=jGf<{Ri)%o z>8+Yk$D_18tdqas{+OAr(Biw=lv{epAb);o000DuNkla={aaqLFDSy|# z_WG+YJbM59Ln!lugBRVk_+HO(VN<8vd}n9?m)rQ~@bGYJYioD+VU&S^9}fjDTI|XE zubJ#I2@j~_`p~&tZgp)F@9A%E&0_>^ybqY>7{INrZmg}Tt2e8)+Ji+poqsOBJX2XL-71#JWbLM|{+8J>Cio+XiC zfk7+}R!~r2MC6j^LIVQk9&M}z!@O6mAru10!J-^pML7)>7RtoMy9>U&l7XJ=ICsVn z9v<%P9TgH1a(7gexA(I@V*}MeC;-6@Kqb10{PIusD~m-K5+P_J16{38Jb%!3`t%ut z;d7j!p`jx`naxm%RznI96~q>jIe=P@$2S}}aiXoQt*@`|2t>X~qg8`LV1bV#6autM zhoJX1O1DbjkVLkR1{EFuXhVEM!_M5SgtykMlgC!>D+NePz|p8Mfx_dJ6_upvQYk0~ zK}uUFDG{9b^(k>X-^>MRvwu8&Un!x%$D^_^qale*EK+7>*g@-4c3>xOv%GQ-K!g_8 z!y~g6rEJUlX}ePMKYe%qHUvo|Qh>JGLsUU>3?%~urz4~h3i>Lof`(!wVuw)54uG-} z^3W0Od1q6yLZd(qWvoGAptrYebPnYvU??3RRWc!f^Wm+r3P2yG<$t7pj3ALXCdLtj zjwlWv5d)D0(MUAPze5{rp$|w%$UxE2HJt+j3b)D)4x z6e)1fA#K`-1!8(XuYYVy2|$(sDMoW`tcvm&i0s+$ema&(tAwwS%)z8Z6~){2Y(k-; z#u^%rFeCXE2+w|}kY$RXafIe9B7`t*VRWM zNUbWG=xEYfAO!(C4VwLE8xg>Ffsde^iu}yoCR2NRA&%pUMt{wIjh5U-REQ7|TD7_U z!mp;z^XIdBd#iAI|N6V#)M*D%qZXZZWjejq5GsWN5jBm~N54LH?6-?eO-5r+&u2J2 z#*0NHb9&~14;Za!|S?fzSASZSYvJC{*OGs=>D_(=7H6$*LQTB`~syz|2ujT zWXuj^vBz;qm^tevzZJ{oEx!h3`LY!+`}s~^IGc5OH!Ppk{!6bQvlLw_*e>3q*zUWe dJMR21@(-M0G|fARTl4?`002ovPDHLkV1fik2kHO- diff --git a/public/images/emoji/apple/clock.png b/public/images/emoji/apple/clock.png index 1b66ed3e053575df6b6eaa77ccf464c594200135..de8338d4e23fd1dbe79cc6122c9058767414af1e 100644 GIT binary patch delta 2122 zcmV-Q2(|Z|Al49&BYyy{P)t-sM{rEl$i}RZiHKrX+S%T$kA|j%czk+%eoH%XL^Yp( zb&hIZU_CICZ)1^aTx2>bZ9Ob=KP_iHE$-;n^X=VwK`(+@On^i&TQMMVM>kzJDdynN zj$Kap^5J?=K+3E@%vkBx^!B^roFGVI!m zu&$+FU|*+)F_&psp`o0QXfAqGAHck@=-R2Mk5fH9KD48J$GMlYCpaNpgIY333LQE~5`-h1Bv#bzJL zNl2YLv+kdnoqvF3+4|V0SS(t9NWIp7OTBi-81|KhMyLI6?YE8o_^InSiIXIW<8;S; zqx~<;bozk!AT&yd_SEnELtDT&fb4d=ZnsMuIuNQm`X{LN@G0>VK%B()lS6bkXvi)i zSHt#i+ZiLK?#}W3!(~?2sZzc@_`XAE=c)61*)g6HcYg=WVV2cterdGb=3ph!4(7VU z-fwV*U5Tg!VP==xshEbRby!r-H?Y#}GEwo3{+871N7C8(Y__Ur&qZj4;WS+D!|4=* z>P9F;jqv*IzvDPO+VNwSU2cj3X;4AKqCDieFOjGOo_>rg37l?lSkU&~?fMDx$KM5K z_(7ELtbUG>8qzcnJZRENRpg(5Sx%4<2_!`+*ss=RLICrp78Kc^Sh4J7tW z=e03^4Vd7PNnfTpZ5>LMxw#^%IKG_k5r0((I~rT0Ip(8TkNkKY_J2naMMo$eYao?kbcYkA+F)tod_AUQC4cX9O{DUs}BUQf*rimNMh zip`H&<$_Nv8*)BO&U5uRv(%=@*h+hdAd)B9wl2&s1kNW-vws5<07(QR)OS-Sa&6@(aK)iMo4=`ZeG~*Dj-7P0 zAzN@s&oauk3U%4PCp6bqsTWKp6xb4irS_9cvN@8(Se{Xm;%W6gs48MhrwF;`l5uyr zbfb35;IIZyzTlqC582s@&2_o|){?bGlgHLMJ9>P=ZQE8hgwYxb1WE2(mw$PTrz>ob z^XjM2ia8$NRX#yvT!3SPz(&|%Q8NK5j-G9Avs+19_794!Q+dk{6SnZU5Vp-(Ao-{@ zLX589v>`EEU};tW^Rp~v$ZNU?ESHS|!iaJWID%%!Oc(CHb|23}WM~pBCPWc7#JzE= zFN7~i)Bz}ix6RHCr#ihSoqsAzcjtM9z+i|&l0niN5lB$NI4ArBTVDP`D)&v0nisD( z+UpsCO*|MP!2#AG*+Uf?6^$y%CO~RZyf00yqH1{MJk}h~gL!+2dnrR$DTXbBDleoK zV~d3dSPGIAZkoNr+S7VMSDPXRXXZ_C9|M3OlqKq;P68vuRI&w{!+%3`D|0@7*>Uej z;9S6&EIdjNUQ&l=w0=DV7-?}h<%)Euvs(dB_y!88?6*~RSS%(Ba8zRTGQs_h`chL9 zssMlni$yS59AWAlzIPO!SF71^fjr|DCUxyq`NiN@t2aibaY}qHz+||O!PGI$h!utw zKscPwt88{eScq#9aDTeW!9Q2%lVWjprV!i@T58w9ZzmRi@w4?GXr%USg@s zj76&GVg%5TN(QQmO|uv!fq4_yI&AYiP3dO{%qR?9vR@fO3!s*P<%~DGfoz%#6r}~! zjDR8GJfL9cjcE(ekhWTYg>v~4n>GytZ~!TuLQ=7iNf5}mYJW!EGu$AM?ntHuny`t< z0+0yxVoaN36uPT+XUYad1!o-s`D(1LzVs!o!+Zccnx-jU6O-gb;UuBuYfv-8o4o}B z5wNDjpfM5`Y8oT})gz`Qn8yL?4I?K>{7Z$&ZryfS*dk-K)CzQ;K#` z)OAP^jbB9*^nZ7!u0ABg)*$J2Bj=qW{c0A!ljeOEAG8Mg(Lls{TR_esn|f2Ke=4s~ zh32v;l&(3Gl+UG-00=`RJ*Nt5Hv@>+7=w-jPV|gE(-2h~1`tYv>-r9u(mu$^{XPXV z+8l{$8AyEEYdZ<=q4mIYFT$__2si*hk2!cCLbM261w+;_YDE<$T|7ly*Hm^r-Ggv!n^?v;k^;-X9{i)#o0-<(uiI-}gu>b%707*qoM6N<$f|s8F AQ~&?~ literal 4124 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 literal 4164 zcmV-K5WDY*P)dv$3+Zw2zOEb8~cvh=*`{`mO#@bK{G=jZYA^ZWb!_4fAk^z`-h_4xSt z`uh6u@$u~J?B?d?*4Ebc_xI}R>ged{)6>(wz`^6=Va*xA|A($ZsNW4E`rnVOxX ztG1GolDovvWo2dJ;o)0bT(7dUj**nP!q2C#yNZjBZEbDJ%F3gvw63qOXlQ5i_4lo} z#mvmiS6Er3rKO~=zLAraj*X4*^Y!@p{D6IWq^-GMUthk+)Tgw>rl+a7z{`1eb#QQR zpQp0*`1z=@z_h>2!^Ov)pQ5q1!J?_Os!MClSo0jG2?bX}h<>ckn*xaF{sHdWxw!6ZwwY<;9yT!e- zwXvDR6I$Ro^&0;35*Q$wV zvZF?KXExc)OeWdgKRxJ0>Ax*)p)Hiwf-T6|Vg*AvS}0n%g3yo-b%1~YfoXtd<&dLL zMD9ye6cDKg>S#P>X5ag_qOdqS^9u>(Px|5e-s`^whx^!ka(LT%udlt$7BIyYv-xYU z_1g}Ag8QB0zQf1Mdtji;Y$>j&xC!R!&5B~P+1tx!yZi58Htqk$d!Ty2T-@2&Sy2q8 zqOqW+iTx%&Dyx%s};mpKtk6*ugwa_)(h&2fd;~Ae;c)K`>uhuj;>P>jl=W9wwo8fGejz9XO&7r z==n!WR-?7UTns3)_xjI&-Pz&QQ`T!~wGQ8%w_Y>M8nn4;lQceFYRbHpY?zI_xKvgK zYOi({*M70x<5!lo&AZXq)mk?H<6U*+#Fggwxv__%{rwMv`uj(N#@l7hS05BIDQF;THHr@YlPL@A0@yKc&FyHC4 zw65Q{w&Us3GvC(QIMp|9&|RB**iYor_4n=}0p&tr3hSHboR-OB9@4n%-KEJV{|_+gIIPho%;L`VhrX{@W__eT@rB3i$wnQvK~Yt**mZ zU0dt+#fn$vx`V@gZBqzedGSFN>QDO6L1?QXaDG48O zXhB!xz#@74DhTl-F@aQPFt)kXHo5Kp;N*ApO*S?l>WRq)I)0UdutMVFL+mTB>FHeB z?Vn~ZHuku+_WW)6y})D3zh4;pkVM^F1B%D{{RRjjF{_A^ny3zAPm^2EKG$96;koP9 z;=Defq_PFYlU4^I6aXbbh|3Rre-$K6FXq-6%X*sLCvEwuzVQ|kq9owyc>EgB$OwcO z?NT{=`6?bHJs6K{ZtQ8QuHNT5vTxo_&LgzCbm*)BC1DW$jAlf0=G|}o@Mr+d-mf-T z;mPgt#Gu{BtA=kO=_M>Y{v~}aNG6MCBLb;xL|Tr2x7&D>D<(b|3vD(IR1_cGfkAs0 zr{_rlB|;MVvSE!)B0`9W3N<4mro!ddB%aQ!Cr5&6g510ijoNf{H$1ao{y1K&4JI{kxnvZ@pbx7c6fcy@ zWSVpara*^8XL1=t0!LI7ofMy8y0Fay+-8cDF=SLlc-c}Fu$-iaRn9Krh*T!kNTt#^ ziPIsGz~Q1!NN}nyLs(>zfg8?q*Xfubd_-?QUbJYtucG#ZUbN<^?VfkBx}azG#q z;)q7mLoYmg=6in|?$~2>x4gV0B8*316M+;!21kd|A?AeG7^DtDNOTNBv7SJNm}2Lr zDY9cj2cJH>e}6A-??P_gg$R`}Q4+>yQ^brwE*UHjTF!xx$rLAL=$$nv?BQ|)#WW(D zDmW=gRSiD9@9TRIx3xrDQkkJ@FBlbZcy-2P0exr~wX}z@s`!LC~4<%$zq1 zGkgBE6X*FCgD&z~ez@>*LQoc193M&`isiCC7^naSbNCK{A~C4&@-I2vk5x0OuRL+? zpGHPSh3BZw!K7>vkoW{Z0Sk1k90~<0c5q&Nsv}I4of4dSB0aY|uWm+l0DNx$X<}mN zN{&_?Tb^+Cw4@Yl6Ofz~u)x>yU<#H)Ef02q&2~CzVPK~VQ)42UYw}drXO3)!Z~lK!4n=8mN-~5e zQVUK>L}6)wf)?mvJH2ItK;ZHCe2zm9rpPWROg$ki0zq|Ab)UgEe~(Xfx*MUn+MI~k zQwb?qKoU4OfC3i4FwJQI1SotCa7snl@Wf)%GjsAvuFuYF#XkKH|6}4mv*$sQJSO;b zN+QMPf@od7W7GwMNd#e`$A!HO`#0>9PG_dG+nMby>^FxbhkW=wNe;i~$(2Ge4qj8!*C>XA zK)r%>y?y(`otVn2*TJ8{#fHy(L42$_?vOKL@#y_N>q&mTB&!0_;wV!(D~3;QD8PQX z;eddcN-!9{bto<~{-YLJSk8CeZ)>cFmb`WyFZD_-^hRo&6~bTzyWQ6x)9rRmC0sab zq)Z3RWUs2BsX;8SkfaV&_g9=<(*I)wIU+1}!vjI;8zTH425|ui-l>77K+&<093B??r)gRc(`)lX&*% z?)G?Vz7z?vrYMOFhg1DD?f3h@YMem|a6o%M7lr>eJtxmf7YfU4-4W zVx{v?y*Ei@c$|tvlXTPXPx*Yli`)2oDN~`-(Fld};2>3!G@Qha{nM?#!@Ck$3?wBR zt3Y{?Xqu+!W)rw~flHcB0&^NbE3rgdsD{YdeD=)q*QRDyUFs|b)%C`M42K4&(|&ZA zPA8K|+DtN?P7nK$Qz~%G{W!=nNF5wDKigaXTbs2%pUWU2lk-|4Q{nIcMV&?>{b+Ou ziAMVoP)w$h8I%;HMuKCpY~It3+747zW`FPH1Z*;n0fpiL6T1x{0UQM;c8Mr;gq&Jf zWA?&!Z%b=RdcNF2lpd1>is#T{90v{v96v@m9++%f5o&Sx?wVoT@0itTsxB|FX|ApG zkjq%6#q%7;p%9MadAv*Ji2${_(!LQM6|Ak(Vw6`rqD zDyC9G6sC=INX(E}g#& zjqg3yFAr+=w^?Z~naeiMkBdd_`Pi7*>X0=hykAD(a%fI-j^V)~pYj zAlVMT+m=LqG#bge#ImZYvOw#yF0!ik8@KJ>jK&=MN86gD%kt}JM1?2Z>($od;SC==Y6zuHX0NF O0000m_FvYEc1mkFUxcKyFAgjJ!&#OZ#UF_k1Y+! z5(00RUs=z&DMPT^ZGQfmLF;T0_J32zoT#wjeL=%LoM?^uxy}UvWC-zR4m!1HogZw~ zb6tKYwcL2c>3@ws0|Gi^a2Tj$crf*IsTrFPqkKjryW)*esy@AS8L_|=m-=t#^6)1y z>XA}#-l*f)wq03kwrxA2GR0xdOw`ADmy;Y7OIkxgW!ouRv9=ubuZQwBtmz@rd&is) zA7e&FMN&8iLY5%T5xvzb@9Wa&sPmyVl~xdjAS+O7m4DaNrFVB$=NUJXl8-oQgoKL5 zrQ}e;4ASz5{ycWSYSoz$l2S#lk18#%&hw_s8F#e?aRhP=5oV-9lK3&-}d*@xX~zie&5NJ@IrX$ zWJMVo#dpx5vS#R3oyBhc*quK1-!$40ieBfFK2sKk?k3WOsLRzm zrGK1>^gA-rue3!>FaFBC=f!AC;}c#*@#+{uP=8=3r4+KZzE%>cX>_Upqz?{3e4`M;eVUUd z$ay1`UMUZt{*53bg$M#&p|m0d-W$~=wuT5Kg}irxAU#hDPSX_<384WyIw6ih2m%DH z^)fxLY1KJ|@?EKylAlff*u>#NB_ouyelnCo2)6V}3^66xP^T3tHsqj_{_~vbe}7xh zu6U8UC5!|ce>=Xo3f-rPudRcI!j(jNpGb}jvk=fpdPZnTeOvKLiB!2bGVIi0#pcY= zf)F2xD$$ix>%`db;4ssMS%-yi+4VVL?(0h1f^Fj(C0awIPVA1&ye!=(%Cbr&gF#26 zF^YH9VJ>8?*OZotb8VFzN<=A)V1J_`4i{R}l@zYDe$`5^l3-%IIM52s%<#E;C6<`# z7=s;dOgj+tLVRke^eUk>Mi_CV5LK#D$|SXUZ!kkl@8bX+DI}F>oCc8y>s}XFL8dxV zNOEuEG(eTuk_-+sXHEAi$ha>ahmx~}sL}FOLB~}`uQE)=bt&^aw#G1nPJa%XowdIf zC3BN>3gC!hOSHlWGw5jU^R=$?H01sz5|u)0h{e#XZ-);wN|@BQI~ZWc!r9k>oV(}yhAuSTK8SjZVNgdCdE znd>rr%#-IaMOM%fR+y1lKU9|DTYX~zjixXobv~D3iY>&5OB_bXx&GoCB&IsY4~#Is z$a24~Vu^BJ{^rX%#J;r^5&5$2Z?yT2nbG)+`~#OiA|>m~g6aSO002ovPDHLkV1lTg B)#CsF literal 4048 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 diff --git a/public/images/emoji/apple/clock11.png b/public/images/emoji/apple/clock11.png index bc798ad58b3658132c7e56e98cbacff1deeff6b8..acd358e8b726b8bc0ff3b753436f07422edaf2ee 100644 GIT binary patch delta 1577 zcmV+^2G;q2Ah`^XBYyx|P)t-sM{rE7x50&kfwHr-nU|Hdy~cNTcGT0-ud=kNs;afM zwUUyOy}rKA(9ze}*~Z4koSmNG;^Xr2^M;0o-QM2!`1t4N=dto41iI< z##p^?-pTvF=18qhH}I2W5;<2;ocg4sa>41_xpm!m%`~p>aNc>>p*$XViX= zbyqZYQrhgOU4LcW#(xy3+~RyCO}IR;ZtIt_YyQ z2sjzbNC!k0YJb1}5Y?S=4P>-2hvSb6p_C9zy8V;dzmFPsbdX8r0})VGo8-MQ-Y282 z0K{CSu3tOXT^}EZ_DRI(lumvL)3zmR)3!}v@x}_w1fqDoZ=C(`vyOwa#xK*h;!IXq z8&;fcT9Q_7h&yI~BV7-3>}Ht(nZyc7!J@RRJX@HJl79p3$I@HJAG@D?90W5w2&o1U zEv)|s3hRsHwWK@YT%QjV4zmU+ z=Lwx3i+|P)o2oQEE;jpPTOlTLeuP-^Hae1yhvmj29P?@hOU};_FSjHScTQ?Si_z;O z0i8!^nx`+J4JG4bO{zi5s^YReL5meOWJtV+W*q^gmUNvHUOFmv>S&>a-VhS+ib(Px zGjwLBQyMMhvh9EUz(N|DT+5zCorw+!iM$V`_ zU3(EErFYOq5GM%*4)VD>6?9mIptlHWlo2?}zbo3P2qEK~5+DTaHtJb#L27bHTItC% zsk|IQVtHjKD9p1LGQU3}bWKLDNiMkbYmygv_}FzRo+%f3+>IbQ(%D$EDMxQqsYGoS zk$+v3qQ*36P7bU9fk(Q5Ryu${haskzn+Ykde#pByRqkD+S8Zmd zIvnIEDE23s4k0?XK*`XVh+>O>=wXAI=H#Fu#_p8oG7Ke&nm7ur_v0TN4jSSG5l$NJ z`AStP)C-0$FvCs@8cE@Eb5fI-VvQe~R|g;m@u^!Uey3ULBAvs3p;IvPsQqV+vE87SyKaqw1La@RS^MBsmCmr@roVqm4g^z#)rUvr zoa*p_-b!UXqKef<5mTI)oqyZuy>w?uR*E$86e5qz*G_91qC`r%LbVah(3>*e-#hK% z97XMHk%muIN=|l8-%NM87fKR^Ae3=M`D8BL>D#&W_eybB9aovQ*3VINE5-<5L&i7| z({g@@B8n}-+7Lp{Wu%;6QOscm8La$*;RX8(2h`!1zWd9Ub%;Ht^djTmzxhLL>~Tgk bzDNE8!+{@(HxBQY00000NkvXXu0mjfqXXiA literal 4096 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 i;Y5|S+|yepY(jhTg;P*3 diff --git a/public/images/emoji/apple/clock1230.png b/public/images/emoji/apple/clock1230.png index 7d871b6b4ac227cf3d75c781eee91cf4ebb64395..3279559b53003bd7c37d9b49912aa6f27b32f807 100644 GIT binary patch delta 1539 zcmV+e2K@P-A(RY|BYyy0P)t-sM{rE8x4^c*%a4tWuCTJQw6(&+!KSgmcz1T?g((L{QU9p^0vXw z_xJZ?WMu#U|GZ*u$p8QV4RlgYQvk-3jbTF`{{0G#yv!N;On*B700mh|L_t(|UY*$2 za>7^;1W;ilA>q9_DFFZfnLFVIT%=_is{DX`s(Y|`aQ80rJP!R2r60z5?*3P1Fb=1? z98mjS$%tuTY?!}c`mBI+GW?}thkpE$p$>aab|L?n0tSAJ4e$NFyAwRJR;iBz#~%Pl z@z(D~tC*vdL4UeXKOagB2WGsry9PjMlag~OF{w|b*6A?3okewaE35&;IPip!5FxA& z&H$!~qEavC&F7QffsrD`sGS#b*)Erra=C1awBA8Y1Jqk-{@E=!V)1d(-pcK=-u`60 zEW!poMe0q`YsW6q03((Mg{@86peEk;LOSnaKgo-XQ-31nF@^GGim#>qB==peB1SK_ zmkbZIE=HH7hxh%o_BQ3T*BK8|fFmXib;$WFQK$Vd{ymUic5z#x zmY3{&mf%hgW zCE=V{AAiSfB1K11-wJKk-YzOVb++J~+n!WfgjPF9c<)wdyM?%{Pay|c9w3xF{oS=I z9i)IuN4GwOme-IpilBU@!Cm}zb87nO28n5)MseTkblrRB$E#g+brtF%f8$SL*386;^ zA*bNwX z-FWc9UQ7a~K~3XE2_V8NgAPJ6>5w2}H<;kO)PW&PWjFvOfQrq|S|K_TUb{Cgd8<75 ze}ARo$<(0AphL&TYX^td?zJ(&t00%9N$_}p8dDvF0$=;wowe33s33%F64ieOU2>fU zd4du^N~x4ouubC7ga+j*_-qb9RwbVZiYl54EdXtK96uQnHx$??4i@4@#$-qvfUJ;Q z389u%YHhT*A<~#q$P%QrK6ibL2sv9T{eQLA#VBQDW1w;?WNpwXsXHintV9y6Yt)iV zN)_5lA1-9ABS`h#5aXnbG6)q3ty)VakR%g?FvFL&KIx>DQbRZXgOJv~RBH2Bl*s_Z zNO896cmq&W|BT)I8>gtX4tJGE;)w($15m4TUnpp!6+m-09|=;kbdokIMui`2W6aw?5=CN*Fu_n`7~)~U7>&>X5FLpt zu~aGMgdu3Dk;L#Y2Za>f8giT_+(wnEBws3=|u3QZB-{9I|e(v_;j6m!;qWE&$|pOg#rsL;7f zC6>69C=fOJ%VfuxR;X3taaF1qK$;+dN^?TOVXY8XVkw#`6-zMW31Ox$u`f)499P_&Z%`oH8U4#ebI9*r+MZ z;bCJj+PEeW`d6j;urBt&}WCa7D#L-(y4HpO43L|MB04{{jj%NjXAbcvAoX002ovPDHLkV1h0s=8*sZ literal 4255 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 Y57UrFEQd`l?*IS*07*qoM6N<$f}=|&I{*Lx literal 4309 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 UVW>V32><{907*qoM6N<$f}+;cD*ylh literal 4240 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 diff --git a/public/images/emoji/apple/clock230.png b/public/images/emoji/apple/clock230.png index 20ce01a8563f105d1b53f6f7cd7168f85d499702..f1ed23cf4d18b96c3881eb9a676894c1e9f0648d 100644 GIT binary patch delta 1556 zcmV+v2J89uAfybCBYyy3P)t-sM{rE8x4?gYesXehwY|onpPjzM%hJ=)nU|Hewzj9T zz?PAUo}Zwps;lSd>Dk)aw6wI~;o{HG(vp*thlhv0zP`uD$9Q;m|NsB``}^+i@AdWd ztGC9t!p~%6WTLFO1mjr70000CbW%=J0LQ%RlU!aBj5_hly?+*JVE_OHXGugsRCr#U z*x6DlK@5OlPzD%I((5w2zW-aEB%Pt9EO80r?N@&Sc){W6T>Acek~yFI%i(WxA>(+v zz2DwtZnxvltPW52O3XI54PQ2yW@)gtQ0%&w5O@vO>%SU;qQ*_dG?gl)^~ z>ej3rTS9%GbAP&R8!?2Cf)JBVjJPtU$2xrz)l1I01sgUXAObp>N`l*|^?B5pa+vV} z3Bg=~wcZ=!y|tk@Bn*hssIQ&V8psLWzo!H_SU)ez#4}FQGSA)?N13=&r^_>E^CqML z3MEJ2&gF$9fei1K zvvZD*bn-UvX5x@Eekn~pJ04Gt7J1r@AwJU47CU8Frdf;B`lK0Q9wFlaibF?7x*S6e z3p(<5X{1LaeT1BgAgcpfjU9zB5`=W59xH? z!hc1xo~c>7r_CtLJ7gp8{5{C#=yK+3p8+wKn7uI%Qe#F_Dudv>*d$fRdt0I_nXi2X z0GDI2-W!3Mq?~v7X)AFA3IsWUVvNoaWNVXBEo-h0LYcMZ9z>8==z6%Om=F~*#2EX-#FWnBQJ_c0c!5fBKtU;X1of|V zH%anUQma8$AXUWCAVgrOCrFM&Nsc7zc{!ETs*obe+!x~@JrNyg7245rLtd@qg86K|@OYLFQ#oB59`@W)ZYVnda1>A^khl>4xD= zl0Hg?pF0$GLl|}LL7hUEJ&BfMsYMaU5D+A|Fxo?lX%Lhah?5hBsa=Hc2Tf5Ck^%ntC4xEvU_vlT>1=SvCO8E`JBj;T~~@ z;aY{Z+?y=dq}?hE6>VYW(b*Sk%QZTn4nWQq=vFLI6}n8FJpV=YNaoUK8Qrhj?U{n!$$4uC4k3@`oR z>0GWgYG{^>D#CD%to3|4j*BxAF{09`^L`Elb0}UPk0000Y-JFz}@aIWT%6!_x29f*XAlrL>Rg{_yz>{CnqPttIlaW;QcQG2c2;^(5v&5yQBsEirzW;_ z;e364YwK$2YO9b9RZs}@TgZ24PR8x+?akl0xj8&M+TPy2zP{er*f={szrMOUIyyeT zxVXHySX^8@IXT@w*dHAoot~bC6&4*IAD^C`?e6X^EG!U-#GT#U)zviuf$(Q;Zh3im ze0+RsYby_0FgZE7va(W-XzJ|jT3=sZT3VWzn3$QF!QybUvvb|u-KAyaxp@!}I1`P* z?CtHt${K3x5yQj7F)=YiLqo8l;YCa{Br+)}xwp6P&-{E%U0qrlxU#A$zql?V zGdmdw92gkv>FI$M6gD?Ex3#sUfYLKEGUDPBE2?UKz>C}4JAlcFc6PQ=(J{oUD`k??)vnGdnNfi*Hz1*e6rd-?Oub zw!Z%U{vRb}B_$<@Mnny=yR;62>KblnXh=#)OH4=rXJi*wqg-5EA|fJD9esqOlYoGL zqmxr7XXi^I@h{|Fd6~@BS(#_3nmvCI$IsmWjTw2}i$1i4O=eRi8 zS2kfWJ>z=^hYL$<$fgEF>(7Gn=DghOzM(PP$n5Whm5JXA>l+&w?C|LY5rwG6^$iV= z;a9iz>X7Z5JA261_7?0|VqA1#UIrFbjbGfZt}JbAA1N-cPEP}#U0%&^5&nj=rX;_r zp>-J7GPAOS`pc;h+E823^J{8l?_}@t_T=`KcRcCl?@Ju|0JQZO?_{HU zq;5EFZ(A0SSO6`gSz@cUx2&!pWm%FNi8C6Wo`B)-e$LRWA@Zcy&`I_?fnhD zOq&^llBH)k4+uGVw4tt$zEqJj)X)$LJ&m|WO#1WkU8WY}yE$`B1=o&ERbNP7wq`Wl zYLkmGVuNPx-e{8jo|F$XAy8nbjKp}d)`oa5EX(8D;waeMt z)pg8G$5A6&%gQ4k|J4If_V}9V-`}J*8vuYs1)#0Jbsp4d`!HWhZc$EOO-TRNepLx%6Q10U+-9;c z{-H^We_m&YWfNZlMpiE&ADryO!hzP_k-UKYZcA&9|JEnbgH7-ZUz#s~)rrW=v`lAy z_E*&(@foIOUy57MPSXRI=0w+J)CZ@6JbF5X0a_TN`3H}yZhzF^SRT+qvR>p>l4)QP zVJC$w`rzw2YwWv6MI>h167cc&>EOA!)}B{ebY;AG!Y6gp6tKaL4hr#40`n3k*)XVv zq|wKG&+3atLV)a`16efoRAZ67aMZkw>@%M#y8&mE`fJe?Q#gJNySf2NoUgpM0U8-q z2y>&vwpu?=WjIC|z!>ziJwu+6rPg8jBN+}~E?J@KE2Aq!!>9rz+ z-}`IOFe?I0Sta8h%5WKb5>M$L>a&Kh1&BKSCw8gfT%9Y%R3DToo-Y0mn9c14zmTGR zJbX+onvEvb1Kexw?|D(b`p;v9CULobieVAgoz=5GzSPV?JI#U^4!Tf-($h5GC`Jh9 z4{I*T9PD!J3c(5~0DpFEy;xb^)ToCE`Pw2QF###1qy`aI`5~DqQA@n>-Opwmibi8D z>!=c`!bDbqK#F^SEVI!~wh#>B3NO}&3vCUxA?~J_M5YQak9}iG8~>PT>^>0=vU{RK z3uj_rzYN1|1d;0t>IoQEkv0Sg*%r$72OlH|nlL=-;A5uY(i1(Gie7OzwCNfB9Z?%J zbtKTWObArDukr;YXKitOObMH8lnf*#3|FW64bO3WbkhZGD_2n;Z$_bkCEtA3H+*v?U0&l08FEFcA9)X|6udrPXW6|p(QGhbd%hy9x> zmW0E6O2w*?(b z)W~tm*5#sWYs|E(a*BUe~nmxY-RsZlzvHb9l}-ADV!>hz9~ zm{g8j78>8WeO@XhxIeoX*J&i+XhyX`|G3>?>)=Ir2W!~};grru=AQL#R!A)e>Q@eD z_J?6}=d0UOt1f7+pH*Xxb%=|Ii}W4X025_K`RGDHW1*rF1s(ZE(zwnaw9!w~8C%*E zo6bVeQ^T74R_yl=da_?Cvbmsp{1W2A;?NHiis`OtH?71OAE^mSKdP{KZzEhN0qWaQ zquY||(PB=$ulgJqN@1scX}{C_))G2u8`3a=w}o~cK;&fhz1jb)_rqu6JkB=PnK?|p zJ}WmCWs~DRSvh-X7LNGh=jTVl5XdDf6%J*8%v$e$!tD6(=(3lFZtzR8RnN0?p2$T5 zug4ud*TMTIBbTj#19g~8-$%Nw!5*+@P&JV9w4Coci=^Dujf{CvNxb5nv4+q3efJl? z64O`T9`fvBgEB;aPra#Q&^`TPL$H*064YZU#Jmm++fBATy!J6$j~5orcKmhE^ZU$f>uU?J4P{ zzit>BbwJ(ORYo2$H+KOd1NEm4WM)+0jRUCBd+Pn%T_@kI+vBj-EefppBVt?%R$-w* zmFiKR9Pc0O-9O9mUJj`=j$aEeV>WoJ-<|rDu0$7TwM6jY$?p%6=CRMTeC)yJX^|@T z9w(~W+$3A;s)Ito<7OM{eO?}cT}Z+75hU?O-0G}MJ$J|W-9OV7QoCZkAg0dIsd}a9 zL=!rC(9^1aRY*V;91|qXKqpgbc%g5Na;OI#3-)vX@McpHRc0a%FgET#aqqzk|5OL8 zkg4eKGd(VT`Xa$m>RmBar)9p&48*KnD18=Xq!{5Bx97|qY`~-U*?Hru7PD}kyx-XHcve-ju;;9U2ukB^p@n5n9&g@lBkprLnncID>g`T6?t^7FRA&;S4b zV`F2XtGM15>KFh3019+cPE!EMzw2a+ll~S)uWlBw000GaNq;VHhp9R>y|J&T|7K(-h;>>dRw!#-Cs9NbN`_A^E7q;Z)n_Z<9mFU-EN@$ z9Gf4v_c$WbHiGt;e-zXIrg(JXUe-_l&WwdYZKGB8C)9i!H&l>NN^P4Q`6zep7xg*k z0RSq5cxP=Wvwtoky;I|3`ji7_0Hd_tqQ$@MIhT@iA03cxtkih>>#O%rf{f5U1m~qu zT8OOS522Oe9<2C_dR#k?QEhKv#5;s2mCkHkmPHsN;2$f?+VI#YJnz~WH^G!m(SWin zPuOClF)RJs!i17Bg%O|qT6%1H8#T)@IU}IuS+*LG*nhKZS+kZdIgBFd)Dhb#7GVxtqch#I9@$f*h&hKbg!ZELQp)YpZ8|=XVw-s8;HuNM%2src@SR|f<6-NjpR2X_ zD?fu;QGb)HEmD6tOl-^32Z7G=FAzv3M3lB~$IaUc53Q3~5c*t1NlfrCQd8f8m{!ll z`o?^QK+@43lX?o0fx%TDi(1l}Rq%(TM;7?flAJS$pFwz>w*=jaGs{&$kX;wp8N}rU z#FX{;AGn_h8Z^TfGLUlyu~TRP2;bXoqmTYko_~7P`KfJQ%1)rO(+JASatRPU_XL-% zPtGf|oSepw5VaGeW0c%;j<@wHt7Ua?U863FnnMs{8E%tM%zJLFKNx^0DMkag!6QvKCDrPAb%-g-@_W%zKXM4l-T~zK z)PK$1NR^|3lZmPpfF+A@Dyn{k)^b{w7K-t;d(XMi&VY{&No4I_g}$!^2_Y?)5?{NI z-b-Vp$c(X;L`o|XEHnDa_(Ki_32iJl5?_08F>+~*7CASmRTbzsRfC{NIc_*X)>+OS zK!PATuZ^HL{doML&*ysCFK7VBTJHg>Nq>i?^CB;n8l(~O-UAeDh~CKpk#wwDdG!0< zo)&#ZhoOUzj4=*fzeDPKQvGOxBN9m<#_MtzLB?_JqU*aEAm<&gP^CyJ*vfue=>bS9 zB^~$H6(|AZmC|BA4ymdk+D7==9DsP_5umx7?l#%zqEY%pBI-DD>S4;jsScotpnnjf zGpb2oU5)|M9A%=9F1Y*DbwdcjMJGWbh$QMdL#l%iIualo+<^aM3n2mIYf^2Z@2C($ zOg+qSxGY%P12lbwWMhn&BoL|;X(!8j4+VJ)vUW!39unMUxiN4XtVoD8ZapyQ&|wq= z5IhlVNSNd>sY#jT%Nla%FzF)%1%EqqxcO^O0!eFKrG`;oHOQ%lm7oyjj&@IJPr{}a z)jaxXOmS*Z3iqyTPU*ELHR)oaITU1V3ZW;4o|}?flgJY1iqO^Z(NWOU{gxD~L{!n} zYeS|vu?6i(AX$)nmB^~Qc3MzP`bsZ6u1ZRuSQ-&x$l=AIUs>CL$JuBdN`DkZ7Oet} zDLr&p3PTavaW9gviK3d-27Jju$Dz{>YsVcWuwsiG9e6(`lh+WJ(b$QyN>*_rCR zQtG=uHoQo3HbjUbinRU1RVG?=0yywM*OCj?LsYX&Q%a7F4tvPCl#+!g{Oy57Sm7in zm2u#NYlkFQ!l*{I@p_fRvwz6BT>phsu!V|fak+n}l$w(B1>3BFn|-X)%KB zDg(}a?*6)I_^K3I$hkVSh$0MP)p`oF_$gww6@bK*I?fd)t@$vER?(XyS^!WMt z+}z#v_V(4))%W=L^!4@d@bKm3<>=_>=H}+t*4DAJwcg#`kB^Sy)_zv>FMdk z#l_Rp)62`uoSmP}&dtZi$LHth;NRcL$;tWp`q9zQn3|oKnVR?a_ou0=r>Lm%^7G!_ z--?Tiz`($vqNA3VnUj>4xw*KeuDapj;*pV&&(F|nYirop*xTFNhlhu~zP_%ovXhgO z!otF^u&|YtmZ`D5+S%E=#L%Ryw}gd-V`F1jSXra0w5_hLdwhI?f`ixB*So#Hxx2o# zx4FT=!L+ruvb46Nq@|CMm8+|(j*pSPz{0e&v|C(UW@cu#zRJ3~x~8V4o}i+lsj_~5 zf3LU1x4FCj|Npwd%Z`nU^7Qt4d3bGYZJ(#I_V@U`$kgud@W8^wsI|tox3;CR!HbE9 z`TP8cg@b>5d3bhoq^`ZJw839rV2X>5@ACDrz0Tp~>AbtU#KgqCyu5UEb;-`t#m?EX zyve=4z{14Gud=k@;^l8}aMah^ueH6pwXmI>numyr>Fn=zcX*bQkhj6l+Ti5Y+~C&X z>f-D2@$&P6fq!&!aI(3=qou0G%FUpvxxlup$Fu$ppwGsz;e+h( zf_S*^P}*txr?~U!+PTEzf}zqjEdT%vE=fc|R9M55)(K3LX&MLcGLFiE(TPKJb$7g- zStq)iI37E*liAsOKYC#cJ#3+c(!+8Ti(D;5TU3sDi| z5QbAZ4Irl|D(W83`%#nvbNxd|`Jli2-{<|lml6oyl?{7bb~qn9q*treMx#-E=$P|1 zmpvN@KQSA(?{MB#U!YeTlai9Y#*<{!>vuWt*#7QMV0Lc$43v7c5#A2LvFj*btBr>~ z+w@~=ZP@D!ir$!HRO<^yt=6KVB5Uht7qkNniq$#)D9Z8kef8D?y-{7?YA9=IX)#zw zyShf76dB44a9N#%YN?$!ZTul;i_@|jG*1Y1s0+`Gr3%S$6@9i8Lp{$}%7k+oj^C`nzlWBuCBJ5H^W zR(;vfaI-QcZ@jaiJd{qvFpNE3Q4z?%Fd~s&N>R+__@~5mp;C|3Rom9D-N*3QTJU&y zc$i%Q3MnmV5^ViN9to3z|>TawhIXYQ~tgS<@hHhTV z80h1YhzLOeD5v5S{t_d)5^HXCG*73*S^IHm$ErCwy0pGFw7&k|pt-ks{uccWgJJFn zD!2WBu9x<8rp1{@`wOZ-`qXjdzV8}txjjdmy{{XX0H_E8&$UtzC8=}{{EI>7+Xjg zeb%KJLveTzoN#-^RnxYr-KHQ0c~_)6$>ITJxE zr1G@%^c4^hK}_xxh3Dt%lQx|he*}&DgOerACB*p4^cs072UP;fbp=#NvuDU;x}3vx zr|}b?`ses0$Dh~(&{nCenG~UulI5icf{i2FJ#6+6di=p5)0v?R4-sEn>6@BnX}{ot z9y7(2Su9p7B9)eKOPRJx%Z?F`WzZ5sBFPsaA*`*Uvc2%jjc_+62A(Fj<&~C>j4;?7 zBmo835?5Ymv80O@4TKRY3gA~d{6#VrfN5UxS zK0X%vU4wbtXQI2Gznqx(JK=cG)1C`$+Jps#kVo^3Sd!#;EeL{q zd@?MSjK%msr0h^`M1%)TMimPJwB64qCMKK+o1=Bw%NFgK1(t^I1`=8w2P_?MK4K_{C8kuw3xX!m)O zc09=}j=Q@DjYka<2!f-!pFex{>@eZCam8_}EN!GTMj(`-F-0JX%?=Gk9EU@Xs8og7 zCo`GP^`wa0_!>b>;(w#MU(U?T945SPQkwn4wM|lQsKgW5BrYxi70RKDFXx8af?nk2 zW=R>)N5rFwV^4ekC#rj5|IEyB!d8!8wibQGfosjNl4`%j%L0I?k&6M-Gx~za;Z>XJtxuW{B!+fHYB{@q$iJ%G1+E;eq$!!LNzluFC2ue(<*s2=DwwnbMo*AJXU-3{w*Fc}Rj%?u)hT16Msgz!ACeyo5ne z$nT6QH}^sHgTKB**!YXy{QMA=?klJi!_t5x5#bcna<`8sAgB$^O#+UXg$mut3-2ke zesCC$|6iKT_q8fr@)^J2(}@ZV6-kH!3ozu_VpC8Z890K((-+S+URCAls;hn9M@Q|S zOm~(3J^qn_0a8IwkkAWO=LQl`lyaOyS==_{zyl|P0ilHjoQcfM?a|gMf42@D{y#U} z&yP|?UrjiBF(ybL7E<{#o&+orZDm9vPhKSYPWuO21)@17GNTp$Yvk~XZTd11`X)q*)vUHD*xzOQ}t&2zyF?(%-@< zPGsOksrLdaNTU&g#plapytk3bWPDJ7fpsmwfC3Y~3P**$sr`fPBk6nhQ~qI!Qe|Im zN`Qf1Nn|O4#2O*8khT;rFDjIQRRt+x6TQ)Z?zH2D%(YvWKGys?|J%F1c~K#iO^t9j zK_>;Q4=BKJ4ZcAWh(-e^kN|fA8=J1?X7*&)UaS3Z=h6qQ_dZJbnOUp4sj9q$OEC*9 z0ki_lK4P&#p@?0GISqXpFImF!RN2MudUBq6cm7!J zv%Kx{$@hKVrg@%c^`S&w@|GrAg2o2bpP6F*tBZLWTxVw|C*T8MJ%QJ+N1zG#;e1A! zZV{_w(J2Ia)CPK7CAEWMOs&|>2+?pV1gd-*TqdT#Ga$rpT96Ip;!bDmW_I`iD77a*6FQ0 zE{|=Wymy?+C$WKCtv9F2Xx7mFZ2HCVwDh;S?j(+{ zVS`%rn5Bdu9*(3^vCtD@DN_>^GOSo6;B!HHT5H?$ym?&L#yZEt?gkaHI|Nk}4~HWW z&@G5W!eKlb6sX~~c*+nMc(_u}ZTq7Q-O?rsm`M4SDArkn5=Oyj6bIWqI1ZMPKpE_D z@mwY_6g37!t(H<|`5lvUdJenhF z12QhwyN!ln7#RSTMx$F7PcfOn$Rs-DUhtSF?&73^+Dg<&Qm!#g)5WrEqro;ipy(>c zX`04?T32+5(_Fhw%X>y+R{Ne$RUy{`<=(QlWnF$_n%_IzShw#V`VdtDRK#`YwXbh1 uz1OnHWpP+n-3Kcx2kup?!?OJ0fA9lP;A~lX9|Q*g0000ALR>>BYyx_P)t-sM{rDqgn_QNz@ed^tgNfGy~UQ4k*Bi2($mnozQb~I za-E)^;o{?^sI8Kclj-T|+uPjH)78Pj!OF|bhlhu^x3;gauz7fQ@$vEh|NpkY&iVQI zWMpLD0C(m9000YgQchCoh ziB0u=`Qrco&aI=HHrWm1+3HC1iAQf0VuZN-I^!@+cb;h)#>?q>Mef(Z5mv}@pm{iArCazKU zKST{zVWRgN$bXlYj8lY!XUqCS)QxjC@4QAt=jfeNJkI-&HDbUNN4KT4eqD^QJ36N%E0QeN z7qe>H*ODAM=OAnf2}s%w%T3$D2a4#Nm6k>2^kix3L5uV2Zpvv#mUCb>lqjhOEo(?t znA1r%@_)}=ztUY{(2~M>vZ((QYq|GToFOa`gUo`=`J|naywMx|4?Ibbvvi@bmA{cVDVmZsl2t}7NAT)U!_r>^Coc)wj zA*HejIhQ=~_so0Rj8ab|?ec1oiY5ny=tx%={eK!@L1(E^>sxKF77s$aTP}2@@fw3) zbYW*<=e@MIA`arD!cZA6LkT%r2n0!zSi-%&rqtDrN1Ajl(V57OG`%4I9%kg&F3^!O zLN_QnL=zM)+?#%Ai+ve}&^bVNgaC3d!8xQjNfeeiNM&r754}>dXGfrDa%AXXj44?l zk$;%#T}#&G=jftZka8X*ADT}<#!skYpaT5XY#TpxX0gB(FY6Ld={fhI_jXpYjV zK)(zW%Z^2dRto@dfGDX$y~}D`{s&gPIJB5YC>wy=WlCm7DEpoyR- zrDN0xC1Xa05&(pr#8T4;(gbx%dL$@-29wOkc)2{%JOh|4Nl3j|0=+OTs6h|<8oY89>5eScgX9}Gf6;QL zbg7OMMb(vWrw8?UNRmiGc_&vJ9N_FP>Awpm7ima0u?dA4Cmx;r!Ur* z6G_*oW)TFjDdJ!c<)f2^%gfxpL^4UF5P2#T&=7@lv;lIy=K0ouK96q+ihodI1%{d; zIn8MYdX;ceGKSa7L8d~2NDi-+*cmTxrJ16H5-V!}Eo>I1I|96yhytNdC;)|(#*p(R zJ@4lBS=Xa@!xmK_DN18zbUtsFUuO9D>J(XkS}9r+B8o8c$8h;|#>Xd9Gg^%GfyPiy zUF$>?Qex2qAyb->IgwMNh)og;G2#*qBRt4Z&PhrZ6pmk;&yNY2^D{h-R#zT}rA}wv u5FjI%&&a0`YqM@I`$7)zRPuWb%cY0h=_=$u)UU%ih_WCkdKgRYiqQ&vckp4w6w9Xwz{&p!la|2 zmY0^Ww6>Fzl6`)Dwz#>ludR4^cXM)bzR1(Ay2x*EaH5}@uC%+WsHV5Iv$nOdwX?6= zrK+!oh>5MVx5CWSzr4Bs|Ns8~ z|Nj2|@9*#Z{rvOv^!xk#=;-L`>gxLY{Ndr@?(XjO_4TKztM~Ty`T6*Yfi6 z`uh9N&d%xS>E-6;>+9>&)6?MK;Oy<~kB^SyMEPx!m2|hKGo*v9pqtmzS8C!otF1V`Sdm-rCyQ$jHdW#>SqY zqPDlVv9qXu7try~x$Y&e@2DgYWY5b8>LD zy~v%Mob2%Osj|S9l#s5jtFE`i%GBQ0+~D>4{Gh40%h1%`hFbv zfUvf{>Fe&)*W0+f!N<(g#mUav;N-Nw(DnECj*Ewp`=kC>sYV z@kH(I+NqV5^xCoboZmx`f&c&vG)Y83R9M55)@e{vSsDi5V2QXp+FD)OQ|;2@jCQqU zyUg_VXSR?PLqbAAZcIobfh2?kp>9}|eG5pIksw#qCGR;xdF9p7y5-i3Gn3o&bjw+Nu>8>_Uh&H-M(H~QewB;)9v<^U%Sm;zIrz4 zSH@$>I=5vFz11b@=@}VkP%<*oOG;L{ty|*pE0{Tp)`HSdlAeM7KApf$K+a^8*jKtO znrW@sYuvhf8>-WxLPO<5XPwho*V$Rw0PW5oE4^f9)Z7hj4b7D$fOIQrrKWwkv6EW6!p(Z>dKpR;aRb7ysW^+a2HUwbDf=3ns#Av#_DxgQIz)z#L) zN1Qm3QL=LWA3qFz?lw`|Ywvcp-|wr7iZ|!0qpYD1qN5*#a-!7v=KPpzPG@Cx`iV2? zWh<7re_*WT%i3zIyPbW*eaeHT-JH=|Pj6_&((>{_vE{}4+!Qh zg$TuyvZG^gfK#mNboQ2AE@_$X@ym6dcwT$<`TzROx|<_K0+{BP43a2^vvRKA7}c37 zYkSM=Wi4OLeS6=RjkGsE^L*N<9_z}Xy<3^G4(#X}yk$IEjil~POWwM>+@AMOJR{>r ztIC_WA9M(*sQjk7rn2^USy{`9pIw=A*SC)}50izun1@XQ3hjdqEP9pzq}}Gu|A2J- zXUnu<)0I>AJ?Z|jBRK*JDg<)naH@8};SC&vnb zL5I%_E+YzpxNMn(S?a%MROzVLhL-z_?~4YCC>5CkE_XbKIL0Ux&krjU8jT^~0fgxj zsvhlAhHhUC(3+hO2W))xB#oOh&f_u|2zqZTPm0U2F}OZ-st6ND`xlM|goZ44huaMI zeM+|EiEQIdO+2muRmwVm@}4$`vB6{nB!$@?MQ29;-2<-1)W|?uVM0?=Q4yU@NI*dj zyeq^{Y&Hgi%k!bjBtkiU!4Vm7F>~8I(wuF6*@<+{o}4Qk9dx!2Ke40|RVJge$9;HQSaJAm7l**NP9q8h4aTO+yuC27Haj-tzeBA< z%SnsxT+9vHpBJPMdP%5A0!RR1Oceu&@AWD|p^zz*2n67uLMmJv8Qc2P(9qCE(#Asx z7eWg2!u7b6DUtDEnRvWui3kmk-uF6tP!drgK2;=FiFf(swZ0r$I<$qf#i-6Z5|9^} ztYu-)2}wXfEkY9rX#5am=yWQGC@WN4x(uxl3n2C5mrIu}-AwuQM zaIYk=xB{9ybkD0Qu7oNrJeiCtVXE+5yOP3MU%q(pVl!!@E?#G_<^@eAYo&6uOnf>j z1sLLZJQ|kZuv)F0H7Cr6mSh#44u9n~+=- zYUac6;uwv)4Y|3w8V!7-SSRV=h?pv|B``2JthM#t-Mbq}3(fJSnB2U8q{&nqRq~d( zB=(dgVD3{|m0G?xiUcAOQDLDaA|a;0Qzw(sVp^Z{+`YGkwBWP&;@ujxHIAqx7otus zi_q9yEL2$$iZNhH0%pU0$-KdlOL0qJVq9j`<2&{De)ya;=P&U!=Nw^%{eF|FyA&97 zk|2uDcUg2EK*|aQ&-Du4M$0ULn?uFYChznsC4aR`*{eHf}qt#C)l|}|dCphx_PapjDJJ(azpK4Av`Ww`H(}E(B5(D*G zoTZS0MQBWsp5t(6d_`c$(R(U|0{Z9!lj0)6Lo|lHvFA^p|7Pl0Yhh!}KXmGpbD7!U zu;78I7F-PTxhzbWil9It@j@k)D#SQ$Nri=u2v5t5(ir_uo35^zeysVl_}EGRgdbx9 zvV)PNx8S%KTA`@qzMK?C!K7RzB^0q3*SehG>;R49Q0)1m=T}WX*0}%v%bI_hjfQgu zB>6!ny+sR_Sj=K6ut|*}#gT|9SS%JO!03|$6a6BB3j?fC39JfR~A8L*r z`+qBT^U^jP#sOT~S(O$M1TC}fqUf05aVNL^4;~6RRC1|piKZoO=!;8g+E~*=UrcB~ zOByMZq?D$IKtW0a;w9!ViiiCHJMS;(X-^zubMqDUoPNpS!dvNtZsE_y>;cWg;z13(?0fEA7I zumBa19XP^^<0Jn#z^bW4BiNyGP4s+JS$g|td%QXtkQMYs*CRnOoE8wELVn1VOh%DH zCR0?S$s{2DF);A|B*b7RLs97WQFl0hr}uZQU-5D*OEKk0kPAa7gv|%W<4`D+R0~w5 zC>+BPlst>5sl6}Q#hMhImR;d-~GSP2BoPlhaOS6w` zBPQJoPFa!oN*z)egige%_I~Yar*_(=nixUQ%{VY!Sss~-?#ag&HQr?>DJgs_cAdrI zhC%!)!?2a?#OCs~S76GfcgHUahtUJgJegHCpt{JadEOSo^R{lA0t*ibgv5UXSO2 z*5JY7H{N?3FIkPby$j3oZ7%7y6j1oy#)8*9_0l!l%!+SreG9JMF4?)cwLa%tdG*v4 wKXCC5*NSI$b$)(z*0bVrOilcUntUqB4|8oj11@NkoB#j-07*qoM6N<$f`r0$4gdfE diff --git a/public/images/emoji/apple/clock4.png b/public/images/emoji/apple/clock4.png index 423485b03f20cafaf6c2b98af3e7188a53267113..a2e86be5e2d1bdb96d2a16e757e54fb3939488d6 100644 GIT binary patch delta 1594 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 diff --git a/public/images/emoji/apple/clock430.png b/public/images/emoji/apple/clock430.png index 10453bce45042096ed0f2bfb147ab9e9d16d0a3b..56da136b56ae2b1e7ba30f10b7342c5e05c0bdb6 100644 GIT binary patch delta 1544 zcmV+j2KV{uAD9e~BYyy0P)t-sM{rEPwydtVz_!54uCTJRwYG(Xf_Hazrm?`%)X=J^ zrjCt_(bChJo1Ek1<&lw+t*)=e#>S(hrMkMihK7dQ+}-l>^8Eb#>+9^Uy2!f3(f|Md z_xSi^WMrYLw&6Q9`Tzg`40KXXQvm+PlVLu;{rwV+i-J)aeSZJ|1zt%+K~#8No!IG4 z^GXbW;Vud3V$Zr{Y2p4a^LR;ST5%}!b0pM1ee~K$5n}gp&VAnCgfp=JRIM$&Rtd71h%N|(4F64R3UAimt~=!jr}vl%*I5E{t(p> zaXKxK!7&m&>~SnW$lT!jyeqic?G5sj@rwQii27}FVn^zJ=Eq35T(e%&G`Cu|R zc|f}H?YFrX<8hc-nh(!sy1+D>+mz7U$C1zax``yPNu{Ud`nfD{E7nfz{9#mDW|q3A z#mq9^Tz|^V`Mt>}B6WVu&Vy6A$FbN9YLxj9D+Lw|pw+N&;LbTqtM2L{GsX*-o}^t@I! zhoNZsjUGEW5dd$-tu<+UsWiyYZl0hcpD246V<4s!T~4v_rKHd_Wefz-kqCka#W`{m z66z+_w?{@9g^Y2?(7xaGlm-SpK`IHPmTGNU&RC&n<9^Rj7ozjodh*vKrP@4RrZMVd zzJE4J`;H(NytmOzG+PrtZAwu{mFg(u?cNh~*%A2sNojDP=IY zD3lr39$_>nd))7lp)RF_fgoULYbp(zf`1K8$4?}2bGr}-g!lwi=?R-+z)C@R4g!d{ zcNVeR^(hTDSO=U`rD~OtZxmcmDnz1)sSY^Y2aC4foj(}D;A@gl4P(fe>`qESa7 z?}Ec*?OC7{5dHs48#GRSi*h2Z4*$k%vLEzjyV7oaq!m)CG|M;wGN;9rf+CJUk$-{+ zy6}r_J<^t>O${>~k;Rn#LI7g6Ajd(;b_AUXN{A>)rZurdBSj4H!n7ZvGm|noT(nji@ajkqLsm~ja~)*2(4+@TAQu$Ud32lvrOS?|AJ(Ku5D27_ zT3Vz6Kc+bvG^9kEY0|(+$VmXwq<2$;J$w{tCN~x9uO(v(- zRL8AB9V>cnPC|?iQndtv8k9v6rv}x(w0chBdpD_BAW$VlSskoFHHjs}mQF9;hwWmV1_}#SjMn#ApvW1oaBE={6|^lA>3O04_p-yfWkjE6(RI)C0A- zer^&vrE~;RW6NpIm4WXPO-hK#QdFfPuNGHC7;MgY_d?<*>zr7zLiDJkOlm#f=PcU| zNy1U8q@jJ}8g)K@?$L`&lz&n-tboSpQd^GP`Ni}fpDU#nB55=s2#t;T=wC3pUZwPV zI>-oGW!hT5NAax`lTk6HL70~FI*KW^7-Nsj6=CP2aAxlhNs~A49X6a_#@+ upLK*)Z6KuUTg>}fce!3K9T~5Y{{U(wI$4}g=$!xn002ovPDHLkU;%>1dh*Bs literal 4074 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 diff --git a/public/images/emoji/apple/clock5.png b/public/images/emoji/apple/clock5.png index 3b5d27cfa0675edcaa355dd2977340a5612a0a1a..9e02de615d3cafcd9dfda2bc491c23405f9b0898 100644 GIT binary patch delta 1597 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 VE%r=xlJo!o002ovPDHLkV1k)>r!N2i diff --git a/public/images/emoji/apple/clock6.png b/public/images/emoji/apple/clock6.png index f4a994c6733e13f0fa4cdea0f48f884433c4850d..8d64524de0fb3bdb1ce88998f2e1daa8b3e954c9 100644 GIT binary patch delta 1519 zcmV|Nrms@b>oh zw!zM1WMmC|i&_8x01R|ePE!EKfsaR%Wd8jYzQanriB$jq1%F9NL_t(|UY*p3ZZgdd zfMLqACGqsKHTQp;#~#mMIQj_T_eMwv>CtNwar$+psq1fL`fi#||82-P55q9iLoa94 zKF2ylNO>GY&$sTQm|m3ULHXQIA2Wy@Jdf`1M+%vP7&5H2$6*jLmAg~#b8ZL>q*!f_ z8C z!*F};+y;9PqmaqQ>bULuvMBHMvh3T2m;t7KU+;F1qoPeCc&)a5S(kO)JRp~=os?|Rz*~32r}Mp{076KMheP)gGkSgI)4VWt272-a5nD^Lu_HyJf(1&p;-XWsaU(_`^8~FFmD2D+>V{~KZM7qm+dM{h@+o9LpIdKFsQY6wA?^6G`SX9Td&Pgrk zyoLB*Du4O}BpnaSb;pJW(xVmU9fXn!X(&=JL7TR?SXlNyK$4`hYe^EcttLfe{tS_1 z(~Oc_2`{AA&6x$~6KGSjE6}+HncZTL+g?H86%?(@<(Hr<&{apekY8RwD8+w3xSI;@ z7;>I(?bK@3E~2ut^tNarh?9bu^IXn7;b!|90)Kt9bJY9Q7A}f9g9&p8v|DeZT{h5b zg;si=q0k^<7^2+_ecmHasUBf=39Q*0eTfY0%OhcJ4*S zVSh1QyU!tb4HhAsD#FU6Rz)+JotNv|aW{4G$Dg<}PrA&}UD7LQ-rM6K#)*d3({J9 z2mt`Dr;edO5KCeet`+@%PYp52$i(YcnKGykLRCtbc_e zh@1j>lQST6r60C(Bo`z}qBe$dE>Nox$NGR!O0Gv}B8YbLbnez93u<)c3PpBgF%C+u zBj}5cL`ftu#1@z7j7gdiVR*3;#3#bJj3e!q4KF7YcVQ7hEQ|9Pl&&Y5ZoDUHEmE}v z5{4ZPa&AniJC*q^NdU%kQ=#ryfq!g+)T6^eWBNvflg6Kt^d!+EP(g%Yrv>#Dn!ajM zk$63}a2nL!3q%eF(Wxbg?#)dsu|*I-)`&DkdO$Apkdy#KBCBaOXMb1NDLnxl36iAI zfpg(m(zQVh=?OrKagfY~mJ^968KPKbhMf%LjN_FBS?-6W86~2gEr~&fdwEz)TCY+vO=)XkJl=Ke8z6J}X%YmEB8(n3NU1s5RYwl= zEa9XCkQ_y^CBsU|`OOiDqnKh$6k(D$ucR@R@H-_F3d7D1Iu`_9Nn?p(%4M{|qjG0P zab8UK^;0Rf0CF8DnZkT^r)Xbi!u5m#$C|^3#xX-V69aFe_*NBzW{^UR&5 zE3b^;AR{?{t7;xTI3F=WUA{)4M7eaQPiLAgh>c==T`rTve5!R_f4N?-m#%w*{0|tl VH9-xMLx%tW002ovPDHLkV1gDG%xeGu literal 4088 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 s^^HIR{#J2 literal 4194 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 XdnEAX#$G;UG&I_;^fVA^mLdNGpm0gf diff --git a/public/images/emoji/apple/clock730.png b/public/images/emoji/apple/clock730.png index 5139d5c9eb5d2c8aa4cd9c51acd00e787c8159de..52a2efe9a578248480b0b6738fdeafcd990f2387 100644 GIT binary patch delta 1513 zcmVfCBYyx?P)t-sM{rD-mXx)<#)X7|%goBLva_(VwWYAWdU<(kYiq8z zz?+<%qot_Y+S{$JuaT0H>g(&!(bMAN000l}(L_t(|UVoj~*>1Dk4uIhdKvrU} zc>wa=|9x%`&{edRCizW;a`g1IE9Ic4KW7-m=^`_Y!*KdP)ofKL&&}>?m&>>5-kYWLor5jm#;n?*SLqcM> zWj>Bt3sK$xOD~$pN$Z-PDVu7;GQS+6oXNZN|IVb2&40OZ&5O|mZOJdC@fPA5=4gC+ z&Gh}6H#eomqcc2`CC3^N=Oam=^)Va|6vLY4kU`e^M2bGIOs$9I#&ucaym%j;kk;qyvL)v;h@>?GNxEDQk^?nyK1>R!<|@+kE6B$A=^Z&FeVP<3dOlN6nkZ)gdRbOg#b&|iCjl3BzP0okRyg|*^LJ%M6VSihk3y8C5lRR%2fkLo=tvWu^@MtA2 zu98ENFrsv+3+xLc4j(%ur$-u2qboHAXaeoaiN^2#u+puqs2^!OO;}yCzEP+;QYBvB zP-GQ$XHmx%K2og{K@LmvC51rJ(b7C>-6fp^)D*g$&Hzx0FV+&(onITKTJ5~6o#{|h z$bWn9s&53Tq*nKWbFMCjpoJcFl8pp8SI-P(bW)_-Jq7Ar#nGf)IR;s4Bh-fI2+CQY z$h&FM0khQOutVIkI}A0b1pv;ci6B6QRN`!@m!HZ(nAFfm9fcx6)iX3IRAaPhm%1}Y zcEBZd1UopfLUkVe#E|jmT@)#(^s``)9)E^Z*HK3y2M!4uPs5cVz!r76BUO-t&?QxR z&K}epI>_D+0%ZUwjUinw?2eTnbPV+xfi$Q!MD*ET2l}SX#_*9^+@)?+l*OF03Mtc_ z*a{#JbmlL%?MRK2y2J}cboB7ccH`(&4$6KaXfQv!MRs~qa2!;fLX7vGZLxv~41bLT z$&o0jl4O%mL8*c?&N^f$sL>e>0`z(!nzJ#+gU6!FX%u0W0K}LC>WVnJSSwC~^7+Iw zntac&C5fa_8Wgw)tsijJc<>7~N08S9CdE@9zEZsQ@yjn6&-<>h){4wKIsGR*~ z0ivTpRC;6RmtDuxpEK}!Qevf6A7Dip&KU%F7p0U~0_+GW#Ppo^)IT0RMDAmZwBGO6 zk#oMGRMSzK?9Umc&b;AqSUHcUZ)X^$^VReeLZ%+`wKk5^nP+_W@5BEADQ_Kci~-2N P00000NkvXXu0mjf{2i zqaf4L(0Q-orcn$pDzB`rZtdURTCc*Q*EVJ^j}8cf10>R>kFSrTgPoh3TSxCu5xNnB z!Tj{|Mb&hmunifhklKb;2qdwoi%<-Q0)vC2V`AdtK)-&4!Qs%h4m_f&t*NQDuplol zJ3Zj19~czx?(POH$Sp-8%Idl*n)|%Hz2YK6%5iO@&E_ zAl4I<>lqY#qRFz>gwvr$;sx{*7@1_($do0 z+}y#zA?fUlL?VrijWskj9-o{H3=B+7O*J<+@9pnzZ*LzR9UmSZjgF3PY-|t+gxT5I z?(XiDm6ep#^qrmE#l^+c^vwDBc_NXRl$?^AUznAXw|{W(cY1nqaJtsFGi^UEP z5C8o;lV1p1TU+bs>}+jo>+kRH?d=T)0^{T3s;aAtic1PgD$!`Plao_10*Ndu$Kh~^ z5C{ka`t#=x0$Em9Uw?UZrLS*LSXzBEsimc50jxM43`u~bL`O%%ii*({*z)SOAHF`3 zQL*P27g^akP*ejFg@mIU{QUjH!o$bM|Dezn>6zJ~zkc291%_$OFDNKMl-SwXxwyLS z9ULVlfKSgaaIHf&HrBN*y|J-zd2kH2q5I(Y1l`c*<>eU=7?_@#bGy2}#@4oGWo05O z>aorJLqkI)*v_0HG$<~*qi3*Zgy`X&A_0FC+AmBPftrRRjrLRhu7C1se7z$A~Ed=(ELm$4Nhlbr@noUyy5CX z{XqY^y94a_*<7VD#3DvSYG3J#^LF$$DCD&NpsV&@|Gg}TqyA~>Hh!aG;k0LR>wNd5 z30O05Fo|AhCocZabN`=k)ieTjBqO6!R8xAZqu&M@`>vJf!+vKs;^75PRGZ9nR>|}> ze9QMFUh_>>RYk>#3-_`wb1M%|=q?je0{7i6bty&i3`X)aF*GGFagN#u^p-;K-IH*! z<{*x5&$wxPM-lJ>OxJ;52y*HHbZ}QikuQfNKe*Gao>%(ivG*D3gfvn|T>6&Qj{@v` z`Z;#KO;jNL!hY|)|Ibc#{~8{j3h6~J3YDrw0;=doXS8R*L_>+ znb1g?@Vkz~c21Ui`7wmPuuV5nBChNxFmQ)vOAc{jOD6R&RkmlW_#YcXu0CqhoASyM2WsP3d?8_ zd>!cbba<)ZsyQQTddlcc)CWIhu9+++d2Qp*!k>mFXl-q1wubo^J6@4q++;UG#!=*Q zA^9~jX$N&2x4#d=L-9m^ti=zTd1cmMb(yCC<1eEr;+8MqLWvm}Q9WgW83wf*vn3nV zc*_|@k7AE+_G>e*)#P!dPR;bsGuubvDLH}TPNQ1TTDU!3Av(nL zKhqPFXjuoVapYJ2dA0BcEUMb83z2j{3~+Y%%@P2Z z>41{To-(p1rDsLSg`}VJFwuC%_8?d$#R4bUdD!*18|Adc==)=jw)LeC0@pHg3d2|z z31U*Yjv-X`M3Bqa^Xar@FnYiCa{IF3;2^nc9R5Alv(Ki2a4}AqX2(_$99SpX^;;Wa zf0gK`x1E)qb;#hVfwhnnsj5=tOQbh)VI2JX+xF!{17R5k(QhNupR;r<<7nDyjP16! zrl_YW$?mqE#vI19<`JzfZS9CV0V1o8V%FB~I3mbeM4E4S)`*Rreu2FGs}S>t><7sc zO~lAC;Yfl?bRs{Y#)KNUe4#f(QM zSQCmPMSHH?gD~6brrzuYyii2l8{q-YNC*+F@Z|bJ?=K-PFTTc@x;=&>;yHm0xPoe| zsm;J(14M*+o_%`g8NGHWb&Fa2Eu6KFzBQP8h@7!GZnV_Ty?EwC2upjaI zr+^Blb-eEyRkqGktG%{)Ee}STt!L%k4VnevX~cVB+#+fG#zEw2)CM00h!jEh0LP}P zHJO}Fs=7=7D%yX8DYxEQ2wAtjVh1iO6Y184WJNUknAF_fr_aeN=*d0vV_%9rQ+gMr z-D!b1_3RFP#?ot|qnszN*Y?_Cu}(oNIgMv-HutW(TL=8&D#Ug$n-jJv&@C{uPQRy{ zCuP*Z^u+G{zqAXmNx|KyuWWM=JmA(wBT>Ey0~DW z%iT!|T2{B01p_YC{LC=x>RZ(9!Lt6;yt-^jYXpziJF6)F3sANNRX2%Z<>c-350 zF&OJz3;p&=Q`i6Um@Ql=UfgoILw>)rkWinB3y<{?;eeLD(J|iBZK}WWwF1$lM3^&2 z1Out^-nC%hT1C}HA2t)Lm8dCqcgn?TQyJo@Z%1kL3gWK)FIpeg-FU;;*j+$+5*&~j z!wW!jv*Ztzr|uax$X6R8QpC*!T<+Wp4=oVmHgO@^>w-OZTzfW)o+iVE;_@9@h1yG@e~l@~S@(L-HZ540cJ; zO=vT!b%KGsR^SJ6nx%ww&q;?Nw_Do&mdYk5&SC<&4bm+bxA%$?lNWsO=+3@sA!WKJ&ERAp&OLW_Nais2 zTJvLu;kKQIMy!lWyLF9@B0!MmzgJ%nSgS`zhDZ^Jrp534P{*NaR69Xpx4-$HFI;Lfj)+rRDA8R&NR*X|%L;N|YCT>ri!t#z6FU}|Y%Rgcm1?z@yjeZW*W)+!W;^Hiwu{6;^vToI>^@rBrzo!>>}$2y zf6M&)R3G2WN1d0FoIDR@tmJ07@Hj3^M4Q!aVOAg<`*Rs5^m9M6ABW-h%bRy(m$pb2?bBSkC-wq+0g7 zkbYA<#ijQ`oupg9C6O@YgUy>$YfZgFBiszAQ%bgEb9$XLIW;vQkRr+?yQwFiEo~wF zp`MFXGAA%l)|At01m#;~ugn*>Lh00ZfTrzE(%i8yh_ejUkuk}BcEQ$|6WJyicBJjg zNXkn)RPpP!?}?Szk}8;Gql1)WXUI5vjYmYX4UCA-@x~)gpAAP}%Bv}C ztt4nE{ta=9An%bE`^_Ihc=nm4jYp1y^s!p5A=GL7%$OhVumwv6&r4;Wl-Jx5;7aHU z#2!^ko2>0e_YH;s|YTX zEW{Ns4<Q8R}N?bR;i4)iAR!|qo!=33)eb>LAi^$jDPjI*og3cP;c0iH-@ zZC!Q<&ku|^*cDBsHFTIk*2E!w{(Ft^Dl6$%tPUAzbjZ{86cKxM z?h^vX=^2&KpaorK&>-h0l%6wN2x??QI_*WTU0*dLv5KSnNNZc~Y0Yc~Y5axJY{xuc z_m!O>gxS!K)5Oq!Z&P$;ZN>Ojlk4{-XWo5p>xmVHK8?%xGxCh1B<3&NQD!%96Pen3 LO(m3~Iq?4gkqjHV diff --git a/public/images/emoji/apple/clock8.png b/public/images/emoji/apple/clock8.png index 7767d5bdfe3f6e6dc47145a1086ba71ac097ac5c..aa5ecc1655942585a1d55e8e53ca47fa3d1b43a1 100644 GIT binary patch delta 1622 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 C5j6Dx diff --git a/public/images/emoji/apple/clock830.png b/public/images/emoji/apple/clock830.png index 1239cbe2ac1bed61077b62647f38ca570f42b61d..d530831e36c39dbf4a5e966fc21386abfab57356 100644 GIT binary patch delta 1564 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 diff --git a/public/images/emoji/apple/clock9.png b/public/images/emoji/apple/clock9.png index cdcdcac586c47485231fd41a46bcd467216a968e..71ced641e6415e5a2b9ae7380c59794854ea9d4b 100644 GIT binary patch delta 1499 zcmV<11tj{iAM6W|BYyx_P)t-sM{rE8x4^c*%a4wYud%bTva^MRf~T^O*KEM9`5{_G1)$RZQ1vyDXL4Q3r;`IZ5)R;o?#qsr@ze&jq|lmp)Y6Devgd} zDKZuNm313X>CBZM(ayu|mkc-Tb*?+Izod}aQDGy-xbLoegmvn5&Km;AAY$WQK&Lhu z3UQr!dl5CB`G4=CVt1%7&)zwoD+$-0^&)D(5@f8h1(D)nv})U|-8N-o@CC6#RE_$6 zt@}0Z$ZRU71TL!0tjn^f5EOn}&1R#AM*XtIU! zKNRWcsQqfqR*+HHGS^vyBdE=~S*Iu1_wS`UIcnL`UvM4@oM63W;8VNMqjNiN3LQ1UCXPUkAesNA^W&NB z(d=qAsXE6ZGase2le9l9H}30h=T&R7kaH{&=pbE({}(fAU*?>YI089Y?cq)#0ZIFR z%MJU=2Y-s_EYBb*k|d*iy0SD#(5m9R=uFP*B9TDvC{dCGt+PvJCg%uwDmp@|iK!qY zS2}NsF71SQxf)-|Y*{mOuFmL|XlAEZTf= zAmk549rD_tHwX@O&Q<-{Mw9wO_4R;IP`!_m~3U+pY4o;I~!9&r~B!+0W5`4xZ zArzfmvp+bUT06u*&*{*XA=D#{Irz9iAc!TwDrr1JZRM6Lkk?pD(2#u&R!4SN`g)@Z z^?w%W;bSYOy+dj^4Ult)+HJ;|E*We#eU#5!)Sq_gb|MwD4+z~)cL4BC2c?ig2PKQC zl>0fEAVDMuA^x{9q_xgo2dg%ckTUtpR7ggGP_hW+oEb_bBScBuq;hUOQnWQla@uAp zLWh!0khQZliHo2-4*2zfS(<~8MaTib{eLv1l%RBom$Uf`l$ET+k2p4f_ZkH9Q6#M9 zS&`*O5LVb>$Xe^bXAOEdjVVpK=uD7E%kj3&5Ql?e1`i00r`v@ffY_5*dK_jL>r4-d z2xZV(-xx{&5I&QHl9N=eG2GLFLMfn=zTi9CI~@tMi%sI~o@5C_(;WwypgX;>(SMOZ z=O9p{%vXYpwK5FF7(5i6k{%GcF$CaHQYG2srf+UHSD^(KeIF@rFJ4H*7B+ zdf+Tid~l}eUIkh1<5Oaat>Z*qt2ug-#bmiIl`cj51&hRRPInL*D!VP(?^#ed!on^Ee2v*&ZqNEz)`|U2_R{Xa^WzJm;&O+fsPVIF-4Yp zP-v@`lceW6X-XO?4V9Adt)@C3&wJ$JJqmQQJPM3Z4CtOCcYZ$O<)cx}f>JV0DU}xH zGQRjogV$qFIWMA^Vv8^tLddxclJlC9!HP+KVdfVz zzF*|k!d%|RzkFDS*rzrjA|KZMMH}961~h&~{sB!8B(GE>6R`jQ002ovPDHLkV1f|p B+u;BJ literal 4018 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 Y0&({?!F^!_*#H0l07*qoM6N<$g7x`u>Hq)$ diff --git a/public/images/emoji/apple/clock930.png b/public/images/emoji/apple/clock930.png index 54e4c295cc36c291aa01d9df8a3ba2e805381881..cee3441fa295f98805101377c5e3a907e68df56e 100644 GIT binary patch delta 1494 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 S8s^^zMW(8xp$L~Z4g4RqJ0raS diff --git a/public/images/emoji/apple/closed_book.png b/public/images/emoji/apple/closed_book.png index 76d737eb436b11eb0010b8237df19c4a18ed0ca1..a89b51b4ed7acd783fcd3991873be1e15c5b2743 100644 GIT binary patch delta 1459 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 N002ovPDHLkV1j>y60ZON diff --git a/public/images/emoji/apple/closed_lock_with_key.png b/public/images/emoji/apple/closed_lock_with_key.png index 4b65457f81475fc6d78bfbc0a23660f9b5360ee5..cac796c581f40c6825c96ec45d925563116a9d5a 100644 GIT binary patch delta 2059 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 diff --git a/public/images/emoji/apple/cloud.png b/public/images/emoji/apple/cloud.png index 75ba55f2bcdb630428f4ea37423fdc8c375f2230..11dbe4dc8f0ec691fda77fdae0e75c61832d79a4 100644 GIT binary patch delta 873 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 A`Tzg` diff --git a/public/images/emoji/apple/cloud_lightning.png b/public/images/emoji/apple/cloud_lightning.png index 8ece19c22da9285c45895efc9ab522ae99cf3c76..449f57c3ec41a7df61858169e55d29483d6b6df4 100644 GIT binary patch delta 1200 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 diff --git a/public/images/emoji/apple/cloud_rain.png b/public/images/emoji/apple/cloud_rain.png index b9962109c14b9b52d6b2cc88e97ff6e6aaa546e9..9264ab0addaaed3897b4296131c4b8639ba8a7b8 100644 GIT binary patch delta 1554 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 diff --git a/public/images/emoji/apple/cloud_snow.png b/public/images/emoji/apple/cloud_snow.png index 84e5e5a4ae9d62ff19c3c9b2e163d5f4b1292018..1c998a816bc6906cb8ddc701957d281f3aa68454 100644 GIT binary patch delta 1495 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 Nrbd>)Y6JK8{|DwLOeX*U diff --git a/public/images/emoji/apple/cloud_tornado.png b/public/images/emoji/apple/cloud_tornado.png index 7e058f2cb784b73d927206c38f3dcecaa1cf510b..1277f97570e890ceb26f640c0a739b326b1ba9b4 100644 GIT binary patch delta 2229 zcmV;m2uk!q`!^qcdaeTqY*7o=OouahH%-X}q*uKQo z#md>9q_)V++se+|hKreMZg_=>mtJ9Oo}{&FZ+d5Ic7%wQ%74$?qNlgU%GhvpfP8_B zZE<}1`~IJ#vwwq+^7Hwco~*~q*w549vbM!wV{M_OwCnBkwYkRn`~LFu_^q+O@bUQC z-RYB-qk)Bx>+ST?)!xd@*Mo+UiHw$wk(_{njMv)Yo1dx1$kU>wu(!I!l9iy&(c8hp z&Znxi-QVZpCCvU#Fe<62&TpV)KB&9&n}m*m30@Z_J#<>I@8?AC7O+sUrq1iZfh00%Bf zL_t(|UX_@6SK?R@#qERuVGjrmDzb@yK*NBzOxxOKXMabX@BdlmR=q@M4mMEwpXdC% z_g1}nNltcFC=?C^W9c6om8OcJg26x_91flAFHpiv`St5xuYRElg~Hj{`FXBb%;&XW zBpmWtd$fS^`udMoudlDAQt9&Y;^OqQ)w;SW7BgBT@)wezDJ>;2*F`T6#? z*}S=Ve1Ci#je5OSt6Bx>D}$jxP|N4e3a6JPLHRD~3>u9x zqjvfW2Q%5L!s+O-)O>#U`SJbxe_k=_&0S0gw3?1nFE1~@J3wXgyP^td*=noTd%S7h zKEJ&)XB)JfF=uXDR=>}vd@%4Q3fxGx+-nS;qJN2@;qC(I#xemx%rPC=0g6Z(lQx@` zDK~!i?~}>sY_bp}KOxS@)s4x_=a?X=vLLaj4NkD$>B{5r+)k}#6CEHXafz%AayCub zrfHEPkh*=iyDBniJv^C8SG7$=HRsdh(qNL0@||%)b5m7iNRm}m>9*G-pQBaVs;o!^ z8h@{5OT*nDefUj-v$+jtvZ6YsqexP%-6>xQ5^(^EXyvwwzbKAngA`>FP+ZI*MNxn( zShFohRiG$dyX!Ps0L2)@ry^5sD@t6FW$3nKaV7}Ght+xpZ0@P6yWJLdNKBbg& zA%;7T*25SNqXiOB3OFbz+6HACsw#n{ns#cMB@c@V+j*Pwt&>cm@AU|yOrm8Ab`)O0yK8erAiWKnxK@U5-tCXqz#eY~Z z?9Wj|%a*$UkvF96n?u2zXqsp~&!V4D<+@re7Sj+E^7a`>kOT}(8fJ<529PHRihPi) zKsQLj*mXUN#rx+Ofu!p$%yBtZYD(syMWDR2>BKr5kT6!y0uvLQH7QfCfFvUWnMNRq zQPN$1m~?+0Q9#9ov1~@uf`YRqk$s|}K> zki;1{6gcG#j!Q5O2?Kz%Wzn*D4aT$xUvbRYFh{c_VJI0yW0~L)pvl(#J<9_CXCw%m zEj8=BE8RFy(B#KNB(&|bYv`%U-G`t|B*d6)kjT3hCzK+VKyv190c1p@ZGR&q=CGjf z$?oz<0KuF?XAaY}oEVD*LZ^KMNrFV6diKk!)}H|($>9M92`IyuV2#XpkMMc*oSp0= z#gP+9B6A4_`Fn)hMj-T_o&D8ayC(50LDCAE*qncfh^*r^j_7Yir0cc>QA9#a9JnAQ zqKMn%-AJH4&q$F-Cd(v+Nq=J+CklJ@y zoupbRZ^?mVV0W9iNbaa@$C0|iocDmTSVpHdhPzgez}pd|e6`bOb5WXamsaH}CF7LT zwWB~`tyuo8nqphhFn<}?0dqNiRNCCSV4jA+9{c+Q836=EmE%BRfXct=(22WuVJxA@ zQH}%g)siok2aqH-6RZi4BpnV4p-54&HFz;G0eB)LNdz*F289W9)q9!azN9Sx&}7Dn z;uUo5a7-ZJflS+5-#$p9!*&dZL4%ZKr2v|sYXI4@qSR=Pj(_09V#V`TZ*V_HNc_5^ zPej;vS%41Wu$)*vUAz*YF)MOi1Bx64-Pgj0^*v0SbUJt5B9Lv4>8{j0kkqYb_8;2N zADpvRZ^VkCyh>n=K$R?kLi;eA9K0_BWLslC|L!8OO4(|+%&rGuAsdVlOgeTiB3OXz_hfaY_4)1kp0TM$IA4NO9PEr%QCaV{<{A6d}~CynPi zC96Gp+Y5f8_HfcU(sOZnSpo<<66ZrlLSs`M;EgC9+am4ujPgmlIqQG`DghJ)2$wBCN1FZ7=(GS*?kkeu?0*u}oK0yN853~q{u6<=Njo_# zh(SV7vzef$(#euI_EU+!BY||zB$3lLM}Rg35eFZ9CTuJ@oj%=^wn)1{%n7aq5$AS@ zo5*|k8{%_R>2i|aEsPiPHOx!xg00000NkvXXu0mjf D@X}}) literal 4203 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 diff --git a/public/images/emoji/apple/cloud_with_lightning_and_rain.png b/public/images/emoji/apple/cloud_with_lightning_and_rain.png index a7635b4dd4c37a9fd2e137ee90a63b7b0adfc593..b944624331b24558946bc6d32eeff40f7cc5018d 100644 GIT binary patch delta 2060 zcmV+n2=n*i8<-G~BYy!kP)t-sM{rF3+Z{Kw;QFfu{=Es2zuCaZ%)ZIfc%Y=I!^#6> zuD;3B5?Y_Q#?bq@1u(<=0(`{7&DXrg(g=dcKDy}rtpxtm4`ip$EU)M+wDUN#?FEa{ z)ziL;sJ}$B?G2RK7p3YewDQTzySc^Cy~)$T!K=K-(gK3U{eQIry~)#$r@G0~+tAqG zv&z@}tONs-*>=V1vcJrnuDgG)&LE=YrQY)Vy8_zOy8grik<{`0oCE*G2L8?f{;>oW zt@+3L{wlitRm=Xd@BVw%{GRFl|N6Du|Nj5)O2o#w|MhPF_mJ`b|KQxc@$uI3^!DNA z>*eX~-Q(!k-+$%O+TqOA-Net>=BO@%sDw_4fDp`TDfM%>4ZQ+uqs!{{GC; z(BkFc=<4X!*vrPt#sB~RqP4_QGh0Id002I8QchC<{4Nsx5LW&M94jsrMoOA-(d$T6 z)YNf>5Eub$uA+0K;V@qdTYt>R{EWO-JJn{EIA22@Ez zK~#8N?AFPWA~z5QU|%RTQNf|=5gLLBLU5RQ5Uoos>^)<@|06gvC7}Xirrq|@KlBnn zd}Jn->i+G&$^V(x3(R{x|2N94+BL0r);hjz*46B*%%)-1Xf36dT5HRj>g_8|z4O4R zKv4=T>wni@XmHaa(|44<@6j^0dH;vZ+XlLlp%WuU2mx3iY4O>?)Kyh2>J7tk#JG6!y*LPFJ1te{J3$n624<>=GJ>KdMjJR(>gNO6G`Qz|AEhDHQ*z$-QsOJ% z7Jq`0+O|)q`D#n+NjrrU635(Sgp`0oUzq&7e0;dkKRQleI|Y zJvu{NeR5(!aoZLL#%+|40t+xqIe*zoQaw|Lv-B5b2E93yfFcVt;xabv6`9F=(DCfB zNlSYm$!N3)BaSfQibzcQ+=~-8gvO1MHDpng`pBiBS3o+iZ%lM@K{O@ixpNjVioRa2 zACw+%WKyu0!Z?o(eD*mjkce`qo$Lwj1}x-qsN;xeLkyM!&Ua`mXSPO(d4KOYd|mwI z^27Z&rCd+f6e+J6L4}wE(1fz4gKL`hUjx$vJ&s4zPgcuB+C5r}1fV797tnjDElWdJ$0v<@f>$ zDgn(>u2q24QFnO{EEe!BJ~F-n{a2t*;dYP!_sg!Rs?w%5;43q-ciX)^x*d&Lts73O zb=y!;?O!14b1CHsc(&5>??Ir^L`v1P1F~+4)i((|`LrU=oUi4-Xn(Y^OAd4GvQjqS z`LUOtb%DY)&0cbN)T$l)e~dF6po`}LJdlvYsRL6kGFM5KdD@>n!x-Z%?eUe~k@Ee1 z%h>PtJE`7zVpkw@kY*X_Rrgzlik&ba1Sew_{nV*TIk2OEDzA4YJk;_NOfm?opy{lw zn(Bpdl9GYR^P$)jNq@@0L(Ad>VVtHoHY;A-^zgb(MNt&TGxlhTU}ERnon-454GW8t z#BW!$cz_S{CM}J^Qr5(fpobj#^DrqU$Y5bZ#5$stJhKGD8-PeN+|Uo;7i!O!R}qXr zE^V&QzHGr^7d$RaNb5dYMVDtW!I%uG8p)Q7Xo~BsD@HOGWq)brBcTUnBQRuoorg(L zpu<|16px9_ReHDv=yop3Y7Suv`M!!kd+Ep(gSIXmh{uHgB+C*mn%Gi(qX>VNv4djh zGF+NUCkn$ToL$Xm96_bnAZG#lnI@qljg= zVPy#s9oAwB4Hm~bQjHpf08L1rLRkVU;`?Il(zR3R5S6+CT%_pAy9*33t=c8C=emw4 qr3xg=sA}6X9QmDEZq)uezW_W>ZSR*i?|A?K002ovP6b4+LSTZ;sXf{N delta 3553 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 b2I>O<@XtGE(38I400000NkvXXu0mjfIZc`y diff --git a/public/images/emoji/apple/cloud_with_rain.png b/public/images/emoji/apple/cloud_with_rain.png index b9962109c14b9b52d6b2cc88e97ff6e6aaa546e9..9264ab0addaaed3897b4296131c4b8639ba8a7b8 100644 GIT binary patch delta 1554 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 diff --git a/public/images/emoji/apple/cloud_with_snow.png b/public/images/emoji/apple/cloud_with_snow.png index 84e5e5a4ae9d62ff19c3c9b2e163d5f4b1292018..1c998a816bc6906cb8ddc701957d281f3aa68454 100644 GIT binary patch delta 1495 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 Nrbd>)Y6JK8{|DwLOeX*U diff --git a/public/images/emoji/apple/cloud_with_tornado.png b/public/images/emoji/apple/cloud_with_tornado.png index 7e058f2cb784b73d927206c38f3dcecaa1cf510b..1277f97570e890ceb26f640c0a739b326b1ba9b4 100644 GIT binary patch delta 2229 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 D@X}}) literal 4203 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 literal 2640 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 delta 2409 zcmV-v36}QK2lEn;BYy(`P)t-sM{rDYCnsGR9cL97ekm@1DKDjPb!{;*Zx$A678zO@ z9DpD@S{WU$dVOgjC7V1vs&#v?ZgjACe^?kCxqFSKWoup;9IA13p=4=U7#m|9AzK_E zXCWq46c=M3BV8CAq-=4ZVP~#$d9QVQscdnretxcTcVQnRuYYlOVICr09Ufa48>MS- zRumRi6BS__9-m}suyuW=YH+A(Ze=4Qv3PxYE-qagA5sz(R~8(oY;uu9NOdGBb|x!f z9U@W@6kQx1uXB1`6Bd_FQ=wX7f;c@`7#oyPRjPDn8LLQ29xNuDGoz(GjDLP@qZ zJfbHlv^6`RC4VTwK}f$nM4u%mq$w?@D=(=lFu*@Xtu8XADlU#JGP5%|nrLA*Odvo}7vJw&c9GN?8^o*paO%}KRuahW3~pf5FV zA}6?AWU@U(zBWd!D>t_>KEOv$zf4qlCM&vDUZE{9eDHa((7O};}*wq$FeR$QDUD5z9gkRc;?8XUhlN3}sZ*q2PHA~aZ_3Y24FGg(D`0EHR28BcxAOqCG^&UVli*XGW|;FzNGDyIwo+>R8XRL*l(s z;O9=@)=kl$Mzt$Ju~k~LLrZxcA)#Pqn=UhrCoGXWLF~^~qAx7ccuc=RLjV6?=*Uyi zflJiHMzdiv#FIR_Z8+iGPTtr|!)`$D`B<)5UZ!7V(YZv|iB9tIS+Qp{&5=d2IyJt4 zIDf7@G_XKdzi(FI#!=ap^OPUNRKi7`hTrk zx4Y%Xf+Llcxw*MjRY&rFx;kjmXP;6`-!=WsmlFNSj>AWd{CEr^Hf-3kWqb4G%c=26 zN#WtEQ?j#n9jz?LubSN*fAjRuXLnSgJFI2kcn_1Yefy?O8}kx(B#3x2CVK@}t}+-D z=}GZN_x9|Af8wn*zpscYk*$lY4!IHp9ci&14`VFOMn^Cq_uUqIohFJ2F_s z;b=JuhH~|qH`<`yTW?h5=jX%r4Vp4*$`m)ZsZ$5EwCrv{O95kJ9+gTJ2n6sVmPk=W zEGC1iGH^HsfKmuhk3F?1yN>4ORvsxRDEJ<7>C&aY|7mV+&O>z|glY_w1b+}e1VIbt zaX7JD%ZhsJ*~U>sriX_oCB;KhQ&STToc%XTl9(tKV}>Uls#qOC7xC8yumJLn1&A%P zgbF#aDg~Fps8`CC^LQc=zxes-MybT;c(x@5pru|WXdVWI6QPxb9FF@g#g8>5VWWrBnP-%;kPu$9$cuh4OQPPd zK1Ped4H}AflsFKMZL#07Z&q-9edqadnHEs*m4ya_oExcm-1HYK1PT&)Ee%Qwymgrw2sm^NIRW)`bQ=4uxfu+`O&p zJS0ECtY`VLWR1nE5ELj;Q;+NFyt}YR+goYk*+0Lw#NX5wDT<|21m} zjz7!_`tSP)hu8!NevoE}a35LTkV3ZgzaNLzF6R3aAsX>sGvC?l6~Vr~vDQ~D5yC49 zREr4^&GPccx_^kTRTpUw;rEdVqM0v$V>?29ZGK1X2tjfLF#+P?P=s2H)&?K9Y>-%| zMJ-!p-Dv?b$b*HE4Cbm zh#QGENwyYmkZ8BX0s*!nYTGmddoALHuwc+aQ2Vi__kW&3gUSf8WO%2QN{tZJlWL9t z4Q$Jm=?sO!z|m@9&|+K8M|kf?6$RkEAE36W1|N-f!0;HJT~TrU(4j*)IXUI!<=bi% ztF0gvR0NwOgSiGuN{~X&1__O60*u&|y?4Krzt0Q}E?aqciPoS% zo1}#K2qrC2LPA2kxeO2nJCnvv8`pS$(DaaBZztp-4|p zPf59Ut)gPl8f+!@LkEwx8#~RV8-+sYXcBiKkz!0^I%OQmb;88BxSHzfD>++HHUqHU z-hK!&`Z`UgbmAewh2-oyW5R@CZ=(!@t#BRv0jaM`*PeX(jB}dV7iFfC3&r*zXp1ej byjorW)OSScAijS^00000NkvXXu0mjfD!4!^ diff --git a/public/images/emoji/apple/coat.png b/public/images/emoji/apple/coat.png index d6bf9b207ed859992f8c5aa137724d2fc9813d9b..676a2e61b699faace30997644d3218bf94bdef45 100644 GIT binary patch delta 1685 zcmV;G25R}$9i$DABYyyCP)t-sM{rEJib1Y_IkSX3rgk#BjY8C^RlANuwue8xkVU+X zL(88}-?d`QpHHB0F1?UNmt-d8ylB6YN3nuB(4|$>s#)E&Va1tDsCYBDib2@0UCW|3m(*8I#>CWMlp`R0bF0&#jhh zDw}WB7j1s3u{|*J;n@8Q)wf%hMTw8&PdF!^uZz<52c%<2?;r9n!~gZusRDu>0XcJg zI;Wu%9b+)=J%1-rzP@{-Pi+T{>v`?5J)O2z2SYhI_MQ=WG$Ec3r(=8URvU^@n|W3t z1f3FlBG1X;NGUU$pkLNnYSaZ1kTJA?oHf7(d@)_-mHq3qny}sI*%+go^C*p-G6pDo zF-@0Wt1OM-GS32HM0_Rd7;-*cv!eh*LRvEk{mWD@JAe6^3oDhn$b7afG&n+qfy0bROp140b4xo|F8qgMowGC>ImbTeZ?ao-g-i+N)TXa)!3 z45 zkrvWFi+}4+63%RtXGA564yG(96vNk+`lB&o2!EXP_C^3z50Prj3urfhbc?Bb+~49JAXrIn|iv`QZq_(2UMoaGFhH>(trzT!!3S(=43X>^GY? zi7D!U6CRAfD3=gJC=5pg>(FfDR20AyP5=nSIVJ_tY=#Fj6bz)idmR8eSCCOyW)P;b z7=NPy+BC_bbH!74Kh%oYTcyY~zz$no&PAp-8CgOUQ2&;4PHa`UPiZ(kwio3po9BCBF@7XE{gBh_z^z>6{(@TE`vax^;^_#bp%Fj?@vJfSQKi<3C zEZY}Hr@uk{0if^!>UXY+WdY3Fs62DNfzF5!AalGM$Q@ZFY5oD?MGo#f5getwlz%o_ zJ(pjJcJsIPo}z~0uz*tWb3@@{`I9QBvt`6W?CwAfgCwzzH6tfVMdHn6d|=|mQH!k+ z*`3FGklcq#E7ev8l3LEA6iyOgB;Js`&wxhuR0I%JVZG_ReFh{VpP26C{dQOnsw7TWEAmhAdXQsCK+Zo9kE_Fe z<*HnXx0kOg9Ie&3W4C}lsdAorM2=0n-@U%N&j{Xbcl!p0o>Sis?M}28wQbXk!*Fx+ fJgn;b^Zx_%%kNxOp$;7f00000NkvXXu0mjfd1o77 literal 3797 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 V>m6DAo9zGq002ovPDHLkV1hMzCj|fi delta 2627 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 delta 2613 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 Xq4!HR`Toiw00000NkvXXu0mjf{oj&O diff --git a/public/images/emoji/apple/coffee.png b/public/images/emoji/apple/coffee.png index 02b00be12b522ef9556245a4d0cf8a56998529c3..5f88c4d20cb1355cd99baac40ede50dcc7660b16 100644 GIT binary patch delta 1733 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 FV1i1bU;6+6 diff --git a/public/images/emoji/apple/coffin.png b/public/images/emoji/apple/coffin.png index 318e477e5d929af6c33a26cd1e297f94484702a4..f97c64a0599895dab27ef761a077ba7bd6033232 100644 GIT binary patch delta 1703 zcmV;Y23Yyh8nz9PBYyzKP)t-sM{rEKe^b|&XJt)Cgk@aMs+2t^Ag-Jv~RDXD0rPb+D6I&DoU^^0$5EKMaJg4V*o;%|JzW+ra^Q>AK6<>&NRYW&k1Gy`FHvYGipwXKo>b!;N9Sz<5z2uT5E zkt%7DAk`g5jjt7N*~nh9nRMWiB&l1)`8hfU>by!o)QqGQ4*+rNLGihu34Q;-4&C0n0E=iQbu2PM~aYWMo!;N$P2o424#7~5=~pRxij%LptSgsiT%?hg)rm1PBVs|1uT zn%%CpvHYqZx+3d2SwQXeZZy>fAKp^R5m){)G%}f#MnC>7# z2Y>U>K-dgUukCz#xLcN*-m*>clJxcE0RzrO$P$NxAMO^~I8%ZU-5$a?GLWUawLydT zck_KKT~yVcp+=O26oPciVC8|qN6;jLb+8N-}?r?07xY%avcRE$EI-*k;M=)@MCDK)cOXWTytPZ@(m|xYu7~xBmyJ@ z3SOQw#&7zb8$l!m+;!?&tV7!f0-4;9Qt9$(U$<~CMV8yOOc%w_Aqklr4k4q|^M7H_ zI|+s=B&e5LPF?EY(1{!*Nl4Snp20`=K(NC1Lm#Adz%8q;Ejf;4FiEcElnNw%KYF)Y zh!P6}A1_#kxz1`Phmi;*A&D{-j9-o3otvaG6Hu`BHNyo-Hj<}l_y zY4mju5#{q7>S;LvDyMGpFp|c!zVFK9`<}rIqTDE%#^IBrq~-W;E-cQop26Y9UumJe zf6!B~Fq!RV}gz9$jxJ%o6~E2lZ55l$nZ-Dydf}Dl+ltdR_!@AP-V;jP*b&grO3r zX@ZS-Swwx0j$QkoA~2Z%0y4W*G2y?{|xG8G*E z4kPt%{^Edyp&~UaGZ~4P2!G?CGZ#?*=6A7>=tMonBP7H+3@|ke=JQLeb}&>N%S7=i zo(EV@NT9vMfy}eR5N-ZrFRf_vj6t0@apD<5A4!wDm>iPgHHKn9U>tBT&T95CMAWw* z(m`n+;O6X2oTDJx{1-v<6&`LLY1mHn*BIwWh;DcZY2xB(CM6$RMSmjBDG+TAQr63C{pH?#wO2j!4q8neXRxD5Y>Y?;nRwa;_RKt@eaLG zkU}_b;{5n}LLT{z0pcI&?&35>*27v7B5Vb5&bi6m>`kCw`#9&-lhU{GxenEXP%;kI xI{zk@AoavKxn9phKOnu{FYyk3UYh(<>pxTxk=y#?iHHCI002ovPDHLkV1nRB9eV%( delta 3408 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 N002ovPDHLkV1ji4m^}ah diff --git a/public/images/emoji/apple/cold_sweat.png b/public/images/emoji/apple/cold_sweat.png index edd22c9beb3eb592ad8c17826a0ed58a1ba8f0bd..33a2001004ac2397ade1e1fbec71685fb57f7813 100644 GIT binary patch delta 2708 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 O0000;$)jN?$1+NgCp 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≫O@}S!v`XcJ)T=ScP=>U%7I<$K3pgN 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 Q+yDRo07*qoM6N<$g3=gIQ~&?~ delta 2534 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 vn_FIDtwvvBQg&oX5q-UtwXIrmUy4 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 diff --git a/public/images/emoji/apple/computer.png b/public/images/emoji/apple/computer.png index e02f0f0136e5a1d2b39eb42fe6004432431726ee..eff88bf0a55e434c4ee0527d513d6ea9c955c350 100644 GIT binary patch delta 1076 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 P{~M5yAVgqeKz!bROtG#b diff --git a/public/images/emoji/apple/confetti_ball.png b/public/images/emoji/apple/confetti_ball.png index febc11c6f78888cd9847a7398b767f6caf2f21a5..b4cae0b1058d4f08f569c3d05bec2ca3202206d9 100644 GIT binary patch delta 3566 zcmV-|L#I@WHP9HevG5 zo2$FzZ=?U4uj=TLqE?0T=v#T)CsOv$hnckUZ<6nDi{1BPhWXcsIeGhPnD^~|nE(Aj z>T-;ewDtCesNryk=QLaP!FK<c`%HlOaiaQhpZoNnxZ*rs+C*abKxamN_x-KSgQN1- zoJm!Y{q&Bh{G`eGmbU-o4hDqI`Q2JDY#dd|_I9l$%WAx#8ta&>9hq5ng^RsOp@Iq+!fSkN_F5cDe z{f)F-df``e(fqT}vv@M{Ms4f5Y5b42(N=KpQgX{7Nq?DRD)!}K|E}4`nne4*b@}mo zZ=(M5#BlnX!~D9|{jXfnJ7C(PRGVWWnpQ!tEJnJFMg6Z_`<}#LeAj=E!uX?0;;mNT zjymUEQ~RLD{ju8ppu{$9>JmVy9&-OBc>n)BYX4P!{z!8%egFQ#@BeC){k7r$e5e0i zi2rk*FMnbGO#s#f%_ROPK) z+?F@JaT>aPBKWgX^uA=^ekQYO5$dW`+<`Udl7BJdqCfAbKI^Vp{k~Ptgh8@z8u7D7 z=ZZqpkuvzTMAmy2+Mhu0)@;jm!l!B^a&T=0-W%!E!rj{nrARQvpd|E@~#dRhFfO7yEv^cYa^k7)HQ zTz{>JaTFf|?EnA(o^(=9QvezV69xhl3Ih%-BK<5C{VE=mg8oT0V?Cug%x*;dGeeMC z^pE`@&P=bbYJHU>WvD;?U3uN}pMjk=*T4R;eo?@=W4?6P(*^4Qprt@1|bx`e>(>VNXgP2C>CR&Qd=z00O-mi)()+4{SfztP%8 z)AxwtsMpo&@4NoC z1){KpfF>QCu{3fO6d@s`6s90VNK}XhX(G`KqmeSflh5(?-TS`p`@Zk&vnILs;eQNa z#+=55&-SLDU_0@OR12}eAn~r5hI;j`2BQyd+qeauXEBTn3D+r93XJl&B7hNlAmt2huP7g% zd<#16Ps5L}faCzuhI4K4ftgy_7+sDX*ff?p3#$J)vwL5i_wV1|OA*&-!+AdU6^EEz?ZW+YGzh){!IaDx)0_A?v`AzP~3MG2ZA zNfKdMkpknx8YSG(Q6_Wm&^0!lix$c2v=B=K%%0JRvikk|D#=fWet*VF0VvoFP(_+1 z^64}gLP!!yy+sQUmEKm{Mm3K$lP zQ$#u)3WcIkG83*ZNq@iIeyQPrXAv+gcZJ0oOYw{8di>zB(HX!))T&Q`JVC(CDi#Tv^dP)oc76mzGO@cy&& zr$#E7k~~qe#edy%SGV8)^5H|SeAh4eS!>09vV2gfSgC9lwV(~)me4#!GeEt76B?0b`OS2iJsFWApx{aFI*LgIxRuyaCM(H?$q1;l^xp5$G`k?x zh;$@-_`sE>Ad{HG5Y73|Z?6zCiRD0IVx9e6rLL)F66}Kxp-!F0G&_JO-hTc1 zcYj3*NIwh`8}o?%`=ilVc7e>-9Y;_{f{hR4TUz+NmmJ>wKy*mfe5 zFlA_Xr#7*U$!W0)R9e#Fd^#F^ov(*(B$8_{ac&CIH%S=~(H8<0(ut#)jind!QnU|` zmb;2MK$JASCIhmzhC-<(F@ERGy*NEl)|*V zzi$rkiEiBT9US<4KHv(!et3BJ5`P8brcHh-1#u->0or|>&`Qhi-ur#?fN-A^_D7e8 z{u&3H0lg1EASC=GsNxFTy+)AP7=}#DF;thd$;y6t7l2eys&Si|`*Z4W>b?p=J1GcK zod58}BGr1gTaBzOQIwaET5#{38*)5<4gwBmEibvvfr=5K=fBj~zfcL?9)IC#4P>^q zAg)%8%4vH4j?9O%F?Lxm@;RVXBTWkc)eCD$R|!B({4iFdJeh2Kx>~orZPLKBnu_jc ztdol8QzL$=e_=r-kWG}op>cEeIFmUxd-KY&k3-QzL_}#>~xM|YzTv(j}tP}Z}ba}h*c^P-$GCS%Pcg@NW20?5;hMZxBRfgT0?tvOZs~YqY2OAl;BNB+l; z|3lYaUj9mSjQf2X(0{}2V3IpiHt_s;VM!~VsifqRd$DGmuU$E?HgWxpg93>lPS{v~ zEE?@8;Cxqe9TQ0mn@w{hH31^JVS~Zi?R-2MJqkcwaUdh~69DlcNt~LR>u_DWXDOP^ zej@m&;i6WJZtn7Ii(NUaL;j$f>$=>J8PDa_Ab7saNBg!~iHgWdd zameQT`TY;S=ka> z)6($(jbOK1NA{KrDw8MiJ5^Tu(|yZ}v+r{|wufsMTI(SZ#KI=xW?Soe6Y4h-v5xWb zOI}#gu_N^5?2H#JMt#X{+?R*$>H3lSa-cm=O^GExVPA;zo%z0LTeAtN8D;C%@rOr? zIVzqcV)ej=J~T9QbJQmWYvTB)&IA853f~`A6RJ7W5We8>5ohUxbB-KEyEMd^8V2Au zKUZ&nz43W1xbVzBhVM4bJ#73&Dni`{%N=%l0ttiB&?JI?4hfwE-}cMi=^WRE;wJK} zCbX?PbY2hZ**t*!{ge27%^SYsld)IYKbvKmAE3P!iY)VZG_7s5o8B;N?WyH5f3%;x z+vT&?;X~*T-e`bs`lfqlA1wsIqe_l8tUoEeoqZnuPtM}!sJV0hS7)TF!oj*PX*1*( z@};)VKCT5us{6Cm=H{DwOsbx4h&7!1`qCoq*a>+oZaTTwG6C@!DD_cReBJMtwbkV0 zst+9{^adXM2t95KIIj0RJ&f5)sz1c1;2YgG9Ha0lXnbxLF~1WZSu|E)mj*LPgh*VS zLJ76OPN~O-mDxlz%rJ0|SkN7o*xqcdzY*g7Pz>arOwi{?i8Mm_?!}kTw_hxcUma830JtSu; z9nqeWD`+cl;w3gteznr>ZvS#F$KFfQUAM6;RRf67xfN z<6yegX`?ODUg-MLvCBj3>N>4GR<$ZvX3s8qe>HM=|2hUfCoJ=>%7Qy-I0tnDdFo zUis@>jQfYAO3Xa!LJ|F!FE3pPZSz&O`zLvcbEj*+Yv!ASOU(H(^JH8$P4-Kjy>thf2nf|;4Jh$hTi3%DZwhb^%CafQlU zwKK%mb*EaPweI}GKX~1FU*HW&bsAVC|p)*l$gNmx#P;u<2e z_q?e9tWq|N3@a}Jo27kz{i-3yv-e`3n{(xU5l9av!VJ=(-qsn9kY}t`SM#=IDh=t# zo0uR$9T4^9<#C+u&gH~T>kqA654+0s$7 zvtRVd5cD>og=c3a8=*4x%8a>v@88>;;Te7`+6ohn0k-ktD^paB zp#v4Nu_#%Qm>hg{g>rEbyZIp51dq8Y3j2;sqP5iE;}8uutPdwYLkI zyfihHmKRG0i=UF?S~*z|Lk^73I=^vLzo9H~gq#R*+%ckqdxZpSTcMta{x~@~sq8N;tzV|u1teuk1}SHpSo@6q z@(>jGtcEZnmb|BWdTaF-cb*QlEXE~h&O3nsn}S|tV~w1 znTtDLKD%fY8;<>F2qjd>5dxLmCk<%OTZAF&GYkP@RpiyvB$)uEIt z)e=|@u4_b6Q;}GA+BkAYyx+)aD*NA6qT=bTk(hb*!b$;dSd53WZ7%eg{38d)gZQw? z;x3NV70;OB@jX8dIvM^>ZYI8+NY(;Q!P!391xWnzAk$jBGN#5QdGHNqs-ojv@|k-` zt@#E0A44`$=c;l^-|9}`U!J7MEU+(SRfP?jGw!k?(tjtmOqVL4@Pbzhw~ z6)HE9d-dtPgZ|>mk}jM0;U5g(?&b`t~=-x-o8FclQ~E5bDYo_ z)8+P?KTCxgr}pRv<1xL(wJA~6s;-kD;=RTBI1RpJWcx0juJ_fh!JXfGa)2)%DdkJ% z8*npbVDMuPWbUvcr4Fr`w@jqH>$?u+{2l7rg`7NrA<-$A7!~j{A>XqfuhR+r^POz~ z#SULj6yhPwqSkLBez864WpTwSJ$3b1=6TVx^@aWk%Pm5Bnkv(F2(2Whf1Dv&I1;KK z>F17|jQZ=r`YC*lBUbcwiQ;>Gqf0WJaNfFDy|-r^J$X|Ec)?3~b%?3pj_p57lK_XB z_0g#fk#`&R3lDG6_rk?zlVmUf33(@@Jr+_eAwcMzu1J}*^aWF2W*$y+#sp%$iHk4? zw-9e<9_8y>dK4mzXlk@><)?w`?jOsPL_CHrP>A0ddw4h~Gt28WcXCmJPQsb(np{0w zV8r^V16|xGJjr;BoO8lMArK5hR?%mVC=tiv9{J_ix;jk@zC0S~6hQ_f_(BMDDu^hzpI^GfJhf5{;~ha09Z9aA^?5)fttJjt*MB zx0{T4*KMhdHZz)Qxb(7XM1b0;(n0h*RV=f&e*UzZ+VKfvn!%1Np!vH16^JPHO*!yG zR#>-`3{}?)V1O@E_R zuiC$3SP<5bxW-l9XAmLLC=iF-Ra$9-EseeTNhtZ9y^i*l6-4?RFsz;$ z{`L!NO^^12Z{8}!i)_|9Q%UQKvRyL#Ks0=cl_rcwraQAmN%H{`eus&65A4e({&;4P z)kri|T=??oSRqtbQ`&}^W{ihf{kv7L-*sa8zxB)%LE)VO9aJU7O_1egb=hXXt5iG3 zZl1D|hMgD9N+UxN`O*}Ng4&|p>xR^jRzr-+>eK+0I%6~qK(g~qmct8Pr?+)k@_>Dk z*S<%a;m?4FYX2^{DP-bwOjsB{F4$wT(UT`!qRF=Lfjp4-V7UIK3{b$1GXZZhrEY&AN;T&~DK6FgP@)Jscw8a3n1xggl0O^@_Zes&BmJ`j6A zJ$U$@JxEhJ@!H|Q;nw@^v7q*>xs=7(sFdDqZnr_cYvl?VP%)%U^Xz(=DhEkbY++ru z>tdFgHugRD7lgQXdB7(iijFx7KL01lI72v8T)SDo`j31w13F5~) z|LJ%C_lf`esQ=<%|NOZBrv?A@YyaX#`;!Cz^j!Y48~?cp|9}0;|He4~%sBt}dH?WD z|M{5z*G&J$EC16s|GFpos}=w0J^#oE|Nh_q+cf{y4gcXX?VAtZi3IWY=5N6(x!hLYL%e#qE*H4*HLwG zHeyFZt?qY%%wn9rs!RoA48;pW2TG%qh4(rkb+j@U)f6%pVvEuyzCVvJMk!_HF>|57 z$RAX?*VziCdd19)LWT88HXq+^#q;#QDQ48Pfk;nyro}fNCDxX@msoGqR6mlk7h7wS zXx@oa41Y98DJ0z1u*NX}M@&eKkPiNbTPpt*Rn|tg^_Rqw9tjkzD@_qFc5RXv38Mb9nnsc+Gana*+7lH$lZ;0TqDk~ zVW5#_0}X%-?HnBT1b!o$7I%hUHhcG$!Ys4(K!3dUU6*(H$2#40+Iv5c`jBPe`){bI z8|n-mDcvEql*4a;XL`jlK4^iUVN)-dxE_5g0o*w@)i7q@XI?Bt&BP|9@-Wu?;k7S2;S`FK3#n z4u46Xyfa`$qQ2EPg3#Ok%Q^dKo5?_Z-{(V~cX@~Uq#t_F!d6a?9Pg^@x-72~LFc)* zzjp?zj8u~}bgu=-SwlYHExmE7sR6W`p_Bh{ZyQLu)PRP57`{_Z>F_dMhoiNws-`Kt z4}Tug)*tU}0jSb|;z;8|ZM`b)a394QP=AF$P3w*R_8Dp_lKL!Uv9^xWoH{EyN?Fvy zF@Xr0r@eO&Bv3=I1dFTTKT5}`VA%l2LHE%=IOqV#E9OX5-z7qXKT|qVLa1(a40QYo zt&w!!WuXu(slKPdahY}0mv)f%6GTjhuHk{V12 z2D`&T=q%Ve=(MqriG=r*sJc=T|9_~kso+4$6NW@#gDnQ=dNqz6QE*x|t^XK3>di@r zq>+HJ1dgk|i$aEk6(pAjfy{`oXmF;*=#lpp|Z!XMYJKn`a4h z!HAY2xkyfmIRisOH`My~3Q7qzImbd6(Nc#1krpWmliLjqLV7M7!k1ReVnD?lC^!OG zdkbc$0F>R#$YFiO%n`hB%Od2N0|gs&w$>4mRtaUL2^n5$qFNn4I2&M%1nE9YL=h9G zs&POWDHS<~(V@cw@Udn9xfdE_O^_JElCn7oHM4r2Wrg%ElSioL`FKA^F9doy+lAao3U^ zcq)XDig6hd#Du&k;}|JT(Xa5$paHpU_Psfhs0~gLn2KUZcp@3Cv48n#Ex9szTw~vB zd$CdxG5h&RRh6{msVg;U9Vv5MD*Ea$jbWGlR0k)u$dQs$v_%CeP2n^x&HyB=ZC~qv zzK_XCV-bfkjGLCKiBc&O+Ua1Mgh@D~b1o261+$cMi3OP>zDN z)<}$vbFgi_4RzeuRKUQw!rG?UoKL@gf8`7c7O=H^D8y_L=hy3W*pUUz77S8$htu!e z_BjKa3&{C5Zu>ZkZbTi9r~}=Ig7Qbz|CRS&?!o*o?2$Bud0x4EIE;BtyK^qTcrwa|Jko$JwrVHIg*(4* zDZ_&`xOg_wgg5P%IMy>TtKY$&>IDaw8|>YF>y zeK56ZC$?%R=IvO@ES5rVIpm@|+?hE3_?7j%P5=DF{`su;$5#92UiQUL z_ry~F`nKVpI_#=H_{>xM$YU;g)z{`si9Z7AuUIf_>v`PyZT zS|9%Pcl_&Z`{ru>?{V0aHu0A?_|8&#N*LaeG>={(-k3M^s66<`M*Z_}z;Gz})nWSI zdz)`6{qbu4_lf=QZ2j(c_M$rb=ZN&JKJ~dke@z+IfG+#wbNb(I(v36v-(~vQU-_>; z=#Mn`yhTzb3eI{g{O5W6>Vp0Al=;(W{Opha{^F^1EtOs&`Py;)@}Kv%K={o?`PNnW z+fBTWH@bo|m0~0K&tB`kOxmPF%%VT@&{3jjC-miEmu4mLp*sBQnBKET|Nrs%)k(&c zI;Vm&)Sf@os6e@#LHN;0>a$4Iu1ECRQpc@I?b=>`Q5}b0CDp!A@5oO6^r+64J(+ni ze_SWs#98L7My!rK$%!+qhc)HVUFXzU_0v`9$6VXYRpZoIHBoFm0000zbW%=J0Glz2 z7YjlG0tYz_l4m>q^H}#DOq2SAqkngT@3833neXv(q{!f_?(?np=fmEP)7R3V=H1cF z_|V7G%b^(81^@sG@<~KNR9M5**LhS^R~`p&MJl2q2dko0TetSKJymtO; zI0AD=V8u8ENpJ3x)vA)7(uyZfLXRImzSE#Z7=t4)ar}5_=*1`F?4FWU7H_=n+s=|Q zv==X4JaFJZ=xYr3ju;H2zyerS;YB+8*&FTx)2(MKtJ=rMFI>3rX9%Vt4tYib8E6(3 zjgMhXIJdWV z*Wwc7FIaZZ2sVVxo`GexwcYLQsU@mU7EXiKHjP!Lwzucy)z%gk78IOB*?VH|2?#Ep zz_S;dDJUo?EUc}~%WH4vk;a-atHub)wt7hj>k9scr)*lVfjvkO3iXaHk2Yg(7EP)WdMXd3hK7cE zAxcot9xQ(~20IN33PQ6va#)C*WLkD^(^|vc%)e;L&89OMwn>g$Zi8H&lOyzWaS6h* z#~AF?#RZg{9J#!K%XLh$l`;`zyp>EpK#&tt%1(0h=gN_k zq881K$2JDZ!NAzq3{C0;EjLF}z=`qla-tJRJ^;3Dq zMRw%iuOnLx&9(r@&4);UCNU8Ndjsi_Orzlo)I)*XK<+;RQ*;7#zJ@;t4nSKFUU3EXzLo|AMM5K!sFcC?1?0TGd&?SRlxw~*$W|;LP?qy3dK?Q!z+oPpNSwk zD#*vpJu-Z`@tbYYk`G(`PT?gXNpVB;{84=a&z3S>f)iV*WBm)Apff@5kb_yL{8~Ss z_9C$$F}%(lx`av0YY$)DZ{RU_Jlk2}@f3{mynD}Y;0+?%qkz9Yt(l*A5c=(gORyGdO6Zrgv<%$gB|{k3#4RndYnVf$8JrNm zgVgo2UTsa@ryi_3#lj??5VA9kX4ff_sKuhLm*6Bk6^qnrk+`2uqdB{|6ETMsQWs8L zH~THpY{56wqtGUh+`B|wEIa#Qkyxq8uNEn9rPBMwB3XVuUn1!z+I^=Mb=s5dgIOVw zN2%Y;pY!jV>4&hn0C!e!_Hc_pP(3UYsg=rnrLtP2?jIIOWawBXmUInE1OmZ#*}*LL z0KbEYzj=4=YwhBXkQCzTbL)Y)S}YMiQ1UzPPHFh?X^C3K*WDW&2TrJVPw8tFk z`wQop&3UbzXR(}$Np{y{{Cp^Y|NUb&lK*7QFWJD-X2*P*J80YA z5mq#{!qSX}+=Cq=vh6@%-TPiAaA0KHQRFyo915ob4&Lg>?r;g#E`v~!N-N%%MErDdj}3H(TZ? zFSB)VuERbr6m;y_k!(=Gnq`#hYOzo#sP(dLY2w)tP5n&uEC2f0pPWrD`6+4@X8-)a{M0&F`H1WegFUf z4s=pZQvgO~^`w9O6OcC4&!Okbq>t4A00p*5L_t(|UewdslA1sOh2fD(0}}3fUD(~% zS+l?Yd*yTk>VGI2GnJeCP}bByeRV{A_(w$#|5?#^6p%PgV-k$U(T5R|CJWUxTZyA- z7D-AzfQ?DAXyo!;5*Qi(6*EfTlvkc#Y*C}azWnf(dP_(5uj!bIiE_5?nw6ra^Om}A zRYVdcqGt=_@bGyUZ6S-P*Hf zxe&SNtpNj9afjJmmx9na;!u7WkUqC546c0cN-~jUnaB>77&34}W`xNT4=P)9KF%L{zk|)z|5C`n0jswoV0SwdJSZrSb1-?6RTRtR*V(+M=gR^}q;&q#H?11Su^s!jw_Xm| zE#6XX+4pHr%qv5fZEK+bD_ROIQU?jpm}R3amYDwW~Aw&~NE`@qo*1v|SUK-Wd< z3dtd@Q05?{RHK2qw99iqS}#{XM+5C+hJR|U2S9n(b?aFw>-(7xWFEPZD*H~DLF*dO z`%|=Ep-uGkez`)bhhZQopHn((R1GN-v;;n?F`Ws@@ljpZSB5;ZYl6<#Yt2%QbaROX zkwbA3)>O_=*r~}m6J)l%wGbqPrL<|ve(q*GC>=><)1)&BgMlN^1yHy`VRQpzD}PBR z+DrEkeruLGrjS6vuh5G?G9Aa9z8;dC1BM%6vdjDJBgBmDWF(i|FmAF(D85ba1TE6Y zc6y{B8%GK)yz9w9TMI$b>{uy(K!lM(+Cs5ewiibe%?3z|#Mq}9R!XDLLVpkvv|XW1 zye?^hr1d}-_(Lf?8KxTO(8xm23xA*}_Euvq{+s%y;Is&joFm2qm6TcgI$~K{a7H91k!+X;;TFE(|<51cY3Y- z#5!C^R%DlCDxIZLL6xSg#m#=qni5G7b z8ISTo5k?%@&|UzS@MI;Xti>9B2_tp54-Xbvz+Fo+93+%-lndEssbl)MYv^$}(}_zl z=HeK3CU%b4^v8IoRT9cs5P*mR#yA+v6X3HoSqT&@7g3~+aRLIqmVdA)OG!W&o?2$BocwD)IL+qtRyLK_UaxKP$I=Or}!hAHtf;`iO zIMRPD!-F-vZYj8LEVgPV(1kg{aVorZGTWL)--R>mpgg;8E5ULry=^GmnL_QVLED){ z;F&?XZ7Q~FD9?a3*pM~lj5XhmIP8}=$agH!e=^E`HQ9wUx_B<+kT~g?I_9K8=bt~e zYADcsFZtM5_QO{B+E?|yQ1rA#;GR15x=QxMQ|zig^07koy-x3~LGZ6Z^tVU!vP1aL zR`t6~`O;VU*j4$}R`#J}{`Zmn@MY(vJ@d9k_Qg>5%2V{XNYRNh`rcUg$5j9R-T2T`{`i{u z;aLCt!}rZn_|sJFtw8_!xc~jo{p(@)%2xjPmG{d~@v}qMk~YS5D%_bk|NYFIXe5G9 z8vXEo|NiOrz)jwpIsW;m&4Vxg`n1)NHTTF-{`#@@!%qJDy#M>a`{iZ#$XL#ZGWy$F z{`Y|U<5~ax)&BBn)r~W|Z7BTZTm0x<|NY1Bm^c6SeO4$6%YrZc?}qx?V*mcy^rAY_ zjWfV+DE-=7{ON7`=Y;YX|H*lPUfjrPMr;LKY1 z%|-gwTJ^t5{qK+Tv_Aanm)F8m%(71Sy+rxiOZvb@^_)5S&{_WOZMBv^mt!J~WF@48 zHu<+h(u6POo;m5DI{osN?UFV9@|}KFAMLwL;jl;l|MIVTF8%SM_2*)fYbnF2N0)Lg z&z?Tlq(SA?V9A&|>DXG-xJ`^&ANku)@WxT=)n0&KDdW9V8wrM10000tbW%=J0H87t z{)|Kc0tXife3m>pUr~|%9_p_1gY<5Q@$b^$`I+%@q{!8+_vgd*^UR>o_}t~v$<6Mx z9lIs~01A;wL_t(o!_?PzR8v_V2XKUg6cq(VkAOPXGiUV7>=|dy0)Z4rNFX3YBvL~t zB7%S*Jt~L@7@CfVw4gAAVnI4mRH`&V5UC?lowcsr-LcH<{_afzVL->(|Mu%KgjYW2 zd+)n>yvWG>Uqwk-R&|4x*1C0CS{qblm6iTCMNVbI#_!itriSl8hNmd&zu&k)MeeUE zin3Zite?75ajUiUXPnm7TNQVv*8iZTqWD*aq_S=`Wf+wA9==5f(k@-PbfD;%$9rT^ zR&QMR*+Z0Fx4I0NpN}2b5tDfE;6G6gW}LD}D|~;eVz_MeM%m9|lvi#o8}4r1l@1AYy8n0~8!O0aq9pG~sr zcV)%ht=D`K6Zh>)Ow7P1<78wcqHX&!Jo}j4#bsNUeR8IhR&D_&Jv=1j)Txk=5M*Hu zA)thy?WaO~sw;}iwx}t6%1JIOu4wQ%6%!rf>50w(YoDmeK8$#J#zaSZ#@zHTE=yLE z`-Ib6T#@Y)9pU2>9UUEmu@G@E0!p-xPeerYfPZmw^2a(UtV|Yy6JcR-^ytxu2&}~* z4J8I4$cTWQ78Vf$^p8ubTZH`;*%r@sgolS)APrf#8}8vFHY{NGj%VQm?0(^cW%FM5 z?*#qbrOzHdw6xr@V;V!%A|j-WaM)>S`S9Vhn^FCOujg3>a+^n*i@OE}?%%(^XU`r> ztRW70GXxlxup15<7%08nEcl!9+zEOh?9ab>^JZV4gTwy)`}c@6%!y(tGWNhu2Zz2s zIJB`?n5_24&#>&*g67+$+1Y96Bf8VU0c)6>2__&r;gGbn?Cet0<~f5?QX3KWH=WEv=>rN4}bU<(94zG#{!iEp51V?EqwZ{C1q3vm)BI9UXAs z+O>v;(o%l2;OfFzAF*#A2q;z6)zu9RV(N4}Sn*;{lz8|xKK`_XX@J8Uxq{?bm1I{X z3mJ`FUDefvg$+eTIXO9}x50muc%0Mm=>4{$oYSx`r>Ll*u&}VYtEE*(#rag zW}QZm>goy$vx3#N9Ch%Kwchp^7#Z|veei#>tTv?_*GQ^rRM>~dD+gZ z9Di3c@%*?XKb1dfs~oT7wZG*|J5_vBg0QoGv1DvY-_~~u4M=W&ca3{{jUSm4jjYKf)eDIaz#-#jBeWxL#iR8?t zizVN&wsANMAdas%0KJ1vm2CjU#l>kO$C=b*K<%vm@(anu|NGTWLt>LtB$BkX3I?krv>nF-iz`CU0rP(FE97Kkxo$tE&yGY+?F%}B6Ep{q9P;x z-Mze+Cc3&wgA+U+Z;X?4Qj&xu&LnJl(Q{H)*M!ORa`*R-j5@^N8UnOf3@t`b01;L4 z--{&^6W?E7whVGkdO#8qJQCp5BguELWvDy}cAB6*{!r*PQO_G7c`+n^`368Pj6+dQ z{#ZiCp5$s0mznu#s-y;#6+DSR=Z|J z*9vd75jl|}$W|IsztLe!oq<5Iu`z*}($$rstgPU7V2~q*nuy$4kbLcl4o522#h?k# z5}qa-ptLb%WrYx=psOWz@C-E>5V=(IjvML{XmRbi4o7d8B!JLj!V(kK0hT1u*42j9 zgRYl58E*dGl|` z>o-pxe*m1$_VWYA`U)yUwY4`pr@lgR8&T9`9Xz9|FULOYwHp54=}9ePfeZs&W2YusuvSmxwy)xbcx>?EK^@uK@1T zVAQm=)wHAcB~PD_z_BJ65NQE0)xjsuYs}ngP2f zaI>G7Y#AEt`4^;TaHwVS_nMN|e2D{v%v@{NNIgi%2c>30C2xwJNYXL&d;GLLrTx{* zo^pJLKHJ;dd-iNzUS4_6(0@$9!2`2}La9MZ6r}!QFK0m|J2Dlf2}`DLcqxy@dg}5n z-p$YVL*euJrYQMUeALHm1kp2UyxBx1d**hYM2J=LSt@(YZJiQ7|s{9 zK6=;*gFn2P`Dh#8n3B2CYT>TPQWGkt-z;tvnW zvddX8IDIS`!75-Fz*LDXNvu&D2AUp<$jMA)EuZrgDSw7_SR@%zjPzj6i9mscHS~jk z${Lli4eN8-T17Ro5hd90OLww8q@SOsL5DO3wAnhOoTaA|s| z3fi_Ub(H{D^9%h|cvS@B0L@&Zp zW?&eUvLz!6Vbh@^g=`CT!f>B63*_c01e<20;4phTXoW1mM1i+xQ08_}Copr`QJC-B zks?TIgU-jg!tnGFWe&Z(4RO3t7js8opbm1@E|HT_oY%plQ(Oku?yzfSpjoiKzCFf( zvjqbXP=E={bUl0_Xu0Mh1x1CAeDPC&T?#6j&alq^w-*yQw zEjqY&Lw#BR%fQBz1yF?Ma9T16Vniuf23Zs$M~7J}t}B2|5u(x^S75`^kQ&bF zcb!-%4?C;@Emd>g-L*-_d9C_E0_Fs_XI*D54>mn?FRYa^A9`ie54i+N7GQ(f@_9$0 z1NPI5HFH>&`WW7MLm@l6EMtL)dT|)}Zs0h9>qlYinYkTBeOi6_k8?k9o?dn-orhJ1 fx5awpKaITy73=_eoY3t26lt%Qg!DnWBdrb9uSHZyZc zCUzNDLBugE`+xCb+`>gFp{U?FIyLZCQRdB1FQsGROGfBWOX0{%9+pz;(No?;LDs!P+Ce?ZF)T=|aqL1)P@8ed zx?@|fbQ_RO(#&wdt3b&kEs%pSJCIuZ+ft{yQ1Z(}0fkE7*is~$Sjs{@)z3uk=vN@7 zYk|FJ(@RIyKz}45+M1FT6zK~#8N?bKCQV^;u%VQ3mi1AoZ`0)xy{j!M+sU2xaY_W%Ee zep`-YLeiXGb#>*v;^sVjdv6wN|IJpdTD9r5+w}b_!s`uv+~5EGw|7>*?(cu}`rOS3 z?Y$3dziYD^?FNr(UVE-@KEaHiQ1$*RE0xO`rIM<^|3o^naK!5y_&N^B*HVeJH+`ww(p`i$xaS(y% z+2A~OyV@)S2N0F=v(BX`%ChK$3^; z00dzYhbC}HbD=yU5aNSS8xD&@DLAp%oJG!)MIfb-dC{U3JzC-Xv6}#d{sAJ6xd;x2 z1b=~D5}a6KImmuAJQ#BXFceah^G}KEr66QM7fk@v5cncE<#KsR$ae5xqQy{1zblr@ zOD>Aoe@1Pr;0%NGLa|r`DnOCph-WY-rJ<@oDDI8u!(aVX#HkBs^H$5pn3jG~OGF#(iT{0_2nw zT(t94S68RszCApAx6-uJAE9y2Fn{0xqGw~$`CTnb2nbgY2(f|IH`YlT=sVbH=xJ0! zM6$12PGvI8U<5wi**V-_C|ojxH#B;7IVMpov4>-LL@**yFQH6IzPNw-xIQ#nsefA;7Lr0NUNt9cmLOfQbYDSM$OO{;9PDHgmGrmJPyFoWtr)}%iYwg!< zO`2d&oMB6tUfEq#x<56|P)N{IOGlGhQ=w+lR!->CYJcO-X1_)~LyS}S;&)J;W5-HC z-e6ZzpJeCJXywpn@Y`|U%3|EeVY^I2#YR8a!duY2SD->WLW@(?zggBdSL&~*N{pNLVse#J5TenL@!$?2c#a>{kcFws}!b?KdTTuV~gzP^6qn zwx>~!fjy_UUt*$mki2is*K@y9OQ1+U!nAGa$A4RxibL`0bH})Eg?2T&Nj}CqKFOC$ z(uYvxh+&&KG4jN4##T;Rk89}PbKc8qWvXrA(S6B*O1(8W@7#IO%2>^|Ww5$m;M-&9 z<7(5vV7tX;;m>s2npoi7b4!C;>&a{0(`qtqLZ~`2y<|w=pH2JW%>e2J?FHNvHwoYeUECxe+82}C`r*3GiSN*8p)$SnR&6q@fTV<@2}%UV-NVBN z8f~XRB?pRZgdB)ahz|)hYJa&73;}tnK;RG%v9zr;sAS+O;c)OuqJZeI*w~xb2RArs zf{2xc`j9KztQhslG(gx84hf~)yfEm;-C$?us0P9dMey)KKKQ7Wj(<}fQb@=(AUfvO zg+V93^>`(&lX}Q|EL7W6M<|gH4#tOR-@0%vlYksGKs*JcSXpgXU4JCSkWlZp=eE(H zFV#Uj_fP~;BeJiB4U1F;AW`pk=hkie;_pMSXI}QT1NYJ*RUk=k>$;791))u&{~W#i zVZ&6R-UpjDY7Ke8l`3S@A)!pPbJHfRA$e1pkVA*qGR&cEi`J05%SNCAaq478+jeRV z$-6iLj1IBE$q&&MT7N4)z!zZjM(m>Ei}?;(LvlExC3J`#2~L#OkbIz^-j%Nc6}RR` zX${HuJggT<=n%X3a#>WemQYae)|UDJS2{#EN(fzRcABn!5(*3szEd9{qC;$%O>!AH zE+G^Yjv&WBg?vKq)QeRheB;5PL(oXWQLBJFLT}WF0|*G0;D1yrl3mOPC)vdzBo8?x zvy zg-}Gskt3(~??2YiP+dKNN_F+#1ke3+=uzSEZn!TT1z``iY$1%(2|ySb&7S?jjCrQ! z=KA{j=BB2LUtPL%LUlvKdkW~|Uw%EF)0mp0fKtLB{SV_#Wn>UFj6g8epQ^{wWzz5A z^`@FHo_}xjwgUR#x3e7`hmW_nH#Wi@FG^!$dwcuoW3UpV`7`F>1bhxM=6OIz&%%O& zm@JD0D_5;Ld$yye=P;3;o{o-=k4R$@Q)jH8;W|MUhKjjz3S1XFUJ={1pKt(5JTUba=D?0000EZC0MJXOy01qPtA?o|$^izT>-pRW z1B|}26(SRz&(JMA5SGWvC^o|)FbR^x7ogG#j=>3($0DlS1dqYb96%BJ8;tPmWx1S$UL3;>GLyBsMDnbhuTECL3e->l001R)QchCFv4~UH000GxNkl6b9hPlC9Ko zoH|LSAoNf7+`WR8Er&jJI(}u(cnr^+^R5-OU4LyAD=>EWfR2m93a?hT6iTpbaBz!t&d!kabAM|n`HL4r{qo+%17QwEZuf*QW|A>gv^O*tSWlybaCSqxD8d*50uHjmT&)4;u0f?~026S=*K23t=UKoT5b9t_#xwHkI*{H~pYhz>zX z42_R(?`6(^7eUKoG)*Ut*&IM0>cq*nd(X zOD84+i(QbH&Q>WwIwAAoiqJTyo@tvW=s^%jvF%Ker3%oi(x6?x0=W})206J@O5Am) zo?r`#M5Za8%4HL@+uaMIa|~?9Hu7pQ1Z&m&u1`T*umwd9=6Uuwl%SpNo{%zKVwft! zo}@$&ynDh>&neUcL69vn?dPkFa(}|AbUJ%Nbe)}VBnoUXlv3kkhM-P87_w=$eEdF{ zH(PIl-1KoSoiLXhXg6bPqGmln;1ApMoA^vEpVAskH$r1jp4DJ3OLN8+gzNFN9W+k- zWH+y#oHXAIIccTUU@&XTB#BoeIIa@M?;cQ)bGYO4S2)i27078aSpm|f)PES_7T{bz z#P#5{e6E=V$HvsRLHLw48ab|pPYMqp5RGli=c^oXmT!QRB8b~XmoN=-@LItgm;cfc zUd0eD+x^vvQrrjO5~e|pu-4%lw3gj&`L2obsS5AzuJ z@}Uznjt)5>1vQ>eK7Y*-wtqvux*CSy@SDrV0=iK|;4H@zp?YR6VH_08MhjAY39=f> zWoec7Z|U0(uIDv47-~&qHNj?Z!!T$A*CA^nAw6Mv7)OsB9a;_QiC4m5`&9^6Ix@u-q0f)ml~xX`<2RUD{@Xm9521?_D|fq@7RL|AKqgNtNW+HWHh zst9)LhJM*xf%|XUNq_1i`mH!$v4Ddh@n!@prZok?cn9&iO;@2P1WSNp-|krH!?gtC}eneWJIBum{?j8K_53)RqX*5KiQDg@{;2;Kw?Ox(F4lD@vSE_w3wC0HLf z-=CkKe_p;AT|$|FO-7J`rhw0zBJY|~_T-PJFMoynt$;ukFvegXjPXN}NMKHg1Qz+9 e=Qg*w&A-eg*AXPyo@WXG0000z-hPSsPQgA_fg>s^|F<4)8rMrBozI&;?d8fNOI!I<07Jeox zaGmdQ zQV|m+Q)(bfWJrLTh*vj^dMI{rCA+k18bn=E5)&FkT~rbhT@w|fYipxsYN2Fjp;}&$ zJU=sRiEf^+StS@_lc*(AYPhg%Y*`>eVP1wuE^}rnOxfVn}5nZi@Hvv(o?9`Po>mQr`9@!vO9dARju7hoy-q9-Unj=m~qi#>|CzdS+1K}9uurc9yFvNAP8lfk??KBXxuL6N{djk~WgGPyT9 z)w@QuH8`s-FTF5C@7`2RqS3)WL#Zn*KaIRfsPF&wS${c(!B?!;OPa;OJ4P;KfL@%t z{p(PvBQZ6D$z`g{F>jMYjJ3ZsMfvMnQL5x}tHVy9%&smmOsDDp@>8-XIq1bgIf~Dl z9VE}TL0+uXS*Fg7A0a@9twom4Jdf5rl-}RJLPDJ8?9N4KpRe-TNj7zuX{g0YmA+4$ z$84|4Q-7=9+?r9iEk3KWX;qG-<9Rn8Z~*Lj4>`+m9bHhwCluJ%wJ0P=26tr zWuwE6){sqrv8Sy?FFuaRqaiD=Trc3sML~n4q*z>9qQ^&~?4m9*&~Z!g)LQ!BO38ae z!MR=4!$rrnN#wpgXO@A2i#;HBs&sF8FRSa6HM5LcWbaF?X_tu8?VY zRDVEzlv0C?Npyv0iFU0&=xG1|07`UHPE!E>{H?7CCkG3n7dzSe{$3330@NJtI#_@c zuA<`pjB2x+BY?D1EK$ay^Po|govoKIt>NjN+QW3AdgQ@^rL=a#;Jd=rt)lMnRtwM4 z000LANkl&*gyB&dyl@ddb!zb5OW|Nw12sK z(e~}z^Yi25uVw2>Ig{Pz4?&y)uv`f4AhFv-KY#OcI?;@8_QzKymEBidB=ttR4N~z zSS;7v)(f5GT@g*bzQ&;2 zKMhPw+z+`{5s#;}wH3yZ0X49o5(g~s!{N62FRRaEr3!BssM2L&MhCY${cHW~^TsiX?!L!$kFvPDbf(@-q5B~Gs6mTa7Y zd{jQoLp|j!=M12$e+&-v?=RzMdmA+x%}61GYz%j3G+Inijl83Z>+e4WseGHy9cxic z4*vCsK}Emx_w}iJIUH^2DSP`;-H1mJ0bvTQIOg-Cf=UWEAPR?4qko$aqg4-{xz_m0 zod(ceX&I-FqvmiFim|-<5uzYBR1i2RX|>gYT}dJe2}zoo)yEX-fikJG(c9e+3S>*m zdJ)v4=q}7*7(l2k+NeCaohzb{kfdR#JdZPwC>6S_bD9ZJrTu*zsHil1B#v=iMKMLA zf{v;r3Wb2uQ-5sHYkx16Nri0c3}`+;&ccgYjVc{m9q6 zywVD#(3whgHUhaM_V#JJ6^ia`1`c5b#ipdxim~w!5Vxd@*ExAc)5!O`2_)?w<6LUA zA8U!vHs}mKJ!m`u6awP@n}XaWBn~47`Dr1fI>8J z#G)}zq@Aozo*EB@!mX+l@M=$td)yL&Q^bW2kdsq3vD0$%VXs#ijHf+WUQ^U|ILPZ? zLfGod#&heB%6}`5OgSQGtGYHN&5ap3D=0VPG8|zWlL7*8DTz`kIQn@^G2P8|Hjr2D zB513<#6Kzuhmxu~1T{r5pU`Fp<&2-wi@!cn;!i*#Ze6nci{cpAb_S5&KMp%bccGKl zRkFpOfJCCN1iX`JDYQ?pih?|*A?ht4P4=ns>a%d7Zhyp~sqrAk(ZP*LKrXj}_@PRT zZc@*y3kL^-0s^>I9rDo~s4a*AwAqhp6kKq_hHiAQN^G)FRY z2V(U@utj6D*?#=%pbvhVQ1`X;3^n^UMWm8Y$(Figv?*d8Z-lT#1BdO*4@sPc?s#TG z-E;1IgJ)B8^b`aqs+?EfR!n!i4q{G0R08rggnzCyHyl@a`fl139T5=*Qh0EB7f*a4 zzYU)K2tYRoIvwscuG1eQs*#HB-;=3=3ju=glG4L>Rd?1NKEXndS~`XhP^3qkQz#!P zpF!Bv8z3J~9Et!aRdV_)oT#~n@pBsqSTQnLT!D9DR-pUNoe5ZW?hT}R-w2`BkR(a{ ziGQcR+?q=~v{@`SrmQfoATjHJ`_6>jTeq5++(yP^Yl6Fb!Xw6@2#Mr0M_+zwd|U>n zEi*EbG=MNMS!`kP@DnSR-33{;V(IfQE=JZ?1IThuW+q$+L23&7sa!v)%V99$AO+q; z873gCxNG4mTQh6JJG||}Wlvg|%wIr4FMnHFTJHJw+sw?&tYJ^q3v!uDO6n7H!i)r8#uV4Wbtc7e5V!pPSQ>v?vMz4Z9o z??3zOM;|YSSXjLK#L{Ie7uw;!p6%BbGu!1)FGN{oYiEt|bD7Ir=JJpE8`b-VD-fM_ RE^`0?002ovPDHLkV1k>(A;;}_5%R_0RaC80q+6;-U$Hy9~1mfLjE@?=L!My`T6^|wf;df{uBrOZ(;e+(C!@( z{wyB);o|>aPx_CD`kk2lfppXn0_i(3%#V%GXk-8X|KH-{$$zV<(Zs}g?ToDe000Vf zQchCWjG${gxY>_RF5h zla@?Mlxw79@)qlko~&a-S3Zbz4HRY9>ueWT+Xw@7Oq_fpMfVTjHs4yyg5oYFs$hFP?A zO&}~tqJNGAPPV67hoo{uTwKB9k|5X!!k)`vdvL06!0;1(hf-CiFTHnIyNQ_aYC5h$1IA zK#ts7C2A@d35rP~iWCjIa&L1WM$E>@?`pIr_J0F)`IQziJe$4e$+Ap}rHCm;QDAry ziAt*3EDWSYaBiAnpy5ObEJd?Kf+AV8W@_!3E>;AmA<)}Is#sb#s)#330Dw=x?UzJH zm~^Bt9Vw*DGAzlxj*}UDanC7G7h<3o$H5E;P+c!0Yft2X`KH>XWq)KvL zh<`wGpfh?{MA8Xg%S4ewT}v?&i3fR_PK)Nu5(!Cd+fg_d2{TyWL)yF)l_)Z^MfT

    maTGYTgV&oYgL^;=nhFCZZ9* zJh}d$-FR04Qs+FY77_l)OOa%cGW|Y6V1K)~pr}u@h$VB8Jr#j`@LUX!cVj&Z`tps) z-gpy{XnC_SP0yi<04S$AIbMnciM)+tM3CZGnoH929^jU`hSb#`iD=cFjYXotr1u^# z@(GfLHaAz4P|yP2jAm`z9gCP@mCx#b5l9O)1$Ipt!5>A_RTCl%ckX6?2=#0LsDH>W zphP~z$BO+`!9k2jbTq zV%;@Xgg88#;aNn7oT_@32!(nwhkrbJHVud;QHUPo46j6HGR9MpmWcq`yFOWcBN8IX zxiuBY+YGpBb1ym)?c)bM`jetNx<4LNTZ3{A6sbUJD=ia2@~b|>HGr=YA?o}uV$hq2 zFfGkHGRO4=bn_(AoB&Ki(@5ee(V5CE$<%Wm29EvcY07z^*1@34rPE zSTsG-6esow$$Q9PP5K^oTR~oc`hrau04n<9B28n^O!3z^)-rwWG3-5KTKBxW z8?kpXR;_CI40?;jEgcW~T~Z`L{9VHZx=9X#j%-}yruvwHjRKTG{WE5H7nKL7v#07*qo IM6N<$f|o48A^-pY delta 3214 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 A82|tP diff --git a/public/images/emoji/apple/construction.png b/public/images/emoji/apple/construction.png index 1a63628db190d23919c755c1573bf9c6c452c2d3..6ee73e8fbf49ecf7f2c28a955daf143126ca5f3e 100644 GIT binary patch delta 2394 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 IM6N<$f*xhbv;Y7A diff --git a/public/images/emoji/apple/construction_site.png b/public/images/emoji/apple/construction_site.png index 514e1cc066266bb1381b8cf74d0c21c7df77416e..9b927ec449fb268a83bf0c8867a0e9b53c42d872 100644 GIT binary patch delta 3049 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 diff --git a/public/images/emoji/apple/construction_worker.png b/public/images/emoji/apple/construction_worker.png index 4c0d6316fc81984f0df4bdde53bea29d99f9c9f4..b7900a340deb10d8337810bea0c2a68729b54a24 100644 GIT binary patch literal 3489 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 P00000NkvXXu0mjfKm4KB diff --git a/public/images/emoji/apple/construction_worker_man.png b/public/images/emoji/apple/construction_worker_man.png index 4c0d6316fc81984f0df4bdde53bea29d99f9c9f4..b7900a340deb10d8337810bea0c2a68729b54a24 100644 GIT binary patch literal 3489 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 P00000NkvXXu0mjfKm4KB diff --git a/public/images/emoji/apple/construction_worker_woman.png b/public/images/emoji/apple/construction_worker_woman.png index 7235de02e5a727dc3de54394d8a33cbd3caf36a9..8a99aaa4047de8f61f9c78aac4e2a9080de6365d 100644 GIT binary patch delta 3280 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 diff --git a/public/images/emoji/apple/convenience_store.png b/public/images/emoji/apple/convenience_store.png index 35b53354898876bd882d8aabc73b2f83a12163eb..539111a0599d9951b1c32af8dc8c1fbb0d8de3c4 100644 GIT binary patch delta 2062 zcmV+p2=VvF8=4T1BYy!YP)t-sM{rDal8bI~oO7_7r?058!P;wkbJEMVud}Ds)W$GN zU4pKuM#gVrYi_8mrJ$spcYK3N$8$r*Yd2A2TE&4?Tzgc+dS}Lsczvu|SdmOpZFF~? zv$(3IrkzDwMMG(SI9F*%aECr&b-%i(mzk4{k&H4;U{Zja^MCT*Uy7odxyE#zwBO*{ zJ)c|m_VMuV>r=OFHm_PvQgQwL_&GpiLP%=V*wtKOdFABaF`81v+|4w;Uh3)ObiIW$ zPdmWF%8$yM|NsBExwtY~K5c!9HD*IIG+i`DIkeEj&(O!Jt)_v9i;$R?J3>)rXo)dC zG(Ue%KXg&b%YVQvhejRp_wRlLBhklt*)PUfOhKY*d#zKO?Z&Dv!Xmu zKQ1p=$ilBkJ38V30010xQchCX z00x9fL_t(|UcA=Vaw2CC1>nU9xl}V3h7tB^VR8YF8J`jW#IH7&fvc(&gsd}bw?xD9iE&z?`MwPhpo8B@1q6{6UVWDz*|GT zW5WIr8Bs(e;XENxAg@dd{8uQXOExjKNxpFs-&o_b zQe&lCrTm}XhM)y)Hk2ECmFE*{uQt;?8mr*5Zhy8!XEXCQ)cg5j0vCpP*2XSj9^Wd0 zt0Bs)eFG5Fk(9#suXg+}kIJti7Er>=a}A5~tsj(H>$UNTZ+xy9ON11^{dn|Y7Zk;~ zqBfN^YhcRUnu@m&Po?<0>;Oqw==Rp0vdV)({K`yN1A)WRP<+1I4J{DDpkv@@jNzue zGJk0x-ayZvc0&42%CvRh;wx}8QRbr5*oXnd5&E+mgvZeY9nAoOLY3#`%J`MXc_O+r zI!M1zDFcAesY;E~#Mm~o3&uT4#qF2F9Z>IPdN1WdGj#k4Ljb~{W}Z2J3MtK|9iW$H zw#OMhhgq>|1*ujr+9#60isVhb8@ioNLw_kFy|PMK3_zUW)dTg14;zYTNT=PPdl{xI zA;j~%<#KsPk|cmvLe`Uu01MHZx*Ig5R7U(;k_Lj{hqh2RsJ@}02spL~z7G*0eaX5u zszVy4+X`tD1Tfe=Ivt@Y1u1ByM%Xw6of@E58x6LDP%DWj0c0ylBw7crHrNh2&VLWv z8P{3%dzQ^>kZ3_#%EPI=g5q4)^K1^^_&6Sqzdd#4;4sQyW@d)D%;0;FYm`F#57EvS z6(WQ^|8hOwtdBSmt?Rm}fI2}UWocg_^!Bp8;Y223EG{OHi8;@!`LiG!nXK>g z@1QKtZVG(2 zefvyEn+3F}aBQxJG?&mum?Z{HI21+BA*nCKE}< zQsp4HYgs@1XRC+RYNZMXMNPuecs+$;9_JofektyDyHCgKOz*2DLbl;?+)tqfKmHCN z0G3Lrz9p7U%SX?=pkX0cgx!!S6gsN{;r z9M^UgyKv)ETUr1l5W3miY}Wb+&EczvFGz4~RAH@98P?}gWqpsU-u6C#sgT3E zi5tvA@C1~gUD=f*$OI??2=2%bq8%2X1fawn2PknNR6+>V_>4x7wYJXleB+?fMHR?U z->JkGAf|*VNl5?_waQd}Z_Mkf08vBcgiuP2IYKVpDdvtN#274u2qC(zrD!znP7uZX zZxjI#DM^4B|9?X<3?aWs0gAMP8qq-bKR}iqGC~j+J)BakjA%JA#ArT-0373?T zl)5B3Kyg*4?l?lJ>)`-xYZ)l%p%+)boSJC}MpG$+D@DlH$kewI5+A~Bbm;2EncvE@ sYixG?27C2pcKynCecbpvzCZgf$44n?nMP=?00000Ne4wvM6N<$f{iBhLjV8( literal 3527 zcmcIm_ct4W8Z}zfQ?%$-qf4#Yv{Zx8h!v}$_NIcEF(XFoEn)>#ql8EiBle!P6-Cvq zpk{6A_5Bg=o^$X0`QGz==iEq$=G*Ix_ZX?DsIIGmfI9yi^glAt{!>eFB~L0US}KUT zp7L9`x^H->TN29J(fRxLvypzXldE%SW$9plJ={H`vKn7nUf9=BnS#R>5elT$jVzE( z&RxDy1-U_On3kEXaLKKNNEeTK~gqdx$w1$aYottk^!h6G5myQ7ER$ncBcL`-EvNH+Z<2%2$_L-2c zs%zp{?tnB3gtUM3s6;Ge0h0}O-t5t z3Rzs76Mg}mpP!aelxeOn(Se7ne?a}qm6?V8n3o2&^A{1-9UAJERyA5(S@=RKRx$S= z5c5?HK_EjFF$n_+Nn;4sK+huvWaa(NJ3&szO3~2q@5M<$VeX&(1$=3~okK)le>)~K zwFsX>SzCIkWiGF8S6}lvGdD9PA@1z-psf7!_SOceBJW>&A9~%a8b1^jX66^-e1c*O z{gUO4loBxs3YN-pidN;7Wk5CCjg3{HvCHAXPFHvH(b4|O>Xccnor1keHJMOVQvp!1 zhvLkNO9%;A?7(1$xTIkXsj#bsxVO8YYV_8mz#6RnAtEk@Twg^b_ghBZ)R<^B`(sKUYuq>2-#t3Ex%op}PQo0W zV-uODpKk&WjA&>i+MtrrQQ;l!^&vSGgFUtHQCT645w7(JEnS!Dn%0?_`G!Vvb4$IP z-Wx+RgiGuvTY|H+jE$m-IXn#G9pv$`FTbs$5Bwf9GBRc6iFWo4RzYdHmLY!cZR

    ga&MoEoQ7ka+t}i8`}YP6HeU!Ns-&vd zJK2$zkvBz|DJ5quFRw+#*5-|J z4>l22(3AuZhaxK9f#K~<8p~i-233Xx_?7$2xvVRUU$~`vc({YPrHj1Bea#Lg@ZU_& z&YDvJ`TX|HwqJFR1NZzck3a@r%;QXr%0Ey>^#!nk$I1lnq1}M9l#K}jDe&iRBL@*L zXjV0i{88;ROe}4+P3+WV-QY}ZLv2x6L|Q%y9*P~ ze`=I?FgTj(Ial%a>#nG9>rKR_%%^uv2TA*-p_S`gkL11?G)wWXujChq4E<(o8^W)R zs5D;Ow5wU>8uEfuw)dM@u(EAFug9p1)$gy=!m@|)DKn(*oL<(*&?TGwH!r)Lw9h2q zSr1v>dD+{lSv~9f^x#*MC{#v9Mv(NA)AM%ONb+uPZ}oo2yF4q)PXVZCmC>fgVT;{G z$rs~)D_obll0_0iMV>;}Ajz~-k3+kC7)=zi!+P{vL6;d1xXjMlA}2JnUmc7&JG}`S zE=xOySWB!l%|mZAu7Bm`Q;(>_a%U!;6dV=bMZCKrqRPgu7AV*@ zUt8vsz_$Q?k=iGzgUV0(hXBc%W~Xd6-Z>#!hG>zg!iXGh@Z%1@g540{lVFKE<4Tp8 zY>S#op{>qn;S|0Rkns#Shm~y4n*w~#`D zCtVa57uyXLwiSD3q>Ki@mO9JweE_Pkyj^B#$r8f#EG-uoJRW#;65MIOPr-syI8+)% zy}D=F0@B%KX&w~^n+(|MTJU5Ea|?uMgDd=xc^(<~pq+5*8C;nB$@>CejE>s8$QKN_ zz!8paYLN3nLPq0mJo3ZvC|k|bw5KdYb#up89Hd5hePxOI;i@q-ce|9t?`;hgOJAsq zCvcrKInF^~FF`Tp0v6ZZ3pLvTL!sD4+p$kCtdcFQ>Maj^5AD%zbfU=vWie6OCA7n0 z7#ohm@`}~TYQlDKRMf0ji+UH*U8Fq)rjlrKcU4>k-h^=HSG@TB10fBYGB>QcCBKf9 zjo~6KZ)7IAmh@bkZXh!r7UNz|U!r2RlTQ>b`RW_aM=$UL-ZlPW{sAlx<0cK{o~ zrC%}Ek63ebpNR(FN8x4aoH)YOx~+aqVS5cXmiP3H&+K%q^DH5e070XaiV32E(H~!1 z+d^4>L0-fe&$DN^>CJcg7zsB*Lj!K0i4Js9l{n^ypDi6;-FVEOqLQ2&>T=F;X776e zt(Qai`1(rC*wlq{x>l%PA?yDp2fm_=_Kc7B6y%Q`-4MS{=CmwtYft|Q;yaO!zHPuW zTOL$cOu@ILWz%!Z(}~(C)qD922HTP-3a}=W!q=YVWox4zcc`yg=89x#DJBmXYS)$lyXDYx<*n&U4b;_2HT!dFlQ=3bDn4H`t)p)6-Mk zsAmk2H)1fbwG~ze^d?^#o>_WDj$N}khnqqm37`S%CQ;f*S{mB0D|aw!>R7YCo4;}| z>-|sMOikyGeRO%#-!6sIKe-YL=YQmsd&ffwKT@378(CQTA0yN8t7sGqJ91pg9d*0= z=dBOUalJ%m2gS@Rrfqy-sZdk3jX}29e9-i$fJkPPvLX`VsrGjcygJ4@`*vLfrT*02 zV&ZBJlbXCdw%LDYcppns)%*ApFJIs->t`yEN6hI|r`yqW!zEH2QAJ`F5G0Z$WS#2p z?9gTRvRw2l>kUJO6?U`BRjbnB``D0p7k|5#4Ch<+jExDJPewu=knCXO6Y*KbRzImK z%KA6=EIK9O;I%@<-AQ4-_}n}*KXdYf#w|3bca~g-_y~m|>8hlpqzS=#*Nz);Wb6Go zRs^^#M&YBTSj)$7a+>4>h}|PD6a|vr;J5kWvo*CoCjm)|JvbZ=-o$ar>5l@!ehRZq zD4RoG0Z8xteF7jt)zfcI!>y2ikwr}~d6NWTZtBOuXWE#yU(F8b3?Jz{lvb(Ovzdu1 zw|jODkO!S^u&SKE_fl80`PfsN?jY*`sE?Me=Aeipji#M}pNnj0G+7!hCv))fh9D0h z0R@dF5`XnRNA83#(zAA=X=cKdK1d`^$x5_rJdKy8MN2}?pVRBO87g9_qM>REgPO`CZQbGi&fT!x17R8;03SPR+EeE105tBgcDru7Zu~{yWZ|z#YXIPS2e;{) zz&G6RU3b^w?>e+npOL+WU;b`FO9U!gr`=BrpIL_hc7#%6=EmpR9HBK-8u(%gZSXz# zTSL8w#Ou@~UtL|@%`2u6&ohuaDts(4D{+dLBiT1G%Vxx zq9G{u$}lEY`yM{=jr|Z*7zT4UEtdsDOU+B)3oQRK&uh>vMitEFOb;I$_WrjVP-qbh zG&zp$~l zub7v#(be1D;}i*55Cv2m5n&}7YAYXaAQfdYCwML*a~Ta?34a1f_y`9vC3QeLdHwzU zOh$PsBw{r*Yw7j%udu~eQii#~)r^p~^`f2$0zdpAAQ%{O3;|Ff7hUfc7h_+E2L@jJ zVp-=02MY^nA|-kr7E0%T;z?8q!_s*O5m#OrF#@*X10*wZPrRpjWPUab!r33+!WC217ETb0_ z=MfO8K~0>%J=bOfClPN&^LXsGGX^0c+tY$oGwgUe6R zx}RIAZa&}0%OE9C)Y>o5_om~u2gpRd3PmqkrGLq!RP9zOTh+@|*XFcR&o>q_B!TcF zke{)Zlg-F9Ev3+CNu^S)>gI#C#-_7aY`fMd%kcLQ`zZ9rX!_r`qfOg0Rg;*uq#8gD zT2^zOYId#V${Y9Rayab-A|HU>|IE5QV+w;BjDTv@f{Ikt^OnomxZ2N2l9Zcs0Ljlm zKY!+fnU}TDsM9gc2tf!dJLWHabM#)Dc3B1sXFK->-j=LrZ>i&6@c zE5!zQ{c4BfV~8fPP}WG%e-x_0U%=F2rW6bZjM-{5a<;r2L0BUc%|wRM)5T-x?a#p` zmXd-bsnj3Oyp`2;x6?*GAGgL*L$ya*ZhyvA%lq%ZC~#$Eo>Oc~V=<=6LqpGy!r?;texWg)b`e6OmbdhPli>K(^%#zAyhPn;z8+P? z_K?f6WN>OCZo06(N02D`M%gjVQD;(JuR_Rj5m>8gPO7ff&X(f?h$2jv#nB##&3~b) ziHA@|BOKVo(V#Z*klT_1s9S0DEECG|`ci+qc6c~7T9GwgxL-(7*K{l#410)76SW5I z$qaR=Mhw;S^*Xn8%&4qEFluh-$}GLxY_VA`<9+Cx<%~L;_GCQjDuv2o2Q?Znn`zME za<+li=$?w0eMm=0!}}Fo&)e+{G=F6jD)j>h0@lJs4#CJAuMjx?lL1d4*v^M4SQVL;kJ z0mUmewSQ^_-0a!KM<9@ZqG_6mpx6i_)3!xW2_(Wq@DmW5KuJYmC|9*$v17<5EwxDtg1o`N22O{OUuAww}3UDpld7$V8O5R$|2G7FCvEu?FR$XHfW z#MJLX`{8(=hKr&&NVCyU7k`V*!h;Zb0MW-#{1TxktQbPUFhmiadLCjz=va#0w3x)C z7{6(sZ|x!I=`RsUMbAO}Ate3|^l)z>lzfMHa7M{x+errykO1q&ViO{YJ|w*9!qX7F z>kXuc(DlH`K>Y8!_#&`Jtvygt93bwE(|2b#7w2IvE^gkP0+q?^L31Djbp+|O9uv(# z_;7K4a&q+LH+6D;cAELHgKnV6u;X~%0z3{tNPrO%`@$i1ex6SLzkwnHEaPYPb9x5G z%YJgC&x4jvPowAKQS6uTA}p0U2@@3o%Kta7dChD71^PY6Ua>UbfB*mh07*qoM6N<$ Eg7)MbWdHyG delta 2779 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 diff --git a/public/images/emoji/apple/cookie.png b/public/images/emoji/apple/cookie.png index a2ddd0e86c6675117692c9c9074c67dd435d3a18..7ef02e452a14a44c3f65d1da0f824990bd03ce05 100644 GIT binary patch delta 2216 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 wE%I+0Hmi}1XliFCwHcKkz00XH> zL_t(|UgVYCn%gi4MC)V&=+}1M|6vOQvQ; zgnD~hofLI=x)~=I4Y%HHws_73>l_`U6_EU%7H~S$`kQjng2pD!`$`=oYi?ndnr8KR zemk&MVP5Qp%zse&KxXNFLua+5?@{IDJJwRs+pS)=?lwTkm_QM<2Z}2~z?t+^RRq8+ zbB%+(CXmN-fE=6v8lGh|%YSs#bRYc46&avCKnUd7k>@Z#>(ts{wE)S*ktskl)iAGU zZ3JDc(_4dZM_ivOLZAY4soB2ZsGjFhN{JZN0)K(YumKPgegmu*D#>ukGi0fxz;c1buv$aBk`vPl}8r z$A9HvKY^f3DHRf<`m99*m9Y~nq>&@T|3&DmKU*=Q9R@)diUN_ixAy|%hikpmFxh`Hs}pU6QMPViHSjHqtP2GH0k02oi%#f5uG)*w8`l$ zG>$EjaYCWFL9#gM2?tWJ%&&7@L~uYN!6|?XEWv)H(G8iGyE%!aM17Q>b%)*7(H>{3 f8XwjzrQe5dE7aUe&-+mo00000NkvXXu0mjfFSh%Q delta 3036 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 eSNvE*n(qMnm^QRkOP9+40000Za#6%p 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 N002ovPDHLkV1h_~a#;WX delta 3503 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 diff --git a/public/images/emoji/apple/corn.png b/public/images/emoji/apple/corn.png index 0db99e3e250dc9c4ca6695ccfaf6eda394764809..c20f48c33c603b6d46a59adf21cc6ac477e6bbcf 100644 GIT binary patch delta 3461 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 diff --git a/public/images/emoji/apple/costa_rica.png b/public/images/emoji/apple/costa_rica.png index 084c4a263e81a35eb44a9759ffe8a9faba72b8b8..4b06322f0c2cb3d67124588acf0c4406b83add55 100644 GIT binary patch delta 1396 zcmV-)1&jKz6ow0sBYyzxP)t-sM{rCTE?8i3k_#O{U~`&LV~YqIMqgBHRc3_`Bufn* zLJS{6W_FfjbCRvIuyY3#l9Q5Yd6*9(MyjZ%ih6*G9Vv@SPo<@$(Jw&v_VxMu`rX~# zgpjrdD7F=^6KT_?e5s&<=cpkf|0WkGIiRWqRmTG%zr67)ig%`|Nrvw@U|By z1|D0$9WWO#W7yZ%!N$%`XPVG!b3IdnA3}#ZSdzONEfF_>>9x87A!x4+W-hWi{`63z&E+(Te(r(J}w4`Pe z+$eHmFqus5?#7y?xs;}jpyo;;RLf;eh{Is35J3hIDC618byus^VzF4QTn%arU1}pt zh<(c?Dm;vQ+8_oFK?_Jkx!nZR*03+iQyfSW6e%1?&T~RWtT1CX zzMBk+&VPpGIJ@FV>w-!_Z5mQT<5ZC`o(!Br-!fI{{$3KrromEVz3+^UA!$h5Jc43}prpeQ$=J?4d+67L&ePM=Pu8-v9@@Iq|CF96b0DrTW9SR7tRJY;nYLQX z<$scCEq@sQ`oFyBSQsTBQKCa>Zs#^P1fgE93qlY8nsNxWrpt#vBk1?XwY`_IFpmzq zX>4PoPNkq_2(2HJ(8JH=+8=t}d_UjL=X4k#P*9J{nrM0qVPWd2g%84E1c6W&>KRan zL)jCtDbaK~?Q}Xg&j1Oio;^|P6toPXY=0;FjHag{L=s9nF?4#hX=*aZ zJ-ln8$k-ZUBYkNj%lxM9hhHP;>*E7oxWygbYh;MH(;BSwRjbogo4!W&xF**0FMq=8 z{HTNQw%aBEZm>@ZLK%0qWm-LKY!8ub(^-fT7XXAwQu^-CfM8qkJ;H7h5g$n+CWb`R zghf~{8^R5VQa2>s=(sfxe3{}xj+}R-{u|h%;t^Q%ND^Bj{HPUr8?P9m- ztHwSJ>8Xh#i44)S4h|D2clP!?YJa2EWcTtpf~qgNp~&$_2oBx+7-O>=@OMP&eFO?I zv7LNGjGTTC8yhqU2%NR3asx#8Ea4CwVhD1N-bZ*txFfuLp8Ir?8)r9o+k}WnVUNdd zx7!Z;^`RBE;^F5|i=<4cwvNqV%LC@{u{!c+g6;zt4H|J%89=l%xT^~`pgw_F@!#Lx6E1EGCT1QvdY>dF=H}(v+1a`{ zKN>Z5_4W1m`1mJ6gd;wFq$w=j-QBJ(GxqoQ>Gt*p7eFdSg$W!>*x1+x8)3dOI2JK; z2q0y;Fg5e@^XTa57d3s`+uR;DaIP;k7AaFcP<<;!fq(7m(Fn86})dCb* zOkRhtCn`BojSC=Doh2yv_3s)mZww`2C_#I}!os8=AgUxLO=Fb}BUzmt9F8n9ksu=; zGGnAMIHaVc!8<|q|Nrp%`XfMt^YH3>8y>4MHX}QA7c5}Y)6=-Qxxh6%*^80ks;*RM zm*MQ}G=ENuXLXoHT#^0!_d`~QBspyH+}>Mkl*P){6eUdM@bNxZkrygy-R0#QEm#gI zaSJ1BM_Pr#aCOO`qOP~g)Y|8u937q_AYO2r`}gxRMRrzYiNeUvo~62YgQLezRK{Ci z#C?I&xVmS0r-YNYxx&^RG-|?&jgp_dDLixA;(y_*uC0WOs?TU|?8nO5pQ88c?ap#` z-@wJRD>2{2$;{K-ATV5Yhp^t~>!?pqp)WAKxVX{L((%;R>AS!5y7K}3;}4u2$jx_{!7XntUEP)!&(-x^JQeSJ+$Jsq8;M~)z4 zAaei*1kXwdp@kl+uCC_uJw5jTJo%*QBKJtJZgWsjO-&d|5kQQNVU9;6DItD-At`uq zT=!Uie_LDI-NE+!qSKXpJ}F&Z6c2`s@J|C9N9_iuyw2e5!6MSq;rQ&(C) zZpp-A3!B1IQ&WXPp|#!RdxJIdqFsBy;YcKVdoM3Kolc|C*lczRFu^hWQYudT@p#mS zVu-`xuuO)nrLPm&P9X3ghzK4WVYu~~%~H{VEtleveNhn&fgTzf>K9@jH+HkP90$P? zi9`yM>jOpBWRAd@Aj-%faDT{z==Y@mamA0%9Ddr;904xq$>;OIF^|#N;+*cDy82wE z)PaQ%5s?iL*+G#=dW9#usEC{ktmfQA_`m$ zi0n9shwzdp`f`RdS(us{9vRO(gTQwl? z@Zii8WdOT}fMZ9tc5?Eyv9z?c_2EJfg=mO^lN`#YWH|eL?e)IvwZC^|jF-EXJI@di z2+pX-7kXqOB39y{43%6xpLL19jrXk5bWs?+%WR4+sPt4jE2lV}p2@ z$Wg-2WoMl|nZ)B|CK($T7+4saxd72lstFYB-)dz-wR-T5>~r+)-xGcJopZ}wA<4;y z0NkN#B{GMxg@pl%v8lYs5r}>}@Uxug`GaTsZ{6qw_ZuD=8Gjz`g2#Ad3KrodNfomb z{rby($HvBnhM1Vx;JuKG7rnh*%uJ_SW+&QeWwpb^gi59E4A{QS$jHUa%+%C)YNt08 z1w+mDZU1Lcz`qq)0FO8Fh%_`LBqTICzJp3Ta>a;*tIzlIbf zv_Z0Q1cHHqTvy-wFMg7W6uCw%%*KBNBj@t&p5Ci_8W?Q4j}Qk;1L-ecV5G zqQIO+kAJAFtc*x&4r^~~wG>8A&+H6TgiM5reBkSd2#4T~*VpxQSKveZ!0R`Zj?@|l zw2+XB+7HS^3x9ZeM@V*tuOl*={xJR-6u1o-X8(!X(G@e{EPDMw$-(k0(x)u zbmtV{Ltu?y;qj81-zCA_eP4Rw(dk9Y0oEf(D5y5DAE8A{<^T#+Rn?C^nXj(0a`9qa z-G7xTD(dT3Z`@c`7ARk|+~Xr7Vbk)GYg%kJsKJskfMJQsVr4DNv?9F_qr7sycG(h{ zNF7cIH;#m#4}kwE05lv81P(-@^tvXFS+PQ9$LOkSZ-g5|TYMl&S(z&8z$m@Rmjuj; zwd(7&wO4-#S*;CEu~t`E>FvJwEW~JODI!C(FiLY@1Lv4yj#=^#J#kiLhI%mY00000 LNkvXXu0mjfaFgUN diff --git a/public/images/emoji/apple/cote_divoire.png b/public/images/emoji/apple/cote_divoire.png index 99bd6ae1a74526fa97ab8bb9cf4ce0974504c34e..7192beff722d4f1262fa46e926004d8d00803dbb 100644 GIT binary patch delta 953 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 Hu0mjfo<@8& delta 3262 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 Hu0mjfo<@8& delta 3262 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 delta 3566 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 diff --git a/public/images/emoji/apple/couple_with_heart.png b/public/images/emoji/apple/couple_with_heart.png index 5c75415c84ed590b3d2e281d370392eda6388e1e..0cb31c040e49c0b559f1803fd86ac244a8586e7a 100644 GIT binary patch literal 4056 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 delta 4190 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 diff --git a/public/images/emoji/apple/couple_with_heart_man_man.png b/public/images/emoji/apple/couple_with_heart_man_man.png index 96a9b24be7967a28bfc0f473df4e61c5d7e3300b..776f975577cc45c2648034e77ec959bd45e8d802 100644 GIT binary patch delta 3157 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 literal 3988 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 AF8}}l diff --git a/public/images/emoji/apple/couple_with_heart_woman_man.png b/public/images/emoji/apple/couple_with_heart_woman_man.png index 5c75415c84ed590b3d2e281d370392eda6388e1e..0cb31c040e49c0b559f1803fd86ac244a8586e7a 100644 GIT binary patch literal 4056 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 delta 4190 zcmV-k5TWnbALAg9EPwURV&=6)_RCb;yl>%8n{+OMr^>wf%~M^E(8<}m?7m9w!BK-b zj=!vu_|s(e+>iCkRQAeJ{q)uK%3AZsQ}o15_|RP2U#jiDOJyZ?=7WFp#ZT6Htzk}@ z^~O!wwbII6pYzmvJ~0~1m^jmHrBQ#u^vhn=qdbH|vg2i$)dU8S)`|ZO|Z?jErv*NNt*rqz}zDwwxh0SQBOC>rZ77E&{LDr-_%$YY+ zcf8$=BG+@x4M5>QGURDGLfx$Eiyb(i)1HeCU(!9 zIE+bZqhEE>b$^Q=LyGarWB1Ha`OQ-J%~bfxQ1-}9>$*nlUAXtjPw>D=?!8EKFM;&LOkI!AS&PlvsXpelMA)W1^1@4SEPm@%tk$DE z{PWW0w@TiuK$T%4)1f-}(qL1C$IO^G#gR1o?!)x5>VL?UHqV?nZ9WrsM;EGgD*W)v zpKB)SyG-tk%YRN9`PFEeW+duSqmEi1`QVfM?7OgfEy9j7_|RGGz*GFwQ_`L~w0|!9 z>9FpD$A?rL?!{W!QK0K*yYZLQ_~fa;iZb$}-KB6S;8Ugf;+}gmiSBvA`PXx}f-msO zWBT2L=YLkI?QgyClh46Vnbc03*G!kYhcVAmp}R|yw?~Zgt>w#3oAuX$&PtZ@o!Jfx z2ijJs8WIQm^x6IP&f;6I!AFedx>3?rrS-S&$w-m&so~~>!Sc>)|NP!68w&Wy^44py z;c&QGG7j?5cE(em`Pli`V65Y2w2NjY>%&a@=70U?dA&s?31%jD<<_o|fmptuT-|xO z)wOUf2tFl8eA1;!UQQ?BubfU9VUTY*u8Ti6Aq&f1r$~Ce+qz0FU7#;OT3I|d(HDn$TE=?9qtq)s@q4l&w-?(spRGrG3o4 zj(^8-X8{`ElmGw#SaecOQvfaSZ4UnL0`Kn#?;iga@BEy&@H*MC@FTVG z{qKX}>+j{3f&H_H;PCQQ@9;}&;5+$lmizDTX~~>UJMa3m+}-cE?9Gku@$b~W{{Fk0 z&oOJN0RR9Dx=BPqR9M4g)@e+Wc^(Jwr+*y5s8M88*f?f9hG=#?UTET&d9fR36L;QB zHk)j=l-3q{r%8`c=#kznh0>O`90h7AR>FN1<;HSLxeo;cNP@)U&3MJz*_qk>{hy~T z;C@qHK*Fcr|MC2vKlc5>g9k~ZeY-IXOGrq-i0nIhzA3+_vfP_;H2kNy)brl_%74o8 z>69zGvF%CNM&FzYc7A?-X=%P^;0OHwjve=oEy3^e^J4?Y zk3|tu?75_`ub$cu!7k=%G>)?B!mjaCNr&PPg&j+28ky8WM&_4Ba0#5rrO6R(M~8ND zZ1MO$T-h6&bZWMt%%RE6&CUJ_`+q7MC0A4COROzQI+%bZ#2p{F(Q#v}1E-d>eW?k% zk1tNnYdgRhyV28;-D=MkYRw(y9XtqPGMNPB04n(a2|L<8-CTJCqz>(fRy(g9 zIQj!}v?I9F(_FsL{$t#M!wn7u5H+&H5Xv1yRd*?`9!j~saJRX#2T|IQk$;hS?c($# z8Y#|HHs?O->@GV+@?i=H~pnQ*-Sf z6SHwa199NFh~|iSCoJ8`*7y>SbhZyq-_4IuxP{t;nY$04&CPYL1PP)H#RvHbRt@GH zuxz4~rtAYiQ_JP$1l0o=1b@ba801XNwX}?G!b$^B4JpKvh+TAmO;||E)qLpgY+smO zuEDA1=1Sly2?a3^r=GR6wA|V(^ASWtI47{5d{EBeKv*ycT=2svR00W62n(mY9A~DU z&9&URHMm)r*wEEgi&B7RKbBYs^?bfC77PYAM>{)*`xY0QY9Qsf27jr!yS)5xI^x`Z zQy(FeO86+1`>_*UU0sQZg@w3=u$5658!k2B7Sd{JmY1i2S-_p!ga7fXGCay?ii(Po zu~YTqojDVTcLbfCgEPyg{a&q$WqS*Ls*JfLH z>&-^wgyYT31PD1qp*JQ!OByg&7z_rZ-5(GS)i)#pl#v6Uh<}A^@7r3hH)d@~P!2ED zNfi1`Yz@#v9I>j-TwyfK%*+^!FaCk;0R|<~3vp-S<99&Uwjgjma#i+HKA%rxvt&}8 z+bjpoZ~^;vs5ngFwE*K6-#=oDzxhR@n|(x~!O=G&w^hVvFeDNQ12hg-C{^gc#V$BA zJX=&A9{$jKn}2Pq5;&QSH?JdTaIpI~nau2F@Ffy~fXAcqcmkY@!7do&DvxJqN2xs8 z8Jo?Pm6aK7l!Zg1gM*_VH)MLN6#4)I5Ir42r&GVdewG`J){Xl5V#3Nnla)iGz0Lv& zuY~$!W+4Zl(Y7~2VV#@C!0S-c$-t0Nc44R0PPx%w-hUVmQ$u(!cFvJ3R4E)(sI|L$ zbTs}oOI&JF@EHPLT3Q;JjDEsU3|FCcTaAX7Z|mzlLl9z&qKx-ZDJv@iwH?Xhigj)_ zU&5nj=v`GVT}BkzL*sD8DwoM(xc40Pkf(TP2&SIJ;hbqi5)tG86rXZ{&y@xgG(Il_ zz8iL<-G6+aLZ(1=Vc#%_71UdwJ}|!A81i_~5Lql%RBCK&yop2c=a0qGxVkD1n~~<8 zF;w^ix+*n~LJ31W39O!oCBAph+e=q zCx1?^e)5o`5CpbWn)J!@Cr{R1n#3*>tcb;=Hkkw5yd$=@?zXnJcpKbr60p60qPhG! zP9Bf(N%PC^!IQlczZX)sL*(={{o1?7k0u`du_jlz{IJ_A{G}>&sp#@~8}6i{I}b+M z!w;C%Ff>o_kN%U7`uiU|b|`m16wdm}qkol^iQZp)ujJBz-)^j^Fsn+%EJkdKE#77$ zZb=v^h7qs=#F!1e>+kRF@11#>TT9*!3EnbS`&U={`)Afdt7e7MY_Zru60-!c$3RNO z9T?grMwJ{v4a}7X6aBp>18bo#AYbTFZ$HGc7Fv0suR@jVc9WFLH~_b-)bRZ;A%E^H zLuYrfXp#a4^A((n;*FJH!FGsVzzjV`&V*~78GNhI!Gm03m&;u;+ShSd!q$cHEKTTC zb7=yevaoFZ$@BGD7h-9-Dm;GBorOqyZ!3&FZ5Ck@_i$=EIm1%HQ_!B^%g1#LDItmU&*Zo9!^x67?6&Slbe=uiwx zp^&j9aH7%a_!&YJLXC=wKq411L!r;>>po^#0S`eIg9XNBb#gBs+!OT$SGdkX&xHx@fUG?&p8uO7&t6g6IT9rt=weWi4u?EDE1; z;d5NV7OLe2G}%_G*)7@$?f&!MVRzxP9j+u`$=H1U9&CR@Lj=MpI*%`s1}Y533K*E# zY~t>Ou(-YdRB+k&BoUHCsDIXr#iwy7(vpmh6akH;HyNRj)nqdHO~P~77x_*vLz5J# z#1pwpCg;y+)p%?{dKBU@*g}^a&5+6Mc01kT17AYlqp`tjghx+D4blZPp-Oiei(#{6 zLdjMm0ga<@TVP;*XI)*OuI~S#xW7t?N_eM|k`i({Pw)-)wi=#OP3l5E5jVGE?x7>o(n5Cygy z6ENu3xBCXU*i{WND#BVV@b&_$St)|f^h+- zUawZGVjqayw?x*lw0{|;+UIW^eM9C=g-u7@N&`pW!O-4LAz!wu)k;Oz#c}_CK_g!& z9K&O;72-e4{Osr+^fg}S_DkSwCKy#O>>TC~>HskeBPWgrNPoG}lGFS5+wZ!dbzbEf zFjC4j6r;6#3GEm;N2UnNzt7SG4XT7O0v6oM_wQzoj%LW`#edyjc8hO5s1)`kUJ~s> z9xp4qN6j?!WgFxiI zDbtKQbMbf-I^_*Ab98ZheEeFY&<{f!hvlkaYKqvE$_@hg1B(`t+^_|T-+-XCTPzuA zDw#~jB$s0;vVW+mDu)}*OpOh2M1~hlnUgRl2?$Gu$+{v-X(}!V5GH87l&`xS4h64t zY-*TzkQ9|=c!+MOFoXzrb7CMP9_$rt9XJSpV8dc2;XObkaBEf(X(`5IDouw;Fp&TX z@Nk|b8*-RbuaDAb(?rY6!X6Mq8*;emqIf*(BR=?9Rnu*I2N!DHbo?+e9uqnEj3quJ-kR`n7M!$}rp%Ms ziVatbvaRdI9}DFQcy&2$9ET4>-kjwxqS0i6RdSW;BQkH)ZCvF!`D(3XYbw};0;UDX zIdHMOJAZlGYh;0y@1HlQ=u0Y^pf&vw@rjmU!1|QWPtI!JKKTvLjc8m5PfkuxkKdjc z@hDGd_3PGU=g)oYN1Hq?&ypYueN4XPtyGK8godCufJr05vB9X`^eY)wY`J!9( o(A@T?-db9kBOfQf|NoBo3#{rg6yedle*gdg07*qoM6N<$f=IPTkN^Mx diff --git a/public/images/emoji/apple/couple_with_heart_woman_woman.png b/public/images/emoji/apple/couple_with_heart_woman_woman.png index 4257f0638037fc4d157fa1e08785f4cf43fed5b4..c92fcd1c3d21a51d76a2a8625e5ae4718dfd25fe 100644 GIT binary patch literal 3830 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

    FmGxw3Y8iW5sI5gJr!-^u@HoL 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 literal 3824 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

    FmGxw3Y8iW5sI5gJr!-^u@HoL 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 diff --git a/public/images/emoji/apple/cow.png b/public/images/emoji/apple/cow.png index 53b088d04df28d6e43af3974a59a4b37e68dbcc5..1d2fb2d61346fd9403427a908e89ac8456179686 100644 GIT binary patch delta 1893 zcmV-r2b%c&8uJd2BYyz!P)t-sM{rEUz__54jML7}_VMQL>fY<-+O)2tt$(MSz?_EQ+RmAih}zW1 z&&j@vg?iGloTi|b%EYes&=sAm-rJdUa~z#Im7$XWhQ4nRH(b z4Gqq#miqSV^6la_Gci$3NoZwX+}qgLx1z|TkLb?5t%h;z)5FraspZPJi*sg`Z&~ly z$^0_vYCH z000IMNklp%NXMbL!O<~$~hOt(qgs z$k*!6w6@S^ah!P!aKwK25#Pji8Sc1@lBFmB_E%IPZmVx;sw6Fyl_k&Q4e(Y@Kvmr3b z-}S@LGQj{5OMxb*x)~?|6w5<9hERJ0YJM?n!Bt2=6yl>Di7NBwh;vwytec(^2H40I z1OXF!BmABa+lH&U3U$!U{B@X=nx3jEu3_84=YO5IQ=^h#sGbQ2-MkUjlTR=yJGOr` zceY5efQhkr&EITk!CJE8*!~QsD*O*Sb^||U&?^cs!dkLIA&ZaTY>~bRif2-&IAYKW z13_74bNha@^G^1OwT7rwPVs{R6sQO9IeaUJBv5ONEv4UOnwo*yZ@zPRX}JudQh}8a z1b-0i$nA1l9PU%kb^|LvJJ#4s24w~*f_v7fY^r|lWwA;agcK56n8K1nMrNd+Dx|vH z%QB&W&^fBGM3fE z6&WOCv0-Gc+qVY)E8kKxzQT(by1nJkbgOI zMC#2mR!Y(mP?VyEW zyQ+$o04afGN`8_omr0Vs$OA~7qBdPEWYYr_+eU;jQ5-z)rjFQyqbO7oT&0JTO7<*PDKwu8N$&gjKN8dkY3Pp9v+4e?(cuy|0;s@ z`+IQX2j`(jLRC2#47zx7;hGf}S`s=?fIJ&7F!Tlsdtuw%sM%IR=el4pZc}2^aO^0m zQLBbHS78nymKPLoC`D6_8h?GMZmI3gu7@S)7E393%W8nolUChQb5C=AAE`&0+fp7` zDPIM2J&O*iAb#)088ZnPLflAE8v=5)qe`f8<6J{x!KOFY&>$ACvsv-scszC-t-lq5 zlv~$0Zy}BI1wdoDJcPj<&Zj5FH`H6YCjOMB8VAP@DO!^3N;u=j8pl@R~Ep=mca zuqftW2D5T#ff@)l(zLtkN2IT#1}KJsyQzvs(`bwiDxssv-Q8US(bmD3%`~(Ia(8#Z zS3>;7Xaouv;~3d^8Gn4lG8#>`J^a-!CX*4(9l*DO4_GFXpWgs%k-kpyi~w!~)gl+@ zXL}An{ha*FGbsm!qI~g<-+4F9+CL*^Rb}%1C}-ZM+R@=5uyPoU!qcI#$87-BlA@@Q zU_ZT#Z3~gBw%~j~3WI1#>(e%R8Rv*lthUfb2eVTT^ fbZh>v^Edwj!%rL4qbl9^00000NkvXXu0mjfspr4p delta 3450 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 diff --git a/public/images/emoji/apple/cow2.png b/public/images/emoji/apple/cow2.png index 1eae0f25b2e34688274e887710af052fc07a9866..ae4d596e307e693fda288e4fba3e6c22b9b6f35e 100644 GIT binary patch delta 2196 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 N002ovPDHLkV1k=JjGzDj diff --git a/public/images/emoji/apple/cowboy_hat_face.png b/public/images/emoji/apple/cowboy_hat_face.png index 03f6660679de7dfa5d5029ef91a0df2cc6626a8a..51794f2b58927158f08e383beedfaa6ec91c0277 100644 GIT binary patch delta 2396 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 diff --git a/public/images/emoji/apple/crab.png b/public/images/emoji/apple/crab.png index 5caad5fb973d3e11265b97a7e9506dd07f6fef61..12475c3b51262e793c4dc44400738d0307294ac5 100644 GIT binary patch literal 3722 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 literal 3891 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 jA_D-hbrHAjBsy&T_xu4E6&-XH$_Dp8p%i&1 diff --git a/public/images/emoji/apple/crayon.png b/public/images/emoji/apple/crayon.png index be8a24bdab1d999aba4364ab8977dcce14b00fb1..7846582eeecb4216afd3dca2ad4d6f1aa8421c18 100644 GIT binary patch delta 1177 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 diff --git a/public/images/emoji/apple/crescent_moon.png b/public/images/emoji/apple/crescent_moon.png index 3f03778b60d95af25f1f745f2900be24f623e46b..373a307bcbd3bb4e5ba2014f80f0887044af926b 100644 GIT binary patch delta 1319 zcmV+?1=#xL6uAnJBYyzHP)t-sM{rE`%0KwmbL_z~_0^dF*E06acJS1+!m!%<$}#fB zM)SmC^3Q_$%{2JXS>>i^=A|n0yczh@Q|_r!w1#lRjVSrkT>R2N^Sm>?h*$2yInJ9R z^Q=0-hBU{GOxcw>`p-V`%SQFnTJp#~^u{v%%{BMRI{(iq@_)`w`{H!};VSXOCjQ${ z|KmXa`gs23X#e(C{^nNr&P4z6fd14&|M`XW*JAh4OaI|u@5MRx+id#ACHB%&{^@%E z?``|pT>trKSlk8#0000WbW%=J0LWJTA^txQ2mZ8dFYks<_x+`eC*+jX>tWvg&9jEZ z09YoC000C9NqYnC1u#03A>{#iEl$mngLRSa&hz2(>22|542+%M5i^DWF9D+>q2k3YrvS=JQbvj z->{?|lq88%dz+`H^^ri7B@Lp*UdJJsPG6*gxRs|D<8CW7klc#B^>LHiw2SK=5ON7L z5@?_vtba{EZVcOQnKZ|nFClPRhYn>$d;O@{AUTZiN6?6+88(4(gjzOFv3`WsCFIBy z2hxd4NQK^pVr@wB3n^v$VRaGsg{(Cn+PFLO)qS*hS^|nB0gRM~m#!A4eYJbC{o+3-(nF=vX@T^?rzbKfTOweVu$gDY5$sZN={$O*3qeTJIm&*pVNd z_kW}8ytq6(eXvAj^8EC0WlBc_2V=IX=j>|U zM2Z)QHhX%0nM@vwbSE#M1Y8D8>F8xWq%rf>*sVD(%98VH1y*x5n>~@tW)HzKdy5MO z+qyZBogH*O?6wV3n4O_2$T`_w!ea*V84y$mgN}Q3cBUD0KF+kkffT|2Cg&4StAA@2 zpq#t}ySgzue3^&gXGcaxDGal0y9EqtAR&mCT-Fz8>U~%EsNN^eXEjApv<$Ow3rR5e z6Mnxyu8f8XCct_=mtamDRJ9BtV4(mAL~{Se6RXa+%|61AobhV`xUnGy|sl@B1_u2O*#=C`-*Do7^zSgb9I+ z+3f%Pwj*>#AUQ}aRh39UAVZucGSct97-8j+Y>a8{N(Gw&hD`Z)l+?D!r~m;5 zAcHI_Xiob)Fu#w;cciK5I0uMXWjvMYd@m-lygZbc=@>GdGEzt8+3!Xpejtkp0;^zH dLHuF9{{eRt?p|4(y>tKo002ovPDHLkV1hIiq2vGn delta 2654 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 diff --git a/public/images/emoji/apple/cricket_bat_and_ball.png b/public/images/emoji/apple/cricket_bat_and_ball.png index ac321e95cd22f6ff4201685b012c9349454137de..532b708a7c80e5eef611909e606d45db3bf211bf 100644 GIT binary patch delta 1800 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 I^xb3s3*1SM*#H0l diff --git a/public/images/emoji/apple/cricket_bat_ball.png b/public/images/emoji/apple/cricket_bat_ball.png index ac321e95cd22f6ff4201685b012c9349454137de..532b708a7c80e5eef611909e606d45db3bf211bf 100644 GIT binary patch delta 1800 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 I^xb3s3*1SM*#H0l diff --git a/public/images/emoji/apple/croatia.png b/public/images/emoji/apple/croatia.png index 75a883405e0412deb25389a58d105c027a3be944..79c8b5283e985554052e7b51c1008e6ab8b30e77 100644 GIT binary patch delta 1757 zcmV<31|s>36zmO3{0#`rzRE{r%odOv_kY z*eNRY^z`R&kghpRjr#ZZxG*&BrKQF-H^U(#&`3$S7#iK(-T2PUuti3= zQd80h55sG1!Ntez?(Npr*75Q2#uXUIB`4$J;#*&m!%0e^4-s#2pxN2k>yD1)=H}q= z@V*@%@VdI{EPpD6TYd0KMyIR1dyiAkprNFIkZ#xI_;+!DH)wdR#}2{cr=X^`Bqkmy zd7URJhz}AwICioV6c!|Q^zG<6!r?cw&RoN&EuOQ6&UvxYO$ZfahY1VQyTG`(x)L96 z8zpJA1qUE6e{pR}4H{|G(;O!>g8~Xx7$IFz9bN$qUVjS}Q?%moH7;@}0000WbW%=J z02Vi*D*jyw{;;g0@S^_SQt+)CguB)K<9(c&%bu~V=h20`000F3Nkli* z=duP;DD1--7IaUlsOWyoz0N}x!g2k#D8OUS8oa2Eo5u{;AdiGqe8C<_pZ zOm#YZiSO_;URXfOB|%zWK@j+wRx1Q45CsAl0uY|;?9bIL?V~ojx>7qZ+k?>Y3PMt$ zfPWxD5jtIMI+|Z!X@C55Hotj!!3%ewNF?-4$f>k&gzzZLcMYmL7<__PH=Q2O)*D6c zgB+)ITS!so7b9YNq74Sur7vIN$49A&K!TIc=Rep%N4uxdYBD8!`SRxa&#AR_J-F09 zov8bxvLYx-fw17`4Ka)ZgthKzw1W7Hn}4e@*_mqd%UQQORcGU&ESc>X!(=jav)RCE z**C)!A3Cl4_iB+lyA~An;-9hhTdB))y?Di<4cjzz)Eq{4{+B{>|Af&GX^0D&IG8Z@2Bc$tpDpHe>=8R^>*(;J4SzBFYPF<& zJp26WFUapGf4@H|^|R}L+P7I4cpX9#8;jWsV$u00fiuYA;URp!d-wU3&B60td$ELm zDD|WCIbDQ+1dyn+ERO2{*$aYY8~?UTKQ9f#U>t{Cp_O834=D&`hc=FZh*P(LM-e>? z27-9=Fao9C#%u|p*5-freSecK)cvSC%RYzEOCP>z#!85D&Hxes#c^H7OOXqCW+2y= z>3s2c@c}!gs?p2S=XgB3dB2?Exdww3=OxD3CR9`{DEWfwBAv|U*lbcV*q>+Lc=5x# z+tGqG&Yw`c#8YGNBt)Juj+Jk#*Wvy7Bm-v`6mLT@0w6$H#xQhv#(&Zjei1QH-nj@T z2?!mOnnk6avJ0yBE;5shgiIGyFFPUaFtun4GLC|}7GaIFNx__=D5^?A350jF2Wn4h zF?>z$Bz8~1YyExGdTuW00000NkvXXu0mjf2{t|e delta 2562 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 Y7q$}>)XYm6X#fBK07*qoM6N<$g8Ib9QUCw| diff --git a/public/images/emoji/apple/crocodile.png b/public/images/emoji/apple/crocodile.png index 5121ed13d876b4c2956a44406cc6e5f808934247..720edbc58d34000a2ea149b13454aa78d76ebb1b 100644 GIT binary patch delta 2666 zcmV-w3YGQf9`Y2BBYy!bP)t-sM{rCqK`b;qC_p_aFg++jOEYa~Mj|mFGej&C9uPG` zEJ0X1OK?p*Nib=bYBoVENK`jfdQ?_+QB-$OWsqVsHzhYZCsKJ)Z<=X5J109>J6l#b zFEl1dVM14dS5kIPV2Wg6e^)+MIw?RbRZ%u)m1HbME?tXZZ-1I(ccpPdZ&6TwT5X+e zXP|j$kzRD5YG#&aZlZQogIqyrOj(FvVUc8Wrg>qCSYDHES%OqcZ%a{iOiXuER(noj zn|5ZJZ(xgHT8(EyVL@x8eK%A&Gfg#otbR5^Ek0R2M|W3qs(^v1aXey2NohuYo@zE) zKxutfZ*ojwVt+w%epgITHez#6d38=uUqXR~T_;2^h_rqnGb3PsT2dJla2pzuXjNiY zK&hF5rcp_XJUT{BdAY z@Oy^i@7VM7^7-{Np|=142+c`EK~#8NrI=@1V@DE&k$+GQNF)(Vny_~F%{k|*oHLmj z+yDPRY&G^Uv$iB)_VB>RmpZ4qs$1GxqkKL~l+SPdyt28y{i}n69ioGStNp#~Pf_-+ zc8Z;lS${2#{e%7NTdQf_HL)r=4n=hcr9)AaEL$drMK)&RuD7%Q7EWTPdB-TE6k4KP z*R^f>zn>&wN0BExV#90{^1Rz+>xpViX9OQ0c^KkM9hr_x&W*+vZ#38h*`w(y}RSRAO9yE+Si3OCtk%^l4(mf z0c0ZBPh9|EUWmIq$Mp#5N04gQvTG(8W8NXIoKD9v1p&4k2t)h2B67JQka9nOf`9AE z>dE=Q;~pbZl&RAMgan_B!5XB^b~QX0=)=3-;ie%|vaXwS$8kBq z@WdEEL&gV?-GD8l9=(_;(+|~^#tI#U$0AKYrbBlq7jcHKk^T<_zbj(YfTL=aQr{=! zp}caGPbpdzjKKf~7V04&WEf<_X@5h(h-2KlzORpDEBW1ly|VX}#z=N(C$eN4K#-A5 zKrDs@Fhn5>pz&E_)Th4Zn<(d39_o5yG#b^fE!q7Bf{c7#0}x}ttnl3Y7D_6-cBy=7 zfNopYl;Rx~du; zl*9{$=p&>CihqLnu^c%ktK%%5SAk6RAS>kc4F0#F{Qip$7wkxzIBpr}51s`KH%o zf{b8!8%i1wkgZE_jA8%<2J53Rm@PA@cRUAAw&(T8wV-L7qWU6$c*XM=L3x-gVIjU< zhuh%IwH(XjRDr=-41dm8h7ZGs<)oN@2Pk(khgXE{SX`h0sH^e1Ct{?k<7KA0^&ZvW z6=AzJI12@=bup)aJ5}W%qRN}H&c1kSH2|b@QpiBhdb$BeI}FClH${}%J=)p5+|NM> zm9tjEG;K}?XCjMHz%nR+s3&i6mO2+Oh(F%l&n7;$8>VX_l7BTT4ov~`f%LG*WTvk> z%N8k#=NTUNdg$m>@7G-yahxCeT8|4Do|B}9NoM*6XUTqFHUovU8>_N3s@oh21lW#v zsQV1zEC5t^eLRZ&ejhFxhn7@98quc7abQef_#P+t+(W49i|2w~J4T5SfLgcdbh;hM zeHZaO(gRiCIDek!7=aGO-f%IUp2H`)gR9iWgn-j-ooy4fTqFpJWa_%k@tkX$iezYa zoW&tX@b0d8ytg5tQGYaQv}&nx?d0S$rvwU3E0T_SdKAePtr!eLD*{3c?g45yyKW@* ziha3XZ)_)@p&t}UQWQy18SM6DS{2lQ8#{7`1}UnE_+nB26sJLf_yk+)$0Q%5TKr3Z#V`}t#DYY9Ui75 znd+>$i+}Q|ql?4ii;q=E3w(u=qz3h~TPfg>z%XbyyqQfhMX(J+ot#H~s&6DH_?XB3_2YOr zUM!~9)9Lhc@`Y1sf4n&5PD^<8nC$Ol&{ZwwHuaXjm z#=wE7L)uz=eSG?J$;~FqW#*T|aw`AhROa%<^K7aNJzEW;L5d;Kjx~IIe0usa(i^XEKkW2yO{}cJ@@V$2a Y3miZqtWo_J^CoM1{ZH;6#IVfRx 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 N07*qoL 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 V>3txx3T*%Y002ovPDHLkV1n5bzN-KL diff --git a/public/images/emoji/apple/cross.png b/public/images/emoji/apple/cross.png index 96e47984a1a5d3e093e1b2598f899c53b55db1f1..527fe8bbbf39a25d481c70124558c907977fdbe6 100644 GIT binary patch delta 800 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 LNkvXXu0mjfvf)x< delta 3114 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 Eg3x{@bpQYW diff --git a/public/images/emoji/apple/crossed_flags.png b/public/images/emoji/apple/crossed_flags.png index 19b1fd3e0e90b10149853352e412cc49a7689d9c..80b9f75ee31c57f1556acea3d6dd97fc75ce12f9 100644 GIT binary patch delta 2020 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 FV1jG5g~tE@ delta 3199 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 delta 3151 zcmV-V46yT}5z`ouBYy(`P)t-sM{rC%KR-f5MWus+B}!-3*w~DYkJsJbq;_Qihq`x!YCcm($sQ^k=p0% zB0^dtM`P44A+shLCroJCGbhl~)%f}OvbntE=IH0?>S%#Tj=ZUuD80^*xB*(^Lu`P=I7|j&Cac}wCwHf+%Y8HFeBqPE2|_LAxC7*&(U-j z5h6`(6Y0~dv;$S9BGJ=#VQ_Z9T|2Z z9P{Ys(nvt3s;+r{g22GQ*4*CG*V)_M-~a#r)!W_n_xIP@+}hmT)!5qH-{8>J+11(G z)7sp?%g^iW?bzMl;^pVk*xT6K-17AG+~?`W(9$1GbbrFm(Y?vc(%Ib0(bL4m$JEu; z$jZy&Fd@&=*4p3V<>=|(Db*zGeVW)KNgSXmP?P4U~>&fMa8l7E};@$z+geVxJ0zI1W5pP|}0F2dB? zy(b!DX>6RIp|P~K#&vPZtEx z+v9o`4LU5&DeQ?g@K8TjG3Obba6#xcosTatRfd19UiH9 zd4HvUfr*2LPHu{tK5j{^kY#9{v7@{|^)AO}wPasn4gc zN&NRhG*UBb>SW`{Yg>FDBctp6jk95)*Tdxg@%G9W@tyPNp6ltm@#6R4pNjZ*rIzh} z+xhL}$KSr}Cx47}YybcVoJmAMR9M5^mw8wd=^e*8OhS-= z1-2AWPDQ~J&((UY`grVp_SoJhN0N;skOWW!mJk9FNJI!h&PWIlX<$NSFUY`9H*em&Wy|VkR=%*nK}-OL z<-4BaYQ3^*<%=&qzj9=3Z0y#pk&%&?RyhdTv+mbJZ|w21Uif~0SJ&l{k5OZ<{`@CF zjt0lszUTE2n=iXfqw$(ava3j z;O(EJhzs{MEA}PtU{Fl#+7lb8=GZvs$xL-nS~g);E;FV9dIMdkP&Fu-#swKei0W~l_-VKGsYfiklwWrE0voMhUlwF)&f^nZrU(&HW#1#^bO!`!_O z^}>Rspv?5%Y^Kg^1YfD;!B=ZZvfTqheSQ7cyz&Zb*|KGyqEb^+B@)=4RE{JEH#=c> zVIPI=nwyP*Wb}Lvx^}Iwu&}eHEg?Y~E0w0Fi$o%>h|A>)xps=7_A&H%3=2Tpuhno> z3dQNq?_4-mNPlw>ln^UTm!d@JA|deLBa~VslH$1t4niS(Aswg4Pd~do+}C&KP9K1d z9V?_kZ3N|rq_9a5)H5`{T(S^}VAjfQ|Or>RBM~+g-|yFa{V60HavX2p`@d{yS=^Jn2Vr51W6Ip zs51em5kV3P)S}f*XgkzeodaoO>c=RX|2euD;07SfK^siXn~4LocFQv)XL zq{QOLNE{8IBWMf?upx9Ulhi*OrNQe?i z@qfq{ipbotfS{F5p8beeI)oyi{riza`Wx<^3k)G21-BB4JsJe91hIjo z0xKxZ)6+8p?Zm>L77!{}=zSGk7*Pz;Pm4h`5%9Kpyh)&f$Igwb-vOZkr6HCP()Rh!e9L+CkZf?#!n17g< zwjWfJQ3Gv&3nDiek}IZ?9k(w|J|!#2^;s(2CumZB5wH#d3VdNl)nI2zNe@|kS*j)$ z+k&u_h$S0RQFCrCvM3ZGk!GU1fa)Ux65D`677|Mq5~9!*kO<0?pm3R`Qbp6CA3@r=Bwb($4}W_+nSLyBS+;L_kZ!9bdlF@e4i8BDWD+5nb0W*) zZ_`R>$%cd|NO>+D9t{%EvlpiICBB7Y4+_4r z{9f640HGy9LQwuxY>*{bo`@qM(i>_P&*72*w;Hb_TU4Jv(1)iRC z;cz7&s~S9H5d*z%|5h7>q$~H29RBhoOuM?03cCIz)943l#>e*AM-&Iy=2Ln4%IopQ zh(&J$>Hht5=Z;)DeD6zmOr5`N&3=9nbV9X_5)%&|%q_}4T2b-(6EA*25#L?3eEB&W z9RVFUa0zvI8j)XIdTqK_{z#2M5i5SUXw#-mM{INeU^D2or~U`AF(^1V;^h@{K+)f( p^&MK#(b02kwPMA~5l;WV`Y+i#kydn-Po4k(002ovPDHLkV1j4!ST+Cv diff --git a/public/images/emoji/apple/cry.png b/public/images/emoji/apple/cry.png index b2b7a5b615bc2d65fa1d5175a223ba411a203042..86134be4fbd107414d90cb15ccf606b650c26408 100644 GIT binary patch delta 2332 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 Ay#N3J diff --git a/public/images/emoji/apple/crying_cat_face.png b/public/images/emoji/apple/crying_cat_face.png index c98e77c5299438314ebaf0935e2cb32a865e8fbb..d4b1ac4c47a775088e2c3de395bf8199a202f496 100644 GIT binary patch delta 2685 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 delta 3523 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 diff --git a/public/images/emoji/apple/crystal_ball.png b/public/images/emoji/apple/crystal_ball.png index 48591b12fb7b482803f31c7ab60f522c51b2ecfe..f24101e1fb7a226a01ec49169191c358124bd55e 100644 GIT binary patch delta 3017 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 diff --git a/public/images/emoji/apple/cuba.png b/public/images/emoji/apple/cuba.png index 10c33ed18c8ddbd9ace390b7b3b7bd1fd53dcb18..355d750fff37b4e9a8a89f91830a3145d81f6565 100644 GIT binary patch delta 1507 zcmV<91swX;74!>`BYyz-P)t-sM{rD8YLpEeNMLc9S7wZ8cB2?CW?pWMZVeuE3K(bz z77ZXy4IM}f9!q3&nhYOHXLg)rd7ld%NqRt4rlzHg9x1~SBp*VS_xk$e;YYP{oYJZH)gp7v(000(rQchC<`d#29{-O#Dt)lTa*SD*KQiPbIv_I87X#fBO zlu1NERCr$P)@O6uMi2(zm;yy55~vb#rs3?X?ef68R|dPde4 zJ@eiHyMy2Un>pr~V{$nmNiO$GgdkjBUtJXnC!e-CDSs5Mu7wX_IpO-MaB`A`G@H#j zCZM0FT?q+r_P&}UgA)+LFzg`EoWAc@{j%c_cbbcx&!4ejx&|7Bgh0d&M6HiXwR#Jw z`c4p(chFzYb$(tUM~N@vWUmJx5K+_!B8OA{9`yUy=Y~U1P^KA+1N_<1+Zz8pXx zy?~^kr1gox8a3^yIT%mPH3SezHA$)5@yP1D`+w)Zp~-}WjheFUq(H#9AB>;}5EO#A zRM|@Ke+mMLHTnuX3Z;)n*^Gv&)WISN^9CdzK6Y3PJ~=nZ>NdyaNsuBBCP=M*tXNP1z2}1H}&p-86*JEz6qCW~{WF z!y$MLGz_~|>-Ff}qL+iFmd80wA5AamTq@02J5tfupaIAeB_4kz-Xlu?aMsXqy(lCH zB&7Z}df3AzgB*h5Mg*mXw&hMjcOl~)aet`PF3m~}o2n#Gs!Hvy2Btd?rtL^efL^X%w z0qj_OEp0LRtRak&ezW;)GYg)UiU*4KqXyF<+L(jk$N1^#C&*&n%9PqF21$ACkKsrJuljvvYVoT^5 zhfYF<00tEKnUDoX&gai5cn}~mP~+Dk2p1GAfi3>WIp&yS{sB!Q#1G(V#329x002ov JPDHLkV1npZ!$kl9 delta 2767 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 VJ~}{-C5He2002ovPDHLkV1jf^HL?Hz diff --git a/public/images/emoji/apple/cucumber.png b/public/images/emoji/apple/cucumber.png index ffc1192dc10b09dd67bd0b3f9ca8bd308d90347f..419582cd70859df93ed12beacc4a19b3a3abb37e 100644 GIT binary patch delta 2784 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 M07*qoM6N<$g7gX0lK=n! literal 2745 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 M07*qoM6N<$f+#WU6951J diff --git a/public/images/emoji/apple/cupid.png b/public/images/emoji/apple/cupid.png index dffc74fbaf4983903edd28c922690ed949b28e80..794fa0255694946a2a9c285310cb25ae93eeb8fc 100644 GIT binary patch delta 1870 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 diff --git a/public/images/emoji/apple/curling_stone.png b/public/images/emoji/apple/curling_stone.png index 7b95741c0bedd9c9b4e97d94523993a9e65e99f0..ac7089e8a8ee50c1ac653300e68270c89e76afa1 100644 GIT binary patch delta 2109 zcmV-D2*UT19LW%nBYy!PP)t-sM{rCsF)vY2Q1l%q{cLsjG&)B_L&s@qmy(V2fQ3m( zNBB!o^F>UIi-~%9cYAwz^%NR(b8`D|cJ_LL^dBkd1ql6jg*-YrG%_*%c7D3Kv_e5Y za&mC@FE{#YabaLzmy?n794GyMhxu-G_Eud@OG#h& zXk%YNK0HD}Kt@GFJv%v2PD?Q^EmBibh=hThnwMHrPq3?|q@tg=wXk@9gI{H6D<~$x zy||~Wu5Ug*moYMnJw5zIQTjbc{a6o6sVP$7hhjewJIA%7W{OgqnUmRi7d>20?6e~T%! zW7|d@jC0u^HxMd+iW8u9-ltDN5QJN4nASokxH1t926>(&U$*=`caaa$=A9@XT5^nG z2N(`8`Hf4_$O3)<+oJ|(bkVSLH_{-$Y>}a3y3896N+K(TZ-k>h5R^3w1s;m{>4G?G zI3WS*>3@<~HVa9G^@h5&6Pa$Dh0Q`eAza6cA}M=W=6QW@FUzu?jGDfanVV4De_tKc zT0!e-o(rj7>t;b8m4g2e3i~LSyx`_gDo_|BwXbeVU&~mo_GoAsMpP zg@_^UR+dShVf`XKlev>)VnBh0j3xJtC}grH5=4f9$@=otLv`Bs-vt7&Dd)@Oa;`xs zL||sK!w#TOv7-6hLVau0?%W-9I`@BmtRJV9c+1pEZMVq2BSti3y`m&kuan8c*Tb;~ z?SF6U^=9*PwV1jVGVRzS+Ui@6Fd0HG5;lSCOwf?(dGz}m=b@9pboo5b`O=sFg8&4Q%pdd_ zdj0(R`t>UqFtjY~{6@O&eP(5Gxm@bHD2jRJ-pVNuKYd!ctWjU7xu`Ex(=?YHngi+P zgLl@=mtuZ?eqNrJuHy-N2cb*$iuy3LIWBVk22c%F4bu6N!_&uK85qLK+B(7`fPcKa z_!k~mEgfzWiVj}7wZa>Dj(SdDb1oLdaJ|`VKR9b0dt!43Xy!bMa{<-C4lL!Nj}Fgt zyh-u8or^WN=siX#vqE?;F;YSsqoGu5+_PDbwE+z|?84&Y9Fy#w@0Yo%=A~uk_TE~d zZH7(gL<^l#nleHd+yGr@9(m9PB!8elf#lFeMc%ggyx$xg9#4%0&I$u*l_qJD5CjQq z5UD1GNQcYJyQ$2ku@5Q0b^yp2rNt_vl2j#elB7Wj?R1EDElSZHWy{hc=CKE9>AQY7 zZ1xh-DE4f@0U(Lv_?RTXamRI{G)0Wk*0Mj2gFuetDEpz4QZD<=zLj32Du48*_$=DS z$5^R2CX`q>qcs&LN})SMXBn*!&Ql!p`6EDG&o@bE_HEK*Oh?BMVVXdxqM1~a26upH z&=^7H!mvxsx8k?WKJPt~FP$}TYm(#Xh>|2BJYv!`M2wRH*@X9E@*@K3Io)zhtGXtr z1E!aLoTgIt<0Keg3h!(V4u4ajl?elFQf13=$mb|RYqTe%s+y_-s2zHOGME~VN9oGzcsLEH9dh zAS~9)g3#PFS|oxNrji@H0Sb>+f`Qn8iXu)>MAS6&f?9#gDmZ%Z9_#fWou4q@N(8nt z#&I2ch`AtkXn|>Ga$u+`NGj$q*u{Rc^TG(%doR7PUV<=<0fQ3)BWVPOJ@mk|!9fKM z1V?jQSH-+6*PE-yY=2Fz5UDO@Ag!&LMTqWr7$9;Ykk02beAK88p7|U;;8XJ84BuVM zh0_VML0F5FA^o(2Y)K*~VI=|!u>nLg$liiHXToB(wFi9NwvVu4KuV5KLLD)y;?yJt zbDVRb6lp5{f+Kmd_p+ZxKY8z%ge832cFt&QDgd||#YdFW34hdYGY@9rHeO$DfsDfT z#6(K(Gv9a10}MgeP8iO7fWlT1OPDL1baDfbA+HCTV*WYt!>i%6q zP$=AirPga;z*bz|jSdTQ;JC*JLfRXZ4ig9#0n?f!`}BCb+y3m| z-*!hD02Dziq!JA!N-J=lp6&s;V$y#u;%>mZy}!GA_co?D9PjS#?m^hyY&kB#{5}10 n1#Q0*E@9#y3C;hF`cHoXWW$_RnQ(k100000NkvXXu0mjf?)&gg literal 3603 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 Zy#U*!^hWx_D002ovPDHLkV1leo%+~+_ diff --git a/public/images/emoji/apple/curly_loop.png b/public/images/emoji/apple/curly_loop.png index 2d73f2acee0514129ff0b6e7f64fb3a856aed89f..3375df031abb0febd4937f01763db0b6aa56c58a 100644 GIT binary patch delta 788 zcmV+v1MB?!4WI^)8Gi!+003e$Lv;WE09Q~^CI5<>PR5LR(GBPq~ zXlN%VCptPha&mHphK466Cp0uPU0q#ZU|=yZF=}dRS65e*l$0+oFEKGOXlQ7Ee}7F) zO?Gy6Nl8gYMn*zHLP=8$>Hq)$8gx=lQve??*#5>z3K;OkK7U)ZtMi}W(^!jhTchrH z`b6dt0007BNklMDc#@s`~%Gb5k&@-6NBQWcJPT)Jfstqf%mL zzs$qK!-K9oI=y^R<#ribDGMpvVOdrFVbi%<-^wRfnS>?q%rSR zG6h#}8Y>O)f`1FPk&$baW%!v*^<^5Nn{X_qh?85zYMSc&)>0%5vOavk+QmykOfW zR|h&xRRKuQ@3Y80XkMK+c~AYlF1GFfLYPjGWK9zojepggA~@{5uA8nz>@HDR&!Mpz zoQKe3hS1<_6I`Np7Xgow1l-|roWNxwnTJNbJ4HHls>~VybiEUzJG`n;0n_dAo5#he z8`pOi3c%Pb4evqf{~o&Pd?usPJj&(4alQ)M;ZK*Rcq+*r7@H3{Hwr*j2_hbKK5P$Xa?V|C0if)r`-7E3B7gi@~V?{X!f>8u|S8%2yw%;oS12I0*8hbL=X%P&| zk@)3`q4JBvMQ$HXaTDNoeT9pQ6N%_v|16@QDE(*yCWz!edc=2Y40?d8q2aVTa*mKu zp*^et9ud zsz5-(T10EE%h0s8@`cK_U)MMvEZu}g4y(26APt_MgCz7e0kI0m0jwdY*^@}sl}Iku z`R|Coa_MNj)g>T(fza3U+56=4b<yo91)cq89v&VZ{s2$wN?5be Srwxn%00008Gi%-0095wd&~d;2E$22K~!ko?O170Q&$v@3d#}`tt=z5MD{%k zi&+RHd3o<8tOk%R5D;Z#s{xs!Ri|jNDjm@lMJ$y%RfkF)TA@{|ql}`KVyD$=Rcf`Z zI_^6HuH3%7+@wGYJe*)>+I;s%lK1X8`R=*roO|w}(Tp&{2!A7tFv5ucJIt)D={B}@ zHuko5bQ^1HngwkfW!Z5wiviMRugt@0suRa6#rIwRt;{{_R`vgRPIhKny)gnRE@lj=_XhS! z-mP$e01V*dkbl8}0~ClrSP%CK`>@X{SJ^a+{#0f}dRH)8xmUw_M8wR#vYKxgp)tId ze>3O@zYjblwDH4|nKIE$8E}BxC4nk1LMaNQaG=C*3{sR4pAsPGVz>GgIx|QzZXQLf zWBhJ0@kaOe7^$JZJPzcpP+CV61@g=fCdyUOZYsv!H@TkWF}AYTs`xiMj=XyAs`AQ zgL$3#7Z-e6bWpv&uqD4Or$cprc5e)!NVj5?+!h%Ke;L->*P>!VUIr8({pGxS1s&?P z;zR2F>VJdzZF4WBKUNSHLdj)m=?m|$R(M(spfk!tU+Y*lb8+^Yb*giUu1L5j84&eGY=4O8AAhd4A?Ib}%A!H`{UuG+%6iAa zx3vE>dNFmGD3gEtPh1;naQ;e5cH8 zLx^=|b(e45!u^d>w(wR9y8f~Xs`snN&hT6+@|ETb1gh<^JsKU#mNM&pFP$c{k0gN7 zAAdI|0#ho=>=@o#xIHM`CNW7!swXGtW^Q(Mq@t%`e0FO5=_sJwTQ+fkPooEy@7m=~ zEmJvg1KY%;`)gxS0dg;o}Ph zG`5k0yoYPnec`&uEq#Nc6NjWUK`po%9DhwsW9sB=Ns;+09x06M;5*vz)+C1nu&kv{ z49L^1VcZ-vxizv+zWjLS4Rf{Sv}<+@1EB8eU@Y5C(%z(y_JMFL*hn} z4nr7nTbpk**>}O!jTwIrfgIDMxiL5TSm}BQca-SZF_`T*q=SRP%XP?LGvnp*Yk#;t z4TK*Hb{q{pCO(@)q$_LkYr(Y|#ZZ&+Wb7se386r^ZUi+HRk+3Sx@GX3%6V8dtY@G} z=wqFYkjEm-(0nEY?!(}ACG@Ub2F4600LCEYXs?cvcsIw?pnP0Hxp%ep!9o5{jkZ)| zxDMiTI3y&!g|G}t$nR|g+9&DR3V$_KDc)Pi3k*gZUTjD{R?J2m)_z&PR=86Y3-S~G zp|z0=#MGx-8jR0$hmcb^+_3pO6DdbbgbBAv8)q1p)t+f@FhX7)yvtfbkszmHB$7c@ zQdkkhUzqP=FhagQ{A)5uC~NshB$;avNGS35LRW(k@?`KYYAqxK$(17_RDZ3rP|De2 z!{uvVdtN&Zqb2rp+8D}$Cd_7SC}2R-_{tFZBIj{^a@1Wdb9b z{fm~4gqT@;`Xi4~Dq^J)*=-EARfqz3&n8wozf%fy7Xb_u+^I^XjV=-s;x5Qxk4W2? zLVySei6H_A?1EtAvlvivwkGy9bV28Mrqsv1!1RqPT~7^zsS^Pa#INk<%Rl|hmG*j& zN6%Je992A(!~3g*yl^&3$bo_=pnSUIaFz0uCGB;hbW*W${?3e!*^d-JL0qX5Kq4{H z9~Pc}r@kg-&%}SFg$>58b}AE;#;Vf_Gu4@k(%y^N#NRU=j5Rj*jWEIpBaAS@2qXSO Z_!HKjB7!9)Ctd&m002ovPDHLkV1j~*UIqXF diff --git a/public/images/emoji/apple/currency_exchange.png b/public/images/emoji/apple/currency_exchange.png index 9de609698001752020a88f807d7a33fba49db957..00e17d5910ed10fb630093de29ef60ccf3970d8c 100644 GIT binary patch delta 905 zcmV;419tqB5tIjz8Gi!+003e$Lv;WE076hqR7FQ{Oj1%(Mn*)3M@L6TM@L6;a&lT)T8M~zFxOY2eG6Lm%sDUm&nZi_lWD-M#!)0GIc2t)NgHYw z(B!=mjCJ%`1b z($pqLnRAhm$@7G?0wF0f*Ev~#ElLSeZ_An^(tKOw(^I!Qqa`v{9!Fmj(e4&l{fN}} zi@qQdln72&t=QCcDFQ_s!3(3I^*Gvde*8ueb8ZwBynoZSdXeXfB5KhyBCpVfoQ2)h zwG1^y)B@u))GiO@+2aUwAFwd?)36|IG7P%AjfKavUu7@TY`Y%;S#R5I*MPAVlQI5ry|3xSYC<9-;Sx797@n}5e%iyd=iCtj~dcKO1?4=1RnMU4q_oEy|uE;!J#4 zxPK6}bIVKxjK^QN%m{rYvIUb)%@#h2II3Kh+&_NCq%uDh@iM7sQu;@tbY40j69u?0 z%IB_UB$EEVsPvC@NJQecXxE3MB9i8==&vW0#|l~ze??UFGx%j{L`EVm;!1Rw`c}jH fAzJBw`Q;CL1Xw-eF(EVn0000Rk z(v&~qgBVHOUA}wn_kH`|vDpQ8K~bo>u&e?GYHV~P8qwGc*a0L?Oi)k+O|%+E|7d6? z#@Hl%q&{jpVa#YMjS|#?S`@hb9{c!~eX+X+GgI!F{b$d;=YRX%d(Qoxb8cAJ=olUU ze?#{$M5!aykq{*t_k#e0%HROBp#5}frqcgx{2Uaf#Cq35yk<5T6A~c!9ZP6}iH78_ z_BWS$8lR;J9HXA}tXDtE9x~R3ctX&E2@pio{Y#7e&83sz8=8mz86bBpGYOhiWbw8U z1jM;)5&jQw=YNSiQITuRQI9|!5GBd03N?myi-1)33QYcITf=b$Kc9ni4{C9u<8N3en7KZE;VjWyiIrt)zgc5ER8 zK=UG?(QY7>WRMk?Rv%lltGuD4d3n3xqFUlWxP`So_^`EoTFB+isi-+CRUT=;Mr{@KGE(AgHrP4kqUI)014aWDMGbIH;na zUe!y!&KmCz8IW!)9HJdd4fXC>C-oUkXExCf@M0Lqd)aFe5oj><6B>hCX@^VT?+fO* zv&<^lX6?o_US7}q^$agu6bFsiErNn`*?Jcfmw%y#VPMMq=s;|6IcuLMI6(p8(&Htm z3C?gIoP{>@8l4HVWC_05#{s9--B}^<5UW>Rqa8$OXA;hl{cshX$A_U3vEC~lS%P8@ zMJO)hDG#FH>@3@U*>8JiL0yynD4n0MebSUiDBkI@}8-dfn3-Q!JidY5et zB7c{yp1OQp-lthN(zzoRuQ^4AIFjJQv|C8$#;-MQGj7fDE^in%B?X!7>tfd=m#nnx z`sJT;ZoV|2BD5r<@xl=J8=gDj6?OZ#y4Y7|y^>S5rSL@V*BN(N7f9%YI`V-P`|nKH z@beP0@uc#uB&u$zT+Rsph)RJM=y~)!G=Cqadb2b?I(1I!JV>UVmoLbO_u25E0#uKF zE65JzQcvB1H70Exci(K6SVgjyxLo1?3p*j5 zrKq9IoDvH)bia5$6j^-v&1oJIbd95c?V&TJI>nFSBU;!BOUnPS@3G<3(hZE1ZEnII zFv2Y6DVUl%ok~Ha@CgixS~<~?wSNsH+*1jRKVj?z>{sk`Cse!>+qPor+%bE2x$LLR zN34WzI0J+5Exv%xK?hvNjyhY;b+Y9r-@_vsEt_a7NeuWF7PgXm_l?qF zU+>IB{m%40T2k6$n}`K}D(8P7hQST*H9z4a#TxN{Z6`el8-;LKfUb#f^navsdwU=c z7scaEh9$q(f0rf{_D?CA2WO}-;RUiru*d8m0)v9ZC$#=X%{cVvnLag=$>2=v~#^`v6EdotD#+Je;Y8720m8NPoNhp_%}%y(d6OsAo1c zw#IqB_B4TE3*WT_bnQI>qKJW1)wMq2B@vs!?STO~K0j2$SJoP1NPzgpr))oo@LFve zOdUo4FkNtp`Fz18x?i~VWZBiC^HLqByf>t@-i!zukR%0E`+v4_js#efhotl5@3Q@fVtIZ0kbc3Z@<)Af5)R>UPEH*^CZafW%$yGce@=0TTMCy&?_f zCTrVSdjr|Xj3048Sb(!}x042Q67{v}d$w4ru!fH?Ab$nV%Jr@^XdS07O6wFDxrbUb zqJU)EvdM;KPdRHL%KVIf0ieHGnB*T2>f#%4CUijBy7h;>HNA!>Gmhy<*}2N6{hl*R z-%aNjUP}trhX}|#bDNJIJUzy&d3(k%9RJutZN4GTkZ)M=Y}n`+9iwA({NTs`08kD5 Vj(cd}GYkL#002ovPDHLkV1gRxGB^ML diff --git a/public/images/emoji/apple/curry.png b/public/images/emoji/apple/curry.png index 8496a72e2f43ff8bf6ea7126a1e830a27a12d7e2..33b6c66d3f02a716f2d6093be067d5585bd061fa 100644 GIT binary patch delta 2088 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 diff --git a/public/images/emoji/apple/custard.png b/public/images/emoji/apple/custard.png index 09fa1345a2ab8df1cc3b43ff2e473587ae0a0c69..1850aa2cacabfc1e5531b7412d7347b7c092ca73 100644 GIT binary patch delta 1781 zcmVlBFJ0}jc-NAx~=Gq zAET3loQrz1O(T?palNskuAq^so{qJtnyQ?P--I-i=6|nU%fYqr!F9=g5&r!4 z!E6%5iAtk60<=*B!;XZ*sD`1Fgo8pjhIC=xr&YFuVY501ohS&K8v}?I1?}hD@$2HM zEd{?u1<|vV(wmLPT{7#dMv@l9G>)E-=nPsqS zQl(cx?73{%(0|3xk0SKSgV~lc-JVMK+@aOX!RoYQ=)Q&Z(2nEX)6mDe=i%3E2LX?O z(7ONt03UQxPE!Co{{H+S{r(O9I+uR^U68;}+pOxZ7#F?pdMumdoM`JRmxn5FB40o~JKzTMEJY07zmaaU_ze;>-} z1CwqkLSll0bh1!<7oC|uX0xoz%h(zy+|fESJ{M+6VjyL z&1t^H<2Z`mXSbz2&89=pt6D-6pVc<2BeO>kEpa!hHXavFFST;(G6G zvJXv6Yxw2y49;}EUeCW<+1c@QT7aY|M5)}AdV01Un_&PtoR5BO_3`re%g1W{DzaXE ze1E`i@7BFP>udlT@k)f0(>D%dVHm2ab^ypY>}Gy#jW@r@pfZ2A20d^($IWRt!b*ft zTECLg&kPMs)4c$kgVAaocAMGOe4NL5e+T70>(3eu35_HaB~rSsYP#-uUJyi-Lq@CF zY#Qh8aprG(CQml&?;D+CrvVZ|V-8VB^nXpx>7nH59Em7Zrm|71`8%X(9L~FLx4VJh z3pf&*j>iIuAVmRHDJaN*vzUIuh&Tk2NULRho_9Os66iF39U&B9$P-`qx(6sSge*o& zC?ueSIb0kGbzuEhuj33B!VbZ=2VN+W5X~&sedBOx1Xi=zGGeHkKpPG%2s#-0gnttX zVu)lG^Q8ffA)N%eZL~S{=i?EH0=`6nUVKQU6@)MVy}bjJjHvlDXaW*K)@nr1K}mm3 zr>aqa{ZLafE9(Mr=Bq~5dPF=O0+JV1Q$`(fu{3#ntzTEgctN^W;Ljt5kd(me7=9)Xfm)?#6t*gR<&ZP z>S>;?iSL>6W}2OrbQ0+E0(CCXZ0|vub6*mzIl?0@swC(Lbk+^NNxqLJqoJXRCswS?`dA{Sj z2xFQW!UYkMf5Nr@#f_#=R;HOA|N5u+56dE&m26y=!`Lx&|)qr#7A01b+05X z81{W`O^)5&83KKdlfB=AnD>t>!nh+K=6ZSQ;Fv;}sep*!q?SO*_&%^;AY<0vD6?%A zC$wEXcXdeKRdm zDsdyBxQvtvIGtZog>Dj29eMAK<6r;*CCF5O`8p5jT$$)j`wt$;#3=rSMVV4Q9W!5B zg?y<_JjS&oZPy7SrChmHzP9etgfovhRU)AIQoPrd-gS55u} XPjx+n;t;VA00000NkvXXu0mjfM!a;L delta 2910 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 IM6N<$g8LlYs{jB1 diff --git a/public/images/emoji/apple/customs.png b/public/images/emoji/apple/customs.png index 3aa094a995961be99f18b3e11df650491124a5ea..c514d8357605e91f84b3a39eece0599cd0ab4b10 100644 GIT binary patch delta 1149 zcmV-@1cLjX6p;y#BYyy9P)t-sM{rC4QK|q@ssLJ?08gg_PNM))wg6MV0AZ*ATjK&@ z;{jFE0dnU8f$0Nr);^%>7mDaxuk9(7=m2`@cfRl{c;^5A{))!(+UWN2_WDbe)t%1q z$=dC)y~+V<=9R0$0BF5%r|*QswmAR*010$bPE!DvpV?0&+JFB3-$yw_000BgNklZz03`IkLP9Ef)eaZ6wKUvu-u{=!+PLAyvjPT)#;S{N>qRgVG>eFw~a>)i= zrYV z)92Fojq#?EzJJr1JWVd)1ewm%7S?pc1k1zEGrhMa_CkupEt|FB0uy zmyR=7UW_8KD-t>}4O+Yw9YD`x1Vx-Ik<%ukL`sfGIDcS>*NL3ir=4z*Nxa#bb7~#C zZFJotT&xMl5;^CW_6|n;?cLnnQ7WjwSjl43FvND0%=d3EtXE zDE)?gMq2cbhe#9AN++>hU(JtcvA|!(MaKX&592uW+><7Pqb6vTZ6Wn!CIU(0DrHMs zR^y2v41b(7;-t&=_GEqF9)I%|wlWv-qp1l(M=SdoTYzcl#uc`AG7+%TKs!Dp^9=S% z-UYUoGEuj)9Pe;JafVKdy{{83-=;EDO@vCX<74XPLtPUfhQ|^GYV~uFS4;RQh+YSQw4~fB&0auxqyK^YcaV?Y1w-s) zj^GOD*P6)do8JoUPId((I!hu?vIuW*wM&cLC5g_bi*o_|<^_X3+U*~&z5=?O#&!uH zb*a@lI~WU$p^c|{x2>q#?W=&!@;`(NLOLMatY~mYKnOIPMB{WQQZY{>Ku0bI4lZV- zaFhem1k#JFVknxxQH=vab@H3CYr0|V{;Zo^cu{UTTO89^STAX~G->_;P~Av}a=$!p P00000NkvXXu0mjfS}hsJ delta 2582 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 literal 3738 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 delta 3075 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%0DbZDEUlA zF27|j`Ss&ipq}3Swqd7H(+hVCVm3!hkoC^f0cM`YzZ_|Kx_`qzOpSj z8QA=u$P#!AZg-e_VyPUy$J`|j@$)SvS5rDVeyi0m5R};M>2aYF0Kc_g`YMvdGCqsd z;8m%5kq0e%;@3wmC2J($e}!aq*C^D(8!&ngQvZ{gS0X#v&D>G)>Pb$g4eCg#Hvn2+ zTJlSwGIC!z6@^z*=@hW!{D$(>C(fec>l&a^6|tSHX#oMs${MHU1SLK(v{DrLv35VL zv4j+Qmrs}nVIaN7*3^YZM^J1?Z=Gqbwu;z1zxr~&#kB+dKqKWd$>6ymJ$~FAydJJl zbcK!wkEz9`=xB!ibPSe^{k=k=A_Qeq4)R~RMLeA;YMIJ?O8m}8tO(m4;mFNM9L1a; zdu<<@pz`|h!G+?y1dq46!X?Pnk5ab^coQrjc3@Df1rRPGo(cG2Nx^%3%D8$Cbsp`F z8sWOa6-tKA-Bz`p6@$v7h*;~F2(}YMIUCDkRS3WA!KA{HqGoI#o$W!o!qI1w(5p6crK@7H)_&qR;%K!tnF8wbBQ(F&b~m{TeLc;t4mOW>s$ess_)=dN|cM23>0P z^tr4nHpqDr@H{?P>u#tHZFEmK^+a}=VOkE8JHVO_f0m}728;LOaJiPBZ#Nki47CeM z@zOVKgYSRm<{#`B0@?y-d{&@lZYiGDZd zl8CHmfq5w-{IadBRU%U5R0>xth|PqkcIWPHXXnU>V`a^|8#$0!6Y1g9+=5 zL;)y`cFFPSUmwB?zW2>5DNXIHPP#QU1lf?usbaSlM+KeZCO0UCk6VaI4@F*(+&pjY zMjQLKg|H?)ulJU{cT3+h0*I|&W4PvVPZ`zgq7^J%fjS2PJxBd*&3YzPik J3`_s`{{m}!y$%2X diff --git a/public/images/emoji/apple/dagger.png b/public/images/emoji/apple/dagger.png index 14d2efeb12ff86304230f2fe32c513e990804abd..ec5e7c457c8d8b3f361448463ed09a25e8248bf6 100644 GIT binary patch delta 1062 zcmV+>1ljxM61oVGBYyy&P)t-sM{rDjd3&3ntF^w#ps2Brjgpd(m5ham#MbCdOiiY$ zvxa_wp{TQ+p{k&yu4iRukByRUX=_kVQGIuLm6V)@et=U^Q<0FDP*GI6%GkTi*?)9( znx3X)V`ViqH-mS0laZLLx5JQ&ke;Nkh<|~Ynxm$#yL@kNTz^^gxCDc1X@Jlj%0#KeMmz4I%_6P$;C?` zGy{ioBlRM1OcCP-ipxM~cCmTM^XpXxwT9=1rlY*R-?P^!B+j;Kx?9J1X+}91|5%^{ zA*5}I+ilZi#Qx5g$JH-XyoNX}A&vVOwL*Bx5TY;m-+#6W*WGTdL(OK?JXV4##Kh{$ zS&+7IZQEJ2$D^P%5==`z#SiC9+S{#jU4c#`pN&-UQW|qkhB5C*-`A~Cnry~y-i~pe zUF8M$PS>YtJ7UxxkA(2%L`{8X?FP2+(N{w>-Ot8vadbH#Siq0VsUrlwucngh!*8GC zXy1?y(tq3tX}d<|Fd)yuZ-g`;^@}Ks+u(_BtxioZwOt`OdGmLolOuhmmWaCA2RJ+D zio$_p%VHmUJLx+(R_Tf~gakPAPe;lEGIngSh=8n$M9ryPp3X5iGVM2^173irr3ej9E{_2(i0_qEs&}#=CteH( zSea#6sZ#*F2UJzoB5-o^8sJP;wy;+5Jm)g#4{E${RYgr%8Xa~&kru9?h8roiNr;o| zoU_tMjb7qOSRhhqsYU3uOL725GxQRA>5{sFF%^CbG}{#dEjHozQfZ|Yo1v@F2_GHO go(YFw#{bLu2gdn+K*0@!tN;K207*qoM6N<$f(R@Od;kCd literal 2406 zcmb`I`#%$k8^@PhrKokfi0ULxRH|>ZLUq=%HN+Bf&;6217?x)4jLojh7=|&1xo%{b zxtGgalH4!3rQqjO~uu(D1eG~ab)!BJm3^JI*t<5PY&n>L%9vo`w8!zFvFtZDz zL(x@&)~wt@Ymu%lkeI?qKie;qf#HM@mUy=<3}P^^9;T8#tB1 z!HHQ;*-J(`Gb^_wEi*5h#bxFeMPQF$wt*=!7RO|jP^t9bU=$fgDlO-c@WfA`~Y+)JsBCL0MnT#hJ89g9k@fCILxae3aDWzp#@}$b?xX{oPN-Bjw z<%_yI-pzK7ETqyhbMnhFve>M`ik``j{qH3Mb1T&?z1-@i-N56~XkpiIbyH6rMnZ92JD(@*1W$c52)D8ajt8EFNFd z(qb1D;}QvnfJb)eH??=;DD;7m>Dai0O1_|0*gE{zre>>$)$U2mg_t8O00&in?gt*- zBP&&`cwABC%C}##Pok}^ZOcC>{s}twLgcfT{OrO7tA4t9`c0eX=Rezu*AthPH;ckDIk3hJtAD)N-)UVN8z1Ly zZ94KQ7ssCuHT)YdNhOd!iF?1iU0D{<^QH%@Y0Fu?!>@n+pX;aIk8BJ8AbZ^i3bC|l zUm5eVq**HgW@YXf9X<+u1ThO-6~SMA*5|^@F--0-LilY)IF8X^#7n4m%9xrk>bDPs3)kxKz z#~g%etgHF%8I6FEzF#?`oVsQze>mUz= zN>nH>bcu=0$SGCACdzU&fOxU=(f+bh>wy)t=AHGwCy#xwM4~v zt0Z%$PsN(e1|#|fXCz$B9gSxwc7qjT5+e^BUo91Pe^}8j@7>x7D4Kh;buegp@aL7K z*{c&MoPn^)E{NVcoVfYb$qtD6rm7M3y{|P#ar|QunLhc|onKqYxm1VLegnMWv0-gG zRyM}H$Uo$p4w`NdE}c9&%VE4&^!Cf$LL3`k@;x{5#6D353?l1=n{HhcN+!y|RVRQg z{RM1;CPjPNkMp%(Mso;(ff_~mZI&YymE@KB$;KPNvHIJS!~WX8g@9^(ByW~G&+3j& zhXfS=YHbtuxa&+L8QOA9zW>vtb-ez&?{wvJBsk&A+yI*1M;MYe29 z=DgYLNiRZ*g^8yuucC_D4~3snI=J4{Om0W+ZN_o-Qy0!Jrk^}|Jw~`DuM^t(qvTqt zN}b4$5_0FFGCU`M^+x7MC@$mH!fKq_@{!J!&x+LuVqG(EK`N*o`?mOqVT0)3lMl|M zuDB~$>u!6!#wPpgc4)C1O(A)6*|AmuVq#4qxZ_`SQBKjwX=PrVj*8|{qQx=fHl_J1 zr9boQLVf=#Sjok6%~qxwrrtKY&Rt_8)H%#?uxET>!hk}}1!I^JUD>JE7md_eTNt~v zM;c~p+&(%YkFLMky9YJDlx71p2O?nBaOOvgm~0v1JtIv~SoX}>#h14QhjlBTDap4M zcjzsv9-;gSy7<>`wo{1wE*wp+Vrco^8K*kgF(cMRq|!YW;#AVR#G3u@jF@n`YpkwA z_O={8v48UV@i!+y)zNoVUduF8Oa-^;Xh`YfGPKkl!C&zV%3-%d)*YO^_6{r6@b%Rc zrAhv#hEgHa1)R(|I9$9BtA^0s^Hs{=aweheiV8$}_Z3v{4(E-(2n~eFA zgdya&9FswXsM4&}4fpmRsAsyKJ?!0{+}NlN(cg{}kG%2(R=De?oY0wid3FC-#uxu4 z>|IuZp~?N5nD0<$4P;o;?I0H%L8)zm=|#!}_Y%@f=|{O0jWng~y_7}P?y^f|BfAa1!`}!$a?qzyEgb;{ t%W6xD9Wq1`u(Na3HLOIPUBH-YEG}^{@HyN03#RzT5-=g_P_dZ^~(SN diff --git a/public/images/emoji/apple/dagger_knife.png b/public/images/emoji/apple/dagger_knife.png index 14d2efeb12ff86304230f2fe32c513e990804abd..ec5e7c457c8d8b3f361448463ed09a25e8248bf6 100644 GIT binary patch delta 1062 zcmV+>1ljxM61oVGBYyy&P)t-sM{rDjd3&3ntF^w#ps2Brjgpd(m5ham#MbCdOiiY$ zvxa_wp{TQ+p{k&yu4iRukByRUX=_kVQGIuLm6V)@et=U^Q<0FDP*GI6%GkTi*?)9( znx3X)V`ViqH-mS0laZLLx5JQ&ke;Nkh<|~Ynxm$#yL@kNTz^^gxCDc1X@Jlj%0#KeMmz4I%_6P$;C?` zGy{ioBlRM1OcCP-ipxM~cCmTM^XpXxwT9=1rlY*R-?P^!B+j;Kx?9J1X+}91|5%^{ zA*5}I+ilZi#Qx5g$JH-XyoNX}A&vVOwL*Bx5TY;m-+#6W*WGTdL(OK?JXV4##Kh{$ zS&+7IZQEJ2$D^P%5==`z#SiC9+S{#jU4c#`pN&-UQW|qkhB5C*-`A~Cnry~y-i~pe zUF8M$PS>YtJ7UxxkA(2%L`{8X?FP2+(N{w>-Ot8vadbH#Siq0VsUrlwucngh!*8GC zXy1?y(tq3tX}d<|Fd)yuZ-g`;^@}Ks+u(_BtxioZwOt`OdGmLolOuhmmWaCA2RJ+D zio$_p%VHmUJLx+(R_Tf~gakPAPe;lEGIngSh=8n$M9ryPp3X5iGVM2^173irr3ej9E{_2(i0_qEs&}#=CteH( zSea#6sZ#*F2UJzoB5-o^8sJP;wy;+5Jm)g#4{E${RYgr%8Xa~&kru9?h8roiNr;o| zoU_tMjb7qOSRhhqsYU3uOL725GxQRA>5{sFF%^CbG}{#dEjHozQfZ|Yo1v@F2_GHO go(YFw#{bLu2gdn+K*0@!tN;K207*qoM6N<$f(R@Od;kCd literal 2406 zcmb`I`#%$k8^@PhrKokfi0ULxRH|>ZLUq=%HN+Bf&;6217?x)4jLojh7=|&1xo%{b zxtGgalH4!3rQqjO~uu(D1eG~ab)!BJm3^JI*t<5PY&n>L%9vo`w8!zFvFtZDz zL(x@&)~wt@Ymu%lkeI?qKie;qf#HM@mUy=<3}P^^9;T8#tB1 z!HHQ;*-J(`Gb^_wEi*5h#bxFeMPQF$wt*=!7RO|jP^t9bU=$fgDlO-c@WfA`~Y+)JsBCL0MnT#hJ89g9k@fCILxae3aDWzp#@}$b?xX{oPN-Bjw z<%_yI-pzK7ETqyhbMnhFve>M`ik``j{qH3Mb1T&?z1-@i-N56~XkpiIbyH6rMnZ92JD(@*1W$c52)D8ajt8EFNFd z(qb1D;}QvnfJb)eH??=;DD;7m>Dai0O1_|0*gE{zre>>$)$U2mg_t8O00&in?gt*- zBP&&`cwABC%C}##Pok}^ZOcC>{s}twLgcfT{OrO7tA4t9`c0eX=Rezu*AthPH;ckDIk3hJtAD)N-)UVN8z1Ly zZ94KQ7ssCuHT)YdNhOd!iF?1iU0D{<^QH%@Y0Fu?!>@n+pX;aIk8BJ8AbZ^i3bC|l zUm5eVq**HgW@YXf9X<+u1ThO-6~SMA*5|^@F--0-LilY)IF8X^#7n4m%9xrk>bDPs3)kxKz z#~g%etgHF%8I6FEzF#?`oVsQze>mUz= zN>nH>bcu=0$SGCACdzU&fOxU=(f+bh>wy)t=AHGwCy#xwM4~v zt0Z%$PsN(e1|#|fXCz$B9gSxwc7qjT5+e^BUo91Pe^}8j@7>x7D4Kh;buegp@aL7K z*{c&MoPn^)E{NVcoVfYb$qtD6rm7M3y{|P#ar|QunLhc|onKqYxm1VLegnMWv0-gG zRyM}H$Uo$p4w`NdE}c9&%VE4&^!Cf$LL3`k@;x{5#6D353?l1=n{HhcN+!y|RVRQg z{RM1;CPjPNkMp%(Mso;(ff_~mZI&YymE@KB$;KPNvHIJS!~WX8g@9^(ByW~G&+3j& zhXfS=YHbtuxa&+L8QOA9zW>vtb-ez&?{wvJBsk&A+yI*1M;MYe29 z=DgYLNiRZ*g^8yuucC_D4~3snI=J4{Om0W+ZN_o-Qy0!Jrk^}|Jw~`DuM^t(qvTqt zN}b4$5_0FFGCU`M^+x7MC@$mH!fKq_@{!J!&x+LuVqG(EK`N*o`?mOqVT0)3lMl|M zuDB~$>u!6!#wPpgc4)C1O(A)6*|AmuVq#4qxZ_`SQBKjwX=PrVj*8|{qQx=fHl_J1 zr9boQLVf=#Sjok6%~qxwrrtKY&Rt_8)H%#?uxET>!hk}}1!I^JUD>JE7md_eTNt~v zM;c~p+&(%YkFLMky9YJDlx71p2O?nBaOOvgm~0v1JtIv~SoX}>#h14QhjlBTDap4M zcjzsv9-;gSy7<>`wo{1wE*wp+Vrco^8K*kgF(cMRq|!YW;#AVR#G3u@jF@n`YpkwA z_O={8v48UV@i!+y)zNoVUduF8Oa-^;Xh`YfGPKkl!C&zV%3-%d)*YO^_6{r6@b%Rc zrAhv#hEgHa1)R(|I9$9BtA^0s^Hs{=aweheiV8$}_Z3v{4(E-(2n~eFA zgdya&9FswXsM4&}4fpmRsAsyKJ?!0{+}NlN(cg{}kG%2(R=De?oY0wid3FC-#uxu4 z>|IuZp~?N5nD0<$4P;o;?I0H%L8)zm=|#!}_Y%@f=|{O0jWng~y_7}P?y^f|BfAa1!`}!$a?qzyEgb;{ t%W6xD9Wq1`u(Na3HLOIPUBH-YEG}^{@HyN03#RzT5-=g_P_dZ^~(SN diff --git a/public/images/emoji/apple/dancer.png b/public/images/emoji/apple/dancer.png index ddce15bf4b6afce2cb49efd76731123948d8043e..e0cdb72b384d37abe99a1c6ada7af978822fb62e 100644 GIT binary patch delta 3369 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 delta 3644 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 literal 3630 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 AZU6uP diff --git a/public/images/emoji/apple/dancing_women.png b/public/images/emoji/apple/dancing_women.png index 02dfc271eca4d21d66e3b3c45247866de339ceaf..ad46e9bda93b3ecb0094f1e85604718b3a797044 100644 GIT binary patch delta 3626 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 delta 3644 zcmV-C4#V-Y9K{@vEPs+(BYZ_6A|)(~R3suJCnO{#aXlG9Asli)9Ay>Ay|Gi!io+E%e1p#ga8DC?=$8C)lSwi(e{* zO(W>MNx+9MB_}JVfiwQ%eV=A0DJds5I6Bs&Jl?ND`r(!0u|mCtE~|Gf)S)}$w??^s zEZwR-EG#T9GJiDl#7*qKOHxcdOF%2kl{CvO>IqEbh-<>c?60*JJO@ zR@tsd;ju&{BqY|PJgIOg*rq+0Unb|dM|oT;@yb@@vOIiXF4v(sFD)$e&tE`1FMD=e zr*0|Xyh-Z3OP^^dub)(0Nh!;gHK~R*Kshe6h&A=vW`CcBI_9-TNkcLB*kP87W&GlZ zPC6!#WGN~!K$3VjZe23;*<`w|Yo~50*S~9ugH>2UD_K@UMn^_PMnpqJLo_usK0iI> zw?a2LH{-BBK|?`1JUT5dFGxy9;Hx`8LO=M-QNDyOg8>oHpI3Iy*l^>c&y5b}P)2GxE(=q;M$r&{y}{XR&-OoMH15t^ z%9l9y(_VN;7=ce3@X=n-p*@mbAnd(PfNwsGSbrV+*IU(}IBaQKYF|F>xk2&4O1p_O zz@t$0(P#D6cV1dbtdBsFeLuaLJm9)gX+0DB=b!M!Rl1To`QeRL32|Z>XSt*Y!sJ zIP%?NMNnVVfA+?J$K%l&bL^Gx)2l{)AJ{K`YLOxIvzh)#&y4rI;fGV!znr*lw<@JDHk zaaPW)jK3fnHj_r13h;P5ZXAU&f?x+&Nny+&AOPH`0NU6uF^LFADU|O*zF)Iu&G-K^ zF;}9wOdIRH90B~YiZXK;?l0~}*?)2KLPJB}`*tRpK_akpp|7Fg!uvi7a~U3+i0~cL zM0wND@J7yby0RPv@Z}sPlil9XoBA_>!Yq$Z-2gCjztu5 z@IkjuU9P+?5m&2PTkZ`7jy(U8SE;V5t*jP{yIWsAIFI4d$Wz@KKOIz}R~xG(VsVpX z?hv5YHchpzM5?Rmxd*7Kt79=-TClwUR+rpUHTfyyS`g?)FIzx(bpc;#?B+mxWsk8M z08XLu;6tvP^?c*KQjJjJr+;hywnQopw*k0a5;yDp9`Z^#1u(z)+h((P&n#4?!zE=^ z<_9eb4TqC#>`<4f&9--25U(!FH?}+k`$EB_xZ1bP`@GP2+)n8``MV+d>7C`qo3CqHIh@kI*MGLWtumiMBRaeKZD&bu!@0+WLVwNU_B&mbiN>A%|1IFVhFx5Pg=bEUy%DghEwm0r(>= zuT^evLnAs-pI=qU;eTWZ;eref2YRmO28P%Wnf=siU@1c^2KxogwYschs6_FQl&_X# z7~@{V88Zr+l_h?aYi)?A(t3SKM$X+AFM4t~Qf0HB>2kh$4uT`h;+v&X zsSQ!MgbJ7FD>Hh^I^#f6W=W+GD$%U%O%kzLuQ%tU=SY=GGk*-q#FnT)B7yU(nguyI z=_UGnsaPVpNTV^zwI`8nEiF1g63e z1XFMK?D%QfD1Tdk`_`WtZ&P6y0o;aaRt31A*X;Qxbop;h$(EJgkt9!I|L}1mnRR$i zqkKoDupeNok(0=O^RTD!Jb&$$;Au9wreo5iNl)%H%Cl+gC%jW<2i-k<$WYgjEpNXM z_B-y^BxTdG8}DsjJM>nEe>RlD!T-%B%jIM;T`re1n14>^goSCB=2;8&hQW}WdU+Kc z*#{tbBF*VpWu2Dy8PSI4fHqB#wIcKjdXjaK8O)idcT3U?2Nxqq&qD^D)HQ7CDw1`d zlt^(Ju_;BRO`GffargMS(7a-bBW^^36_>!KF_#fMHc?9r7Ubbu>A@46aW09ZK|_?8 zpE@quoqwzaran9YWA+#XvymZzO(G?cNTdWhgTe$|-qB}wdTHJsciiHN!mBZ$fiey>X^TH%@-H?-0^mvpotyv`J&{Hki^LWmx^#0z-Uhrwq=5%44V%NZ z0LW}$=qPeLX3^wy?ZKcAy?Aw@DjHa%Fxd12GJly33|d>e*Fmi&f`IcDXycucxh4_W zrzZlUE&bu1TUZEB`JhtJ#=LzKk#U4g?)Qk228e*mB07WlMff#M>VHXRl&YPd+=578C35CtEjXgxpQ-2gU zGARri!^AKOMWgLyJeK!0%|xRyXr|v(x7Rsf61i_QXzze|)Wm2hOlOU^3oL$D>8%Gl zohTHinhF(l`b113hsZ)h;r(Y$&+gV0E1+ri78k3uw;ulLe4C%tWBdgr}GrlRC|$vVhhuF zVB>10f+t9shA9%>UxN^>^O&5eP*7zPP((zCibl_82^0bripzrlMX79B-VD2!c^8;x{B$@C2;&L}yAwz+DJ&Ux39>zLx-6GFVQArwnaoPbx{NqN zTwj#Rb;Zm{Z&^wz|0Hspc#+G^wF45Crqt*D%kl(!2Xj#@4O(0%N`K|9u;fROD*)QP zC9_4cTwRz&1|NQIt}B*GglJJwzIAuBj?1+J1_jn*#VLg}2^}%wBm(#zW<7L~pBp?>rP+R>B3EnMoTB7rjmL6netk;O zfE&)ovxyrHPuoL^pjq!!uQGZASE9P&GKXlQadvGgW5+58{8(nr$B+E6)pMhL>e+_6dz>qHPC%$@W4`d)c-H?gzw)P8vM zCDIm2OxknGEFPFfArIZiSC2k4Ateen-T9MeqdAG4TX)iIW+@(N_X)DA)MF0SDp5R#tj}`0y O0000W5BYy%SP)t-sM{rECqI$#blj+>h-_yM9?fd`4&hzx{)zZ|LtMA^( zz{N zrO$Q7`!_Jw< zyP=XseqK83t8lI2bg7$f%UxWk+;9K3 zzu3o{^5njd&VO0|zR3QiuhMLE&-J3e@PYr!)3oM)wd!|NgEhSBiqrP1e6vyisheA%4BSj$zOV?SO3=DfN(@lfiAv_OXhoo+-z>a zQd0VvrR#!=bFoB|lTZKs=;qa{Y@1AigF=_nU*ONAW}iIk+p|o4Et;8C;Bt8X+~QJ) zFr}YhZhxpkTa-1cK|<)quvc(1)t!v5kZI(+i@2zD`M-=-Oe_D}w&D80Y*99CQ#n~d zrMCb8084aIPE!E>{wg;N{uT!VU2h_dHrf<%g8fO*{|^`8aZ*@jb#2XQ#*5od&d*Xa)><=VutyV>AL{J#D6) z28GOlvjfL?RmSl$8OvjzY+oV)*`^F}b{8jf)n`wiK7F=2PcU|22?Uy*g+dtO9DjM+ zRNLI#yu93Rttt~pWu2I%Ii1dx9%M8wF209?YL}b(2d&ma50i4<8;= z2$TR#AV6=ro0b8k77beAj9M&OrGFqP>mVp9;jrbDlo~W@sf!(x3j8e35Q=nUu)iM? zs9HF5kR{gG)urVGroMhgr_-HL9U3H3Qxlk^Gg{Z!)zVVI@RjpCujI}SqJCI}u||j! z>uUK;B$9GW$*S=4K`SuAJWe?y22mCpq^QCN7_kD0fWiADonC{A6^cAg27dla)u*MivX)0^7bic5GwuOzL=Z4rq^42Is`Xq23# z2NN6~9u6)9y!y7b2M-#uAqgl8kRjnjZ^t)G?s`}7FEs2Dd-ZT^wuTZ;m{gG~N<#6C z0=Ij?HT)T5>*(kxE)*t7u0Wzx{I(BJkU~LMz-wx-b&QR*j^!(aNq@4uD-|NTs@Ugq zC!Z)aXsoq06jBNPGSzu1tyYzF4p0D65KcgkL2z!}x)sWoaZKgu^*&!fEEX?_sq=t3 zuO7Xsl(Iou6C|(K8wdov#IfOl;5>S?cAO2$HknL%1dBQy)R~-|yjP@TgxZh^HBctu zyzcB|h8k#XVCbBr!+#Ey0HE1y9m#io-TC5$zw;jB8%c{-S66LNQVel6H~pPQ3)vw4 z(kcj)xC&>%c>)NZHe0GyinNA4F`G{SO%`#CDK3qLLb!<>1qO5AZ2FI?Io3)GFeb4k z<@n$Iaf4${nH~DfL4G*@{BnR@l0kw)AmsP^JKz1i@!?`xQhy~ROrlNRJ6d#Oe+?7~%rz;;e{*qax&{(+isRSvE7#W6D)Wm9dC-uiKi1@MX(UtU6qXjM6@;PE z*7V08Af=h|6a2+@Thr5!{(Dra$(Xb+Q_|GF{r^|#%dM%5NJ=7Qa?^nfNc$nxe9vV> g!k~H5^d zoy5wk^B@aD(H*P`d#($MFu$l0)mr)Hv>b+n01_0!b6kyf&YOwz@m zsKAip*t?ig`tjGum6-PJ)7kH}^S#9O#LM~T+?lO`_Ri9Nn`5SXK!|BTvxP>W zcSEGedBftFtI3FzvUbM0p6%nv!hM6qyr$Nhp~;z_%k7xOj*h&0eZ}FA>8h~sy14es z(~p>O>A;rWr+;vQXGfusV4!$Jwbq8-)W5jhg_O8%oVA3Yyn(uTdiT)P;-jhUvA3zE zhLfs#qqU5AVLs@;l;5Uso_kE~#-QiEmEo&&_QT4r+IhI(g8JOyUW7jR)7e^nI;z!l z+lGwY EcVd>ns`}5bdrhE3f!p?GWoyuv-yp!%3`g`r_xPp=-fd$ zic(%sHt@le`rNzQk(Ru9d$rAeqNZnle@L9fZt?Ze>H5vgpOCh9ZJexUh=NypY(>kV ze}9W|P~N?fU}!&|d`<_=_8$NM0BUqnPE!C|KN2$-Dh2}#H*O*lOaA_iN?|_r{M}~a zG5KEGApNkg{L_CJXX4iMlJ~W!yxf7vl(9|I^N4(U-dds5!Sc1o%j?ehq0n&Z%Hr_w z>*I>oxRVIZ;+yXHiKNNH3@OZ&ktR7WB>pK+0IJxV`U&5F-eN5;_P05)&g`LKW#v2munM7)4M)f{IjG z0a36X>v79>XL5G;?5~-eynpiVIq$vqo4FI(fnP@Vn$ipq=Dv~9UvY`apgTCw8GkH& zC6nJqMt?M=nXme4&vG_<`SN9}O!SmYe;OIxyK0a6Fhs3l^ZC0SjP#St_l>B5acgjM zI}A{IdinzWN*yrWtya4=)Ya8BxTyik%nVpytk-_8P^qBL-Me?|+zzvo12SvT zKn`p+Ky~0W;Lu6`tAa-}sXIo?_J{v!M6}~Wm`}N3{QYWgrWV|dnJsl*riVY`*HV7PVt#&8XVPbp}5Dg*9o+`H_1QLYhh= zTfDWv#NN#5e>LpYs!%9ey~3?FJCLNT=QNd~v}m=l+SpiBC+DR&OCghilMx=|=Qp3+ z%Yf-z+5*w`)n}t1XIKWw%72o{TD=m2{6wNj*5uA@PD@{3ef_CZ6%}V8{r$rV1uz#b zWXZ$;i982_Nl6$sb4wpE;8azet;*?tsb~f00wh%odn6jT?BOwu)HBT7zNL?Fs=#@b z;nmtILsDw0I3e86GuWdbB*cYDsuO+T<9eOcKb!%QLY4}Fm7zif@_%CAO$?G_xfoF> zkAuQN5{tz$F*takkYeBNZWof%gqd3`c5-rBynTKUk}|v?3A%;J&tJLLJB$33V@wEb zNf1ck2`J%KgyVbV+A+s@3~G-aYcousAF`~h{6zma=gJ-F6yI}`U;ss6!H;L~WseZT z$&a!(qj(ie5)F7l27d+yfGL1|M$W}3$`EtDXE2`2h>`oAC!A`fJ;kNbK7~2vb&8&yP|nmEb%>eTL3JhLV~Q6z3B+)eIvi&FUozDLWp# zeO*~umXvbl#ea)4DF79@M*GAcjbCR=@~yIU9?_}e&233L4xvV6g^fi=;^L2nhK9~2 z`Dwti*gDJ6vE1HX`J^478$+;1u(Co9Dij(M6V_!$exR()TwKiPyCjl!O<58Oa!{d| zu*9^)jTAq~mvT4~Nu{Q_xvcp=&WYnE>?r|qS5y5~rO_-t z?@H4#s19;!EuQ~F=VP8sa%G>o*?VA7P|J3Gg}XBeri z%@7i1FbVH;=Y2y+lRq$=GPo VXb>*5#-jiL002ovPDHLkV1lf7I|%>) diff --git a/public/images/emoji/apple/dark_sunglasses.png b/public/images/emoji/apple/dark_sunglasses.png index 1c8de3273d3b520266e91f5861fb26d347a7bc51..f01a6eaf751c718e0358c4a9b1e0d766ff6a5d81 100644 GIT binary patch delta 741 zcmVb2#3SR(wI_87KrhPTx@W-!&jnA z8biLd7gmej1ruIMQ>Kxq0`H|bE*TDn2!f`(_)+2%L0mG`u2iHO|7NJ4XVRJw6;UqK5%^#mAbj>(w5T#grSLf?RO0#wUo{UAu`<{3 zerix@Clxg`a}!acDkiOJs<=~`de0CMT{P;cL$n!S^=ium)o`5<UyDXPLsSsal6Z*3RDb()iLO$m-GE(s^%hRms7FNB zD2^*CI*ICnOu%m+3DE>&yNFuh z#biceXwkTSqMFA+nZ{-TGDW!k>^8&g7b8HTKuz^PVBSqPitgcIkYAz@Uw0Z-A==Eq z5fvPwfq!+R#L^U5*4}BEJTgkEly8AnSY*Qt9a6wmrUg0k%|Ue2l=Y_x8;khma>L+~Z|b00000NkvXXu0mjfHjYeM delta 2490 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 Eg7uv4g8%>k diff --git a/public/images/emoji/apple/dart.png b/public/images/emoji/apple/dart.png index 7a3842072f7743176364f8dc655323be89681750..b2fcadc845f7d09bce03ed8cc4cfaaa57563e24d 100644 GIT binary patch delta 2708 zcmV;F3TySL8JiW5BYy%OMwFYWCMTi_4_!e+YB)Q|93Nj8 z8G{%Z!XhMOzQ#I+1%)Fe z$s8b!A0c8F7^o#DG=7Gi2nd43&Uvb^UlS9U2?>?7xf@%{W=%F|>L68!e|?YOx4<>6J<-`8$z(bv;M zyT$3QuHM1D^Y`@Q+}W%xE=$hWW000p3_`1#?8tqdVpf?_SK0YpL%Z7CMLH>6>i4QB5`+&#>~EB6UUzdqEl3%jf{MZ zi0{TmvWoz`t4Zp|364EI+Y=W4>Hx5yplxzv{n%fue*kA@IP~G1pn(9Q@zK5j002RB zQchCD1lX?}A%-#^buoxtQk9zC0~Mj{pD%x=BPqRCr$P*VS_zR~82Fk*t{!j1U}4b|lL& zL!8)-?Z9TYyN8*XnZ?Y^%*VS2%y4X>LwFdMD<0&BevVE$7g$Cz(fp&b1Un#tLY((?9%}`ti>3 zvj9N~XsMT;JxM)cq4M(Lf;*?4HJ&-bWM^B-!RhS01v_Zr31 z^K&j;bHJt=Q)Jb&Tjhbz2%ZBG&HhLv|Y{!hy3J2#V)`xgL{9 zdA}4wK#^#jmhr*C!LFd6Wh7)GQ8;~jSEtY1dQ#KZ*weGNcE82d5EmEM(BN_b)CoDe zyT80&$Uc0Xdw!^nO{Q+3ecmGy$bUqvi*%AXk=(deTierfe{R_Ibg2O`t`t*eC)}yK z$9Cq*fj$s^f@6sNVFt!M1Q8NlyqpS5Ut?|0TJ8Ow`!mhTrR9Ho{dEciiru|i5W7<- zANoKfzR0dn2ic|u{dh>Weu7*v)R`Nen`>T(TmIYe_}F9HiQhX~dIDL9uYcWfs=G$~ zZoe})KE!2nxwa8p{+eWJq0St<8H!^ciix zWP~5_3;Bh*`T?|CCpehE=NON449+{lcnA-5{rjhPEqybvoU!r+Q^V}3{hinwZh&Ai z3o6v5!!V2&M3;ceW=E@oRaG3$gI|AY7;7GbI?5DEhj!cO2M8vMpnp^MOE8fjSON{5-wuW#Z*e5gf-2*U(!8#vsE#nJ_f7FK&7|N7!TZ+~~0 zOewAJb)ainj?%02=j_9D%^bV;_ZvK|9rS~Z)s`ydn$)^*@)E_ zLLrGCK^6&yi3VXk7JoP}Srwu2v=6;`_xQo{=WqTPef|5Z#nUvZ*mHiZcpgachxdleHZ zJ7Yzmm@=#7U&T;E8i1e?`v2^49>!xuwxO!3s^>2rtIbn-{eMe_-8&WNT~y2ENe4jn zZayF5W8-W9MDUEw!@cwih^i{$ahZX`S<&kk8Fu?dKrtbf%X64ikW}NX=YynkumNyO zFzE;^+aV0996YKddM-WH6~75lyQZ zt|W#@d^T84HA}#g`r5fsVf%i~XZbWJ{N_`P7HyZ6#ASbY>RvD}h z0a`~;ECs~8(psu=YWWxxan^xkt4ET|(JmAMq)_M=?P9ws^EZHAQbUlW*3wdQJs$%} zU_ry#Jbxewq~VdS&8ex06|Y(>7ONMxx+^PxrXCFvf1|XN;qgg8l86RL$tgvpGh+^BEcLam;6AF^)?SivYsnDTOC;J9SnH~`- z8Kuq+wlE42lIfk?cI09?P#LrXli1eQRx<4e2}K%q*tlG5vb{U0VRH}PXX?PC+a$<0bb$;$fTIz^kqTVFt~C&nKR_%EWNR{a!zzYWCz O0000nlYps#1TV6N^%2)QA0{v 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 mk5|+yASJ0000h1B?-|3sB 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 O0000Y--4qlD&X?-o3Tt&uXg+xW000Pd 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 literal 2463 zcmc&#`#Td37vEe*8=E$avDs#}G3GM&WkxO;CPH%w}0=N%ufFe zkfb<=7~35N03-oyme)?lI2IO*E##ug3FtxOsjMm@8Vmv<5Qu^VoOmQY zl658DC@3h1!?BHz^5yPBpWu>GBXMa__?Z78G&D3h47Y#({%C(#UjCbEz_fjN5i$F_aaF+TwDO^AV)oqONtLfrG(+qgV3Iyo^UukhNFfA0xy%a zF6p4lGxaaK>nt&7csyRbIe|dHU@(h2OkR>u^K_$0GrdhATS&!!wxYh$)s&Q!l$Mt6 z<5`Z;NMawLQ0TXQ_faE)=%LNHDOp8DrH7*RRu3&BE8A0VK5e1jr;qI-Ybe2B5C~*_ zz+GNme!j~|MqYlc&uz8Wb*9Z;c%LrbT%d~{qT-d6mA|}kS$XTCuCBhscmDX4*-yc4 z4tbz7G^SqI32s{qx9oV|M4z)Vob7ZNXte4kX&~TmOH0eK$Bd0Z_K2|#jYgYnWme~q zoAJncGPcW5d(qVRy%FKHF51!2vEPUwXtXIuDK%X%Yppc?ciL-n%!5oOmmJf*R!9{a zE7HgFN{ugOQaWx}qO`RQ3=F)zy$A1FF&GScd;52fY?m3dFP8f9%F1;``uv+_kE<;U z5(#f^)0J>|WgOns)pg2HPYw#3>UHSGslRWtnQC(qk}&C!n3Pb>mJ3E}wzS1pP9wP{ z9v&W06l(kS?Rfb1v2HsPMX-qqoJk~PQ-~A!X7fVl1+Jx*9B9VKK-ggAu8PQs#Z4LF z2FqyydZckWb)nyR*3Edq$8`AwW0qmO(dD`|=e<_%7*5n)7P8LjYWEz{73LVdHo$h# zNEvFd4kl*f;jVk825T30))?sttc*S$qb=++YcwR$738Zih)9HD-(FJ31><&eDgp?Y zF0=Yv&!Av1{2-lMSd}OG+7(`!{Ws0;CQ%s^(=OsGd7il2%@Y9HR-D}+Rd&Rj3GCQ+A=@Zp{>|TG>rP=aZZSKtMr0b$ij|~xTvU!15 zBgWtV2mW;6%9j8D>0)PlTQA?vFCUWFXTwplaZj%d)hfkF#G3$R1MD6mXeYJ?u4@AGT`64TQ{D}eS5Z20Yy-P{>}${`>m7o zcueQT%1UoS$^;AtHhfup+>qccRRhz+wkP{a#jmY@{X}40G>KlHFDfc}HqsO>sH7fx zHc(9MnECptmUYSW@Zx;YGdd|MmswI=e1#3aj_RqfNUF*`x%t%Lxj&7d2JB2#!z(O1 zli2u~+7jY4Cet4irx;pGdPgcaGtp*a%^j%el4M0lKPjr9%9*`uYlGUprMSzcU8-1G z*t+7fyY4$mYN;YJHg-q!kjW!~^&R468OSVU{-vf z17oPfy4KcK9`DQWJv8!2QO06B(^s3}RjPRW_yYf9-iL=>ufm^%t!3|zc=0iLP}_j? zGdy1|UB`oA#tO+r4Pv-WKt-Ti+NeM z4I1v$)!~7kmK9sKzN;WcM4~|rvpbn?$#?TS!KWO)ZRRKa{QWj5e*Q~RtaZxF>$oFF z6hNR=UPFUEFfz9G7x%~D`O)u33pXXZlpz}y{L#qY4=59<1B!Gvg^6E396nroU>6~J zs;}{QZS`m)u9D-Gqu!V?zL@uXl(kJZE#PNh+IU)^--k?B_@Nr%f|up_C@cGXhlDlI z+_!*$fFYirWK;V9%-1gOS!F4GsPQ{DZdeU{hSMmWg1qt<+Wh)nJ=r*6;`!ucE7hR-k`lRM~-`BIlA;(nH=A|-*2TJaZCe7PA-?C=^w0C#+6#lL~ zeY!eb0Uj_ey*(3{JZ;Lgv;X6vq=8R^g}A^1gAYbWySnz?5(qqR<}ibuK;@kxRay0^ z5q=ib*F(?05;f<~;lsJsr|Rz*>gwKx<8^O)+$f0*%xM0&TGCGg zf`T$Yx?>IG(UKcIZteyv%MFcY5O_$l}?-fJMmWT9TLzqgSlWk5|SS+KX zC#L7J;w!w*J1_EX}wuRMdoY$t@s7;nNI$LHF!@He;I)DPB;4oW>D6D E0P*2}rT_o{ diff --git a/public/images/emoji/apple/deaf_man.png b/public/images/emoji/apple/deaf_man.png index b328bd83be862b9c8c088fd8492a201b9bc58896..9bbc7aaf0892533ac12cb7b603dae4052999ac70 100644 GIT binary patch delta 3389 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 TYa7dr00000NkvXXu0mjfOv7)g delta 2457 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 XJrXmd#opsz00000NkvXXu0mjfn24Pl diff --git a/public/images/emoji/apple/deaf_woman.png b/public/images/emoji/apple/deaf_woman.png index 045fc825d3c5b9c830841fe59b621bfdd27e7d1d..b6013861e87af6618d55d59f29743dc5021f948e 100644 GIT binary patch literal 3914 zcmV-Q54G@#P){ga6Aejx(HxcT8SfVAYlqQ&L#%vK?DnTYp0eUteE>ERkz# zYhYktnp_KaCx&Prc;%}ZwRjD9czE`_ANIT+>#`hK7ispq9pIxDeSLjfTU#>`ss~YXG9PqUt>a82~y(R0f8~em5?z0|N7H09cA=;c2{mCrl zrx^3PB3l`2fJ6hARs`m$7~`cE*q9UHq83pUVoVZV0|Ef~z8!Np0o9cfP9y+)KLKwx z0MC&Tq+pU~SXtS=G>#BqC00016bW%=J02k-w zD-Ag3=mjO`LFQ`b-{%(b=I7@l=-s`II_GicaE9mS=jYbr+>EmN=<4)X=I8CE_tEU$ zV#KS`%iQ~e=jX#%;K8iD#@45x=a1*U)aU2*r*-?H$hhbJ(a8S*01KW;L_t(o!;IGp zOjBtV2kRRGjeNCPJQ(G-1O`))a@VVZWSaFT2;&`{a6T2NFMb2{Zg&n;q+=;Om<^^S9o@8 zX7GJq(Xo{*)Y3AnO z{pS#A8Ay^2N~OUdKu!s+R*r~}>7OrLK0ObO*3Ox31_BRQ%Rq->aWy!qpdqAma=kL# zC=xw;0MN~;sk}3q>YoV&E;K}63#~pR(ul#ysI+OXldI9EG%?=2O8|{M3SXom-D!Dt zKXCeVXX|UB(vNuwLr|sFW>j5{1efbDYhpF%Q-A_LhX=Bwqf=M!T^j}`FtIF@)Mm5> zgI1Mt8e=Y_7a$Cs0OK`ZnR!XB)+}KyP7-Aw!CeM{qXc9f%klUo@oTU3kY%v~^e*{>Iq(&m) z-2oq3`^LWg5bTr5J*5i|A)7Pff{~#}D`K2pQ9>;kMXcUFxiIe)yBR2( z4MP%=k&?<>G}4MDRjOtQym8Q6VLz#AZ>Ww&>CyVe1Jv2GeR6X-*<9b}8<#*ZBr1}_ z>7!TH zxj`!Jio=)+5{u)>W-pSJ-BmbPx8ERFj+8ztr+z^}D3eD?mPrO2KszJeWC97*fM?3D?jTOOt!|gRvUEXzwsc2(|d? znyT8{*=Su8TN83qV*)AMZ{)^A1&N992+`KXccSvIZ|wV`@Nj?nKJ@SNS=jK##hQ~0 zovyW`#thAYlnI8jbKSWYp)e*BDOqy6D*y6u-{$@K>+$>0RFke%r)#Q1PnZ=LoUIlo zG)Im}74&EQ9!)GpQRJx5buV4iDmL7xC_r^USS&ukT00cxmR^F{Yok_mRk*m0hzmN$E$BgAJUHYhF2`58AF@|8E_3@R~Lh#{vAZLpL@`p_N^_gB^JB;23oOK#%Qh z8;sSq2ol6#n39gof}1i}FnWl|GU_2qaZ#Ho5nD}LDxpx4%D{u-ZNjcS4?5P%elIa1 z+v}I0r+oPRetGXn)ObSb1$mm-*-q!$mLL$P;?rjUJe_#LkAG^4R);CAXEv;Mdr$-@28aJJWit~b8jenqUBs`WrVS~Xki{?p zO&3Fi+{LA1mHoI`0!S;{{0u1w;&Ve`YZ zp);0{7g>{e$kP1ms@LoHFG4&X&jMr)#pm Y3%g2wrpy^XC;$Ke07*qoM6N<$g6gDPxBvhE delta 2749 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 Qa{vGU07*qoM6N<$f*)9zG5`Po diff --git a/public/images/emoji/apple/deer.png b/public/images/emoji/apple/deer.png index 979f2af503ab83c410184f4fe608287273cd9eec..fccbd988ef38c7c62b32846e71258c7bae03e1b0 100644 GIT binary patch delta 2356 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 b`@{bL8P51_XX2@G00000NkvXXu0mjfPE16S diff --git a/public/images/emoji/apple/denmark.png b/public/images/emoji/apple/denmark.png index d6253b37bde17c839b52e8bf0b619d6acfa96c82..352a9169839b25138104ee346c041929ae95ff39 100644 GIT binary patch delta 1162 zcmV;51aBYyz8P)t-sM{rEb#>cN_bh~GEXbc{M95AG4bCgJ5doMX{3LU6j zY+(~3sb+MwfQyHUieC>NT?`$uXm?`}AhEBoVhwUT ztrIZv^7642Gwtl`qy-@1vI5*w~f|C9g+W%6~0P$V6Seva`)FPR4|c z;FX}eAU($#Jii4n`uh6u{QSmRY2onh*KB;DCO-4h*peMIe+?s;NLBv-|Dd0r?6SPB z*GfMC000+sQchC<{@(umqb3Lrt@=2KQn`$0yXT%&)tk*uU;vt%u|)8 z2wCp+y4~Th@vEpY>~?$dKVhoe>kb=@CbZoqG@M-Ep_81a6Dl$>hJ}$q(=O2>6i|7!6jdSiwt)$aP;*^?%!encD9hz?wOsgVigAJi6D&8p4e0_1 zAuy)dem|do9X-c!b~`VUq8FM2s&7i0{@+0;iBb%u7%nMbdn>O)w^x z#GXLwBiW^1;Sfm(eM%AA*dsX(Kx7%VPQA@$W9?|32!a>_3WI3Xc`WC6{F?9gZ~-@) zvwvAGdAp5Qhd4#8g5o2s39!vlf4N$PkW15WGLxhdl=F#TeFm+GQ!=JY67rX&yOvmC zQ2HGG{FO)a1(hcvghPys7$~hDT7K55|B$#j%gGDhkmy85G6rIX`1A|U8VqR!INLV& z`|X?^k#GgbGuMa~vfQk6L~1>JvFYN|&wm~9<$wS519b;7pSvMbbRRMV6V-MD7FEBr z_a|~{P)eVFf$U-;{(&UIm8t)TaBo33zqCC5*XI*G_@%8!Hq!&f#PHmQ912w_-^VyO z98RZGe1_t49LGlRz^@Vi>L3vCff4|;N}bQZ-h~kIVHH3MqBRey(T!P`{1dvgS|e)6U_71*OHU>vQfu;?)E$grjAv35RqoJa!4S`pKmONV cy?XTrfo^Bbg{&@r00000NkvXXt^-0~f}PkONB{r; delta 2560 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 literal 3688 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 Y8^Igh;(cIXyZ`_I07*qoM6N<$g2}Pk_y7O^ literal 3209 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 QrT_o{07*qoM6N<$f}KDTOaK4? delta 3121 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 LNkvXXu0mjfih+c# diff --git a/public/images/emoji/apple/desktop.png b/public/images/emoji/apple/desktop.png index a0911dcaf527f1a5702458ed5458dfbe5d9c88bb..e0cb596a3c8c0bdfadd7dafd64b514fe3ea06c7f 100644 GIT binary patch delta 873 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 R+RFd{002ovPDHLkV1l0<-7NqB diff --git a/public/images/emoji/apple/desktop_computer.png b/public/images/emoji/apple/desktop_computer.png index a0911dcaf527f1a5702458ed5458dfbe5d9c88bb..e0cb596a3c8c0bdfadd7dafd64b514fe3ea06c7f 100644 GIT binary patch delta 873 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 R+RFd{002ovPDHLkV1l0<-7NqB diff --git a/public/images/emoji/apple/diamond_shape_with_a_dot_inside.png b/public/images/emoji/apple/diamond_shape_with_a_dot_inside.png index 7b431d3e7cd7dc9d09b4d8fff1546129625d8575..031d3259ae7b91eb25d1728c9c77b3688c982779 100644 GIT binary patch delta 2693 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 delta 3487 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 N002ovPDHLkV1jTS&lCUv diff --git a/public/images/emoji/apple/disappointed.png b/public/images/emoji/apple/disappointed.png index f807aed4210cf1d43afd5b20842cc28ce39652f2..ff9322a8791a153375782e1cbc87e8a153419da9 100644 GIT binary patch delta 1633 zcmV-n2A=t@9Ptd0BYyy~P)t-sM{rEheIDkIBg=6U$bKrvZxhC72gZUa(0Uxod?3ke z3-O8%?T;AQdIb5Y744f3&1?dRP6cN%0+m?@cRvKsoh7Jl6Y8`j=Ey#}haLapNB`=6 z|Knr-_HzIDi2IWR|E2~1@J|2NO#l0?|NOxJ{nP)r2LHu4|9{2`{jV1P%sBt~oB#A) z|Fs?Sq7(ns3;*do|NiFx;4=TyE&tjy-iQhR$SeQSHvhUP|GqKik_>*ku3`WH01b3f zPE!D7mZ~Dk}^ z!RA(#LKJL!I)C$LK4PMQoZM1h{!#JEe^wl&K@y@QNTc}END$_8H%%?BY3k-YOg@1{ zNj^_)+a8wiVFDKY6_bWpS6k(L)FbDD^O2mbRd;iketb*?rw}YiV zxGGLE1?J3)1z9mlK&dQ@KQJd(b=`iY*ixa>Rl_@%Ab)LLtNiJxAcJ#YMOBs6UL{t& z*-^p!P9hcN45jO8ofgGcFi0|d>ae0Lz+9|#$(4abzgsDO=J=p(D|{E}U56F}t_9l~ z{=VoROQ~~)rD7)_m)xdc&xtanYBmTlh}9al2Err4Nm;aY;v9nvrBt95Lta=77anAj zl6k!Q1%LGv2}f-?5KDLn8UHnH5B8H$m*BV_#|7oo)u`>^UhTmc;!7J1{x!;6oswT} zoivjegl?>rypM4QHA?aW~RGIksV}=xln7|l3+)B`Mjeo zW6Uolv-IXCld3T`LbPUj)Z@c&Q)|MAu{E8PuYb4yp|0s2#0=5E5H!7GFipS^LmagH zm)4Uty_b-s9!8LN`o3v!wr}g%0%;*gKLGjkai2MoqnG|vU$?D|0#OuzSFFYa)c86v zU&8i_M2LtQ9rOQx*q(dmr4DqrUDz*sq*h{hICJeZWPV>)f|A=UvXFnfC2}KZo#z?M zKz|1U4j@dvqVTQpImI$Qcw$sq|BVnU~B2IE4$3mJzbFjbLfdugi5ycW2%D+H+DK~el9=pnbw3`v5?%eF*gV6v0)>FetCk!Z(fMdME!IZRW2;I=n(A`B&MU>7 zC;oN4UYfe5R++FP!lu>n0jWyug@5u+N=JaTI2{gH?-vRe;+6Rp@?yO;IkbtMh6cT#uMoFL{(TC%0KD$6-V#SeiP9p`>mh-09QTpg4TpJKi7D+MN@}1eh8;@|C(8^7~Lm6dj@b5Xo*UJdS#7RxAByUye^CX^JuOQbxE9JEw1a`9B1qp%}AySz0F4%lfjE56W0J zPgaQWQRkaEGDVn;R*0cG-=~68cm~D+K?synfHr@b!!h!KnE>%4UFPqt!_kYPfD(Df f1C;+N|EljVeTU~C?dih~00000NkvXXu0mjfnVKZ4 literal 3630 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 AaR2}S diff --git a/public/images/emoji/apple/disappointed_relieved.png b/public/images/emoji/apple/disappointed_relieved.png index 12038fdcdb244876d04c9e4598fddeb38b969482..8166435e37a0505d4b757959510f578e7523d081 100644 GIT binary patch delta 2345 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 diff --git a/public/images/emoji/apple/dividers.png b/public/images/emoji/apple/dividers.png index 9878128a9fbdf1a6f30552147124f40b76c94842..ed8969d50f3632e91c9db68b3a762b473cbd3d21 100644 GIT binary patch delta 727 zcmV;|0x12Z6z&C(BYyx+P)t-sM{rE*-q`Hbxmj)a=E$Stzm@07r02qz>7Zu#l{Oz=gb|fZ1?c=3h~8a?1EQIjEMTI#T$;r=!@XQSAT# z01I?dPE!C6Fpp)yl1={pZkp6CqW}N`L`g(JRCr$O)615lFn`UY>*FhVeE!UK<3~AGrjS;8)i35xgNT@HtTXOJ$oPmnGyk~ zZdD_`%Ne%v`bK*StR#r@rmJ%^(-oX!Vh;0xnXb;=YE9;Zqj|}UfmeaUzRaZSvYD00 z%ZrZ_*Q2~gvlnYq*;LmS-D-=-#@!|fOJM}In2@Yd7JqdfMC{mwZQ^oZx6XJ93U1S9 z98(^oKoR!Y0M9cJov)HXlQolj{zOE;{Z!~h+C8WRs06ylAsr|g$f_fV-M95qX>g>n z-{S}Vw@*ha48lMVMXNONVPS{<|Id~{)|(ncF}@U>1PVKNOlYf3%+{Y$_Q9kIr6Gm? z+cXM&fPdsfmrwLc0)e>#wTj@FY>q3oS}4~}uF%S=2o0S(1M#h8QSng+4BOdHE1+n% z3#Bip97u8Zew`WRfJ&vJomu_KKR^{Zp!N#2P)VhFA>OkiakaQs1b}HUF`#h)U5*!R z6hgZR;zVzMpq=>pkD&)z^gw%A?uKSbb`w-7Yf#Apo+p61Ct$GA>xP?wN{rph)&W>R zObMP*(xJDI(HaDyL@^2rXi6H(3S~PFSU<_rE2McDNjL|2@&&~6)dr|xTy_8e002ov JPDHLkV1nhuXj1?H delta 2589 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 delta 1567 zcmV+)2H^SY9j^?KBYyysP)t-sM{rEJy1Lui-Y6(30s;a~PESirPCY$7?(Of~-Qan6 zeTj#STwGqAouP}1jgpa-XJ=`%v$n#%%9oazh=_}AZf|vVc5`!eX=!WU-r&T;#!gO9 zVq#=gS6Axl>?0#2w6wKBK|%lk03IG6Mn*?7Gc*ee3-ajy?|*4wo6ctuiSeuxk zvaPw(%--PG?d;u^0000YbW%=J0KOIe{r&^}1t$Fb_%zgp{7L<+Zp&4y-bsV) ze%WM!)ZGEkNWlOA1u02HK~#8N?beHuqBs-=U?ky=ASx|t+dFe|;f}ul)9p!uM%S6C zc6(}Tt9F0Urhh{GI37|B&c7wTyTpWFW}JQ2r^jlEdtc0AB|N?=z6gZ~r5vH5{~;dybC4hU_X+*K1^NCj#w_Fs9;|)_`6@Wijh1iQ?e-mme~P`U zu^&K@g`Nuu_lvShz5bRo&bCo#XZ;fL4YA*Uedm({oj1vjOTP5>2 z_sT*^1|o@ptmEdVJ{i~Nwz)J-)1IgGIII{D0aA@m=l0UztDV+E>g8C^17w}3^oFUe z>$|yG*E~@o=ENjC`jd@(3Yb z4tQ97`7Q=Cx*b$zQ;%MLgk%a&4UU;bmio%y?U$ z<3)Ib>=nz-jh^%vHH1ONde`B4JVgcy5x7Fjp?^iFeXgk07vQNP{HUj6vEWST>t|au z%*;d3YA)xtM&Y@lrj56YfDy5C9-zi3_Ply)+961$#*Emvp3@}Rnvo~yxk1V~$Ix>= zD#^q)tF4D&0z!gENcYG#=~{gPtKRd(*tBNc&OvBQ*6>tOq9L1kD(Quk!tux2rw_d|$At)2u2Y)CER_EHDQZFGvWOoZOCEcdf6DRu(mMq>B zWV3^$HPv4WV&cwWuu>)2!{->veFdbOAzM-k3Dz`IXvU0yg(Q);_1zkW7yFfkES2{( zo|+n`VN~S-bkc?iRgy{5Oe;!u&LW^h@)@$(;P7B5bIIqkjPy zgX8i6LN(lQpuwPS0d+fo07>s&z(g?Vd(1TS6j4SCMKX?K41$0J z3IJ4X6eA#6ug5Xrl!Dl~&PNPtW$Y|rrJ@V~r(q-mDs`7Jl;Q>*Q!EA;-#X4A!I4f9 z)uLx9+-j<0l0F2r4q>HG=Ixe_^M5ho9@3)HM}O?l#C4-$ zTZ9JpKgO$5MxRpr_gz_4r_*=LvFGU)6~y)lI&^mYPcY7#&=(!wpdz*oI(`wO0~DR= zQw~B!<^i1pUbWQ^dxsQ}7aWXUo4gMg2?&q#NH>2GLnpOUy6Aj5huBLw5BiN^+)Yo7 zLtb)1Trkiv3JE&M>@%Sp*?)o9z2InS!>E)H@7-vB$a>uy+;|?M^HMg1N=Etk?OW2r zwavH?UUi%;Rs<5%MzK9qQXpmVieuMOhYY2Zb)XpNbKRa-A@>Ms4a@nOLtx8!QObk) zU#?;ZuF97kd%NqvB&fEoWnRy6QytUPJC^yE7)%&NMNuq6WWM0oA{c(j{0R&xCax4L Ri*En`002ovPDHLkV1kdo2{`}& diff --git a/public/images/emoji/apple/diya_lamp.png b/public/images/emoji/apple/diya_lamp.png index 634279fdb961fb4317273e377287081991659cd5..39f217701383cc2adc3d810f4c7d0a01dbb00144 100644 GIT binary patch literal 2991 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 Q11BRh)HBs>g}cQ65AaLMx&QzG delta 1433 zcmV;K1!nrM7pe=8BYyy{P)t-s|NsB+mlX5EE%eYd_}(1#xgzw;9`CXh@S_;~`10}6 zUiPOG?yoKSvJ&>f3hay*_u@|c{L1?8H~RRw_S-w~)}`lk8tI)N?0_2FSRUe*Q2Emd z-I#R#{{HODz2jsZ`}SJ-?&juxEcNNM^yAd@-GSz}qT|Sl>wmL)`{M=t_?i6qd)RhE zaK>Q5JV*HM=bs{q+vWXEjO*5ZHMX&tw%^Gimbx00g&5L_t(| zUagmhP9sSe2I&|k=jfaxG3?&^zu0}#tnYMtj9D=*j~j$Usrv6mGIy47$7DYK26z9# z{$#beg$S5tJb&0UwoJ`UiXh5wQ*^gzZd9}=%x#LQVs)FMs@hqB`J;D#k*TWYCPgL; z!}%>{v?7G$wRN%wU+yf zz@9`eQOC_S$8N42u=mC9^i(xqm$6?fQyegxc`iHv9+(O+ofg<8c3qb9 zzM}D3a85BvrJlC%bU07o=Lb{k0oY(5OEu{&T4^Ln++U^6O&(kF56xd4&(D9=@YFC- zQOZqE5oo$3#xopJ`80|x+l$5W_*{b$MSr+TJw;%nSt4o1Sy^I7r=>M5AnLH5$H!NQ z3KVHM>MxovRGU!AI4z&RyEW}D7HGgLOqB|-wca8yB9gaMN+#ezQw-8&n&#UEBI^Nl zD1<13U4Idhbel-Qgz)TPZR3Afjv#uqOa&QoQdVgA} z&{dx4D+1<36z9rQ6bF1MN|(Q)9&Avl!>Va25=?qUU{VknaHXk2)sr=hFq%_to1l3v zHK~e~S&(4UF9M^2_-}z0iUyd}d7Z{PI~(hKc>JlgPpWXcT!b2;e$SmbRis5zr@|t% z=j=}J52F-2T$j+`RTSZr=;{1Q5r0@stFB22EeJfWaJ8pOTz0KpSGm4h`lKib39sBE zfZ9o2gfiG;d!ay+Zy(o1itD<>_emHMqRNxGa*r(5MA{Z-tX+a22!!?_(i#?*ggOkT zr`7msk!4d)t5Erfazh^x5R@o!-H^D11Yup*8)NgoHq}KH20^e_TBEDW@PDBprE>MO zu5HfOMPO1xWnKQhb(JDomqZ1w3Zbc+`IY~&e?PkuRMP^4n2Ex4byXFxfDIIXSOn&y z+A_UR;{lhPzM@aECW!hUr%C_Eqh8GBch$&hdW-rolhOM{@;=&NQ{NN;vzlzcWNskn n74@q=>Age1AYg#vs^xDkIufU#u-Ay#00000NkvXXu0mjfiet_4 diff --git a/public/images/emoji/apple/dizzy.png b/public/images/emoji/apple/dizzy.png index 3a2a46ebc1f8337ea17ea58b1e3a9b875a6ad7c4..74d6475a52329ffe20dc12a6065f501269203f47 100644 GIT binary patch delta 1815 zcmV+y2k7|K6{QZ4BYy!qP)t-sM{rE{$U({6xc0p{^6r)R%sTnVLrRg;`r$GExHA2^ zD)-Dy_28cR+DrM#Pxs@P{I(_S^3>^~KK0d#_~M!P$v*qIF#Eeb?8#^8s5#I2Fr!4%-Lj1ox_vexJ#$ofzar(V4`G3DL?!7tv&`tg6h4|>W z?z~X?x-kC5N%7>7`sk7T$}#lggY(UA{^^JJ%S8OtV*c!m{K-T8$T<1MG4sbZ_P;Rv zz$@yfChxZ|``upu$WrH^CGWpB{=iQ8*GBBFEC2A2`rA+c^OyY4JoV8<@4h4d{MPHQ z8vELY?WPs(r++~4!#)4UL;T~O{m^gvx=i`%wf^jc^UOZ~^Q!;&!RVnf=8z2k_P77} z%;=mE>b4>O{@?$-K=tp$|Nra#3^xborT5Fx}D|m@bV|F000GF zNkl| z&hiD0C4cj5&5*PO!D0XJd=*XX4|YgQXcy>`VyPG;8zs7icUlq2XSKWAMFxDhJ0 zR6xHq$ztkPTsaxaFo%s<8O(nP@2(r6_6_Hwk~Vx7tUu$nRw_T&90oy|fL0S0(k7#P zCWDTG+Lf9zP&$}0Qo4CJpbcUv(q^p`i^oPx#eZzNC78C{&&A?Ta`6phplltnjs(Oj zRuT(4rvuD_fpAK^g`HDdu|=j$0eKAZm<6QW-D3jFWh65=%pehU5p* zn1A2bZi4g^#y#Ws(7KBy`AI>!#{y5}( zuMSMXe)rd}^BJSH@VuxI&K#LV`_pLZ#O?u(KL8v6{jh7TDI|#kKAinW|K)rFtV5TF zM!6J_SF^%xQEEBA<2njW&tLBEffY@~frB*B1`)AxSsJHV4NEWGZWmZr-6s_k_kZaO zyj&K}?AX{*WT^{!0s-e~5(n>E;=mFgqVSf^uN4yFJRwlfqYbhg18Ico+Y^dT?ylcZ zph?_L=v$JU9=xS1M0!KrO;c&@mc9o?AaOWLhdcGFJJpnmy6#U?5iJy(21{}V*OF_e z(7XcF+*S9kKaJyEp#&pQDC6Ff$bU}bck{nF3bF3b`^9*~fpg?>iX%ZznE&qRjBgZv z*Z)&dZ>;Odbmqh^^Wahxg>Cw;)yHMN+GrFmnkq_VDHDwjl4gu0SNl>Fq{!#0kKMA+ zs#d|2f_k%ceLg9=v6sP@0+4+CDcgy=*XfAjWm`ej5eqb__ovgSGmV|N=YOz$DM&Wc z2b+=JV9jO>T90A2ddUlU@1~b(BmG1mR#- zHMBwt86Li(=3Dr7dbGE9blOxoxiGEsDU!OqRe#i2$Tvq_wv~IRs9r#4U(4lSklG|y zD!TWl4FB%RYd~O$5Pz|N)PPYVKc&(tp(C>^YoAYpSyx>tEP#zfkR;_5&IUv1>Enzo z9H3TI7Qpi5Jg8R70p|viEhCCq4G$qAz<{Qz1iA??{n1U)F|dVT3QhUD8Lp7T(qdT) zv$`Gz)|-Z5k|n+-hlvE3iV3fi*a;cW$dId`825(xAGAYfn-DLTpXC4m002ovPDHLk FV1n(2x0wI{ delta 2766 zcmV;<3NiJi4%HQqBYy(`P)t-sM{rE$=;-g>Rq)Jz_S;+V`Q7itRVZKo&Fa5co}%!{ zRr2X&+v$Dp$6D~hR`%aw^Tt^6yY56Q1#1G^wC`P=)Up6R_w`E^nbrp^T1X0#bM&IQS`Y@ z^S)5<`sm@QQu5@F_R?hIvQF~ww(Zl2;;&Kg+MDCTXXLk7`|6eS(qZb&g!j>G^~7)U zzftJ9V)MUG_0(?m(_iYqRrbeW^u0~ zyx^-%_QFlwrGHcS*<|&_Uh}z1^Sn{y$7kldP3pW(@ZN&;?5XQ1HJ_`NvlM^|kuvg5suB^U7A?s6OelNcYTU^}u8N@u&Xx z!SB*t_0e7Q%~;@_JnXqk|MQ&s#AN>WyXC)1_uz2w%ToXQ(&DW^<+x7i!d2y}RpPWx z|NPeV+;jNgcjmiL%dC<@0{D3IP}L@ z_{3fQ+K%zpVDiye_1ItT&|>DZL-yBh+mtr=$XWj7qWtyE_VLR5?7IH=)$7Mk*^o8s z$#nY5b^FqN;JQcq(_rk^mgUD$`RRxD(`V?WLizU9^Tci3uR;9ZnD^O+{N9r7yk_mW zV1M$mQR>Zq_THfM&Vf6FmrDQu0E%={PE!B~3O5lAR09J6J`DyhC>Up1lN7DmLn#z` z{w2vrwCciPW0>bZG6<_#`U{gO*iTA_R^K7s^<05 z!duyp{``J$oexNk?DdjJ3i`bk7VR9M5Un0HhYSrmsuNg2Q-U;wGoghQ1sh=771sGuVD z-g__S*tZu2B7_7YEr2mdkdE{Xh_N6b5a~s#2==vi@LJ1QVh}KL{^cwk$%Rl-X0>Z(i$oQ@g_Ek%qV(yaMijVXat+_;UXv9*z& z@|(i=Nq7~0V{)ao*8e~xL|IU|SkcR5u$z0yVpJ4bHL zCnq_iQQ$Ejh?_APJLl1xPl$;oY0yQDdhcdq)w4&)-1o5y74A&Y}{+_>Sse#d0u=YhWzZ~*8GGKe^R1+(<250W^d%ZGty z|2%U2)e#SG)~e0H=K#okGm3DTV|1p-W*ySfX7^{+)m85wA6>r=KLOSStjb*uHH7n+ zjC@3Kc-_CMdtdiF=zng0G{da9FL4lrIy@mGwvd_cgH&gZ)1LMAz7DGP51$x0hmYEIk`3TE{^XnwQZ1u^JW%QzfHvWn8k zHyo^Fm88~7pnqVuf_tj|`8Wr$#O=9UCVk$B`EB=Oa()|&Rj!|t0}C8->vi?OD;iP_ zE4On+O#bw*{INQ+m0#N0(!wfvkrV}^fLkE&_j-CB{QV|V1px%9e;+Cm@xL3cP06S5 zeqr51ZfGt*rRvwithg(2IoPC=6|nFL@CKd`eoajs)W60noysTdT}r zVL?Ge#IBuA%XICR0fBV@RVNVKWOLi&S-d2GD)JjCk7S(+gLXeRe+M&U-ZQ;wBxMr{VLc?%B0?!XkbmNWaSt|C(R|P$7{)Acq^nZ(hFx?E3X^7!wh6 z0OJkh%Po>%ZjcrtW`&&}v@n2)h%{I}*5j<~ggyHM(qI^%eYVK706hpdc9SRA?ngIB zgJHlTLqgJSEY$nPFLF4Fr=GckL4X();BcBeo+G=g7QuLrxw-islW}1Xa*D(K3-gUZ U9n!-Ep8x;=07*qoM6N<$f&y3rt^fc4 diff --git a/public/images/emoji/apple/dizzy_face.png b/public/images/emoji/apple/dizzy_face.png index 211b9db5bdd06c95f4c3faf222afd374d8a8bc24..1d02f9f47c9f4975c5ac026c77496aabc2403c48 100644 GIT binary patch delta 1919 zcmV-_2Y~pN9gPo=BYyziP)t-sM{rElejm_#9m;?z^^F9^Z4t(32g-aR#DOfvZxhLE z3-OB&%hg=#>uLh6vSk0{`(x%4!4Wt|P8?7ys2s z|NO20hq#xnR|*DF4&000I~NklB?aQ8r2DOG$w;S&M5!T&*hBY(?h65M_b7=jw#2CAWO;Hs2B8Pf#$A+6L6vkEo1?J-8+d5A*Ig+hZRm`2V`4+Rgw;RziKu3h+>5cI~PoKfS!5$9D^ zaU5QNn}2qMF>Xz_=6d6pZr66Pfk zT}O$|&@Em~R*aPuDFk(`D+{7x%1c&mc@#u}27hifryjKUHen@4dQH8-7KBfpc;J5! z^f~^ePLdZG?(!4Ar&J(9d_QjRJAk=M+#G>Q2q`GNKlhkTAWeMYT=4+`i9$shnY}<$ zDJ5u9P24AqQw;&&I8u>%8$w8GNTy{{KdNdb+g?Uei884`NNvfycx5lBHSLmJrkN#= zt$z|~woGQ3<}sPI9yHz1k#qJ9(am&<06DAK3Z9UShj~w#X35x3Ws;fPd2j?gO0=NV zwYrnhMJxJMef_qkjznPqUu~m}FD@E2HWqqeeKnN8kiUpHX`&9v_y0osoO7J%YVR$* zuy6LMl_K)vIcJihMNW5FzCrRDe||uCU4PN*#ewd)ocm$-*Y9r|$=lnz)+{x8ry;(Wmp;q71!fz0=*Q#hzU;cJ?~O4msXSNCaa03o$PeNe zIDOVJ^ux{eG$Uxy*&Z<$bb&OmQxwI99tb3QU2Aa+9D81rfMyPQh!{Gbt(8u>s(-bv z6`Y&Az1Ov_Yj)bcxAxotIz9R&O{2%tKD|n93#n1Vpqfo_;U9YN)25==4;#}W)>0vc z#%|Yuj%it*NopY_bAsl{^0x7`&!yHe^ouf6NTB}4H z4~17KBxn!m>d<-R`Ji{VQiAgua(~+RkhIQ8kEc}>e1?#uhI1&2T-`|R_1udJl1dm_ zpwRKO{3T?sPTPufxR{GEcxu=wT2nNdx>|BRLo0?Bi?eNThtT_3+U+VBdn< zj-)Wo>07+T5(H;|TCHPu{L^^7yh4laYlAqMKF{VB5YD zk`W|1H`_s}d6j%H85}7jlYd2lhek170KQUZGe;$Jd=#J$4!T;1lOf`u5Ko3(yG$pp zl9!mWjs8jhHxw>r+!w@H??@p`_KX$zC85%ZD*53kJzbo`FwF6*^iGvh#|af|$1? zYm!n~qBT3d6Dr*}QYaw6XNpQP96E`VHChSbE2%OQ2M5N3p^#s-uXH03wRMGDluoXU zICKrg{vz^QqT!sxrG5b&z}z~1Lq6d%pB(n&q|Z=IQ0g2WEWBgnT3S1asj9w*RN@$M zqImYe!2NJuVrqF0)qevs-jTsRXZ-9WDYYN&POYwl@y_#az9NMpIV$zD`N`6&vl1ux z-FHWkq!g%hTi+CFQYc`Y!zcf>BvhIVYWQ%flH1T&-uYVM@p$R{A%K)YDRxd$hnx`3 z7a31tDaF>lZ03qGY?BlU7_Ni!!k)j*!wjVywL0$0q(PE$Pk0I#sWbEE{?&L~3KUs# z)9^ugCZ2@f`{w@;OwdX!;s7pTu!1&|0Cm2ZDN$qr1BWMs6lQ44->1SES~vYF=NQ$>NfxY002ovPDHLk FV1nXhwHN>Z literal 3734 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 ZHx%=gC(OSuTD1TG002ovPDHLkV1lY!*cku- diff --git a/public/images/emoji/apple/dna.png b/public/images/emoji/apple/dna.png index c5cc643ae10ed0057da769c2fa6de3c64302b255..7ead714666551b272cd3b0fc5b63ad6b00d6f068 100644 GIT binary patch delta 3016 zcmV;(3pe!k7}gh%EPqYX+eNs{OKz;5E~WTo-2<1i8G@2d*4`A7w24=>xhJv%UxJq- zn-g$`c`}=iBABfosErbl3U7peUb!h)ty81I4t0hCXnFK0-voP|usyW!WZ4F9e-O{% zOU~J<8l)A%*Fo9i6_>K^QrtADx-NE>^kv*auEY+Kvsv`_RDY|H{0e1r?)># zn2aBn61&X`(tqU$j;;!Igf_a)4UMaffXwY&*`_F{s4}U&Tgynk&sluGzDU3nti{Sr z$Er-j185tF{Z2yqC||YeLAIuMX^f6)+cX|HG7_=6@Q@YW7#*Xz?=`9C3Cfgr>Sdz{V)6j~A0xK%S{EslYP47n!NcI>OOD$w8XAwJM>; zEyj{Wyf(V!8b_DcG0a?o%)y@)zmrex9Z*};4ke; z4@}tp{{8qY{oV56;mq0Z%+vn+{9fnEl=1SZ(0^t*Xq$^#{qMTRv}OMN@%qx^+x@fs{_xh= z@AUrsO!e}(!{vkW@a+6*?%T07tMwpSrfK-?-|NTy{nY%;d9jvzeQMxl{z17Zmh8+YRa}`3bps%i@m4p?tAXNBjE$gas5B@ zVfeuBdG9%M=6TK#|9{@=KBgUy)F5P@q<{V->3oR6JB?s)t6-s_ zp@PCPGKC{`bqt2Ncw%DWX5KaezkiVQvar%p85spSnNn9*E3KZM>gvAye0glfIJPW| zVQXtBfn;P1OC?TUzWgfewb|CpkT}a69g$<33l3r$8tk-J;XCGxTzVcyN5>T_phzB^}23L?`-#;=r=Fe`=bv zal;VTqm~R0@^fLuvmlH6p&)5$rZQ%eC;(Qhl=t9oU&MOUIWsW|clK914N&rDPP{qmv>(^)P%74<;jSm6$7?Q3N zRM(ukYSlae@?3*)%2pm&uJTpyg)CiXfGA0G1qGcJICWKadqSIWpydE<==IFf^&?1W z-{aP@^CYC+-GQWT_Tssi6CM5P0$VMMf|$p$f*!eki{53k*&V}d!SHaTGA5*Qbi<%i z*Lm7bYkf{i%8{MJgMYnjkw|ooz=3qvgS6+uWhnAUHx5=dXbQpmoFnm-^NBx4isQMjmq>5xT<%&vU2#i zySlpioH=uX)qi|yDw8+OdF+!SzNor8D7fi~Ef1Lpu9|8S|O5Jl6x%lPBjkZQ257KnFVP^YXvkwPa_`oY|^F z#plm*O6S@?Lk+jJJ%AHV$6Ru9$miuH7FBpUAw6&VXH`|d{`xFAvhroyi4|}CQ+J2j z;uKkmC>%)nU{wnVedsM)$;XyD^OG_guU4uW=hlXDL`>hmu_tj@^msofZKN&fwuMvBCNb~7hi4>Z5=T)39 zS|*E6q(WObjT{b8oJN2s>GylIWSnPlhueP!L1(2x85~XrN5BSY4M9n}G=INzih>SV zD1VlCc)&;w^Q1!OIyyTC1|}yt2^7R!a(dTe&3k_2`)v*mmrCw9I5-4KhYog*jC2e* zISnMtrRgOn_q9Iy+>eA@0%01LK$kL0sheg$GB(!PIN9 zhXp~L!N$o+r;F32vRn5p6djOLV2lfmw6t*8-EGG=PLp;kk^^}K?k6yy-=3hVT9$r& zVVaZ#(l4+=USXq2Qkfe!ZmfPomiaKiGHIwbGvK@>-8_@sj~<0J2afLeK2$0svwv*a ze^7Mr)XTfrbE`Ec8zxRKYkpy&$IgV!ERDnCO3gc;Cb6q+%)n0000< KMNUMnLSTa59S{Tn delta 3177 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 P00000NkvXXu0mjfqg;EL diff --git a/public/images/emoji/apple/do_not_litter.png b/public/images/emoji/apple/do_not_litter.png index 023274d07db7fd0ccefe591bf4177d790fae748c..78bdb8e6a429a2d4fb61070bebe958f5cb0d2818 100644 GIT binary patch delta 1810 zcmV+t2krRO8=wx5BYyzHP)t-sM{rE!E)3>JAlpzU#x@qYAqdki5#wGk?bdtQMIYKm zAnt%d);k!$CJHGkD=sfEGcz;iDg)sq0P9sX=QI!NPcH5<3hP22At50}L`3dfJ?&&i zYH4YloSca?Bce7TdwP2DcwX~_Z18PS^HVX=A^`QDi?g${^?$LT`op!t8UWfP0RR90 z$R7X|6%|1$C012c)Yol8 zRV_;`b)nV|7y}eN9Zi4zE%IwR>UlO;s?q(uR?SvPg@4%TL?StM)m5-ctAbTr5g?>`Hb|xRlWiH`=%XnFoas2(xC$W-QQY8s zK?XAEtB`W@-y9XvpP(~626P2+oRx@so^T0Dq4d3@!M1vnDU*&HFbJiJLN{S}-Vj0n z{hY8ylYhzeUnSu{rblZR%_I`$5RbF^ zWX>ps6Rvk24oJUZm?k9>aA)i0B|&2Ad^Ye$8-KIY-Ze`uDZEl59fg7fPOoR)Z?0Je z-S4qng_cQ#CgaOEAOz&R(+4=cK5VYrd{8J&d!KJT5iSvBBcl*0InG-Tmg{hGl^dw6 zsfGv8+X`233M3j_wmXsSC84==NFlzVYTdg+eaPB@@0Dix5N9tFN{OycDXfPn%^P2j z%zyX$rxj(bVM*FY>HQYk1w>X_`+eW{pi;SbhuF@1-#<8TCLr}i(&P5qO3sNvwyM=T zg`H`t?RnmbUucJ|fq>+Hk;Y14NLQ>-Ka_O=YkgVi+x@l-y zE5Af@%`ib)6GckC_eI(z?+D2_(LhH?UVo)d9iaj4Oh~JfC!&M&5F%^cGy$5wWJ7A~ z0kX|O70pd1V62l7$i(lA_pkMW-TAu zW)&gBI8eMtTlRyV2o<13=*s8Li^<)H;AKQko9#`tL~%Dvh!P~S(PEs0xqp;(qU$~1 z8GAzHki_1^-KNAHFLoQ6H5!N8b0&G2L?R0dEo+s+i$7G-cqNfB^q{g)xIn46J4*Hl zEoa4FBwDXaUWsBQ9MpKDD%!ANJzBa6rw+ zP?Je)cbqy@@^TYwE0)J=6B&5KSQ4N(d+<9p?pT0SM<)zR9O-5sir~_|~pQh7-Qb2JF z0|p?h3^KD?weyt0Qq>x^VissTs9>8~Rn&Q&CQ@JlCbMJ;Fx^V?haa*q3pLCPkk?ur z+Wa(~M!Wh_dzGoZbla8A|M?)Q3K1Vf{h9d(PQHE+L}f&;01E&B07*qoM6N<$g1p&P A$^ZZW delta 3539 zcmV;^4J`7Y4%8cvBYy(`P)t-sM{rEtcSz7uF}6S@o&TcOX+QI=Y%}+y@#UHOzjoG9 zFV#>l$5%7WS2NaRJ-I|FsV^G6M=7v19<47M$4@TAQ!mIkA<|$r(qul=Mk%>OD6uyn zvp*%RFdNHQHNr?L(@ibAOf0=lF2GVVt1lbebVk)aBi2DC*MCMS-CH)@UpcZoBd|9g zt1}$OKP93#BG*PK))>8 zKqJ{)JuECN+Fd^`E-o}PGuvQ8)L9{K3u);uEFJ0aIXCH?;X+h$4FRyapTM|^yI+gdwpYilhrGS^Tt z-gR5(o{91C@%#Jy93LML5fQX48AL@z;8!=)I3VL>MSt63MdOKbv9Yn-Nh!6pwI(Yp z+-XhTaaQ1YUnnUl*i$u}oSgO7&G+5a+S=OJO)k+lA15s?<&}WqhHm7Icj1C*8yOkk z;^Uc_nWrii-cK)_J0|R{oaB*uRaI5)yR9W08t}xn^2@%@k%IZ-+Wqb3_xJbUerD;T zkd8YihJQFF>!_9Cd}8dhqu4(q$u%A`CnUE)C+3-jY&0i#H74`U#P!q2yDu6$DkVES zJe@=@U0hsrbaS;|O5*0{!8jhpOfXX}B}OYGPEJnmx2EyHu__}XXJ==vR6drHk=j@} zkdBR&WLJPeG0j6Jz(FQtWMnliEa-GsLO?&r$bZP`>+7LYKmX_8)!5n0H6CO!C8Tm? zk4!wOLMrNqZhST->y35ke`I%MV5wnGHZ?WS(b27~t+r)RqNAhEO)x|;EWN$G)3mCF zhK5o}M$L+P-p|YF*U^MTGg&h#?wEq@k$T9PjdxT_gkDs`a9ovkZ?%tv!NkP8qnt}W zJb&bBO{b@){Pgj@U`m%L#~lCw0626~PE!CciIoF55&;GZew{Z}DTVc$;`wAi@fAkM zZPTRjcdU_-e=q78_T%wrkc-93)c4o#Orht#d-*c=IZ6Nk3QI{uK~z}7)R%cs6KNX8 z2NXe2ER|JR%VVczJhrARt(}?ebdx4@2!D_S2oQ-mAcTYoN4Oygat$L#Kp`A~;*!G= zIh9i`Ek!^CFTBRv@xHHduARGfzwS;#BIr8%-#%4TiFEzyd7t&Wy7&1a(GRC@%cI&O?{8@^%g{|W{7E8u3Q5cK0&VSL; z!urpYWM#JrWrd*vah$U>yCglms71=w2nBE(D{PaU)jOAHzj{+!7z&GBTM|Zkc766G z&}X~yYMYB9@?kVgzQ*p|T+Ojv+lHdBrlb`>%(N?SXB8Vo(YCdg?~s+nC-OEJ))bHA zZO26#`VvrxU-Rk`*eJD4?r8O2On+I=-x!Kgg)PH9Jw17O+jo8S)%KS!Uc7ku68vjd zUS3{LcTa7xh69JLoj?0+oY}T(=pTvu1u-JQ3+``4&}vy;rxQQDnnw~jr@+uqaN z4gNHog~IYRmT%77+QybDrwZbSYin!kdg^|?H7QbybSjljq!X#tYTa)?J%8!$uB{!Z z-B~Q;$mOf&zOn1JDRQc~XeUr@?a$9dY84Z6LJ(}A?7_s592!rg9=-LXZUp~(M;u3< zvic34tZn6TSe)M4+B!V){cmbf4gvuo*waJ`g|g)+4T3OP=D@j#UO|dP>+5duB>dX>`-vz9ETbEzEKVf8uskj)7)Hn zT!PU_4#Yf0a46w1OyYM;r2DC|89Y`6a$0LO!x{Y~6o#b00Gz)ESB^{i%}As(j%B24S(gRe@N&kEG(45 zaLTlp>^}~Lg(bzsRe%N5k#Jn^34wBP&h9800vSo7AHS`tDo!7#%0ISvt@EoxVN_aF zl>T*bF;1&0{1$j3KulWH_hXmy|TP!1BOlW+1x)xgeq?`{sRh4gN$? z5pE7thsFGIK2fjpj|ZI$rV!PuhL)D>ETOz$m1#;AOH$yttoZEsA(g7;{>_GlmWGCg zlIzEFCU#Ryq|7yzhv}}~jE|3ZhUH64N5J+H6=h4a&Ro!8h<~c)_RVad7N9FT!c9Sx z-KUwx;(Dd=S<(oxykPazMw#oF0*fOurP9L^+;z=?Gx3D7v%fD@nvrsiy~9)&&PX#O z;;1Pb=9okcDocy_eN5#FGOa5X!tqzw8U(hOUaye4_-6{L6GW1D%)jT%(=A6FiJ}|>;<54e!s-nU5ThaHG&lT`N42PiC%f(~==CfUKv7_tHhffCq+t-p6abix0*L*$5!OP!Gkgw4UZ6nWn z-?1$q+tP_Kz6&9?0{1ix1W6i`HTeuq$o`dj(8~S(n^B?WVXu}LkjQg*B#B>a)%B;k zI1|E2(|N&8lMD3E9%eB0O|xF z)XjhYLOtkj+<-tB2N8P%tKOl!JLr^y&>@MgUr%z@)R#^JZM&SDFGd3cxc@MKd^|j- zKoAmnx{q8Kh(uSRCygtf$4mot0uXEhvP|;uA5A_D=j}dKZo>XH7PvaNvhEK}~ zWbNtUV<>H9l2?eEAmiaskYPlO&tlNvfoLLe7w7T%gOmrDsiUT3p#XrA3}HLqAXJ!t zSgZFj^)M~+mkB@ua&~cveqOc}gG?M%l#4;rypjy zG=G;MvB6JtQ;rD-VYZhu;LZN-Nrr*6U%~b8qzW<`Nl;GAxtKeM5kx61JHThNiP7Yr z(8d};vAqw40%~A@?_$FdS-L#Q%aa3Vv=c_0w%(;EpE9RF;iZH9d=li!|7IJaPmr#? z3@QT=aTgg5t#KFQ78|d-3Ok4T-f}pTErMp1_O2r zaZfU?5$nJD_!6}>;rj?dA|FKMAV;I{%xMJZ^Qhbdd{=;BgY9>MB++Ag50RDmyl;Gu z%v<3D`UcBR^~Mqx85*tco-(nTW(1WTJaz!z1vrWSjTWztuI{38=rzn!jQka_X^V&r1e6=5`P?aatLpnQ{QQfybVo(D9QnKW2!4av7N`08zqf^ z1C}E<*zA>UZMDJ=G>!wau1$iQ1CpEglpIM@P>f2~n3@J&9OIg}{ECwd0SC0qJJ|dZ zVYASWI43BpQ47(IDk73Ct2XT8>YGidIos8bNv>-g@flbf03WJue(QpCyoN&)GUK!VFH-I_?AIZ1y}9RM4OPU4nn@E-`g99t}0!7hCr6XO?b<@ z3rjoUm?wm~8#}_)z;?sV4H{USM!08H;o`*iUcvQlRWdhEKh142W0o>7d|PM4aQ^!5VimS N002ovPDHLkV1g;dy1oDa diff --git a/public/images/emoji/apple/dog.png b/public/images/emoji/apple/dog.png index d68a8fb4a2b95405fbb5844583dd7d93db6eec8c..67adcaf5412ecc77f1e2a5a3efed31320a95f901 100644 GIT binary patch delta 2104 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 UQ>fhH-T(jq07*qoM6N<$g0Ou>i2wiq diff --git a/public/images/emoji/apple/dog2.png b/public/images/emoji/apple/dog2.png index 17e80208f53aabd6868029547a7bfa845651a5a8..9196a8a4866325aacc0704dc4fd031b42766cffd 100644 GIT binary patch delta 2234 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

    Gfw6g#J306r& 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 m{8Fo%?FMN(M6B0w#=ki$c@g1*i2|4a0000 literal 3592 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 literal 4203 zcmV-x5R~tUP)%2_vz)$naSx=*#^U7A(Yc2WHVEE5i^wfUKLO^&p z6Ys%HCRR^h8W*lKG48%g@x)X0&}qd$KE6CT&O}1?&t>({W;1VTf<+rnpqfG<312b~ z>bgnmyh_VqDfQ54_s&?%pFVda9cU~S^vz=M!cX+lc9$zCz*r@)Pa>UKAfJPiFWM6465Og&ftZOLZwO^WAEu>o`p;#hzFBp$gB*~FFsdXxxXCyNg z2Qn82sc|Z9D=1np4#|}_x`#1KRXd<&E}%{z%%D?JE)97{7ut9*s&py%%u&oiKKIH{ z_|RF)KReiJEyz7O&O<@fV=LygMA>*S^TSKNH!{XMH~sh8%v>qhXDr%tFRw8y*ljMT zFDuVqD)7Kb!#Oqe$4<30FSSo2=($SLVk_gZL%%vU?Yu{#Ehw5QCE0K;yiz3UxJBHm zKj5xG_s&(iH#7IhORh>G)MzY^CnLi>ImTKiflwUl!B>b?9oD5jc#d>4$)ZqoF%{{{e;!Cefi)K6xK(H@5*`r;X*v?`%4n^KJ^I;qRx%Ji z6bpN0GL&B+QWX^Y;EleLIPS+#4+;llKo`SPD8gea-kv`8>d0Ou5MVVE-Lpp-JU7{n zJ(!4RH!U8=nmVyHF!I`*)2>_d->A=XIIfgo{rTgcc`w|)c?~2W#IuG!g@4$tYC}aZ zj$z1pPP zREVuD&{A5`T3T?AhUJI_9qYkpZPs+GZhF{ zl3i1}-O<|AlxTJ2m*=b({8F+@Rx^3Oh~!i|Iy(Nsr=zKBd(OJIm~}PP$qw%_<3&vN z+n&<2@o9(Go54B~ePwH@?6POZfmMvRDZh06Tb`zev3spOfj~zG4|;pnQtL`v2PXR8 zV49NUYfNRW-iI-JI^WTnXleoyIBz0Z{zgqXt=@qcyNdC`)z+A59Nxf{6zvh2yYn4g ztw6$61NW0}1iG~LAQKiDv{$phC#B#LU+!pqNiGu-Fo{39XBczz?scJCLIn(-`15G&Pf8Juum{? zj|(xT43qzwS--XKirJ*|`|Whls#oY;3X#~v$-2#DE6ixO*%U!c$j&heu{OhGI+tVC znoL?J>j_(#5E~Ke^~fa>i?v!)@$%(L5M#0+CKh6ahE|7C4X>z8VE`vxxTI@`!U#oS2 z$_0>O8@B}V#E5Yt#-Jc=J|?wEt5qNdAVo311U86VB9kr_)u&-#

    S~F%SB+CT&`; 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 YKO+b?!WTb582|tP07*qoM6N<$f|vwR4*&oF literal 4532 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 nRX>OPhTs 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 diff --git a/public/images/emoji/apple/family_woman_woman_girl_girl.png b/public/images/emoji/apple/family_woman_woman_girl_girl.png index 54a6b2ec8f1674d65dca88ce4c974dac43c05e5b..2410ab496f391af0fad5ba97fcef76eacc8e2981 100644 GIT binary patch literal 4467 zcmV-(5sdDMP)SDKLO3WNcze z#X2T&6mMS;TAOSzq9IwxR-lVTMxHKcu1Y!WonE|mJN?EdzJCtqs~fR%44GX9c|QWo zj1a|!4UJF*lT-x%^v?FYA^XZc@3I{8yfFE{AG&)^uj^^$td~GUh=pp z{n>T&z&QTzz@}#h_{28YnH2xaF8{|K|IRi3(^4ZB31%Y(`{}m-=8)*OI{V&_{?}ps z=BEGfw$qv$zKbIAxgYGYBmL>GPYV=2Aq)4&PNN(iwUSMz_6AK3a&MyDpf9=02_QEXlwim;T82$Fvr8ozg7962(6|6i6 z&`S%nKna0fC$1hMgDwZ1HwgdFJlVK$x1)O0qBD~g8?=Tij4%jxDG0np3dTnY+<+(l z+gZt=MAolYd=wY|(L#l8LAHPvix(RI)Jfc(1k+zH;H@XmZy&lKCe@5Lo`Ff)tT=5& zAIrg>=;6NBr6c6FCf}GwY7i7yKQZZ)AnK$t;B^z>T@1Nv9h5W(>(rV0%P+;JYvWQ;*A|Upd=ewy!$lGFwD%%V`gS%2s1PDG9AJfxVO4zV<%bZbiaSPdg|$?-hv)A zwl$^2+hhe0SxF(bCI2r|SWx!qtbcH@+iwiiRF(X1X4fAwg;fp4xw(@Q6B8#-o}BA3 zR_@CCh{-Exm`y5jjH0K#a@WUI6_?F$vvUf?$y^lO0r`hiv3!OLY-I)mWyK%XQ#N&# z{?^}?OwIxM$5dXK|5MNPO$O2yulc|v_ba>t)e$iIy9e9ak^n+Y@tXH)+T~XS=+yhn zV7%tNg({d;B)y&xrwK;`v&K#!dy;cWe_Xz0on&!EGT;djvG|*p=jPl#59|XaVt|&868ojgKjs)GkRyt>5OS4Fd9|K-xb{zRi#Ohp+02telJKB zPNx&P6vq+*<9VfV4j>M|L^x5ATgw8G=|v2^$v}YFnJcMqk7g~Ma8m9dNoMpszmbqI zF>BHa`$4$6ZsSXkhfAe}G9Ro@!7iaGzW3L2{#9Tp) zi(_oSBoL!*$P=sHzFij**j|lF6@Gjr8$p;ML(u#gor|<6_mlurv3+|l{}IC>CP)q_ z#km!zGXxXTyR<)bBvb$`E=F)%OOg(PvC{-g?vw#D0CzTh5SWe}6A>BCW)}$7CGK01 zMbFqhEO~S6!i5L_YRWD`Rv&zGVQhmHm=vMwF9K!&Sy{`?u_qTEq$Ng+m_8N`1HoEg zu)>B6&)6x)&1>^dTD}>HWFh#~`D-n|UVX~(A$Mk74kCxZ*i*s2YxDC<^Et*le{C2T zLI}AHNK{;*4>2b0#ntbZT3W{Z*~M&jQT4;GElakxF*X$v^y-E}Oh&+9#EXaDx3nyc z4K^X>N*gfD;J-O{NT9aE)V7fx5V7kk|M_m1_D(dzaE&Vy^TVcZ6@eFSo8ZY*6k~<^ zco=Mb`iJj^dGAD5BQVnwPloN+=Vo6}z*DNb_9sp|^X* z>Pj&JP3(j%*(-!hgbxSCJJ<6Vn8nA*4Kup} zyL%U6+^${=5s1hzxE9W?!i&au^IO5%O5H5m7{vq*@XwgPxE_&k-3UDk;(l z9#Uc=h`|vO(Yib#_t&yKBnmnl4ud`U7}wfof8 z$YPFpx*V}uzS_In&bS>uT!j^xB@;&zK5Jz4jA>!PM6KdlHAfg6E~wU}{(7giKS=RR zHCB3J9hj$xIkSpe*H6@8`^y zB}mXV({2pgUvJsM)E~yM!{w$>igN|ADy6dDY+hGy9Gq<7Gd`=evC(Q>*O`_kO;1Um z8Aj0-)E(2K_h|p&FTZFp>C9Fu4vcxjzVyYH`|HZ>jF8gr!(>{kR%z`$IEgYGA~G&l zhGK>%Cx<47Ouda-pU*18YL7D}Q+fFUWO%_w>3VxN+zd2ZTU(EpFW5~7t4py$dBuSP zeG5ZFzd(kDhFWjmZXH5*j~>Afe^(x;ki#2Uy8pBCR_MBP3A%H+ed*S%Tku2qXVr%> zNZvNtK5#tBMQT111FmBQC3zxMeH%Ua4-|MFwJxKe`@KMjsRj!?b_30oEL*s;#*t$C!`q_ zbNck?cz%BVj?vTO`7iUwM@3aNj0GN~IlJREZ#_D*?U-$g;Dz1R`a^XAQ)i!TE` zJ#Fyi3kiq)a2ae%_ISskq|afMcX+3uSL_bNI;GxZ{I7S**spPBHr#Ft_Yl$Gor+{W$3~7}!TPdEy@X#BrG2|2UJ8c@d|Cnuh{KVQ@-jILVkPprY5Gd=T5>IS(b2OifKqCJ=RiNRwur zIA?U^$dK8>N$5}XGGtV#vO6_6#RiS3s5wM>F^LD0WU(?iWnhYKIuwCNTN0dv=p*|W zH!krgprS~>tHQ&X=^fmOi?ilFzfIr{DPi-Q<3^07oMmJJ5ok18l|Ts-{(dHa8I>;? zl`8`LAS5stKFv}>fa&+U2?=njiV3%$5#Z*Ox~ZwGh_n!uKzo^f((OvRa(oIsbqSX_ zYc~&&9sxwKdy@Sjw>#-7R1{jdpUm2AeIY>+mCNP#-#e*@N)&A$vYJVt&UMYG* z0~S2JEl^Cq+gq$8__s8LXgomPaO2MMJ5hsHlP0oP&A3#U-|dZ7&y3DL>)I`PY*&*6 zd~4pTR$9u^hCUhU5OZr5&M(mNC)XyhrM08v9jgLa!87;+Pajjpc6jS(KrzTUMT z*_aPlhWgmS_PL1pUX#+~VB& z7hFo_M_$b>e!u?8K!^HN`sXV1kZpN$rE4+rJ!k?COjH$V z)Ao>iIs9m2ZT{ZBBsna_RyKN{-kZXGX8R7jW8935cKq|@+LPb^A@kvs{OD!x{1@L; zXq&xMMxL`sRF6yzX|v5qq?Q)0FUi5J7%yg)7RJIJYQk>ohL^*R-EJYc*uuh8Sma}J zPzE|3WPL8LGSFGL+Fu&#!KBr6zcKr8&m`=$91+MlVfm57NrHBnk>|O-hV-(YNr?}N zm@j9+#Gu4YdMK|;@qp>XTM<0o+oYRHU>wI8C8v)t8aYnHguqOVzAAcSr||@$M!_dk zDQ+?3;jspdBB}>b{q~i?5d*9_i3*p<6$}PLp~!IQXdmtnVO0@468{R$E4!iBFdVP!&t918@;{$^g3+Rh1IM@NN|-sh2Bg^ zFi~i+Yy=-8%kR0VJx$N4P`^i=c zHddgb3jD&}go$tk6x-Vy8yi1uL-`awwV&6ubarSU4;9*YoVFv{ zb6H(hqr96)^GS;iisz1}YWf5`h@MBZxw-jo%}UPIHa4PjOzJ<2I*_Lp^^O86)P<3% z6v2Li*HX{oQ@})MUp&Kl9Xn)^IK1famneTIGxD@4-yCO})Q9JX{$UhCUwm(_qnI zD(}Ed`q5qY&Rua!9`V9VvN$$gG7s~~STNDOYgu+_sC4*u|ny(Oyspm{rB7Ly-4-OP2a3R)S^7wsz7r?73#lG`R1#e zW+Q@88^S(3y*xR^lQy?FGofrIls+5z(_inxRJn#R({L@qjWe`=E{RqhjU^-b=(qdP zRK`I*lwu;!ojSaXG@L;l_~4iN?ZNx-%K7A={q)hNE8eP_1ln)Gm(}mC68Pm@5Nfm zWYO}@ZMtJN`r2-ZIvM!YX@4~rXFU|RPa}CD9?oYi^vzuJ(slF8Q}4-Rpe-r;-FJK| zfvrj;?#57S92)!Jj$Sko{_e5Ea5n0|TB$HCOf3$=nmypSQzID+)oj|>cipgwJmt4O zi)Tc3I~bZAa$J~6AAcIV;0 z*T03WL%2a0EQeD*=+vE}P(R1Lps8AMv1wP&LlmRHf@2l*iw25EhMEDXlPSdEV~75 zKnj(G#DI}aU={R>csa(b>)C|3C+4hv*qkrtJnu|F7We<5^G=`N`=4i?_cE_Uvaa0n zlZV3Y#zwt6oOdYyJ;@&_w|Li~pujkR+44uo*7C#QrPd3gS{t3m^K;%|a>@?}*O?ZV z`*?otyFMqUEx)yb)~xh-dp1*Bcdu9$H!_WRyEZ4DyK7=0a#!ziwY0Q|;JZ}LF8v$( z_wL^@!Lm)vZhh-wB#_PvyY-EYK(>n1){Rg;Vz}wIOzXQ&#o<=h3dfttXe=-6bnEp9 zbm@b;H`FOB*xEA8g{+&IT^lN}_0W>boer=z3#p4**Y~LGCEUQS5loB`fbo9s`dvwTE^$)`8i$2iX`QvN~}OmnF%+UNN<4F zG7c-xo6~EIQm)1`X=jy?C?UH+t<%W~N5E$PKAlFGS}s?U+k`=>EI-FoGcg0 zxJ{uYX&Yy_d2?>MzJ>zKV`llAcXcK?K`1nP(A$@(wIpM+Z(x{aHgsQP)c9dk?&=dB z#=u7`4qYMjLcAPl1@T+7f_Hf6V3v?cIv(uy7%pS8+I3lC^_pQ&z{q|7K=-A50(yOEdz*Ha@o) zLpFalyjt~F9M8rr^6}RXr|gRt1_7!Yzwl@|ez!G`2FUJ!YUiGTjLeF**Z*1O7cV61 zfJp-L@NR3E_J?fTm$2Vt(XbBV%}UJu+rnbYL=9F`gAKO07FP7*D#pm#?A8-7Bs*=P zxK&9x5#y>wO#KpKoD>6_hW%qSXa;+PkNXv>x`AF( z!DD>fC^BttnQ_E$tnIT3v|AA8@&O8u(;228*mDkU)YrFAOe%c`TL ztdUmMB_suM(aB=BYE;6w(?wQinVe61ClIUg=Hoye@R?=;*jCsv{#XJAF{_`S5Mu zix)3ly!2LZ|FP(F6xnn%h!VXz;41tBcOSw^%God4pl<6f-JsF#ZuFn9YAgPNZ2AN> zH1u`%_xG>%HFWn+_K)@n&Oq(_=!#&|y*l~JFO#d6(4~L0dsGluoq{42oxXe-Y_5U& z`bM9w1mWc4eED?I4QJAYez5A;d+y*Tg3sztD|t@6-o0{X1uo8&ABRSVhK5E_ROYWDKz-ea{^67pWL{SJkO?n|bu`)S?gq*4*e-?ah z+_-VAKX1a-2-55I=`{R6)3vnN4JmyBKC3GeE|(Y`Cf!2VwG{k$s8dYpjAU=d=f-4k z!tHcA$H&{+l1xvst!*5g$R=L)HFQ8itFZ}vCfYXb8D5LVzU}PnL^++3?Ck@a_Vye7 z!{d3wvBANv`uf@tv!SN8zH1OpWZ~o_RQ&7i^muSBTI(>6)z;Pz4(El#L2ak#^uA!! z-roN2^zhZ_$Ovrf;Lv0A&(_z#4xfNC83`|U(F4(_5UuSR^Bc3*qtTy5r}rg)5`5Z! zO6YVd_&k8kz@XpnZ5|k?hfjryB*!KjI{Kq&63;{j=8Rr{0!5{ih8(-oDL8=)7S9hm|6+Z+OEOmz;|{BVVp}Q2Zg9o{%z+! z!0G?3m)lPhc@)P@A67S}JnRD@AtogI5BOw!Tm2JuI_=DK80z!_w)7IxTei@NilwDQ zsKgy?5Zg4HlpU9DW9({MEv1_jk+Mm_Ww{i>9fN|Pg6lPVep3*9-|xe;$@k=QPWn4N zzcUClI%;kYu_{6dobW(+EYLw>YP)_6NOD{aljP^$m^zZiyc&p!|A+#iNE}m7}wTnkcTjZkZ6*y0jEm@feIwU z89E#}PQuqg*FyWo;U44y9R@o^Ehb?7cIvH`Vu@ElFQMMgX0yqF*BOA@A==i}1)vI} z2qHAjUadPT#9ay$3J)Qb6?m=QsbQBB1Q~FeO1#j3mtBPd&t~IUShD==5m2MixTq}F zJ6PA)OW?i)F!rY*V;YHVyY zMp@?#6Fs!Fz1s8Ywj4rly;)sNznb)D4882;DCMoUQl+KY?ez9>ASv)C5IDQU5&C+n zAc9UDt7t@^W~RmIXO^y+91!58k{^l9m?F=>0;`U?*2DtoEccm;2=k zdH)sox^iKKu{xQxuRz9S&f+H`S6ig-*i}wV^&K083Xjfyxa_c#%6?z>&ASTObsvs}?{;@bl!TkJ zn_)O4tX5bFz`YcKzWLQErQURfD`TPELYSlf{Y=rpM*UM7BZaF(JmJbuP&69 z3z^FxFUQbvSo~ZrO2?L6nn?~pTO$xu^i4AYeSY43dkEGXm|k%{pG+q6yjT#I85#M! z8G8QYc)r6;&;lmxy8;Y7!kroE{-EFlR1uI)h_-)57LYaL+e#B^<-r1 zW~(n!%6T;u>~xi)I~8}ySWU5*^0i*NWjg}$MdWqx_GKbrOeUw&>GVt-rWVtYE9z8v z9%fj4C|7AEDK*Adf;*LW$!OBrQq&38eRqz4qJli0|6yluM@tekCgUYp2&4v!dpkv~ zs>IdF1xc}TZ--+DR)(o0JccP*VrXjbWeEoGV$^2a2Q?cP3CmX-^0GL#>b_@k0DRU7X1n|8iRxo`0!ADfI=iFX%uBa?jz7s^Z>hW9FgAHqH9M% zTOtPqK0OdZArh3dC2}4;`ukA85=jdQRL~lLKou2LXMa3*rn>sueVsfhepFYVk)At$ rwyNsv`LcWRP-Pq3?@x$2_J8R=Qs42Z`hKYr00000NkvXXu0mjf@KgjV diff --git a/public/images/emoji/apple/family_women_boy.png b/public/images/emoji/apple/family_women_boy.png index 68e18544ea5d8c915f8eaef0102398d3037d910e..9460855d55282d062095320f976aec8459a8335c 100644 GIT binary patch delta 3198 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 literal 4203 zcmV-x5R~tUP)%2_vz)$naSx=*#^U7A(Yc2WHVEE5i^wfUKLO^&p z6Ys%HCRR^h8W*lKG48%g@x)X0&}qd$KE6CT&O}1?&t>({W;1VTf<+rnpqfG<312b~ z>bgnmyh_VqDfQ54_s&?%pFVda9cU~S^vz=M!cX+lc9$zCz*r@)Pa>UKAfJPiFWM6465Og&ftZOLZwO^WAEu>o`p;#hzFBp$gB*~FFsdXxxXCyNg z2Qn82sc|Z9D=1np4#|}_x`#1KRXd<&E}%{z%%D?JE)97{7ut9*s&py%%u&oiKKIH{ z_|RF)KReiJEyz7O&O<@fV=LygMA>*S^TSKNH!{XMH~sh8%v>qhXDr%tFRw8y*ljMT zFDuVqD)7Kb!#Oqe$4<30FSSo2=($SLVk_gZL%%vU?Yu{#Ehw5QCE0K;yiz3UxJBHm zKj5xG_s&(iH#7IhORh>G)MzY^CnLi>ImTKiflwUl!B>b?9oD5jc#d>4$)ZqoF%{{{e;!Cefi)K6xK(H@5*`r;X*v?`%4n^KJ^I;qRx%Ji z6bpN0GL&B+QWX^Y;EleLIPS+#4+;llKo`SPD8gea-kv`8>d0Ou5MVVE-Lpp-JU7{n zJ(!4RH!U8=nmVyHF!I`*)2>_d->A=XIIfgo{rTgcc`w|)c?~2W#IuG!g@4$tYC}aZ zj$z1pPP zREVuD&{A5`T3T?AhUJI_9qYkpZPs+GZhF{ zl3i1}-O<|AlxTJ2m*=b({8F+@Rx^3Oh~!i|Iy(Nsr=zKBd(OJIm~}PP$qw%_<3&vN z+n&<2@o9(Go54B~ePwH@?6POZfmMvRDZh06Tb`zev3spOfj~zG4|;pnQtL`v2PXR8 zV49NUYfNRW-iI-JI^WTnXleoyIBz0Z{zgqXt=@qcyNdC`)z+A59Nxf{6zvh2yYn4g ztw6$61NW0}1iG~LAQKiDv{$phC#B#LU+!pqNiGu-Fo{39XBczz?scJCLIn(-`15G&Pf8Juum{? zj|(xT43qzwS--XKirJ*|`|Whls#oY;3X#~v$-2#DE6ixO*%U!c$j&heu{OhGI+tVC znoL?J>j_(#5E~Ke^~fa>i?v!)@$%(L5M#0+CKh6ahE|7C4X>z8VE`vxxTI@`!U#oS2 z$_0>O8@B}V#E5Yt#-Jc=J|?wEt5qNdAVo311U86VB9kr_)u&-#

    S~F%SB+CT&`; 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 YKO+b?!WTb582|tP07*qoM6N<$f|vwR4*&oF literal 4532 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 nRX>OPhTs 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 diff --git a/public/images/emoji/apple/family_women_girls.png b/public/images/emoji/apple/family_women_girls.png index 54a6b2ec8f1674d65dca88ce4c974dac43c05e5b..2410ab496f391af0fad5ba97fcef76eacc8e2981 100644 GIT binary patch literal 4467 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 diff --git a/public/images/emoji/apple/faroe_islands.png b/public/images/emoji/apple/faroe_islands.png index 3e32d1dc94e4237fdf6d4c5625574eef3fb3b1dc..881bee31eca852fa3384ed3191b5686d2c3a4f36 100644 GIT binary patch delta 1727 zcmV;w20;1970wNiBYy#0P)t-sM{rET!^CEEeu|2Wq@<*BcYn#r$$@=?mz0^0j*h~@ z!h(W=acpf_j=CX1YR1OKZgO^Tb$E({gn@>R$jHcie0;O9uf@g1zP`S8c6PYD!N$hL zf`Nb+RfTVIbP+mVbXQk{7#RRVc$_XSloJefAR@+kcycQ^$bWZss4OR_DJ5t?RQ~?` z+}qpx`}@_^)!5kB-`?Kk2Q|xdM5}0cp3)Cn)DZLZhRjABE5XSEB%4s`KmP+aVlBe!E9vm^zBfTvdYk`S`1= zs%mzqv$C>`t$)heR9D#P^)PI#8)B%EJyNZ`&GYl~{Ppc`n#8fp-|kdl>bWs`tWa*eyVqBBf}6 zmLMPfLp*9)NxT3604#J;PE!EeIsKv^{0s-KAN^hWu76Xvn%!A3`J$8a-F&x+qVd~x zviqW~m5KbnqN1Y94sX5y00i|(L_t(|UhUTRQyWJV2k?L_AqX-EkPX-Y?8GI>^?vHT z_fGGL^ZVH?DiIgTq^5GhF!9)dt(MOl`%cC_g6e$av_K?B_(B*_%w1#uXHG9QGldjbQ0 z41a^rCLI!y9)f5=V;~@qL8w2Z@eoT28iuIRqqq@B5*~qKHi#k2HNH^lw+7BwNVGwT zL?1!}C8V&ut*xyrM1nz$LUcsn?Af3wLX^QU+-9?Rd0MY;L+bTjT(=wSfNh`nI(F&X z;B&Ql@GW!`4DNr0c!MhJ{z&%jE;x?apZ#({>3?OjNp>Aq zCg+GKvbgnO&vvT=6=B14`J?^iKTLsf1;!?KO%!JE^oN}eTg$ZX{<^0H9n;5Ai|N*0 zyJ~VMpg}TvLdpZ@QAHI+We1NLkH@oJ3=iynh6ZYS=**Ue&TO8Qr7R>62$V+;HpFbV z$m559@5tT@3>|C~L5AtyYkw3{#zUhA8)e9?Ge5_oV=JP+|%IP)6fiT(orOtaoM2hb002ovPDHLkV1g46QR)By delta 2753 zcmV;y3O@DD4agOcBYy(`P)t-sM{rDOYjk#YcA}b^j*gDNz`)4Bz>|}drKF@)Mq0UCX$-ch6a&mIQ!ost$u!n|<%gDu*H7^r8ZNtOE z!NI|Kd3l3_gU!v&goK2{!^3oRbj{4mb|fH0Ty<=dvlcsI%zwOF;o;rf-2VUm`T6+U+uPva;MLXD=H}-5`uhF-{nFCX*VotR=;-|X z`~3U))6>%^XRm5zkg8m2IEK*P-rnNk;={wj)lEnB_4VFYQqRxN&`Uu$Hy&t!++9GN+MaHCS$AX>+2+5rYvu_ z#6UXD%*^IZK|h7dg3fvGOewx~|ugm9@r@pvVT%$)%l0Z&vPHNLyR&{lqhDBPm zzsp;Ow7169tGUXeRbwGpl)rLs+2roY&eNDEA5d|jcP=q0fziiIN{N!5dq7U!*V2+L zC4WzAh4lCKMnqrFZfC=^k01a508w;OPE!CFI|HpF3JIbK6;WjHqL=j1g!EM|p<4K& zt#Fzuv+&{M+TE$JNZ+=DchKR(v8j)ut?aF>WTrGL@9@GkH^H>OqS~U0dAohi`s2#; z`0dwRWWxvm00$;XL_t(o!|j)6RFh{E$A66|Dqs=kX&rT2t)o`!>fU=u0$CX%LxzMI%P2xXK!yxivK3{>a__zO=)BMS=FOz1wx=KYf5=JRbKc*%_dfUe z-H*3^9ve-|Q>FVlj4|4U)Owj`gSac!HRyuM7 z0UD;1%49B~)RjKd~@&Ky+2Pk_ZPLNksC3kb{1VV4H9O&_!tX&tk!?tcBbnnQ=G4_6<$P;-N$j(^Idyew!fuDXNu z=ML;{E|dgh$mRb2zP{Pn*}lac)wk#_6Sbh_(K2X9AqrH?FakjwbqCKMXlPDLl6Xmw zlD5Rg2Lxnrosa|uvdVVakhBq4Y+ zD0ol)wXEYCE4WZOXBQQBKm}_+4FOtET7ok$3isq^ zoo@AsjEjp4smf_=%nb}wG!+yyH6ss+7$>UkTUa6o)KR5a-c0)?E-&pLiFA}%fx zV_=G?s>%rq!&6I! zVhxFUNDkFF(e|0H*pE*pCpQ&f90Y1?Y($`{Z6R*0r++cVzI})x@$zbEY3bVoy4i7} zxColt|Cqt?_xE>QKB~ZStF499!cb~ety%efg?JcA5=lZ~!|ns;&ez`;fhEC}rO+ST zxN!L9u_A+pyvyavi`zT9x}c7|y}jMNIr#Ahr(s>)y!$}?!8&y9>>TYqMVLi`)X>7b z+xa@soPW~(Y)BZLe|&sw?3OK0v<;co+<+KNK!A&2ek9VkKg?RXkQ}9U(cS*#$_s~2 z6cO#n&1liywT6RC&GjdYjc`Z`=8(q5rVLV3IJauRX3m^BQ+-BzMX=kiGd4ZX#?5~K z&*oqW=jDk+DZk^l-_Y3B8JIsYMNB|SWNcIl@_!=-KNE-4dB4Fp(#$ne5I7`_%x5rm z8JoXutQkyN`aqKw15pjFRyU5c9D58zj5V~@n1b-JhP>7gq#2NC@H3gZC4!3YM|7$& zNHf>SXdLMcNEq1|K(~!()*8*CMHd>cHTa~39l~(Z!V;mSz!z^+YCce4$-)*t6Hq8V z`+s#HeD-VB8m4A5a^O?g0$HfEq9PipVtc4eAY=`^jnK3a5o?V%Y8?hy2wUg&Xr)Ja zxk|Nv|NgSFGWb+gMoXp9dZ0?FfB+foN4xwOWQamqp{y)djTtlj&BfO9t*orZkGEQ2 zZM|sO=rUD#`6pV?G?j-`7KFA}3XMkWM}JQn??~i_U!X85%YiU${-mK(Nh1t)c+ya- z#h+%`qe(VpjbOMk0WjhQ~}Eh|8v7ftqYctDyoN&A>I z-g@Tfvi+*^N)M$ny5d=B{~y1edVK1K@8`_{25FSp5VM#5lRz53zvKVPw86=}$Tar~1;kfu%@inNMEG8_COIH*Al>gDtoC0flz(NEPR00000NkvXX Hu0mjfL^OQY diff --git a/public/images/emoji/apple/fast_forward.png b/public/images/emoji/apple/fast_forward.png index 7b8660c12699dd6ca30afac40b1e63b01da6c757..413701fd9c8e9edeb343d885b1db067555e74420 100644 GIT binary patch delta 931 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 LNkvXXu0mjfXjF~@ diff --git a/public/images/emoji/apple/fearful.png b/public/images/emoji/apple/fearful.png index 334f1cd411a5b18c6241ee3b95f246e24a684644..30fdda16e60125d48d83b496b3350f18837063a1 100644 GIT binary patch delta 2046 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 LNkvXXu0mjfOYx?F diff --git a/public/images/emoji/apple/feet.png b/public/images/emoji/apple/feet.png index b1e6aa4003224d6952e47fa3965476a5e0f2ae9f..448f47914325ccc5b8251708283c6e88cef0b21a 100644 GIT binary patch delta 728 zcmV;}0w?{k599@q7=Hu<0001|!>)7y0016POjJcja7;x-MMg$OMn*>ufv{St$pd!2yJAd~3Z&B^qZ|+X9^KCgj z_ub?7yNh6%b6a%RK!_N3J_S(i}^PrS6pxZMqnuASoPo9Nc~;ch#eO40iHa5V<fT=L+T<8r(F!)|AWVVkRI)5o)9yi;9dS{y@Uke?|`_EMd zhb@#*DQL!dG^}=VbWj`7|V5Ny+Ypmq&q48iWT}yx}^OF%{;mI8im-9Rb$zIA?@71^jCRuFm@)SY!F? z7(yvngMUE3J|i^)VJ6!3vG|*R8R{Gi{T+xHbf5y(66DicN@}?c1@xBYa4n>$=t*;V z$%r^PE-C6Jy=kDX9nf1b&s0m!lWU-qPf2!HClxSn#gpcTbksgC-*Cl__bhEd(827WfYXdH6t)-a!li0000< KMNUMnLSTXfY)rKP delta 1967 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 diff --git a/public/images/emoji/apple/female_detective.png b/public/images/emoji/apple/female_detective.png index 39fbe9429b409d0fdc4652e9331ff956920134ef..be3509f8674105865194996b6703a7c77184b0f4 100644 GIT binary patch delta 3036 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

    QN^6#8&>tJ=XoxPKv zU=YfaqKz9!v&X>OYtWHUgM3@iMs&2dnpSG#jv!2jNR9=%Gi0`$-9OMqvJ#kx?1H>) z+g77WZIbK?fvr+G(&|Urv*K)b!uSRR2GY$g3u`sX2?`66J&ZuGRU{8>oPUK=@Mb3q zVZQQ`e)8nWNTcYA(-llb7d0UitBLp>3_^N5%rS6PUXxcJes%1>M#+H%x9Q3;h?TDe zZNqP2D8}=D80H+jOd%_~R=+(~P+_#{wNLw86`fL-WkFl2ZwzbTkgAUU&xzy7Xj)K- zDEf3Oe0-LSzFyL|%2w%-{eR6SmZt^n;lUiT26^<(IPp4C64yB}l_2QrH!og~_VxAc zQ;lPuvP(=ElA=-0h^D-MYmpl5U~iPJ8i3fYYP&LerR|Pd#^IHTdie%iZ09x&oNW)# zEI~k&ZtFz4n$OzosuMwMwQ{DcG|Qn!r8=ykE!6d1}e-hUijN$9BU9_{NZ z91{9QhOvoRMzJ0GD{-Iv+(NT*!yQhQpGrv1 z&2n_d-O{m6{3jBZ`VS4p=7nEn4d&FDg6M1>`hI|_{q+)JM)dSWaT5s4RyCR z^@cncgN%l~rQ^V*T_3M1|Cs_f{L@ammbW zjjn2-2y2`sQiM~H+O*7eR9q~ZbN3an!~ab5CSJ|tskv^`l4L%8q4rYM7Q8lE*}V7u zIk2~H&nYKyk(!w1E!A_UCoN1B?6x8|)9QLSvhGg` z+mjZnXr7Zf1VG1f6kS|L)yQS_>L3I*zt%YXj`7(X!t8iW>*Ou}zrT`$o)E1N7!Mcl zuQ*5Oq~&CPX*jD}?Idb$?H9KE6yyMHO2<3_9-Q(Y4S35#_N={qxgxemd?^4NR&RF?Zc{xyj7-^DV9s$+gni(4 z!OtisH0yN50Rr^?{V{>p@U0gw4k)4(@ZIrsqx1XT?ru4%+cMVQ1BS?9LRZz^`3A#s zKY#yo!RfDw>OFbv^r~m5v@dYEa%Mz@(kVMS?JtSDx(S;IcJViXMSKUPwg-HCXd`WH zflDgn&mq+R6cqUMNzuSNs+nvn z(rS?3$y>Br`_wjA_Ru>Q*!m@ok)yiIJb$25?{Zz$Ce}Wz<(tXAzCbHwk6_`#g{dvo zbX8qZtV?oz<1dQ4RMyiOCCqCuQQLqv(9*zz3k7QLCzHt}^<|T?e~unAZ_6(@KrHT( z^9DS_UF$4Ol(CU^VnHxW{^)GuE>$j46l+U82+_KTM<$-g7$58wM**XE}E_sO>@0gCx9eFA0Xsh8Q8iXa$iMa4x2uLmN$ykKwm21Hp z$3T=*>x^Z4izTjj1dW%k=}4>Xg@2vVCgOsS^p`;9jA9tlZ_` zkR)joS>v&mS%hW>%Q=wo1ps2*2iu9h9oW~j_Ku3hJ;Cy4?fruru}G@sQ#Qm-Lpd(; zi>-juU5Z0xAZRfQRKc7W`OTaW%#p77&_6f*lO`T|#$zik#eM)9T#P6|)PM74V)4W> z&=IqzH3@syaKxi>=7Tmu$!Tqk?cksmH$i#C{0%%-B1?-L1nI2@)f5cknajnnp|kPv zRqh%--pFJGL6TFsSdxeeeE}TGTm-3skj20y%gd1N(&~}OgmAERAiwn)kt}dcwUrwk%RL`2wdqpa8ld<$MLa7dm$B?wwf@H#f`PuI1k)vAld99HIvqj1~Ht(q?-k z({R(KO-~&D+AA5XRd&1P%~O`z#!<;syh|wC@H+Ofru*gO;$<&_N{eOOd#9Zp_x=K99yb>MLqa%_;If!e+^GEHl zdN9{6b+6B=bKmUJpayXW2Le+7J5dfg33L#=yIzs@!`a#S?NE3j2$3w@4;g+K?Imx4gs@~gv1_y4FoZc ztj8AUT&JGm1uw9GPhHp?#6mjQIh74trA8S507y0~Ll8YyFY5pR002ovPDHLkV1oCD BNKpU) diff --git a/public/images/emoji/apple/ferry.png b/public/images/emoji/apple/ferry.png index 6d7f9d5d9b568e04335de4648817344dda053176..ac8cfc1f9b0e41ea0c3809c2f2f79aa9c33508ba 100644 GIT binary patch delta 2239 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 diff --git a/public/images/emoji/apple/field_hockey.png b/public/images/emoji/apple/field_hockey.png index c7f09594293835c01e0495427b4377fb3abfeb35..1651fe08f67d449fa2655e25a783564b9ebd45b3 100644 GIT binary patch delta 1765 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 literal 3047 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 Y0XRPoTtl|6O8@`>07*qoM6N<$f-D^^pa1{> delta 3504 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 e-v6Kf^7AiGF5b*$g_h0$00000Y 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

    vTDCs5r@uCl&#!C%sebFrQ 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 b-mCi;PZ3?md!sc<00000NkvXXu0mjfR`);v diff --git a/public/images/emoji/apple/film_projector.png b/public/images/emoji/apple/film_projector.png index 115eb84a26457f9b25c14011a7ec2cd6ea99ebcd..984c28428ded76e8f255d06bfd0cc7f851d8e564 100644 GIT binary patch delta 2262 zcmV;{2r2iV9^ny?BYyzlP)t-sM{rC#Gc7(iGFMMXLO(rYSWYl7FE}?eBqAgp5fW2K zL3?#{V_a7*Cm}R0DQjnCGchc7Yh+H zrmoH2<#%{_ou8qFhlo5iDY?zpB_9`?u({pq@v+6t)793-#>c7Ub<_X=03&o#PE!D1 zkkdK+#3mLAwttl5NN{hh>s5-(-sAhwuj8}+`1|Vc2aHKXK~#8NotOt( z^5RjSiU=owBS6sdcSw_Cf z9yd@Gk$;4gLO>)qUS>EnlD?jpsxVxZZ6YxYA*57HO}N>lqR27wIQ(jI%8l7#TG?i^ zd3;19q%^}JBnHM*WSKUuL%O_eghXYO?uHO$#IVUs@NI}FD4Pt$zIQrl@gdDp%9w40X1`h}ux3N>R!kE!OojrLLb9ZjtPyq> z!GG!Pm}@>VDIvXfDi7*G2%X9!ji6e{q{oENBN__Ahpo4YpLVx76@{dQl}Ncs_;wr0 zQm=;wXjB#!tpFkzf+=Du#_@c;%x{<89E-RFnTRcSHV-+l;2uMPUGEdIus131AZl5#~o!FI7& z_=X*5`Q{lkgezGPdlC^0O^zY3$PA|nRYTe;y_5M~i&2{r(|wMfpVyYPa9!8eT+L2P z&!!8rF_Gzxgd`{`jAskA3CBihpF)Bx!-6N$EtlZ?3nRr@1QzHlGe|f(3bmO6p?_&o z_rOGmV+s@%NdlfQB)7oQe86=V^9@wG2thO`Vq2!WThVS)#8zlTh|dXL3zM#ZrE zpI5$4&@_Lsd`>Ycl4GF|MP?yauO1#@bJW8av*jC|#*IE|47FjS!RxLD65rMQ9MZ%H zZNS8lLbT}wL0Kv|AIM!{fuvYh;MaI{-~Fc{oCy*|Cv zY&}QUpwNrOHeP`#L#RnS#aw~VB&SpXc0K#$Nn1K|*wya-^=-G?R#>^=&3|=LBsaF! zBqWTcgC63PQiPC68-R6Vt;P8&(1Mk_-_Lg2m}142Ww}n^fJr9>x7>TKJtik5{&Vz5 zO%wBK$=H}j(Q>_Z=H3p{+QRr6-v|safeK{SgQV~vYO)GbAoHjzGYW-~uI5G*t!>Af zy*}-TriN@W!*RSqr7dnagnzLr)Dxwm_tPI}4t(x>_WHJc=YU2oKR~FDvH0Kb<+v9O}vMJ({=i5w83&R30>EO)PoyC5?BjYWisD50{ zv0z2cX0zQXE;$b0g(UM;Zqh_d@0+_lq(ucag=jk~mge2>l3x$<`+wZfwDb;;m~|ia zv)WPPy1Mi7^y}AtzXw6d>-Bq))I|MqN#XSVVgEt}wakT1nx4=0gx9CLN_2Pj&~M|3 zL^m21)9rrio<{<)P!EXSUMc(Q-*;td*JmO{HK!0_A7e3p+tz|wLa0T*j>qFQ1tOy0 z^=h@G*yBo6o3Mz->~I&8a6ZBJHS#=L0qf_eWc?FF=g6uEC2Eg|=rauw1*^b0==vcj zEuV@QrKP4&Y*>ot%T<{>iHNA zbWIPyLRb=lCN0lp(Yb^)pb(WB+YXx2MNzzP-$y|^P>QJOt0F3?sBiUo5Y@STNpv>8 z7Wp1sh5+@A|9_9j{piq1C(n&|XK6a1mE6c*5z*n$pjS8kqI{wNP)bL*ECRzh^Xg_k z_dJh2+C1R)vWNtvf5x18j36+KLUmbW`MURxoOH+2=g^2KSb~R|z92G!k5Ccd8B61I zJf3n$FV8QF7XI8ZK9ZLn&o+*5;{QJ8PVQY6HGK_4q<_7~n^QbzdHPK`InL#XWFB%j za|FJ?(Gf%re`!T_9ewT;7|_d0A%dB=<5FZexuGf-M4U}#_#;Gg08?(~^vQU4 z0K460F3?&TBQBq2i k9M|n$eNLBSrB4R^4?MFMR|#gxF8}}l07*qoM6N<$g5JhPYXATM literal 3872 zcmV+*58v>KP)E)Bqb&f4+wZ}X;n-`aAjT_8X_(!BseoIAsrhlCL&f& zMlUKSU{_Ej9~)LvPE=A)OhrFYR#iVbHGz0?YjkxmEh=YTRz^leFD@%vTU<&)JXcRk zJvTCJX=yYuEq{1)a%W&#Q%_}DR9#X?Lpn8BQcZ1RU2te)X=7n!Z*Z!%z*k*gM@L0= zZDxghc1=b>ARHHgcyVfMZg_EQjfH?-Vq!f+M{i|ca%p9IbZ~ogacW^*OhP(fR!&n& zL}_4IMnF1)etTkCP%$zwQ%gmaqO2?|DLy+kX<=M(dw_InWi>J?cy4GdDkWxISATtc zY;baUdwNkxM0jv(eTb1IAQ^>wc7>Lvx45`4GBsjZR8vk%IXX5eBpz5>TS!n+ot~ey zwzqPEjd_Wfb$o<*go%NVlz@(tdWMUAijRDWj(CHJe~poTi;#PVjDwJtX>@pkkCl9g zjaOb_bbo|)fQ4~fOT)j$jDPzTRSx>bY@(2 zgp4pTGJ<$i~mzqOEL@6jIkcNRt zLpNb)Y=3}(mZz{WG&OZ~bvr>sc4=X9f{NGI*si_D+2`(;qo|djqoJ|8(ctH5czs`A zU`$0jlbfH*%gd3GlhE1Xyu{9>rl+8vplE4o)YR3Aii&c1eBtNmyurhIdU~Fxtdo_O zZf|gehKPlWjkUD3hme!T)7w~6QP9!SxVgE+&emjed&$?|fPn$z0001ObW%=J03Ra_ z!YLR969SUF{t0AWH&N0o&_XsnuPBGy$0};IRYyDbz9bT@?MT1( z&I>1;`{n=t`@efHg3JiAhxx{X7$nSRmA47<2O%%@iNrJk7S5i|YXW2_<{JFRR300# z-Uv?zG6_K_mPCj7)LzWhn>1sM<STK2}X_@y51Q>SE z%hPskR8*AP`fXl&1pByDs!k@;P-V+7L4?H|e{AK9V)E{F zb3m+@U;?*8R&r6{rQXr6Hs{yXp##BsFG*vh|v781@G-4 zY(!}YdCf#;gG7MJd2+c*UMG;C3ZBZ|1ewcmecv)sydy0L6qkvKhGMw@QG4mZ$hC^$gPlY%{xP)kbYG=$4Cnj zVZOGZLEBI~fr^woEl(tps2aKyQmMk0Oxz%PyGmq7?>*)#%=dUZnNWFcT>z=V3Yn{1Vf^DHCv%@LR3hSXMUpVrRo<4b|FJUA6xr2K1L-WD z;0T{~|NKy>IHTq9y1IB>&J>5JAfsM#Tor~1Z9V5%+1SuroZV2tN)Nq??7G90w6pUJ zq^(%mujaFJ)KBD{H4R$rgmz*B*=$*~K4+HHaiYq#J3u5(}Ww0tJE{hJK)!qgB|I|Q*_&Q(%18d+VPN?OO~ zA1S*0g+S)z}pHFRHh_8H+pW495u}4MG?z#{^Mn%ivcO(~)ABk+g z-qi8{E=mEOIQp@Ul(VHZ<-h{wv2!QcI?C4$3VgUOcpz4xBFQ#5?_b1qQ^Kr!TR!n@9wE zG?>fbxELDD!q?2sZ8wQ(}=}2Ah}%>a!@-= z$#R?0YPz3YgirbWr2aa6)jYObdCj#^eqVKU_2}qm-`S$t@>;2QKwjMT0TJ;+@lun6 zM4wErU>|q$)3RbtWp9SlY3Us@^vg8^gQMTj>(%Otii$pUD-acfkhBNv5chq)coWSE z*Rg*!ubT{q4$ES4OKxt9A5MWLKur8LYTiwi-9_#A2|ExbGOy z&6T6CP^c6Ng&ZM=L)EYjpSyY`=5pSV&!o>!jSUU<4ObXY=Tsg$d?cSqPiC;x{N~!) z&r8JO-F`a;)>*zG0xHgcEbDk{Om}I|^|L8Wr^d!YhShvM_56BPW=h`Ss`Pwj44qyd zziC(a60t_yE?%c!)9l=ob+#6IHk_|&DQs*l${c^yH}tH!f}aCPf>%;(^4Gb?D-VBh zBo(wkR?hxe1Y5CqU@gtCkP_`VbBH88rXQpqD{Q%Sy7JZF(3L)ZeU459U?;^Uetr5_ zX65*J)e+E3O!oG5%f)Wa(<>OkV!&wn=ceT6r5wu}9~>I2sMm#(11)Se8;CltAJ2O= zj#E`tDpM^ECm8KMF3RcYC+}{o%pcD?`)q8Kj|Y+j6+ps{jZKKjeE99-yCcJoo}N2- z^5mB%pMSR4exA|hv5>m{wRb@s?_7G`smWjZ>e(=iX-#Zg0`q9nqw3L+kip?6-$EWg ze*FD*qiqNjX`x|#U9XaEUDP*rO^uI+<8k6330X()4i0_?2>I!sdR}ZH8|TK^t*^YF zSiWS=mZ8D=gxEJ6xQCT?wEE?w?&AlbCj&a-(@cp!BFDig~Nar1|vC>S=y{ol=x?l)Ps)E2f@&hjFU)DOF6;nhOfxaAhWWv#-^s8 zrVYe*ocV~fHA_lI>JxC0-eJ%{QC9AS6PZU#v$Ib$m6crvfahYuyHA}qvqy4(2RFng zCxZ{DfL9_tCN1|yVNr8)Mn)mn`@v@`DA;_;yG5q6N0L~uuwXb&GJYr00YKDpt2yKL z?b{iJw~CrGw$7!6hdcbnIoNFW-B?z<-lBWbaS6DYXAAXyaMS7kC+Y?weFz4a;AY1B zuN5xTtgPFjpC<2*n;`HxHuVY5oJkE+Tjx3_X<<=gMPEQjrDrUAj)5Q)#C>ZkYB7A*KHSn}HQ1krjfJGz(&7^=!=x4*pJ{L0v5JdJtb zo4WfEwqv8qLBLC@#Pcc-hm>EXS#XpItLq#1R;=g+{Lb8vB3EP`H1wO``?8EY56PM) z%l2ZdXgd$Xfr+R*r$PgGDukmb2)>4tQXwc48AK>vbdcwejQ)in&>VS!W~bM4T@fXV za-0|xPJoz4&@^SM*YAGs4=_%g+Cfeb!*W@HuE2>A*i=IY)O5Q>6h+;EXxsMU^|M9i z?`^CJBvh0T+7K`yfr(_Y^~*45eDr&sjh|gRTXgBZAo(yLeMA5~@TkV$m&Il`s?#9q z_OLD9iTT$~uMp1n2q7X7{}S44Vw#N2Zw3?nbTQU%T!^`~Gp44M*#eiwpd;D`k!=nR zBg2Re+d2-d+cPnu)I-H19%c}Np}{%CaN7XL)}0?8>h<5BE4o{FFdz4ZKfO>3OxXUI z4A=&l^kZlb-MZy;+U<^Gbt-$Anb=xEYN_Vzfa&cx?lB!}$6?X8q2Kp4rKo#^uzNn@`d!7f&ah inVXtD_dhs&k^cY%rkc#>@W+J!00000Y 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

    vTDCs5r@uCl&#!C%sebFrQ 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 b-mCi;PZ3?md!sc<00000NkvXXu0mjfR`);v diff --git a/public/images/emoji/apple/finland.png b/public/images/emoji/apple/finland.png index eba63a17b13ae787b1bc1f948461908f44970d36..c36a2e14fbc382098c4c51709144e83e4a6ee60c 100644 GIT binary patch delta 1108 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 S($w+*0000zhC1 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 KMNUMnLSTYQXiOOZ literal 3391 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 diff --git a/public/images/emoji/apple/fire_extinguisher.png b/public/images/emoji/apple/fire_extinguisher.png index 51469192b787a6316815c645c575ba329b9ff19e..16bdfc1081ae53a74f18ac7ec5ab205bcfe0e151 100644 GIT binary patch delta 2964 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 diff --git a/public/images/emoji/apple/firecracker.png b/public/images/emoji/apple/firecracker.png index d5fff1eac1ea4eb41c678cf2f0ae3d17281245a6..0a753ea656e16a517779735aa2748fb8b2162d48 100644 GIT binary patch delta 2433 zcmV-{34ZqT8jBNP)t-sM{rDz1Q6K?9FU88XC)@+3m3Dkmy91Kv@tJ_5f|M+ zGrkZK)&?1L0TPY{4tW9*XlY%fn~CNi7;_32o0Ws?Oc-gMM%03>wJ<5}gJQ zxgjE)3!#6Zc6OzJCP|j*NQxNFaN5XRxZ3 z>=YZr01KN63(5r!*##D`0uIR%6XIGlmdOn^;ZhWE;Bx4#y@1y|AlU|a=ujF!nnni+tc9o zvBJ>W%zuWa)$hdneBNk;000L{NklX}JFZXZYpR z)YQwjOPasPQ7s;o0~jbc`q9rz)kuzx*qRIBCl zsoV)hEsbOav-0V$qkW^JqrW~?ih_Fl`<$MBe`M?M2nt{mx&8gzS5XigPe*x{WW|p@ z6@RneCvp0uYim881`J{W>Z?*vI)39@1bXj_g7JIZ$$jC-K{e3$@%=L~sQKYjXSL4TzGeBOcR^SS+0{t0(&e&49>k`k*=l7t$F z^9f7Ug3+x*SclY2(x_3icLw$KC#ettHM|Iwj>my?gh+3j?F@*5y-U(bKM3uigb-)d z>vsMNP>J;6A+%ZAPu1=<<2DN;T}F>b77R63F~}QoI|G}bgHQlW!R$;DNGWt&0Dt~2 z5{fs4ybZV06R2NZRuRgQw$yUhO1)h+$?6M7v5*&p5GMqj&5f(e%vuDr5{X)^b~Hyp z<7)Lxm!u=>@jWL9q4Ms!gR#x}6#_+Fu1NLkVLJVqr}G^X)E&a+eo2B*b?GWL3 zcTqrf0;2VCtA}#fk*qk@ey0t-FeF5UNMo@8=Ag=aM0KHMDQ7^PRStBx&d4qTh;XP7 z;b6+e`{%qQG$W|T*!G8vjGhWXV{QmY5&{Zf-oIav1ja?RvbX){Pl=Gz?SI9f5NZr1 zO>{73`=3&}y~eD$eL^Z2y(Hw7CXZJLiek1O=p=zLwRpe%$P7N3PzXR?SZQ~VG=_Z$ z=S0g&jTyxbNe|y`CIk@y2sn6RA4xu#^S~tO&vt4Il1{pCLXr?(MLaR;1E3*Ez%Hme zG}Z^BCqf}F2+=b}lcqi=kAF1Hi>Om$Dt!`PLm)&NYn>Pd0q2F{TF5xYwom#Lgbu1i z$SbX)v_Vuz%W}=pcUU1Fl9q%hCq`E~LxfIFP|^wwz4Y;2{jC#g1x|zrHSpv;w6RR4 zDTI<%408Bzi0Jw-DcT(}GYa!vz&c6|Kt4ZOR==9({LP1ud}2i zkC=S1P&xYp>a0+9#zmJItNAOs-F!9s}R_xlOxLVg{Pd@)_Dd;reBzZA-e z*V9At9-c)){eMJg6QV{OdMjoK2S||71x=cwhEfF#I;&WiWl$vrLXZ&Y%!xUH`oUFX z4KU$wm>SW!&>Bp9IY0jZoXT;r^h`m+{soc-p(+Lu4m1Yy@`sa2=o*2vH#oYDB-wmi_*sZetj z2?vzI{#!}wv^>TQ0TW-kt;IhKc=kM=*2aK?3PLj6`Yr^97$_8OahbbKiUB5ug|;HN zu~Q1V)AsSsnlNE_@%B}#(#Bg>sD;xnmvt+h?s}U)A%9MGdMg8~h&VetJ3!L2vaZ$U z*F6ubfo4L$!Jz)(pZSl9{PD&H>>{iXa4^Vcko{EghR2Z%7TO^oNc!iBl4_R@G;{yF<&$$^J?K%V5>(_0~SZ`G5TvzIt8%nm6hG delta 3441 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 TU^D_f00000NkvXXu0mjfZSz{~ diff --git a/public/images/emoji/apple/fireworks.png b/public/images/emoji/apple/fireworks.png index 09bfa096f4cae70386b77362e4f1afc213a7b883..a3bc08842915f0615d6bbc9f0ead953210fdb9fa 100644 GIT binary patch delta 2392 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 IM6N<$g47plD*ylh diff --git a/public/images/emoji/apple/first_quarter_moon.png b/public/images/emoji/apple/first_quarter_moon.png index e909579c2f307c45b87608ed3e9e46976e02c9d2..901cc07774a16674203dcc81035d1c6332809ea3 100644 GIT binary patch delta 2233 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 diff --git a/public/images/emoji/apple/first_quarter_moon_with_face.png b/public/images/emoji/apple/first_quarter_moon_with_face.png index 36a82b7626dc8e361d7943bcd5ab2150f0dd16ec..142bec1c486db5094541022d33a23656c2a65509 100644 GIT binary patch delta 1486 zcmV;<1u^=(7T*hyBYyzQP)t-sM{rEsrXS+8KHQ}n*`_Sts2<<2I^4l=&a!pr%4+=Z zklLjp+^jJB@Q~Z4A>FSz{P3UMs3PmWK>zla`Qd8$;BoxzgZ%J;_0w9~vQGZ>lG?FS z*RM|a-dys}MefEx^U_W7(p2utP4?JM>Aynu*;e=7XZhuD?SH{E`{ZTmyD#+DVCA$Z z{qKF^wmtjbPyXy_?#x-|!%*_eI^e7!_SZ%J=~(>fb^Q44_1AJUA|ezE4N*cq>f*?) zrI3<@cWPi;orXU4-IIc5Ge+}exBvhE9duGoQvm0L^iR_{6$>SNnR8ySVmrX1oZ^|& z#KPOW$FeD~n}00;00gB;L_t(|UgenAcH1}@gx9hqim@D9vEx+q!rs;0v+w^-JAj;% zTY-DEXGggH&dfkRNbs-!ie{5fUX#VeEc!Q~36+vE#?rh#n_gawXGLFm*L6Zr>R_wo zA|6YMzjlR_;G9#ImuHi)sGGZDUlax^6j14Ex|ok6U4IqU8sb4l8Ms<~oQ)%Wwh%}V zA%@a4Kby?Qh08LMSx_1{TXR07tB<3a`j9~|1x!PXTGJsfr(@#9cP%U>q#;nF94Rf& zF2=Ofwwo+LK;jIUchdEUma;ZWw%cuzfaQ8x4pazr3ghHFm8(UlrQ5cU^=eh- zOv+ADrHp|k)HDk%sTH~`wPsRah9%{Sb06+9baGpo=L5~lRjGxwlF>EgH2gmR5X;$` zX^!bAnJGYWO3`;HC}n)D`nSK|>a@%yXP(4hX@3?tw@etN{yscBJie7M^&1r0(knMkZl!G_f6tK9YC);fOdNa;*&xTQZuhj;0Qr(aCNBDtS%7HsayS6BgMLX4F@Qp{T~&ytxY+Dp z4u22c(64<$jNr~uz`#Y{x5R-+)h5r+PoN09&4}?NfG$rrua?yWIlP`lHf?6%^f8l@%10IHM%_Er6s0F@Jp`DE^Kt1*)J7(l3#>x}N;}@eR1T zOl4ndAuMt^4*EYM_Sh!1g;c7$Ergfkt09WiL2YsEA7D z3RuvPq1N6|NPjXY`cd~aR^NfvafM)t4yoe=zH5E(!TPSl>Zl?9 ztv%Qf^qCkzJ4kk2;a_VhIAyS*=sqI^Gqx`}{0f3(!x0qt#&(lzGn-gz3&>j1sP&M7 za~|?%d_T6mEZGBQiBZFl`(RNJC%$*D>NxTjuhnwI)e+NL z7%XM{_1a^u=OZ|nE#pCoA4l&n%WI?xRrE=SPH-nmFD}OOIcVmY0js opQ57K#q|VQ;B!_CEB|->11>!S)MoE^M*si-07*qoM6N<$f}20|8UO$Q delta 2870 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 U5FM%5SO5S307*qoM6N<$f*L9qy#N3J diff --git a/public/images/emoji/apple/fish.png b/public/images/emoji/apple/fish.png index cf9ff11313dd167f8914accf38f21429fd6afaef..97b855cff19b70218b7c67b8ce2dc4825cd42af4 100644 GIT binary patch delta 1769 zcmV&n*MHh*G~zRcBLn#Z%j%QtJH zKX$HYrqZId#(THg`TzeyYMWhjks&Qmipukbz~F$HvRZkaI!$p(bfXdz6LF8Na)_Y6 z)Z?JX-H@`+g2U|8-sF|4zOK~g+~ehNui7nFmWiah=^phD*NsKV0000RbW%=J0R730S|vaH1`&GZw`U&y+>%4|+@RyR zebK)GgHfRX00mk}L_t(|UhUTBaw10*1z-cikh4(O34i3AbIvH|oHzUZU%}^gj~K9B z-qp(gR!1s|qKc1mdwLrF_|5X3_lTm|_J24oN5pG138M9lj^8UqC=OueH#lym6ggx8 zW;BVvI;7PXIgCcrlqgvNqy5)v`7MX(e7=C>^JLMCCh->r`v9j<_(~y6qh8-?6Aokk zLD^ncXn!rQ%ChnjSq7$2PVp6te?wK(Znw(Q?RHfeR-RFkL-@&!W!v0pSJTnx?oy)Z zs;bBZE=5c~GoIDI(XIl(75h_9KEKPTE*npB{#bHvhN{f?tmTS5!ooJ_%8JT5{aEsE zwF_V6&sSGh-w}Gya&-l*P*4@6%B0|bOa66L&VLqn&d$Dkc}B8XdZq=~XIwlvt1`*7 zvf{SY{Uxre*`2dVqtUo#nJ7g_lV=`g$xH$i5SAgkY1QeEM@Kv#Dd%Mc?&Mi>2_s5T z(vl>3mxdDp%aD1kKfb>}4h{~^DId?z6%4m%_z_s+%lE8|g_7!$U3VOkuzb6R_J$Xq zkbjGNP9aUT2#G_e$avFFqEy3wsW%Y(XVE#_2`mk$rE7fF$eG+iTpeGCWzHrY|+ zY_(o@@pU#~PKUTOSg3UIsZyyted~RD?CmiLt5juI5z_JXLTc<_JWt(=N>;%rAzuBe z`P!}FrwXK8ulI1%d(2cO-O*WTsO|Lsw$_W2qYVeHIk+r(6XNj-R|sAAqr>aU`lu7;C2P|cgPwHlayi90y?=HjYb6U zMx#+CMRhJ~;jmqB2BZju?titFGuu$RoRu_cx(zUyx%hThi%v<> zkCCPIHq-_!PEjD8oUo@*DV&*6oi%}vA$a-0#v%RKHW)&Tf|UZ1;m$%~ObB%>zL#0d zrhtCb>QV@$LjBg>tb|@z4mc^E3=}XeFmNRP6~aq7^uu45)@xxyt$#g$MObE-;mH9h z&GuTM8ZoD*r;=;=rjR5|x*GQeHTTrop+TRT&A@?}0cj1|)Mm|RlumbEq0#S@_q^vXji<7v@tSwR00000 LNkvXXu0mjfaAk+G delta 2920 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 Su4Nej0000%Fzu-`&;N(dXsZ z@SKqDjECvi&f?U#Xx%hN4(t=krvFd zcT33rW1X+6!wB#GKzY9V7b=n{O8x;VsVge0L;1IWyfi+F`hGrlU6-M^DEru3kyTSC zBQP`p22>ZooPU^{v*IH^hdW9pyXbB}Rk_Q$X<`#Qd_s!OfH|MfbyD9uEt*AiVyHIx z0F(g+)v?YP0>%VF5Cr}s6=m*0h%y{4ra^6lBk`__c~n%gBe2r`ypB>SJesSHkd$?2zu4F zyex3VTqxv>LMg745+g=)80kt>BuSD#J9nzOx=Q+!tci#Is zj}C*hp?~LM(tel)S+(<~;wDrm@?9W?i*f8a2-pupuSRPqfLgfHavhA_fq{^~;lge! zu+(rFl=tH}ZTp+0sMB_QF64}%?^EYV8hpo9&}MUd8LK14~e-VeX%n5-X7uYf5g&0%EXSByphwDdTOC_LW|W#GV$ znSbJH&@f;e4H^b#h)(_WBB(?VTC$!9$d@V445l+6?m-MXr6x*UvVNqJjF)A(Dgz>T z5x*s6g$QS9M36l*y8b#S)-c)t2a`b*3j&I9gcD#bC9(^LvIk+L4j<cmE&IOl4l1Td1Y%k6f%$bcb@FLs`F9z&@)G2EV0qHzr& zX5)zfLrbrdX-?BLVM~&kwbGsKljzMZAj!lb*e!s757ysIiI9Ry(-;hS(jiX4m4D5` zFM7}MX?CR=r)98=?PaPsEFjmsP7b5(k*goiM|OLu|kV#e6l&)oY^&Fp}ai~ z9}66!Zx;*=`Dkvg{cM{>Fj*#;K1-s~6&aSaVf^MR6j+aEZN@xB;udHU9}NaFm^O<6 zISbc_pfnUIKTMv3A13-MXiy`ih=0H+K))IeR@$Q67zGf-&?qY=1^_MBfh!>-NT?n$ zI6?suKwcS8R-ytoV*%+^1L#fb3Vt?f;v#^)stu@xB!eLV!f6=k=Ap*f5i15 zgOG(Ka;2Wr%|O3bezeg@{2f!b@~7|Ac)}Ctt->74`a5)9vBU?*aIc@;tZo tYEbdhsrk&?F^*$!_y1LtN%?;K{sRWiH$vbIXvF{k002ovPDHLkV1l?V421vy literal 4096 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 delta 3040 zcmV<63m^2n7v&d_BYy(`P)t-sM{rE%^Z1mw-Bns(ke#Z2e}Zmub=lU$&C%JQth$7K zc6D@ch=zY|Y-(j>WHmTCn5Vm9UtWTsyJBKuQhKOeTwzyRUOZ2hb*$rbd3kbpd_`8u zm#w-~Uu;%bSZq)`Y>>EuUPpSl?Mq8ahj(9$qPkRBUR!{eTYqG2O@OvZT;5GgOLCgE zhGR){nze0ob%A+llZ}T-OHD{jQCePNdXcx3l$Us+zc5pZz|-GunYeUPKU8L(WO#>W zQ9*friDp(qp_O(bJ#uP(sa}7wYHo6ZX;e{FSzC9_Wod1^&*7DllSp=sm%-(u#@}&g zR8&z(U!=m0k$;ziXi`~h-(-))YDO}6dw*e_yE<5jKU$J@oV1F0Vl_22kg(85NkC+L zh%qxaa!@~1ceG)2>vdH`Swb>meyTY$GdpXZV1cMoajKw?cvVR{j=kxZoua70**7&b zii?gyOnXsni%U#IPhG)AXrLrKcv)`VOED=-eX=z-JAXxIrJB+BsNVaJs>_hj^s}3d zx3;_W^Z9ULQJj=-N`bU`k*;cXqEm{#F*7wVQkx#oY?VS)on(Z=eT|o`yTF#s^@x0IYmwDqmb{*ITgl$&hq2l?Lzhcl zntxH3x2An(v(@FjvV#y+piBS&0E=`|PE!C7{rw&c{Q?FOJuoP97rilLPK|+Bvi|;H zR{kX5E7)z31%xOr85W)~TqU&2ISl?lq&_e!fkxQ-j=3 zYPQ$?{>r$v^XBWn_!6C(Ep2=26Ku?LivLMarhm$uaV zy6Sx{>)CoTu5WzePC^7CSOkK*dvPrkN}&R!Q`e_6Cw+q^xrEM~KXcCd<=fxc`+uB$ zE(*26fH%4xP7Dn_F65vv1jn=<*Z4+7(q`a+XijQ{#Y2~g@3RRcIw}R6q()M>+9=^)z8Li`d?^*9E_8KceU<8C=Z+U z#iMeKMqTi5i235Ngm07tdGuot_KXk`sjhAw(6}hiKOB28pjLbkU@X-F@d%MYXCjAP zW~wDV>e}|{#{)iUW%U6oBUZNx_85;F8xvVPebYx$E0NUJO4N)Bt$(7yaBu`CyqIWQ zklk>7vF6gHOFp%V_I5>8RYkL+VT+;Q;H@do|6*wzv~#$4SPMWmuS;s1o3#w>Xw|*T zr}VQ9vN|`ISZVzBzV^(#YUU||0YSI7 zA*6NOPoNf!tX%=Du5M_clhaZ&x9c6J7ruJ3?XSlB11PovfaEu>n8_K^j*bp`9!HpF z5acTse02eajb{Cq74=V@&04N}(M_4XiSx!o=%}qtZkNvLdWJj zcuYTi1t`)sOMkODfJCLHm1K@w=F1peQ45-2>ox&vT=l4p#U|0%J^5^&HF{CY?f0H@ zZ`a+Nsutk24g@SBi-f@Ikp{l9prF8O;m`+>v3X;kGD-PmBzD;Zjlx?vD$ya|-OuUO z$h#{5s8Gvj%FZK`sle>ik*oYhrM94az1`f}_gh+OY*IRfcWyp%*e2FJ zr+2!ryZ8q1s7ooMcalM9B3)$CW-S1fN6jtu?Z>EwY6ev-5{t#Av4Kx)-lDGKZTD|` zUF11(popQB@#!Ekp$J5l(a@;P%`GnvnY*8?{9DCLfuM%PB9UlJ6_Z9Oo1pm4bN0UG z{;yuCOMi#iT{C$hgVEH~$q|XDX_*<9`J=hH1?4gG_grv|Ks?koCIEU!OeXV|igG8P zVm-GP@Nod@?wwKIo&Kh>I=YcdzD@o1h7zLn34xz)u80NURAJdcHLsGRq922Kg z(s}csy{`e#x4mz<3}|$MWZBukYheixByFx(%zwdt^!2tUgF_^yswbaC!#r#ggV-qZ zAlz|x9m(15GZz;*Q1rBk&JhYzQ!_I7fKw2&(04mlKL4TUhcc#E#bPmOHMf`~CL4e* z{CEEeKXd=(@wXjzKyZ{=tp<_lECO+5Y#FV{&5c^90r<_zqAc$7GEAFTXEsTPqm=dV z=6`P{tPKHr2}Q>QH8U8E*+5YV-~gxB`z|2kadxYiMe5PzBdE4JY-_zc7yXIP41Y@=heJ(E z1v?+~;hCk!qiw0T4#XQDY*mr+^FgiMVSj_nw$(dI4h{^sobWqMCWE8#DqZ@X-Lmkv1|1I$6RMoR;U&F&!3;ef7;IkVWqRJ4K;T!w|@@u zJ58mM4YgVC=q$=Q3#>&)n{VE?KWR_6uOr%c5A}ySvWRS;%YwI7a=F~1-O#*#0s*1> zgObnJ-6vCjtKUOnJwX<6vzEMg5t_Q>^Y!03=X8^I>iyY<(iD)6p%$h+Fp|yWP4{!a z$lJN>dVt<3<$^3aMlk8YbI?rFn19U?IXja%oo{(95oHOo$eUZV)s)XA$)8MXWV!>J z!{N|7>Cz>lh@Pe1z@ptNbI^bE@o|w%g42jj&!hACRn^j8FY4RvUoWk!%nDuk2@V~+ zdHwp4?a%d~|LWa0P1-XE8*nD%z--^_>}+4(Y~O*ffTbG;!8p@D2;tTST)Y_I_GMt4 iD`+(ShtGgU$A18D*Kr%kc1PI&0000!BYyx|P)t-sM{rEBVGX-$58|8;zi<%Df)VDS7sPK2uV)aoVh;7W zC-t`^AT_!JWh%L0DlEbNkl;;q z5C&i)11-s_-Z#K`|JR&aXtgbvICJJQKMpY`@Ts~eP~QIbT&K%?8L$7B8RxqNu=a5g zYMkczGL3&+#5_-Y;dD2~XpDh(l%@{{#sEC<;OC6*cL2EG=j+?}0AyB-)-b$H#Ark8 znvLPJsR+o? zp~@_-G)9I*GOCy-yApKl(DR>7sRT(0+A4(5`Gr{)&Cr5}zlHeRReytkAaVrC#XQvw zhU*bp$suXeK_ICQia;W*g&;XV==NJ^wbier@TZy-t!~$DI^oiukU2u{TrdZVs6peQ z92l>7n16Y23}8iim$vl;ntQ=`dQCJ(d|<%kU@d?#2Ee+U_s2)0YR@38H!0p2s0G@K z!@8hya1`%-NHsc3E~3`DBXqFyM>ht4&)x!9uogJT~C)IME9LX#PTpElxXxUZ5W;n`yv@z##d+`x93#) zq-vx)>GsgC^q6fO+O+kz0|Y%lBz3*!5W;gRzDx45^5vyXGZ+rwCXf$B)ml|ai4@uk zByYJzAQy%Mr1fq!h^5b3BL(*bAq(x5O@9#dzCJAML_eSpyMdmt{*SGCxI@Beiv}xfx-zwsjr6Mgl-Zp}| z#1v=k^>RV&o^gv#yDiKvEn-PpHGl1irW0u5Ns()MxYt@! zP2G}j+LAL*<8f`Ux2aQYme?0W9A20dbj%DE%ua1cu)@yEl2>%N(_GLoGRAUBNl4*TZqI1w>!Bl>^$!wg&-Dl{39+St~vdVo##4~lGt*j^`OTJ zF;vfOeET6oW{NDPXiuB`8f&N=YBV}O<)X4!gfYi^R-_!ojs7{~O|ezdYf6!Fep**= zR8*KuDQ%-2DdPNT#vw)(@sA{{mWa%S2Jz3S%W#W5B4IG0r;mRTd2 zSR>JtHOPlD-laYA#Z%UrH}b<$q+TZR!&2_OP3*f$>9j=XvqZXjF4&(rw{a@joHx#r zHt@huxN$43W+=IKEbhHba7G!9s}m$X55vTlL9U^v6~7#Z=y=Jn+9w=(9xm&Rp4^IPk$w?7B($)oS?BW8tVh z*qk`{(`E9+QuoSP^u<#6)^h8&N6?cr-={tE!cge3Le!Wx<*h*Y&|uo1Ip(lJ`O{;? zf-mB$KkmIu+o3w+tw7I_G}4td@4rpvu|u$EDEZfP?z~Inu0ia%NAbc?;i^9O$yoQx zTF#I&-lRMD&tLe{X!zD`%#AX>cPz7PD%P4e?Ym0HgfQHqI?IYOtYs(MpgHQcM)=fg z?YBn5e=g*xJ-l-()s!{DeJ;p`F!|GE^1n{Jbu90@O2B(9j!q!CaVz)DUB7rO$%rx5 znKt&yS@Xe8#egpK#8BO%JL|GT@VrXJg)x>?BA#0$tZON$V<)LMjC6Q4fmRuw9yh!-OPJTojicKGySR;2q8@+xm{LNYPzDlNGC2>3% zUo#YCH5Q3VAFpyNqhuz$dM(C_G`V>!S1uDvCl85IApg-?%aaBX0001QbW%=J00SQt zF9$*kSr6%$M>-Xvw9ObFRB8$Su*89J%%s64|HavU)bBWd_mqaFSnrqTs=6(adR3K; zZtq{&*24Vvl(bLYk~?$pdBSPxElcF1!f0FL(eV6jr~UKS{qgMZ&%OBb{P6at^VQm_ z_xkG->qvM201JRgL_t(o!_=2~a1-|x$6W}7kdlNzGfjFBnwgZVgr+Ivm?TZwB-5mA zl1`J(bf(jGdY`M^m9$!0E3KqO5-aUuO9EvjENOKZ$*WjsZ7lgf!VGpX_H6AXi2B4} z8xzhzxk=LgRx)vIF_TRH>l=+mEA4)M-}ip+_^G1e|I$9U;>DNOyt;7ye|_^maUS2e zxc*?)75nAO_b8VOUV3`Xny;_B<1;?J;^`-!TsKeo^uxucs!76VB#yrS#)^uHb#MIq z!l_fI_CEId4?cr0FWtBJ`RAT{e)0Mh6^}o5$RtZR$Keg+h2P)x=I<^XHW9#%{`0$^ zO1g8+uMbrd?{1Zkp8DgwO-C$*M2lKc)EQX!y?>||2pPw5Nv?kXS9jj_@dbChxM*R~ znT9xCU|Ut9g|<{dk9o5%jL=!yLa z!9Xi_i#Y44OGOQpB@moWG&_Svy7*bk5&Q05P^M?~7?D==Gx*qF|8~<)az$rgj!ll7 zx8UFcMNv5acl~fAij{tX8RPbH(4&G0V@mR|gI9ql?T6gS2;-1q8fFLT7!z4 z-ySy`00%gO!d!G<)UHER>Z+YPYt)VDwk}cxR|*!{a^Ra~pcl3=VAU$+URakn<4dE8 zH^5VdbvIKDqDs9JfHWf3)K$$OnwqMeRW;C-ZRMa1)glUkMXS_}`5l&%UP+5UK)xEq z*-*E~MuN1;!yLv2+gfZg4M;U=h{g}Cynile{n1JUDygTXZIewTPQ$=azzI4!GgN&% zDhNW9(2`ZIz5Psiu~%mhIXmr_XHmI6US;DC6xv_pvY370F^S2)+uKl7Ardz#0)PPDXQ% z)Wglkc6ZnPxh%6cy4|5rYilTE%|yKC&kfajJKa$O4Yqm400$5?nns;bu$!+Bojq~l zTV>Pa^~gWk`uqDqM7{2TGoyX&9d&I%qa=bSXDGnbMMD_bR_`3{9sG7#U%M}}d!)0i zDIAG}&-Y$4o7*oAPWV})#L=P%BPvy6V;-~;6arNQm>Lzzk?~~TpYAUQ?FrWnwNFgk zJT}rhyesEF-`hLnb+IJLR+~tpBuNI$XvA<(9qOtoP>~QK8f^Nveq0W6gd*qL2dAcb zCvWifIOUrh@4ar;$FnYA_INNDx7+P;3rQpDnkq#T=pr0(@U1VDf%t%@;EaS*UbEhA zcTvgImTr0k#nw{z#n21-v+{zSsBcg2Htmp>3n zO$?5PL#+jm#}VLpP#*;|PuW?SDFqyK281!V_N<(fNo(ta(P%IT-l7%&it!$+yJu*q z6V!&)7Yg~D&P>K<=5tY#lrN^00@9}A=HJZOxb+7G*2J(2w;YTN1sVvyIBB-dymhjasngv>Zl#m-5QaY%Uf^CJUKVXYT2NejA~!C;VZoruB==*^%H@s3t!xT|CLMBPYx z`^BNb-tps8Nt-c^mN+U%YX~MY17Dg2TK3dd*?{9|TA7k6ZJMxUU6emiuzJI7eJ!=M zwH-YVj|>f-E!ZUOEe^yOU1skb(EMjU0H8Fj1+y9C396GxA!yep90i}#>x}>lx3$#v zT=%d#g`+9%8f}V&-0#f+J*$8?Wo#=TH9|{9lMn}?0==$P=~T{)HyFt5gECdk`TknDqAb{A@`X zXxVE5IPG&__{@-sYXi_NhoMglO|yDms$=)}Z}Wfa1&i`0V@48G;uOQA`%gR8(wjsS zMr*AVw1rf~5TyhW;;I@`-F2rM7rJnz(YWY85E7ux@GJpR7#2Vzg#ZndraS_H%m5<~ zLlBZH8K8|}$AZL|bn7qhyF7M4scTQdW)>%RnD3s)ryAY(5t)+I7LpN$mOP)(A?}=q zoQ44t4!>iz&-0Xc|2q_Vw>L0W-*s)7v2ibq!y|YsT`eAp(J(Ac+%UT z(F5+}#`%P(*p8eAJ!GMbMzfD!s-*(~Ho~*B9Xv=F*^EBnO6H5r{`Sh0zW4YGm}%k2 zX$1W~OQ~U;Q*cAT4Xof*@I^@#4Ap^7Ypo<5R29|u(~9HO7xth(3RG6GC8Ke0!LU7H z--H``rh_b@HzZDoq$3@m(VNAo74)^QYqEpKSK@`x7&aROSX<#Fv6BoyYCUNqud2C zgbW;uMKK_c_;JP{qBs+KeBN}YiqINwX20h0i&Q#tin+QbPY`QtFd2lrJ4)83!@Qef z>Ig|M+8^9~`JU-eZk$36A<1|^sxctjfNFyUM5s=n-LHLGzIb_Xf1_P(K$`UChl$4L zv%s%hF8dt$NV>?>X|}e(nP-`?D$1dH0M12)-R_8cjBq+lb(ng)CaFo6=Ua>1+LY(m zKHaQWtJS~=3;^twW+iNHZQlLL!j%=F{1_wmi|r#+Lqo8V96)-HcbQesl3@MA$KQWS z7z57ZQmNPL$)5@qFS|9m##?>+Y;#>G7K>!Etu2{IEW9aL;x7EhKjSX|LqR(oqR_Jd O0000wq|u^<1=M4(X*_`E6p$2ZuC3GS;G^t2$uZVl(56189s z`@%5)%Rk|m3jfbV|ItjAO%4CnU;orr|I<;njj6Z*000zpQh!cU0A1aGLYlb#4=JSm z&z$Of$LOHcSLj|3000A|Nkla2;5C&k$l0{4MQD=D`I-URj8#^=PlJQ#J z#$6QX2fsoPz!*Ln4i!1Yf0TFLdFP#X4v;?s+P1FC%YNVN_U%92YHM{{m$1BPcDtRm zN<+B6whv`+kADl^1qvz6e!su$DfHPmS_lE0bML(nVi=~6uS|Vuu2=A>KzKp%kKrDI z%K^a5kk8yw+vvC!3t|NpO}}Qwi&p2{QcLC4hxMuA_W5h_$_(6YRCxO<&a=IW0gSE6 z7?7U_z&1>|5!3vzJX*gqa#cxCsl`ucyEdSRXCQ^9aepDG(Zl?OS;KWlZDbC?;ZHM7 zyWMe^5Hd-ip9g48iyuz&1E*b%3CgQ8llo5$Y=n;OV!6OGOH4NMrZ$)%CqR1z5VaH& zr?owk2ZTaUr#L-ENCC0&G~VwpIl@x}grJ5XYI@%2Avnn*Co(+7`v_@|&}>Ke9h3hi z?+zhD!hdtEen#&BIuL{_)MAtd9&d&38G#Z(DkbIj3G#|9ZdrPY8?~6g&(4}1jt&y;e1AMuH8K$r0Wu2=$x7pv-dNgMhO#4~ zbMC6L&EFB_7@%q3qv@Sg!+I0eNu74K=^U$?h@2`w(kRDA*w0lnMRs_*e9t*_qt#qM4QB=? zrGM;vlOqoe5kyZksA)cJu>~~$sbfPRQRWE~ox0eBj-yowabv?Y)=4U! zzUL@YbiB4O=i(UzLxP2Vh*O=U1y}?rCp*s}i_nb9JPD2iA}CWsbd;1`@f4DBR5b3; zI|BzHq+((}IH2R%~h!eCk%%F*;bWZBtHefn`epMUfVlU9+WxlU0K zi*Hp{e&?Uu_E1z|>ME^A0Wy+u?CRosIh+iW(%Jwh5`w|Zu`A)Yz7K(f=a&pbm|dY) z*ef|XLuW?<8Pp3XFQ#-TvBVf=a7VAFJ%fZ4A))tWcQg)iHpKi#7{ z;;TTXVJDwiBj>S0)R#5Oi!tG-Kd@;j*qu14WG336I?RkRjek!e$Ad80pE`Iy8N`7v zoLVEsgfFvkDy(NH)tWZpsXv%lBD;4ixN;( z_|!&2g^KKIL8^~qQB#Z=_3LF24H?72wt!cq0d zR{Ga=>VLLI`PXpTpE=5iG25X!_RCuM(q+wzGU~TS&W4nR3Uyv9PG10{n~1XO&|KyW%<%(>bOzku1Q%i z6MtYd6;LY??ZaQ|yG|1Pqo)7>0DW{)PE!D%3K0hV3IYcY5JdeljNVeTE+$G`94GxS z|CF)j80%VsCzR@;^{txo{Tt{xLV&VwrhurO0An@ASclL9< z_o+EBV4B61the*L>DTG&RjK3fqr}JXPJjB=?e56Z*Tn7C=j8NQ{d%~}!Me}RZkd3| z000NZNkl}L}rsG1PCFa04W& zz0&1q_>Q#?-ul2J53S$WdgQIQ-stXb_~w6+N|)bq@0uNVEx5U0=ZY`g{~6Hzi*^>= zykG&`DJWR9=(`WCf9a)-8$WwEbAQBN-`)N9+FGqrrWZS%r(e9;-VelYa1ai3?lfy9HG!kI^E5GE{ zR{Fp(0>6qOV1=f_r#RF3@O0&*1bHHcHj@O`wP^VwG0YEpc z*Eqo#<#r`}9CYN&)=Y;?ibCpD*(=Q^>!i_3110Ws(Oqo=fcO@9W=Lk5? zW&|}kep09ZfWo%6RVrq137a(L8TmvORe+N?lQ@e+LIMpZoshp`*dxx@{)9lc9?@8Z49X+ z^#s94ut|WH4d3Coii zS_icouK*Xdu^f3d%hAbH{ zIHCaB7}6$Nc+1vlPSxVw08+`ELZ{RhIrmp0@UFx4x;LRRpq0U~gF)GZtx-*}nP^pI z<7Zx8JnbR=yY|C=jaIC?P#%2e1fLIk^1!$us;&~eih&I%MD}=ZTRMF= zu&=!}tF~B4>B#xB;EscWv*$XDQUeE~*prYg9U>8FrTq@?ZOf)_7z+2r<3_X8AlClt zl~;Ot4!(ZkTuZCeA`|Nf?rhChM1~RSX-}&+_EgCXpgoC12CeO%XWJA!S3vx4cSuDm z;eYTZg+dWmm2de&q8VD4!sor?wmQGYAQlo%J=h+LYiMXQfTYurBwLaR zD9}#5)@(|6_Z8063l(oq#m3_qqer7sLF&gkZE94KxFV{DqUk!a-Y(ZRUMZ`PniYBXv!D(&z; z{4o3LYzg<^wvX>Ci@vw%2S5DL&wujMw|y-RQ`Tcvn?W9rr@p>Em-9DejcG?H?0>dD z_H4=j>`{w1FWFqQ>v+l=${3q+AU_&!G^I0#9kx)|>$dxz*uC`=HoV2pj3xV8;+Z-V z95Qw3OsgXvN`%MV_E@TM&)#KAK5^$<{LG=T&W>=%=5W|-HkQ#b5KHww_V~84RYjko z1uxnZj3i?n-jm^~E}U$;RW+?aLm$hPQ&n zUj|ZR(g*5o1j<*}m6cxG`^BdIu3#iOG&B^Aj?H`izDKY5MWyf?U0q#}ox$MU8D@aEa~(Ek_x2dE%wkQWAw#sB~S00>D%PDHLk FV1l|&_htY9 diff --git a/public/images/emoji/apple/fist_right.png b/public/images/emoji/apple/fist_right.png index d9e650eae18ff9f1bfc197c36f3ca373a99a34fe..bf71fa5489e7bde002f30ed707b4248944029820 100644 GIT binary patch delta 1162 zcmV;51aAY*X%Dnt572)JbvO&NZ5H5{ z4x>~K&V&)=pb)cR4xmyF%X$l`SP$Nn3jNGN|H(Voi3#wo8tbSPzGw~fwIcYvDgVtw z|IkVN!!pQp3*M9p|I<+a)K~x3U;orpV`rWc0000KbW%=J0DqDG*Fhir{{9WK`(ogI zoRr1R$+dl8`Tzg}%t=H+RCr$P*6VVzNDzQw92tgFK+T*vs`r17+ubt;6k{rzt=d1n zXyq%)JT?rFFL~X&ckkZ4<3;hGFuPM(9u9Syru;8p@i}>>9d*HkH!}xrjd#Zy_B$764`L~2EH64K22AQWQ##Wi z(D%@MbGBmN4IiAK8rWs_ZL56`<3>rkCNBQc;zgD8HGgq$Md(xnsC!(VIf@Zp4|7>I zq7d>drOUb}WvO3B+Vi1EntOz5g1V>0$=2sDYHM;P$Q%fgUv+X($ce(8bPbVsrS|?VQGp(b_qnP$DQGH>t-~ z19x&@tbd;aMC)I(31jdwnk1qkbin|MHwyN?xw|eLnh)SFGn4tz^1xb>$8h_~;7JAC^P?hDQ*+3BIX>-gh&ZK>i zwj;^GjCoaA#U?T4*7zGV)yZ8&+U#!65XF7yflWa=&iUldm zv`iF65=@>iy&kK)Qu+%zBrhZxq&3tHeiAT|RF+K@o}?~9#S@9|r@NVe3fDIMmKNr6 z)_>N?PGxM65h@AVN@`jppy&w}kIgeRpN+x$WE?%rEj>W{r%=Jg>OA%FL2~=^@hvB*d{uzL&(r=s~w2lt;-iF$!j&X;NYw+vG(xNCu>sze_WfWkM+d%4ltxyp~jW z{H}7u&=H9$w^(Mg%|P4RPEBY*&N&Sm1eil;0_j*))v>LMKOmdO9aw~sM$uwff_`PuTo_@XD0FQ5TZoRawYNW7 zVcBh#HNSV_A(DmR#gkQO@-HizBT)E4Cu@^Gl(w0LGU&*YKgF9PC{@*>^GB*~+a^u^ cuipIwzANdy2A3#800000NkvXXt^-0~f-b=_Y5)KL delta 3015 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 JPDHLkV1lUj|7!pM diff --git a/public/images/emoji/apple/five.png b/public/images/emoji/apple/five.png index f4b42b0dc170fea21cc4d0ac14ad1937183051cc..aa7ff32dddf6d514e28242cbada94f092a948ad3 100644 GIT binary patch delta 1093 zcmV-L1iJh46xj%nBYyxtP)t-sM{rD2Yl2T^eOq;nQfPitYJYc{xpS4XaF4ERi>Q2` zzn8PjtiscTr^RQ5qR80gS#pYEewez=-0<@B|NsAQbBy%>000JbQchC=xQ2aF>Hf-nPAz#HBNV)d5K2It?4aRM`GeK zPj~%9Vb#2=Vu_`v+qf7ZpZ$?3bt z=Iu|S*cXNEyNhc@wu)?M!u3U)(|S%s771ApkU$srV}D2BaW6>`g{;B_S2{)8Bj~7X zLLjTCy6YicJwCWcN+*RXVzMo#D9{Dlfe+Er715eS_E$(n(L50)d(`L`ky+4@VItc^ zQV|`sQfPK!c_t#8MYthmrp8gla*Bi+vS?*uw(j`HAnQ^^ogL>N;+fsL=?9fO^;P^t z#6<*6CVx48CW^uYRn>78ZGOG{`^-I2%pxWvu|iDZRD|o*)KW!CkwH`iTS}=2H^)qu zU<1*=B^q_8L>KW{lLCn_yR1soHk3Ou($@03@d6Etp>&#DyW1S1Sw-?#TDOGor6zRt zl=y0rG8zsQgm4ap?w*))+Rc_{y8JK2Y?imqe)tX(?6l`6$8^$%DnwCTa6XbZHwe1@39vM`*ws)l4UB+;D0u3-= z#RV|Xjxs(1LFOj*fLvQE?SAF3vUUT>jKxC$IU>uwe%E~kTLav6?y7U3qzD>?SwRIE z&3|h8JDQ^nga@Q%e=S`^DE7;qqhEoxuB4Ljq1k-pd zj+|HyB0Lu1R&KrP!)Tr2-UcBNA*}Lre}54bL3GpvCNi`bH**nmn3L0dU?_ASK^zo? z;&}BJ?O^SJp zxj6=7Zq|@jj}y zL6KD7AU*fh^9e^|B2w=+?#;#CkH-A4F4d2f;$dApK1?6!>G<#u5#slwB0W6D00000 LNkvXXu0mjfEw~KB delta 2667 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 Z-M?E`Riwg*8bAO5002ovPDHLkV1jmFj5`1T diff --git a/public/images/emoji/apple/flag_black.png b/public/images/emoji/apple/flag_black.png index 7991607f80f8ce8f07d72dc51c9a776aa2d41f41..e953b70c69ee9b9fb69f824dd1ab4867060cac17 100644 GIT binary patch delta 676 zcmV;V0$cs>4Y37~8Gi!+003e$Lv;WE07y_wR7FQ{Od1**Yin$3Yiwd+VQ6Y=78Vvt zNk}6jBf-tqe29^7aBzKqf=W|eDk>@?BO^FCI5ILaKR-V`Jv|#68&z6g2?+>LPfvj| z=9vHh01k9gPE!ED-@F<9h%{92=X0Qz*%>ll0006CNklEcMsrGUN z2PBS&jOjYl8Gl2Lt)obPm$v7Gn0IO;av;j+0Yr`_QQx&3v6TLb2ft88sG|`{D=*B% zqF^#abJ1X2+emu?Cx8Gkynr3TD$x*&yjsfh;QR75mdr^f@+ld%jaX-`4TdO@*%Cno z8FW@?-%lj_ga)2fps{Q_6AinG#6uX3fdWJ#_WatBkAFmFov2xfC^;JH_Dq3dQF?1Z z>(B0J91V%G zw}wF3zct|l9g#_N*e{ByRJNW`8)SA<}SJ6hef?pUI*wZx@O9!RK` zrZ~}X;D1M(zWvFQjrH%{{`C4y^w8cM43iC;PssT8+u(o%7HCk?W}@Z##RUf@qU-hg z<>5DG@T$1%#bFB|2Z^An^z@fsDP6H|DO$Bnn2!WQjvZ{c{EDi+bP(OxD=x^O1EPQ< z0YtTCFOS@fjFV^u$8iyiRaHri5+bB{SCq*qIvqvo@lcol#K{lyps)F2Qn8}|0000< KMNUMnLSTaN5;zzD delta 1770 zcmVo2us^$ODpguYpo=VAC?aZ

    Ksd7ZuW${urTDtaMi}u5?j~5v77HjoBzh zqhk|keoRJ_%w%RVnVkt0X6Lx&Cp4jeeJ>fphHb?`6k-@m_c z&z?Q?U0q$39UUFswzf8vJtguYoIZWJ{`Tn1`9NrG%Z*zjtSmFxzirDKAAZo@KE{>_ zjvqhnj>qFZU4Peou~@7|Rn=fFmkVMkn8{>9h*uegQ3LP69u2V*rovL#lSD3#XQGJj zD~fX0;c(n@I-TLNva-LrySt;d0(I=zu{ji~|7F`p?f#!HTxE9#F0lHb|Gh81K6QmX z2b?)`Mjad+tVpNRwICJ($@L)A4D#y`*TPrA{D_roHh;??P~LcqeBR?ZhV{I0;CTjt z@&;j;rfE8C3h@AzuO@5v~Whb^ZPQEg;qal2v$JiM*Q=B_YU296Za7$7X@@u~{H=PTpKD7xQ>L zN_lyCt$)|+-HPR{$z(Et4*eMMc~KzN($X@~+|=}W(}p*{AHH`_ofx@uEuD4;_U+r3 z>FMc-u>t@D9Y>EIbuTO|ctNHL1+D{;W)Rtc!d`{12ceZPH)0|x5+@^p$cuY;Y$+1J zJBSO!aJ(2q;_F;sFGTWM9x;x#?b|ne+WqaN?|)952;BJnk{(*UX1t=JVgSnj0mW~_ zkKqk@OU6)4s&_ z5D9>+54n}7$4j4sJRJ{CfV#j;j0oq+n28a@dxcDZ?Hau|)c`*EoE0>4!l5|w4}l~D zTNaPcF`v)Jl~zH%f*V(!E;}j!f|-jaa)07qp1hbR!X$_#*#d)v6JvXUXtQDH4CgUV z1h+eHM{accbK?Thr6&>~qE<#i+7?M`#fI2n)&kjp+8;zn5VPlbQ6wIV1&Bt^&>r%I zBwa9}wSS{Bbp;(G1BI0aY`fA1OYS6XxskU4b$@Un z1TGDM#5-s?LU~5t21~e$N?0K4i_zW${67VvZ>d6~^aTBxMOjEag~~%!REKxcwKk5`Q?#MLA;PyiPHT7V}Sum{)@Mt%tKC@g~YQ4r;#%)nB3ovN;`PT#zFGiRd1p<=Mq zIX^$|#5|%4=10dgfm0(oZ#~xE#`CX0G!Jr`{fuIs7%%#tK}z#f8J$;gii|vU0b;XR z3P<9@lW`#)aYOnp><;2E{C_R@`wa~Zk;|7aXPFHmk%(1VA0Hpjn76^ge8iBWrlzJE z;%-I_?}NkWqGQ0Vt*sjmAN%U!*|WWwliz&St2)aXHC25JVyqxhEGEdz@sqmEJgk|( zKHdp`;<>xg$fD(H)LP&SuSD+5&zU#ky%Ie##fn(^gwuOs~q z2sDETZ^M_-O+I)Pc@2$iUCS9zu)=1eielfOi9458{1B5XXjxhvWRC z+46w?giG3in=PZd+=he2V$-PnR|b3Bie8-GH6T^@_`-XU8;E*9oD<9;)`2ME30!&+ z9MdTbpHFYvv}q25=3_Zlg3!c-0S)ze<`DCflamR!!Mr^sMn*>DbjS096i5mr1(E_u zfuul&kIQ2+n{ M07*qoM6N<$g3?)8&Hw-a diff --git a/public/images/emoji/apple/flag_cn.png b/public/images/emoji/apple/flag_cn.png index 728dc99cb91c0c1e61afc4da97f9c35736b1aab8..e242ac76e7eef234eae3d2f4fc62809ae723abb2 100644 GIT binary patch delta 957 zcmV;u148`s64D2dBYyydP)t-sM{rDJ5gTR`8?tC|YY-ZvTx76gY=glNqRr<0?QOAm z_E{|6-Z#-CY=0R60l;s}$L`}8#}!VUpLXY8qNqr zk|cSq3rPrLiqbfakxKUgdf9(G<6gWU#vfx~3?uCT%Gwn7`rtixe|9-MjtCJ5$pBF{YLvwk_J0D_$2N`SoC`68IBvTNp-z=j z@CK2xkh<&YA~>c0?;DY85Cw=;j6kH6wJ{P3aRibw!M~&gNcd|jbp=v!WxNBOV20(k zFO!$}1c*6^o}Gr!r)CHh7%uCk=4DwX_(0(0DMZghuBquNg_V%uJZU;34pm%+kh%a> z##B}FX@7{+m6i_5jj`AU3*8REET7Iugix~lNVsvgK=dFr;Plgk5P4v3hET#(OdcWb z4REGF8XcpghXhXZ#wAFdg=*JG!!i%qrnUf0ZA4)fF8jT?rA#x2G ze~SS1-Hk3oyoc!JM)VwXl-xH`53%o{u#Fd7gi4-skSjE)k*|bE?lS@UvTYFY1yZCP zL4V_G^CCbYoNGx^&txF6Gf+6vXj?$EPTO|B-)CD$w#~APreg@C&`5)%9fW&wC!{DK z@N|;x7T9s4;Wjr-i(oimK7U!SXD;jY%lu%SKu^#TDdneOC+!JmIAOM0jeed-s~Ko7 z0dg=-j$7LL>>YuIBL>0%o6U~;a<=v@F*Z=ZpTZf~VnV=L&mm8kxj)6A#uO}yRxVfq fjQ=^0Jo3n2&Lr>O8eU4-00000NkvXXu0mjfQ+&1d delta 2409 zcmV-v36}QK2lEn;BYy(`P)t-sM{rDYCnsGR9cL97ekm@1DKDjPb!{;*Zx$A678zO@ z9DpD@S{WU$dVOgjC7V1vs&#v?ZgjACe^?kCxqFSKWoup;9IA13p=4=U7#m|9AzK_E zXCWq46c=M3BV8CAq-=4ZVP~#$d9QVQscdnretxcTcVQnRuYYlOVICr09Ufa48>MS- zRumRi6BS__9-m}suyuW=YH+A(Ze=4Qv3PxYE-qagA5sz(R~8(oY;uu9NOdGBb|x!f z9U@W@6kQx1uXB1`6Bd_FQ=wX7f;c@`7#oyPRjPDn8LLQ29xNuDGoz(GjDLP@qZ zJfbHlv^6`RC4VTwK}f$nM4u%mq$w?@D=(=lFu*@Xtu8XADlU#JGP5%|nrLA*Odvo}7vJw&c9GN?8^o*paO%}KRuahW3~pf5FV zA}6?AWU@U(zBWd!D>t_>KEOv$zf4qlCM&vDUZE{9eDHa((7O};}*wq$FeR$QDUD5z9gkRc;?8XUhlN3}sZ*q2PHA~aZ_3Y24FGg(D`0EHR28BcxAOqCG^&UVli*XGW|;FzNGDyIwo+>R8XRL*l(s z;O9=@)=kl$Mzt$Ju~k~LLrZxcA)#Pqn=UhrCoGXWLF~^~qAx7ccuc=RLjV6?=*Uyi zflJiHMzdiv#FIR_Z8+iGPTtr|!)`$D`B<)5UZ!7V(YZv|iB9tIS+Qp{&5=d2IyJt4 zIDf7@G_XKdzi(FI#!=ap^OPUNRKi7`hTrk zx4Y%Xf+Llcxw*MjRY&rFx;kjmXP;6`-!=WsmlFNSj>AWd{CEr^Hf-3kWqb4G%c=26 zN#WtEQ?j#n9jz?LubSN*fAjRuXLnSgJFI2kcn_1Yefy?O8}kx(B#3x2CVK@}t}+-D z=}GZN_x9|Af8wn*zpscYk*$lY4!IHp9ci&14`VFOMn^Cq_uUqIohFJ2F_s z;b=JuhH~|qH`<`yTW?h5=jX%r4Vp4*$`m)ZsZ$5EwCrv{O95kJ9+gTJ2n6sVmPk=W zEGC1iGH^HsfKmuhk3F?1yN>4ORvsxRDEJ<7>C&aY|7mV+&O>z|glY_w1b+}e1VIbt zaX7JD%ZhsJ*~U>sriX_oCB;KhQ&STToc%XTl9(tKV}>Uls#qOC7xC8yumJLn1&A%P zgbF#aDg~Fps8`CC^LQc=zxes-MybT;c(x@5pru|WXdVWI6QPxb9FF@g#g8>5VWWrBnP-%;kPu$9$cuh4OQPPd zK1Ped4H}AflsFKMZL#07Z&q-9edqadnHEs*m4ya_oExcm-1HYK1PT&)Ee%Qwymgrw2sm^NIRW)`bQ=4uxfu+`O&p zJS0ECtY`VLWR1nE5ELj;Q;+NFyt}YR+goYk*+0Lw#NX5wDT<|21m} zjz7!_`tSP)hu8!NevoE}a35LTkV3ZgzaNLzF6R3aAsX>sGvC?l6~Vr~vDQ~D5yC49 zREr4^&GPccx_^kTRTpUw;rEdVqM0v$V>?29ZGK1X2tjfLF#+P?P=s2H)&?K9Y>-%| zMJ-!p-Dv?b$b*HE4Cbm zh#QGENwyYmkZ8BX0s*!nYTGmddoALHuwc+aQ2Vi__kW&3gUSf8WO%2QN{tZJlWL9t z4Q$Jm=?sO!z|m@9&|+K8M|kf?6$RkEAE36W1|N-f!0;HJT~TrU(4j*)IXUI!<=bi% ztF0gvR0NwOgSiGuN{~X&1__O60*u&|y?4Krzt0Q}E?aqciPoS% zo1}#K2qrC2LPA2kxeO2nJCnvv8`pS$(DaaBZztp-4|p zPf59Ut)gPl8f+!@LkEwx8#~RV8-+sYXcBiKkz!0^I%OQmb;88BxSHzfD>++HHUqHU z-hK!&`Z`UgbmAewh2-oyW5R@CZ=(!@t#BRv0jaM`*PeX(jB}dV7iFfC3&r*zXp1ej byjorW)OSScAijS^00000NkvXXu0mjfD!4!^ diff --git a/public/images/emoji/apple/flag_de.png b/public/images/emoji/apple/flag_de.png index 5d7ed7ed6528b8b42dba13569ba19f8669759e4d..7563f6fd8f8067cc35d0c4e90f926de21c6a7c7c 100644 GIT binary patch delta 1185 zcmV;S1YY}}6SN7CBYyzrP)t-sM{rDeV+((00-}c%abz=KU|?cmVsk|+ZD>V!7#A0OWebo10E27}rWq9g003uaXL(}_erXMLUj}+)3p+bI6ciL30s#EdB<#T$ z=DQN7hzgT<4Y!vP#Gee*uNeK}B)W7M7Zw)X2M6N_3Hcx(3x5j>=MN9_8W|)cB<>Rv z9UUFm8W&4TOF}|I*a8A9EG&o>6i*!-|0N{u1q%-n68;k)0|NuQ8W<2FBEkUy`b{G1 zeiq-i3u+}Krz#vcI5;;C4b-UwrT_r^m?hd;2->g*_6HZ|&JXy`BlE`|oJ$2h0000Q zbW%=J0A2o~JAd`n3M2ikZKL3=^P;V$gtVN?k+iMi*A!C#00Ux4L_t(|UhLAxlG;EN zhEXph1jUrgX2W>jt(-GCOdk9FpT~a((X!={fZ2G#hqgL(??qq!&u-niWfIDHIq#`8n z(qkOQcShsP=l_}z$IxJ?F&d<*YL9d1p8_@A8*_oLm4Ry6u?msrwCEd zciR*D;(kc%0fMh04cP#+SP(Bwk8I%x#puWhiJT2d8-urA!4J=04jO`xZQB(hJg99( zPIeY#Lx19wWB>&U0W}PD9P}rXO6lCy5TNQb5mFR;l+(YOnn*f|K`Rys9z@`VCTbih zNyE$c`|Pj`L*FkEO_Ft%wRp0;TyrTZUFq6m?O%zVDbOH7PaWg@;^0KNc-X zZU$<_@?acbh%C!>UEgt_Bs}W-;kOg?HOn5L>M1JPPlAAPl>sH%5q$g z5O&O*AH!9Kf~!7A zXS>ckL}>c`6(N##s~zn->9p}5A^9-bm2x>9s>Y7s-pEd|0D1~hcNPwOS1N06@LqIgM^B!h|BOf2SQkx@laE(BUSLUWBP zQL<4|QUPIj1`0)%=gG_OZJy1Ao*tl*Mk0nsG#EVc3NV03gaMXillWW;JTYpVCgR8d z=e#Bv9$APPCc;(ZXMcVCs?UWH{~EYUmoEJR0%*^9KW{+U00000NkvXXu0mjf(-a5- literal 2463 zcmc&#`#Td37vEe*8=E$avDs#}G3GM&WkxO;CPH%w}0=N%ufFe zkfb<=7~35N03-oyme)?lI2IO*E##ug3FtxOsjMm@8Vmv<5Qu^VoOmQY zl658DC@3h1!?BHz^5yPBpWu>GBXMa__?Z78G&D3h47Y#({%C(#UjCbEz_fjN5i$F_aaF+TwDO^AV)oqONtLfrG(+qgV3Iyo^UukhNFfA0xy%a zF6p4lGxaaK>nt&7csyRbIe|dHU@(h2OkR>u^K_$0GrdhATS&!!wxYh$)s&Q!l$Mt6 z<5`Z;NMawLQ0TXQ_faE)=%LNHDOp8DrH7*RRu3&BE8A0VK5e1jr;qI-Ybe2B5C~*_ zz+GNme!j~|MqYlc&uz8Wb*9Z;c%LrbT%d~{qT-d6mA|}kS$XTCuCBhscmDX4*-yc4 z4tbz7G^SqI32s{qx9oV|M4z)Vob7ZNXte4kX&~TmOH0eK$Bd0Z_K2|#jYgYnWme~q zoAJncGPcW5d(qVRy%FKHF51!2vEPUwXtXIuDK%X%Yppc?ciL-n%!5oOmmJf*R!9{a zE7HgFN{ugOQaWx}qO`RQ3=F)zy$A1FF&GScd;52fY?m3dFP8f9%F1;``uv+_kE<;U z5(#f^)0J>|WgOns)pg2HPYw#3>UHSGslRWtnQC(qk}&C!n3Pb>mJ3E}wzS1pP9wP{ z9v&W06l(kS?Rfb1v2HsPMX-qqoJk~PQ-~A!X7fVl1+Jx*9B9VKK-ggAu8PQs#Z4LF z2FqyydZckWb)nyR*3Edq$8`AwW0qmO(dD`|=e<_%7*5n)7P8LjYWEz{73LVdHo$h# zNEvFd4kl*f;jVk825T30))?sttc*S$qb=++YcwR$738Zih)9HD-(FJ31><&eDgp?Y zF0=Yv&!Av1{2-lMSd}OG+7(`!{Ws0;CQ%s^(=OsGd7il2%@Y9HR-D}+Rd&Rj3GCQ+A=@Zp{>|TG>rP=aZZSKtMr0b$ij|~xTvU!15 zBgWtV2mW;6%9j8D>0)PlTQA?vFCUWFXTwplaZj%d)hfkF#G3$R1MD6mXeYJ?u4@AGT`64TQ{D}eS5Z20Yy-P{>}${`>m7o zcueQT%1UoS$^;AtHhfup+>qccRRhz+wkP{a#jmY@{X}40G>KlHFDfc}HqsO>sH7fx zHc(9MnECptmUYSW@Zx;YGdd|MmswI=e1#3aj_RqfNUF*`x%t%Lxj&7d2JB2#!z(O1 zli2u~+7jY4Cet4irx;pGdPgcaGtp*a%^j%el4M0lKPjr9%9*`uYlGUprMSzcU8-1G z*t+7fyY4$mYN;YJHg-q!kjW!~^&R468OSVU{-vf z17oPfy4KcK9`DQWJv8!2QO06B(^s3}RjPRW_yYf9-iL=>ufm^%t!3|zc=0iLP}_j? zGdy1|UB`oA#tO+r4Pv-WKt-Ti+NeM z4I1v$)!~7kmK9sKzN;WcM4~|rvpbn?$#?TS!KWO)ZRRKa{QWj5e*Q~RtaZxF>$oFF z6hNR=UPFUEFfz9G7x%~D`O)u33pXXZlpz}y{L#qY4=59<1B!Gvg^6E396nroU>6~J zs;}{QZS`m)u9D-Gqu!V?zL@uXl(kJZE#PNh+IU)^--k?B_@Nr%f|up_C@cGXhlDlI z+_!*$fFYirWK;V9%-1gOS!F4GsPQ{DZdeU{hSMmWg1qt<+Wh)nJ=r*6;`!ucE7hR-k`lRM~-`BIlA;(nH=A|-*2TJaZCe7PA-?C=^w0C#+6#lL~ zeY!eb0Uj_ey*(3{JZ;Lgv;X6vq=8R^g}A^1gAYbWySnz?5(qqR<}ibuK;@kxRay0^ z5q=ib*F(?05;f<~;lsJsr|Rz*>gwKx<8^O)+$f0*%xM0&TGCGg zf`T$Yx?>IG(UKcIZteyv%MFcY5O_$l}?-fJMmWT9TLzqgSlWk5|SS+KX zC#L7J;w!w*J1_EX}wuRMdoY$t@s7;nNI$LHF!@He;I)DPB;4oW>D6D E0P*2}rT_o{ diff --git a/public/images/emoji/apple/flag_es.png b/public/images/emoji/apple/flag_es.png index 64cb1f0e72f6bf89c0f8705aa31ec6870ffb7d32..5863456bc557ecf3d3597882d43efc0feb81098c 100644 GIT binary patch delta 1421 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 B$jtx% delta 2099 zcmV-32+a5B2fq-IBYy(`P)t-sM{rD-goqL=OT4kXmOnPMdUlgMHk>~{7cX89FIR_% zh1-yH_OY*Z-JI}gq4DVf`EU2 z%gf8Kb#P~Zoy^S4jg5^XJXw2&k63k;dV-5+fSkg@!V4!zeSdv@Wh5JegM-V<%MK_= zwRdr8B_4o*fw6UOvvO@`fShQ9of9ri6D>^?FHaLLOjB-+ZYv~iCm_ts%*x8j%gf6R zC`QfA&4z}CgM)(r8cky&8eSa+O-m#c9tCcS}sb1Nl)aBUDQ zPjDg9!rSALN)pM_ajk{A54iHNQ5U>lz-P#N5Mce#Y8y2Ks3lkIow%H zT7t7JU!BcLJ|tI}Dq5H;TbaX7L(We_&`m({%Erq{J>gbKBvX;ZLpI7sJNWnaFkzs| zNj<4WJgGuBAWe%RP>uQe_}NuS-&##1Q;-}-gYok6)KEj)SW75amDW>7%T7YUO+xkc z^}Ihb_kZ^G@5sf*M?26@LN8yQ?(Xj0R7hBWuOd~J{{R2eQAOBQN%ZvdEnb?_PeaU0 zKAkr$*;h*wHex1HiTVHk($do5;o;od+vMcrwRUiHCm^_BSn25KQFEIiPKemq*-LAZ zIcA+6L2iFAD5pd`h&3~_8$D^hOhUD{xWr06 zrlzKzo}S22N3gK4z++o^DlWVw01SA4q>sbf3w0Z`5R3D_4)~ z?CcpnZM;!OI$@AQXOh2IPc~SBvPM1V@$!_El)7?lX^OFWk*v{PRE{$$*Sol)j*K=> zZGYm(#?{2atU52WKQyHz>G1#n0A+MiPE!C7H3_09q6iDE_5)?~@AUmL9~g_B8_^>c zv}aA|)wTT*E&M`M@KHKg-Q?W&eOtnQ=XW94=E?7|_=bI>bYSGr3W=S=jGf<{Ri)%o z>8+Yk$D_18tdqas{+OAr(Biw=lv{epAb);o000DuNkla={aaqLFDSy|# z_WG+YJbM59Ln!lugBRVk_+HO(VN<8vd}n9?m)rQ~@bGYJYioD+VU&S^9}fjDTI|XE zubJ#I2@j~_`p~&tZgp)F@9A%E&0_>^ybqY>7{INrZmg}Tt2e8)+Ji+poqsOBJX2XL-71#JWbLM|{+8J>Cio+XiC zfk7+}R!~r2MC6j^LIVQk9&M}z!@O6mAru10!J-^pML7)>7RtoMy9>U&l7XJ=ICsVn z9v<%P9TgH1a(7gexA(I@V*}MeC;-6@Kqb10{PIusD~m-K5+P_J16{38Jb%!3`t%ut z;d7j!p`jx`naxm%RznI96~q>jIe=P@$2S}}aiXoQt*@`|2t>X~qg8`LV1bV#6autM zhoJX1O1DbjkVLkR1{EFuXhVEM!_M5SgtykMlgC!>D+NePz|p8Mfx_dJ6_upvQYk0~ zK}uUFDG{9b^(k>X-^>MRvwu8&Un!x%$D^_^qale*EK+7>*g@-4c3>xOv%GQ-K!g_8 z!y~g6rEJUlX}ePMKYe%qHUvo|Qh>JGLsUU>3?%~urz4~h3i>Lof`(!wVuw)54uG-} z^3W0Od1q6yLZd(qWvoGAptrYebPnYvU??3RRWc!f^Wm+r3P2yG<$t7pj3ALXCdLtj zjwlWv5d)D0(MUAPze5{rp$|w%$UxE2HJt+j3b)D)4x z6e)1fA#K`-1!8(XuYYVy2|$(sDMoW`tcvm&i0s+$ema&(tAwwS%)z8Z6~){2Y(k-; z#u^%rFeCXE2+w|}kY$RXafIe9B7`t*VRWM zNUbWG=xEYfAO!(C4VwLE8xg>Ffsde^iu}yoCR2NRA&%pUMt{wIjh5U-REQ7|TD7_U z!mp;z^XIdBd#iAI|N6V#)M*D%qZXZZWjejq5GsWN5jBm~N54LH?6-?eO-5r+&u2J2 z#*0NHb9&~14;Za!|S?fzSASZSYvJC{*OGs=>D_(=7H6$*LQTB`~syz|2ujT zWXuj^vBz;qm^tevzZJ{oEx!h3`LY!+`}s~^IGc5OH!Ppk{!6bQvlLw_*e>3q*zUWe dJMR21@(-M0G|fARTl4?`002ovPDHLkV1fik2kHO- diff --git a/public/images/emoji/apple/flag_gb.png b/public/images/emoji/apple/flag_gb.png index a12a8ce6d57f2e1d66c262fab1f85bfae5aef104..e4d26ab91fe1a4d064b48d0f76e08b71920cd369 100644 GIT binary patch delta 2222 zcmV;f2vPUE8MzUVBYy#dP)t-sM{rEAxxgM5IRp|x6)0I|U~z+ck476onw+I_3Kx=w zk(h{x3mHGJv$6^qLu7N4h$An&ZggRAl)u5j6eCaz9772iK5crKV{3hIASwqEIm5TQ zXA>TiU}J4{jI3>Tf({>|SYcdYb-8hSV`pwrVTyi=iK0hRsDD&naUCa!Zfv%Bfd2pg z88?FvFMSFpbo%-E@b2ut4kWAu7~$aG@cjGn^z`WH<=EEN)8FLd^YZ1cv(Pk10~loi z3th-6J+l=kt`jB1BQ+pBht@YsxyIZVFmnSSY_ta)ro7m_A2G)lE#gqAp{m1{pS?j%g)%yH%B!xoKSj4sSK^?hu`@j3eu(XroShOP z0TWRI4@3It>>ea)B|?pL6CSu3ER>$5tcZ$>ii#F3W`7GJTdA$8_{PVD3K>j$IV%7F z04#J;PE!E>KCYr1DG3X%POWUF@zSIF^6CEGjGV8Q%5Y`)af70q{Ltdp?C#9uzI*Yo zdTIaw2DwQ@K~#8N?UvcchFoku58VC1c1A?xvYxn3i4>5CA?jjgR8o_XGp;EaC>23&vpIF(!4U~!2^1e5vHnObEz1%|i-!1Dn+r#V zbbl;1P0N*vRLS-G1t^6kSKy<~95sUw2si}Z!vrCH;rBasArvRVzmxA5pv@N_k0?2s1``vH5U>1=rkj_=O7{}V_2f)zwnPMip+`C_^H+BeYXUy4=Tzq7GblT!f`a+ z!+j)<<1QRPDZoUdnj@Sj3m8^vFw8|-$$yCOMvK))5_dqy1BtIpS#~4=Nu=a5P7-rR zsc1Cnjv_|{(ZeuGbvl`1i5F=uXR%s*_d!QTg9VCT)jME?r>y!x%1OgDmnxtyQRtefBczS_uFIO%MPQlbYkk4X`)0i6c zGvJ*UXaNchBJ6!ci8Rr*ncRS4xiA5=ZgdRVsHw1wRi$mXM!Q7nE(z&EkL!| zWY&t-QX!Dj84O+k3Wg-Y`bWEI-K-g80|X`^-k`^qii|U44r9Qtc6nUJ0LLh7obB23-ZI?ok$@D4h)2W-v37`n=!Bh)B1XDAA#pZ+;YEiyqSn180^g0|U6(x+Sg z>wASB3fzVxjg)B96eywUK%Jb7I21;wozS(cDCEG;>Z-N+28CQV(CK&-9(D-UZnm7x z1Kk=4ka)R6VU)o0?JVrSSQx9q9YU^dNKIBtS)@gQQejG335;KYJT4cG$6;@you^J& zKU){LzI7FZ;##czs(%0+eugS~f^`GSX!8q_hk`1h7mmz# z9eKSZ38d2=Cx2yzF~8$VcZ*zB<&0F1v2f1Pm{Rr;5a1T134vT7pm^WCdyjN<{I*(= zD>296883w_7=h(K4r6lM zLK4K%krP(ybUHoUy+nv7`}^x(J$tO_*|YUmPu^Z%UVoqK_R;yL!$@Q_6vW)=f&(JE zsw0*Mou7Zdv;OSy+M4msm-MD_?S~h?U4NqkouB8gDwQ0XLeh&uzymqTSMbX}zkd1M z+J+GTD?$Y0)|Tm(Z2a!!FTY*C-8(*hztA2^^2@(~VcgvO>^HssH^hCs{%U{!$z1!d wUO|$_YbRji3j~oj*5)!oE&jjtpa(tZ-vs&7M0G*LfdBvi07*qoM6N<$f@KmX4FCWD literal 3260 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 diff --git a/public/images/emoji/apple/flag_it.png b/public/images/emoji/apple/flag_it.png index 7b200c3cecd663dc2bd280a923deaf7947974042..f63d7d3297fb032837d7c2e000d839a1849cd46d 100644 GIT binary patch delta 884 zcmV-)1B?9C5Q+zoBYyz2P)t-sM{rD;q?~(+f`^ER0aGY~b#Kkh%|mZhj7?2t93ir5 zZwE>zFE}J#7#+*Y%UYIq%gM@$E;V47daZ7An{suqZ*+QwfDT9~C~8Mz8XpHoCS4R7 z{r>(7ghUIANwFw0yfi)(j!y9K@v$~Pnld>=k!i#_MEUvo1b=Qf0b4A}JV&e~E(Cl& zwkdca^os7`L@82KFxc~qHX-PyuRCr$P*XeHB zKp2JL+7xUzgn!TgVTt#Rec!U&|9$n$$KdhE#TcYSRpnQR{CjjfkuuJYf3vc(GF_`C zY5HA+rYOy3r_*k=eo?JfyVFssH(?rxMx$0+9s%t4`^`CU?M^iTG(GQ0lqQJUlI0)w ztk?~Bn+?$4`q}CAXko@sU^LE#?+<-*H5Gk--+5X3G?%faD1As zX&9lXYC|%H{t%hF7`g78K~&&M(C84MC-lt1&uAeTh(nVTH0RJhw1_0^`I1F(QAjMJ2w)-Bp&P~lpJSm zvCsGbfs87Q+;qX~I;>uI@Q^eZbX6GI{r~vXS;+`&{!c3_EBga$r+U@rt`iji0000< KMNUMnLSTa2&7S=L delta 2121 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 literal 2511 zcmX9<2|Sc*7au}sLD@xPQ1OMbW=VEqmmzKn=@wF!Y+skM(?rISC9ZXBlg2ih8?t2I zx3Ody>&TX!VT_sip8Iv)-+SKkJLft7vpvuIAgwHn&T$HJLLiWH#&CUW@P+^TvY!In zMN!Wm0yzb-GP5x-@;3Ya{d;+Nd4GR@Qc@BMg~DJkv9Yl^IXOi|MXmp*fPjF=$Vk9@ zdU~3gnnFTCfE*kg{N~M@_wV0-`0$~jp#hkBdwaXPy8-X$=;-Y11VT$oOJieWb91x3 zz5Tau-+*I6LPB6*U|3if0QC3wN2AdoF7W+LgM))$F+c+g-o1MVa9+NA`RUWA@bK{H z=xE>w;sU|T%ge{d$Is6X00MlV_xAP%E};S1?E<|@Pf!1% zVm>xDR;^+_K0f~A$B&trnaRn?>FMc(g@vC#fByRQYkq!yczF1TLLm}~Q&Ur;qoXS; zD|>r;TU%S3o0~g3J4;JTv$L}l3T1tLeRXwpdwY9mXlP_)ya85LuS(ght*s4@$78YBV+OrUMhAz(fgXZ6=H})$JG~?y9!}(xRw$WL zX|(qC_KJ#%tgNiGw6xEkKWAiQ;BLa3UHof}9?3bJm=id706M`V05}9e%Ll! zmTV$osLtvif5f%F=aaJn?OdfCX6o#XhO(I~h)xr(=6B|glFW%@M5WsSmU^-f^dxL5 z!Y_2QaqCser_{yd;+2B++9Awt1-AB6-l1TjD+I#EYpkzhW8boo=4zAd%G<$b}>&xNYa8Sbj9k&+6MiIP%CaqdL%Djuuope@_=G4n*fUSy1dE+_#Tw#tqMks`!4m z=w`QsPs-}NhJBwt%8B^Jrs1*^DDZ{K`u zL>3de9k5^O^Oz!*313VvtV>~)+O)+Jyt!%;PiAhW0>dOrLXG%On4%>R^Q-_7#|OmlREW6dtZi-jUQAIldU zE7hbu+(XgnY;04JeC@w5mPZAUf(_2eE6kS_-a?^5 z*6!k5`~COES0z|eHzu@=qk^8FzC^vtU82I=ObtDL3WZ84a&rsZyN~rIs@W!IMaoPC zIESb^_5Dm3dfehn)21n?Sl_hwCS!6(t}`(wl{~!aW&2!y-}%DDi#^?PQ#{-ptUTLY z=`ms2m`71Rl3I!fY?LH&_4QLD?1nFMtew%h#g@3~X?Tu#@~@KsV_!!V&amz}|E{R; zm8@Jkin%gnl=0#D4Czd_oZFgEBrBBkmz(p&%2><4F%zWICNf{UXDRm3K!>`z#D}!N zu0uMH)Wmr)qOc^qYH!n$7%Ge+gtK5Q|6Y~Luh)rq7vd(z#lrU>kR|i}4vLQ$R`!L( z;n#u&F|_-7+U32Ypto)V4Y6uTP5qk~Lp~9*%4=G$>5ZP{`%V}EbH~r(^oYDBr!==J5jROm4dB@dfFQ9A>pQVT^cB7MPYSU z74?(XuK3xF7$_fgdljMF=V+CU-3ib0Jqmglxw!}<_DeiD=t4+kikDQ}7{F5o&*@o| z<&-1a=m8{+XSbpL2Tp;R9^JD14&Mii zuxU09RNrkHPei1JscDSR4$rGG;jK3;`~uQh&ob6LCd7)P&SZDE4~aIP${XU%#VSj8 z`AH*A2S9NX&-qM|u;iRW#n<&YEst?LNtt=kbs3I^9rv?DzGyrP)Emv%U5^u7jBk3; znw2??d+(hy;%vSsuj zKB42{OJ&J-Hl*pNlUYN;s*h&E+wS&sSPBUW38_7y8(o%ns43DaLoaH`yAdhYh(bb1 z3mhqyrE zL6<9@xR$?G0z>1<6dFtLuT4FsBDv67kheMrkG_`S+Ke*Jn?Z_nP=NNDy2Hf%P)t-sM{rDwi;KR#zIl0h$jQve$jESRaG9BzrKP2hkB@kG zcy@Mn#l^*efq}=z$9;W$!NI}B#l_0X%7KA_e0+RxaBu|$1^oQ{<>ck_^7G%|;MmvL z?Cb2$&(Ht=|J>Z%`1ttL)YQbp#G<03xw*PWMn}v$N+%~Lm4B6$e}8|kv9w%VT&k+9 z$R{{KSBWn}c(%5-oJC;Xc!1`ls?R}CZhWENJV(=CXn$}=P5=M^7IachQvm+{UH&Hi z3!<$vjEL+~*x9z-thLL|o3n-h00f*#L_t(|UhUV}R@+Dr2H=s9<%G@Irh0GfyS%c! z|C>!!w?UquV1JUUT=2um@i~x>ze+|e{`ouek&k?2xm>(tx%?wyvADgxzW(~ah-V{_oT8H~hC!$-%M2xp z!cWU*=hG+OaNfu=g^1RIVs+K121e~5`bu^R?Rr1&Vt+|_S;jYm#L-A8g5`MyaSx4> z4#J+QoS@G|N$bOW!QlUoa+-yP(MU|OB~)1h(NIZFl?cjqr%-M%xIhyb!`mSfoQinm z6fzC;1ynMuLOu(Hh%2QMj5g3jon!(tIgCCSRch1#En>89x1;hWh$PyGs9+aEZ!|eh zVlTl?F@FRJfT^I+W(LZsk%Llfp3`S+g=g$BPO?c{<{b>UZ!`!}|A$;58jLrPSM)hr z=UA)n4wySl6uP`=R0U;>l@OA1P=bY62VD>G?pTOfeyGT4! zl03($h6pP9xi<68X(eS-ff6SOonJyyryWECgp4lP(|RHvF*KWlIOk^?(Hq-fCv*f2 zR)5#e&i#JBzkkFF_s&L~^VGzK3bCj4(D_Cr2`01r?VNbyQzJAr zQg1iX7@92FKO!{sq3nOF(Glt^gle~+&2zQ~=9fL~=zODMTcbqRYcoM~)v&OZ?`tHq zgEqCh=$jKrS%C>TPdt<)=NpY%+{u0)Z+}kmz;LuQX)2-JuHV%t+HR2gU$!OvuGtvk zvE|Z_cD7NMwxFBHt4iB#Xc4k94z)XH2Cd$JxG-G_kTI$xCJFZ*p@UEhU4OC* zdVq{)1j#ul;hM)V7XE&elH@KO{`;WGVU{P)W$-&I==`B()%ZYf zpI#C}P)zsqpzU(0j!-sx&#s^iU(Y8U`c0TxOEX(l}3SS_t0L%crO$EgpdDtTn1UEOUA6HiwE`L{7SO3N_ zVH5N{C`x*2^p#p1t~efESrnFifyT}1`_;we`_DV(s23lF*1*wT$$6yvySTepfJpg}IE#k)fmj=Wmk_^ehxum&2g@E`o) obLlfv;tzw)-BYy(`P)t-sM{rEOzP`uD$H>UYrKP2Hb#-}pd8DMIjEszrkB^Co ziF|x~prD|7dU|wpbi~BOzP`T2#l?AfdBw%WfPjF5gM)E#ae8`s&CSin$H#_-hJAf~ z!^6YK$jHmf%ZrPP%gf7ygM+fNvcto}jEszPb8~xpd!nME(0|a-adC0X%*@Qp%z%J^ z(9qD{-rmg2%)Y+9nVFe?e}BBZyt})*Z*OnAySuWovT$&4ZEbCwoSbxYbcctBe0+S$ z%F52p&dbZoZ*OmWe0;#bz@VU@)z#I>$;rXN!PnQ<+uPgL*49T?h2GxY;^N}}|Nqp~ z)Y#bA`TF_u^MCXB`1k+-0QdLz-QC^V+S=dW-~0Rf?d|Q=)z#C})4xnq{QdpW(b4qu z^trjY_xShD&d$ch#^vSZ=jZ48{QRY*rR3z~>FMdx($ewq^1w_~?(XjO_4e@a@XO1~ z{{8*HOH#zd#K_3V^78ZV@9(6fq`pd0y+}|*3+yM^}Ud1O$J7f5O7T z{{Q~7v$I83gw9J&4h{~mu&^8)9FvoixVX5jt*r_Q3NS)-MO1;jMolIrCOcV+qobpi zmX@2Fn@mhhkdTnidVjb$JrooaE-o&=zrT!(jC_22Nm+(FOnmzK`zJbXx3{-ML`1f> zwyLVCKYvetz)e-SJVQZKfyGQxY;0^uNJxW&gPon7XlQ7(GdOm3cE85fJ3BjFU0p#z zL0Vc`(n?D~Scv)X@nT|P5)u+{aBv_XAW~9Nb8~YxHa6zz?|_S`{`&dUgo)XtsE$lx zHCvDT`T3cqzBpBeqE279M^DBBg|69)^e`%?j59xwA9+|Y}&nk?~r z^6=wQ)E%|op-HXrrJ^=yUgXgEC5d=JLY?7v!G^;JqJ`zSmiD9Caly3huKW*U5gh;k z2h~YLK~z}7?bmr!Q&%1baD{5EAPBT>qkkT&qf_hBIWyBa?X;aU`{X^6mzU&bBafHo zgaopXmtY7YNk~G-0t5&`*q5-2?6PRxwQg05+P$^=HZ#n=?=$y>-~u|zocWXQ3FqYG z@ILwdZj$@EZ^453%x6CT$2=Srov?G~LM90b(GUMGL~Ozno1R?#?H?tr-SOizr+?G3 zeEB!N`Sq`^i=Pt~{lt?`ZCJl*hZe_Cn_>8r5jPsM(@dtcZ0FkVua1wMey^x|t5MPM z>z>-MZPg9}k#Lksl`;q6o&=+OTqYyr3WY*0&u-YbB=XNo9@@BR;cP1^A%5NJ@2p>? z<+2coT9abnQ$fSy2%Dp{>diDQ6u{7=)7b}xU49>n!(||uSc2|)=qB_?h9%A9Y*@a0`P!tUq_x|A zxGK#kmx*CBDyxA{3n3DA1X!^rNcjBOqwOL!!PP*I2mSp##mg%6jn;dXO@Ns zf%J4zDwUFCNI)I~*Kkjrynh{3>6ted*=9lnf#NvAX4A0pG<(o_bQq&xV?v&^0K*F4 zA4Za-R6ruV7H1O}b@>BgQ5d>ovG+N(T-X{SVr$fay0oCj8T6Ns%mVSSg4fQSt*JTt z>T3+eqe*4`aeTyHd<;}+2pP`i%z|Wah1hJ;0UR!HvI7iaG(`*2v43CIl-KTusV#s1 z1_pbh>2c7MW)E2Quvs#6CbS1aC@vO>^l5bg{FIN?ev~DJ1xd4BeXq7W6{fqp{EeCy z3qk^lXFKk9_4bK%EE$9(9M%j7zK9?kdIWg;!9*pf#^6eaUaA=??@pacclS_DmQ+CN zFfXXLT5TwfqIZD^lz&;G90v$y`%e*d^(p~H^Dfp5<)%(2vpci)BaBD$&4yub4hIq6 z6A~jzWxd~d!rplj7G$P{FITF#mAp~Jd^nW~u&v?S#KpObM8z0u@ z?wx{CQxCY^?gP2C?}s7H{UMvupeO=Iq-H)vel)aq?-Z1p>E3<$v&#qE`)e-#r!e0KzPp>dgs{4PT}9rVGKlBZF7SDb>)!TedyzND)OeByuwfa z!hHNxgGwcuLu;*<%D%Y#+1ts}PI7b0A1K&ttSoxU;vBJ0X(! z9?|5xrDYJhSx|FJ&!4c6K%gH14a1;uvfU`U55za7P;jbd!QRRuP=0=Xb64p>xI+p< zs`hbuu9N`xUPHcbzHUfZV{`H%0{`Re3{eEh!NwGoTa)8F_eiIv)-DT27_H2&69aLTe zM;iQfXaO^3Ll~wzefl>v!@yA+!d&)tRUuRaU zgJ9CC2uIF99d|(T@a$)cgf9Dt!soFx!GD8nFq+fx~MLC>lAG8Ll_Y6ACF^ipqw=Q)gRA#zbXNV^LAR1E#R+WtnW-$3F0F#)1WlW1e2| zOk!fU3P#Kd736BIOZ zr>CbBHg(uZKEX36$2%~N9~ZJVEr2H==|?l7A{hiUj}Snd2Y)%2CRelJ;o>*LF z+S}V1OR3b<)Wpr+Aw`-4EQqGI*$-5^4KH@*=jZwP`1AAg{r&wBM5WV3Iz~~OYJs+Y zn9XZVgHCX@R5NLVJXyOeAk;7#vL+jNGf>VyG^M1Zxk^!wPjZ_vE2vIkJt<=KBED|` z0016zQchCMldq$020lQMG+(oK>?pJsHg88()&@ac??GrFlIUq zL9(GwU%mSIbojz{%%B(t5kyiugdaL4V_=CN@)uL<4_hR z)*_=sIcAWN#z7Foahj43@UX(6-9yR3d!RT?%1c*i!4Y`ijopW3Wc&Af}~kg zwk@h1iRdDV9E$=3sfNxjQbNzcpwpzF8CwMAkBbU8>^2*^W|35Ek^R_ktjE6YjgEWX zzkkR&Eog`S{a+i8$4g34;=-cy|JoP@@p`@6Jv}|Wp~K-!Ry%DG*5&Uk44tg4d!7z@?E+&MgGxWrPLM!UQ zn3(8AOpF3+Chq%x9iR85QnIn>u7*EHl7C;Gw=lN(HI?VJbA{Fo5UOcgv$-0fXtx70 zL=c}w#y!vQ233&K#LnX@8MQY;fSe9c(`eIAp$Zo_rtd#CAJn#R z^*%Ab=m289)$Neu@Uq9D?gRu1C+nhc1v}Inq<>lD9gcc@lOogvA#}|2t3KAKt7-M==4pmiW4k7S>!fkL^qDH}@)tD_ysI!Y8h1-a7 zjtwS+kTOcsm`l?r6R@nEKr0%F!f9NX!9tuQimnK$B#xww0>mqU5odfo6UY-6bAeEC zJn9NApKMEb$Z|rkffZ+TiJLPi1t}+`%+`2{>5Q{5rIH~9;eWTZwDb)VdB$cx`9$sj O0000*24Kz^mA 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 AC;$Ke delta 3303 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 diff --git a/public/images/emoji/apple/flag_white.png b/public/images/emoji/apple/flag_white.png index d6c303201b0ec2d88d2b5ecdc2f709114ff040f7..ae0fdf53f1cad534be9ed784f7ad28e1ce8079e5 100644 GIT binary patch delta 743 zcmVQ=32+-}s*SOhM$%l-Or&gba8O13nSNN)i%I?|=IYd?7RHp}j_7$#Ee%3@lc1 zkluy-q7m5%4b^OST_0YvofB?p%;w&|1A&i^cBn*f3+bJQh_Iw^ z^%r^Nv1a=W0ZCfE4-i6DLP6@ox}DVWkGBRyhddE{ffA6Y#6~noEWkKLnYE{c45aOB zm<5CritDvZ)|BP7C<|s?u6YA2GKTP%Rmw&4Lgs%B-(MG&vzfZ zhxXqU6%}Lf_iuZ9dt9@DQBZ$)xW2KmY0o>a?A21!kF~qk@4oiyaI6_a&qN^F>E`C< zEtyPaM_E}}BZN4FAX{J$BDfuXzke&H)dm6q9f4~^0)JV|TedRgG5Dai3I9>}x`|Bt zZEx2up$SY$=FK9_tI_ejhBYcp5@iz+Vu_0CS^Yc}! zmKYY8ot+)G+TZ^mIXXHLHZt)qXJ=!d1%nkgFMnRVcpXmfz!8-jrQ{qOrg0uD9yxL( zhqV^q>+9>&Q5Je4ktoLt)>c+l)?jD0P!`ZRfx~k*+O%W4@VpPU9wp)zBFHaHR)|96 znIl92$jbe4ThMk~2u9h7cO~Xm6^H=!%2Uato=hY)ew1IX0zEmf}VrJ z8Gk%ejV5MhW)k?dNa2?wbLGmFAOs7{&CU5SrxwA5Ax;SMYQQSIfB|32yT?T#ikBq_ zK`01eIe3N$EB6WVxpEc~<#MzW2q=RCpO&Xo1;s9sGumlPpll#=AM#GiB_UH5L1YTg zkX3hE4oDv3LUGFDTv)!2&*K8g%b%#aRDauY-E(4$x49@nC?O1AN3;!^g9i=raVOdd z&YrnI9GGjd8kQ9oL34q)NL&mX$m6bFoR^n4kU8WrUb38kOM#qK<-)lYz|F1~+g*9g z(U*YJe84dVebu0ZWhLbyt?e?1kMRt08?2M?4s8ba8DxQQ!klvQ1D3!`jDeROr+;$* z-p?BW$Bh6yok1LqzY3t2(sEkQVfQQMWzCxB8#X0Y?DV$}-22Y2M{rI*>7M$W&maqA zLO2D7_Ik3Evf@5?+w%q(YuSAXo&xd;?`ziIx3R|572LpLc!%HbcmFewAWO|4Pu!@` zOW9Rt5jQ{d|EZ>xKu-}$ASI9zNPh{W1X54}DS_m#6##D&iuK!k)z~E9UphGD4~cdV z^Sr>=&|;MCqvUzUW){NvqeAIo>T6WiORX29n}EI2jSsosdx=@z>X(1Y5pFZ6gwk~vhxe}Z_{1xNk@UpVcAWz@6gilzze!F*ZDt$+>K$ikpt6p9ZUrWV> z0Ea`^zAVLhu%t6XT%r=heI#+yOjurG{JPFs&LH2CLLlEg`;6h1==E!;t>8RJ3Y>^b zT_g%!ofDS&gh29LMfqmR@_&soTS~ICe7F;cCg+w@)Uy4>l7#`}=b~o`w{liM09g#W z7Fe(g3kyON5<=K{tcfG27#Ibo;ALLFy>v^i0e>PjK%{^Wi82a( zSMKBE!)02~v6k#6JT3cH!vJW0S@WYf5F+YHqY9Z1A z2)-YG=Me5yzKQjF>woI%g79w?6^Igq0!SuPS|k$D;_-MP1xaZl)h&qyhy0o@FCn>9 zo7{7n}_U*}Q*RJI>m%y!C(KNxVG&D(m#Y0a| z&+{;EB$LSw#26_m5G406W-`<9*mU1QI=vq|@;Wl8ngpS`C4Z7gcqXAlMiJ#-7JitD ztdY-^6rLjx^&c#|hxQ$`$FP2a0>DO0pE`BQ)Sd!PpFSOhxj;O5@}%w{kk6kp^HaBm z`oBB;?uRjSy@X)if&g^kdoOG=gb86+{RCJ8@Bx-|uH+$57M3^*PA%=)L+}xv??b2& ztQ$uL%^@?AB7ZZUH6V~#yu>sg9Vq^QmG<@a_RgSds6e2rtE&pxv>U-UAjoQnQb$BP zh+uQ*&qFX1jFT7`o5WZYoSB%INFe3&+NJ>)h#f?xRqo^6XV0EZ!Hf{qSB*^tC6E$G z38Vy40x5wkD{EMqRf%S0&M^HNhsq!$>eKX}A=NMXq9H!3ZE`3mC@3f>DEtTU3wZp` S^oe2s0000CdgQ2R%U+n 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≀W$P5Nwhpm$5 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 S($w+*0000zhC1 zY(nN-Jn*qu=vgr2b5`-!xbfD%^xM1Qg+c3}OY*Qs_03-R)>H4XS@Ye`^W4kx(V_I! zsPojA{{H6ipMO>P)nxU+VDhI~@}F4kZ&2DfA>us2uEn@{UYDD7%N*+C-VOeFH7TJ^kM_P<^J{ovj?A^iN- z?QBi$Z9(y-J>5qn?rKQ=`L6cFM*84!@}E)bPb}_nNPqnM&+@K5{Q1B4%x3!DZ1%)p z;yxqpc}wkEH|$+9=T0a1)JyltWc0IH^Qu?;>3HvqHvIa<{q>jZSuO5#IPGUR?PNyn zVmbTaPWQ)R@RmC3PbuzmK>hWL{Q0&0@pkQBJNCm-^}I{jG$8oSOz(Y0?P5ROKqBT= zC+~$*>VK9t?OZ|o`{Mc5Yxl`j{rIEtmrU+@K>hfg@Q+FN%SrB6GUq@h{qcYDv_JH) zSoqOk`PN+f<#h0mKK=8M?uRq(Y&Y|!$DZ!G-mQ1Yi!{rbB4-&gdpT>kWf@taijw?pk|F5-4Av8dvR`8Kf{OVogd@uU>*Yc)I;x{4TS}6Sb z%zyT4NcZZ=@Ifv2>9~?UzFhzS08w;OPE!EdXBHj?4*>%T^XD#dsEunYA*+m+7k zMf$`2^-YGJJ-<3mnl=2&H}5-q`&~V%vhH8GVAT78y}|YG%HP7|d1jN|$h7O8%!nNR8!d&2Y+B{0wP_(-Vp0^tfR~6_4Ou6Fo6U@2!RB` z1d`Ap351UHDqx|*P^2SB2c1Dd1PRSiEEEfhm1minmVQhMoLZLWD`C3}(YA>*| zT|Nwt3<<#$ATy6tUrV1gitpCj-+xVD_*HrN%Hn8o2H}RCRAMGG;yIe{w1k!ROi7sK z>(^_p`W}EREru9Iz7P`pbzJ1H+IubGbe?K zZ&Ury$DiH?jOkN?ot>Qtl}dFJd(ac2-EDm2=h+984BnXSoUDKAev%)8C^dEyjuExn zBOxKuy_2+L>D-X|nAw}{n19KQk>p=31}DSB&cwvn*a(JOo(Gp(%>Zc6+?_UvIy$C4 zQJK;qk|oy+dTk7ji3wE-S<{)^>hR0+K}w%HWf@G&f9&$rBtI@p=BH9e23fnMFqr`P zESYoVVs&;#ZJ+F-iU!F)8ZLf~v@T1Pjnft1#C>gAuO1EmYErV%Bd5Yq|B(i{M1T6w6x;Na4qdWH+!DwT#lT%im zZyU}v%K*k07+4=bxmo8)p<>Q5>Bp33Kj~By6efPt=llC{&7M+`Lm&hPOM-*1Q32vc z_gWTn^bv$rpLGMrZhzgcF(EFq1*i=gL$x4CBxONCWo5zF+^hlebNAtFkS5xA}( zIVjlZW;Zj{*QS`W21U`)`(>8BQb&GdOam+1mR10ikDxL#nSaf;x5wMF$r6B^n8_oT zImBJ6Sd8XKk?xGsKt=OqveOFL%vRI`=wY6@^zK&M;Q*hpt_ap&0BAW?tD z6LqbBL{0P>jDKvU*;+<+=UE4no1m;%98M^MOr_^!R8$rW*acYf(~l;s>OPWx#4}UI zMkN)MrO@l}$Zl)5vZf}fgA05c8uN9(OkyorHPhWIKRx11jhVl^hK3r+-?Eo`#`>Bx zP&q)cs7C~oHb+P3QfgL~uOB1+vJZ>6Yld?uji27~uzw~)9PMspW9b*kr9Xo}_ISJy zCx!5AG68mN4{%bGlYNUUk0&k9Rv&aLf)B5 zfZW}s(2_sB4QZ`LP;blQ>S~an!e^2oc5JMWCVvu%Tt%WBA!Ncg1>OJOg$oE`%nG4I zwmm&9$40BGs{uN5Er^T{6y}Irr9;%!1(H2kDpgjFGN81<86iV8BHuQ>r{&zS$Iz#T zdH3&;?Y)IUnyc$sG+c9#Q$8tc<&G|K8mu??7P}Fd-p7 z{C^M<;+m7wC2Ve%NpX=A&?&WP%~svQA)*NYP~4Ba2gqp_cI6;uXlMv1kZ|SA%_r{O zd+^|xU$|ww|6tmwQ!^|!!?i>rf3Rl)x^nkKb2%fjV9i^5i_O;sX?E6geb-bZ5H5Rnp_I`26ADLuX5d!U}Q| z1p=TznuKn}-Hz``Ph$~h3WV1GS{94{3PD~7s;Cep4OHdkI){da3Vw3Vtr|#rLVuGb z^7`@IxmPUKDGkib4+|PTEPnk91l>Xq?MX>hfwQx~)6?^HD3VH&&R0~RL|(kw_Iegk zUK=~h;lF}ZU*DIBAeYnE&(|d#FK|x$>9qq4Pml^waTTWvT>#3wTF+WyINO=6Vz`c9 z-`G*hlR-%XVc@hnn8QF)ZrFefx_{)w>uBV!)0*Q!_$yl!iRX0*AP59~4s|g94u-kI z>rjZ4bpCn(K&7=;>sM>ddJh427pi-08yh=#rBbLQ%vliX3C@utAbEx+<^psPL0;{R z^>aLt>`_;e)A_8iv9A_E7wZNJ5(TdvkOPvrLo0%wOQFoGje9Y(7pAyT?|&;D^;g4J z+fiu&&jCV#j!4IM02LgsyN;mRJHwyp%z3A!zwOH}8;7sn$-Go}I^cSe6v{p_m8f9g zc?>{aFZzb}?l`;(JJ(x>ZAHBRwb!}?1YCT6{Qn?mc3lHNr5ynE^cu|h?5@09FC0M~ zyuynyF?G3u*70m4Wka(C&VK{_4KV?wneBJ_hCf%w%=b8Q=oNx8y#iul8j=zP5Gnge zcDDI=t03%oL&L?=T7W*;yLA3HB{~~F>3h+USz8(q)6joh5DJlCn0vN5*Y!69l=3pq zz4++BJ3WjlullI3J+qcqS{T#cA0~Khj+}8%K~jH1VJR=J>^L~%ttI_2g|~R0{^cO%eO_x|4u1S84@nIr&Vq3?sv2Tk{`$q?9q;)T35!+T zarldWTyY7A8G7{V&p-eC>j!`T+rb?exrGd6jP}>x{QJNE`S#m?{qvizcPJ_^{7nt^ cJ^uAKnS2}Fjh)=c01E&B07*qoM6N<$fuGM3V`k=7Tko5fm1Sq`{*aXXkCg3JTKsNmj9g;lJV%68Sf(gAuYV{xt0p&uRauBwTm6xk z{En5HW^3tARrFq6?pRyxSz7;?m+n_t@myN%K1Sk1PWfkF`e$E~VPyMhVU%NL`)6aC zXl#pFUA-|rx0aluadeMgVxl53nP_Z`K|z#cXzg5H{ey_0BQySxmGWF%>^w;CT3PN@ zSNUUI@;*f7Pk&X>JxpgoL;P)I;6Fu*T3!8YW7$hm`-Fz;Jx2ClT&XEL`C?qQE*lVWDbIYY!TKe2s*gH~AmmYe*6hO;d`@jpeLAu-QEPX3RP zr6x80l$iKtUhqdw@IOW{A0PW}VE8{n`fh3RLrAYIJAeFZW0z%UttvW(R$2RTXTUN- ztZ`?kDm}3)JHt9b{kM{&ado6}b@`%u=DW9rM?ux4Y~fH<`Cw!EW@-F% zdH#x#`)qLif`|QYVfH>l{C0fi~3_``ek76UtZZrRs3#q{dj%VM^O85b^K{z z!8k?wTVMHeb^mK&@M2{Da$@;cTlHdI>|9>;YkzR$R$Kdad(J>k|BaLARaX6ojqzGp z|7&LJSX}gJYVl@j=Uia(K}YjvWB-(y-B4KnZ({p!ZTM7J_f1jjU}pAGR;?#B(Lhl4 zUSXdgFvmYm=sH2zI72ldBJXl~@3E@YdRkvXKh=J8`Il_^pK|GlVDpb-^?!!zQdg-# zLVxU?fb!(y2P7o0kB`&jT-yKu0I_sZPE!C84;2a;{R0L8N&XB~90*+~^@ZCzoU`lx zZ~Q|3``$WH;wvQmY)~O=Pw$s_IYQgOge9BH76^y#Xpk*~kJ*rCv%ux8UTy6L^~;rWT*-iqgz#t=Dn z000GUNklp>c{9^6&gn-f7`C zs}@W}F+sHN&fNR6yiLUqt7~y&`+uGi?d0iuzu(ihRGdg&)~w5o^%**O`lsK{JY0Js z83z@%=*Euo)fx5q4?jNq_M3AsC~_Vei2d33_rF>XJBOqkl`(gwuh2)I-2dXJdl>Yt zs$;v)D~b5wgR?~U@ae_6j(phX?!R~EV}fgh&(=v9Gkjl0yY9T>9%Nah#(y_Z>^9u% zyIh|m86C!qV0R~nr>CW*r4JuP8D(VLJg-p5C6a1qh^|dZ8zMD>A??VR?QGqPod$!!3NX1j-61m8>G2QDHkg{|p<7g77aB6Q&P0iK%t30((t+oP6 zA(YrAy*A2AXa~b&a&-)!+1t?Iq&mfFEwHp|wUB4EU3u&GW>XrLQ9!gV57r4&q!!_Kdy8c=~U23~=rLoa!7gh7R5kb3B-`y@SnD=ZR6e7IY zGFG~KChRwt(Olafw&cj1zbUK4Eh8~X+pbjGdoS~pTB}(mn>A>0es5{`4HipFGbk+dI1cQ+t#dRWDz0C; zakoFTj(dYU@JmmRpj#%}vt!Vdk~Y;fX(}|g>cTc1bN@0qG^`Fpf79CJbBW1?%feRQ zmVvk}n>BdnaDT}MLqkKCZA&CPI_S3a_4VBZQJUy{t|YBHeq=4MZV$BYBzt%)O-`Jg z^sn!UrG2H_KK;6M$=MAluE$lVX_Q4hpH@V+r)yuKbp7PATpidhk?;$jwyRaNEh zjtFWASdI9dvo@2xgi0c)t2UI3rEYokn9NGo+6b67&)e%^LKKxkBD2>- zKJH}p7Jr(M8nu!PvC9Gs8TZ7oZ7cbkwgD^P^KKP+VC!>Q@tX^dT4`Mlexl zgjs+;txnflJe`MRg~vZkVthKqJ;_nwXavYh{^l>WY_ z_^OfqpOgLC&6ag!=spnY0000ObW%=J07w%4WH%rK{{D*Pvwxn(c;wsi%=fm8>o!0= ztN;K4%}GQ-RCr#k*6FUJI1mNkGG)66TUbJm7a;HdmQ%(z8G3%S+^HNQB|_r6bz)yR z@P`onyn`&vR7z_jl?bSxgZE)lB8dRHI@WQ+;Eg~cFw1d#yV-P{?WV7*-??}BJ9i3qLIajCug5w<*BLVbs5W`e`#~H2IQ2`MjM(mgk(Y+Ro zUis+XmK}XM*XRG*8Unr+o*Ap}DcaDLD*vJh(gkLHM1P+%Ha5w{sm3&rIvwi0-`??C zZ?jZB(2#4b%v^$g*5%FCG|>Gl*8k>Udikcf*}UbYC(r@6--3vaB`VvC9??a0?k0Cd z@|E{R>6)d9z>d4SFxld`%@jxk4MP|@Fk^7;QVm~@+lQiR_XN2xZo9icm??J96_q0} zC*<p|FvQtQjuxUR@c*iP>?i|%ef`#+RSC> z=4{DGcHZ4Za>(FoAY>FZdnZujm$Ihfri1|b6R<`9b!59vZEhVP|UZijOwZ>l^|z7nV|9vETd$I8CO$0CDb@{;1oAe4wyk>xM370vmZM`&0NDpaVkbjN>|`h^ z5P3Tp(w*4J)mpj3sUE(TJ3wF_@jFhNcedE6j|7PwRo6?+5Q&|msp?1djd{S7GopgDDK7T<&i;$OAT4A-iz=Md8 zN={RnmVms$$mZX-tf-CK)2XAMhseK}$ji>WxS{v*(Et45*x1wm{`U6ozR}2@S$m66 z0000NbW%=J09}Ep`~F1!4JgFqrN*Iks-5g2)00e7EL_t(|Uai;Ja_Tq` z2H*pDC4?kQGJo2jqL-~YL$EhRu;sw|t++<*1As@oEOhL&Oc`3q%ePm{@$X5Q+U zlPZrH(eDDxlTl*>|oFm7?2Z)dqI$L#bPTLnFB;pQ>^NBIs z(WA1AqA~&}$(@G*&ckDsfW!OJ8Ec)&NwxlYoRb52l7ECd?sMPfMr|H)bXZ(ft>Xq- z&%T@s2hOK;LT}cGF@8I`I3E|Bz?&MkI;k6iQ%p^H=jnf))b#?-EAGr*dDzJzKTha@ zgQvz2XL;^GUj?q`ve3lI6BwVP!;VhiVO%Sk?D>F0bViovjw2k%lg;`#BrJkz|GlV5 zRsA>x&VQzcv=b9j)InOXeKg#efTI%+hiO=s$2?+ypfTm%?CH2}&G!0n5Z!O*PLp)1 z*1>fk9CG2*inNo&y6)A57uNYcI?oeuXVk-qLdX+l&O03Rr8AaxU<_T}SAKF%12mSr zcEBNJS_h$9^E@m*a|#$lLn@DOSnYw63MUbc*nhBWZb;|R^?j7po>IM+*Un7ViTRqo z6USlu>p{$>J@Q0lS?=GVqO(DiA85mTn83B1^J|&cZzpJ-X_sS+#?NW$R8^kDF^iV% zzDHLBq}-WZ%)Lde42M1(bS}I(=kA5q z?y%Z4sS`(0j;SRa<>MKxwvJ*-x%Ltg32D1;QJJk+)=WZO2Dxe1N=LS1h* zK<)B)xvUflc}@-m$44-TT?-G17HYHG?Y=gjpNBl!6KrL_9N(tCQqwgwn zy}rFCWFL7Jq87D;14WUKu*56Td{NbgL!WOSuZ-=>kOFhcgKXbdBtG@VOl{P)fZjen z%A{;1;h=BFMlyG*wrJFbL$3gREb~bB5IWBTp46iQA~owTen>(htgsQa!Jrfzu#hPO znJ*1UkV!=P*jI6)0CRHud%5S`NPpcn+rv(r5>)9V4n24LvE;k;xdDk!fRIR91<=pY zfi06O^Le{IN5NUh(mOjk)=rg;a;lBD(`; zaGA43(*V_M@$vmKG!%Trp%&b^jnc-mm%Ax@BYy(`P)t-sM{rEAud?Cd-&kB@@bL2CPoAKoU0z~OP*jUXEdwg|!eSxQ`u5)#HcY1zSSzlmcXJ>0_ba#D7 zNlJKnf4RHAq^GQfhK7QKhKr4mCnzduYHn?Cc0E8uRaaYkdvtbqcVcB|OHEOgnVuCF z7o(@HKtMni7k?P7vbTbTiY6#2uCci>GBkXBb0HxiY;9&bJU%ryI6go^JwHGgByW*%D|UkVPlDhb&`;M z+S9Gm&8elMjQ{-I#lfWc^vc4<%hA!#!@QfOsDG-JlYpb6p^uDr_VLrLs*<&^mH+(a z@$AHzmV$3_a#>nkfPsK_d3(^vqWbpU{rS`8;lI_^&)wbJ>EgD!ySliyrt#>q+0?jJ zSXb`p&N)3r&dH~~yQALLsMX7ykCBX(mX(Z)g>G+Vo}Z-D&#$kptLNw1zQDiX*P@Gw zdw+s}Z}<1|{PefY%C##KXDR>y09$lYPE!CA3jYlgE(8GwC@8G?zc`DikkR67Q}^@m zVRS|upFJS{Lay~r?y&vaqj_M*fyw8)E{wwAVj+ury4_6imB3!B%dc0J+6Xp8D0Em!|8id$mMYs9}4c<2Ko?pRJs(1NNn*v+ZV3kBO(X zW(QBFCj5q1McEve+~aneJZ=w9t6{LBcHn(>0+%ln6>3~^y*n{3(W9liIE<`_s5dtF zT+i}l5rtMdbils!Y=#s%$w%Mv_kYa^f{upG^_)T+yNi>X8xeKvsbKmiDes8P=|}u1J8$<$;?arH~_P=qeM696s2(4v42t)baKSZ zytEkGLabZE?T7*nZ^AJnPObzvU|%sY@fGti9yV^3L?_j9Q_y{xjT25jaF}WFwz8$G zF**yPvZQR|H~r~x>2XD7BQI8(t&=3@=ZM2I(@xmRzM2>4gVTR)w5p*suE=fVX*m;4 zbY{kh)Uva`oQ28pUm(fi*nj&+i>t;*2V2c15a?{3C^`Q)s0TO&mJni1Snp;C=`=3 zYn3QlV`LXsRMpg|2YXF+80bj{Jot?(Fb$(w!C?HzO>M=aZMEvBy?-7#Jyr@D3^-q) z&eHvu9jn}2TU>Qb961IYwiO99bTZRo;>(t9#q{7;21hVrx#nxYsi}CNJL1A>S& z1_)v}^F)lz5`yJo#P8l7!Jr%UW_MEDty{Nx%|PL zPoGo-8XgQXlbk*gXff)jcY0|I{F>JfzV*g2NraBY;8vb=aXP$seAcYZWG_{z+28%~`ncOM= z?J$8;v1^5wPJfe1AdyI6VX`nXu~@?8^4M&xmCog9!DNj>CNv0iYQ@qeQwRE``BWL= zgwbR&8BJF8jen8u(sCFKD+fC0WChN~ZC;!$s6zq{K}G^a*|P0gjg+O+u_gk9OjgUG zso(Zy&41yL2{HmnW*`%2YLSam2=2isNy$VIL1S#iP3f!&F@%vK5l2P<4i%hwq)e6r z+EkK!GXKj-XWrEH8~{!vbV%@gU_CPMTREJ^@ z6(1X~wT02(Im<`{bYBJ)jYcFIl+=vl(O{0jMh!VIrL*oxhB%qQV>gV_AVEO)WuVZ= zz;RMlf`4cLrGlGh>W0UME_(1&^RuyJjyZ*86Ufl#1?nL{N1+O%IwQj~PQ(|ez1)OB zA3hiwuB)zl{3L>#uCJvL4e)#f6dEW8ilZrY5g;1z+uKhixx2b@A4#&uF-*u!UAhn7# zg=(b=b@+UhBB63Gw%5(Y?cI*%;rgy>Sbq|b?j&cI2%JixfT#e+qf8K1VtjA)Uq8_8 zDD8XHdGit~_2=utDSRr~i8^cFUxV?3?!c#|-Ob%Sj~bgUT{#2R&rgp_YH=J_G@1pR4Okm?|F2+ ztF!KA(}i!-q6+}SuY42d>nAiKbw92L(X6h%ef7tfG*tq>@{c}#LBpEf+t*!Q+C1D- zf4{D}x~VTdkFd6K@3j7ASp9Bud4H*+^l=?n)wiF=TPok5=Knft)^~K5jyUfA`+i;B zy`L(`e-7}Q=E5!BH&W{87-_lN^TXz^J__}l{t8(C$-u}!M~9>I!Nw){89;u4OE!Jd z{^L-`^Nssw_6Hgsk6Zo0rXwF8o>@H;<9FSmgBt?<{vXTdYW@Q!Mq;we(GIrP00000 LNkvXXu0mjf_1D|4 diff --git a/public/images/emoji/apple/flat_shoe.png b/public/images/emoji/apple/flat_shoe.png index f9123dae4fdb751528c64f49e75425a2638a451b..dd5c2c4c66b57f10385894ecee9c64918ff20cf0 100644 GIT binary patch delta 946 zcmV;j15Nyb5yuCRBYyy*P)t-sM{rCMGh<~^K5JA!HAGc=VoO<2OgckUK0ZJ$JyIDw zX%j3-CP{KhJu?w2NFhFBa9l|hFHBNHI}#*0bze#;N_rqcZyP&cXjVuRDnK-2oH1IG zHf5kIPJ$Fjhzl)S0UbmXN{t64PB1b=8z(}0VM=9MR0$k5M1Mg^lXO;cW^GhykPI+i z4m4snW1kN=Z4*Iy5j}JbG-oSTj|wSO6GVa5NdO1{0016zQchCNOiv2MTNZhbv zdFX)5$@-41rNfuwVC>J3_^s7j=>Px%wn;=mRCr$O&pQr;FbqXeibw=xKvP7B06Xv} z;j{m(K|9@yl7I4@&dt?x^9KL`00000Pg`3hD{C3I05=FzHl{NjP*U38mo-0n$Y=2IM7cY_)MY|oSG^k8a&ZBR1 zex5$f7gIDYA`+znMLT5pP}%AmF0jlNK@8h4_!KD=y}zT%C@fGp7nJLNKE_#+)pecD z%53RN^P+d;s=8>m=RvZb|E*!uaua8=sp}@&q;Fm%m7zqW0<=L@uQ=zGLRs`O{c|2R z>mRZKvVUaZMHO}1i@Z+j0bT8(uAQ(!Qf}t67=%a^#j{Nrs7v2)DMXOQ{;7coB7y0S zLF>N1bY0sX4s|6(B?2G;;Ky;HrE9n{%3AAHONX^-G(D<}!Cc+>bP5abfsufVpU_2K z8AJgA7Wc+0G+}j*fJ!N|Ls{3If#VtJI@q|@ntuWJv8GTGGR3t+6NJ*kJsNK_N=ggK zz~<@uL18lpTFVNVPGR~vnykW9Hy980K?r|?QG^-OlgNsy%3k1o#JMAtRfthHSULcU zpo_Zc8AgwDAbMJIG`XsRWeKdAPPi17{*a{cp`m7iDkl%$A3zlExmSIGz;gt36xu`W zA%9Ps<7lQ$v;Pu~OE~1}1?&}p7L0RR(O9z3bNVC<+qR{h!}H}JC zK0nd+`HtfC$#d0#EZ>F&RZFx*xXoAW;VbnQG4|?VjK$H{Z=fhHLjV8(07*qoM6N<$f>_X}T>t<8 delta 2166 zcmV-+2#NQ{2Z9lhBYy(`P)t-sM{rDjX;V={H)&TxBq}pBNL?B$KW9}#H7+(RGeZ|I zT`N6RabQedOFUjqH&RG9RW&t9J~SCBJ|ZeK7biS7N@*K5W-CK(8Y(|ANNzVxZXY*R zSWifCUP>7%Lv373ZCy=$Xirs0IWkIf7bHJ7P;V9}K^-$<7JnTqB|dFNJwh@}bu&m? z6eK!0SdAhyOfN!X8!=8LKxr#NY!oV5F-B|_E?zEBcqc(%8!$&pMMY;lK26(Tl!W==j{ zia1YnG)it9GJjASHDoSFaVD?%keZWSgvB|vB+JzFV6Y8)|2KVX#{E<+(Y zSr;!?87n{{I#(b!RvR>8CO%*zJXn2cRC;DmXH`RLT10bUO<+(y7bQ3wGg>@Vdpui@ zKx3K@4;LI991{>0P(wC4S&a-KLULkI7AsCQQ-(oho_|DXr7J~o7cpNNGh-k(PcBPt z8Y(_AO?)IuhZ;C)7BOHGELS2%f+IM(>Aw+%^E?68qaR(hi8#!zgEL0&yfE6uTB1eM<8bBRBa}z6B7cp8EFI*l# zcN#Zm8hH%Vuj zF*QOsIYLK8N?KD;6)R8>B1I7;QbT5)b7Nu{GJjtnL3NRMTq#I=3K=p&W0y5pl006N zDk?!fK1LTJKQmH@P(nH%IcrjEmoY3pBqu-&AVh_3Q)*pKXMYGZjoYZg=A)VJ25+SX>LAQf=)_GCOT#~LSh~uI!sJmPg{9pTVWtC zRex`8d~IcJB|&8*J62cHuCM?A0EKi?PE!DsfA0|wX_sZ#XLq6V*^vYaq{jRq5cQj?6 z{GCQzwEK{+rm^Atyi~{f@O1Rz(b=8YVSkN_b47ZY-h-+<#Q248_~zN})3)*Dh_u|_ zsN?3I476zf000E6NklcT`$e7{F~+DsJN*Y2u18>T#s5B+XvU9w*~u@3c+# zPIuD+!V?sQ2Z*33OVBcGk&PPMtEBE3laoE0bnknCcx;=~dXD`s{0>|m@4WZB-+%YL z`@Z*_oE$iC;J|?c2M!!KaPSD=n)yNO|00Unef|B-v2N2Bxy&(|t{>RE#bvr8|HH<1 zW4HXZR}&JaCkiQ7tM%pTVYB(|=vdcjhz=UnRp&G{dX2;^e{aXuuqmIIa&qrqDjNVr zDu${Gs`^Z6!J&au@+2SKnRL*)6@O^+Z8X*Z5r;@rRn?dz@?lL}e00hbQq11vmVE?X zp}lkbtvhx>5rdcqu&FMKxN-ZUU-_@Nvcpe=XN5TVW*$0X6Fq6vv#I0~5{^X5%Ofjl zG!nUFw6oJaK6q>5zpSpzGpQI1=9A1lsR1!g4@7DznTP|BfQxKUYlge}O@EzqS={aq z6Sf3CJWH2-C+B|pM zLX*?O!aO{}(o;ecg2NB}-hY3;G2g-$yKf7zU;bjF9&bQ6B-{fLP|-+a>bV>JT}?mz zIPaVD4Zm3UWlynfA3|ze_mz!ivg~7m5;D3ceN)SwLhOW3= z4@?MyXk7y(B}A|R2O>kj778^t`pivZx9|LV@7`CC-|pTS>y?;9r~y$S2trlhQ51Ct z>CJtn-D+Y{5i*0pVK5kEGW=FogTn;8LeydrX}WLq$<19&O-;SM{e8Do>`DrcOyqDl z3^HQCi*m(;cU_$PlYex;WI^%lLIag55D2I?csv%1RS3bOVm{xZuNhS+6r*^Gh{EQ9 zb!QEo14XEq%S?>{{is8iU(77G;PfSy85y z(Xl?TNJ^zLzo0;?&9TAEVNSpW@NHC703on}unJi$Yu;>1C4rk$Anj;9?G3vB#-6&m z+M*&lq-YX!sZ^?zfeDI>trL_%DbT?HD*?HL3T}?JKuW)QX^j_LNgGzLu5W9ruW$Pt zatRLL-?y!UEq~2e%ut6C>heLzKxvJ-3a)|TSS+@=WpF{nqJ^`bUgACZP&a?SsCAD+)$&<^D7 swRq*KQ=X4Oo{fBN=JQ^@kIKu)pO6ZzA((4BW&i*H07*qoM6N<$f_`3x#sB~S diff --git a/public/images/emoji/apple/fleur-de-lis.png b/public/images/emoji/apple/fleur-de-lis.png index 0ef7a0e1d53a8d60c17d8c596d4354602f98c27a..147b8892254e6001965ec54c9aeef2adaecb341b 100644 GIT binary patch delta 2264 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 BotXdt diff --git a/public/images/emoji/apple/floppy_disk.png b/public/images/emoji/apple/floppy_disk.png index 68cc7c2ec441b0b3bee7049245637c0495783dca..0cc3ae5ed1c29f4f01bacd0fc7678f5fdefba8de 100644 GIT binary patch delta 819 zcmV-31I+xn7s&>YBYyx+P)t-snUFHsd(W%Pk|NsB*@9#N=Nk;$x z010$bPE!wfr(M+8Y+P(@CT$!500N;&L_t(|UeuJ^YQr!P1%F-FA~~z8olD#Q|Iu2h z77?v%vmq}XNg#+a3`@w+;q#E8!^uo5X8ml;w@h5DU}5q-nrRq5__-PXM4**qCIfl^ z#6{wri;tCM5g13Rm{S&&Zxcg3ktGy-7S;FFR76yvj>r?^dLo)mTSb;vz6w$6A)Ggg zihxZ*BuwXik$>GQvZW|IPGPIa)|Iyq9TkOI#5-S0QFtoa6>*WR9&Hh|Gh(u)iqu7H zC}?L?ix?q-EYgegGtw7f6`?nymcyc+2z^m4vi%~GBHIy_aJW^wS42|e>scehAJJP~ zk!KY5DgNdAvFzegnM|BeJ8iGO?`i{1cU75%FsAn5@_5z=d* z6(vw`S|TCgS%ide`@ZOyX9uK41laj{S8}-ppcT<_xoi2F-zEBarwCGX)v{6a+lm>m zI1Iv2c)go z%>-Mczgr^(RRo|ux)PrbiZpOkwPT?4to4B-az~T$9yRyT8i=vAvyQlTL}<1kto%QC z&?Di=a7Pr|9zAyv;gVcS#8D3Jqsoy2vjO3YdViVU9Fae1Wh_3vQckTpB7mmkJ@WPV z)9Q2qB<AS}M!egS;xE2l-(!=?ZL002ovPDHLkV1i5;e(V4M delta 2996 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 delta 3188 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 aBmV=6C diff --git a/public/images/emoji/apple/flushed.png b/public/images/emoji/apple/flushed.png index 5ba74e575cb48990a88d9ea10f019900a4144cb3..8cca7576bdc8340a2328efe7e34cde57e4a49891 100644 GIT binary patch delta 2211 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 diff --git a/public/images/emoji/apple/flying_disc.png b/public/images/emoji/apple/flying_disc.png index 348b07390fc063e38237c57834c3414e2517a41d..a2e8a9cc32c60b40cd2a05e34193c5ab5cac1804 100644 GIT binary patch delta 1565 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 literal 2475 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 diff --git a/public/images/emoji/apple/foggy.png b/public/images/emoji/apple/foggy.png index adba8a25208f8f81cd20d022d1ff47ecfc2c4cfb..7ba4231d8c5a2c218e978f25084bdbe892400f54 100644 GIT binary patch delta 1334 zcmV-61xOphW>3>J8n;|hp1#n_r>37RAb>J0w573~#^ds*n%Uvw zc%QP$)YqrX=4>4ovxS1~^YeqY+mXNDb*s_k(9ZPt_vr8N`hWZT|Ns97fsQ)>000Mc zQchC<$|+L?nQ?J6h@k)g1ae74K~#8N%+J|wBOwq4P)kYXrP%4s>ypg+|35fYg-c+n zt%)K(%!LMvZXaDX&&$iVC*)w3vO7p#%GNSM)ul-X6<#%=L6aZ(!J4FRqy!-zg)!Yo_xMy4bZr!s z?Z>tY9@X@X)ZcqRY0~N*qLW5hk8Y-*Vf`Mb?P)D|Tzd^IbRC4zh_*y8RNv@dJ*<6D ztZRf_1nC?@(=09+2_02zxZX7qrC|&W%n7HxxM+gHBpvJ+QIEL1~(0fAfMrb z&WuiUcz?Ol$eNr+5QfJ(1h)yCA1N>M6k{$ML2$~BBu;TaLktMx{V`?>Ifj^nzvM`< z05-=XK$SEE5^+MdxCA5!3L(UB^xpG^5vhZ0iy-6oA&-8)Lx%u_D0>8UBk$m)mDNyr z`?naoTa6orf&koK^i!7RqK0B2$hpvw_WfV5Gk-dA4z`oKmX2h{yDNR34a-8p+mYC| zu)n;%zT)6{M*@;dec34*bZ=x$jOii2)Vk%py+L4d4!sAQ>Yg1sHxfVq%)#=!*WPxl zC$Vk6w{6cz?7b%(4H7eNetm1EfPvF;k&ySj0orytIj59z645Ba*IEF?TpM4AQ|dh5%`-$CL{sqKbpg(3E5Z)aYbVJRlf!hSG>|$8(GeM2Cqf zj(Hj#_q6vE2cXPG&*w0R)nbJ6eBK(Vj(_PW`n0H{#~2k@jG_S^n_=VZ6ep)(#u<_t zWcESepv;0Iqa)Jc1uH2hM9zDo(1niRNS%<%6hwJ{i8I_d`^;*?&@=P^G|Z(Nb@+7)t&V&K0V)Fm!~Hif{5O(+ME@4kQms<`_iBW2*YI zBxHj3M#jiwIvkroJQNM&q;-eLkXTWh$7;xI>ATlt>ItfBV~kUlK9%k-zadut0)+!o zjzzpBFstz4k*9x$!h%l9^nj4*!hcDE*l~yJ2hu-4?#LRJh4@puA*SQG%b5ieV>9t&d;o5G4ID{x6*-7>Jy| sm-L_i|LFfiUqAnadPx# delta 3435 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 xRJ*-xNPe0Yuan!hSFMP1GtZOH_eJ;IzEvaoN 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 KMNUMnLSTZ_BG1?W literal 4629 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 KMNUMnLSTXfY)rKP delta 1967 zcmV;g2T=Ir1+fp17=H)^00030r+>U{e(im`_bt=xc;4UlzJKq2=bZ1Hd#(^^Y(Wu? z5qUxg;S^ylod*-sAykXpn4CmAa9A!C`9ff>{7f+ztQg1Cj2yth2t1)#Go6r?LeNqV zjt7a>tR7deyBOx|x-)sDok z@d|xI2qCIQ$-n(CsOcqLIv7~;-8s=2P63`$9-to!Aw+1nI~8BY1R-P?O~k}F5}7$T zNgl>0bXglS zn^$0BbmOpm6bq}bvfp!7DQ%(Tp%mk1$;7!5bHgPW7tgyEhc(lAc?-(u4=TA$Ur36H zaSr>*wSP{LIL=bnn9*hqcLQcXFl?ILnN#0`#=>C2jpP}g(E#L6~(VJ<+ z1M6d~nChJZJQT|S2do&DrGvhMjy`Ok#uPoy(|LMn_(K(~~EuCA2ChHhlVb?KYG`*~u{Pk?35NM1sv0^-R%>dT( z+{f*5j9O*bQmL1qE8U)yP&LtNd_*l+Uo|SVfZS%|G{v+PBP>;Dm&(NTAyt7{xPMWP z!z|~Ll-@-ipv>-iK~>oCqbGXzmJDTRo5;fi+K?ON&@0pz(gJm(&jJ1pW4~w;A2J|M4u?G|>r)FC~iqV*+p>?m5 z?~^Hpj$xKPpm2$G46$N*dUkO-$*-gC)Xn5MEC~?Rd03&WU8Yv1t&a0Am4ADb>9+Aq zki>V!;Vo^aMD3(9g=7qEhA4W^_C}WM7H8w2vWcL5hSEB)%ciY{2bLIaKa|7)Y!YMK-(DpA63zoED zIz?uxUp9irZN9KAY+m&N^s2>;)^lzG;1t49B7kwN52CG~hDGg&(&3K}AST>3# zaIbF_+G&#`sH23jP~R%DGlb}b51@Z#E{m~pZ|<6s@c+=`vVGDUVr)g282`yshjbwx z_Q}$XBKucK#L;ftG=G6RGqkbG>Acb53B)hrrAQaj29xm92^G!IFC6!|!R$?$bp(Vo z5pSu~IM|);(a9;2JIy^cb*cpy{hl^2gx9?X7;l)X7;ht#Hr*Yx`jnj=7s*fZ>UR~E z<5e`{6k4eX>)ormk(v4ilx3R3Vt+J_l3x!!Sq#3>Jaqb8 zdS1z<3BLIE?YiE#vH{<3MJ`OB7 zKU|Ups9FE&0{T3)xp%x7$Mot>Z3;qGi~ZCGJwuDi#Nkdk0#Y@n&J zw7tfhrL2UAje2{0pS8?sYHd0}N|KkIgoA^GjFnYdVKzHL!hg-zthd9u#?nDXPK1Vu z%GTh4fPk#M(3h^o)86MsOHg%oc%P}W&D!UKiI9GNe@swSaddc|rL4iq(W`fIBIb&G<^(ZK+v0|B)OJ~p(lwC3cHdW9Sqgei6nQMDm-H7JpPrruj@bv)zkb1 zQi2)Lw>4eYVUX~0fnFpr7|6MSZwLrwpVE96L(D7nvJ=mh=_Cdal7#MpK&Z~OP7WH% zS`6q;5^9TEm3bBF+|ShJ`*sW{MIdIRG7?{3jDLPwG;uT{83qWVCE*!E9Vt;~dMBv+ zU}!`#ZXnQA8AF|sN*5A!x`zn#IrlXjD6}o`?Q$P)X+X}RLHT#Z5+5L!-(!+EtPJI{k1-pTvPe!t5S9 z(;{_&G6so#lcHcr;$d^!R0!D)i9Cfue1B=Paf=t|GcVgRPQC<%(7<&+5@GlA<|*XS z17_xVk&B8C9&x;76%1W_%aRaQI`HsA!8G%suSf;ms5;36iLWy-^(AZr-fy?^o{bTHPdIM5r0q7Pg52kIw)4yrE*q(q_BO0z$p zknpmwb~{N7OI;c(Ee4bwb32@HMpg)<+YmLu~}>^_nj4_xtkYt*uTDKH1bRX95VC`D-0l zqG|6zx0Qzj`7>f1svrmr^R7uUcZ%obD6ip%RzJY@M||INNleca&l|1z8n4+a848)3 zQ_TDs`mk}&a@*q=1flA|WmZ|%HJ7>)^ytr)A>-KT!FnX-Y@226%=S?T=pMt7kas3b zYT|j#Nux_4d{45h^lJ-IK#3Pey_OQaOch(je>UhZ4{_qku++sW00000NkvXXu0mjf DTX)=> delta 2604 zcmV+{3e)xO3$zrFBYy(`P)t-sM{rCxKS&lF9}yB8ueZM&At(xWdZ{5gJ!rWC;xsdw+(wzs9w_#knTwYdJS~NI7Xl-=D%hWkPMy


    0pld-$T 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 diff --git a/public/images/emoji/apple/fork_knife_plate.png b/public/images/emoji/apple/fork_knife_plate.png index 321522e7e61e529a4bb920af72c26ffc182645d8..f2117350d8ecf9514f51d4da7ecc9ed1bf882831 100644 GIT binary patch delta 2100 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 diff --git a/public/images/emoji/apple/fortune_cookie.png b/public/images/emoji/apple/fortune_cookie.png index 7bf40e695cbed039c7af8b4b57fdb716fd3b97f0..b77e2e4fd95be45c50d0147335e50434abf9b125 100644 GIT binary patch delta 1371 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 diff --git a/public/images/emoji/apple/fountain_pen.png b/public/images/emoji/apple/fountain_pen.png index d89656d44c22a7473b9cefcc703e1eb79c638e2c..662132784f1c4255657c107ecff914766f413520 100644 GIT binary patch delta 1583 zcmV+~2GIHF6~7FSBYy!GP)t-sM{rDed3ulayazVdvxG!^6XHb$ZLv z*uurfWoBoQk&#SIPHu8_v#q46vADm$zClDsK0!l2LPg-_>QPfwz`wqhmzLAm+#@C` zkB*LWb$YF>tu8S%+1lAED=n_2n##+{qL+!Vv9!6ozoxdvyMM8!DJ?IgvcEDmJ2g5% zC@Cp4Gcy?)8{p{gJwQV(E-x%GHaa>wkeH#{;paq1OdupEsuDb?Wc*!_3yD zuD8|P<5W^moTROIeuW+%A@242v8I?jLQDGp{}2)s_51!|W^YMMPPDwmY-L_}Z)I9s zUW18}iIAByJAX-upSVX&SRpPz%GThbx6G4?eWRC%v&PrDvZ#W3aBGp44*&oFD|Av$ zQvgi;s0J>Q4I2Lbk8@Cw`*uH(PtzvS@Abc<@*000E6 zNkl6b4|xs(?+5?YP8t+NSNO_g?88cYi1Q|9{7xkuW%WH_9H}zt8!O zW`;qvKPr~qKR@5+0HFSaq4%#Q%RBq-w9Wnr!<~2h35EuOuvcB8_B(#ITCe=2Jy6ko zyJ|H0iqFi*jZFRy8bZzqS8c}o9bmlBi`M>B6_D;Y^-9yZ;#aBn5I4OvTS7zk_xDb_ zN-Su{ZGT!;97e09E!-f0a&m}jcc7hEQ7mvK_RS461Q2mFmf_7Pw1U8Dx@&Ntz>z<4 z#BVE0-KG)*3ON4V#&JfZ3#r~&r?WWd^{_L!8(_zAL|G6$nq zOxEV3$WvZBf+Gr&D9UZ3ewfU4LuEYP<F;S0=VYB`@zy~S(!i0y5#Et3MfzkF#^Ks4a|uWS1{@h2kz_#h=_-5(hRw`O z;rtO0w4)l1Ea$qaAFw124-RaM*>WQKy2sr|olcb>q{a71E+Bo*$$BzR-N5M`pA0$a)E`wv(gX1<$5r6!^ zzc|}mTc=L2PpL9jIpL!Dn=&#c&U(|={I8CqqBZFxa6jXc*}Wr-s@FV0>Crx)I?O>@Qb zi^LgKbh@A6CKW&4u2&h)&*$?gKAo|{k}`1qDBytP&lmIM(in{d8!gvT3WnHeU??@8VAx4AH5j_i5)Bz&Gsi)^ankSl%&DDu-~@5_^RaOYPXx|lK9xEhn#`fU2E#FK=kc-8 zXhfxxAcouTl0mJwa6ob0D7`M7;$=}p4*MbK6;A8y%k?j)=fz@fz+xt?3#D`}U@?8^ z|LQ;gvskFGNy(w0aK7OjXMg>|Nz^L;n%^oh%(?M5TS89@XlReE0u}EoI=oH( zGsR1>QgshY=Lwv7q8?ZNJazFEoFdkIzC2~9^9jDWK`7B&t#Yw%TW4Kv hH{R+H$JYLj`WNaDWyN1*@!002ovPDHLkV1jT_7ncA4 literal 2792 zcmbtVX)qg#7EYH}ZEbb+qDr`m*c()1S8GJr^Zwoc@64R@eKY6GoHO6dnJ?MY7|ME`_c{OoV1?=Hn4hEm|MKdk z^ZH0$I}iZ41TZzU(1rRL))0x5?ys`<6pxR$MZ~1GmUa&h_UUx`{QNxPk^Kg34dMAX zCMG5Yon~!gJJr?ISW{_fWn%z0a&mu)#paZjmX}w&F*UQWvavg#gzCd%F zGjj{yfFS9+a;gus{E$drKmYCh1G9$~DJdyLBHlY7Y;dqIC@93m)wQchfYQFRwykD|L#Bd)tf(eCFcfqVhoB*u>P{-tKK_t}Yb%jXFtg zs%s=QbW(b5@&K#ex8bW^cXV`+S~>{tTi}LW@7A5Z(clp^3%yZODCvdk|%qp{c%+_50?I-)Cok z+~i8fmb|TRuBpUz_Kj<3K|x~Tk`m(Lk}~Ah?w!Mv^7maDItIO?Q%Z_TiK*H9$BY`% zr=4^1BZp41lsPe5$Ze`3}$9w4-fQKP=ytg zR=s=uYIb31c4ZS45`iPME2`?qD{5gAr55`|6(&(BPF^R9vNZ2=^w zT~tw9N$$-kZ*K1%iVF`=(K4P{T6b`9k4Z@Rb^QBdXTP={To-0;YzQ;Aa>%PBV{s)X z42B!R>-D=2d-MY&Dkvi})86`_tCLMBHf8es?wuX#)c4B5^wOHvR7}ooVR>5zXQ-ae zQzR-NG^U!^5R;PorV5X58EEOHrr?Niukg=f6PpM{*xcOgl6Ohb!GnW?S%JWk^OxvD znHxU@+|FQJK4W6Jz{Ow>(zy4Ic@$H9Cdw%>T%6tpi~ox;x3=xzW7l$edg}WyFXkTY zlrgPN{@uN=_3?4^@X*n?HA7<2h8iGD>pI-fpFHrYDcW?)8vWh5Q(v$!@3u3ucDhtu zo_5ssBXkx`{HMfs@%!1og7Gi@|5JvdBts7XxI%&HXj<5`zxx*CkntG6Cs1%O(WJvmB0stsDcg5>?GsH z-tOjS4iL1XtPqesnHT8|T6(qbY&$H5Difv_5c%cVK%k!y-0bZvxrzk*-T4H^K9od9 zx5FGx(cQzefotgc#jHhAc?q#TyUJr(QsF5yv3(6L&9y6B>B#eRBuONZv;L1gO(KVE zRTT)|v~OWmzzFU^H38AyRu4$SEF6s2c_JYS($1Rx8q83?3MWq z*E!0#GgdB-S7(ka=zcNpT*xiF8!?BkM%out@{Du3H;KkrF1b^Od>X3hr+egmk91OI=}oFdLLOgqb*HI;Fy@6Asz3Po0LatLro5+CU@XgT&HrPxN3pGqkUxj6 z!B^w`Z>{Wk{z{r5iZ8u1B&6o`KxTFBJ6u8-sf#UTH#G)8dEj{3GrqQr%2i=DUASni zz7*GLb{st%dIx0qOAn|PPZUYkakEmkqQsxODn z>a(3Y!W^=CaZ2uuS%fY3I7vuz>`MsAl1u5XH~R5mw^Va7Z}jN$sW04czo@C4$jLQd zyQmiG{kqJupyMQ`J>wcVqh>Ky%LOL~*03$+UbyOc5-iM4z)BZ@kq-sGT#EF*)wM^S zfJ6ITK}OhXNK8nguQp#zQGBi0*%F4keoX)!-2~bGyHSMHAZnfqi6ic%JD^dQrt6iK zBva*OduHGg#Y5BRLZjJr_Cs#5aO9`F^(_(0Ay2ub26_K)$GR6x`_p00Co(@_D7qG3 zP$A!aHI~lSfonVYcF1~Y{>FOw!asY0{iPVwka7I1vzZx2L!l-AwvqJ?+?h_fHg)+Z zCs2V{x-c#c%;_M?Hv6w`;Kcnxz)n3CYU38uUPD@;_aG8v>56d7i9!lOL~zRy-3wP>uX+w1+3Md-+8^e+z$qOm$mZ8~pi+lLkGy+l~BdXFDnx zj6U3O#6;C1gp31R|F)gZou)8;A95$OxA2B;+J@DWAVVRI4=&)U;b|2eW52P-G_LdB zt+}9qOX$h5K`;#7%SdqoFsf$5WS(Wl3|E>^u|Jr`#;>)!5_(z`^}$Ylf_)QOuAspRv|?M}gNz@A-%zFs zY=T6HlT4A{KZSl>xebvCJKH>JYSUQT_rx68`6%B`+T;$clP{*Rmv?tld(qP QKeuZDOxIY4pyd+tUwj3+JOBUy diff --git a/public/images/emoji/apple/four.png b/public/images/emoji/apple/four.png index ea9a08ed0378b1aaf56c13149bf897b5dc9d4b4b..6cb0156f5869f0c78a957b4e1e47bd05881b8c9e 100644 GIT binary patch delta 968 zcmV;(12_El6Ws@pBYyxkP)t-sQfGQrZ-!E7ep73Lagncem$qw)r+J*bW`v-jy3UZU z$g|1Yf1|_4*W_V+m*VE?S#pa1|NjroEFJ&=00eYWPE!HeMVc1na037U15!yuK~#8N zq>_tbt1t+Lj|$|j-TS}nK_nq&*3RvRl8lmX!1k}xyiAX@%zyReKzXeX^)i-WnBsTQ z4^70ZGisigLIf^8kOLxSO&w`|t)3|%l}Ac}S$=)Z#_=97rt(}7!TU;@Cr^N({7M0V zyiT{Q9-MF<_mr6Az^{um#2gHXRnnm%K71@aR0d?y-qPX;vgC~MSsg6``Msq{8v29w z;ii2uf*jIlKYwwxkb!u%#RJA5NS6mEaCl+`()1C-;faTLCW#0s)9?c8-B!bVpqwhe|x6wD}~0|a=cs89#n_+Bb< z_+1iv(52GBiD)xkR^kC#-+)jDOTc&Q=o+-vju72o==3kfH$>~GS-S{GJL2rw=p3PL`ryC-(kfIe zPy<1Oh(X=7s|f>*rR)Z>l%93dq$vYwi8-5sUJOzpsM@AA*Msm|^#C$a)J@kf3`B4t zdItjCG?@%^g(CktKxY!+0osCzGmc`fK!5wTNnB3`-DpFC!Tef51R$>ABk0WO zKrGMz^cf^oHim%=Bl+4{Ml4k?}{lZ5o6XTN3#XMi$k`Wgn?cr<`bn~718IzT$pL9~ z(|P$rj{#zU!4c2aj4m5iYvG23%If+MJ}vfA9)J$ys}4YJ zQ}UmHJT2l~pBj+7`7V!R-~?&{-Q%0Z204pXYCw9I1U>2psFo^k=}goR=)fP&YLPdQ zkWue;?R%W4l_GC5lC!(o2a+AP^s05GF+p{v&>JeV=0e6GMND#V7ar~;L6IT?UtEo? qa#BH&T2h0W delta 2542 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 LNkvXXu0mjflw^5v literal 3703 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 VV>%wkJWv1t002ovPDHLkV1oWq$_oGh diff --git a/public/images/emoji/apple/fr.png b/public/images/emoji/apple/fr.png index 05d41b5fe703e4f94fdb577d42125f00a4051a63..5b3de7bf10d517f690d830b7f35f7ffad1ddbc0d 100644 GIT binary patch delta 979 zcmV;^11$W%5a%*@QMb#ibY8ZJ_G zb|D;pC?pJ4o7Xol;X*mmLp<+LN7>ogH)oaIMLi5sl=SrU{D1xZ=tn->JT%TSD(L9w z2275)J2eAHiI6KM(laa1Yi0vCX_=Omy1TmsLVQnyw#i#ntu813|NrkxLK9n_`T6-8 zV4|z5tKY)F`NzezJT^>-LRnoHSS1_{DKrvfhnx zm7377-D~zs0Dk}iut`KgRCr$P*4c8}Fcb#h25d}Q>=1CEEb+Rq?@RWjegB8*Ig-#} ztRXISrp<+aF5rf5{v&%NefgXzQlyBX>l%-)>&9OZx^{hi-DzUdK0}vn>G8hbo zKOch;Fk{zUO)$P6`@aaPMp3P1nI^0sw1Y)7P19=PEMz=G02)C&Z#)*z$_3~vL7OD1 zKx#6T%I%RM1C1U>qZlD3sn9-oiZGQ!qFY3yLQnveIE2z_oQ4*&S&}?Gy~x}Gl5&O! zK_%~9Xnz3|Sg0ZA2#5>}Lcwt(_XNZxh=7DeuDnn8hIb_)FuSwdyi;i%U&atXlLV_e+C4U+6X8vFfw(DObE()kHA4h zhK;72Yo~TdN7?)-ywUq7t@_mHd}Ln6k*$md4nYvcAgJ6%vKrB7Oado$8}SHoT@@1N z5q~grWb;xKcF~Gs9~6<(XFpJMi6962;T_WV=kxi!%zWaj5G^)A14)EoX}8;LmzeK| zESLAdDv*#8lmvuEh{o&dcH3w)+WniZZPy{T-R<_7wLF5#n>|qU*s#%55Zq|DEz8t2 zao0ao&@b(q{_^GsDwj84F^#YJBH{!Z7EHVF(*G$a==HjQ@OSkJEzF*MfW=ABz!qo3 zsN2;mNErj))t=P>gXTCZ`lSe!$Qf`xXNnXl@*B-5$KMLtYsvrs002ovPDHLkV1f#{ B$jtx% delta 2099 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 diff --git a/public/images/emoji/apple/frame_photo.png b/public/images/emoji/apple/frame_photo.png index cff35693a2aa81b98ddf2ae66b18966bb20fd1b0..eb826c57f3c6547b9d0ebc341683f388bca4d87f 100644 GIT binary patch delta 2361 zcmV-93C8y39>WrlBYy!rFi2t-L|GC~Y#esAGSuAW#ea??@y#^Ph{+- z;IJ*k&e;0nL)fJ&vb(+c-9OIO-_4jN_R%@($1%drkjjuJxPT$Ri6YUTC$!z@!{O<< z#LvsYc-yQh>(xHfu{e_0=;_A?z}mWzvZ~?8G?H2t=)W$3&ED0@S^w!s1En_xo)Of&>~ToG4hVs$F=9o7j$rAabFjtWfgwG z&_yr<`0Pe7LO#NR9yC!zf9}Ww9Nnj z01b3fPE&JZQ(tIkXmV(16C519IeEJP00)&xL_t(|UVogEg_0{b5Jl~+O)5#{KQzot zMrK%MdKCPBPG89$xsuwvmmJNE+p=_~yS3Z+>7?2G{#{N_>Bc7yPv4>0Jo&kC@?!rD z?>Iif_TDEtX*BJ~2(FTswb_fyk-y9%*5n&YlNTSerdsE&Bg~m6M(jdem zb&ROd_Feu<|HSKS;B`ne_YSAlPREK8q#u4IegSyCk61x#ukyJ;BHM@-Bno*(N$zAmsL)f$~)le|PE1G-2w_d3cUqcCba%HuwxS!)@O`k?C$W=BbFi(<pU*+uI(7#{7y$xPTDZ5ZR$5N$vEJcjLjn+3Nu#eBZZR zt1QZcrDP<>O&+%>`0*#G&pbM{JiA{OMa%5>Z`Ltij|w1?==ug1dhJ#f7pcf7k{RLn z@2he>YMGOPuHWingXOxF^k}FSH-AJJ;`s63&qaBT9t8?S>$26-0r#M?N}A9gfwdR$ zW_zJJL9-`$P>YD!T4(i(EvmrvHLcV@>2sJb<}KGT42abIsR&>=Uk*fL<4MS z$WH`_HpJ~_L$%{OJBU0XinvJ0P@2$S2k!cb-MCTWVDS5=KY#mlHeegwbyQX5r9m`V zphs^hi7b-T`z5#9*sBunyDSzqE!JEB#sU9>_Pz1R!J9mrt9 z<}L0^2>8Wb{r~r#%UEN_Thc2x@#_xt?~u-~mdRB@im zibX%_q{z&v{qb&$kGQt32S`1r$wb^9MLI>%LI`M$MZcaX(0}raR41-Pw z96nUa#3C$5kpPjDcfR?Mz73FJKyN?C zB_Xf3pr}$x34e@Lp(v%zmMEge+HDUkpgD7xwLEy;G_Zp;m!SPpB&FPLHWEdiHJDBq_gf+t zPwhmMN>Oe%C5d?X8ythWV-jVmX$?f>rrgXXE!SWpTz_iJXt5|c70D7?+tBe_F52N@ z6O(B1T2z)GiVSXaZp1+aG1YaWv3MmC<)0fcy}un3qY+%pyV1LELNCX+6^LH4+=wbE zNu<~R5xt(Pgha_vv;ooQ=P$@ts&;zHJ;D#>d6}eTrdX7u@&yuoor#ED+EvdXF|T`&pXjGe)2J4=CzNR`&dL^@YU zp0D%Q#LZ0c#buqVHLTD|#m~7mtrhF9|AH@EaX>j`&aLTG;YpZd!5c3a|IFMxc+Br( zO(GqCB7TPw$2_A74+LIc5CbPKb#Zm|T_!|PWHJRK0Q{L{FfD||{-Td0fK?E1?AKR6 fU;pqwaQ)NYb8Af-q0a?-00000NkvXXu0mjfI#i20 literal 3942 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 literal 3942 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 literal 3942 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 lPLteBtE9cG{ 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 JPDHLkV1mhygmM4? diff --git a/public/images/emoji/apple/french_polynesia.png b/public/images/emoji/apple/french_polynesia.png index 67fe54239a923f779c5b8c5ccf07dab989d60bdf..f92f1e9ce6f4523d94d7890646ced9f85c640a6f 100644 GIT binary patch delta 1398 zcmV-+1&R9O6Nn3tBYyz=P)t-sM{rDL79egIB4ZRCvT$~bDKn9gk&$nBjyXba5F2V2 zAgy6)V-y{xrlz-TbhK`Ev}|;g z?d|S}9V(a;BY+Yg$x~m@I7zNvX!rN`s3|z;=;-tE@~syrEIr@GtP+uK8HwEpMAqJf#I5+tocPP@$L)6&xGuCnsX(BhMs!o$Skkz(ej zg{P;cY!4c`x_`R6ySpq`ydnSq02XvoPE!Cu^k^!gtq2aR+wviy^LD38&7qCJF_#f* z000CfNklsOM%b*ri;s z7T?-cHvYBuH)fYzb`e6M!w(4w-!MXlR~HwTm)Ga#m4A6oPOdL6u0mflNKh#en)Z8jNSPl7>){(p8Hvi050R8ir9MLWEbSK?=BY4&8$40OgAyB{ zVu7}cM1Q=LA`vCR3?E@s5K1OH0SGp54Ush&k-Qa+Lf{ENkeba^2yenlBsvtAB1b(Y z2!R3OrI}a212 zXn*8EnavP%vg-95rGZpYXkZwoE;)F`;%5|W^m7#=iBaSLLLbA>CF$K%--d=5XtWLD zg|N42?ENj~NKt|ea~e3Ktq|fBs+vRf&C~%I`kOh7eX&t}aYO@ynmFb1drW^bjF`yJ z=&Oy4Awh$Fx8HZr$Pho(XuQ&>8Z!;`rGMM)VFAJ!eX7xTxe-BzY3jWmq*-5`jUF=J zJR@;n4hgEf_U;{JW?8vlqeuQgZfryjGHuxv{k&q?C8=WD_7|TcUlJcIYbKRvcU#Nhe)>BZ4Y3Qd2S`l{3Ir^j3W{E$G2 zBYX6aYk+`IrfKAjwL6xiruKd<8ifFjS(X|>K^g-xK=4uEy0H9_ok%WSA}YN;DZCIX z!w82P$eNM8X3}aAwTCZfi=|J3UVmaEkt3g-{a()w8~iQ{3?JFjX#J$^Fa{11aJJl! zI23e{b%j!Mrof=hmk4B?6!k8TwOTe?$QSbYVu8|3)q;(Jw-H=xyo=48(1^$aDE?lg zSj^+CwfCdIy+-B+5&46ILqeFfEFj(uu!fVE3uN4afUrKo>Hfa3fZ>vbntqDK18xX=f`Iy)DCYRq zP5Acs_<+KX0tQNdBcW5&q?}TTJs|%#F#gi)vdb?20nCBVt>&?+{{R3007*qoM6N<$ Ef)9(b82|tP delta 2522 zcmV<02_^Q33*!@zBYy(`P)t-sM{rD%l9GKZF=-bYY#AA+r>CiNc%+=0eI+`Qii%qs zAf|G7U>_u{a(JzDdR`eFZYC_QadxbAdUQ8XrD$$j93p2XD`g=iTp1mpWNcg!$c4r|dtZ{gr zVQ7|IVv?1Wla-a%*Vo_R;Ns%qzC=yKMorq=+P_6j*xA|l_xAMk_5c6>oF^>i=I6FN zM4Bcm?C$QXGJiU-H$VRV{FMdHFEyw!IQjVb!A4H(?Ci5RKdv-9cpV|?>+9p>i4RDEIaAoGCA#Dlp#O-hZ}jbCxD6`2GF6IzqrgON}EZ zvOq|;K}oDXMzS(Gpd=_^7aM6CADc2cn;|6p|Np*8QNU4HqF!dYT4Aa?Lz6T+;jpu; zE;OJxKVpEp-O~TRcD2=(Z{4Vdr$|nlOjO^(ztOzApMZ~}wb(#msrc~V^RZG(Yp?3CU%_{2)|sC5 z_V$b$AH~bcq;PY{WozB4qokCc%$%3d+3T2!sk(S{tAmf(oT2I1+R$`*iaSELywZ(O zReyCO+y^KmLOfdie077(9PE!D_p{)y{EC&Y*AtI5`7V-J&P6Y8V81ddg zX@DzYwnI6X^931EhK~vL8>Ayf(b~_V5IkuAS8q; zNJpxGOIMJNAkBgu+pJ}KJNKp#5oTg$fAaofn9MWh`;vRkxpU^sW;V0=|FU4Al7hl~ zK@=1elorTfD9vBCamA)@7A^h!JR}OT_S(_m!G4;3$7AnkNwr!KZxCBOIWMo8yE`w-p>gq(YvbHe5 zq!f-KG6W$AAV&lO$zUqvb{dYGl9H9hZ?Qf~CkFC6TF|p+N+LqV@xw*Mme~-!&pNM|T3%|VkJj=#_$+XDHag2|T zKa0f0C_-2VZXoe~Q!z+pW&lmJ*dInAeQa*-0j$4H?vInu_eY-{xqnmAA5fZ+4B@9n zSEWCR>l-*mu?xo)H^pTXRX2CtEXIK)gbYQH{=3jeM^7Blhx7VdCM6~&CFwYL*98U! zlF1aZU3k}{$NUy<0k;_~N(u=6Y3Z+H=-_T_Y;SLW>{!d8gW%k+<`l5$?0@qg|U?Y>Z;CyW|^VD`_=i6M>y%2h|w-~XEo<$ zv8)j1L4MUp^*~YWo!e}vC|_3SAcvb@^>b})M@d@=yOW#WB!BDCPI3ykRf8QRC2enu zs_u@rzmgTYQP9k-YU|kjPsgAAk*^C`Lo!#?^mkqqdqY%VYg%tqUQZrb=C8lKu<&lL z-dh&y_23^5S>Dn;BGW)-uUM_EwSNug^{`mOt?d*6Bx)lFl#7+FBFgo9!>xrq!>qiA z_r`JXsG)7-xPP%b^hiNNk`AKS4UHGx>j8?DH$;ZUhQmRJoUr%xhbEB-&8QMOhE&fQ z#q7}a>#T=)g{*c!>}oFe#r=}bzQRvV4vq;P%PJ4(FDdG-lz@JC_vuFw9`4kgp-qMxc*OkORY^ zj2kszTuak~84wf{L?95+0qKZr5fB&{wAjh!KlegZTM_nRcXziTQjqcSI_QvfEkHa; ze-Y`77SxZ@zYG&r})P5fWg{3MbK%Jk`ix&zwCnVhtevwwQ%G#($u zWLlF<(0{pa?t+XFI-NiWl2D)^DYg;3Xs$WNo45++8bLg=F@lJ<5p>Zqm}WnkVbTg9 z5u%GMTHu&Ck!Un3{uC1GG|>CAUm)oUw=4#O0o!9jXsAy^L%ko8`g+)gY(n4PMy5bU z!u<&9K#7FdSf2|&WoBoGgoKSD~q;sw~s1&pde*l{H#gYu2d9 ktIEy33C?CVvym?U0nz=ME%gw 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 Sz4`CE0Fc@!tr89USN{W&F!c!l diff --git a/public/images/emoji/apple/frog.png b/public/images/emoji/apple/frog.png index b3bfd97b3d70d6f7d2d6f1b16298953fd9c9e43b..2f055cf4dd7852d3eab331c1d9897893d61bf77d 100644 GIT binary patch delta 2833 zcmV+s3-0uf9hVl6BYy%PP)t-sM{rDZop6Gydd=RoxyQHL=*r~pobT8F?Ck2=NjIf2(=ceK8o07S0veS%vtZ`C(OJRjy zQgc;yly$b(mUN+Oc$9X?kKBD1QyO7ag`WD%!tt*qK+>X+mJ9P$?!MN{TyStxG>XIY4MbT&zfIv{-1N zUv$A*LwYt=pG0=aS6`o0Z@yDxv`$&3Mpc(XX}M5dqDxqvOiz$PhvHs<%4ZT08ERc2 zzoZd3SuH9{D|*9XQIAeEGAuh{H%CiRW4labtx=NfW`9OfTMNg6mwARap< zbE#~6)>dVgVqB9|I&d&!w@SyeA4q~jZlF%xz72lSUV^oHa=BfF(`s+ZPinzTU$RJy z+i!y0S|}BWq)K^iiw7n?QVp#Se?yYmcwR_zgp1G&z`DIV8cm_xMG^eT$96F?d|Peyoh@M z001v^QchC<`s-I4G5H7*BXKlv%BatIM?9j-l;QH-vfRM#YOTbD?7mcw)tHx#P4c1i z^5QGzSvCLw2zW_EK~#8N?9^3P9N8KMV7fyVgnx#M5N?P}vQ|`P=J%AlOS`+f3+}|n zj{U&%?J8g$8Zy`CA}QA0o>2%Y4o(;?5w{de96EBEi-UBB~Y!~2d^ z`M`8486<2>Xd~(Qt3F^?So?B3{QlL!@cQNvNz%zkITQ*)LZOCeNWGqQh$1%Nd6l$3gp0w%f4&6q zd?}jC(er1?mqSp#7^J=&OvmJsV|=s!F;Gp=aP?> z=ME8qK7Zh=J!o;ldV0rBc*ZC>#ao@f`FTL5E>{>k?|4h9dC_AApZ( zAjZRQ1gTcLXZ*mo1k9flKI2`T|WkP4NMG8_)!1_t2K;xuaQ0R-79gp;`) zdS?!LaRoteD%_4+0L73poqtY2>Rm!7`3q<-Oz%LW#kpbAaP>SKa-gjcK&VmAVZMGn z^3QrzNf{fY8QDZI8xk#*BBm$Ej56bN886U} zJQ6U=k~xm+uibZ?buTAFEK$@L62d@8W-RHpp3f+)GNNr0LZo!|>GbsM{9nKQ`;Xs$|7l_A!9Tz40{KU$`0@1PN5p+9 zl_Cv6Ab*?_n*PT{(#;8@6NJzJ;lJ(I-A>wI9LI4IELO7>hygh=(L+y4Tj&GQcj<~# zK;EyzD{!~55DsQC4`|6^dxQJ^p91Q9iP_<@FQftK^P&G5lJ*`1?R>uo2dW%~aep7z zh0$_JP#7-mAR%Z}V~Eb5G#p|*;s`M}u}@AMM}ID^N`%7)f|hnXP#1S#8jYU~Y-Rp`fd@Q@B?ufoB=z5#=PwA<~Ai;K%mc-=-le287X%?;D^ zH887HlwdMcJlsfjA`g6dex5o&#^bAPL7xYj<-s} zfq!Xg^IIIvXf*ortgF!o(m521Gx&GeHaY!5h9`c8MAVW~vFey6>rN)q>1_7(vDs`o zolH8qrF%}5&heUwFxWcb6mLNh1SyGS&GAjd80&0eOs81gF*KZFK2;KtbMSbHR6Gp= zSSy=HlB#J{!*Cqm_e`?})AQ<%;}}L&OMjUJhaLq%(07kS2wSPr?+1kOvj-`ZRanrf z(CT#{Mv7o2D0~l6+-D9FDlUSBZ;JuNpk!bwSs+pbOiYDz#IAddN^qXFcf|khx>z7@ z;}nk&#Cc5ZTsz%vmmTkCUY4zNc@CmEcr@M9jC9hj$0$j7{qCrA%+fqmf04J2>3=+y z&%SxbCP>G+-oZn!y-~}u@I-pPAZFf4DCBkBqG&~{*1~g}qO|Z(z~rPXnD-O2rEMZ2Q7 jw{1rhG0#8M|9%6pJRG{^9i&VE015yANkvXXu0mjfQ2JS0 literal 3727 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 diff --git a/public/images/emoji/apple/frowning2.png b/public/images/emoji/apple/frowning2.png index 6b9d2536bb55147015dcf06cbc2ef3747ba28a5d..f7ab1a32d633156671839a1ddf8416d1aa37e385 100644 GIT binary patch delta 1793 zcmV+c2mbiS9FPu>BYyzHP)t-sM{rEWXb1C*1IB?U%5W3LZxhRVAM&CT$bBcfhBnW8 z9OjN9*@7YRiVnqT3ht2^*>@25s1*OcF72BS<&q5FhzZ$#2Gw)|%4!4QdID!K0{`c6 z|N5o>lkCQvdw9{@z6Y_G|yO9{sKs|9|ya|G5VL$qE0*I{*F7 z{_R5l&N%*Tu>(o4hNd^DoGh8G9|G_x_$t>NyHUHQRq-ziVx+u7cAOFWQlv@hW zqbL8-FaQ4I;NB(90000HbW%=J0Pp@8rjSkkI0|l;f$7l6*lzn92mk;D>q$gGRCr$0 z(#LX~KoEdo6@RFJU7+y2CkNtYW#{*QD)$Uv%nGemE?@j}BYf38#mzrzb@P9<3X^D^ zrC7F(l5q8xO0rIixGKxCEwL&t(kux-%p_S6mrdKY&tq-dl!zrC8z#-G#vymx+FHh# zt+#jHs^T=ddc`D-xnm4Sz4@y}ig60jH0_>g z|K;3qmo#nD@Z#N}A{?iA2E7^UvCWibKTyiomz^xYwG6@6^#-viPYt&<#q~sb;mlW= zK!+0TI;Wg429K8|?|{~Xpfzc8gkW0s(nW_1X`;`=dt-9vq-7@xyd$L~Q;Q0|L)=Wk z;)y3Y=YI{zJ|f9-C=9_P=XtVl&;>50Bx7=l$VCHV5+syd6yf3l?En}sw3vK5e2M`B zP)o;@B7dSs?g> za?w#TPe=3+^w-eQ-=vOGuCA*@kk0-gQFYx;DTC213QsSG!^^Rr_x*G@eKDvQYK$^Y zDuwtI&Nu5iwKFJDl(xsy{o!!`Z98**6=Qe1jUqu5fY%QAPm#55Y!h>{(F!FaAsP$@ z1b;N}{%^IXs=H~lj-t%X?y)r&Je22>>y zi4nZ8kBVU^q9$Etpu@blgP}-3l{mexU+2lZ_4}!-6r@E%y?gi>gfWsu7IP=B<5igsD3fdd^-hEO3m9iVwhyDLLN)pC*< zQkE@2ZJ`^Lcyc3#im}X4XqsfLR7cQlXQ0h(9h^QoQP=e}O(dngZq%eDlJc`mSs#Xb zi9&c`t!mNXPx*S@_CZ5d0)^RV**yps%!Wf00z*y>r~5boIvD7cpii#kB>ZaYIDZL; zydmS%-N(l%Sl@gD`L{Devy@F)ncnYdnJpch(V^*M3Voh}^UZsPC_jQ;7WJlWuml=8`h_@}2t7ItNlPjddjNn3m z=4Btki(Zn@(&VNifnBC}EYnCS1Am<_p}qW@@a7<;Ajyd-AkEn0nh$M1)<%(&lFVo* z0JJgCZUsosRzX4l(Wj*z+ah}C1$a(fJzg4D@omUCsniCw6KnA&o7R z9Bul3Ah75K6w8Rtu4w+y?ma-kNe@@)N>YkGf8_0WPdWFdFCLF!J4q!C1b>GoyScwe zhw!RrW2sUJB+=sMnlz2GNg{Ea-XRww8YQY?2ZeaDR}gkdS6itARB0#g<5-#y7N^bd z$VZtdKs*>W!ldg)2DCYV6N|SScP1QDPYjZ+X7iK z;pzbA+w6`gWhr2kfO-v5m_eQ6<_BNbeUxH~ENC`oX1I?3vs)WGZ^f<1a=Ad^HY@MP zw>9<~qF@1Yxk4d^Z)yDewuXNs3mSzDQjR{D-^|PA-~qD%;=OKOeiPX*ZbbRM=lQ<5 j5%vGyjobhC_x=6>AJyk;n(5S=00000NkvXXu0mjf0grT0 literal 3655 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 literal 3655 zcmV-N4!H4&P)}xNj`GaxJ-S zD!Xneymd0%gfiWdHQSm-zHceOa4FM+HqwVWw|6(cZzLg%4D z+nGh+nL)a3D$js5$bUBFj5XhmIP8}=)rvaopggy1D9U~{+2QLG7tP&wViF zl{)L8J^I;K^t(&<#a8;?Sn{z#^}SB^zfknEL-^2F_|;YU*jDtnNcYWB^tnm;+*t6g zLF}tP{`sr$uR;FzjLCW|_{>%J%2NLMrr@1A`r=ss{mu8vSLvue=%zi?jWfM&DF6Gt z`O{bQwMEQ>FZRb+_rz2G{KEFbR{r>*_|8<=k~P|wH}}U>|MqqH*i`q;SNPLZ{`ZFd z_JRKRoa?DSUHUFc}N(SWFu@o6#es)`{;i4pE>;Pi}|lV ziB=uaeJuOqYWwDP;*m7`?Sc5yXZz-D|Nh$l{^I@ca^%lg^ygxKO&R>(S^C{)*o-pa znK$W=H2mzB_QOK>xI_5OMWB8&)xJ^q(@0=45B0rD|N4E3VkL4!7ya^_{o`AaYACFY zI>e|)x`{Q?gD>^JO8xSr&aq3~#Z|SIKY~>r=-FMEaxMAUOL|cq|NrvRo<8y2WAVaH z-Kayrnm(p+EBV_^=C?}g*jS-&DfG`#t9mZ;-dp(5O!v%9CInir0000tbW%=J06q;w z2o{?G1dTX+^B!L?uA|ZAZt(nw?)j60PxQ|GR5Y2+a-_(ug6G5bjqul?+~)A|-Qw%K z9+SKP01CfJL_t(o!_?PzR8x5t2XI6X!83Lb>ZoI#v7VW63t$qGKthNVrAeq8j0qxD zKv1xZfFcBjCQU=J(2*v+7b!|pinOH&D0WxHGV1K^{ryr5%DT?}w_hSB`Mtc)x%a-p zQ%2_hDsu8`RwEh2&6}rB`}%Gd#dZH_owCyGKhn~SwSNsm%A4K%obWS{@EiQyZ;%zX zZNtp3ZgJk)ZB@WL^{$_=3i#!hf1v!*vyX&?}rPcB4$5F0}a{PEx6MQrn4!qsfE!eE|--f*U zr=*Oof0nxk1ROhdEFb{yjMLPFRt$~>SXEM>sK3np;?U*3-BOj&6{>Gw;OpyaU|@hO z(9kbn4DhnAK};-6YRgvHFFD^;WfaxL_?ntpSy_oKVT1}S!#30Ge`QofESLR)lax_Z z?(QBF<8Epy#*l_9!H6l^8e`h2nUVA#B?atc=bh9(dGcf)VD9chO&Daj$K>U~Ms4l9 zPBKVar=Qd6ElKJ{+1eBO`q~h%^72HO=@dj;UtfP>qEk04>AShp9`~OFVO<3i!^3}r z=!-SP;Rp?cz~%$P!xPydVS-IFra2EcS0rULbas}NojP^kzyXma^hAQtfSejG>+I|- zxR+G1>a(j@VPk|KjF+8VSy@(AcH+c|Q&Tzg1{tsn8{sRJmD$-18G?xA3ZFK%sUqoK z0fNq)*}3x&Ftm>&wdv3i5*m6+cWp2b7jTL9wv~bs&X@huhih7iOnaL`!yd;o-=sD~K(yNUFFt zbIOE%gn|n5^J8P{>MmRWDg1~X&i;=PF4!GGTQ6LwtBZ||&2I=6MEoFqGR<2OAsA@L zM^Yn5kRyMG9D#^-w?pso65d?b2uyxMgL6{E66sT5V@E}jbwfjbdwXqdV@}Qu$cqOL z8u#rxf?ntc=f>mSX4sgMlhasR+ujb4MOa0L)Pa*-6(LZ!C`@k%6-hZa9^5G{ebT&d z-zEGKCTHwfZt+8J5z`*pkX~q^A&8JVmz1D0nnht@dT3~9yLW9Z|8n!Q%-r0R!In#s z+_-dUtiQjsKl2rz@9pi~9vYgSURY>B6htifIPS$A5rRZ(p%e(;;`2xQTdS*wa_?W3 z#Ord)qufWy)w$1_0SXMnkf9pMBcfxYxHq{UJEA>^mK;MeD?KeOFwmR-`<_Zp;zaDNn^3dx_SvgL}qlypTChD{A&JbCT>n=hgeDI=Q-d?7Rw?W9+tRV?!}ho$64og?2srs zAX#XU&gG(da6tn!S4Onw)makA#=)Kdy@enMBns3-9~q&m(053MPUp6bv~k6bo=*sL zMzD9Vxw=4f=_}UQ+%jSYs}k{)G#wpLb6hHyN=FeZ5ET`!(1FHKK|!ihAQ{D)o41Ua zt~4T)1XI#vqk*Hq@skRCq=JqeJRvw{u1w=wH*3VL%>l^8$yFmUC?o+&V&j2RC|E*N zTU#402No#kcsa7!P*4JfoLm4B4|}oBO-}~~8d4B~G}&yiqyh+?^8P)AN^heJA(kyT zsI!D1QerTMbi{{$Me1Eo2P4!QDItNQr>CpSc4V3H+T1G|^p&+J_gXga`^ToFjg~d^)ZFWIPt{PYZ$dLTy)ud(pUqX^A9fOKXlH z@8!G9+=nl`VJ4#R$Z7oE!IYurxFBZ|F3A3%o5_`BA8)m?-|OI#n5ZO@v$Z8B;X}$$ zuQ!XwBY%{5yucSdnM0F?YGMZp+UtL1q11zfVro1p$%!D6IM4fs?t4QMJV^{uOX)9q zQc6_SkfUKna592|%%f&WJx3@l)$xat?3n~JBw4?0&AlJWu`tBJ4333$VfvHIaZBu| zqk?SwbyiCM%~n`|N;(Y938mMWW1-g8YHAi1BFqrpS*WR5TNf5SDxD;udYBAjhrK4| zsq>}(WGl>AsbhZB4Vq&T)HMbsb9>TZCqyAj7&W}&T-aOsI*|qrYV7D~onkvD8@#pFNCzpBjJqsM}$XoCpMUGYy~;kwqi{0SIO^;AjyDS`2X9j{3)^ zE}Z7SNlJ^NK!Tc#?VYp;>gw2{(Nx8uVMSdX#%z!4fdMU=Df3xH3Nmw-!I+TbV$Xo1 z2bLLFAA=PF!HHpSj2&~GJ&R=&rh#TF?ujx-l7ov8!^1<1fGnipV1%IM;lVI+f#Zdp zS#qBjglIW5aDNjU7!***ViKgn)Y9@`FpQuaH<2SdO+m0El;ZtOa8WKs_Sk|j|6Pmy z@@5M-T-3 z^1Lqz34E&K7nCVZNma%oW7^s2o6r(vk$2d*Y;qBob(Ne7jj0@ug;Hu@@`km%d)0mL z@^=>O$&ZGft5PC9gHe?do=d0&*qkhDnAC0Dz`$r# z`I!z`rlM#My(E)N2M|8e4wyICvV9AhDQp`gbkhN_kx%JqH>7SzOluP}Q#M?;Go9ez zroV9yfn&mZek*es5Mj$Re1|+jh~pdH14g%Yd}ToV=Ske_Trk_7mo}ZO{SMhsY_Z>e Z*I%=x$!b|70G3m4?H)W$ZXQoSj!s)Rn@VqX?g%0(|RX%jO!i5y~!#LxvE$Or_ z%#IS{s2PxT*q1>vb9i+WQqAPdK{i2v!P9J4+5i9mCUjCx zQvfagFGm>t?Fs&9{l@;C{+eFy+pDyFim!~XW?c+|_>TH^J=_ubj|_kVwmIi##iIu}F5xBYCvHer7H zk90)v=~519{a8HoUM(<%o@H} zZX0&+T7R`Qb^BwJV?TfWUzXR^vDYfkAg1dfNbIbJ6>wb>1nj&`Q}tKtiY~2VWf=WI z5Cm04MbGW=gZ26v@lm4~+he?^8dm^i=kDGdtd^^5Tt*KS%&Rpu**G&)lnTIi-!U^4 z7e!IZgk~9-R<$g%#4)p?zO%9lW>iv@i}`#}N`J2NbUOYZo2F^bM8cC}SA+M`m@yh5 zgjF%$Y(NG@j#l=@jmDLDfOC{^g3#3g-yu3plz_7$96_!P0O9t`flYx?682opNT{GV zVh~G<#M%^OC`yBhq?CA3CY&cO(SV6WC`=g1^PDiP1%zwhma^c8CqG>x4KYe#J#ieT zaetf>0`Vx-4S0cCilnrGKr@BAl)(#t?;y=VD;5!Vi~5>#m4F9krUHlAo@s?2V$jBf z5LH4X=fxHrVaf={SeEmRnl_?vzF8=Y5hH{b7(Mh{w_hL$fyn&s?rt+LLMyUF&bL9h z_kP!+n20b8*(Xm*VSvW9C~`ft-JchcElmWw?RFQ0|9T!?x7+P&$c(6rT;O==CTT#B6+?av4 z_sKQWXd(5$vC^IkRVI|IULMV~#qKt(6OD%NcHniL5rImSe0M$~2q&75ypp97)hGp# zJ+dGw%aCS-5Wz9$Jy&NZ2y;zx5`RyDG&X_k!XKyRcWM?XfiQP<_K|-9BEd+#8d=8c zC1@;g-MaU2P#X@RlDt9=YI-nV~r_i zSVjE9Lnu^s+H#|1YNMt&Yf5b&fTs39ps4NM&ySi&#w4&(Qtb0E2!u{r@3&7Nk~NWB zl=ICT-ilfeYaPhq{XhwrK*b~$=7VBM&4(5opLD;l>o>h*OpGy+0D@7r_m~!HZ#uz9 z2u-0BQImjHYXODzj=n+%On*?FrWAq!+9G)4X^&T%j0&m(ACQ2@w$K5YK-C})^ML6z zLZAYf1vL1|KRO6sNsM@6;Gl_4yn{5|&aXvLf(s*raiogHuTJ;tb^TLm9qTp-192R# zY}LWC2gAb3QgF;Ud4zUs#=QT_^nX4BQUx^qS&^gY^yx$v+As`CJ%37g>Bej5hI`F9_5A#jzLm3yQp!1-@B*cSG3LHxL8&LFoHIl; z@{&B)0syRGcLH8*nJgFCSEmY!zm=R}_a({cWP$FJlC_ad9x-HCvQ;I~#D`_}9E!37U5lrnmO=FztaHRkT zV@$0CE0G)PKI|Zt!V%=*U<6bI6>A$KU29`Jdfd97%M|a#6g0ksFhXLX zwuLkI)o|OlTS{`W?8IH}#aA^`gu96{u!Awgku^hRpF(Ax+kdZ2MQf+!BFJ3N*5?ZTY|wk zJ3cvCi%4*>I#-EEakD^Uo$twFzl$^3uRykcE4hL$@y1s0$XnQ_K+vH<(4;}PfimmL za_h=<%9=gx$bVxtRfZ)fGA~MZkYXliODWZ^S=_W&^3{F!%~bcxQS`-4VTi)`%u@Ep zPU*NsV~NA_#7yzQN@k11?Y&6vze)1KOJ9b}{ z`PzBitU$?_II({&uX-y^bFIIOGyCPGMQNf)aIa>I!%K6s`PF6k&sI};v{rt;NNuM2 z(p2HELHN^Q;;};5raiicF;{)K{P4{A-i!FqTF#m{{_@EB*l_vJQxOaYK46zdZK_~} zz5epi(SM#g`POO2ls5b0m-@|7%$_`PKNDewzx?T~nQ17`oH^gGM1xWr<+(^)fx7#t~ zgU0mWrbsRi|NY|GuuYkYWM^GOG$s=8>CM>CvgW-}EHy*l%%1e|*ruF*_vEjFV>8yh ze}Ax+a_Z8PJ~JH5z@W-XTkZe=09$lYPE!CT+#n6@{_O$>H~#)bm;UVb@GNms8x%o3 zMhyY%$1qs{&B{@;pNOXuL?W?82F+VtY< zXLNLa=($YU=4q?Mg$?qH_y7P1wn;=mRDW2*)tGryQ)d>y1#Jh!g1FTU_qAH>qV~A9 zGhJ_DPbQ3g$QEZweHJkYulO5 zbe7KjUT}2I5nu4kKl6h>a^89G$G!Laa=-f+G2;J>uu&nSUqFlwnKbIzEg=&Zt$&&Q z;m^kb@628u`QGRkpG7lj#_D%6FZUG|?*9X@zp(LO{%llJMB#7OQ;hME1BzVv0*+&Xf;Q7Mcg-4GbZES4(<0Jl-89F-XcxE4g zGz!7c*LM)HjppvQyNGL-LMI1V=6@wUjbQ0Rg3B(K>j)wr_$>c3#HEd)L1p*iYKbhr z?;tqf>87Tp%m772F)=ZhE?qi(I%*dGwIDWCSY(l_R^H^wZ=#$U6ZSPUK|w)JPtV3$@DR))g{>*d%sk!FU{KfgB!7LLmxo-m zqoBZSHgDS0)m2+Brzq}3#ufYUz=;z*?$)+8ouiV^GAHG2M~USn6@UehU<7#lib%%H zHWu`Bbvf<2wv3Esozo}el;tKp1cEANa|p^>sS0JvZ9-WWN!A-|Hix}Gqqn!JSzn|6 zCMqTqR)HNSM)MWtW z?JYiQ1jD+8FX7ZvvK9lu=M!?3)grceYU~X;uWPW^IJFK>v(DX%4L zCAWKU9OrO2I3bjCDZff3l}fEvtHmM~i!~N~yT&Ju_z9DUP)Rj93V+8j4oAXbu~`xh zM)C=nkVb)iJ#|VD{gg>0w5qgDoR1?{b#m+4TDMX1=hnzl5{adUUkN6ei+fFa~ZG`u3lA^@d>-#re^q#giWwG zYy40lZGUTn+q)_EKOS>#t@@mmw>7WN14GHTIg{GJmz%-+xr&L?Y_KwSj@V z7a|_5+WngY0|PhjlM+lQZm0=m_=-%f*VqjdpToVG^7R*A{`ISy^@E<``vdfauP&s5 zNN-TAeR^&a6=I#8B2zEi`~KvO+qW+6zQ773Ci~~tCvW`g*7a|%)kA8n24U!=r$-cF zIivHF#I=;`4}UJ+-t*x5e9mBIg%@vMe6Z*CjeE0F73wyFkRhUwP*s1cpGZCU?b%y< z_UyTOqc0EUyDUEgK1~0 zY#y-!=U@`pk;TO*F>_J@iiw?;mR44_nS=5Da0_Fro&1K{;iFI&VL>-yLqP1j{7f?& zwGuW9ZAV-tReHp0nWmdbp<;(kC4;^u37BwvyQ|5JOOOUNB#e|>NF|K1TJs`)hfA=;FBcDr{KU=QG6Le65z44ygP41@Qj-4K_(di zHGlC_fJ&v{6GHGPqklZCSBO_$cc`V5f!O_W_sB0UPeM*_xP-o98@v_ zfFVLbdzKIPtp>$pv-r7kg@T?#9De#+0~a$)?G!p!yV)Dh1@ z*!y;8i&|_!QKNdYabnHe8vLZOYCbla>DV;wj9k@e7`Re(&DBkEzaHKY#h% z$?F@gbf+gEOs4F8`?3}=WjJMFRysh-XtvDhUbbvmclVrh6IePEfzAYQEu8Z7>MTsp z8k618u`>(F5Ma&98nZ9kWI~#pct8}Nm;k1cPZ3R91sccJAz; zJ)jZA(TH-uv|!rMq7~pdwQJWgT7LyDnvRaGTTQ1kKyHsFd+FwGotdrrwtNEB66lvGzAJGSF7I(MPs&>9+nK){QO?=<~r zDA8L9og$twIT=*Djvd=I$l=2|NK;V}8#`$E1Q77z6W z6{dJ2{2^X)GBTBvKsF$VqgM)YGD1=UT7)tKU2Ni$ixj>%K_n2wK?o%kpsJ`qRRP6d ziH*iUbx_Q)C`1A8&dMk6>Q|YGacD6*I}ewjpppY|Kv_V7Kq8crATB;9Cr1>^yR$g_ z$t8OEx#!luJa+8ZrSKuZ51z>SrGb0a&z$zZ|F_=10asM|!fcII^Z)<=07*qoM6N<$ Ef@E$`g#Z8m diff --git a/public/images/emoji/apple/frowning_woman.png b/public/images/emoji/apple/frowning_woman.png index 22bcd8383f9bfafce002bbb50d5186e6a3a034cb..e22372ab5285f0bc4d9bf68c1e937d45db634787 100644 GIT binary patch delta 2248 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 diff --git a/public/images/emoji/apple/fuelpump.png b/public/images/emoji/apple/fuelpump.png index 4389cc7b19dd7d99b495cd89f2574c79f1d0bd92..4ada8586c62fe4df9d58c2ebaacb8181b7273d93 100644 GIT binary patch delta 2235 zcmV;s2t@bk8^#fkBYy#9P)t-sM{rD@qM|M*CPqd^bV5fmEG#xQHp0NbXIEBJQ&Tc7 zFJT=aT3T8&G&7BjjW8)GFexdg9U?e6Ik_MuH!3PDBP6^bCw6mnupA*Q92~P19X&TU zt`;7)Hac%_Zn7OBsv04)6&<V z9wyo=GP@QZ<1sjbfq~T}E%rl6(6O?%x3|P3E5Q#M+PuE6tgN1&pTfk%yPlq{F*LRd z7TP*L$v{SskAIKQ(b4Sg?ydz9bqx~p_V&NOzXAdRUS3|8e13RgVx^0W{Qdp$IzjF+ zIJQepzbY`zk(44LBEni-?^s;SZgJ4U!{N}-cy)IDMN8x-FwGhx|6O5+BPRb!Q2ISX zk`NbaPf?=~8r>i%@W;qV1eTKk001y_QchC<#V!5_{eS)tAO1%YyzRKFbwk}>k6J9b zd)xEFv)^u+&)>v}g1!B)bo)KUpjgQM5j6$b000KyNklxt$&Qpj@lU-9isXCv1d8!6(7lwm2H}*?Wb z$QKR%Iu;XzhW51mnJo8Awrr)0?^0<`jdX5OLz*Q0C&|;@e%dlHbo)s%O=< ztmG?tr&75GXnSp?-b`(B?21&gpbR(&LGCJISt^T_GpQ|}$rX9ON}<{1Ev*@zVppUJ z0MUXH$PfscYX=$-AW2DA_p9j+K&|p|tAAc^HJ3wd$S#OF=YL+@iRH(g$FeM!^YTNx z{8&3K-+wQ*I>(v@B{erWHbe_ThcJ+@KWP5=@#8Lgmu*5aMzK{r(KIY+)87Zmz`#sk*8r^rAkMIe)*R2HC%REk1npD*B@t7~)pAZug@*-|#!g)#&Ry#F{+*H(H$*sV51 z4I4T)p^ERr`g&+f+hlb=og;)2DI8h$HI%ZU@%44@mbUEg3z>67p&!Kg6>9sYKY!s? zwPo+Ct@hZy{X~LsWbK;lk+6pF{Rw9B_WIk}-} z6D%m&XcUXIN9gEqEoI3+WG=b``wmT;_AO3-7@6MKcnNXuYXGTaqm9#&Qdkm=RZz2; z2#3Rk!ex35ff0Am>3ESZorhfM0rz&2S~sUwj!%#6qyt_8d4eM^A@1Y)`hU=i55e>P z#LCg%W&&$#Yv4efK@UK$GxZN98pWr{6(nrs3KPNS2VAw<0-+fu#7B7^w@Cr-9eEn1 zND`?8x$Wc`5?ivW@XmWau%L+rZ~y}5<%6yJSc~C*vJo^Nv;I$>@jeii6pt4Sq{5kS zB8)EvaR{^+baf@}lV_R*g?}t4MruNe#-I*?gozpVq?bx#o-r2WeTxu|jZhGHvZ9BK z=_D6I+$VEtrag;(2IODmX-P>U#frrOtiECq5XzvFd>e9%yB9eEjbm-E!y!bah#(Y` zx7Ve|$I|sJ9tV&?2OzJ*8ruvmZAO+@HUhNh-1~>Cz>Eq6qot-Qy+%v(4;U6Ou443b`Z; zf^jcQ!0zETw;^tt*=?b>&nnWZHx#-#5PyZ7^VY=RyfeGjo`0ifP!*tuIupWfV|Oi; z{<+4x=A)2L*Cnxr4nokg&!HJMw8WcZgS#f?Nl7<(S<-bF83rKl01#(FbRo$HM{c(- z59>&|j`AvnR{hvvGd8ryf>u;S;O)EhoTBTp*y)JSD@v~3=q_w^mBR%&ZqLzJZwTLy z60|LLnu1P5#eV>_#F0;%tvbeT|2ZBVgwzIqUlJ9FT)L0Ivz$r*VPnjj9fs4@2T~ys zwQ+TO4Y|E)L?9-$Lig%1KV8`DP1`YLZfxc!lM&c<3x!Alp(K_xhk*B!XUxfQ&M`*M zGN1wp96qk_RR9wtfFL75PjE3X>0!?hHk<8G! za?B7_0BQjtjDKW&e8$UWuxk-Y0%S3^6eG~{BO2%UEhN}b(~<lJ}x(`^N10K z!$>pHgy3<6o<)jRUj~9kH}*(=GPCz{Z*OCCcmT)gf;-{r#)mob9l@86#N~qvo}hC8 zXapD($TT01$X|@?z>nM8M?P0@WRQx2OvrWs8mJ=9J3u%F@IT|-A4pqWPkI0V002ov JPDHLkV1mJ!Eu#Pc literal 3561 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 literal 4626 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 IM6N<$f`HI;Y5)KL diff --git a/public/images/emoji/apple/full_moon_with_face.png b/public/images/emoji/apple/full_moon_with_face.png index 4d766f808934ddedf5acb682d41356fdce45d337..e32035269974eff2182dc988410b9cee503fb94d 100644 GIT binary patch delta 2665 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 X)0PkO#T4lp00000NkvXXu0mjf{>lNz literal 4639 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 diff --git a/public/images/emoji/apple/funeral_urn.png b/public/images/emoji/apple/funeral_urn.png index a5b5e6f28c3e86f08407ad95495257deb6729d1b..292523e9136e31ad126e79361b353cd415bccc64 100644 GIT binary patch delta 1859 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 MV3yEI1J{WE0kAP*UH||9 diff --git a/public/images/emoji/apple/gabon.png b/public/images/emoji/apple/gabon.png index e899fb7b2237f17b5d5194f2148a575e9f84597a..6c97ae2ad342398662c3218f08211ae9a81125db 100644 GIT binary patch delta 1261 zcmV#J!C9NZ)<-|J#K7Sj)5I= zPc&A7B|l=0bqiytj3Yf?2U$0viy~>HjUzr_W}=EBJz;63jb)&TT9ldOyb1EoEf11k&d5vJwiX76Q~`ug40%rpqfyAST z3qNF*3~NP?fqxx-`*&3U000?uQchC<`d#3x{`?3ICZVF&t@}8xqEd%{?7f@87lWZH z000A>Nkl8lbfZ5QcHcr_82Y}y z6#1wPjHkJmRZSRA$SeptW*B%B6a)d;CBs;r7f{ZUfRLUh zp?73io!8KHP1kjK8C{8>AsBQdG%5;~B%>PigW!3gZWa6rD*+6N*fx9sLJ1);iPfP` zBL>ICI)8r0mq`Nv@kS_6Ao3h4a(qTiGa$h-5ZPtYfh1JFq(p%Vq!>Im6B9U7Ql(HS z2-yvYG$A1&WC}$($Y5<2p(7{ZB1r)uYPU!ZQWr@>N^KXR^K4KZ8Dr*hjvWppe_>I= z&JHSxnZMnxR%uGtltz)8InLsAoD-%%c?H$3$bT*=G;BZIuF{=lS)S*`F+i@HVG)3* zgStq)qM+Il;tcM27Q{IR2OxADY(nYcy@a%zpT|SBNK#{S9N4ot?f?T2kqTw5JE=q8 zoD9x;ggeAP3Vdymh`A&#LXHY8oGgOCpSUhvPw_514k?a++>47A_%H*5uAvxTag0uL z(SI5jy#fJ6D+?jslz8)K^z0&tict`6PHK6ytN~eEag?Ju7a?@0a6q!oFQV-iA;q!R z?#O-Vj{eyqDPaoac~dMZ1MM;-?r7au`GD4FgdWh9x9pgMlESiz)J_VZPZ>vi@S&oga zxg{Qg8GUFIaz7xgNe^c`s2%+K>f!3*=03JuzT7^B89mR~?1E#-B#<#ag}N`KJ%67N zxBReny@rtzvWSS_Y$cHU5bHt1Dc8t4E&^kVhKWUSCPzdzGzQ6ubNn7nQ2HQnZ!_{FyeiOTCSU1lwRAh6pA}M2mnf{LW1SHiAA)3 zBr%w%s=R43u4(dWUKC2T2~@OQpk`zdQ^Z$=fj6*_)ipk(@hhpUv%FHd{AqI@xy51t zwuEA$oSlpXqRcX}XK)K%8H$HgXf6h397-%axvJ(dJOo5mgZNWrS#ub{v;T3&jvf03 XmvP5p1eOHO00000NkvXXu0mjf?v6In delta 2354 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 delta 2564 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 ad;SH3`#StY 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 delta 1010 zcmV)7y001yhOjJcja7^0A#@out=-l1j&(7u7(#Nf^ z!KJC;(ahb-#^u)0$gQr>x3|{8zrdoV@8R3n)_)rS000PdQchC#GdLAs4)<3ukf(W(ZK@cx1-hae{;6)3vt%%~qOAkFr zy$LVDMHCP3Cle}yFcT;_DE=Xt97Keg_x7MY^s#w82_9w%Y-wROAo2V1UShU8J2?sd zW@qN|dEfVaAxmcPU(V?9jehfFdAk?gx1_2Uogu2mJ?6v#Uq)Z`p^8^gU#U?vtD?Jo zowk-$Rc-d65`SpihpH&5Uh7YasyjWWi=wcM_Sd6fX;jbg?k~$Q49jQNqH|%r-^SWX zp$Q73wa0tK7(WbeuRU96(Yof3g=QG`8y{<)D(e`AkNx9s+|Xyf?{l!|_0@e&muxzn zL9yw~XXVKiW_Z42$l)NK&p7iBj;iOjmW)AhHf47F<$t|ucy-1Z#L$8YF<`0IES!%Uub$(V{F7l7cw}0lKOHXd*HUGKz34#zQ58K+VqWG(9uWQ!w}B7?-ft9VT){~zfKNT%=3+T`_y}vFJF9luyS7d$e17A>3Ntx gaq8lONci8+KcHi5Je^wwC;$Ke07*qoM6N<$g5gZ@mjD0& diff --git a/public/images/emoji/apple/gb.png b/public/images/emoji/apple/gb.png index a12a8ce6d57f2e1d66c262fab1f85bfae5aef104..e4d26ab91fe1a4d064b48d0f76e08b71920cd369 100644 GIT binary patch delta 2222 zcmV;f2vPUE8MzUVBYy#dP)t-sM{rEAxxgM5IRp|x6)0I|U~z+ck476onw+I_3Kx=w zk(h{x3mHGJv$6^qLu7N4h$An&ZggRAl)u5j6eCaz9772iK5crKV{3hIASwqEIm5TQ zXA>TiU}J4{jI3>Tf({>|SYcdYb-8hSV`pwrVTyi=iK0hRsDD&naUCa!Zfv%Bfd2pg z88?FvFMSFpbo%-E@b2ut4kWAu7~$aG@cjGn^z`WH<=EEN)8FLd^YZ1cv(Pk10~loi z3th-6J+l=kt`jB1BQ+pBht@YsxyIZVFmnSSY_ta)ro7m_A2G)lE#gqAp{m1{pS?j%g)%yH%B!xoKSj4sSK^?hu`@j3eu(XroShOP z0TWRI4@3It>>ea)B|?pL6CSu3ER>$5tcZ$>ii#F3W`7GJTdA$8_{PVD3K>j$IV%7F z04#J;PE!E>KCYr1DG3X%POWUF@zSIF^6CEGjGV8Q%5Y`)af70q{Ltdp?C#9uzI*Yo zdTIaw2DwQ@K~#8N?UvcchFoku58VC1c1A?xvYxn3i4>5CA?jjgR8o_XGp;EaC>23&vpIF(!4U~!2^1e5vHnObEz1%|i-!1Dn+r#V zbbl;1P0N*vRLS-G1t^6kSKy<~95sUw2si}Z!vrCH;rBasArvRVzmxA5pv@N_k0?2s1``vH5U>1=rkj_=O7{}V_2f)zwnPMip+`C_^H+BeYXUy4=Tzq7GblT!f`a+ z!+j)<<1QRPDZoUdnj@Sj3m8^vFw8|-$$yCOMvK))5_dqy1BtIpS#~4=Nu=a5P7-rR zsc1Cnjv_|{(ZeuGbvl`1i5F=uXR%s*_d!QTg9VCT)jME?r>y!x%1OgDmnxtyQRtefBczS_uFIO%MPQlbYkk4X`)0i6c zGvJ*UXaNchBJ6!ci8Rr*ncRS4xiA5=ZgdRVsHw1wRi$mXM!Q7nE(z&EkL!| zWY&t-QX!Dj84O+k3Wg-Y`bWEI-K-g80|X`^-k`^qii|U44r9Qtc6nUJ0LLh7obB23-ZI?ok$@D4h)2W-v37`n=!Bh)B1XDAA#pZ+;YEiyqSn180^g0|U6(x+Sg z>wASB3fzVxjg)B96eywUK%Jb7I21;wozS(cDCEG;>Z-N+28CQV(CK&-9(D-UZnm7x z1Kk=4ka)R6VU)o0?JVrSSQx9q9YU^dNKIBtS)@gQQejG335;KYJT4cG$6;@you^J& zKU){LzI7FZ;##czs(%0+eugS~f^`GSX!8q_hk`1h7mmz# z9eKSZ38d2=Cx2yzF~8$VcZ*zB<&0F1v2f1Pm{Rr;5a1T134vT7pm^WCdyjN<{I*(= zD>296883w_7=h(K4r6lM zLK4K%krP(ybUHoUy+nv7`}^x(J$tO_*|YUmPu^Z%UVoqK_R;yL!$@Q_6vW)=f&(JE zsw0*Mou7Zdv;OSy+M4msm-MD_?S~h?U4NqkouB8gDwQ0XLeh&uzymqTSMbX}zkd1M z+J+GTD?$Y0)|Tm(Z2a!!FTY*C-8(*hztA2^^2@(~VcgvO>^HssH^hCs{%U{!$z1!d wUO|$_YbRji3j~oj*5)!oE&jjtpa(tZ-vs&7M0G*LfdBvi07*qoM6N<$f@KmX4FCWD literal 3260 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 diff --git a/public/images/emoji/apple/gear.png b/public/images/emoji/apple/gear.png index acc05b560937e7cb7c3469cb777b6dca206e1463..b73e307fc633750112d81c552ec89aaff6dc527e 100644 GIT binary patch delta 2661 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 diff --git a/public/images/emoji/apple/gem.png b/public/images/emoji/apple/gem.png index 14ed79375f0aea55c96a71ed4a79477f805d54cf..6875d17fb95faed1dd1aafb7b7a5d06570a991b8 100644 GIT binary patch delta 2258 zcmV;@2rc*S8r>0)BYy!wP)t-sM{rD;tj>gzxXhw*F$a{)p25VYBsq%KnSp|AN*3Sfl2o>;F=#_FS&~eck^ysQyl$=9}67!~g$l z*#Bg#?Kiake8T**`~Q>X|5B&@UZM3-r0q$j^^nv5m(To5i^xZx>qN5uqvQWaiSBK@ z{dl?fNtoex?0^5U<^F)Y@2lSYiOBv=k@H&0|4+vMYPb3{lJGyj|8uVJDtq03_Wv=U z{Dr;x&Hw)yYtJl<=A-@pOqSMB-v30;|CsjwZ?x#My4g$s001L&QchC69F z)_uN>jjgrKXPav)8@~0&Urw&Z<%TsFu@7(S=e;#tjH~~MqcTa? z%fqvN|9>o#X)oTsJv#b8K;OfThwC+ho<<`cm!$GCKxb!}e!snJu~&~hfEWLh+O^<(Lo=RCntyv0=?!w-2t}Ys;4@SV#bU)`$mmqB4L}OR@Q@G_x+iTNHNa#&gWO3sh~HRzgz2DA zC=aOUK%rWv252cUih`Ng+CQYN*AhojSbOf|v{fI(uC!sYR7mq2?QoR24f zy3UPZq99M2rtU_qf83_~d@}-|_&bLz=oLk8*fiRF$kcpsHDs{Is zAowmh5X0PzY0T0Ef``N>d8UJb(0|7NE~W}kpcC#6YS26&1t*3xPzMmcRk>g=Xe`St zo9uQ$A)(Mba4lPX^E^<{7(Q}!jy^*?fdY3B8A??P8XQ)ZHH-x4W;~Wd9siEc^|w@Y zH%H+XW9NcFiaT%63~#ma0-0s;IA$a2`A1uRPoYvHig$_y)mPhRi#)|Y4F;TxQQ%`im` z2Jy-n`Iwka@wfAZLKx@0$z#4Yj%%5gHBAc_0*gwe60gMj-sj%0Uw_}>n+~KlhXWf8 z27AM^Wht-M@1LEX&SuAc9DkF60x8hn+XJU3>ip_da*Gw*8}yJC)_KWGc@U>0?fpEVYi;qjp-F-%bn^){H`d zeBf2$?Mt$-d#yfqkD4QsgG5nW)`2WN_ff!l>gi}*RVR4RvWC+mBY#Qpa@?$4VqxEC z*O4T0a}<>&^H{oW<&u+0J$ibYuB&4~7y}ZRa-2w|%lF^@JX+s<-W*|b#PLucb8tja zw34^;G@xj-KE_*01B&GE(OWSt|6Bv`P3iDr)NE!bPY+Tsm(z7ow=CiIb{-{CU6y59 z(`d$Vl$m?e^}T$D{(n)kBV|1v%HzqEMP0Y8AxoTeG#XX$YG{ybKozreiG_VHyuZhz zW*|tB;v#7{Wanu-p>(=VAUPav<#OdpIdtE-zq&p}!D`f+mu4}X=-l96m(WR^=yt8ntm zfy9z~?I8!NJ07|Fln1Yh?m*@pG#Tgf`Ovg%N#)S-=7SDd-Ep%iQ5Y#FlFSJpNE0|1 zNV3Yt@xjB4vpRRP;DK~yS(YwF#`Af-UZ1NtgTjhsl^6a4pX;Yu*={!bI7}!>xAaU# zo}+X@{HP)W_#6LL-m>gxlNbML@yltz|`pr#b`T@?bw(`oP`lcM6-y{_*>ukW487ytkO07*qoM6N<$g8jOa4FCWD delta 3436 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 O0000o#0aVvv)Es$<1ftqNlnL4(nK*GRn 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 diff --git a/public/images/emoji/apple/georgia.png b/public/images/emoji/apple/georgia.png index ca64e7ea764bf142533995dbfe90f209b4dbd379..9827360fac2ffa099516c32fadfde88d383ee38d 100644 GIT binary patch delta 1479 zcmV;&1vvV<7T61rBYyzfP)t-sM{rD#f`oj0e0pkZkByDW%F4pNznX%ErlqBch=_%H zdz2+IcXM-r4H|xZeZ|Me#l^+K!NJAF#l^+O!NI}3y}iP4cye-beHkT_n3#1JBg)Ln z!gPJ=>gwCv-1z$X=PyR|^z`B4;_mVB#SkXdA2rPwE!Ni7(tiaZ-0SJW!otS@5YsqB z$}BkO{QJ{XUDRrF;L6S3MN`*;huX2V>T-SQ+TH6kOa1=-rKP3O(b44`H~G-k;V3@t zw!WB_mbSRK+n1j1qN?XxXR0GKvJN2dhLDjC9gk91CVqML0000TbW%=J02lOSuKp$o zqW(Rhm#)!sNq?E^*t+KF(e0`@#DNr+Zo~!e>`i_LVRAsz6uz_`7SSd;a-5IdbGkr`4`#b^b`vzPY)+ zzPMEe4DUQS36(XDS$?AMBTCJ$w zb_>$AT5W0u)Z(sVAj>jkHj-r-O}ZY%zQ1-|5^44a(f9ER3tsj6_g{g2-;*T#F-?nJ zl`I<$hkwev60t$F_QP~i*!KTKXJZeGB`C3m-OzRUb*c;%fJ9)D7eO3bVQhrFL1fz; zLU1>V7)h`vAOcH9A_PRH>3f7To)Rd zLnuapNJKpXWMEMaphvvOp@JF_1+vqqaLkl#n15c0z@v}|z%E76*7u9ZwQWeG)r#EI zN^&bG=Yg)GheRTgvP%SdmW6PRAWvf=*S37egl1-{N`XcoLQq5|aR4-pb55Qb5r;$u zc+9{FC{Ke3U@reGk(TCZ;RI>A!P4ZKMC3w|fV=gHxE4ig$6ClTv>HXDLy@e`W{b^h zDSs{>9FuinyOCQf(pc;`WuzaLhNi{hwcKXPeCh}cA2GrpFFxM26?jObrGvph2SlqW z5iyE@NJSpxSCKLW;0^^yXo;g_G$j(uYgz=IA8xnh>t-<<;H9UVNYED#cX6i@~>0-BW7txCRP~=x0fHd&I7{u<1ZB2K*4}Vu= z`4AXbvf((w1t-9q&Xug(luFG!Vyv1+zm5^xofJ7#Ok~sxMz>#3i7-(Xn6PPUMV?J1 zGi{(TrppMfjr|y@o7r~F%qBZZ5VdJSf`>LOw~NLJNn->}3|%!7lGc%##g-Y+Ui(Be zU^tHs65)!(btFTegH8LHh{b_fMt^$~iRcj_wh?XG=G|Y-?A&)YvRa9%1-XAjEP`0@RCeuZ5XuW=^)N?cg<1oyGt*EeDO%AhO*Q znkY7{zB8eS63O7upf8fQ0>VX(TdSHWXjE$5$Pc-6RaD2Hu zeR^s&KE%6S5~29Chan-Q=s@9k*NPL2@dPRAsD18J$VaG|z*aynx)9^{=|D<|iL_cZ hhCg%utsFUWok9Qr002ovPDHLkV1h{U*WLgC delta 2869 zcmV-53(EA^3%eGOBYy(`P)t-sM{rEW#>R?@ik~h$rKP2IA0ffP!KS05j*g9wkB@d3 z9E>V4cX)Vrb#-}od5w^ee|~<$!^3@jeV~w#$jHcjeSM&xpLBF|$HvCN!NGQRc5!88 zc4ue5zrVx7!^p_U$;ruXZf>lxu)4asg@uL7$jEbZbA*YAxPNkaZc|osb8~cbbjHTU z$jHdOy}hHOqnetUetv$rcz(>-*38Vzw0eMjeSNxhesVWFxN>-D93pWdCukribR;Uk zz`)AP%)`UOySux=)W`hWWL^z_x$)z;S5)I?6%+1dO1`?M-9*x1GvGC9>ZK=$|dvnVRLy1LKL&*tan&^}1WH$S#4F@L@=Hr(9Y*FQ)1|NpqRx83XO z$og3(mq7eHbBQOG`T4%!z?cG_4TZ-uKfT1--(Z+ zCM(O!%j)Ur@ALD;Kt+$irBPH?v{<|L^q^72b9U$B1 z=Jfmf;D6}n=-=YFK|$>G^~z*u&onv7QC87SR>;W6kdTm`FF46VO2uAd+2G*k*xKgq z@7vDMw;dhgsI9Uc9n{*|(Q-ze@Pk&RsI6TmVh}M>z);U7ul9-v6mc(Xi zw6wIwdw$m5-ON{D&W(=b`S|7a^}IVh%bT8$EHl%-z{*NXue!PIwY>G&-QjwI+EZNG zUS{&k&!ap;<;2LjN=xC&&HV51;Bk4~X>s6xhxq8~At{s^H9DhCU#uA({=RYhd$rX%ZS9=4v%c>Q!4R0v;LMjf zhyRCs$l?9vxzBx{|NmjbhIOrLUH?OE-0HGzn*-FgZ7y3kJ_`cpvU~Tgov(c7?SCWh zyb}}@B>CSW;yN+V|F5 zp6>4Mo=1+@+2sllZX%CWcD1ImveL&VFbxAmvGHh|QG2!UMq^_;fq;SNr+=+LAwl4A zbIk(JO+dIjj!-G)qlTPxA1DYS5{XPUUe}>6FAp7WjW3N4U0OE>ew<+oq7ew7B8IGCx~XVFSB7y=k{NXT_;CpG z_V%VQ*~udV^PJ@E1 zK~UM*$;r9`t+qiXOMgj8(bq|(ESt9mK;RPb7IasO6dlP1@aoyiKuHk9eDdMPBh5Jj zmj}yhr+a3HZ{DWL%JdQ&5V(yD9;>fap%~Ed7eU_M?@gLP{`c-(`}Cs+!D$s43Pqks zRG5DeDEj=^#E{j{Zod1sOQ0eygU8`K?ys-sgKLdvGl`UA$A7MwD*~v=Q}l$KtR9=v!RlRm_T zmO^C1WD^RdiM~`|Y`#)$O3+JBM`Y?BU&cr07Z%Dzp$Qq7Iy)=Ud>-8Y;?pFnp|$vt zu#aW&BY$8c602Fux}km}S*2ztc0JxnLl;5K3#*&x@rAVvB+MCwP) z1Aod)xK^2ycKJ5KSLwih)YSfg9xhtgHu929(jvYkjq)3&NR27)j!MOc?~O@ZzScyM zP_a_T__Fl;@Eo@Itp)-ml{7{a6{be!<(V)Lo)l#TN(KxL0})h7PS3>L%>tS^EvXW4 zX*M9Zjp$ncvtnYh ztU%oo0jwx-w50)VBg*>4MGJ4p30JF2&p*6ytGl?`e&0T4=k2c@a&vQYa&kMgXV3Qi z`(3N6r=Efi*oVZ}<%0MJ``Tbr(N&#Rsf2qlkE`!Fd*RltTYvu9Pn-|D;k0Fk<9|ln z2HesLkMr2#w%yr&^AhMaS6BO~;;hpWK)|c2RJ|4jb`lO(l& TK5H#!00000NkvXXu0mjf?+fGJ diff --git a/public/images/emoji/apple/ghana.png b/public/images/emoji/apple/ghana.png index 8baafffda67898bb8219bbad28f694f93298a679..20b8437ac20fb52a5bc1f3a6e3a7b9b62dd41812 100644 GIT binary patch delta 1323 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 diff --git a/public/images/emoji/apple/ghost.png b/public/images/emoji/apple/ghost.png index 96e78846cf4553fd3bc413875123a3a6bd8f88fe..4123a1faa392eda94cfbff93c3963ed6deb36353 100644 GIT binary patch delta 2022 zcmV)OP*72qn3<81l7fPRrKYB#p`u+~ zU5t*8jgF6vj*p_GrBYH;Q&UyJ!oyx(UwV3bc6WE5pP;R-u#k|Exw^cGhl%v{`0w!Y z`TG3D#mCRk(&_5#r>Cj2w6@C2&D-4G)YaGGu`nZLlncz=0$2nPuL|Nm@jY&A4B zUtM0xDP*cBQym){p<{GMM@QpCfbMOl?O2oVfVc3E!+sYoR}d5ogA;!M000$qQchC< zfMn+SN2LA_D2waV#JbS8ezu~*j!m^O000KxNkl zU%a!(@9-G5Uh8Ny)aGP&P!j{!fpq*te^B(<;pe>I!@<}?fcCrU6~F6MJPpD&iv z(LZHPrVA|#RhFhys*s(YFGv3XHJjS5Flp7)q^7C*vgqt`@~fQDH(m5u-R5x|M^O~V zd0S__((~Y#Fkv9NvH>MZl4P?ZuuocWpft9nE`|<74!dYX=G(uV<&=y*IzMt z9fJi>n}3yEaQ1L6r*8{{_gYmggNWsM(I(eV4-dP2ze!@=;LGqW1xz0?$Lg-LqqodD zLzywjv%sl#Yo~1-0hAVca^fs>QFH;e&C5n|9J@tm>m|peW>S}6>w8@MN z`~ueC@h|K10*SJa6wTC3~_% z;_UhaAo*?P7DkV26n}LUXax(6kzBoSL7=Dsg=WGLa)3pty zHhFe+&X=zh}}~Cw1dN;R<`DMajAV)q=Se2Z%{CL7=?d zF=&@Z>}X7&@qRyMkb<7T%`4oAeX)vR;!}S+Sr|#6?CGWy;iN5ja!ie5V2Vyc_tQ;iY|6LX3 z>_`-RM?`GMU75k@yn~*35X2aen7L6;ysw8g%00+nioaC!%I|VrqEmc6YY%erJbzLW zHKj`11l-nvQcQ4$G+mh9Qtx~wtp@@1vv4=TGKCzdN&t$fWdir5w`3J1_YPtzSLcH_ zzFT7NC`(*oiVS&;L|0ZdTKSe*B^3c_F6;g2FRPQIh#OsY;{BNtF8uts5e!Q78lsjz zo#dJi=>(uup+-5~CsOe7^_qOMg@38Yi6}U=e7nA&Jq$6(kTX-*;luSE3>u`SH78JP zAK28NB=?t1iu?pB+NSCYJ^b{ryeCqcNug4JfJ*A^!}`zTA8$JTv3}S#$jgCj*Q5rV zW%v;k-VatPV=aMdpiui<9uJ4Zk#&G{9k(0;sMNxg(hgjpkEGuR(Mh38fPcV&nzlSV zv)tQ3)=g8hnzZZ&3C{1IIOJ(N2+=W!Ia$*kURlrX?_3US3|G@%sW$pJhNfP@%>4KD_h|YoUvtKn-!K${v7W5b62RR3NdcUUl=))kOuJ z>Un4ePMX@o%gc8nG3fQNtbZzxLbc`eGACS6iJTp9dVsz|ppjl5Rhp(CdC(%f2%1@G z2t*ig2=wCz5CGvFpuYE{jP}sva%L7K%DkPvHw1!!ArZ(h38GCMT+U1@0x`xw4Dw<} z_zb2h1}S|pw+Zc{3VwiL>ErA7chIvaA)r!Ttn9?4+@>f|1*OK6EPuIwMtPiGUXL0a z1yt`=yY$VSzbU1}=}oCfWicF|U%XxqTj@RqiHE5U2ko2!>KSoL;uHWWDUJt!J`Rr^ zJ}Mw0v2SUEvxcbDDft0~1xrQu$Or#;v{Jr*?iN(~tffG(q22%^N$g1}X&)cqhAgU6 zpzPC2mQW$<43(ZEd4Fl{6GTMg8)xSNSXX-gfv2w+_}9JPHkaaVi*irpnM8^W*n%afPEv;f&1ys9*GVS z&#~4Dyg+hQb)ZuDkg%3XDO5@k{8Z_}ym5pWAR?VCxtu99aDNCf_JmLMhve=>r}~~a zJa$VO1|AJQFsb1fLN4Y>=)i|3?PRc$T8%Zuu*H{7(thhnJwzOiji2z^?+FFJbRPX9 z(m#p7SG?pF<8E%RuWxUjp2l0D-Drip>_8NRu5ZVP?FWHL1!^&D-z;6z47kC97&!|G z9!{>kt4>NEyI&j4!qCOA4hPZ3?Hx_ literal 4233 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 diff --git a/public/images/emoji/apple/gibraltar.png b/public/images/emoji/apple/gibraltar.png index 3d23a81ef02f585df7952d21b6e535226c6b51b8..6f7fabcaf4586fb37a563057cfd17fc40d0fab07 100644 GIT binary patch delta 1587 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 U>GE%Z+W-In07*qoM6N<$f<`Myl>h($ diff --git a/public/images/emoji/apple/gift.png b/public/images/emoji/apple/gift.png index 009300a2f5a4406093096686e14af21f66ec9966..79fc7d563d665248485af77f4655decfb520c88a 100644 GIT binary patch delta 2172 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 diff --git a/public/images/emoji/apple/giraffe.png b/public/images/emoji/apple/giraffe.png index ae1ac63c9e052cff8a93a827b23648d98e048f8e..c2429f7b84d36a72abd92b5380472134fcba261f 100644 GIT binary patch delta 2481 zcmV;i2~PIc7P=FVBYy&FP)t-sM{rEMhd_8m7@TDt)vRzyG#SB#G1Z<+<)TmW%7xXb zWkfR@+nqniplZOBU$}cKs%#v{jXgTa?#!$%9vDBLoHxODP%$((UU*z(VxO{ z3#)lNhe`?Fk$)+BMFw9t4qr70)0alkuYuFAe$k_0*s^<0F%o}WGnRHnIw1?HW(!$A zB6CO_%#lE|X9nA#MN>8vxYUxIO>DN5hw0fmR~UrgG<|KmO8T@0=X(yjj$h zHRZKj+LkWyvrLw8M8uX&@2ot`h9L6IdU8e=WJ@g9rdP|CPSB1h{@Q!riVp0-ap0#v z_o^u6#gX5YA^qpJe`G%Z2o*24ZPx$*0DW{)PJdGX5eEJmD;f#}5&jYVC66TiFa9|G z{4sW-(MSG^{$I5_{eMZG#NUAT>%}`7bY;GIfX97kSlgh_{>S^-@o3ZU^jhSPWa;^& z&&P{du^&2cd+1;{?Xs|`k&NC?w`5a?W5-BWl7S%v)uId z_kRcdN%By6O+u|A2^3I$tQQd&-2_#aEI#1;}f{Qr81m(f3`hWTr zEHWv+NyiK&eQzd!V1F$RbG=+N0o?x9B+O6|Q@g#Q^kZ)ce@iIyj{09WWv4k6=>5&~s> zt%||$t6XjI-elSfhhqjnz&U|wfw!>0wfE=7xj(BRp(B7mE2BC{rW-Q|xvlN-N#qAj zirv8K=mIDk)=kYB_E%^(@$t>2TSCXo%o`pe3nn!>Mje(R-}S~NCH6V|u78;styBT> z#^fL(YARt5aZsy&)(Gio>AW(Vh20+04&b&Y`n%095B$}nq-_Y}KCq_R{{!4WOQunm7A0k-I?j5IF zt^=Uqd8^auUZ8PfXsOog33lYODHJ>(RV1?N?KCezWhBfH4x?mfP7G) zu<3kMJ|LGX?51fefqyF)gk*hHt;Nwg1)ucm7e$__e%1EW6yFBW26;BGbCxjdG0E(} zliarS=$wStIzG>nXP#OO@VrxU0dHEpS?*S`?P?~)&FBcdSgvAQgU6MmTzO4nfjWVJbx-xZlY3oG`?%*W4;cOt1n^yVKHAVH5&_`}?i8J6X$>Bclz#35M7}%3Id*tGIh>&e@`W38@$mxOku#Aq!exzj zroE4SXz1i2DCOe7Kq?tm$YO=UyK?17M5umz{Pg>{I74^I;Se#K!wz0cI*USOS0XQe zdZ#A!0DsD1YqCgxf=WX>D-~VN#E!@v;qxc!h$xiOY55CO5|ZoH>L8Sm7#YH4PJVjn zfGpMI4?5HYcBq zLL~zwq-dnnrKYljH?ngMMHJc?Xh)N%7{!;irVbPwuSg4r*k{u}9LP*uRCVM*8476* zWqRtvTH*6iC@Lwm*G_!DR1p^TwMXj0_aC#dlp4!d?kgLwo?iRo-=8-&9^z54yuAEs v3@T9Nv#Vu~EB}D5UhOz>&{1My*y;Ek8K^|Q!*VbV00000NkvXXu0mjfevHM3 literal 2903 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 V*OlylO#jvaKwrm18?EUQ_dmJ2)WQG& diff --git a/public/images/emoji/apple/girl.png b/public/images/emoji/apple/girl.png index 82f55ebc1d4b2b0224cd0c405deda2db4b85d431..4d3e12dd717f2ab23803f5ff0d6ab3f571dbdb09 100644 GIT binary patch delta 2090 zcmV+_2-WxWA+`{ZBYyy*P)t-sM{rE>w;}%1RsYmd_`xgs#V+-~E%m`S`Nu2nvmL;Z zHUG~)_`)yw!YTgDI{wZ;=Bgg@wjKAqA?d6f*qITxd>rnx9rCyz_q`(g!zAac8r`55 z)0P##fDZoJYX8V7%8L>I)l{cx2>;PS|Iax7?798kg8$4fw10IAn_dTaJ_7d2T8vKx z77+>k=BNJl*Z$>|H6aRJI1baPQh#DE;l+a?fG=qP000(rQchCa=!tZ$FO9xoc-jO3WY7k9iQfyq9~}=S`-CtIc|#>#^i6`ocP7u6n8kj{5!8@ zqqV9F2!FDu;cj2%%jD7g5n87XiSnq3iUN;v2!`vXX*2_+Pn2(c>|;su2o;wagG`u8 zF0-s@GU-r<)kR(N$cH_YG|4@~t-WI)TxXeXvWCHilYp^x#8^ZDvgsoV^dwVY81WA`WSt&So}DCN9&QpbSPW`CKaqRBFm8czW9J&kbT_vT4miPryc3v60n)Hc)}<_2qxwogN$sz(SlnSklL&v_^;9A@Tj*@i=0D4LB1NPkx>M2 z2!BY-Nix4lJv51L&^#1`5ISj260D|Cf;lHp!r2t}2qjUJh9+$Qq6qn!6@f`402?ILw0|vhs_r577P=jWlg2of)9zq5a4a&8a0!$} zNyBF~!a9hKPFox*qEa{6&O0nPVObhcHK!7#OmPp9JBR=!laXVsYms+)iV-0QqcVXV zGs%C1gajx!U}{`m89F}b&;%w9f|gRlAB|)K6q=2Wklv9p+jYCPNwg-eoSq^|3V$J! zw%cjdpd|1D#AXktUqBN7X}aq&8G2NVoDgWZ$hyo)331KtPyZW2M7A9|O{bY}Gctoz zWKMSo4#wc6hoB3oU7B60*_agkoBHWSyZv6fQ-UGEY~ z8J*vt8KvY_5J0N^`dYQ;^J*)=8A^)O*LAhppI4{PmUD_FU0Q&a@vuTtsycv_Ak3;= zRbHy{yx(6BY+MmJd|giE9>&Yh9Ro=3x{fgZcDH70fbdqevO66=_n)8p{eO8^Ru+WN zB32zQZv3(<%g=@rk!0OParSF~7L;jh5kO>jJ;DK)OI95ts3a5=mF3xwH;3a_C#g`- z?uJLR0g9JQ?{*H7O?iZhFl}-=R<)Okyf(LSt;%D$LP)nejWZkainkF$gyjHzoiFF} zr-+WnvahIi4KMYM&2 za!wJ_iGVwHoP|`{L6r0SR35AAb&C#O;<+&?F5MNv+wI|4RyFrfBE{p+$Pc9(ok)PJ zwRr_rd8$ke!L78$_@|S~_^)drRiecE(_`Kf4UnMBLbxr`yta5-aeoFtZmlydxDbR0 zKuZ4fYxG?=zDePr@IAz&Ah>$fLlDB50rcY&$)cZI9fA^-2}F({TZfsc_fXGc{xg&` zgcF9~~VPq_u>KszZ4&xqF<9pOL9dnif>}m9&=>3PZBK)3~FOA_57jsLTsO zFQ*eSd0qpga0f3TrN>f>OmJkPa9xk`)R^j2A@uZo`*~>@K!0lSheV0_qEr{C^Ch#j zt-XW$352Zw#hI=VS`@b*mr#-T<0<|_3PA|-MKRT0AUiF5Ihbghx)MWI>RP4M+^vF~B&0+Y^ zSo6tO?!;R5%2DdMM(Vjp=(bgev)^_Z>N%`7z`POCk(`oqAX4mi?NBY)k_s?MFv_;ICIP}L+{N9Pil{fdyRQlCu?Z8ppuSWOI zRM4F{_svzScPy=aGscxV!ID7o!%X?sZ05B@_smlH%Tf5vQ}@nR_|8@L%TM^wTKCOV z_|aSEw?+8RSM0n;`O{zc&{^%hNBiu+_sLKA(Ovk`U-{Ev`qNw!5exUrQS`)2>bXYg zxJB>3N$a{s_Qy`%tU%$gLhimv=(tAYvqSvt!}{8Gwt_Fpmp9s|KH#oF@xe;8e=V71 zBl^%(_Qg!{!%N$$Kl<8nqi!eq>%RHbXZhD^plc?&hA^vlD&@39`OZ`M)nxnUt-_8p z>%LF=;FQy$Je_GJ(Vsf7dn~4MD2P-X&zw2Ql{fk6yTy_<^~O!}#ZLIyeEZQ?!tYTwd%V|yooV@P8pnMB-Nxm_uP;9*KYgu+xqFZ{q4H((R=#ceb}Wv`sAnQxk~ub zX7$Ti%$Yd)%TH!I62FZ#B^e3~3I~u}ANt~&aY7Xw6bk&{gZAR7{N8zzUm*G1gxs%2 z@5*TT-HPtPPXE%ms^$Wr{zQg%faxs*ro z&T#+bi2vby{q@u1v`6vBRQ~(o#+W?Lpg`})VE^Wn_~D*9ClKeycJ$0&^UY@b@yUc@ zEBoiCFCGldt7P`lZhA@=SvC`YR35K_GfplK)u%(Gcr2D|E8oeI|Ln2bu~g){Snk%B zY+E-=KqbSKIH`t3!=-BH#AfZ&h+Rh~font1w|U#Ze2R2Q^i?`R0000_bW%=J03SsG z850c%1TFq}yPh}3S`WTt{!imQPj07$cm3wk-R_$5 z>h1Bl$cDAN*j?7s`R(Y)^5>!b@9M6oF`YF401Z@0L_t(o!_=2~P}64`#}%vx^<2@_ zQD+=S>-mSa9Xr;}?96We-AR@(Nq$KKIWS2{LV`&k35Ep7!4U{afDjII05Kc^3W6Y) zvK%5%j&ca%0j;3cYim8W?HQ!?t-CfHJb3W^v2)D1aAGyaG?iLpzn=7Ur-xHL9tedH z_@p9LR8&j_3%sRptw>Gn?Cd;$9*ntel(*)vjMoPr#9z*RDbMbx?77aq-owt*vEcd15g$=0;4FI4>`+we{-N z^z^Aczyerm`kigR=;z2V7$`0d3JS_Y5{p$OB}s{iiIx4@T@mJZF%&Q?}dCRVaoOeTXtCelQ5i6fRmBr=#xR%K<2mJSVFnVg)g0ucxV3Ph2K3Qdmr20f|Jy_m6e;_4Ne@cYU$rYeJqNMs>Xcy_K*$i+l_fg`1c@v>bCU03tvGBJ>t;E7GQMe;d~V8;x}<7_QI{p8^Z7Q8K&Md14Sr8dABiKQVmOS;-MI)_y*^Te;c#4G zE*lcWU?rkSsm3yNE|*#x%b~N`Y&u_g)T~hGMpcLe8HdRsOE^pvxpxut-UmG3;HXMI z9umY#M3d^vkZW8TQ?;JY_KVIrYVI)Vih7#iuPl^rIwun5hDB~#XuE-b6e2?yl>-@~ zF_Tm(#;8?i)Tm9?SQ$G6PXgibY&JhiYcy)K-V|6m29zaOLI!x-*DW~ON)>@2E;ScQ zi1=Ab)o86*V^r(X%0*~|{!_sY@4k=6oR2Cl2N}U(g=k7koM82C_VM_ zB8SFeF=p9NA?a~p3!pXIp|12%8JTHj;Fz^pg6K?#++@;9+fkc@E(u)-wMVZ*-O}x} z7`5dYa)rgBE0-+?L9%hU*rNChofG_MGc(oBhB<}FA(7xBfW!2OK_o_uN;Bf)GadB} zPDz%j!)Yywj zTi4?3cIXjEc5;5zR_vwf1yTA8#Xz@FlBuha+w{dx8s8Vin4ntY3wOwXv-Sk;z+ zmMloFNV(8$1NVjLqoSj=1I`wcRN$!oGA=ZqLV|{Z79JfW^Nyeh@=0S|{c&;lFR|)! zZO7bzTmU=b++rWu%F`DV#8?I_YO8?9PbTG)9%Zz7y@q_+az|vsqluT2+LvvA5BZxC zm#MQf)RzNDxp{H-hhforQ_Wnxya$wQ=&A*xa}#sV$NzKj zr=J?n+Ktx9S5AGiuzyJQsnQv!27iJ#IaPd|}LyeUq+qvWvp;EO21NE@S zxVX93<0CKX>gpgsQ9Lq9A)-?bRnge=w12$j@z>)|8;ZCBsoB|}JNMTmuQsdpM`|t3 z4hevY9(vqv_}MdO>Sk)E+{Jh@jR+~Ckwb#qBQRc9*Z6QE$36WDKw0t*i#+$l(j$8x z&!MhIAY52gf_wbm-`xM^;!N9jBkly)w(v%Rj>H7F`{}n0_kSF0yX|)8RE6OLSq`<@ z%31bevueB4p>|26@i;1{@~nGg@WI0y-tThU?o?<=WPgiJce_XKJ(0xs{d3x#(4*u< z$7j{b(_+>y|1V%$dA3$9&yI=aariygrbnLNyLbESxI2{ydx9Y@OF?@hecCwjtE4C88&+FNYrQpA#VDb`^b zL4|HG8MJFR*mssQX~=Ge;jLr$Eq9k>O?KzXr7-6b8qMM`7}JvqDzwd-Srw#%#YqZN zMuT0)aBM3B9dzvqv-@ek?RihF&iWth`5}Rj`|v*RJ@4nsix!GA7k~I*ek|wlfueTy zEsy(vzsW*z?3ekOv78T~tia2ondF3IuikFi?1NqXBWWchh=}nb??R!|Lwe!qY>@0e zdrA~ZV0*8ZB)tfEk;vjL%47ywn;uO>4UtcKV3Yi;$dE>1#`ZCOXDlAlb%DXO0-9vV z67KB7iA=h!ey45W>Mo}?1E zF;NZ4&S+2Mr`3Nh^_{yo{MEvXnA&!|J$w$sj2FJVAf*RkNig0T!rdj7R^H!I*X}b0 zj>hTm$4DkM`{0{gv2T94@0M*h4k16!%;m-lo$rvGl8PpKK)k|uz5%Ix_g4eKz?uG* zOkfhRp4mHa^SiDRizN#|4+jtY~A zPOca**QW1%hTJgnqDF%V=9`(ERp6fOeU>$@EaPuBgq!nlW)e7^md`yyE zw3xvR~g}6Y#9}M~f0gl67*!A@Ob;np03I;Jysbw?!RoY4<(xClKWib&A4j#56PEjGA z=Qs|pCO|)K-DK9Is>-57$!6Jl)>=wP<-!eHa;3>cSR3_lI1FZvqIe!Y;x)CF3ey%= zeg10sl_xF#$^6y(o_pb0`}W%$OTD$G)!{e@<#5zkiS1W3L~Ye0dEI2GZ`%1T$x=xW iM3Wf~rm5opS^oksQ}jspsS*AF0000kh@<(t?|NsB@{r>s- z`_kRyTc*b6_x|nj?vd~R%;fLh`Ttaqs-wfwSedl*{r}VL^V0eMnZ?+;)8M=1^nlm) zr|SB~@&2&XV#%lHT``>iv%I|9QLDT$8GL)c9b!-A19qMyAR? zpu<0yxlOCjJB_SRrpRK!=1;KITeaD5#^`0c-gwUOQ?}e~&GA#Az+AiFSFqA*v(SU} z|A6TKJb;^V)PMPe-ujH?{z;In(B$w+nz?7j>`aHCaJ}4m*!pCu$FS=B)${&rp}2S8 z{;l5dVU?{4Jt=ko002C6QchFP=H%u6_T&K0(%bv}?h5|j`2PO>;uqgf`zZcT`{woj z_4}Is{^n))^yF@fd(_$V?ZJ}fsl3wp(b?`N4RaU(0DlRBNklpzod46w_;ZJ6mzuqH7`0HJm z-#SXAO0)hM_;gt*l~Vsrl&^gHa(^>hBsy(l)^2yo-|p&_{GWVN6#b-j@K15v*DWiZ#~&vI@$&CQ5t;q*FSQU%4mJJ0{0qEz#KFjpn(SsivW zUSrwrOrEk?PksiICt<<8BC7XAl`n&`$|0-c47<7GYO>mf%8I*@mJTLsfjBHkSA};) z`O9=)=Qyw5k-^h=Oh)&K=wmebSd*XA&+>@}Du2no$p2ncxle0|n?w6LPN5!#rJ~G7mSwj_wMn`opPYuW2@a!N z;on8g+p@sVMtkgSM;5!S$E_&K5RnQZhK+8Gj(h33(qd!r6Jk0~{fp=_Z6MT0#-MKx zb$_2mk9#b$A!0+Li1wVG*kqhp38Udf>X)Ks+Tc(PMnekfPGN$;Lqr{Q3LW15ey7G8zMTm=Yccc0cor#VJ=fxi`Jepq8^6M5EK*w zk6)2XM1WtCfzH^Ki4RO`QU1O!@wGh`h<~R0enCEAD)Jjp(qU&{=61m9o4)3M5?yw5 zbX?uv4~N6I?Y=har_;Abl>YPFac&NMj*n-WrjO4K4z{;Jkv^Pi-20(v4 z?^%|n$&RTA7;_vC3<=_JI?TMjK0W203Y((ReY?|ne(nL5l^$pWS=V({bzMR4yMJSZ z5Rr&J<6*bkodTK6>(f;u5A)gpHx3-mjq$V=d4C}s4d%}9JP@V6^ti>=-rimksJ3aptv7tpx*c!y z%2M}ZGDL`N&9L}2zY6 zX<;S$)I)Zhp&u+JdOOg>*T^VJr1VhuxeOwfyidAD;}K)7i)T@Wz%pAN7Jn~%QT~3y zpM+Tdjp)%phY$W1I4LX^Aur$8=F;Jh*=-3!oGmDOl zLb{FDB6?*0lW6o}X+#~g$$!{VAS!*6#cVJ#_QM>?F2*-2>VbMg6dOg>A`&Mxh5uS2 zq8n2zGJ*dHCK5zcOaYPh579*Go&`Oah{|P%sA37jV$h3tb?eo z&1Mj4Bn(|eP-RyT1b>OVu!J!pNhXk-<2gP+q=7pokZ@Zpycvl8s?R*ngP=vH_V){4^7Ht`TXtONKC>wP$*%M(=+}U1nV`6^MsKK-b96Aawwmz&` zE)55Xi?9!T@su5jOm{3C`(z1#&65dM&UHV9DmoMB4{TE3XIGb6r;&^~e8Bp|ss?8lR-)9M!oQxzLX@J!aWLEQ^;fn8qT247rHMEp zl1%Oql4+B_%Tp0>F39DhCF}_zFOgaT!6Zc@MR*WK4T;03@wjFnAnY!yOVXin{9vQ= z^|t1^y?@4ovCUw^)*tjKhJ>&*gJ>eaKF3o9B&Z1+A}s?OExOZMZ?xv~=M^2z=5&AO z2PQ~54MeUA(TEYZ3O20TU4Vufq~qq+@0x_0|ZXU@tge3SOA?^(fZ2T!GimNCj-G5}wFf60_>;)TwNN1Q2%+ueudF68zTX8n!v*NWE7A3Y$uSS zZm$}F2Zu3`{S?4x2K^ZNq;9(X@VyQ?l z9a<5ad|dhktvt%*FR#~97dA%Y>?!n3D9ZS0M0ZKh5F8NE!912pL1C6jR*9#c`jrSw z=Lw9t6A0{D^lzg*%C;^ogw6nX}05_J2aR ztnFl#cwB34s2D4xoOeV({`^Y7NYbr|V`pBoHBatYFUyWaJeG?7@5&!@I literal 4454 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 diff --git a/public/images/emoji/apple/gloves.png b/public/images/emoji/apple/gloves.png index 3d7cb66e4d2424a9696119918f1f1649f1207295..fdc3fb2b944d16c42494f678153ba106b3ff98a2 100644 GIT binary patch delta 1458 zcmV;j1x@;p9K#EcBYyyFP)t-sM{rCxynHULaS(A$CYWR#f>#S*LNm8`9fDUTk6jLP zPY-WQH@|*6!GS56V+>8s$N zsLRZNR}@nK00i_&L_t(|UcK1sa;iua1>m4UgV9|2eg!n||BkcvZW2$;On{S_IxEET z4_~d_q#^qB$I_pgrfK{C?p(}xyXnghrBich4&36PZd{rgy<@qgHL{eGe0few1S0aDjf53@?f1$S=uF?}PAmRQ!t;A}wl{B~9gRDyHv zeA>4%st!br5I`YJ+EmB}cNgN??4cUNr(gQ!0ohMz@X7GFJH~sdkbN68NW+jI2-FxH z`YzXUD=1!G2#}z&N#NkELLkNTxzvd#3+)yJg@jTe3Ls;w8fzov zwkJbcnyC~VWubtn`WH|O36IHK=(cW<0tPz|s()4*DS!s=kmq(2T8zqlK`c?B5(rA- z{c_k1G4qhPkV~EAmtvZ}BDmy@y+l}h56JnfaIlJSt^|6r7wsyaj0xt*mn{ z9)G{xBIOg|REMt|oZ{x`%PF*Z@Avk5s4g-qOBjM={eWf^ILUi=zu&*9)YL``@ee3v zK-IBfc5xMA=~n~c7f5P}EH=)83dL_mdts;objV+`C~%7%X3vGr{Wp*m6}jz0 z+OI$s(y}8ce+NskDb97Uwg29_WGx_){*^+ZY49}Inu8qDL{h1%^be@eV4)7Sez!dh zQ(eJFibW z@_rjN8AfNLw8~1V%vZ}joPO5_zJJ?DPc5mz6qQRBMc^oQ^5pn1AK`4L#S)F6>f=z+ z%}`h&Y_ZmplWoFqGoa_)pG6xi5kJ?B)G}ua2^3xXNQHLR z;fqF$(He&+vgA4!ZF<@nhrLe!egmY8F)FKE5I`tIo7FoPcSEPE$>@V0S$}lN^?F%` z0-)#9?nWSS#iXfkZE-Idz*=weFNVk%x{da;6_;9ddjPd6iU6C6^S zaL`7hwRX;RzX$n18^N>Z9p6-jApi>PZ$W)`d_6x0gs~5Jkmums+vx{iJ$2pd+p|X{ zP?ULPtv9unv^QYjJfI^3KP$wj8!$lIA7r*QbUUJ3`+t39_w=Xo7v-wuq>Bh+Hvj+t M07*qoM6N<$g5h(Z!~g&Q literal 3600 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 M07*qoM6N<$f?qKKB>(^b diff --git a/public/images/emoji/apple/goggles.png b/public/images/emoji/apple/goggles.png index 44a81f8388fe7eeebe3f5933aa672d0032762494..afdc4486491f73821c96057cd5481363d4ff7836 100644 GIT binary patch delta 2184 zcmV;32zU4S8Iuu^BYy!lqm+1kIu!{z1W;o;%x>FMX^ z=k4w7$j#04^z`%d^Xu#DEiElHH8n9ZGx78D=j!V7^YgB@w$0PiEG{j>#l^Y3z2W5K zw!XhNH#efFsLRjKDJdyJMn*wIMD+Fb+uz?UE-t03tIX2UIe$4hxV*fRnVB*&GC4Up z#K_2pjg76bvK}5D_4W0DgoW7K+cq{f!^+EXc6Qp{-Y+jOH8nM3W@gRO(v_N;Woc=E zgoKfom#wj}yTHMyu(06b;;ON-+uz?QDJi6@t7~s>>+bHLrlvYNI@#UbBO@d5^75>; zwW6n|>FMq3?tkv;>+8qL%Fxr(JwQO~?d?fVPjYp3Szll&D=Se`Q%qA+>+bH9o12A; zi&a@!h?A3(ot>krtD2*uxWB-$xw*f_#;UTi(bm>HJUoDjiCki0ae8_nARygTDzpFq z0Ah4fPE!C=YIaa{a!pJ`SY!Tzdt8Yl7XJHk?->j5?|=N2Q^~je12d5PJ)xxE((?V% z*SX5GiORUTna6>iY*K^CgXgB>ue+YJkKFRk;)?O(?X5lA2);93-G!z6o94@C?#twS z!}=La-~a#ykV!;ARCr$PmibrON*jQKSY$~NNXix{>G=`v$iq@*7?UR%76Q6)PPa^)B0D`8d1Q0c;)vom*#>;%tL?1tX>{q?37GKm; zx;r=lo~DJ$OJGsJ=j~61X?~Dc(ood{@M|~6e}BQr$#$uFT}x2DAmH;RYMxvlMDv4Z zF$HS}^Z6W1CkOgQE_l2sX@+RR8(iJHghw0aFNhv}(}u9^Yme8?Y@=-)lArTVWtNIcg!HpzF; zPk-nQK8pIHLs8mx2ZQk!2@Vf{dhC^;sK@C&eaZ;!V-8C1eKQr-Nu{!}ugzxj`}gnv zTLKz(c6J)ESS$;q{H@0Kd(D+NFm}7vuOY!-Efkdmc26h$b1=wie0^l!_-K4>Gzx`+ z-isGesqjTx(!DOa?o)v#il+ApJ52y4-GANPJvurn#EzhnjX_b!HlV2xD;#M}1?Zx6 z1D{BQzaa6uYh$nbafXn7w(FI5Pt@xXCYfyS?=vL150GtUf4@zVOu1e+dsWJ*LwXoM za@U9ti3Y2=a~frnn!x&qtzL;l%8^K?94VJ0on!>)cJ-#N&1SP2fU29~@G_FC-G6(K z()D$O8&zY8(IxY#|?%AMa$=2*i98X&UAV$9vmxQ2Mf;|D^X{jO`8=1ybK z3Wq{r?O!jAkKZWuCVwWANe$r9HGdLLm_)1f5!cQN{^;j6kWrY_w z016f=fLRKh3C~L~OM0i$zTt!kyR97!>XzsD>G<}iN-J8AL%=Vj{fBKc`9x0@t0VTI*s zc0A@}rDYu2^R&R;Oj%_j6`hXP*Z?dR%jTxbv0 zr?055n#gHJ^dcNnvj_*UJ36RH(7zB95|d4l{S^&(49(WodzTS0;OL?vO z0neHlj_z561K2?%(S#i_DZ|oGtG-98sbj=rhNEj1B2tzJ;v6xlW2hvz9rhQS19VA} z?Bw6)w*a>V`aI#d%6~`_PCpmfa8(k+PKTjc3a1#76iFVAK$JJaF-2ujk?_+1Vq&Lh zNtBZy0?kqi7G+cxMHEHP@@}VN+2hQ}l86;AOiwT{Bor}}u{ta(2djvp3Ok(&vKp#5 zR?eZLJq#%_5ka02Cozc+72CEAQ)75!mK7$f!18kI%CYQWGJi$CpyF3cA}c0yVzHRD zty`YuPEr;p9Q~tB_T&jK4onlAGdq*&kb+=rk;yr&PQ*;7IM}yB@;rLTki-h7t^g9h z+>%*A`g!bFU_WkTN68S!VaXt}L>=QMa;h`Rw6g7PrQ+^($d)X!Xzvoy`9Sl6m~KRD zS65e7E7KT|oquG8pUIF#%LGm_c$uWgQ85Fg$l@@BO00};E*3w+1wrInnN%#6N~Oq7 zr=3!!JXU`3)AGEB&t^&(6vg7V;&3=b`H6(P%$d$`j+MeKkO1v$Hq72|SkZ^95j-5&0RABYy(`P)t-sM{rE!gDC-=;-L|?CkFE z@8#v?^78Wb_V&@%*7f!E#mdStEHU)-^z!oZ>+9>=-{0fo-u zDk>}U^YiTM>(<=d!o|h(^z`TH>GSjRH8wVJb#@{kAUQcX$$!qy&D7MqzrQRkE%^8M z?(XiZv9j*&?#Ry0D=RDU@$on~IA&^U(%IQHH8n3UFVpAewYj-4FfgvQwJIws!NbF( zsjB7W<*u@_Dk>`S^YgX6y;@sa;^N|kiHgwE)A#rH&(qVy#>VXJ?W3ru%+k^&B_&o| zTr4duH8nLaFn=)0%*@%|-nF>6$ji&LxVYHc+sn|<@bU4fudg{dIj^&`l9rdKudjT7 zfUdN(pQWYL+1c6K+uGjVrm(Q4sj0iazqGo#zQx5$P*B3k$}1}?U1Vf5G&DOqJ2o~p z+uq*5!^6qU&6b**rmL&V(9!7X>Y}Kq>g?>YxVS7VEPpC0D)sgCDl01}C@4WgLs(i{ z?CWW@$rn2k>%#*#K_3-^76pM#5FZF=jrLy*Vn7Fv!<=BtFyDL zu&~I>%Rxg!Xl-p)TwJEEuE)vACnqQF@$uQ*-0ADS^7ZvhO-*}$f3>-}xxBrChKJVJ*qEN47#J9Gbaircbd;HyZgO&ynVFoTq8uC? zfP;hc^Ybz?GSb!6Iy*bQz`*eG^5Ej)?C|i3kAII?TwEa`A&8KXa(8$_Lqos9!ghOm zi<6T^N=gzE65r+JWNB$^adAC9K07-*mYtoKprF3P!{X)TtFp4Wz`!>+II+38hmVgj zF)`BD*MW$Lo1~-duniSMM+7Xsi`|*@jw6o0N->{PE!C*by-tTRZUbyU`uq1c8C50fo)#?NL>G9 zamf{WLUV0|{(e@+3(@^_@g#E^ro-xfeg>O zc0|D|xuU5_riRX!+Yt1=Jnin&vxmt#EME4tW;X5qnDze2!m#Avd!(iA>VU+X=^^dX zPO0hJ#DC+XR*yy~{hfX4e)Z|CRa?!0n#;QJFuN(le}2!F{* zL_t(o!|j)MR1;es#{(ihiG)xR0|d~35CU02mKHFNB2{|l2*{J(ks?(A^@$=N&E62j z-qwb__pYzMbr(VkiAhK#g{rd(QejH#eENGoShX?)}|6Hz?Fs{Xa<4 zlxS^XVNDGBazv1|y-8KhQ#&)8V1FAMGrO!1SK@yNFs*l{nN+Q_vpF7<+X>Xw)z#DU z_U+s9iX3~*&)z|_pwaB@?Om6fKw1ucg;Z_HS!ZWV%~Ly?yttJj-G##n~jM zvLg8L;~1dau3Shlxw)e^!jMjI&=nJGW(Q;z90P;;`T|@hVQ5(aJKwznZGSyIY5eMH#D?zyq|({-VOEj?W|mBVo$RGLu>8qOe7MWt-&yZBWGg$XNFo+aks_k zA0A9tTE26r@9b$;(=SLWRDaOQ2Yn`E4lDbHDqO!XJyE6?hO)*C{qW#|^OxtT{n?7q zSWXY!{4Y4Dpqu4u;UD!CXYJt=&a`c-7Xhu_Mgw!H-qdt*A8UdP2h(iyqD8CiX`_$- zd--aGwVgM?2(107F#IZoLb-bNN_fi(zrw-|w{G3~>m=R2ecRLX`+s(Q{S_`i;a6hM z-M$3PHv51@Feqea2)pH8R?Gu((Faw$OFKAqZN=rg zTfsp*@CD=F5w*O2-Oa`h@^3zG0K?o$8Isiz z+k~|AOn3KvneLgH?ny=N>FH@jN#Imkdd(4K#Whyu7>rR(Du07jP3n>&|ild?|TsT@NP`OeU zu`#vf+_m_^{5Jq}h{r1F>FK?_7zJ?3YMLEIy7D#b@ye5*(j} zBam1G9FD+ZkwG0rBI8)3HaE9T*n5`?!xm>|2>61|9)Gj7sCv8XL7qH2qbQ-BLSix5 z@?HiIs0P8OyIb7N5JNR6(D7h516IF0lHi7m^GrCHAr|s@KSNWV_K%N)$=SJw?(uPK zarejMr6o;G&G+v$H#Ijm|JLN>m^ zTFu7${nCs;X|fw#2NRdv+VbQfrA&zfZkWMI7SiFh!1_`?WO z9;aB@wq*ng0(%F$nWct?X!H!El$4aFPoJ*xjeqL2X|n-jzP8@1Sq28i#>QG&T5}hu zT^>{Id^=`GM@M(TVr>`$Q#3RTbkKPGv|{YXs6k$K_BI%F z=6_s?7>8v?)p$&CgRlcfrNGRctD&x;Hyw|jfyS>PB(u1TxFu8=L57`G%iH1?+$fv@`&A)FIAXHAJSNJ-kF*7SfSsw1hCg zd}fG7b~2oT08`@?8hT6v0(pBIsNfMPg1-I>7l0ZOj^?!Sxg5%Fydse&>;N|nzJHPI z0p^Kn4eweFT{Iq!Z@@?!8D&fit8V=4`KQ`u|cYnYvPb7$>gF=B+$dhAZ=NKXr7Hvr1nCRHcC+(Q@ zUeA|c#hivjmm||5j$)o$TKb4MJTdNNnO8AZ(9cZSG42VCHoQ&`KNecj%gWn63ADX~ zFOWqXOHA=o)`9#$oSJ6~xl&=C8WrX6sMc31lpQ`YzD`{~a;K%#zd$T@^M9YR(};Fs z2t=vJO6yWwjwYNud9r3-Xsk#k#TM^T#I6@5@8!fD$e*)g$By0kOWIRHYyIn5M?{+% zr)+Z0%~%%P{@=w)rIS?2v1Gjd@Si`I6F|j zKmC&p`}tzh`}gdtsiBE4UVofAb?V6pa;t#bwtKvtT1{d|BOPPIH->t7ZGPs`;wTMd z>`%P$>Bg(^rKFYDAIYKA)kPHe${52ua+?|=cxp9^Es(Z4I>p8|Eggttck{4rNjE;X zg*#K*hU0cKgmQUnFK=X+&AO;IshwKeMqmsJz&lOe-z^r3NEdhit8afud%Q1p5SX$7 zFemt%E~-D8((ItR>p6}fW3vZjSbp(KZR)?-SW;&il>Yr`bVE>cG#n)UcCmi z*Dlzz>d!W*tEg1!s#Sl|?(p>w@K=4+SN+fG4}%ixvM54={{R3007*qoM6N<$f>~tX AmjD0& diff --git a/public/images/emoji/apple/golf.png b/public/images/emoji/apple/golf.png index c98a2b22761416521a43e08fa8efe851c238c67d..bfb5aa0f9bf8332c3f89ff8529c526e6d18cc6b6 100644 GIT binary patch delta 1595 zcmV-B2E_T26Uz*cBYy#mP)t-sM{rE}SWo!WF*Z^oY)T-Rd`#z>mp^tj>%2)_TRVxk zOEO<6D^w%RLOlA_H7GL|!73myT_-6AQGCHnDpDiKCm$_OByg!q zl-*P^UnzOKPDX+{LwPttdNqQ;P@UaWd9_g8Cm=OuEBHY?)qfutdbm!0zfk1JFwwal zvn(Tgzf6e9P~=})pXXQDP(Ab`9M;-Iv@a&|NkW(4R`w+xT$@MqZbzdkAc4tJbFfAJ z;R*WK3G~)0@76ABw=!OFL=24K#M02`9ONl&hwmwga zDTBs8pWaJRkuinTN=AP#iMl*npF~h%BxZ#thnPQKb|G|{D6O(J?8zbhB_6*wEWj-z z{4FE5GAREZ80;q=$toe=C?2sdCEz(M{^JzXC?EOB7k}}$8UO1UzC}3tO(e-wEdRI; z_PinRbO=ZQ002UCQchC<)QK+(79jpy1uK75G>H^Tj^*vdL9*s*a79_|ugCGfmTuF5 z&Cl$mr&T|i=d0Mu{CByIo52*NF#rGrEJ;K`RCr$O)Jsn?F%$;i z5nE#?seg7+CYi8PCJZ160U^XMQNLew+RmMe*FSDMN@OYR#EtXr`{Zp-&hh?s2x`c= ze;79cjkj+%eiMc6UaHp_WsFfwT%fZPRf*?~QfeMe7;=S#hO(@XoHYQcVk66Pf}J1< zrjdaXP7eTL1F5XY%d!-UaQ_^I)8iqip+r{_34do8Axy*7fF29wpz{SKLdqzPqdBOV zcQlj&m`1WRm1Mrj(lmu7wu0ajO7;-wkJ&+B#%3e~0Su;|4P>O^08-kqg|hEPm0D8I z7BXMcV@rg{^Js=Gmo}{{<%@ru^GV3C&5A$`%~x^APA?Hc#O|74bB}l&QdDo2!%6C_ zcYnKcBe>?`Y5T4r_jK%`<{Pz83w3@4YM~Ztp+^mkT@gYE`fnhjV+CN}@Aj_xqhS!- zuD84EAQ+DN{a&x@WAsx5e-u})t!aZ%9519rYy>f*RlHtW3N53hFeroVO|Hf!CK`># z#H3yttG4?9WBcy=pU13jrMs{<`x(v?#eeh5|2)BX)Vw(UkS~w@(P%Ur4oUQGH1hq~ zU=Up9tJU+<68EQg`$x^2lk#{xCIdXa9>;GXdWz#X(DeZbT-Sx}qI8h{b(HH9IGBb! z!%^_KTCJF9wb?wvL+DeNkw0%9zNR@O%K|tHf0z(&9v&W^AX;O6M5KUZ!6cdha(^9P zrC(}p%HxGYxQ;W!Of;A8>+99#>GP+r>(v^g0V>l;1fYs0?q&5S)xkAsT({@;90$jE z2FVP^Y&OurAXz~$ooIwfG7UcWcsJnDi4To!LjjN7>-C%|HPd~9MW+QTB=IB?nMT_Y z<(rA;Dw&Ebzy=*)Pp8v>(8+)|wtplmvM9=;W|}ZX%o0KR@sxQ=<%Pr2^cc1zbvmLX zN`weHWR?ItstHsqZPQc`429~lMEg^9Z7Gs$d>aNk&kGFp};fIQb7X+Vt<#G&<;CSRfHfY8F}ztK_I5t(ZB7_L(8&+Lh?)HYhDPINPD8FxI7A$XVi9ERZ&RN z$3aWKe|L9xZ-FlDbOP6?d4FJuTMMXDO;Fg2wt@on36=$t`xMcwWPW@=rMZSs3*idq zbAv`eD@c+6mIf(6e@>EaH)W+#LZz79dqFnSsMoA8#L%d7g0B93SLQScpb%YF-kjw! zu)Ic=%kXs}Wj*ubX?F)46+Xjd_kQ;r-zQtHawZ5uikee^hM;x;MKrDe$6r6V(^-xy tW(ozK&k;P&7Ydmo$7TQJzXU!1fp5o70PC)e)`kE8002ovPDHLkV1h12=cE7t delta 2441 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 delta 2553 zcmVlj^=k zkUu|~MmYD_RO!N5ZY49StEpK!I@+m1$&Wv)tcK8%H?ys)v45CXoQOx6nVF4`j;^z^ ziHV5Dk~rtQNn2W2%$GWIb9CISLc)?e(wjVX$JO%DRO-P~m^-~*U3`0az>hg{adE|y zIlqiIOHEMs)PGUWmpE%`ZpOi~)~!iUd3^i!;L)aBu7fgTl#GRoiX#&l&zU;Pwt3CX z$G*S1(9+F^GB4VzLXeV>!+SifKs@)?Q|`x0OglNdQ&FUhiGyBUQ6LPZsE=8iTvU>JU5`CM zAr20MhH1ve!NbG9v$L|?B~#8v$r;JgWcA^ijrcjZ$UwHs(~;pe0+R`FfDR&a&>fc->pE>pE`{* zFxR3xet#?}i83yiH#B#5ckIJSr9L@nX=#Osh`L5Wz>YY@l{@6LLXtHxZf#0L^q#PE!C5N%{jE7Xb$g`y&4S6KX^v{{G?fD4P9) zp)g=>SI`G>5z?Y5{z?A+g{n6FShrDfeRurO8=*^8h+IA8wd&@m_oZ8Jkk>q0!hx~v z$S=&<>D}XswDtS(;zn$Fmi*i1(#lcsM}OVP;y38A(XZ>CR_4f%gmvgH%Fm2~W%Ppm z{r>5c&AZ~pwDQf6hqwICZQtj~#OS`pj_5|X-2eao|NsC0|NsC0|NsC0|NsC0|NsC0 z|NsC0|NsC0|NsC0|NsC0|NsC0|NsB~zLhF9000H#Nkl2Fuiw25 zoF(KYzVJyZ zT56)~NSF*yA|7p9-FEHT3j8|o^na}@6bi*;l3`omN$EIeW9AeRLI^yqH^@wYqbXnn zK!c98HQwtVsHbG0h|5nVOlC3|WO{Q!m@6cQ`c>PXfA`;vkuiY=PZ?h$lL0}P5rYlW zp>O`U*WW{XTvQZHa$Rb`jAm?EHn{dayHU~e&)os7 zP{-%%!U<4{g6lOjh8bgk9HD5yiBkjJ9(Nx-=4;Hl32?Dat=BVFGBJ9#l}dZq7hSsX z&J(@C%!gA%+-@phWH2$B7k_@2*3)w9WM5Hfw@hZ{FM|qp#8N{+*c2v)c_IWi^8D7; zRtc*&+AP!4bZ$Bii{={VtP=| zhL&@{)asm^%9A&GwAzU#_W%Rag8){huH|)K?f>O_>dzOi#Y*uz1GS(5=WxUv zvEWnfGHb_r`-~q0Ie(SNZ=B1KC;hpiA1bv_J3N#dy;>;LliorwiXYy zRglP@AYgIJM>`bdHoG<-Prfx}tj!^I7mZVOEjZ*j($8|=u+MJO6Lzb*zWm$)Xm{VQ zU@(GEH#C42u^S?Ux~RG9NR)%k|MkX_^6KAudoSYFyC=kMUYB%L9duAl>5U~N9%Yv* z@&;{dguO-HOMjLebZ{0xr#F^dC_i73SFBPM1B;(wcU7p1qnzQMd6ZS>6|+@rwhF+; z+kc*!h2=stMgPoNL>8LKAlj$AoCP7{ z%6-pQ_kXWLkQvd@14+7h+0KF@#&&o26agXB1PxuM&?Rqi668AeN?j=qLW04+LZNW? zM4bdR0RaB#LCmP5D-?3)NdJL6t($iSldh10!T#oK{D&gWxD&*&ohG8yd*$M+JErl+7w9G%q9TZ_N>%h{1(bBmYA#U z%a3|Pfzs+O)048FFLtlR7Rz7lztmK%hXMs;mKH4}zj)Ny5Oei*XI0e!sO(Y0O5GRQ zeCCCmy?eW+3Q`fWlCD_eW|PacQ*qFnaG=TV^2N4C*;l4E*HoR^377vV?v^#fK_J#& zz;b0RV&(6vR*f14x>-~6SttxA<-0pq+uOgl1+BVY)43N)(AozN0O+tyqEimv@9cz% zHG#ZG`lz}2Yn!tp;p3Z~dqd#bmK+!q6g0=S^hkjRyq%aO_I8E;KkoetwA;kj&oEy4 P00000NkvXXu0mjfx@{Vq diff --git a/public/images/emoji/apple/gorilla.png b/public/images/emoji/apple/gorilla.png index f7fbc92b0fd9f0ebbed129bb5d8b1ce505003545..fc4cd31fa7fd680084754585303778fa01423810 100644 GIT binary patch delta 1824 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%0D3J=i1GE*{6A2UU3W)GwbuXu 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 Yu7i%rtC16z>t_p~1=WXCsoKB$A7sb6q5uE@ diff --git a/public/images/emoji/apple/grapes.png b/public/images/emoji/apple/grapes.png index 5e2bd2b5683ce8cb4db72df68875e4e7145498f1..a4db603beb47c2a3711387218c43fbd12c75e167 100644 GIT binary patch delta 3295 zcmV<53?TEeA>tX3BYy$lP)t-sM{rEhjkU!%;_n7dHKVu`YLma9Brtw?ULIcJuwTcR;otY?wDQF?8UG{S0% zz)yg!*IQ_YGo@dTxkqrvV2ppEMW$qtrdWHoHfgKWT&-z~u76W-QE4Q!Y^1wso0Ugy zq|#Q1EJ4a@jb?r`qs&!FI?q*)icmnH zT6m0HLepK5tJhkT!cC^OUxZq2dZIm(6-0{}M2-zPi3Tx|D_DRcOPU%rZiy=?MHg=;FNtF#erX^N;EK{H+TBFmEHK{3J zvpH~n6+CVQC8RQ6kV9{qIcdB>cbo`3jwVL6QGVBVp?|14Y1UYiawkk@6E=@HY2;6s z=#964GF!k=gS#qdggs=E1~u46jmc}1S`{|qaHp(6a@S{?+J~u>zeOmim2+=@ZavV;`;BWYTM7Y zvW>~N>iXE|#`sY9ast3TsJ3K~#8Nt(Rqc99I&B2Q@RY7%a(>LB=>SByrHe zO?I1kn3X71}sLTI(c=sOx z-5mJo>OTUy_6Cq%J3Kfzd|Chhg0!<=d%Z!&_4nrt4okTKaiu8$do&Xd3pU(`pU+cbaYgqb>nx zI)97Le@37nbmW@Q>eOT7c z-KoRF8bDn)-eK`y4*W$@*PM=^!|BXNOn;&9I$6q4hlfD~Vu%0tmTnFJ>5H2;@7}$7 z^~aq!R6fQsF5m#D(QFocHjgVjs~sL5Hk`kukFUUVAMGFP@9!U+3#x!NOCzx9;ff z!8L{c%i|XZAN_vPJTW$scDLJYC0%2Kb^zt@yu;ye`XU&|K}Q6md}~KP4m=rB=&yYU zO#!N!5*j#;v*Uw$-DjnYyXf>n7=M74Y!QsWTm(6#f1BNYcyavI5KQuK#u>bpSIOFi1M$&go z-rH&IwX#76fI`p{Ax*q(-Cqpc)ZagTa#=GLDE@N%0#LthEG~97;91W%w|~9f*3!}| zP>3Z+=;&=K`U=Loe>@(K3B{ZpP%pEK+e^oU5wu z3-I@yppOBY;$8s3G_u9Q7=K?_S*aDAHV-tk9ARy!!ge4Cp!XP&`ATv?^cW}%6={4D9V z;{q=T3=BqMEH>S}q1R&-)@lp+nvfj~;kj|A;4Bmh@p6m}p#;dd?SDxeToztmCs|Bl zhjp*drt9B00uVYL`Do*@7(- z&$o9syy(UVyI29-#N3&kN%1^Sp$H%d5(NODkcTCy5e6E@)IXoc!1D!GJlD>c=X;QL@JdKiX)*ofh5)^x+A>5P^fiY-G-|^1}nzB8y(2& zytxQJW^*woN#EVnd}en;m4GFY;V>x)&?qt1wWyJHJbSwBjtXt5ky2$_t=$!e4@Xbh z?e?72e&vTD?R&9CG6y39iEy!GgIFh|M%QraYM}$i4;sz}(SNpC5ar&UECRHcdAr>@ zcK`Ud(b4fdX6LX>DaT=qD->yvaDLKs*De3;itGh20J?laSZt@cxw+!Z$1rQDLBpAc zZ+!A7;#&oqv8=U(r^*qN$rUM+1b{}m^_WEx-USZ2e2^Pb<#xg8bowxo)Rz|%R9j>vgu3_ z{-ha?0I1FiAd2oC=^huL+U*ntlEK38f9%F~E!)Y;EwDHTVU02bKynlbu~-CMzYL$t zN!^!;VKQE>rbNm}CyN|`iWcK5EjfH3d$1hitabMGT7N6xUepMV3k(|q5S8On-8$0U z<0;B$q|IhHXbuXu7|Vxydk{qOn~0Tn*0Qkuf-et^)R_jlj$C0` zKX1?FI2@;<$y8H*5+xde@%cin2E&&lsF85Pjv6PW@tHyGYwll0kgcuxd9Y`#imcDzi0jrj69t=kskVl8;v7JduwZGZZySBDg>Gki}Y>{gEl#~Q_-~h4)7AzKHls2Q? zNZ-7KRTq4QFg zS%0?K^0D^eW(`0lSJz9pZqg5=6_oS&7|&uypb-Q2)*NU(zCu2N?l|U? zuF;-7^P@`aRI4eTHjC9nWesYflCYT5Zhv)ZA~A^~B~sOe zDAb(U4BnxQbTLO_&caHowb?wqxLJXNXnUkpbS()u2nDp}LUefnN;D?<$qJm-vVSqX z1t5ztiF4qU=HX#;=k(?dHFDC~_*ZDI1EvS+(xv_fYn4hOQCYCWW(>2{N@YO=P#Osx z$Kk@r)=Bc|H)?98vqwkia@)kg#K2Yk_Feg;PKcm%;ftF}$PIe3;wc{yNJlIzT znUlheso6nI7fP${@9*zZ8W40+Mt=?(6k3r6k{AUO8f8tjs}wI%;5!_1x$1Swh+`p- zZS~GHIHEhWDSrvKRan!~rHvCr<54(|-X$U^sWl z+Bj)P02B%h>dyh``!B)P7ZN={Lm;EM(u)KECZs4{KstQ|s-OP_TKoQ`o@a@wzX#+1 zRe3OSyLSyxFmF|~&m*CVsZ$WERGe2zAOXt%0m!50)`(U~ReO6YNNA$not{tIlL4M( z5vbm$IJY$Y?_a-utIwd-D1S8uonjEIQw5M{w7cicX-KUAkW2_PqBy_wT8-wf@dvBm zLUem2!GLp6pm?5VL!r70I=Vn96X0hM7f8UIjzXce%OF;BA&~Yu?A&6JQRe9B+9_y> zslQ1`=L#YrlVsNN+8WZUDDphRtMwNGK~Bg@5Yh7wCeg0|0w3SgDOfI8eV_(FK_x~E zBfZdIwVFuWGbk=vdi50N4X8Asu)v!#=9Hre9rowMhem%WlMBQx2A{j002e^*ud(aga3~-l>Zc|pdSnXPy#HV z)`mub&^Q@`PRFP>X-)5I$JPlmuX8(b=kG}S2SW}ihaY!_A`1GSwanBEbUew)?|gut zcOOit#F_c!*o42ujW)YR<*VBbJj&|vO2KKk5F#6%Nkf~=1BmHuo$zR{7_Bm=lnNua z=ctq#L*I^h|FN{@HpfV;60GE5SbsuUdqP(6kYn3C$}`ju^+c-%Q(TP7#63za_sT4} z?-Qf}pNXhyTR?R$2N0G6o@5yLL}~fNYt?%eHV4<%qD$L?it0RK=8;82m+UGH*A!(_ zbh=)*OIoKvKtcty*yQ0*VCM5-XM$^jSF}cC9wZIy8S~Ju*)4C;zhct6s2Bu~x^M9G zp;3sqdU0lOQyDs{&?uuGRyN|4jkhsHO2k({)9tL&J54QIBx{tMpUc`r-BAtZl8aM$ z7%yX%3$hCp2S+L+(j-ljcvXwU&C-SR6Exj&q%0d%+`|O5!@2JUf?#oXRHE*}LS?Nw zbRM;+d*z#i70Fm*l^>?d!k&qM9}DS5h#182Yo=RZLX;7OBH%btqw2d3p4@WLT%d9( zt0)PR1bMq`A%hZmhZF&w$Gj^3oH7~U$7o4tjwmEh?0&L{QHFw@3x|XcP%jzc7b~or zB&^q>9nf|^cmxvDYZ>b!ZIYnpm8#)V0dmaX*9yC%ieeM<;Z>~H@=Z~4bmvzuQ+26Q z_bk))?7xqJu?V;c>lUgzIj{%~1YnC*-QPJBbs858gh4012-%49a&%O40EuQn5}_vaZtcB?c6{ge5!j zYh){$5$qGDqj8%RBQ2(3xz@KU3dQI@lrc*3fVwNnR|lgW+Q}ET+BrQ^$U(T^ay(FOYFiXHsQ*>s0&Qgm16-Dy ziEwCA(O+`<`hkkMF7NlBfK#@^?bjR5W)eCa4;Np3wYCpD+KLyI?w}vWlJV=mE=xc9 zCK;|b|0azswEp~hICE;aclx1Sdpx7{@a32B|9+p6$f+IYdy9mo$%4JItN*XK)J@o{ z2LKq{AO`oW?Z%q(!z^+_ZWC!MA+P8j?l38u26f!NaUpk=^x|O~6o`1>EQFo<}fJT3Pz=muJuM$j0CE*|jd)HDwj`)ztSu zWE&^_?}H<@bw=70u1U;JRx7AybmLp~AS0u?BBHJx*_Mlzhvm1BcH(hlo+u}VH?TUV zED9xW!hOFNsX1Ojv^idAMM?{4fK1|WA{B@8!bFZk_x`7=2W9LDPjx>B0--Epo4Oxb zRfx5Y#&U-@Rc}WrZglsbTT2Ogd*lF8({;T2jcijv%#Eqw-R{L1KFOFOBZP4Xh+`#f=66=1DsHvX`X0vnlAJW}s^tVll#ZOyV>gRK^ z2YuUUs30{gE}job5tcrMm(w=JGwS>J*yIIC@1QezhyGh@scXxp*ZKq zkazY92vx4GWwW|J+(aq69q(&gaWk?VevZyuqY3S6psC>N$}>%0-@hT?>t-E~f9wnR z=mMP-3A=ZTpZNRt5@Y!JtDIR1N*g@9i*$RMs?P)!{sHs&1hH&)4P1=Sp0xPU38&)q$lLplnS}CtL8(<$j(P-F5Qy zFQVN0aCJRD&Cn3!maOkwdnDxsjKQ>~*@m==_!s4w=F)m|ZEI^!xx}y(ioG(R=Drg) z-Y2LM?iY-tiLttC=GhH5x3Uz_2+ZCQpgn9Kh>>nQJp}tIr;OpU4I7!fNm6tU!EL(_ zIop;5=WGT)AU+`>Gh5LF!N&OyD=Wy(Td1HmWcrrxtuir-2B2GQz5aMIgVCTPkN3e_ zH9+5Tt0|x=PY$t5m2Jhw(l*4FPRbu996&^n8`GL0||FHDaEq+SS3=H6PYCn(jB zVrTGqm0|z!E>pYnNXLiVK`bQLT$SX43$qbiUEmg^E(P?_Wom zhON(iAmH)smS~E(mQtJLJzg%<-iuU->>)fDJHgJX^^+88kf1tcU`wID2~&GFE~?3Z zZ2r~zV=Y*}%JqTnm@a0;O)bv?c7Uc}VWyIG{SL$ub9`z37RNx+$E)X1^1`!z=4Q3k zDoP*#&9^GCFVELj5kw7#R-a}h#Rj;8O&VjGX7BgjbJJItDx0p7_k}n5F!mKPZ{Xv3 zaQJRb+I3TAs?Gd3=j)WTYcU?G*0fHBKuLrmW80nYGX7TiRwBwf2;!h^!NRNkJMGCX z7B?oGvjiikV$`p(IoiTL%f70kvu4$Xk&C*#<}Oe@KPMFV9!S`X@x>+H{4zeyq}&6m zQ2YVywDzVsdeohFkelCkOuxA0GI4mu{AzZ(+cD`Ib*>qfz8ctB8}01u=t*ru#mYhh z2HswA1jtK=(N$=hnV6*M6kv-!AAv{dbSDc#G5m!kW{kSLd1-!26=gF!v(j$Vg7C(T zw|fGCLKFqk(WKt#>C)`%%2Ya>iLtF@$uDMm;SCd|zi|~m;JXX?ulGH7OhinWMb+;} zGYWezz9?vRTQ5I7J>4{BUJ{iB5yCJ`oCo+OpZ4U~Sg^oQ4BWdj_9q;06PqW`h+#s zHt#0-t#)}`IG8}1hPj4TGAd-!od{hB1THKr3|CUB zkydulZ6>ehaB^~n2#Rh`7o`iiyf6`Xt9c`663os#P0M(g2OULz-~E_Z^4~UWHLqF< z4u`-YN?*S|r9*nSga!D|E;ZTCZg0Q-!Um`56?M*7(i3DNc6T<))VOc>LUQF@O-Tl-*jIYqdP^3!s_c@JvI-S1LsN8dnOn|RX@#Cl7#*sdhG*dLmn<`2EP zH(MhrVj4eQKJMmm{NMDQHPJ(d??FUAVD6kdz}fHjb>6;DCaaEv z&s?}XDR6e4>b_#)Ai7BieVYzOm5ZV#h(qDspTDD{^W)32nCDr7BEwlZIp$7;{A8>D zCA0RW;m0P!I-$@`k=*3~X<%o(xoD9^47)`$W*+P*TUbz~>@ukJx2x08SR7#k` z)k&w(QcYB4u2k!2kYfuTJDQ~Jhx0P)N*Dvf+JFFDW4xqe2g1qW;O(G&;x@*^qwgN< zN$p$!y+oSPmsWxoD6Q_Wx)-VD&~iY{sgv%H|M_b+JzX)kO!jLegOo)s?6BI3Nc_rNg%QjVXYnAmBNQz1$)Jf#{l_N73vAxyHC1@FyujSUa$;@vuVzK}gw zatEBAJX=I_{-Cu9+P1$3D6Cj~0kRn4qZh2L>V=ASA~_!D&$5sjYj>sVjeug9k889- z3SLToP=5+H!^*Wd6dXXwj~4b4DL<5?cNOqcKhp1>M|l@aefJLRWo=@=sH75@#7=o^ zG2i1S^GU{asW8^dYh7Z_30`3JQ1?L1+=+y-H=WK9WfD37G0#80mCzjDvq5}{tgjZ_ zi|T%Rs%*6taK$QLl>innyTRGPxoBp<`619-$r{a0`EUGbC9c_ZeXAC470*iK^p@(s z^DuBFX9r30$mkp@lmIZSk zlSnPf%YTu)TD)Yu%Yh@4$cn{X!|K8{3`C{wmu#N>ukRD+&aW(-qc8MzuDK|-ZO*2HE-e7`6*<8#>K_M?Ca(R1#<%eU>qEZ z4Geq(0&5l)g5>1lBqWjd_xRo2+tk$6@9*&}E|V4(Y&JN9rGKW%J3W?6PM(vL!C70V zM@Wht9(J>|(t?7q;^OZrEPrxyvBJW{^z`fl155w^|NZ^>!o%Lt(&iEpSP&0}uCA{z zF=tGylWYJ002p*qPE!D(T%!IMEeZXvW}opmqvo;R$b!qM+t*>>ZfF1i1rSL@K~#8N z?U&hd+eQ#YEq?|SVNtS7$#w?&zV8dyMgRX<>Fya6U?NE+eoCcy<>Hg;)Sc7Q4}K#%d!Pl^kpcu`tpT0oPRT*2-V;W8yULULZY?|Lsd1D zvMoo@=Z}KUOZT^04wvx;MF;^5?Q+qQH1D$Ncxo(*G1v3@Yb_PJp+1bDa|sm-xV|61 z|M>d)O4m8m2sHDe1$iBxe8<`E4~H#dmgQm)=w-#E(M~N(tXp`VTO+eb5`Gj@3(_t= zHv2s?9Dm36eP$uY<8c}5f182~LkUYIvaD^bw_2;=Ki;Ep1O$H^XS;Q_5XLwRh}Rns zpp1xFhfXmmnw~liB8UN>dyL~Zr(;#caa{GiYq2eJXCOs@3{yvrrssR8Fd~2uXI&bY zIC~hF5k_(spR9fcGA4~Q6G4EXb2UdG;NRDb4cFC4?sLLQB@tO)~SR}A*WY~j`K4c41^ZKllO%!qj^&U;Y!Z2T4O{Hs40~qL1 zc7JTdg*iUsD&f$!ZY+vw?{K>kERVR0&=n$lpKWgJW|`M*MH-; z$OqoPF@i7`TwFWJk>Tv8W($%q8^=HH+O;m)5VjvdDq3V}Ny>L)9x_|Jwq*8n*YLzu zmRXh`cQx(!3^Bfvl9Z=XSJ$y;3A3l$PX~rw+a4(N){ka8K0Z!qV4I_i>KSZ|y?zSv z#PZYjQyd7#_{}ly(tw7KItn2Tk$;`2O2G-0QSMt$hdIHu9Qe@~S$Tn@t2{AcZnA8ecrvqmDvt_kX$`J%Wl4$}nn9S@PwsO|bg(SHtgOkK)_(RKYuM8nX*{OWiVYHrn9o4-> zMp78t@*+?p>yp64UmZ$F7=NB2yJ^%=Jx_()g^`q1_;p8hpak9p)tE4zpEut=KfEs} z@9z)ao}YKS^Uok^8fyyf0o}mZS`RP?j%?&zlM8fw$x_FiJ={69W;C z%TMzVa=BQH;Kjp+SWsU*QwYHs%OzC!XCW3Gd9!(@Z0IVG@vDFMJRiPLu*Cm7_uO;O YA236E5S{J>D*ylh07*qoM6N<$g7fFlyZ`_I delta 3188 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 Fe*ybfI&A;| delta 810 zcmV+_1J(TE6Tk+LBYyx_P)t-sM{rC-mn%GnCNg#&NS!Y_gC#O}AVildM3*Z$d?y9c z0!E)Lo9T{$<8>zBB3tBBG~q8#<426>ffU~oV!KW?$SHN_YA~@KLgG7T=3fBZ0IKVp z7sCvzwJnJN000VfQchCMQ+VmKB0*5O%q{^~h-Gl47hHD6D2--HACI!y{!gs+` zzn@3q%EjS&wHh$}xhKt@_EBid@rH@4UVEHiPuuqG5gtgYiG*8;BvD_XO(~V>kwj0_ z{JQ8n)0fKRx9ZOV8MRt$zW<~{4#4U;FIN`p-f%C4tbZVq#p5i^v5QMmone0cbCPcH zJms_9jpS>fk%{F=74wOpZNej^TT*lz&k^Ep1pF*iIZN0~{$^HqEq?MMj1 zP_)8Af%`ZQO-%p)J9nnjWOrglN6Ti9zWCrtdqI%O7^`tNz2$ble_xJ03~+r$y?M*6 zKZ;#$&wt($biIl%&Fnnqqs^0+5frMk7Pf9_ha>7VBP2og?I=8p3X%5~?~LNB zwr|-~TdXAY|C(^zff%75j#G+xgmJwYy+h9LFVqsX#w6p!cyV^m1~Z-T>>m7~sh#qPL zoGR_obHjm31!x}6QBjb04GtA}ImeWT%3WIvI2HPonwz;qbvUYGmX<4>p_jBU!w?u? oUL#WJbedlBLuNXDNb;WL8@f+s2~+{@-~a#s07*qoM6N<$f~<^ug#Z8m diff --git a/public/images/emoji/apple/green_heart.png b/public/images/emoji/apple/green_heart.png index a68dbdfcb187f5a7d95d314a04fe9f3ee238af41..41393ab0cbe0a87601d126f4fee81059630e7883 100644 GIT binary patch delta 1076 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 Ai2wiq diff --git a/public/images/emoji/apple/green_salad.png b/public/images/emoji/apple/green_salad.png index cc690eb60fbe6ad43d6205f0dee87d99089d229b..ca2f3c14b35fa18f4a427404c3d1639c4f3aab27 100644 GIT binary patch literal 4166 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 diff --git a/public/images/emoji/apple/greenland.png b/public/images/emoji/apple/greenland.png index ddf694ba386f4f19d73cabae6464e3b63ee72f2f..2d586f9412d67e79ff0fa5a668c5c3782331c7f1 100644 GIT binary patch delta 1089 zcmV-H1it&Y6x9fjBYyymP)t-sM{rDp8!*Yq$-BF|aSI>A!otMF#D5MYr>CcJ4I!wg zsF9J8YY-!24j*U{B*n$W$jHcL4FVm-evjbb;Jg+% z@bB-n5HiOjMBLlk;-s*|8a>z6*Z=?jn;tlv3Mj4$E78%>h<^|$upd42^z_v&Px|`$ zsHLWqN>;*b-KGEl026dlPE!D#`Tef^D+vqyqOIO*L0ZHhkotkIumAu9WJyFpRCr$P z)!A+$Ne~54gW2rCV92f3g?+Q<|37bTM0Aqn5;=%|YPGn9h2)1*H-aL0`4jWZGtW#W zlTj;^$?q7W`G0)5{QMmDIm6-W>+9!oJ{mn{KZ;XqIb4-kcWk`>LjIUpR z0%cby>p+fG8Vs z!?uwdkar-_T#eIJWsK3z5+KS(X7f;_QERfoy44DfBvmk&LRt_>{|hB51tZP{Fk;u*!c} zXLpG}c^8tF>Dp3ih0{m~c~iOz!I4Hcp}kAOAuFe>aQ5;*BP#1uqD1nJNU3?G5g=Uy z5`Re`aSCl7Y6RZ48=ZZlhMfTAkwyX9rwI}oiB#y|bQ;B=60;$lZOeuv;@sO2k`@FZ zU<3*uS!i^3w7jfr5thV|)ut_l$wWGJAus97OGItD4xlPP(a~slmz^2vIs$bYonkwJ zq?_VQ5RH`@IMEehj(DSdl~=B*QA*iVSAQ)>8<`BxpfIsUkUX_A+G&0LX@j5*BPV3L z-R+LZ?zqFz7F#wXKK>DZN?wUA0^qHc;}QSrKuobi5@PrY28ii&I_UL2B)!3ON>&?s zLrV`K6(9nHKtMqFn9UY6g=CD^V)ikZz6}DzFpa#$`Z!w>WD+J8i delta 2608 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 delta 2630 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 diff --git a/public/images/emoji/apple/grey_question.png b/public/images/emoji/apple/grey_question.png index feed474a894e9f5c13fdec69e61c391b2c201cf6..fa00834c6f4cf0788373ab961cc939444d699ce2 100644 GIT binary patch delta 555 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 Z9sq#q|Cd(P3U>ei002ovPDHLkV1i>{5b6K` diff --git a/public/images/emoji/apple/grin.png b/public/images/emoji/apple/grin.png index 367102e689814a8564f87f5d2963c79d3a42aae0..4660a08d4fcff95b6928281d9a9e72aec219eea0 100644 GIT binary patch delta 2062 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 diff --git a/public/images/emoji/apple/guadeloupe.png b/public/images/emoji/apple/guadeloupe.png index bfbfd3c7675f0bcb9b3943299f3883e2bc8f75a0..7f8922524bf05bbcbc712c8b3b575feecda7d6a4 100644 GIT binary patch delta 1343 zcmV-F1;F~J6wwNhBYyzWP)t-sM{rCG3=CCdiwX(~MNVm5Zk%9ml^-QM6B85!1O)>Z zPZlaZ#x#|XFd7;f z9v>eEC3_|&BN#J&M_iTs;w?5dBo-DH$+{~H3=9zw5g9lb5`QNVx2i1W(k!H!J8NVp zgncuOk7{jlS{!Q`8&e!NPm~lhixW!|3>P;8Aae-`2^=zRA3c%y-YoCZ1Xh0|Y~7t0YJnw`#D?nX`j-*X+ry>QvoN?_JIMU-+!giB7ZSNriQTSOMB0f_Zit4d-E zmbe+FJAVp&NE;bYH!fz|yyC3Pm9@^Tc{N&|Y?6pmPLD%U*9=XgY>^K{q%>H~<2+t7 zi)|rD)F_fd8<);;2n?ONi-Hyujtmy$vUQ&S8V%1Vl8v^NjzQX36H3AgS*o1PWR0Ay zQD++giCY7-efH5tfZW7Q;zco-l@iw7SmzM-8-LNnIMGP*1ur6(ZxW1FHUeN)jjBq8 zCUbm88X))vk2V9OghW;>-$65DI(_>bjYf{|kC2bCHaM~)8KdA-ID1mw5C(+LPhC|U z$M+_auXmY=KYBZWcO?*eat)M&6aU0yNu`Pss z7=P#i!`65CE9Ci(vj@Gud!rA5p$ip-3@l?;!zOmBr@AdP^&cT*;yELcPaI5usH(0K zo1`QonVr>Y1Y2e@@qEumT__?b!&5hjBA%oq)zz917|-)V2M!?Fhm)Ai=av<-EW&hZ zZOHe-FbG1~NFl^_S!~J7W1ePbKwdZ;27kRCm>^KqC~~bTafEfB19f}DF0f&ck#uhD zCE=)~oB?%*y>1V`r5hhWbFQ8GA^yi8!ghBM*&&VA$&|qxf%)GNPXW`REk(Ai36|Ge;ryEXYA6o4eaa5`Pn7 z>~azWSdv#83Kb==2^t{~wj5h_yJ(6xHVh{vL_*=7UUp`PDoNV zf+ody*{h(i=4fc7I4O%u0Y^AdWCvRalhtmdkW4J8ip6Y#OVjaYoCzsT7O`qBE8|?% zbrlJQp?4NUQrkr*d0dyPr2Iglu73}x?yUh*l{Dopi{qGKJ((>FDT48SL6aJd6r1Rr zL@AD)>9$Y=^XmHUX%D)UH7jXHIWp=~NdP#S=G9fDH?MD>CS|9J5;)oqX`sc) zwA+U+Mt*vJ{vonk1!|lhIWlU>G$H)IbIB!_{0VgFyylbbO4|Sc002ovPDHLkV1i2G BRJ#BG delta 2591 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 V%swxtZ}tEH002ovPDHLkV1iejNFV?J literal 2455 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 diff --git a/public/images/emoji/apple/guardsman.png b/public/images/emoji/apple/guardsman.png index cc6cacbdec0752a790016e4ed3bbac6307a8d4e9..f6a0faf6584d91ae2843d4c75dc68b4e8e2ec5ec 100644 GIT binary patch literal 3567 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 K5c3}GK=>c2?Xe{Q delta 3440 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 diff --git a/public/images/emoji/apple/guatemala.png b/public/images/emoji/apple/guatemala.png index a3f12f98fb2da8869da467bcdba93808a3a95d55..b71b532f4ab299c958247024e8c305cb88693c66 100644 GIT binary patch delta 1130 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 diff --git a/public/images/emoji/apple/guernsey.png b/public/images/emoji/apple/guernsey.png index 0a3cbbd4e5af1272ae7332f08e8c92be797d2d49..96f72c3e57c4f96335bbe67bb2ab512aebf352cb 100644 GIT binary patch delta 1396 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%0D2^5u_mIk1> zKfj7A(1K7jh<{Vr@xjUiM-vmPQ`M#Y{aIOqH8pvW{{)0oP*ACjSETDJ(*q72Of1yE zxy2-?OLKEKZcIx~4$VUsDeump0+9Y@U&G;}`xJ0$8cl{KrTs|H>eGMh-?nYri4$KQ z|Kj_Ku9oD%(EQhL1KQblso}u6foe@mObU6AdiGu`I)C|*l-CBmcI+4?@9czDqcxrQ z<;OG6+#0m?6nXd=8Ja?4ix5pKS{n&tEvbcmIu_rIx0(HMUzh zWX>8KdVftoZ)$=<-nd?LGK_(GEjHHLj{s!xY?JvLMld$6=kDNLsMj`u!1?Ws&D#9U zQ^a69MMm}`3&?2x0 zDT8S<`#HG4e)gND2+UavNM-|qfo%n%-C~I#27e?>><}^}!fcI`mK@nuYmIq70ubL| zzt)&0t=uwc!L|vIR@+xitTjZ1#32Sg&N1#lR6ch&$aeM<^@eRkeN-Q>)n1A&Y6}a; zo@!bNr^QV_NB_kWe5G4vSzV59PpwOF zaewj9&`@!)ORcU>r7E`q=~T+$`w@^ft+>$Jf3aoDnalaQav;o@`NVSP*^f;|nmyb3 z$p@zo)$ZA2)wC|FRBlQU2j_E*Bn%4<7DG)rKVHtyzjEcuf(7q9{M6h@vz#8KSXOw4 zdGjYtcAn`n(F}4P8gkKu z`t<2DX3Ut0O7YZVb0;~?`&X|%6P)JHnuIjV2?&&to`2V`LZdH~qZ-x!UVj6e+Y+om T64P;L00000NkvXXu0mjf&xC{W diff --git a/public/images/emoji/apple/guide_dog.png b/public/images/emoji/apple/guide_dog.png index 802d1cdf9b71799c27e860a682c86d254f7a6dc4..b952a9323035c389ee280c59a3e21b5817620c85 100644 GIT binary patch delta 3470 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 bM*M#PLhx`2P!=-!00000NkvXXu0mjfyrfoU diff --git a/public/images/emoji/apple/guinea.png b/public/images/emoji/apple/guinea.png index 7f6eb1b3225a2b2f1d51b817e88179d03ec5aca5..79dbee37963b3a3abfb85e3eb10ad234ddaa049d 100644 GIT binary patch delta 925 zcmV;O17iHw5V8l5BYyzNP)t-sM{rDSKp{&~ExMq5gM@95dMRU`h-_R!gBTklZ&J*> zcX<~Yzix25ZgF)R9u7$~d|@HUx_xgM9Di>o%eim?GMgwW)iE~GvOLv8NEdBQ&t72Y zU_}*%ToG0~-o1pINF3W~)9!L#zRz5}{{N5a z%&wPZZ4rp&v{l7Rlqg>w%?=Xq?%%AguFf#@EaON*(=IRjgTaTaLBFr*uQPzSxjsMt zd5*wB#xz|{`@)R6u5klfP8Z=K497mD)T0TdO#5mG=zs1`nNaw;mNy_0O+#e-An?9p zNkGRmIm@6{y1KZ%9cs8g2!!GA_U2kK2>jTyX*eEp2qcX93bajEP^Z(mV0AEQ06}bs zL7@r-RDnj56k1`=t7je>_R`)F1QO6#LSEqSLF={SIQNfP^KUU^V?-t(A0RFrLYRZt zz3aO3xqpk09ZN?-;P}N8Nry`a2}XhBl8PaecFr7*X2U=vFGUq0M>r5b@?0Q9QG~zQ z(aInpi5+DFMf}1lPP7&qVn?$vbYxX`1oI#Tj)3H`pz0GL1k4`9dNl;85KMCnBBzIjrkym;&InmKabKhh~vp+vk`G1bcU*6H%-L=_ic66Gf9Xb`Ckl;AN zkrOeB96QnBT_bpr>d$NyLJ9$~tEo`U}>L+YD0MvD`8AvI+V4S*?zoc(t{Lc$~fmS=L9MWwlyeFn~BJU2m{(i2uC0x)!?M_7|ku1EXcg00000NkvXXu0mjf4AHQs delta 2123 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 delta 2340 zcmV+<3ETF`39b^5BYy(`P)t-sM{rENv3F(~8Y50FKyE*vj5#xFLTMHlaTyt|oLIG$ zeUyJZIBrACy>=*7Goxp1Sr-{9T{pzJfW)_XCr~jgS~xs6CMi`lR~8yx85~;`8Nab` z$GUsRxqLx6CP^kATN4(^x_C54FhMvfr*L&7M=70(H>ziBB7aRSBu_8LyL!X5d7)!y zqG@itt8d7dY)uyu%1f1tz@fgczPu(RH6r)kcxK9M0L^wwE9fJC=8JUW6!p(iU;sA{P! zFjJ;zt1U4*gh;tJKBOuxK#WhbG&)0&Q&gyF?ax#_he^=0K(H}3(zQXfH9OU~LQ-ORHw@(^=`vQOd172MY?> zyF}~FQv(MD;lxY6I6vONNKB<{LXJ?mo z!LMDbSz(=4TiVoGezRYby%vJ+Xhp6&b-Vxo08MmKPE!CT3S9@HqOA)E6au3CvfJMM8!|riAKy6d znftF>;Y)rz z?|XCCxN&2RHP(Nap`nr4cp@_+!{;GrX6DOgEm%Br$;ufsX0*1pE?@q(het`1w@+8U0 z$!DNbeJA>Vd0#cur1k3;*%|6HmMxgMWDXjmw4}1KvbeaVW&g*Y9QZt45+d+U{0tI2 z&U<`tA_;x;WN_+x>sBqYvonItG=DO(TlDU#bssv;M@A_!ii?Z)L41A&25psu5s-IC zUhaoYhmG)EBEhzhx#6Mc=zdy41Yc!0sH7! zZgdZ{HUwd714$5;Hxi0)b@h$nu~?$$=%m=#Euo=50)!l-xZ%+gV3&wZ3PDh!H-aYW zfp{#ANED5rR1AW7NCrV3Y6y*#DA0w#QBMSp|KZ&yv3UrD31Mqf?=~eA6(xp&aL9*% z66gd%LiX>c`*f)td{!oYx6hT74 z!LbB%1UXEV;_U3~!lZkQ4*B9xGy!eqN&N8tEuqkxF>zd0Q{N2nlqyRuvqoD@p|agyftax_#^Xo$kQK#>PX34h3AiSa6)XF+V?_+jISq_C#Vu*Nx83 zv@~Untf*e(k3p9&$rP8#DG^o=bgMK^t;MaR#_<@k+<%9}!XOIwg6F@~LYs(d{^d95_XE zpp=ojQt-mD z@yN)srlw=4rlx#uT)_w^0^R$uwTZCD8h;EDA_ynqfG8_#t1_*wuKt3k+VmK(YUmw> zjDXPNh!zxcRAsbPSy)(1pJ%+(!F~c{@9@^rd8=20Ri%d3_Ik=T)TE%}h9K-oE4A+T zz3MTL;D0b-nyrlidZs3yt1YM58&5YiRzWXV&7R$>@GJtXCZ!N{7ApMfcv)LpRh8*< z<2QhqOZ6mfX>F~7Xg1bXCSdg{6!q;zPB+r z6_km|nzdF|_7kSfeZDsz0~<@*mr=H8h<_7}HXZgJIo4SJoBjq|H>DNScLrnt0000< KMNUMnLSTX>omw;i diff --git a/public/images/emoji/apple/guitar.png b/public/images/emoji/apple/guitar.png index edaad61a647decf4f853b9ea63054aaa02c163a6..7316aef8411004ea014d3756f71b352a14b39310 100644 GIT binary patch delta 2520 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 diff --git a/public/images/emoji/apple/gun.png b/public/images/emoji/apple/gun.png index fa45b8aad444f98da264d442a881c2e54f0db766..6a5190ce47c282f2254e1d233d3c6a073d509864 100644 GIT binary patch delta 2259 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 delta 2952 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 diff --git a/public/images/emoji/apple/guyana.png b/public/images/emoji/apple/guyana.png index bc1235331b97604f8930691459137d29dce353b0..6bed46c9a2804e4e919da04e7d670b0e340171ea 100644 GIT binary patch delta 1759 zcmV<51|a#s6z&a>BYy#OP)t-sM{rCbZa@}SF&I`bg%}%jsEIpqQ9O=UawQNVcSaUm zGJ1S_6IL){qkV0whHa^aez21pUN#h0FJ+>Ba;u4Pt%@8{F>RfJ$j8tSS}p`kAR~K7 zPLE~?2M3239cgK4m#Uv{6BnKwA1+@w8kkK10to!oMGg-X{D0y`AFW$7vS{weI{wo) z<2*tC*h}3tJ0^!t{r>&fGB_ilS1YMsFRf!9ol^PHL-Wr+(=IbNwroeYbpP2&>A)&v zvxM$HMOV6g_R1<$rE|?HFDaT=HKJfStY_=w^RnE+;I|<7+<8eiDiEVj+Q2`hlQVa- zj5iVx8XX`5lz&31!Lk94I{8LSI=ODfB`VG0+57Lp6_ZIOq*|BNuE{4X`sA1E zVijmNNS$ea$eI4_O#SxZI4>Fa)?(W4=Hu0_<;iEgsWfLHA*UoK*u;K&C@El5B3g80 z>-qKe?fVydK-#ScmmD9#J3h7{CWCb=Bz;JkH8&PZwtwyb001O(QchC<{x_+uC>RI} zqVN7>{`7-V+Jxq<(o@j;{?4MIuC1K0tgZENEdKrg00jj}L_t(|UhURpS6oLN2JkF& z7Xkzbw2(%cw7tIW?(T}ayT#?p_xTTZZsMNjDFBczc{Nd$RcDWfzdz|S^ zMo}_~8-Eotv;h1HaowQzOG`Drc2+pazFA&}RVtO%T#DvsR_7$Gc7;ABlQmwf#7|GQ z-haF~&h15lE?JgcZUshXIv}n)w3Kw5^Za!6|^*zrY zo|(e=@M&Rl<-m@B%dPJLRG3F2{WrAs4YaXgy}M8wXGG$N*K$uv(4RxrxygtYK{^mip4W&9|-$FAbD>gNcnf~%Aj(Y zM$blwnW!RB6=`3B!k~5|NaZ{vMr~E!KI{pZDGLii)4s$;#x|1>j~|^J*t5CnF4t;dPqO77&=-eb(B^o3aXWD5%;vN+yU#~ka}zT&!%xRx>2zPA7f^6GpKdax8FAv7<#MH69W@}#ObiVf?mm7ELleV~cZNHl zdU3q@1i|siHC9uo09b(tL?ybu!U>z3Qz82Q<^1^g&CQK&2ct%GY%0dam|+-w@BvkBOxhN zG<2hbDO58hOfoZLKRk3we5i^vP&zGIH!oc~eXERutdD}Kjw(ztf~$~#tBo>XJuFu? zHgH0BqJ$++E+NS0Q)H#AS4UR|$nj3_0iFfB!rQd_KTUb1man_KwU zVn>uz%0xlEIe#`-s%liGWck=+Pncdsg;T;kI=eVER;XuCpkUBQM#DcnQKMnNJ2~;t zT>t<7_SIs)J2>>xU$!d9AFv1?SWW;%36 zq-k=ogLkio-o8+Mu!}cpLVx1FNJf!VO_yC%on_d!M+FNS zDOod2lw3V|N@lHh_|;tJ;_qvwdq9p%^3GCdpm!M%4DZTLNsL(e{{KCTM%z(O=T%d# z*}DGx^)O~RyW7R-#!cZ-PY)Cq@ay^ANJjDL+R;Kj^85Mf_VIJOgZ|=Y)2=%D_5bYV z^7-OnrGJ@BA0Hq900yYVvE9aYY_fkoHzA$3RXf6L|6N1Rph)^+&d zkN)atM?^B2Ff9iL210;P`sJJ8@aZfO42Z>-e7=g8#i3J}V%g{5_VW7G+}+sBTSg`$ z#js5>D;v7Ty~xJU|NH6i<-0wAO6k;v{_C}!njC8Y00y#2L_t(o!|m5+ zRFhX22XKJ`Ed>-&QK`k_I$BrvhCoap6@Nk^B+4d0Bw!*-_J%S7348CoWp89}P(VW-{(R;Ao#)>BzRz>BV#RWnvz-4kViMxKNQk``A+dh*y0x1& ztP=eghP{2e=;xbutP>Y|H)Gw}4Xf6y@$m3)a}5b$JI#h2!WR8<#}~Z+lM`EHC4bNm zg@&7(tLw?2pdc+57hm7QK0W~f0iC{1Y_`)bNv`wF?(fAVg&CXI?p(zsPC7d~qg8QQ zx+D_~?E^%jrka|XcYv>pZ^Q@OXFuFi`244zH|^NG9&DeOgoK1RXERoby1}I&1{$rR zqN<7qjsXH;i6{W6X&%tjZF*v(g4 z!$nsM2@Z$D;~~KdvNjUQP#bI#0ucq5_R%lLj<(WUC+nv3Qh?=RSz~EPGJnv54xY~e z+r-%gwr@t@N<#))WV?#Kc7F+Pa~N z@-uN}Akd2~YioA~^%)o}0jaC&>!+vRDk>V7%(u3I2@hvc%xkNfD=RC`KrS*Pvn#eO zOV_fdMw_>^c@QW_-$DnI`bSt1;KAj#+$(d{ zK!s`&i3>xfrh2IseT<@kaqD~vgv`y&31nquG9efN$)LQ7@;I~Z>f#V$R47VQQz)ck zVWDSiY?Rt~jlmcgC*)Hh1RZY31R9IQvW7>|ozm0c8x@6G7{XwzQjN|fGZ>`>qxA%; z0HjPNn^P&)iC$jrC4V=jQka8IQBeoxL;5-vrVu)G=y=T4N68HT$Ni((1akq103jO( z2QR-IzlrHQX0a1Wdtu1R$|^bup&BMf>p>awA$NB_znq*051Dy`E}@PKR%B&lbUZ2M zYG1Oye?!5g`fTA4kaGHOt-JZBP#mr+edlC``@9z{_96Avlefjd0G5?0%Z2pSE6CFl| z@>248iapq!Sgba7c%|gh(3L{}>!Wi^BU4%7wL=$kQxZI!h*42dp_Ip^;` zewODb6KIs$p?|o@u8trq@?Hynv*$rE(dYcf3eGB%c?_Yh!Yre@-4J}W3x54VPVM{v zqqO%d_l+db$d%=0nXy?Wmi&!vNeDQFz^R{gKsC*00OL#|>FO@pj|3sB=xFf0J-(Dp zMZPrxEw~O;Q>J2PyJUwH{6vzh`WVUM@S`;+D3fWy&41-)EoEq1JX%$tXR8V6*$4#N z2&^dS{53}5WIdGv`%y3rRFe^lw!_bB{=%jRuODGBsY!n(Ga7pHk;X=&Rb7C41DUtR zk?^^ObVv(5u(nj=J_h4yJ^^+}7OM&z_$&jj0K7?yC3>p~o3uPA9d_-of_%`lDJ)j) zg}BIsc7HotM1dn4hg@rr+3ziMWFu1qHh<$=O+}^s`N$Bdtpu-M7GUOPKaP7p;;(4s z+jC7P9Ww*Ufs@T9(Pjiz0~i%PM_@h*xz=zdEd~xqFl(RKczHRDq{T(vYbV*^xrPe& zq6N0v2aBvLR2Za>(QCX*r-watU;*ZKnptK-mVXIp?l!_fTzn4)L>xIa92jU16F3~| z?GwNUebspM*bJzq>4jf7m=HHF=5}@9Oh{U@_ahF`35h^^PtW-HU%83*v_It-$XC(K z-7vtEzDjf`xslf0-P2}ZX`+jRH!UrsjED$FK*-9jmfy1VQ)wwFDFp>7Y3WZtQ&Iw! z=YL$!-b05>LCNjusg#tiVpokC69bY92(JuT`7Ilz6+{$e1TVibB2ruBWjFGmubT=R z{uw+CQhbN)9jXRy&=C<4M;wur$jWb&mJ(5vTj(Y(vuztsmr>aL?RP)CeEr%!K0e+a z*-1}NWF^p$k$aaP33A)OlK1Xit)#RXgfX)f3L*7uBYy#*P)t-sM{rE%s~P+2w(z+s^x2W`yDpWMndYt`*|u27wSe%u zFsiJrjE#_if`swCHO7e*qobsShlqfIgZIZyf`WwVupotoi1^A@pP-^{Y;mQfr?VV0000sbW%=J0O|hz{w62>6bMQD{eorv z`#%1D(}k;_U|)?n;dl7zzU$7h&+Y!G>*x6K)Sc(g>)*}T)9jANJ*ofz37<(sK~#8N zq}FFs<9}!p2XKD3%C)&vi1)xf~O?A+Ye?tKR3oSbvc+2lB3?>_bQBWb|Q$@}8w zuPP|3%0IgMX<;w@ABluQk)@wcV4v7HIN1GpXrG8iBGH4tuPLyyy1KS$WpyRs>UckG z`Qhig&|<~Ey19MYXy;Jcjr8gEs^10Lp%CHUihnL*RyKe0arSd8z~RIu9i!1@J_HC260f#lKk_d`1C&JGU(G3 z=D}H2W%KcLI^Ae^+IAchvz978UsEjXR?yOi6xP7`X(Ibr&6i5?IB*C=@iZK?k&bWA zbr#-PatZc;plm{A{-al$dB8w}%#-PKynnRza%y3(D}?3JIA2aARQg`8LI8u5tTtLbeX9z==lYIW|inEaQEx#+&NS8=x?d~oyrSAoh zgc+o2r|Fc~Y&P>J0jslM&>cFBmzoNjRi{(vj!`s8K#*n42d`E&YfL-Ausd{C!hgwo zTAeaXSxuO|vPzitFF4=9`tJfcG#=%|n6M&i;N3)%pg<$x2zx@;tlFsEI6# z8=53(R_3b0!Ib_uJPK13K}2`F_9l7v;RZoaQ5gR+j>8(Mbj9a8=2=EnndAH`N`J;? zmsFU5Czc8ZkB$!a_Vx~sg4Dss-GANa#>apKL1#S@Z#MBtk7cG=_R=s+N7AZukvbFw zP%s!qzlrznH#Rmx){ef5EG?6GFRRkNW*$zbDl5l8mCr9rhBn`y-Qx`Z^5x6H!B+HR zD6|`iM7+BP@2s7Q5g~v`TFo9;^9G70h=|HES7${-dzNO7By*`|GpE8?QMi$M!o4>;_KJ`)z!B? zl1vjQnXIsPWt(!OCMswE<9Yp0*1NR@ofR zx#2)SL7pn?`FfVdHBEvbsn7}5>wo$eK#3_Ul3z!+H#fI^AL`7OKI>O~xHY;h%NB$- zQykXo!{wC)(3Gj@V`?}W)&3d|bTAyLKO7DJUAz5o!^ks9KvH1woL($7ZJ6uuI~K-R`h;-I^9W-8RSaI!Ih6OkK(Voh+zG(Ybi$ zp?{t%Vckp|AXov@NOilN^~b!Yn-jzyE$X5^qll46LYCc!MBj@7XSCs4OeTXBky9+9 z<8ME7AFvb_=Kx|Vf?R-YytE+Ss{8R*WZmSrV!Dwon&1Fr7=IvfMjY;NoGFNpSr(uU zH7Ee2C`tF;#=I;_rYUh8Cz;4W`)v;#-7!sF=EsaA$`pkcWKtoOr29@zn4~P2CKyhj zHskv%a3oP-CkeeUfP!Rz6vZc>1YDqhs`s+~;z*{^cm)ZvGM!xbxDG|y4x-lFpbK6R zrDsW3G{ewk2Y<3VyO>P)S!a-RAjtBoc?YbozyFw^aX&*6&+o$v-l^2yFHGeY;y6UD2zQUJHlFA+hjG3DV z7FL@vi8NWz1rSJ`0htJce|68f_adTBUPtyIMUUQdjOG#-Hk1}cdGv@3Ho{8#{XRMz zzk@#$#wTRKpbtrrt~~n1A@eed$!PRg*YyoL#G4hEMELB1gif`rqJ6a8ZYvlTA76-b zLZLD#ihnB?_g%+nQfxLwx=E8JMv1s_LY*YPcG+YRP}P3Fh3u=)b6w&rdMGK%$i?9v zi~IWrn)`>mhBLs8{33yr$^7~b8=(?a5f(yd>3J@>b53wyzXnhVB!UaCV`%iS*`&=; zy;u-8%D@1pEVHkl`_X72-UuP$eEgX~CIuf*^Rh^*9to zd@_XSY`+~KUy@H_BIwUR@bqK+K zgtL-5$oPIR|MC|U>K)!_8KOjvDHPyr;B3GFvYa((f(VEF?CF+6RDu^|iIV&A zCw~T&kR)x}G)aQ_RRsT0MEN=>i?%IFG$@n#`K?ExYJi{;4EOi=0P_K%qBS>3*))I# z4SwKz(wdjuMFI+BmCe80RkRW7gge?-bhu*%l|^@Hn;ZP))hf#xKWKsmF4pr^XRGS; z{G#+%koD6wHo^>zK*Gr|-Q{#TwM~CMn}5BB%+`RR0#~0Jb84v6YS#00e(j+$RANvF zlVPT+Y8bYe<)8967UDR6kIC~m&xMsaoq&W?*UV>M*=&4Eyitg^HO81&mTs6WFcF*( zBd`Dz;8VyqrlnhxiD4LEb&c@CXXA~)imI?bFD*@zBw01v-PR*_{>~_s_*P5nn$OLpE|V5M&qs;cejF#-cb9h5L<6odBxV$86n z^V37&@bGke{J(Qs>m8sd);HpLy(K37{sZLuXC$q6ls>>9G)NTED1>YJ<2&HZNFoh) zhDzf1m2{m+Z$JC%8b-z+nMcGo?NxLhi{9YVU*2;510b&Lk!vf?_y7O^07*qoM6N<$ Ef@4+TDF6Tf literal 3941 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 BDF*-m delta 3570 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 diff --git a/public/images/emoji/apple/haircut_woman.png b/public/images/emoji/apple/haircut_woman.png index c859c70ee6f4071e5886406bc231bd00ba0a60c5..6ca56e3b68c2eaefc9d829f1889272c870605456 100644 GIT binary patch delta 3010 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 Ef@4+TDF6Tf literal 3941 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 Z{s5zT(#mW*>jnS-002ovPDHLkV1lOBV)6h0 delta 2384 zcmV-W39t6G3fdBoBYy(`P)t-sM{rDPa+?|{Y-|=EAR}^rC^Z5SRc#m>ejqyr8enpJ zq+J>#WFIJ58X#L4A!2->Vr-jTXqjLfC24b^X%-+`7$H~|9%pf#c7CB(W0YVSA{#4h zYa%UidZuP^qhA{(Y#%CRAS-NkqHuVnX>_A(b)s!|p=cm1W`A&>U}%|P8Y5Q}9Ag|O zTxOIQCu(ABnp+khRbY=?W|LYMAz^EqR1z6sY?oRU9%&pWS!0nbJ9!orYJR_B{IN0 zPbfa3yf{e-Ab*3ZDmWQ1ln^F}uP!~kJ50JaNF+O-Avl}~Ac3+mK*B#!tt>kmF_jS~ ziV`V~wlhQ$D2%5nHz`1)COx1A9)GhkLj@du8!(9bW{A}u64oVYee z7BHUw|Nj*$k03RhqbN16F+sRBMUg8wrZ7OTFFvR!HGj1>My)SC7c7j$KTw?{Fpe!b zs4O}cEsi2No;XUQqAooyM5oO`Q_wp@)IU={QKM%VAq5(Afg&y^Kc!)9rM@yeU=$rd zOp*f?VI(}FDn6GMH>MCOkrOVKNLZzIB``@?nmS318!d(e7GxbYptCznS!bkCVWgZb zL4PPUwSO%(1tW}%AuYBlEvq+5`T6<9H%4@X$1p{rg&rs-I*|q+iUu5ZNmrDiHbmCj z?%>|olrBGUAuXCJICL8&Cpn9rF;7^1UMDzvdY^@dEI5NXXSGLFoJd#TiIkkerfP9O z@$%}GFHIIHhlC?UQCyKTJBK48eQ_sL9Y3l;Re!KnJAgDLVW4JZP+5QQ?eNIq%}I=0 z@X^*^pK?`9Dp+VZxU;K8NimRQCOIb7;Vs1X?qXqLn9It0QJY(|okH@}0abj-n_8nWd=6~ns zZ-eCL*PEMD7EGU^`QAH&tHva~@zW=PfruSjwrt*5TUc0E$LI4)OH28!C-Up-w=H{9 z?JS#5)X*RYVRV4_5pVQ^xPQLB_Vyk@ zs}s}G+}#5MSA>WAL`Q?8L9`%P5*=%#1!0c;N{~cpX-D-r% zCK4fMMXb+;L7>X1pfEVF+_h@BZ!H&BGUCAUH@gJZMANorda| z-osZe9j;bG%4HV?BZ$i-gxmlM!b6-gVFUdBA~?N`)zt{<>+6%tg@47xMR3>dMcG9R zc@RL)8mpf+UVnTYAbG~d{4?JjJlNJ&QBiT=*s)XJK0ldQT%>&p}?lu4_K+wNuqtD-ZTo~HX7;|WoOqS$I zV@r5`QUS}E>f+)^Wq(!XRmQ(HN(JeU`|0e-y}KYq!9_*I#l>)Jr2~zblQoW|g030BgN7)zQ(#IW=w_4jQ?~k%~=RdK5wKfhT@|U36D5 z|BCsiPp)2l)JP1m`a$C&qt?U7m8t0!M~)n6YpY_{Y=6R*arwga8@I0hd86lA zPv^xUKqDigT&T{@EJ0;u9u_8(Nu#+knU|kEz14H=#_#Rz?e{O8%N!acb`D_)0z4D^ zc&pa3*-S5hk}h{%>uJBz+4=Cn-R>@bI|4{B1c+86>%8CIe)rtDE<0IfW~R)}0U)p8 zH=-pa{oLJ!5q~l}Ed3yGlu*hmM|1U;$*>-FsyNsJ#9qsb0|*MaC@=r3AWZVNRWS}& zRFI#iKm~~jASw=8qlUn7P$3xPN<&bBryvA7*+YTQl9Y{b4hBhh2?4ASbt5Se6rzNX zq=cZ7Eslc8aF7e+C6MQ!5PVb}BPl>)V3G--WGYo0!hb@u`KgygQ*Ij{?CL`!0V{+G zgC!?ZQ>E!C{qD8oflDHW*pfJDD(aJrLIk;}p*S8-B2k|t{}+a$1=6@Us3cj#W_x*gDVL-q_U}KC^3BejB~4aYkS|cOvRbm^<9Fhq z7KO4AKz{)V0P)n27Z6}nAfv=$+B8GMnWkfmjEqc7jK+Lox_I7_C00!(FQA!OkqYP} z#vmyMNhIZx@+wUY3q!;A#+Vpbl1KIX?@Tr@`pnR3sRmjKEn6b@D59F1o5kr^Dw+?( zqZTDi7C;yoSn3b)CT@w$R!IhcCM%0+m_gPb&O?I!?1iR_XU&@T zF3LP?6$?!a^k47EXB3%iX@Fu$*4I4;>Y|G-L(G46Pb~7JuP6Qh0000#APtzl-RkSvDjY@6W66$)WbdM!#27(EN}$ zBpQ>@K=QV0MI#UY#wlVi6fzzWSS%Ae9}WM(Cr~93|HnNn7z(RnF>N&$|IIq>N<#n0 zGL111{#{zQY&QShXE-Pt|KfV8?=6@|98E7A{=`cEWn%x>Tgzn`?o&~=_d5U3LpeML zaXudQuO$D`QO7qb{=h=uO-H+gD_}Y#q2C#vG$GQa>FVB1#yxc>kcQ5_LD8>FK^kQM$r#{ER zO5d3xY)LLVRRu_E3QvIslWHkcIw}9Nx>`y$=>K;7mzs^tL)eZWva~wHq(Pb44t1~# z##l$J?^oVsWQRl?=dv|ok3E>vV4IpZeYXnvdV2q-t%J8#;H_2du|~xIgZhVwU6cpT z-&o84UeI`O)BjDx{ZPT^Q~29i;JA$Ut6A@_W$UnX=ZP`nj6v|Rc<7Kt-;Yc0saore zG|+uK_^xX9wrc2=O!l;7?3qICpi$_YTi>vK?aZd_#h2@vRM>?<*pyuM!Grg)aPp;M z_oY+aibMCWVcdW)^VYQBl~&h$G47N#@R>;TxO1#tDcFHI--bNOcslT)T<)i9>!M`h zoMH8%OZBQ~*p5=xp=Zy8NB6pL;)F5rnLE;nPs@Ns?~yZ}{3~Yw? z6AHty@p1+rgH>3Ig%1VdII-Pu@P`!c8{9r{#Q4Oq4347XnHdIZS+gQKbvs6-UuibmrU!?N%J z%*>SqSlIi4P<&1*RjI?RQ6RcHaAj9GC z%s#Yhj>Gc;Up>}Bn}L6WHcV5Jk_sE6U1;XrS0f&a7MXk=nfK7=uvVcJo^Q9?tts_t zJ7Z{t+ehfw->-duZlV{Ji@2!zr|9~E`K5Hjc>bcfI!psIJa=BMTNay0~y z;5W*RE+It--1?GK$7b_4A9|{_iL~5^P?xR*6fpG@j4u%g=KeL{-+en( zC5gX{z9lA%ch)+dX4m~7ae!c=dU0h zg;E>RYQfkDHDCI7mP(-`S4@EVxgIippc!DfZWk@2q!URXj^;sY3#hYzD$!`P-|zK$ z+3bZM7aNU$>bk8Yi9n>$H9(6OV5Os_QnEa*R4Ri(A0RF(iWl!L-g$8`kaD@MldPKv z6CeSRAx)bejmJc~y}j*mq9`KaQ=&NP^#JN7lctGKD%EOfp7VLlzqO8b zJUt>5NDvMw-@@-)uh;K)qtT=($pv&Y=yP+9&e9vXasA==cna3hIGrAVMKIvtK?N9a z2GL4Ib{P%Z5a#o<aYmiQl$499tAfD1}{!@*){j`yuakz$N z2`ZFrA*2mS=t`-y$<0c8sD?SjHe=J8S!W!BjWJ*wFtH67gRx_5%qb8K;gp0V8?rg= z_9}EMBBb;pS&^pFR@H8jZj}`m&4sg}C$VPzFZB0%aImFTt6uiGu$j?(&%EzDmic{# zrv&xvQkZ`tX-GZU+DfIiwon}v_h}aB8fP}1(*>KG29hMf_K6e!$o;Y{d?(QQOL1{K z`T6IGgu(Dy3c@U)PXPl+B&y-qh61$C-MaN=ZfH)ny58Qo zg@wx>o(1rbCKr+@j=KK-so<0&7+qd|HKrdP)9EyR|MBC;Pc;rs_1As#&D`7^`qAgm zhF*Glpnzj)aIm|(dvIzhy4=_OX5p*&a439Ur?cw(HOEhp?Nno9H-!EDbvfX~6xKHq z(17LU=DwgRZ#Rb=md2s7TJ3hLt_rHtpeoI29N-Y7|2_p875x5YzoyT@ddACkgVABh zBRfY2Yjjq-*$i1t73r#Spi&94`TZKq)PFu4mpIS(p{$BHLG5&^RgUu-tGV|5+FG++ zS5s4kDilsblcB0cL$zr7f}=dAl{{K0TOGi3>1P|6j@$oBo2&E?t3NLH|+5+f+UQ|YB8=-iE(y( zTvi3`m^(~5#X}k!qh&;q5f~OGHG_Jzo(q#lGP5o{a-mC-I7#x1^Q=l$trB@zj;k5l zjJ>wjP6O9Kb3Sb2Sso8XWH^XeUf{GIiM#N@#Uq6~^<2Alakz`)x;&gLGrVY96rFLI zZ7Nk99#qe7 zN6mIjC&=O<@oF`0Bl2pI=NUnZ6-<|n_v<6zddKXgOS5!xw!QP5 z%jYw?yz>zG9EOA0F`NF8J-=}?5}FBzDKijN8wfbhW4=hla`PjfCA2g;y5x18qxF^3OG}kTm&@%o zLKA)T;EkE-%IP2i0MgMeM-31?K;F887vns+G32lZ8!=Sq zGlrsT$Xj>5SfvD+NLFNvibzC3@;8X1&z@e5g+7j5efe-5(dgmTkR^2W;obEY>rdBW zA#W%K4Px8lFK8>0s4mahN9I*;Dkdakq{yfD@7;U(^<8+ti$DDKDWzNrrZ4Z^TZ05V zeoT9sL?T&`v)lgueuH82$?C>~N1v=wjHGOf9J!O%U`czPef@ic$TjlZK|%0TC$~{h zHiab#0~G}m5-D61NLOCGpa7|a(YtBSOVopGj|jP{crc+{_8d&^s6P1&DB*TxWqoD+ z*$O35f>P~ne#D%U`O5Yom*RqCbpk_wt^`vh;C}gcWIjrdU;gesf+%T}#Abk|ylBsV z-uIW4l&8zuLY{=|Q$$mR&xo(^0f2=h1~gTkUzGRXe_|;vD#@q145<_)z`thL*w{e6 ze1gzMkqwrD{bhyU@taRxamB%c@}0EyS{8|&)RtdTRF;>qe1~lBp5n5K{Rc}5awsX; oUsUn)yu!Wz!*6Z4^#7iJ0}YgHu`VrVS^xk507*qoM6N<$f~nadU;qFB literal 4017 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 diff --git a/public/images/emoji/apple/hammer.png b/public/images/emoji/apple/hammer.png index 5ceb2d96a5ff556c9c336667873ad46a20ff3a22..e7bb0d55529f6d939cfbc33704f7584e2f8e62c9 100644 GIT binary patch delta 1202 zcmV;j1Wo(D62%FSBYyziP)t-sM{rCaAt5j^F(xJ^6A}?SJ3AE=6d)fSEG;cN5)U;t zHzp<~KtDbwC@C&5F()Z0I5|2jD=RE5E-x`LUtnKhVPZZ)MW3+5d3}LpXl-!QnVLJ1#IXl$xX`DJ+tdovO*}MSnm+n4+zxw7`pslC8wv zb7W&_RaRI;ModmoX@Q)&&)>$$%h>JqAR!|i9Uslawt#bWpR2df+u|c7D678Gqqxre z|Nn`Af=e_vx7PG~m9es=l~!0-pOl90_4ih2eTk;XrlqN4#6`FO001I%QchCuzgH8eV_JPj&Y+T~NP^z;ZQ-k)#^O3e=zT zo6oScB)0042r`-UMW)74RnlPklgmAhPw$^OorY`$M}KPG!SGC+*B|k?TRV`fK$&!t;-C}7l2BxZ$W*Y|wByGf2 zb?Dw|@12*MDZkCzIZctD(Ukrrh&W03$ES0O(w?B<7+yj;$5V86Wd%B?(Z` zTbh1{u1e`SGkuxqx#`NWjmNxG+*_lhBgXMPPEy!L&2U{emz;Ed1*n{(nWy-)y4{i` zID1S1G(Y=wuAH;XZreD1&u$xIzrfkMhP&S{{C_|y12J~C+uct0c$*l0fa5O!2_t`h z?y)7H*K7w_#rOBEe?SNwtPrq+6AI>S%R*LUS=V`L@FiAg ze1q1qWP5V2e$?hArPJ*Kh7SHbO@7o$T*V)|9o!Fitso3>FB~t)Z516tH}$+>i4~{~ zSAU7N2oHg8S)%aR(GEHUT4H+R5|Y$&{qTUS%OwQp!M9Q9FFkWJW=lx*+=;CEzeYlX zv~WCg`zn-px{eir)1to(uZ4oWW15>X65X;Qq;TK)M#~EJ8xv|O^TR=I$^RKE*R}!| zq`|1#vD7Ys5?NSyP=Rx+yyD?g=$XU639VCpvWu zjOj6PvO`|16Ld#dlOQOnj!Po%4&RjLbjLMucV9c+AXz7v_}4y3BsT@t=`kn7Qv{J- zbo^z(QilV8a4~UIks^z%>iMDT&?|(HAa~*I^fphCM&Lz7l(-xvrPxCF2f+KU);>cx QyZ`_I07*qoM6N<$f=@(2Qvd(} literal 2367 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 Mi4l=dXW$z9ADZ@*q5uE@ diff --git a/public/images/emoji/apple/hammer_and_pick.png b/public/images/emoji/apple/hammer_and_pick.png index b1f5cfb7d72da8bf4f89ff414b407f0d12934c2e..a192b278c5638f32963fd65a46582538713171f0 100644 GIT binary patch delta 1599 zcmV-F2Eh547|#rlBYyy{P)t-sM{rCwHa0dlI29EWFfT1G5)LgcFCicvCnh91Iy*W$ zJYQd7Ha9mnI5;vgF+M;-F)}ijtH3QSEp>p3g_*38l$ustVqRindy1N1YjtyafR&-E zJwHJsBqc>gN1>vp9v&YiC@N1(O*lC^l81@j=-6{<8XCdJ&HMfSSz276nVe;2Xohihd3t?xSX`*T)x5yOyw&ZoIn&($0010xQchC< zh_Ven1^yZ<<8}U>V^Pe={_W-a{==d9?Y!I&a87Oj00lHjL_t(|Uagj8ck?1Ziw0x$Ejgp^5-RGN&59#**+(Pk4LSW3FtaH783?~t?7=LJ zX3N>(OK-j?M;y!;XF8q!O!O1T8al^m8ZDPU6H|Ldj(_!a;F!f?af}cBlM_{34HxM& zol$%CQ;sH1B91v8f#VFFv3y3Frc*$HJ>iKxyWO3g)WBa7W*G%lq!bEBKNInxJ?rZS zFez|Y#p`XJQ)?B;Nx>b29u3+Lx+j1wrl#VoAdO2BbqAq?J?kDvA4Dm&1jQ0^fCFE? zBpJyRYJUN&yCmJ2uGdL?JXI3r`OR0g_9kWt9^<6@W!G}L(_IzjW9(~3h$tAYdpL3wE12GoyIn0F*XFtTKF z)PJ_Gao69;ZnOHW!bd?6pdjBm*W)IuqclpkJ~|y>O=$T!kjj|s)i0+g2nsr;h>)L! zPWM~840^m+##=uq=d?nFV-7Zp(wR>X>gZ}iwmZJDU3a?|BPr|gauNE7aViuwSf(JG z1r0Mf*&o<`9cIQ6$$5=sdw32V2Rr6Ftl$Hm79k;dV+4N*nN2PvS( z?9E*dDge@FoPu(&(6I0ve@X%l@qdW|1Q90Dblne0a3M)SIrEOnP73BE7|hQ&Zci(Z z6Eu!%Qs3kdHb9ES$+FZtk;K?^4>a11E?iYA@QpL$2E8W3*M$@G ztSs6(OzZ0S$|Bdp8YVpD@Z-ctS0_^{2ik>zUOP6X!p4cYJ9A(M1o46PI+fDLfm8KN z*0}|#7X%8XjfaN4R%(Zh6Oa_^Vl-I4aL<0@1rszu7~aJh)qoG2x;V{vuq!lEe3gYN x^gOTkI*0E#{KQnRU)d!=c=xqMgP;5^<$nTd*g`+J^@RWc002ovPDHLkV1o8l_A~$h delta 3092 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 Ss4@Eh0000^ literal 3424 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 Wpe`%X`s(~m1eh5?4IA`56aNQ8F|~sL diff --git a/public/images/emoji/apple/hammer_pick.png b/public/images/emoji/apple/hammer_pick.png index b1f5cfb7d72da8bf4f89ff414b407f0d12934c2e..a192b278c5638f32963fd65a46582538713171f0 100644 GIT binary patch delta 1599 zcmV-F2Eh547|#rlBYyy{P)t-sM{rCwHa0dlI29EWFfT1G5)LgcFCicvCnh91Iy*W$ zJYQd7Ha9mnI5;vgF+M;-F)}ijtH3QSEp>p3g_*38l$ustVqRindy1N1YjtyafR&-E zJwHJsBqc>gN1>vp9v&YiC@N1(O*lC^l81@j=-6{<8XCdJ&HMfSSz276nVe;2Xohihd3t?xSX`*T)x5yOyw&ZoIn&($0010xQchC< zh_Ven1^yZ<<8}U>V^Pe={_W-a{==d9?Y!I&a87Oj00lHjL_t(|Uagj8ck?1Ziw0x$Ejgp^5-RGN&59#**+(Pk4LSW3FtaH783?~t?7=LJ zX3N>(OK-j?M;y!;XF8q!O!O1T8al^m8ZDPU6H|Ldj(_!a;F!f?af}cBlM_{34HxM& zol$%CQ;sH1B91v8f#VFFv3y3Frc*$HJ>iKxyWO3g)WBa7W*G%lq!bEBKNInxJ?rZS zFez|Y#p`XJQ)?B;Nx>b29u3+Lx+j1wrl#VoAdO2BbqAq?J?kDvA4Dm&1jQ0^fCFE? zBpJyRYJUN&yCmJ2uGdL?JXI3r`OR0g_9kWt9^<6@W!G}L(_IzjW9(~3h$tAYdpL3wE12GoyIn0F*XFtTKF z)PJ_Gao69;ZnOHW!bd?6pdjBm*W)IuqclpkJ~|y>O=$T!kjj|s)i0+g2nsr;h>)L! zPWM~840^m+##=uq=d?nFV-7Zp(wR>X>gZ}iwmZJDU3a?|BPr|gauNE7aViuwSf(JG z1r0Mf*&o<`9cIQ6$$5=sdw32V2Rr6Ftl$Hm79k;dV+4N*nN2PvS( z?9E*dDge@FoPu(&(6I0ve@X%l@qdW|1Q90Dblne0a3M)SIrEOnP73BE7|hQ&Zci(Z z6Eu!%Qs3kdHb9ES$+FZtk;K?^4>a11E?iYA@QpL$2E8W3*M$@G ztSs6(OzZ0S$|Bdp8YVpD@Z-ctS0_^{2ik>zUOP6X!p4cYJ9A(M1o46PI+fDLfm8KN z*0}|#7X%8XjfaN4R%(Zh6Oa_^Vl-I4aL<0@1rszu7~aJh)qoG2x;V{vuq!lEe3gYN x^gOTkI*0E#{KQnRU)d!=c=xqMgP;5^<$nTd*g`+J^@RWc002ovPDHLkV1o8l_A~$h delta 3092 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 literal 4069 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 NL|IWo0V8J?^gs1;g~b2> diff --git a/public/images/emoji/apple/hand.png b/public/images/emoji/apple/hand.png index 90529d95b284eb1e3a87a82da9027ae3b20bdd5d..7c807571c217b8f4359f31d46dbaed301a69ede8 100644 GIT binary patch delta 1343 zcmV-F1;F~S9MKApBYyx?P)t-sM{rEvl?>sS4a#^6&3FOJc@5W!48Us&(0~ZgfePM~ z4Be6n<)0I@UkJBi2)1De|II`H$~yhVGy1_S@v|T6sTTITDCM0D|Ikg{j06AES^w8% zpib*l0000GbW%=J0Mzn0{vnDFPi&*S<*N139yUGx000D>NqK{z~lDWtXnSmzfD*^CD6RA)EIjr|A4F-iIcux6QV1*VHX~ z)7pgLU1;=1>&?XZ?ardn6t@TfY8cd?M@hdqfpKP)l#}3e(E3yk!GBE1Z$N~qQUgJlCoTWs9CP3yS6f-n5V}@LTjIn^uv}Vx7L=exYK;&3|Vnzax(Kr|? zJ64P#g88jSX`Z!DZ(yLvTu5 zINv4?1o4Qq$q)t5LXfG020p8_W-PlWC_vT{G&C1L*413!EsqAfCy&^KQ7n$PlxK*{ znCc+I_kVNu2x)W~2g#7Dge*xmbs{+;QHN;lcE8^@N03EpF^v^aa6Au%!=||**;;Zw z7&3R7zpH`f5CQp7v`!;&V(5dQNnZ2^NmbC4B5ofvXTZG$ikwHE|ZR!*W2G z)PM|uCMNYeq;^k^ajlp#WZPzT`U@hk4(b5mh=0l9fFhvHE|b^Qkhm~pf*9j=$2GLb z0vQ)AKI$OZGNgl2csw9AJ2-gpD5w^~`!`zqv0RKgF5cWJAJiv>5A8QdicZL9X$TS1 z_EU$+=9Sz10|5ldh4En2)W#T>>8Z#ud4hDDaiNfdI*P+kxhqS=6pY5-To~l@`zOJ+ zvVXO3s1Ee?;NU{}8ieN!L5chD^FO0^M$?Q(f<7k$3k&EAtNdIba==*UVoZJa4H7Lw zRIBINfIxJ146jQn_XUTT=)DiAUw^#+fEnS*njm&cOC{DgzoM&%dS+ zgn-G8&5*Uur*;VrRgx3n?E6(cA6tSpa({9~#mSP*5;VOP2Tb4J#-Hzh_l~8l6a=zJ z2wS<>tvLHmjCel(*pj8K(ixzGVg~!uSa!h3<|(2-p!@^L5-e_+x0SZedvch0j%+a` z&5zs;DO-g>N@JP0+43tIP^z7r70gbNf?iLXODYl=eL!%2oAhx=?6-0APAt&T*tG-jdfF)IkoYp? zlE4%v^#g#{(@wq|H!uYx1>R3%Ie`g1WzAD{yPfQ&N zBp@k~vo^IEA*BH9NP+?f13DprddQxYo$7&89d+$@N}{iC>8}Hv6A>$@A2>>XUAyLV zy7hMLA9KB}s`*od8VKXuZtJK-^Y=(81wx-yz<&f$w&$icg)0C6002ovPDHLkV1fsH Bf@}Z) literal 3632 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 diff --git a/public/images/emoji/apple/hand_splayed.png b/public/images/emoji/apple/hand_splayed.png index 73c18aec22ef020513f15aa5db859fdcdc7a47a2..0a990f12fc0dedfcd9fc045e5513cb9b40d90714 100644 GIT binary patch delta 1401 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 diff --git a/public/images/emoji/apple/handbag.png b/public/images/emoji/apple/handbag.png index 000e8817b43b3692d20d88c75d931914f816d15f..fb308fa6da200323540dcffc505b9662b7b67462 100644 GIT binary patch delta 2157 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 literal 3692 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 a9{|W22|&SpU>b z|J-H&+FzYCJfHvo01k9gPE!D(jod|P%l;YusJq^U6!|Xp0Dk}kXh}ptRCr$Pm)UZo zNDxH<0R>vJ_64y2|2OAm78Y*1tx$XBVWPv=equRwb0yUL@ARV|{pd&2rwc>Zw%yQA ze}ow>W8442=`X<%k#pC}@HA_>kTEWH)zviheLr07vO&wDEnVAwdX8hYwuZvk4T$G* zjVXJxy+SMg*MDuX^pveu^U>N`3B?5;bE3*&F>ll6+J4B_G>l{S9zWPs#8DVS0HqRi zeSd+r4Jo|_y)vIvb-VH4)bAJw!%MonhgcN;@p`sYZz7Zl> z%~;Xazh!6xNVJ1I2eyiz=p||U`C>`#08=Tj_!iv7!r{)5EKv%}CPd?d)hq)PiL0ZO zJBFVeYGhUmN#Fo52=7{OoHtT5WSRUMYQ2Mm!u7ebrM@OWAfm;_Xh7lW5pGm%#>c=Y z&ER@z$A4HuY-tE&7*!=C%8@uRUYb&ZhPIFxWokbxfb1AUhAnltS?_W>Y9KD3vnfTh+4$0!K2nuJXg9!FOknB7#)(btpp&LL4dHC^&PfCU(tog{^M zk717F*T$0f2wA3r9EHB=aU(KIOiQ;2;()wiR(~-?S-}-ZMnF{Mx~91)98zJwA%P;C z*ZUZ0UrG{^Xb16}^k)SYV4q2^^-pv+xZ0=+hern|4s{`%fP$|Fp1?Usi_2`vQI!kn zzLsu`%JCCPbhmSiw)J?L(;8fe>3l3Hn3`2dUy%UX$nI?=dkQ3e-1{B#JZTFt(6Zh^ z6n~ZC#Eu-)({GR4?xY0 z*KA1M9i&=&U$U!v6q)9Vl)rfE8<P zc^0J#*USVJG&(31XULI2pssmdqkoL9SA`a2$~zQ{h_~YT%!~DT^{1R-8c!MVE!JC< z-Uee_+x)4fZXCOwd&ycC`9p8gco~{+XquW{zNi!vN^c!T{hI=a_emH_;PD!o@2lfw zIrgU%g6y8}YZ%9NYKBuvWB*_LitD@X@bfQmf2Dr(54S_KLmeQ9k^lez00>D%PDHLk FV1oR`bbtT= literal 3360 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 EKgJFjy8r+H diff --git a/public/images/emoji/apple/hankey.png b/public/images/emoji/apple/hankey.png index 956dc5a94c56dd871166c232f6a0ba503abeacd5..bb0f6b74930408a3c0a1db6d4dd3154060b4371f 100644 GIT binary patch delta 1681 zcmV;C25$ND8K4c2BYyz2P)t-sM{rDJGboNd(uqxd z+HMKtkWEGZ_CRSNaY#-;q}vS&ed6Fwabo;d?+h6@P=DyF)JZ19jS=rNNO~bSK0t*q z=eLFFQII?z5f2@Y72I@<+bnWz+hid?DntUH!EG@Tg>(=gLlfZ%G5xVH_1^;v~uH%TRyc zU_`1QP=DGex8|g)l{uS@jq3y6cSzLpppaJ`ClP@M^3}shp9BOc3Q$_F$gMQBC7}VI zU+JHrFoML}=zx;C4477Ye4TfiBo3qdiQ^UlVWj8Lscl@{tkMY`ILJ`WaLbksI5G&3 zK!I9t``3XA7C3gACb7$f>Dnx$>|v&G47)@-`lQ$J~MQ1RbKh^o1&___@rj zBYz!MR{7%cx%Ow2hS0(wE8i1nUt0N#0`YX0N7WPQXu(WZ6l49*Z67-PP+E9~w2AT! zV*uGnWkm-C+Shsg9Gm=4^*s!!WXz_F$TJw#WO*eSLp8;<6&-)l>&CTF^Owu=k(!>F zFL~5}LqP&a?T?s1uRlR$V`DGa-!D0*&wr3=Pl0v-;o4>SMuKB2(D57u#m42fM=LN6 z*DA$%s-t|N)<>LftPJ!v19fBCIJ{VwhJ=_Dl(pBV{r>6Iit>hYJd&i171evP^BCoo zPh%mz2+|lyGJy>3loMH01_*R)3(m?YYgE#Z$p9c&dC?*vFcz6tG&xAGui#iOu7Art zG@EdnD8k{fimY-eIeB&wG!&eJ1=7NbGRw-cY$I8S#isUbmC+&Ki;!_LD4kx)+IQOa zCNCsg!{` zg<`8*^h}$yuV>1Nz`=K{ZG4joM1NbQp!)D+YtU-mH}v0N`hG}^PD>J2ZOc(&Bq<52 zBE-=LlV65_F#&}*ogB^!27+2hw%aL=V-6pwhGOQ>dXQuNEr+Z*k$m5=4;b0a;rUF5 zL-VqE0oVlCl)$J3_+|(UXQ7XfbhHrem{n$BKtq*MUDb7oR7Rl-kXZx@qkm?ncHZ{k znP9P$g`a0pWLY^>mL=|%6@jxLi-bp*?%lvV8v^>oX%*nF{RI=o0>@UEBpsa1SWr3$hfF1If+Kh*!IU*!(odN9ZO@Hc3L!e#xWMA7$9PdlFZews zUHv$#ZNnr>It1k6QWJ$F3I@!n0y_**k`$bW^C56Qb_vmSRg8}U5r3%whSV{5M@d@B z>fr}CXVT}Vwj{Y73Y;zn{M5ZC2q+H^qrXo{eGn(46iSkB-@Ymh=HJOx!YWUol_G!v z{TNMuGbE?I!DuuZ40^rkbg1k1q`P~4I_>oagTV;;@>3(ypf|m=Y3b2R|N2FD|9*Xz bjeh||T`WJ|6h{F7015yANkvXXu0mjfmAE17 delta 3312 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

    2Yqkbvq0d5 z00Tmt9};?vb#S$KLd-C0+g0XOAj;ILZ2$ALG9Tk_B|%>zUR zI2Hl|P60*fAT-A~_>Ypp(h}fw3rb20`;G{m?phvTl;Bp-S`08WaA1~AlOBS+kZ9QX zC_t!GwpUbkdi3DQ)2_72%CxlHzkeTDnr<`klwJrVMJuqxq-^00@X#fuObL7_vm zUOVFz@!ggqy7MV$@LYa+x{1djFdSht#YFfx24KKC?R?w+(QfrV4j3ykSR$|Zd_H^? zlgaM%^z z!OK^h;K(7x;TA6@Go)6#e@PMghbG^z7>JYIf20-a}c z*V&v5!kd;8l&qSvgTG$!*nj(p-`sGW4j>kV!fLhFTf*ZKo0~lzXO77Pt!pyoxNSD4 z$I}drOF)2;RkNq8?BJ@^(;k1%A^B~2DXE;e&CZ=WV_tgwm1m#*=%ZiF-86Uo29L*c z7`nf{zB~qg7ZMUe5P)&;;HsBjTlnK4=|64R^04V)%U3R2v2fa}Gim&$Oqueuf54;} z(-y9sv-0ibVPRp@ckFoc%^hz%|NI-%r>|c9+R9}MXZ+{4t^of@QzrQb{NP_Sq<;?x ufHEM!2?M;mEFgts_qypc*u=&#$N&HfkHb^IK5?f20000q)Wf`!>g3T%G2% ziX>05WpS;yRPRMBh=C>uh`G3ycjMVb102&7kwH}ZyY(PYO!E++n_i1}IQ_E-s~$`}v5;g;Af{-hw*)Gl(69LU&mqitl^fDPe?THFFF6?mF70G_!vW-M z>xMw=M4lxQV1K#pC5z}!keuxynwFA_0yQw*2r}CCJA#T3fyPU@YkGo-G6a3Cl}^3V zDX=zC=PA&m0BWL8RQ<4j=TSKANj!w;ORl;SiRc5YqGU}{5r-%6qbMFO@^nweA`j7u z!gL}RSqQdt^P)aPy=xeWKA3=>cTL}jU?_qBP)`FwsDJ6C8HlWGXhVX9h$OJ3BgGb9 z1%O)-Z7A>PicjHC&N}xd!tJGiD$0lt55!{x%bQhkOOz2Fq@jpFO`($M^9;iKqjLcqE=Vrc*^Bct%}d=OdZd$r+1AZ>;s zY^rwAE`Ju`-gIm6CK7=^u{kCcRk=2)-3`9fM0-Zp*J}16w)cf_FVLsBSt2zVfEO9+ z-okZXlu-d+Xo2!BiMIcbp}I)mW^ZOaCX)cJxOAI~03B+-*rfRPdn8YO&9aMHG94pg zw|pStp@;^e&XmSq>_e0rk<>Nd9Eu>LEx*>^M1R;0Dg=v_g3MXfCuw7v_SOGNF&mwR zVHgN!KXjwSf%kt}h;yHG$g2?BIddZieLY(m(qbTvsQ<*i1~LyrU;Q4vr+q@}cWWe| z%Te~B>3^&v5j;YmX-Q~ap+S9RQSR;?ZI)7iyu6@slZh-Yckh@ktQde0mgwdlS;O7m zj(@6r);G=iNH`jgK>BBtpyh6lLk^&7Db!6*&`z62GEj6@CT5)+&3d{^Ze0ela>8!w zSKY+Mmiv9^0wlrj@ttmZ?VnR*L8ETN& z@KH9z3^isX;s}Fn|4TUNauy1fC!TgldFl*@t1%QjNaYz;v8yq=toyg>W!>x7hu>d? V#M#MNO$Gn}002ovPDHLkV1lH+-je_T delta 2828 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 diff --git a/public/images/emoji/apple/helmet_with_white_cross.png b/public/images/emoji/apple/helmet_with_white_cross.png index d02b442e0002264fc542abcd24764d51a034ddd4..97c6575f24cc0f6d9c50471687c7091cc5865d85 100644 GIT binary patch delta 2198 zcmV;H2x<538KDu7BYy#gP)t-sM{rC0^Cmogqz$8c_zPEDdlp%!h`{IySK`DsT`Etz25BVqiZf8$l-;t{fS<9T|-l68bDBl@}EJ zGcKML5~LUu^eQC89vRUh9a{(n*drf)5f0@jBajdc;3OaXJU3G9~`qRD0UbY^GQYgM?!H73X3c% z&{|h)3kmsQU4{}5{{H^&w6gs6_WkPW-*s|_I5+*t$bX_+TJ?&C`F(kJ4GQeY$M;Jt z)c^nhICN4@Qvmz@NDuvT1{^f}{{2QM{{HZi{eJ)!4sAzKO(fItCtzO=mu;<*g z#_`d<*5jtx%=+)N)ATA`4FCWJl1W5CRCr$0(%EX;Koo%Cf(3SvunmEjI7uBDYq&bMW*G}O{P zZstBg4}8OAeYluCns z$N+khT5p_Pp?w2M2h!oVRJZ4{D}1?+nKc?&3?Ln97d9XK4ML0w#v%cutaZ5vNr-!{ zr}LY1<0aUtZEtVSQ|So7BEAv2MhK)doqx~g`ql<$XN(XyT!=p*6cOsM4qgK~1oIOigY@6R{%Pyz@jMl4T4-`7XldCVYzka2&7;V9Y53SyR52Iy?<3TQP2 z5w?O(F&ykRdz%=n!vP8bO3MJ%w6#B*0fc{s&;;ssrw<5qyWPnos8#_gl|TZ>lYh|K zzwJNHej*fdUP1_*)9wla397z=&h}qA`8^2@J&T2*{4!+K03hfE6a>`}q0tkx_wp(g zYP02RJS=+_Km&lnb!a*b0P6GygFzpmGC;M$>n&O?6*TIrFZzH74yEvwt?uA%W(UOLCE9d1Of*jjSIg$fq1iZ>1$^2GpVL zY3EPh@0(F9TkO}yCPeem)4Ye|z*qfEn(3x#xIc1SKy_Vzt5dAnyuNP!rLO<}1!l9^ ztiGhXdItxPGaC7T)J<=S0KNEur4je$oBl&(V{||zMfG}As7cEpr1X+jA58HM!3VGfD3N5s@5Tq{n%T~0GOAA3# zq4+R7oT7NGj-bp!HkP3flz&+$3<(lm$__^IFP_D`A&7+smqt>TenkwB5bi3v?XK-_ zo|R~uRwxNlNA*(e3qnN<1qC9kqT5LasVvetB(Ct!fH4*#F2!pTA!UgVAYiPcgb33< zB#R_^5oT|fHkr-NKJwVjEh43cfPc-Rifkn|9t9<$ zRN`#!eZkhz!}M%6yBJI#q|Bu&z>uQ3am=2VF}A7;4I;oj7a&4-9$i9kJs1lulS1YD zdLS9dOjDMoX@xzm(ln#S1G7}3d3tmNE)S!H|w-TCzyqyE|*!Eg$*)-JK1TjjZsk_eI!4Ky1 zlj(>Brd%AipC?2jnu6~JP%9OU#?9 z=mFV=o<^GmZnSaay3WdPvYxh3+C5m-!_H$Qc?oYG z#P`RDLMgjlcvw*}3S}joJFJ2=%H+~mP|{-{W)!TFmVf2z>XN(2%B!m^QJOjhSEz3K z>}a^kTS68_vARx*ku#h-tE3^M#K%@>r8f(CAli{9L^2Y7q}+fx75I~Vx?9Kt9uh?y zoPrYGFhnFu{7c~95)npZ#zQGzoiIj9VToeIQ{|zY0_{vcuq7IL<23x9u9oJ=-}?6f Y#DY=FoezX@tN;K207*qoM6N<$f=+w=kN^Mx delta 3307 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 diff --git a/public/images/emoji/apple/herb.png b/public/images/emoji/apple/herb.png index a7b19cfa16d99473feffdd9f983e83030894c258..d4f7c3546e3ae3a2587ca4aed3751b64ad4eb390 100644 GIT binary patch delta 1959 zcmV;Y2Uz&_8?+CQBYyz8P)t-sM{rC|jv|7}J3@dPQI8-!fEq}NAbQ0$P>3K!dK_4u zC|{*2R-YzIlOS)pEK`>yR-Yw5dK`4YFhGGFM1~w;t15H9E=7YMcfCJQm?Kb>BtL!| zJ$oC0%`-c78*;laVXP`~y)${mEqKH*fX*;@#4BmCGiR(eR)3x+T%;^elP6G`A!xQP zTB;>gq$6#-Epxv!W3nlR(l%C?EMToGe$Fslo-tyjGD?aiLxvr0v^z?WA9TenH+mI- z%J7E(001X+QchC<9R4d5{yF^&28CFktSE5qVBqD=#cE3a+rV~^$gf4-#+9prHttG} zh-Lr)27*aML4Q_Ug;cDRA96NndOk~1 z(f=7oSrWbisEzB z;vcTcEKO(43utkMA3sX`WXV1XV!0Hg#ibR`=P2@hm{K2aV<}D1$b%~=0Vnob;{O1V zrJ|@vS`;TikR(C>@xIn1j!U^B?NB-q)d}**&&_)Q&F!_A1Bru*qUfOF>@o?1C`$CZ z=VKwwo_}kQ_{4FN#7RZ5!GQDuN^gg460H;Y3BsYp%`j-GC4;M}IBNFB2ai-1^|^G#X|rmkKmy5Wr8- zVQ(DTODsuAB++mvdL9Hp805*a$uy~f#Fpj9QIZEaIGm*4Y91dTKaV(WCF6VGctlz- zgTBHjhUNPS(1?pFwfLK$D3;qOM#4~|BGkCDprBzkg;`ZI>7%PW)7(LCTp zm9NnF`-`g8H~&H@df+5}?l{gdw%yCI41b5u(m+$uRdV1=pe^C4=%#+0N!1GS+x7B3+8Tv0r zR6klr3#gaX)vGeb0SAuf!IXOitvdp9Qve+;>&QJFpN^}=C9UV-bX*T8cXE9esejCO zAP|lKQNov+B=kHxq~>umZ(4)4*patIHKJ%$yyJ^n1>k#CEZcQYHR$;~V7>(*7?r7l z`Bwi*f*){BRWx~4S4enX4A$#`*8CC#hPA^5UXGXbZfEDGTEnW+XN~H#p3&~)Qm(Uk z{tVKy7t)Vfevk5==5Xl9LG82k`DnRhI6_vwyX#*>;b| zQx2pQAVF-QfWf|hwCi6yOHL1@tYQC#I=Qvk1y=CRW7u%5^ zmE~>+lIx*!4kyoeOFuL_{*cjNrE(nR)N@!Ocxf=7)pk8pCv#8G;eexJ-(tVSW6d-u zxaT1p0C48vJQ4b{Fk3EB_J0R(4*SF5I`V8k)DLcNlQ@6? z)Bvb4x&A5G$*+1m?Fo+1;}IDpfb5=eW>P3C_{oHt0X0DryCDM`oIl|M%0 z2T;Qv%+N(3d2@W50bVu6V?)<dcmU4@w@+ffD7uMROvX@q>Z$xauK4L# z(JWeT;y5cSj)V2N%YTSe;j(Nr5tutP(fZ|t5hmR%%Ss^13Iti0NNBe!?eXvq5If#= zMX`6FBpHU8aE?=wx2piwzdu4@RL&>8lS>?^1cPKj6#`V;^X0du%o01l{Yvw@Ke>Ci zGDL;C`pSqrGQVq5d0ft^QUpRgRG1uK2(3&YjmOB9HW1~=I->9cY)_w to)r}40V(tSgdq79wdefrfE4**z<-XgAJ#p7$Nm5S002ovPDHLkV1f&fy*>Z{ literal 3574 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 diff --git a/public/images/emoji/apple/high_brightness.png b/public/images/emoji/apple/high_brightness.png index 80bc55a275a4446cae72770054833cb4a747e579..a05e444ff2e8f36a38f0ccc7900fda7f4a9646c3 100644 GIT binary patch delta 1520 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 diff --git a/public/images/emoji/apple/hindu_temple.png b/public/images/emoji/apple/hindu_temple.png index 14bf00d8cd544b1675bdabbb4a6ef4247fffcf89..56998739e898debb04e6002491fbb40c822ac96e 100644 GIT binary patch literal 3228 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 delta 1386 zcmV-w1(o`o8T<;6BYyzEP)t-sM{rD}3^idw(NE%}@B;jE>{eNvgpfV7@OemN!65>@U zcP|;lS2f>^bMK#quuU&)OF+Fh4vRAwRXQ^FS}Dst5$(ZK6yQ;%%)aUkDVU%3}00dP@L_t(| zUd@+>dfGYwMt?IPhBR%OwpV+3@5LM$egC(*k_`?0$}ogG4p9t3K1jdhb@gv@e>=R4 zDCY5X{~{tW7V*>VMMN5Ye?7c_$PmZ37Z3^EqyC385<2cnWE5X$0W{J4pG4R3{bg46 zQ+f%}@cKU1JoP^4xrt*g#?AD9Nb{hSn$Oi-7xk%kzJKR0XB&KXuIRJxZG&+CKkbp> zaWYxGzw)c|MT_4!JL}$4y$bR=U**kq)$5(-!I;seFiaUX<-C+WV`)i5EQB^2g7F#0 zN{?odZQH<}neqy3dj=%^a=M7pD4M}2@@xnq=-B}3HQbLlV87ZC zM0(<6nAyeFTuNlFDr;l^mQQSP#Tf%J0f{D6k;v%fiGCuEu-&ck^v+o0luVa@M0(vDiMjK^Z`i*Wv4^; zW`DV45%3`Z00CCGEdyo|34o~&>GHZuM2kf(eBd~ai9?iYQI!Zs5?xE=I9)7myF^qC zjA*V!b5Sn`&kf5&C`oiJAwpE&J4IA6A>rJaOE4BfAg@6QE+jFvLfxarU~1#d)xk4DoU$5Oie`S#X|#=K|)+Db{ZqPMr7 zkHce!zMgKz0C4~-V(x7-juRG<41`QChr!Xw*Nr%rWUhE!Q`oQ;Ab&^A@IjK?~o*oeLznf#4N!~^$Fs+ey?hZn%j!eE9L*X}NsoD#(shR1^= zs|#iTl$Se2Rgvhh4fVmZWRC%j&Zwx}-7J%k$51yqdwgr?5xE|C5zPK^k#11Ii2i+@^C7N*W@7c#|!uSEw!`mtzeMAY6zD_R&1ohGjZ zHl!(Ci&nuFMnuwt#Hqp>b>QLa!S@WU2*L;k({~o8q7|X`iQ>R*S}U4NXgHyfCYX+X zu`m_ZM2jY;iGXHHG+h9V5v8rjJ5w~;h{9i@;eHWXi|`@QWFzYBUyrRQ&tqwr?-^RI zMfp(?-iQ*G@99xq{}MSL73Cd7-hR>aPto0ek<$=l}o! diff --git a/public/images/emoji/apple/hippopotamus.png b/public/images/emoji/apple/hippopotamus.png index 8f36ef80c671d0bea5da30ba279e68ce2efdc1d9..0fbb4851b022e7b964ddc935ec41612a610e78cc 100644 GIT binary patch delta 1238 zcmV;{1S$K$7U>C)BYyyaP)t-sM{rDvjEhZ8OioQqQBhD%OiRDPze`L^R##R^N=cEE zk)xxcv9qyqa&d%(gQlpaN=ZmwURwX<4RR;Q__U|n2%dwFneY@(#1 zWny7=b8>@$fNE%GtE{Srh=!h@o{^D|jf{($o0*oEmPtrQJAXMgRZvgBmz50arojLJ z02XvoPE!Co)a^Wx{SY8zU#{QMlz_L%((}XqC31SE000C5Nkl+( z`ag>x0eb(dwm}mN$a!MyJQn}}0EG2NaXhGRlS&`CctlFBldas&zV_-yJ6RkE1Mn8G zfTEvbiAe~7B!2{?_kV%=PJ+juT|IjN`(k^lG7pm>oaS}YRF&`CZc8<{)AIttZdX;! z_bpYm`?D?HLffionxWIb_G0a27=~&`sjDUs&6=S>@V44*|Fy6DaBl77P51ljrpb-t z)LxL`B^P?(=R#h+{ipM_YptI~jfQ?l#AxBXpS-u$wtp?m*R;rR{`0!P!!THHTRZB} zYhjFYMrh|JNFLIi8t#sziu&ux$GT04Wd0jampuXvs|N>W~B?D$yax0TSck z?i95bfPYMDok1XVV!T7ovj+R%Xq5{i@Qz^LA}&wh1!^#a&z43bW)viIA67G!w6e%l)`k-iSA_I19FqM{!Up4 zi1)r$R}6FO&@4GzYLX~!%@`08VnlHI8|1tV zOxH7p$w(O(#vy80Pg(0h5CUd(W-M*1O`KWJm!;=QLE(%s8W*VN09cJ1)Ax!k0m=`g z2Y+~8ARx=KFpl0pJq2{ArvnL2Y$(NDg9Jr!IP(GnJUL3iiILqsYdsDG3OT4q;?tIG z7y}DnNsgNo5<^F~BD`Yt`sOhzIO*}2gQ1kCbe_{>Q$j8iauk4ArQ)v`MaLR2!C8(a zMzki+$})pODH1?YibZ(y7_N9obZ9{Nn}2^P<$^FqUGNwdeqtEC7y^j~f;;vuIp#!j z2c_7*WT9gL7#4;>zfTE+5UyT@dl>bG#iiK?D5Fgz6)JhW{%gWkVQPIm-lynkFZQU2 z276_$S4axMv^JlhQzx{LEJ>(jPLc-%y9N#dDL}{k6C?~EUY1lbmqk`?Vz5c_Jbww$ z%s8CSP=3;*?j$eD`HJJU`D1{NN7?|NmzM9*P$y4+WhtC_^W1zM*H&gKJnNr^of&FK zl>{L#9hE6fJ1O$L=pbbu8ag;5WPi%Bq3{T&*~qyPW_07*qoM6N<$f?Hx& A-v9sr delta 2875 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 diff --git a/public/images/emoji/apple/hocho.png b/public/images/emoji/apple/hocho.png index 64159148d6820bacc03df443aad794ed54f2149c..956d1741303a306675621ce70776bba9a7341500 100644 GIT binary patch delta 1053 zcmV+&1mgSr6R`-8BYyy#P)t-sM{rENy}rW2!_CmpjE|4-=jG1M&M7P{r>UsW(b0B- zjC6K*hKPzdI5{ygGq=0DP*G9N&(Bs@SZr=`u&}VZyS(Az;-sgiU0`HFLPP25>aDM? z^z`-V>FG#GNn&zb&yTHQ1B7Y+!mzkKYudmeB*5Tsf zwYIj#$j9pH>i+)z9336=^YcSSN3?cXdH?_bA#_qsQvfLya{dTN{{H>hDIxI3~Uu#jax!-#G4R7X;VHcPta{mZh%i;9x05dqqxQ zDaGU%>0}|fJGDS+>rUyS&{>K?)q%yH{O@9++`Z?5oi09iGJ=#h&;3(b>`CkqQcE|_ z^Sxm2i68}#YD}Y=IUS9r6hO5XK56T`>1f#)1&5r4JAa*jD9mRMy(sMI;!_%>SENWn zlR2G_Ck>3G@IG-RO0=ixiu><!u_AQk3@FC?Wr$WNC-6?HS*)$6m1 zn9@ms1lWQ>Y0s40!$0>au#m1OEhcKgPJ$ z#o>0sv480V(Bsj-nh@ejX5)>{p9)3{Zw@!^w?gSzgHtzsp0FkVLf;nH6gbaN_PC*Kzds*VMdZnfPs9hpKe5G9BHPPgHpnf;K@Lu_536Z z!++IMMRz*O%!1li7}61?OlD*nC9$rqzIu|q2r15lK7P# zeF+FjoJx-WHBCJ|KvlVCA~@1*dQ2vd$0S>-l>)$76bO_aPd4P<)@4cV?Q?!n5Usl* zad;75pAV>I6#P1$eTPfk-albk2+3?5hmFlI)y?hec+4_-n`0&40&|7fB*`1Zbr${t Xb-cD7PvmfG00000NkvXXu0mjfDV7CZ delta 2547 zcmVcU}BYy(`P)t-sM{rChDJxM@QqCiDX=*GkG3n~* zv9hwk!ot14z|YXnJ3Ks&j*g_Hq;__8y1KigrKF>#r0nhP!^6Yn=jYJU(ZRyQ@$vCh zRaeQ%%Guf3?d|Qv$jATx|H;bD%g)Z7p`oOuq_VTKT3T9LTwEn3C4z{IiIJImgN(Sk zxma0QYin!A$A8DKu(M}qY5-?vQ&UsT&(2CqOz!XR($dnIo}ithsXIG6A|fI;H#a~) zL41jp*x1;XmX@5Jox8of_V)Ifotu@HmSJIGu(GhKtgO4fz4rI_@$&NJ<>lAe*tfX2 zy}!Q3#>VmS@xsEwkdl!@L`XnDK97%)ijItHc!M)FH-FgM+u`BkVsCui-QTRNtYdM4 zw6?U>*4EnG+dDixQBhM{X?on>;AV7ywXv}~Iy)U79~>PW4-XF*85z{p))f{O85)78`x6BFR!;i9CY8yp4yE92zj-{9Y#pq{O-uFK5Kz`?-j>FUwa z(G3j^+}_=|xw)5_m%_ut#Kpy~u&}+qzQDr4v9hwPuC1l0rnkAc&Cbru&du!X?AF)U z!^OmvmzJ8Go7vjhq^6{wp`f+5wx_A7kdl$l(0|aYt*phz$FsGx<>lt{^z@mVnUj^1 z$H>Ui)6?hZ=olLu>g(%`kB-pM(Je186&4r1z`)MW&qPK??(gr9k&h%MCW?%U`TP5a ziHCD`czuM5NlZlW7Z1`~e68DMjM`gn7~M*evmUi5KxVr(|eC>KNN`QpjkMEL2FkmXdldJbxR%8%-be(cpj zRQQc+6u^H0ocWk`>+);8@#EM0#W=|K-+$fxZuq72+v+>_-1sfuGU&swd*k8h?tt>8 zhisGI_uZ+6_p&tVwO1Lt000IaNklj(_$#YtJwJoZEa$fc=E_;!{baC8>EU^y_q>9P7X`ce!$7d2$3>J zj2i}N(uyDz6hMVEjf{ZhB&Jc@LLfee!(@d>u$m%%doJ~+W;vF*4?U$YCet1 z7v1ld|8boT`V{p9oV%45)J#4tNPorTa``omn3a>63FmI*1%%0@F-28!d2Y7|3=e36 za<^(lA)QWVqT;^l>%q|QSeYs)cM&NM5Jb&EIf#fu3+DikR1oeWj&rEJd;}4pbpF2} zkSA5t9@3=P)rZnnznnrvI4I~9$bni-7iV@v?I!ImIx(7(81c;BLJmp?U4L)8Ie0xx zIurwYatnbwCg)ne{7yHWrBY2^2uF&ZKNe_0ne1?$GFYmP$wy%|od+F92IO*XH%bkY z7A8WGViwX6R4q1n@6u_Z*>$KErA5P$cGD4*qejE07-;I~STq5S^yG218byQ5|MJw) z@!0`5QtCM*90FP>P$E8XH-C3D+@+GVA{-}>aWtd*HnaD(D&;U7X=XwpCkQkJRVDWv zcj>*iGmpZJj`Hl>5Q$%SP2MlJ@u@j~{s3tXXhHx9xq0hWlZj3f_g;hrQC6lPND!qq z3wRHM)L=*QsbjFD)Q?1kK@s&K3#E!!KJJ;biLj)IJ$nm9A_S#zdVedqgO7e*4E<;( z&QIVVC>_aB2nHVsa=#xH3ym6m@;vfD?9<+VEHyF&pO1=$CdI5i_ZyEp`1p>|rFBW) znl+5&V(PD#|N2{?HFAwofneh>+)<|ea!HUYa7hV=%fXlpPm2BN64!-EG0edrumWP^ zEXX`1esk%L7ONvL0)Jx=bzSAUF}s=jJZ_uL%3xqbprA{mS1OenjdJ2sWZfn0&}G}aUYh|UG!1&a zvO=km$r{Wu((c~hRc7;MyWL)kzDqCD6gyiq8mHB4Hovo-u$ZlV(B!P4LG2& zfit(T%>mS32~v@TT-I4y+YdErecHH>})9ptpTkD{SI+- z^}6XxNxB=ezQtKw+@O&aWrKlbmz31km)7fa5>N6nl6e}lMcL5M(xTTFd4U{nNoi>b z`0Gj~$xBHdmdGvo77*)-a$IKvrw>TFA(7attL@2=B!5Zcw{&TgdSzE2UE%>!>LnhJ zJ&QLql(m*LX-)uKBjo{%ZI_hRm)?+gs(IBzysWIX%Sn>v%?VVLchwONtH*OgVz=9? zv$A-+8b#HPNn|yh#_H+<0YV`2RC^?Lp50>~%FD}BRJ}@etKT}?5eO6zm{IAe;Q=u< zLy9VeqJPTw(h{-{=e*etg1|6_k&q~Oyy~pHa4CFeW{|yl$HxgUhQlG%8odf22#hUH zk>@j2K1a4ql&x__hg9lvX}K1FP~_F*nJN{gO4Ab3&%uT`t;;142(+ygLzO^_$yZrv zs%(BSi8N_>T%*7UirZ?mnS4Hz$VM63ty)lAZoXfssBNwVl-k<%58fqD zir?mMNt0|NseLoF8@*4=CJ`~CT0))lSNHdMPW74GZKsn`3P764g|jk#QI zu54CHc+Wy^VDXz@Xu8$p2OOizfdv9}N1(ri#V_9Wp8u-9(dZ(&z`AoVk^)^*EnO5*1oE$(B0nQEibcf zFN}_c%R@uwNlRm8W!H9h+0@Uba#FIkxU#OP&^|xy(y6F&KdrH{_N_c&Vq#5CPr$mm z&st2fwz%Wu;`R0J=H%Utkd9kjU80kb!&+17=-;SwS&~^RZ+~%fVq#+4!l2wPF68Ir zY;JGeOHAC}+g@H@&MGU)N=xPC;nSU9mzk22m5$(MXWD6MlV*gAh-z$YOHouvNlK?~Lb7#2&CSig%E~k~ zG||%1#Ky+X(0|XFT`leH=FFF3Y;ttmtas(Rj{D@Uv9-D8>F3v7UiaLm_pw5kWj)D7 zNybG+`RBCz>%TNMIJ>{VLPJBHo|dhzsK9wNx45yXs-&Z(o$g;@EG;cFGc&fjyf`;E zJUl!jB_&T#P*hY@>u71Pw6(Icth>Fn&WStgR8`j2*MGvmy3EeX_eV&-#l_2kGQ@y6 z?>9NyS6P^tkhHb0-P_R9 zOi#CjQs$;l%&>`=WjVr>VWMCssA@9%%4lI>Vff*p>|;Z~hKRhEmp;dudjJ3cWpq+b zQvf3v{(lAi0}%@T{rvv@RbDnQi9nny{rUUvs2gX<_5QtAnL1BUK;1dqQQ#VFut0Rl zjp5Jlf{vsOqJ5E)UDj#(4%WOV(f{Yi(M^t4rb;NA~?W%ETxkMHw)r7KjZ2|OFst8nC*E`P>=fivpWk>w|L zbkK+1GD()txluXObLBpgy!i-qOzwwyvM&`rgD$2c!(j$_*n0a%c``+wLoUrQluw1p zzJITf#Xim#!zmJdK-1o0iX_pSCm!a@;qXldve8VlbqZa~Q(MdB zKIlRg8$Msk<*ePv9PN~}peX_wwh|55_5HQF`~C7isEH04lz;0BepJHK^N2a z*4C5aBDz?&aV;snk4G$tMa;OKOfC}0pb-#DVh}T20I_T6Vp>@Y!>u@SLlSc%bJQ1V z$rgwqXVxgTT9@_6oUt3ZR_kjVjn!J$>LWNByHcM=BytM7f^g`qKPeb3^-@qdf~ zXI6{M@ffXpmLJf?mivF*vsk*3y_Wm?v#ezn72})-PPOvDeah<%0fNvH&e1QI7CIG{ zHT9g7K-j09)1%jip3V(D9s23VUzQHC?9R@r=Y$X-c)fGFLEYdWe056)+u15>T3x-b zKglqbzk%zek50D>;WEr-rONJ@R)1f9a)SSaobwB>U+?O6i^XClQ^*tw8M-OB03&hK z5 zFdBwy(hZ*B&4SQ4lILT19E)n=31G?DfFx`RX76oD0T9RV&8A>xc-l*ID`L#-*Y_?iu_kX!GfYJaG%njOnb&QY%9I;p|7>UZLguI@FW`IxtRpsmh zM@TaQEdb?`@Ay|8&x4^*NFr(Cz>*SG0NFof*-be18G!J-KwrExOuRiCkA)(UNHj{x zC-xPLy}M$DiWk_D{Q-tO@A5Wf~DN{{dG&# z-iZcdK^X-BB1Of0O0TV3u2-%H_eX}+u!6tcBg2|d5at~WK_XOqB|+T{C_ei=V?74F z(#gr^0D{1}sQ5-gqw$?~zqLI+CWWN#?%GbjbGv8mh1%^l2vYZE+(<70!}z3sV8A~) du2!1BACM|%@>xFV&}DN%a6+SrM2P2i;JF_ zmebeOxSX*3GR#w)*scC9!mzk4|hku!zoK;v^wz#@vWMq+&i_vXr$6Q#; zZ*9pvHpxv$(O_Qe>Dt6PGw{fMz*JDz*VXH*PwwvNyh%sj-`r?vY(_~*s()C`q;!Ug zi9<(8o1deMkAIDnmXSk7M$mF{>bGXtL_NVgHNjR>)>~QCWMbmtm1B;PifnRr&7x{uVPepwZ@0X>p>|K@#F$D=O@E(&V1tE!-n^9enI>Cj4n`=V!^zgbkGCx2<_UF2| ziHgE*YWVBLj$JY#BP3W?S6^RWH#auDz`CfQLArxT!NtVoVqV>IapqW4 z#fwQNCMCXtLanf|!ctK4^X<;h%hc4Jp(Yq7Gd z(n37oQcUaW<)(2!jEsermygk#Q`p(r+NE3HNI}$7Putto!HiC_iCoc_PsN8s$I8ju zWm%A9Jjz{L-QeJ*epb1YW%ImU@XCR@#K!yk^~0rp&Ay-L;LG^VbjGiYy_<3L;ip6Z{rvtd?@>7#7hx?` zJcR#XTSG1U{XNM0mplGIK>FLfIsI>yq*S%tH5}BE-n`mvnB1(}Q1oYtclzr4z;>#L z#Ch;iNS@KItNzZK`~B;Jv00JD*T?DI=YRIZw($JxSmAeqr&6<#lhnL|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0 z|NsB~|NsC0|NsC0|NsC0|NsC0{vcvirvLy1#Ysd#R9M5Un1@%BR}{cQ$oPaLgnt4B zSpo+vdoQ7-R@q?n=+RcKv*XlSwR`Wq_W-gN4at{4$bbY0TLU4Cu=l32oZb6K{7xqt7RWcmwu zG1AtdX35ZD2WZf3cQs2ScWl5zY(a8hBQ(ch>l8@nFbNMa86ILAZa*hmIN**$$ENya zvNRkz7St@0;Um^BI|wgE-9Ob|Cff`9J`<3QLCt4nx8fl-bha!2{wR_+5B8Up?S(&z zm{=LS7-D}n5Tm=}B$j3e4Szba9TzbICPoi{7eg`zWpsKP6@Hp+m(c0&;2`$kbU;8b zE=TcTaPWTUj!}Ww($f97hy}Oh9D(N8eLA?*ma`dN%sptjtqljU^sI%pww#Zk^GOfO zGX45n2IS63_Ip1p%+%BR!40lvREi^sLMAzHd*!uDeXV-^haT&GwtrkhoI|!{Mw~g5 z8xir<=f7N@H0kwqUGJ_-3?y(UH#_@O_9w%Zt5=6DC;yxrH?;yx*T?I)t5m=A*H2n3 z!xjr|m^L#r)4{71>RKDMb)8-HkJ$fzj^DmFe!TnxZKl1wy;fmR7z_%rT%^zZ&stIs3_UT_FZ}Y)yeU1d(VG| zfoc^ZA)hxO76VXcXMK1m!68PyLMSRK2ca%k$J$ED@#Q{@bASG4gMuel@fafM0Dnvb zK=q5^p$HO9)D&{cS3|Ala5%9xa&o=1x2C4X)OxX2As^uJ7-LeQ)L$eTTdWUH1gqZh z7C~t-w~)h8t5-0b!a|p|L2=Jupc>Of1rJ!sMWcMF_b9`Abn!jxKzl|-Sy>GLg|YtT zXkymfN07LuYJX;DXB&IwRC2x)0|`a`V`Bf*(3QQ+v!$TL$`Vvp6>9(s1eaTtzxKu! z_jn@~J#%s)Uo-&Hk&0hR-Lrf3S2wX*Dl1Efg6>j)0xYgZBZwv0s8LUkR;$&|3Heen zUn&wOJdsHH=NsHr(^A4>u>^wdYJkF`!TRLdAjik_T7Ruhr@O$HGW@+0Qhk&DeYYH+ zE&(JWQ6OjlsM6AImbH4Pjh*dLK+%niTwo;Z+39=DNJYr;0&9U4Ljjh6$YOO@bA4@1 z_Z?0nPS5Rl(G!d>gnG@$pzhvPSy50>QCR|l)vZx;tCMa1TSWE<^{}@!E66^?3P1u; zQPNOc$WATY)-900000NkvXXu0mjfQ^&U) diff --git a/public/images/emoji/apple/hole.png b/public/images/emoji/apple/hole.png index d053c1cca911d5c09e685061f6ae9c0a7961ca63..a0801945e5942f29a76a79966187eaabb2f59026 100644 GIT binary patch delta 640 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 diff --git a/public/images/emoji/apple/homes.png b/public/images/emoji/apple/homes.png index cf83b0e837805e98a3e1b301eb5817b2cdbb6059..72866541876136871b28b24af05fd2ac39b4a3a6 100644 GIT binary patch delta 2839 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 literal 3607 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 diff --git a/public/images/emoji/apple/honduras.png b/public/images/emoji/apple/honduras.png index 6819c5c714c789a315ca543be0ac9079311f2885..95cf4044d925142777b9f1700959390103398ad0 100644 GIT binary patch delta 1153 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 IM6N<$f=G<=h5!Hn literal 3761 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 eceU;EAO8=IQ85;`vp9JG0000LKhewD9Gcbeb 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 KMNUMnLSTZvMbkC_ delta 2640 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 egYxg@zx*GicPOSnizJBv0000-6&S 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 JPDHLkV1mBarmz42 diff --git a/public/images/emoji/apple/horse_racing.png b/public/images/emoji/apple/horse_racing.png index 6295f93ecb2ebc2cd836dc8a2d0c3cb5c73ecf66..e932deb56d12d1337bb3593edf365454a9af028e 100644 GIT binary patch delta 2771 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 diff --git a/public/images/emoji/apple/hospital.png b/public/images/emoji/apple/hospital.png index 6cf97da559251d0d1a922fbc4d0ed8185057f7de..b9802729f67ccf9950583232e7a1bcb113dff754 100644 GIT binary patch delta 1767 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 delta 3224 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 KMNUMnLSTZ+e#7eVG!+L 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 QLI3~&07*qoM6N<$f+a_Ga{vGU delta 3506 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 delta 2966 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 M07*qoM6N<$g1pp%sQ>@~ diff --git a/public/images/emoji/apple/hotdog.png b/public/images/emoji/apple/hotdog.png index 83be52c57f5f40a8ddc0840abf5253eb3a4a34de..5bc186f745146d57314abe9cd3c719d24c98ad04 100644 GIT binary patch delta 2065 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 delta 3224 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 W1#QkK55)!m0000bYV8$! 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 diff --git a/public/images/emoji/apple/hotsprings.png b/public/images/emoji/apple/hotsprings.png index 9587a66160d879c33874e0e096ebc81f2918c209..1b0de8c6dd117d51c524d5dec4613698691ddc0e 100644 GIT binary patch delta 1394 zcmV-&1F@&|rBYyyvP)t-sM{rDo0s*K72E_pZmIMQh1O&ea2b^GHx-Bnr5f9A- z1L#CUmjM9pT3f6L2;U+ivj+#80|T}L1Lrn2;0OrqXKASc0plDS*#rdUK0Vz61Iq{q z;13SvDJR|$5#$#Z;Wjj)008AkNZA<~>q|@27Z}|R48sEh&VL988F0083v0O$Y! zl59}ME~&?V*{m^3{xG@_@_6_YOu551Tc zk;RhJVZt0ar?F3woI?>J>avVn^_*`LoaDG>NUNecMp{K!U5u&Iu}_>iG3Lx)IQbuN zKH}^}L5)UiQ!?lMTKH&0#uY=OUEqyeV-w(7UJ@*CJ%96^IqOw{MsyKVyhswc3+j$o z5MT+@S?pY)aIwm8Z3Qm%?oqmL*=lvgScyPn^SC*KE*y5aU~+>CCKl8cR12}O@~@p( zgjU~-uRh#Ca<(?PWF21_fg}t#-?)N~z~#nlO_WHv%}r{tbdY3Ug?nm}i3M0LDFn!I z?gpZj0DoxC&sTj3a9=))Hfbfu19i-;mB0-t3Irn2>H#1Q)L9ZD6~F=ZnxrKu?!hg) zEYYN)PF^g)kO(U|xRdIR1Mq!nxhgw~xMDnY;1HFZQjuyE%!ghDwaIZ8lCH4qNu~v~ zCZ@TC=1MnBb<06zcNvnCnzSP(IhEbddq<~K{ePBvGN1L!`kfZBKVh!;RFmIH$uAM< z`&*NSPd}`BZZCoqTtAzwNp#8I_^a=k_UR?9dl9YFJpc4}deSmPpPT}% z`YO@BF7Sz0k?N2O%ar`+i=^y9gE#u1!yln4$s1EE#_2D9pI}F=wfd(QWqKP2TOfTy zh<~zgtmOR7Uz-;Xod5?A@sR5};Q;dKMf4^CIP_RnHXoRiZ@UbSFE$r#b}E;WA&`7} zZq{w_-hDn^&3LB-1)lL1ou~B{;M^ao>;;ccY<-Ufc53n|L3TCL$7R8cadQx{XRwdi z)C!QVPD2-*b6d2HdNVYWJ0%a9lrRRtZhr##j?RUP%0oUWg3S7)5N(Z2REQh3j>T7N zTrwe0S6$%|WVj5i&yb07J`1e?kULy5ZuN}V_z_2VUy_=jZINJ2>e{IzhT6GZ;o(-O zBD_d2K^!`kz`N@c)N*y;7`1V2r4xE9LcE{VYoFW!c&k9BbD=psOZGCAdIXJ_M}INr z)PU;wwRKcA-cJAY-Z9-u0Mr_+7>=&_=#OGP?oUhAtJaK_rY~h3&XIoghh?kI4V;^@ zvt{mn@7XJk$;?_lbjmEYsS_$sw|9VE&=KKT+0%Q}{5J`bxxoOSZxZ=cr;X=pdCuRm zNPb>^?d5<$=K%T(#suGQ59vIo-+yR?=JWKhRkbmkAo|`cSuFL*JfQCPW;;GC)AMPr z<8)4!hw-+#OR&MExdCBKl@x$Oiu-=wG+!#3rrGcBf&&gA?N^AyE8Bi%XO}cTzXlg= z`R203CNT&wsGmbX{PvDaMqUxXpuhVG#{~q%&v&<|2s)w5{+=R57Zkt0acg;@IWL$U6vHSR zwA{K8E3;)&C=xb|;84$=YB!wCfWey0`NI~a*deJy7wSOcSj~WrAAQqb)6oMBH z-da<}C>wwl4WAzsqaYR2OhvjT8JHaujv5fJBNwJ27P%!EhZzvmH7e3DCDJh^*;`fE zRZZ7aPVnI1-gb1K45!+T$b`uKHNkY#^ zK+-xeogWmH9)A^+91@lg5X~e9e=YW8OACb&@Uv*Djmrw9NIuO z+Ce$KCKCA}ybu_PFnBOAIV8L2ZakR24jH!r|0B##ykuQ4dqJTl5G zAigIXwkjdeGAFArD9|h)wvOPAyD1RHMFes-b7t%a4j2jZ(RZhb+E8I** z);=_?DAJZ%!(JLO# zDjd=*9?>ct*DW8_Eg#Y>AJQ`?&nXzr(9?>r(*exI0E+Ew} zB7e>-9@a1<(=8y@GbgqLDH8wy0OWL1PE!C51QG%|2mt~FBlr#Y9{Mk99`r%t3MeY@ zmHg=2C4<=V(ku+0)!B3r;>U zf|<;vk&FjcfFH=J>$|St(`oi3*cYE3bAQofxrHm92$&wsdyMbyU>aqEG;^6c*yH8! z{%J_)&fr`Y>Ob0$xqi+0=fK;0*H}%YzE9@-UP3mD_f>0RGr3*NlQ#S8M}wDz%*zqi znCWupy1)Cj`L}zaQ+NB2(~U~1By8oVHMF$6zr{DYaYfNrO58d|rX_~nm{d3zl7AnM z000J-Nkl;>8P~iZn@at|CLQl*8r|yuMe0_uO_FKIRvphyOdK z7O-ku=LsYx<1)?l&70el% zP}?8YlL38oReyzCs(fvO0F)}r<_cUX?HchhcQE~H6UIU>K51I*3xjUcsY6_{=dNF@ z4GO4>hA-Jx;Q+xyxnaV0b<-25^(}9D>IZ`s(!&r*)Rn7 zJ#Eq_E*t4b8e+{jh+|!ikjNBcTYX5P*dAkURKA5`{eO%j!MHVq=8@rx)(n02o4z;lgp1JcblBU_>U}TvMPo$Wf4UuZY(Dbsu7^5Hn!t# z$7>_`fqzPTS{K95f?}6B&JNJ@*SlH)5cNS$?Tet(kDO&}`Adtl`K{wh3mllB7eAJqL*-t*Tfwp^OhoFuJLb?^o77SW3dNofItI&e`kC?G9qgHl$h-45 zD1U@hrY0q(1gvjMlMGrPkdl~`sw5E(1JL@Ku$RUVXNt3lUaC6$pTN{@Tave?txHc& zNl8y%m$o%|%eK_OfABh$aT`K8_j%dqj4T{Oje9^{!!u2*QfU|H>bk+z)iuygsch9e zYpCOQpctN&(VqLgrf3P?D2~>Ea;pJm=zqhbozlUNB@+ivfW3g~XdxKzbm;h}$&m3u zfFRMXC@4vQpy@+8ACSj;s0fPe3`5EYmB;w*UFNNQ@XqZj3RARe7plN0)%Kmi_QFQn zu%eJ4cNIZkl!8RKMJgzaAXM%_Aw^-P!mqZ8xr19sriYbQjo^*+!V$IB$|Ezx%{{@~ z}>+-rn3`K_~C;?=1`iUM&#V z($Ue($$>^A$IQ>`>guwop;9Fbz?*z%HWx)536oGN&(P3{W<(kT0&`eLxU#HhOE-CA zRxTSD)790Ul7EI^MKj6D$l>$;duwId&cv&tn%dp#B@zz6xUqtCZlX!fj2WLq{K~#8NrPu{mTMZHh-~bWQP_$4AEzlMURQ8kIjk~+M;qLD4T6Nj|tNYGP zs!ML5ea|5WT6i)uSGWx4=LiJ?L3w#WMMY6bNq{>LLsQH&nmKNcXoCHaL$(D#F05i++tLv19e5Y9AWGFj9WlG~^h<%aCJkZceFMTU*n%3UWY#)^$XStgoBRW|c~1L@X8yeOR6{A=2S+ zJXM+3wD)sC!WIi+#P^UU5{a~HYi7cLR8@JsPnC|i7ey%<(P9CVBM;h*Yg#K!iSmkR z4iq42%%MbcaR*{C;~nJfm{G12h_qH~AAghVguYZn6uJTh5+l-T-&Al|pn43(oKC0Z z$mh?WUu2X0WckH1Qss>+F@X947KqnY6<$S-M_#_1{rK_YyLa!-&dxp|X9&K+zss2k-gCb}=G2~hWhLZR=pamRu;S)tovpPGS~nl7qn zLLu#x$z)vaO(BaTysgowWt|K}HGd6W42i{RZsMVkwKYKE93_zh2qRK!xGuvZ_F+dN z-PerpcWw@^J)P^V12nJ`Fj zX0!M9e2n{5`kv~hax#rkLFkMT zNI@MT8e5PY$qkfq_3)bb5=cRtEr{rj48;6e${Qp{C<&eE;8e2=Ie&kD>U=W#y<~Hh z2spo!Qn3P8ZTEz_l=FKjR2<^g-L3Hb9waO*lS=98@adXMf1|bH+ka&-x-hswP4MX6 zqhB31ukarmF)+P7hN$Z(c(i-3^j8kQ08ANfKhJx6T?RuGlx}zTF8aHAR~uz9aRg3p z4_g;0u70V$eCf;P6(a~sBA~`u3gS6XNBDhL98ym4$OwBMoqaQvh zf0BAn(&f+a;=e<1P=C(zsa|51Buh(vf>uwOLEXFT4XOB_xg=Z&f6ynmM-?~hPSjWG}RJX`+914czAIU*7o-H-ato(eP+h)ae6#>S_gEz z>MCS+1pf-fG7zX|&z^zWo}bS^GtN`z>}(c_KIG+j&aRO~B9YgWVUkSKdw}eA`}mCW zzWJXFKa4?m!@L>UPh1 zl6;9@QY~bY2qJ|+OpBP%K*xX`t#!S9+tnqP2jqc(`+vZ*!e8;{gQj}EFs5nK^fsIh zOd6fZ;UEM#J>g^?sIYcw6bb@odKzcq-oSXKGdO8DSt!geVL$wUMn@TDYZ~K0&{q~> z(&Z+|1&MS&VcMPzP5BoF68Ip(9Y=P;o9Wr z?QmL9h;(e&;`+9*s-LB`fpKi5o|4zr&gkgeds|9yQbDDhk*}tky}rG1SWes9(&6p* zw6(FQrk-z2J7h*Pt+vUUZBmeih&U}PiFk61cW$htnaabo=6~<+=kW3A>)_GMxa{ub zo`P_6LoG@;Gjm~Dy|}F9>gb=BjKRLPypwd|?)a&-zs}alpsm8NmxV?yAub~&xqe=w zlZupuc&(2x)N&doI# z2~9gP-Q3&b;o!&0%+SlqrJk234+kU(19(R%=H=wVyt%1sM6Z!^%*n;Ea7kK2DMTX> zxwNliN-fyb(z%;`X;neCbxqaK&CA5W$*q!&RWxi)GJk13A}tUFJ{${tUp~~jqR-LL z*4NjUcv;ia)E5E)b7EFuHy!2k{!uFwtE8Tda8Ia;ZGvS(cxqytlZkY4eR5VcTQnKk z!mgTMI-GuAgibD&i-2-KByCwsWJ@w6Ch8g=gExxy!t;o?$xAysBqVJ>lczl5|ri77}V`a0LJW&9Rolt({*? zKE}eopnzf9-t2l|On-QGKRZB9O;c4qGroIOqGv&sTQ_P$CqFDDTs|(#w4h*AP_&tY z(8IUD#>Uv!+_JpZRWKTbhmlM)DOxQQ91skulz)NM&BMQ{nY*NulW0+3Tx589j+qh_p08n&NPE!E>bwegP{tE;a{+Vk1BmGmrS24l<-F0=O zrT($i%GCbN71lI}gvzkbd-Phf^1*uDZ7ImMyFI?%jLg!UZ=cCx`z*$^)e*N+%B2)*e5JvS-iQZGVOz zZ`an>B`Ay5mxe#zimP&RbGv}WA-CGgtCvU=2qq4LQ+qO_sHnZDy}!LkEv%*Q$CcVj zq1D9Rgz72>Cy0YXRh(CXT~bo0B+OZUNGN36+LCP{riQp$QwgNGI>|f9 z4kgJuG*r^k5(aUeiq9cMKqLnTAAbr9^|n(AX&L%JcT`HpB2g=g8tetZ#%DC2bhu@8Z~MTD7iBbPzIDjZVwJ72RrxG z)b#bO)mJ)gg8I*P30`q=xw*M& zLM2b1*45Sh3OW2%E<<+j-mR9=&i0Xq5!G=Z(ze>+v9Yn%$(Z8e>*vp(KX>ljy?e*8 z+`D%VeuKYVzg}G2-QBQz8;O7??Giodd9_OKWorzQz&Wm1h9`kS&h_G$8^6Dlji)Tv z#d8Q6pNT|9qUYx3mR8gP8hrCNBCU6Pza$e=46?A~(0I%;m(FFl zt=LKupLC6vR!94Kf$iJ&qXi+^6Yq+)}j)21v4ybU-E z8fD5^WI&ik=KhtHg(xnXIn@dzOH>XO%5mqGVa{9vVS17*98vyIQb7TS3gK`H;Pu3V zayOsCTnq0^fKf{-JdKWzv8RWAM|niXDVZ4K5`f*>}~*3R`L z!VIFNzGWmjyno5Y1}KO>#M;`%1(l;km{GJyi@zFTVG9W#3G@dZRzh#ot*6&=?F_fWOOn65&I#B)|e~T66a$ zgb&M{(F5pZWD)RTkmj7v=D{wZG6HPAU7|UAM`MRh0e>A{WMy1yZquq|8na|bbN;UL z4E9&*!_M%mGH%nQ&zF#9)z#m0dY)0-b8=EMABMBSU7Bnz-Jb5`w6h8#jJ$ z9sgFQtVeUwwLdx~pqMc6N54SS+omxLc7N(%oH*4%(B6S#wlO2nuTE zJ%0x1=utndSiA7oFJr~h#+aC z)c3>*KEI)%0YR0MFJ+(NPiYfp-ebR`z#s^ifwYMD_;PWiuWzg%pU*GFpqQ?))-f)A zZ%cXZFde_65SS52t`YFiq`m+h%jf5pPJc8sbVpTAR*pocevNxPUfPja56~Hi-x<$= zbXUjhz(BEYq;G7jKyd8f!HLq+((aJ1#P6f;>{9{d)z^dK={Ydq>WVqyLaA69dqf~O za^yb;QA+tCBSRz6`*7Ff*8r8kjMLN8Tp{2T28tsiBV%KafCGV|j^!suMRi5*!+$?# zpUNvK85lro(bdt>v0N-JF9ZihEx;U96F{&s6IGqF^R8aKmX6jmY>)WBLMTXzJu`ve zwS%CLkVO2)uL01tYiWvI76E+~7D{~;1s%Z{cIXGcKsDl%FE-$z+jDG zBSHZOK_MX{_y=~9Ve$~XQxg+M27d=1J-S;_QE>u=&*$gED&i+YEg@*@Mh!KF8P9_5G-h`?)_Up*q*W30>H@xw$!1-MsnR zg9o=39y|E!7Kt~yugQIVUz33DYvkzO2i?;I z2M3>4MCjuz|3+KsZqw4$-~Q1LD^~t%E78s_30-T2wuQ;%J}@Jp&=$M$fjOz|S-W=I z58L&1-*&X#J%4JhS+j1Py1uryv9a+-C?7+xAB>H+YisMPuUoffjU1-ttWUVA@_!oh VNkH>^3-15`002ovPDHLkV1m2Gb_W0e diff --git a/public/images/emoji/apple/hourglass_flowing_sand.png b/public/images/emoji/apple/hourglass_flowing_sand.png index d6c94ea26da09402ec55cad77067ce3b58633119..73c09f26a37506a2cd4466b1fe211efa3bdc2d5f 100644 GIT binary patch delta 2533 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 delta 3333 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 XlO{qH#4(1A00000NkvXXu0mjf{7X(* diff --git a/public/images/emoji/apple/house_abandoned.png b/public/images/emoji/apple/house_abandoned.png index cc5cbe66eb7d1012631b851e551b0c64b97b3b2f..e67105518b70896a9cf7597de1e581718bc6ec68 100644 GIT binary patch delta 2564 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 literal 3607 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 diff --git a/public/images/emoji/apple/house_with_garden.png b/public/images/emoji/apple/house_with_garden.png index a04e5c10cbaba572a6498a224c23e89d14c95155..80ee232390a4f7c1e16df9136bc3356696b8aa34 100644 GIT binary patch delta 2822 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 delta 3548 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 diff --git a/public/images/emoji/apple/houses.png b/public/images/emoji/apple/houses.png index cf83b0e837805e98a3e1b301eb5817b2cdbb6059..72866541876136871b28b24af05fd2ac39b4a3a6 100644 GIT binary patch delta 2839 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 literal 3607 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 diff --git a/public/images/emoji/apple/hugging.png b/public/images/emoji/apple/hugging.png index 6ba2c57afe824a1080f2a6a5b02416711685c6cb..12b533e0681b5734b7c0eae9a83b2ee1df1513d3 100644 GIT binary patch delta 2386 zcmV-Y39a^$Alwp=BYyzxP)t-sM{rEPaw*bn4$g2C)N&QdZyM2Z6x3@5#c>|&m?G75 z57TW6&~6mth#2XF73PT-$X^7-U|l|NGbeq8R_CBmde+|Lt7= z%rf?u6#9`A|HU}}zA^a1LI1Wb|E(wLg%0U?2LIME|K?BejuHR;>Ho+C`JHif00;_6L_t(|UaZn*j@vL0 zfYBH#unn&Wa8JQr)aA0hrriHH8In@WtOduLmc>L$QKullNK&>U<4vZzF2bsDSeBQ3&ugW z&^gempFpEOBFv?((mxHgDYRA{tNPmMW8+UX5m1u&{HF3}=p1-mS9S0q<8M^7gA&Tl zbW*965`Ux$>QhxNb{h93r;?2 z`J9|CNJ@QAy(ZwzG#if!0d<61_;U8asAH%xjelvPTyreI9YBM2=HXHp=s^fZ8KtH1 zLJmF?GofV(=Y$YXC;x%$TIweO7${lkn9{^tz6_WnKs!jeJ{jmti2jHv2_HaOWZTq0*OT4B0Me3ie*lTZ_$`%IT7-KNEIB61Kz?cDi zlYgp2=bI~=f-#ubmfZjUbI!Yli=C)@f7&mtDorO()|#0BPPL(=@9F#b{PXo22E`@qOQ!I_nOa&ATC* zVA~rT(+^dJeUtj$WI)I20EsC3l-f=JCxNs)&qUBGhDZvQGdOluw9x*xZv*M`k{>Hb zL}i(MS_KXqSb+~iNX-zgAUWAt!@#L_``R_TB{DuQ*BwcXm7V6|y909^d)7n@Ie)+c zCxUZ8D&z>LU!>8CfQ}U`q7GStm7cGbiQ@$8+3Z9RhWuv8S!ARL=D6GD^{3uKLlv!U zAt8+g2#a%G`$4dVbHX1$w1w*=2v(#Vp&$a1TF7(-gtXQnna*dY>@-^gIyLEsoFG0_ z!Z_k9wpT#ikyHq}LTUmj38L&*27f7;w$LmAnbBY}^{6F^fG*#mKTU|Lmhq`>#I8$E}&bJ&OY5vsjYTCaF=YIHWdL8jW2)Sm2c8GxF5)mNqR=6D_i%L9ON($Km`f&!b6iP)aE{o1rp1|%t^&$;<$ux%gys0j97%jf zD7fL3yZj31N{9NwnC9tUpwQ!3raZqQ@q&Bhif*^C`T%j9WK|ydVj-sGmrIR_U!Z}` z!%%CbIEr|^E6SzsG=b2>UzWvDV^Kj;jvI&;mR|oxIv$Q8$r?!vH@JLJM$Ek)s{&QQ z>XrGbEO4-yyVyjzsDDQ*OYaAq!Ei{QJuHJh?I;#>lJXdknu~jPS*}*gIkH@>N-!9_ zx&%=_(96l|%fG*9GfS%(erD$*XyWDl7bb)dhInSeqk#1>P zEu)l2FZ3*ZG>}kf$XpiN1y}3sc1IStJ{Z_;FDlQ{sAhbz*?)LX=2(8zJk8S4AV@0e zQ63tQB8^8Id*QnIma-Eef)oT$Y@h8oj>wUfiH0iBP?O6{m@QP79(CV?r=c2Wc%h^B znn0zK47AVh} z=#S`&lD@wev8pl-=}S0gDlgKX=e8p4#{^ri)vkg5=zm=5kKDr<2sxwk{Poe4N2E6Drti&TEy(>i6|FX z6PLMQFn=0HnQfC3g^D2@$9dM1lBajB#{8M4IVsHD*P zP`~vj1Jo{%@o13+2vSJ}DY!2vy73IH&GWN_M)1Vp@gfS>HR?u#MG{W76ZMW0xl zY9fd0?ebv(6d6&J;b=T)UxI2LQwP{XL#Oe-{7dG^VEA_Nh3Vse`PG>D>|!rD6!T_$ zw@g|*$?S=qy5~l^fqs;KQu;1OgKx;+CXw=e+JBS(1GiMKNdSDZ4gdfE07*qoM6N<$ Eg558w%K!iX literal 4114 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 QO#lD@07*qoM6N<$g2wtWLI3~& diff --git a/public/images/emoji/apple/hugging_face.png b/public/images/emoji/apple/hugging_face.png index 6ba2c57afe824a1080f2a6a5b02416711685c6cb..12b533e0681b5734b7c0eae9a83b2ee1df1513d3 100644 GIT binary patch delta 2386 zcmV-Y39a^$Alwp=BYyzxP)t-sM{rEPaw*bn4$g2C)N&QdZyM2Z6x3@5#c>|&m?G75 z57TW6&~6mth#2XF73PT-$X^7-U|l|NGbeq8R_CBmde+|Lt7= z%rf?u6#9`A|HU}}zA^a1LI1Wb|E(wLg%0U?2LIME|K?BejuHR;>Ho+C`JHif00;_6L_t(|UaZn*j@vL0 zfYBH#unn&Wa8JQr)aA0hrriHH8In@WtOduLmc>L$QKullNK&>U<4vZzF2bsDSeBQ3&ugW z&^gempFpEOBFv?((mxHgDYRA{tNPmMW8+UX5m1u&{HF3}=p1-mS9S0q<8M^7gA&Tl zbW*965`Ux$>QhxNb{h93r;?2 z`J9|CNJ@QAy(ZwzG#if!0d<61_;U8asAH%xjelvPTyreI9YBM2=HXHp=s^fZ8KtH1 zLJmF?GofV(=Y$YXC;x%$TIweO7${lkn9{^tz6_WnKs!jeJ{jmti2jHv2_HaOWZTq0*OT4B0Me3ie*lTZ_$`%IT7-KNEIB61Kz?cDi zlYgp2=bI~=f-#ubmfZjUbI!Yli=C)@f7&mtDorO()|#0BPPL(=@9F#b{PXo22E`@qOQ!I_nOa&ATC* zVA~rT(+^dJeUtj$WI)I20EsC3l-f=JCxNs)&qUBGhDZvQGdOluw9x*xZv*M`k{>Hb zL}i(MS_KXqSb+~iNX-zgAUWAt!@#L_``R_TB{DuQ*BwcXm7V6|y909^d)7n@Ie)+c zCxUZ8D&z>LU!>8CfQ}U`q7GStm7cGbiQ@$8+3Z9RhWuv8S!ARL=D6GD^{3uKLlv!U zAt8+g2#a%G`$4dVbHX1$w1w*=2v(#Vp&$a1TF7(-gtXQnna*dY>@-^gIyLEsoFG0_ z!Z_k9wpT#ikyHq}LTUmj38L&*27f7;w$LmAnbBY}^{6F^fG*#mKTU|Lmhq`>#I8$E}&bJ&OY5vsjYTCaF=YIHWdL8jW2)Sm2c8GxF5)mNqR=6D_i%L9ON($Km`f&!b6iP)aE{o1rp1|%t^&$;<$ux%gys0j97%jf zD7fL3yZj31N{9NwnC9tUpwQ!3raZqQ@q&Bhif*^C`T%j9WK|ydVj-sGmrIR_U!Z}` z!%%CbIEr|^E6SzsG=b2>UzWvDV^Kj;jvI&;mR|oxIv$Q8$r?!vH@JLJM$Ek)s{&QQ z>XrGbEO4-yyVyjzsDDQ*OYaAq!Ei{QJuHJh?I;#>lJXdknu~jPS*}*gIkH@>N-!9_ zx&%=_(96l|%fG*9GfS%(erD$*XyWDl7bb)dhInSeqk#1>P zEu)l2FZ3*ZG>}kf$XpiN1y}3sc1IStJ{Z_;FDlQ{sAhbz*?)LX=2(8zJk8S4AV@0e zQ63tQB8^8Id*QnIma-Eef)oT$Y@h8oj>wUfiH0iBP?O6{m@QP79(CV?r=c2Wc%h^B znn0zK47AVh} z=#S`&lD@wev8pl-=}S0gDlgKX=e8p4#{^ri)vkg5=zm=5kKDr<2sxwk{Poe4N2E6Drti&TEy(>i6|FX z6PLMQFn=0HnQfC3g^D2@$9dM1lBajB#{8M4IVsHD*P zP`~vj1Jo{%@o13+2vSJ}DY!2vy73IH&GWN_M)1Vp@gfS>HR?u#MG{W76ZMW0xl zY9fd0?ebv(6d6&J;b=T)UxI2LQwP{XL#Oe-{7dG^VEA_Nh3Vse`PG>D>|!rD6!T_$ zw@g|*$?S=qy5~l^fqs;KQu;1OgKx;+CXw=e+JBS(1GiMKNdSDZ4gdfE07*qoM6N<$ Eg558w%K!iX literal 4114 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 QO#lD@07*qoM6N<$g2wtWLI3~& diff --git a/public/images/emoji/apple/hugs.png b/public/images/emoji/apple/hugs.png index 6ba2c57afe824a1080f2a6a5b02416711685c6cb..12b533e0681b5734b7c0eae9a83b2ee1df1513d3 100644 GIT binary patch delta 2386 zcmV-Y39a^$Alwp=BYyzxP)t-sM{rEPaw*bn4$g2C)N&QdZyM2Z6x3@5#c>|&m?G75 z57TW6&~6mth#2XF73PT-$X^7-U|l|NGbeq8R_CBmde+|Lt7= z%rf?u6#9`A|HU}}zA^a1LI1Wb|E(wLg%0U?2LIME|K?BejuHR;>Ho+C`JHif00;_6L_t(|UaZn*j@vL0 zfYBH#unn&Wa8JQr)aA0hrriHH8In@WtOduLmc>L$QKullNK&>U<4vZzF2bsDSeBQ3&ugW z&^gempFpEOBFv?((mxHgDYRA{tNPmMW8+UX5m1u&{HF3}=p1-mS9S0q<8M^7gA&Tl zbW*965`Ux$>QhxNb{h93r;?2 z`J9|CNJ@QAy(ZwzG#if!0d<61_;U8asAH%xjelvPTyreI9YBM2=HXHp=s^fZ8KtH1 zLJmF?GofV(=Y$YXC;x%$TIweO7${lkn9{^tz6_WnKs!jeJ{jmti2jHv2_HaOWZTq0*OT4B0Me3ie*lTZ_$`%IT7-KNEIB61Kz?cDi zlYgp2=bI~=f-#ubmfZjUbI!Yli=C)@f7&mtDorO()|#0BPPL(=@9F#b{PXo22E`@qOQ!I_nOa&ATC* zVA~rT(+^dJeUtj$WI)I20EsC3l-f=JCxNs)&qUBGhDZvQGdOluw9x*xZv*M`k{>Hb zL}i(MS_KXqSb+~iNX-zgAUWAt!@#L_``R_TB{DuQ*BwcXm7V6|y909^d)7n@Ie)+c zCxUZ8D&z>LU!>8CfQ}U`q7GStm7cGbiQ@$8+3Z9RhWuv8S!ARL=D6GD^{3uKLlv!U zAt8+g2#a%G`$4dVbHX1$w1w*=2v(#Vp&$a1TF7(-gtXQnna*dY>@-^gIyLEsoFG0_ z!Z_k9wpT#ikyHq}LTUmj38L&*27f7;w$LmAnbBY}^{6F^fG*#mKTU|Lmhq`>#I8$E}&bJ&OY5vsjYTCaF=YIHWdL8jW2)Sm2c8GxF5)mNqR=6D_i%L9ON($Km`f&!b6iP)aE{o1rp1|%t^&$;<$ux%gys0j97%jf zD7fL3yZj31N{9NwnC9tUpwQ!3raZqQ@q&Bhif*^C`T%j9WK|ydVj-sGmrIR_U!Z}` z!%%CbIEr|^E6SzsG=b2>UzWvDV^Kj;jvI&;mR|oxIv$Q8$r?!vH@JLJM$Ek)s{&QQ z>XrGbEO4-yyVyjzsDDQ*OYaAq!Ei{QJuHJh?I;#>lJXdknu~jPS*}*gIkH@>N-!9_ zx&%=_(96l|%fG*9GfS%(erD$*XyWDl7bb)dhInSeqk#1>P zEu)l2FZ3*ZG>}kf$XpiN1y}3sc1IStJ{Z_;FDlQ{sAhbz*?)LX=2(8zJk8S4AV@0e zQ63tQB8^8Id*QnIma-Eef)oT$Y@h8oj>wUfiH0iBP?O6{m@QP79(CV?r=c2Wc%h^B znn0zK47AVh} z=#S`&lD@wev8pl-=}S0gDlgKX=e8p4#{^ri)vkg5=zm=5kKDr<2sxwk{Poe4N2E6Drti&TEy(>i6|FX z6PLMQFn=0HnQfC3g^D2@$9dM1lBajB#{8M4IVsHD*P zP`~vj1Jo{%@o13+2vSJ}DY!2vy73IH&GWN_M)1Vp@gfS>HR?u#MG{W76ZMW0xl zY9fd0?ebv(6d6&J;b=T)UxI2LQwP{XL#Oe-{7dG^VEA_Nh3Vse`PG>D>|!rD6!T_$ zw@g|*$?S=qy5~l^fqs;KQu;1OgKx;+CXw=e+JBS(1GiMKNdSDZ4gdfE07*qoM6N<$ Eg558w%K!iX literal 4114 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 QO#lD@07*qoM6N<$g2wtWLI3~& diff --git a/public/images/emoji/apple/hungary.png b/public/images/emoji/apple/hungary.png index 9afe52aa20e74785180360fc1e795b76a632a25e..773bdb0fe598a76a7b517ea0237d1713590ef8c8 100644 GIT binary patch delta 1228 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 diff --git a/public/images/emoji/apple/hushed.png b/public/images/emoji/apple/hushed.png index 8b7a822b70a5b1d7394994de3b526ac6267fe9aa..c3d25b05bb0234dc4fd1076cb9766bf94c9c6aeb 100644 GIT binary patch delta 1750 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 Y0Iq`c1S?eMJ^%m!07*qoM6N<$g4AD53IG5A diff --git a/public/images/emoji/apple/ice_cream.png b/public/images/emoji/apple/ice_cream.png index fed3c0200829c0baf907a1808ab38d4a230b9b35..88f29ef57fc51d57829befa7f648900f87bc0fe2 100644 GIT binary patch delta 2179 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 literal 2411 zcmV-x36%DUP)+9_B z@!8&&KFK_SLr~SX>yu_kP09qxdHW`co?(OyP$GH8|`%BElk(X^h^$%*3 zG6T)x{=nD$_5=1DA)vnQ>hYS|_A5z;tl|c~TI>E>cy_UYL6*gbzZLX;O>t-@pnWiO_B2qu0 zgeiYz4MGfGX?8w}c%1xjvt2FP`0UTy6n1;KY z2}x##G|gIP&A!qTq}RNjb^BEzSAp#Epdz*|4P`kk+3* zvbXhvKxtjio$Oesf@mj@UhzJ=Mr| zOvbjKYp;t1`3Qjr3*gbvN_M#bH-Tp@0&rAIplel7$k{ub^R#XnHBX5X#%FS*YO*(Q zeip8%#$KYeQ09)J8qBc_7vy-4?~iQ zEP`hil;=eb62jzNh%{1-6Nu^@eoo+#b+G{pRYbV6?IuI|mGC%P;EE>DCy@@Qfug=# z8WoNuiEvK9wLP1)j;6RG7%~YSWdWdFsON6BCVhV9LGD`;yt`MZStf1QsHM1*SfMoB(^EENjzqJsol2AxDljWYIfu3OB026b2r6wb z)6Ck$k(L~!0+k7ya;<8(*JmUbtbx*>r4U%g3`yV3QRpd;_3bW>dl&?P6fDI9NqGt} z2g%?72AQ5x&MC5_0Z^)}vX!%^8?0Hg*QbtD2Nb5yqR2N-Abq0RPaqix86W3vV!h#Z zqONAaF3_rM?CMi@@z`K5w9G54b4#H?+WMajDjXyXT$!P4XC|4<1feP$Hya%i>OoSX zQ7|RcGHsnJTvyp{^r-V7g}I=<+)&TLU14AA73t z(+MHZWyNs-gk4IB1ZrJ+7V7(TJ4I3IUP>YNPiGnkq!{ z57c|3`r_%@lFpXo02xsDKybiT(*|ys&QjSLkfgqns0h%XA`cT-gLEd*eU1o}GmlXA z3+QZEZA_VgJ#;ExNgAmGi4jRHmc$*23ug%eMy%B|Dk>4PnL|JiEQi+A5$WC6mu4k7 z7GM2zAtU_VTCt0yAk<1KTTEG3Ac3UP%Zzk<vM2W}G;{GxAeQ|^4D+xt#CwT>PHGR|fq`~ixSDU&|h)DHM zq+l+M%eo*rq@Z6M%+W;YPsb~it)wD+Ak|uVeP(Nq=B=aM9JLfj+_7;b@u`MumUOd8 zIZ`9XaZK>SvhEhQmGGeB7&(%t#@SOS062H^4h`z!DOJyMYKb#R672wPUFseuM-n2N z<{G^=D2m%Yj2hIX0clPuCp7bMk{x4APP8687P^?`@`$QRWm7jzQ`1%{Q1t^zE7h6m zDw@YbGIjIJtexPk$vF3sIiAhL=6ODyPEB3co>zxgQcYb&%dC17bz-!%2DF)V@Pq8r1gEj>YY60DF)InDtk6VsZsZeb*(_KRbZPK^=YUSCT^FntD!5W@WMphdY64`yMceh?k3` zLa|L2qF!Q1RxA(2yWPngHLgjP|zIhTzCQIu}pS$2zo=yb6iW zE3w_ob~T}pIBEoI?ks2?X;CZxDX`0AY@NEUC4;PUBSRWa-W_C@&J&8Pv)fF(9tE_0 zPm=L#`~oStk=hx-)gC}s?KgM z*IGxiVHzbY3hyA-3>M{q)zfzLE;8qzl0>pkTgil0KrwpM{w-Pp<#|mvC8^8ZqgOkf)KapTPEhH{Mmf4Yq^z3_*4=OPv^~7Per$X{R0{+Hl}B@y9(c@Mshlbz zwR3|h@_P~Qm8^5LAjp+&m~00_J%*c#4|3uJWTzJg`X989&Bl*(aHV-{tY`rjT*R`c zON`hT>C dsOWyr`49cP@|R-sSegI;002ovPDHLkV1iDMt%?8u diff --git a/public/images/emoji/apple/ice_hockey.png b/public/images/emoji/apple/ice_hockey.png index 69497333ba533c85da193440aefb870378c753a9..a72bbcfecdc4dee31796ad651f3f0fda7f379f8a 100644 GIT binary patch delta 1683 zcmV;E25kA@5uy!{BYy$rP)t-sM{rEcg@=lMcSuP|tnBRR>EnO5*1oE$(B0nQEibcf zFN}_c%R@uwNlRm8W!H9h+0@Uba#FIkxU#OP&^|xy(y6F&KdrH{_N_c&Vq#5CPr$mm z&st2fwz%Wu;`R0J=H%Utkd9kjU80kb!&+17=-;SwS&~^RZ+~%fVq#+4!l2wPF68Ir zY;JGeOHAC}+g@H@&MGU)N=xPC;nSU9mzk22m5$(MXWD6MlV*gAh-z$YOHouvNlK?~Lb7#2&CSig%E~k~ zG||%1#Ky+X(0|XFT`leH=FFF3Y;ttmtas(Rj{D@Uv9-D8>F3v7UiaLm_pw5kWj)D7 zNybG+`RBCz>%TNMIJ>{VLPJBHo|dhzsK9wNx45yXs-&Z(o$g;@EG;cFGc&fjyf`;E zJUl!jB_&T#P*hY@>u71Pw6(Icth>Fn&WStgR8`j2*MGvmy3EeX_eV&-#l_2kGQ@y6 z?>9NyS6P^tkhHb0-P_R9 zOi#CjQs$;l%&>`=WjVr>VWMCssA@9%%4lI>Vff*p>|;Z~hKRhEmp;dudjJ3cWpq+b zQvf3v{(lAi0}%@T{rvv@RbDnQi9nny{rUUvs2gX<_5QtAnL1BUK;1dqQQ#VFut0Rl zjp5Jlf{vsOqJ5E)UDj#(4%WOV(f{Yi(M^t4rb;NA~?W%ETxkMHw)r7KjZ2|OFst8nC*E`P>=fivpWk>w|L zbkK+1GD()txluXObLBpgy!i-qOzwwyvM&`rgD$2c!(j$_*n0a%c``+wLoUrQluw1p zzJITf#Xim#!zmJdK-1o0iX_pSCm!a@;qXldve8VlbqZa~Q(MdB zKIlRg8$Msk<*ePv9PN~}peX_wwh|55_5HQF`~C7isEH04lz;0BepJHK^N2a z*4C5aBDz?&aV;snk4G$tMa;OKOfC}0pb-#DVh}T20I_T6Vp>@Y!>u@SLlSc%bJQ1V z$rgwqXVxgTT9@_6oUt3ZR_kjVjn!J$>LWNByHcM=BytM7f^g`qKPeb3^-@qdf~ zXI6{M@ffXpmLJf?mivF*vsk*3y_Wm?v#ezn72})-PPOvDeah<%0fNvH&e1QI7CIG{ zHT9g7K-j09)1%jip3V(D9s23VUzQHC?9R@r=Y$X-c)fGFLEYdWe056)+u15>T3x-b zKglqbzk%zek50D>;WEr-rONJ@R)1f9a)SSaobwB>U+?O6i^XClQ^*tw8M-OB03&hK z5 zFdBwy(hZ*B&4SQ4lILT19E)n=31G?DfFx`RX76oD0T9RV&8A>xc-l*ID`L#-*Y_?iu_kX!GfYJaG%njOnb&QY%9I;p|7>UZLguI@FW`IxtRpsmh zM@TaQEdb?`@Ay|8&x4^*NFr(Cz>*SG0NFof*-be18G!J-KwrExOuRiCkA)(UNHj{x zC-xPLy}M$DiWk_D{Q-tO@A5Wf~DN{{dG&# z-iZcdK^X-BB1Of0O0TV3u2-%H_eX}+u!6tcBg2|d5at~WK_XOqB|+T{C_ei=V?74F z(#gr^0D{1}sQ5-gqw$?~zqLI+CWWN#?%GbjbGv8mh1%^l2vYZE+(<70!}z3sV8A~) du2!1BACM|%@>xFV&}DN%a6+SrM2P2i;JF_ zmebeOxSX*3GR#w)*scC9!mzk4|hku!zoK;v^wz#@vWMq+&i_vXr$6Q#; zZ*9pvHpxv$(O_Qe>Dt6PGw{fMz*JDz*VXH*PwwvNyh%sj-`r?vY(_~*s()C`q;!Ug zi9<(8o1deMkAIDnmXSk7M$mF{>bGXtL_NVgHNjR>)>~QCWMbmtm1B;PifnRr&7x{uVPepwZ@0X>p>|K@#F$D=O@E(&V1tE!-n^9enI>Cj4n`=V!^zgbkGCx2<_UF2| ziHgE*YWVBLj$JY#BP3W?S6^RWH#auDz`CfQLArxT!NtVoVqV>IapqW4 z#fwQNCMCXtLanf|!ctK4^X<;h%hc4Jp(Yq7Gd z(n37oQcUaW<)(2!jEsermygk#Q`p(r+NE3HNI}$7Putto!HiC_iCoc_PsN8s$I8ju zWm%A9Jjz{L-QeJ*epb1YW%ImU@XCR@#K!yk^~0rp&Ay-L;LG^VbjGiYy_<3L;ip6Z{rvtd?@>7#7hx?` zJcR#XTSG1U{XNM0mplGIK>FLfIsI>yq*S%tH5}BE-n`mvnB1(}Q1oYtclzr4z;>#L z#Ch;iNS@KItNzZK`~B;Jv00JD*T?DI=YRIZw($JxSmAeqr&6<#lhnL|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0 z|NsB~|NsC0|NsC0|NsC0|NsC0{vcvirvLy1#Ysd#R9M5Un1@%BR}{cQ$oPaLgnt4B zSpo+vdoQ7-R@q?n=+RcKv*XlSwR`Wq_W-gN4at{4$bbY0TLU4Cu=l32oZb6K{7xqt7RWcmwu zG1AtdX35ZD2WZf3cQs2ScWl5zY(a8hBQ(ch>l8@nFbNMa86ILAZa*hmIN**$$ENya zvNRkz7St@0;Um^BI|wgE-9Ob|Cff`9J`<3QLCt4nx8fl-bha!2{wR_+5B8Up?S(&z zm{=LS7-D}n5Tm=}B$j3e4Szba9TzbICPoi{7eg`zWpsKP6@Hp+m(c0&;2`$kbU;8b zE=TcTaPWTUj!}Ww($f97hy}Oh9D(N8eLA?*ma`dN%sptjtqljU^sI%pww#Zk^GOfO zGX45n2IS63_Ip1p%+%BR!40lvREi^sLMAzHd*!uDeXV-^haT&GwtrkhoI|!{Mw~g5 z8xir<=f7N@H0kwqUGJ_-3?y(UH#_@O_9w%Zt5=6DC;yxrH?;yx*T?I)t5m=A*H2n3 z!xjr|m^L#r)4{71>RKDMb)8-HkJ$fzj^DmFe!TnxZKl1wy;fmR7z_%rT%^zZ&stIs3_UT_FZ}Y)yeU1d(VG| zfoc^ZA)hxO76VXcXMK1m!68PyLMSRK2ca%k$J$ED@#Q{@bASG4gMuel@fafM0Dnvb zK=q5^p$HO9)D&{cS3|Ala5%9xa&o=1x2C4X)OxX2As^uJ7-LeQ)L$eTTdWUH1gqZh z7C~t-w~)h8t5-0b!a|p|L2=Jupc>Of1rJ!sMWcMF_b9`Abn!jxKzl|-Sy>GLg|YtT zXkymfN07LuYJX;DXB&IwRC2x)0|`a`V`Bf*(3QQ+v!$TL$`Vvp6>9(s1eaTtzxKu! z_jn@~J#%s)Uo-&Hk&0hR-Lrf3S2wX*Dl1Efg6>j)0xYgZBZwv0s8LUkR;$&|3Heen zUn&wOJdsHH=NsHr(^A4>u>^wdYJkF`!TRLdAjik_T7Ruhr@O$HGW@+0Qhk&DeYYH+ zE&(JWQ6OjlsM6AImbH4Pjh*dLK+%niTwo;Z+39=DNJYr;0&9U4Ljjh6$YOO@bA4@1 z_Z?0nPS5Rl(G!d>gnG@$pzhvPSy50>QCR|l)vZx;tCMa1TSWE<^{}@!E66^?3P1u; zQPNOc$WATY)-900000NkvXXu0mjfQ^&U) diff --git a/public/images/emoji/apple/ice_skate.png b/public/images/emoji/apple/ice_skate.png index 99da4e64db615663bb7f588122aae9e9f8bf9834..837d00daca6db639498ead25c4f92083a2e82a57 100644 GIT binary patch delta 1772 zcmVFe!vhCj{#0010xQchC< z#jZa7{viGiul`bMo7{2li%u|#)6lWrwB_e;gV?YD00rPlL_t(|UhUY|dKyU(1z-Ua z$iYZLk~{b0NPkj#{}`f2m1!=`+cgXn8CjLulYZHuh;8&p7)=O-gwd- zOy~3YqwfBFkMZD<5|XAmB}@f_{@*p}J`xQ?stBc&a84fE&*n`YNdQH(R=^NNg{*zY z8MQ6br8LkO1rQGcmS;(pRsKV}*~UyEVWYUxNf^dSmVY~(j$1(!PSnv+EOjD;N=I_K zXa#k-0!Z1xl%OJthGComB-%k8fKalHxKvJACSjKQPBm+F)>Ga%2ohE^R{MGG`*pj+ z_U1?E&`C%s-WX$~-D>yd6d>!^W1<`sA!{~WwuH_bQCbADEGtLwPOCK%0O?aG-TGM^ zCsi$Yy?<;8p_H0mT5&D+L%T@A8U0P8G&K;@&c_fWSZ%+WwS+8#6hKU8VG@T)S!P+A zMw14z(L^#uMP639FQ;A`h!NuiX%HZ!iKy#ZFitq3y%sCkMF@ld9V6kLjdMyxE#|i$ zcfZ3G0)dU86y717+^;1QH-AjLDb*G#iUJ^@G=J3vE8()$Qp)_+N&p}5$eNa#Q_2-K#8Ryf|Z0$Nm4#7Z=8&g;0Wz( zBg#^za`LRqom%k8!|1jfwkis60(5MpR0~On@TK5HI#S$p-u)?u$<82@sE`78sjdJL z&VN(?mYY$EyJMjO)2x%C)Jd|+uVKj1kJ4CD+-0DwWP@T#QxS(C3SG)f|>Nmgc6unQgs<3C^{zedSWq-kZPf-tVYR4NN&prq2l_VY7E>>BbOa_B@+ zYN*3b;e1=jPE)vgVd7Jbe*;jTg&vHrdM$Fl7M#<@LMbhbWAeGvI*g(O+JVz-Y=03v zjxV4Yel!K+5Y#Lc6v$X;O9P(eg@!3@KuWbrgTeWL_fedHRpWT3mn~(bPfWm6noLuYdm$Co!&FUUNcDk}36RQc%t{qD@PLQl09v=?oNyn51+VwUj+5q^@Hm z$ZmV~J$z;wg>XY0!tbP#W%Sg_>Zg1Sx_P!BUXZ zfC!~97-esZyKkTmO!U!cap?es{R!+I1S-J`gN{N6Cc7TZLi_0D*;rtPW`DEnzi~A7 zYPLE>o=HDj0dRTwBg1^`!`0pW5J{wJ391dszVoCQE+*`U)*) z_xI1ZKIVtZklh5uD zqUs{VhGL9=MoWb2+Nh4}`2NGf?(bsKJ!H@w+!FY?LnfWcWU)AW&;19o^Pn_!zvn^# O0000~sVG delta 3545 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 T65g9g00000NkvXXu0mjfWw1a} diff --git a/public/images/emoji/apple/icecream.png b/public/images/emoji/apple/icecream.png index 8fc4c2e009dd4a2293ad3448afaf65ef0e22397f..8937491bc22799f48b9700af5eeeb293d540c8c3 100644 GIT binary patch delta 1660 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 KMNUMnLSTZj?yhwJ delta 2634 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 delta 2686 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 diff --git a/public/images/emoji/apple/ideograph_advantage.png b/public/images/emoji/apple/ideograph_advantage.png index 99d52856e51884e7538a9e868622ccb40b723192..6115034cb1bb3f1b28f360f67280c15d09100894 100644 GIT binary patch delta 1353 zcmV-P1-AOb7~2YvBYyyLP)t-sM{rEj2m;aw0n-Qq(Fp;}5d+T%1LzG0)(8R92?5py z0sjF2^aB9rEhhgA0sJ#6{vj3qSyKA?`uV@ z8_~{fvOx3<0dfztjK#0DlW~QchC4wDd5Rr)iqc#|CN6*k_YRo+aZJb&Mu&-DmK`N`DX=qU%L*TMVF%!Q_Ukc}LGg zq951lGmkt*)5|hFwyQizjDvo_)2;|U2j-N40dJp>ZB?E7A(})y;*o;mAkj6B0H#c?V+M*e zqCcx3*?*Jsq*2d}Fey>Q(PTujG0@UebqR^8TW@lkiy)Hy8;G&FXGG6Ky_G~&wm^#@ z5_?B-%s`Uz6n7q>=rfOBk?xW;3&i=*YR@Dp9wx<3FM`^^pb;UXZrcOIA{{Ji2oA7L-guX&uzlvYgT+BD{_^Eh^R@{B#LN|Y`9d^ zeDsq)dUnUNMynO5Euj@p}b9dZ5y&o2-qbdii|{}g?45s365=$C_MQufz8&5 zrcK*$DcKHE>O|t@gUCpP9xANAwL9F}c&bB?h=E8md9s}IrrPBZFB8p8qMvqK{Jn@0 zg|E3sf=7$8C8WShGf{X7w1{p-T9lUQf`7ch?Sa?0lnC5xmM#s8(V|b3AnLdQmS({g z(TUOm9L2V%2GR9{=;!1pkv4TI`29hmWRNRH6iH;5mG*K@o-zMvRpjv`$}gAO65NAl zy1b-15!`Eo`Sd4U%6~;!wT~9D0B*I$ij4TzqHHFDTdiZR$dxFowuH6rwS!+r8-Jp> z#GBDId#3k^w815P#}~?Y-Xev?K8p}GUaD4ZuOq6=0uR-;A$dO5aeus3i$t`BG&b87@mxvEDuX`(Dxh0;T4M>tQlv39 zUNaY2rv>4zi0nj>YK;gKr2=*| z&esP~q!L`1^GzE2Pe)@uQ<@dbx14`DtYfAm_#Y>KR^TIt$A|v`h&T{!cMU`c00000 LNkvXXu0mjfjgym$ delta 3135 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 Z{s-eWV$upbvcdoW002ovPDHLkV1m-S9#;SW diff --git a/public/images/emoji/apple/imp.png b/public/images/emoji/apple/imp.png index 0e7bd1fdd3ba950528bc9b8dc43f30b5d961aba9..106037c09b5964b55a3320621c23bc1c4858c89a 100644 GIT binary patch delta 2179 zcmV-}2z>YO9*+@_BYyz)P)t-sM{rDE9BW+@Y+Dy;b2Nfv9B_?Cn{6t4Yb*Zp431ihBi;QxsY0tM`67jI~|J;-v3i264)N+P!tmyl2nDan*$c zpOPS|jT5Dm)PMW^0000PbW%=J0A$3GB|1+277MT1+3T3uaf$BTv8~RX!%_3o=l}o* zFG)l}RCr$H*ynN@Z4w1wkq3~llE2-_k(_hR%E|Wq-^`xwcLFGsUH*RV0bIxoPo3_8 zDV0u6q@;B6FOwxAo0#Nd*?;AvbH%uHB7M6pwsPseXMd7~R;GBHBxq99mj6k9Ra=sh z$)qHGQCd3hwOhqW4bWxnc9PLbR~N~Tqo-ntTs%*S=Mu4$^r6l9KP4T`ts$V>BBb)w z_q24Nq!RIbr7{{-_(o68^10YS@of6y%A2uMW5_@yNP5>BUtOe=JcAUApH=*fD8Uc; zL`n>tzJK`d)GIeN;SluAsQFS8)cETA#YH+6e}eE-u{FIX4;4ij%01m4Ri5zQXNmLk zi|<#{u~(ky!U-T>YH7MY>y|yQG=HME*vp~2IE*W|=R{SsvRCfTnqV^I0J=<`WUm>5 zRLt0*n!5djR5Y2C-C@AGJ$`k*ZtA**I&iqqH-Bt5!4RZLagJ7Yg&bmBcLm@`TDc*m zX_AS&36YU|U*Zk-9{tWSU*G9K_>0r)%PdmrFfaZb9O6cAX6%>AD69 zP76#4>Cz2vDIbN9F296BaO517@J0+4CV%zKphEK{9Lj7q>(08I$mw$MT4`2dsa-)O ze>By1dD0JT@=Vy}>Rf1Dy2@M11=T9AJW8eMbMlnogle7Lw@ud$tBAp$|T7TCy zs+4^-Dc+>_n3x$C7Y<{ldYTW@AaI11EXL7Y1?yDP%l9OtHj}FIArUiQ~yC zHk=;>g-)Q1$KIGNmKdVreh_rL?ree}`{u_FNDQ$fkSIh&5)Qt(v5#lV;+&1_8-hXy zZCH5-LKK%ehA>;~U`5AJ$N+eKcz@;K2`ruuod{wH&{MReG$tFt5fHuuCDS8B7;k(- zL@|@TK|!ONQRVOh5EIZ1J58--sD`uYG4mFMNV(-0s%qG%BpQuIPyM_U?mBFQ!DgD; z;28V2=QrG+Df~=!8X`rm1c#w$+c|=QLbI~jyDu7~IlC$uRhFuQ4G6XFw11Xnd4_e1 zMwLpxA3)g%f-@_77;3e2KpC!8MJ##@95Bva!LGb6tvej8pMDRCLLSc6>)Ug6w^19a z+p#!sz$h5;^~<50C8~o=OcT) z<_(F#ECo(obvh{YNRPV>;CfVvptXRa(;ow5141ElDhgS9hSbH~BOE-eno5vU<#kU@ zsYxBgE+EQX)lj)2pSOoGLHgQeD1V+k_|nej44DiK zo~xZbL)?gC35XiKygp1lv&7K+=*lL=C&l;BmJ1kFKq3x98|!)CL%M+a2bYm-E`)|Y zWDTf6V-q@eTV9&tLnc8QAl`MDbB5Z7(BrnDV%HI5)f#GJV^xo!`Mk(0ik38)w=`{8 z>H*pjRJA(Wnj;)wynpVEv9TE10V#qIG9l_Y5gq zNl38nI)lXk)!1Q(3Jv9+fF`#n^r4cF0P(s-r!8Guo&5lkC4V*q$agYfp{P+d9zo%7 z*5kry(8k~p+a&1P4Hp-kmTt*>6xysYQ5$-x3xOWx33E4piu1OlcY0%LJ8At=wiR1T~!y` z4X%&d!7g$LN`GLmPjc>8>J7P*s~Xz@5DF}J({TJgL80LHkgwOoo!sr>d2kqI>pN}X zR<(lw5zARAs6+ety#why z*mytzTe&MJ%ew!@D zJ8dxq3z(lJ6v1RNg(MyK2a(QCsTC~7*nr|QxfC&fm?T=k0*35yX9Y~YkYeP|lT8;+ z(JRU(lR2e7viwD)WV%quor>fNu~ZUe{x(_34~+lU{12Xe#|2;pRd@gZ002ovPDHLk FV1k0r6RrRN literal 3952 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 t(1!MRGS@Ci<8b*@hVj~WlKyiM5B> delta 3063 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 FV1lUdLqGrk diff --git a/public/images/emoji/apple/incoming_envelope.png b/public/images/emoji/apple/incoming_envelope.png index 1e51985d4bf16935f9787867e0d4fa0ff184c516..a53e201e599df6e24ab853b615f6a0ed427acb0c 100644 GIT binary patch delta 1611 zcmV-R2DJIZ8`}(!BYyymP)t-sM{rE(>gnt2>*?v}+1S|P;^N@n-oCrLva_?hxwh)+ z>F)0C%gf8|?(V(3xh|FKU8Us6$;!XKz`44*s;jJ`qotUcn&#%_;NRcv?CaUt*wD|+ z#KgtY)6@6%^NNg)7E5{!L2PY#gg;`06I6;@gQ$q1xF21U4u3jdmA29dGE@pLP9SKf zCx6M-)X-@OvcUiV01tFhPE!Do-E&A9FAV;+!&=;`nS$Z}W&i*MZb?KzRCr#jmg#ca zHWY;`Qwv6te_&s@FIsG;egDVnxqwL`Qj?}mKf<0dX?{BQ5a#%g|B1tsV7oc(arU>_ zpKJSaEVjQbDt~Gbn#TKM@q4)r#~``&zJctu*nZu$cTURSBXAuzUv(AEafV2Xid?%d zO!jJBU@6if`-*G-Vx6lLBH8a{upv>9iaQIUEerPR zuHB1+$dy{w79<(SXMFvY8BY#`5ST_JV$Eg0cm2zz*nc=8)Z8G_s!DyW$)aoj^T|S_ zR+__@yP}44Yp&vlu2TSxL;{f<@uZ8g%yszZ$)EvsT_RFQmULvAbVS<^a_!EfNhY~Q zT6{TcE_>cSing-`B5pLNF>@Ez)04EJlEtH_AW8DnC2M6Jh}`v%3>wZDKRr%%gdr`6 zDnv@Ahksz1DsZV;IPM-Nt5-_SRVzvg_$;$gXk9I|7QtO zO86hUKAg+4E^Dk3@QSsqfC;2rt1xYTW{e>J^JL^n@RB37REon59&OM_)2fnA+2_f~ zKnJLlmUR$Dz(lUxMjD}8BR=Q;ezIM$IYWU3Du1RKdM>$EWX@d#KBjG1JQ=`iktGM1nmXfI7tWcF+}0q>Rqy!yS%|t0+rVNu|a7R zBY)tTCl1$9$!hJpXq+I85>Zg5W*|~Vh-!wJmT^U*HRh#P+!aejuT3eWQi6lLlu8&S zKB1jc@lxt&=J6=ybZ6GT9+p?E7fMN7p_R3Q6c`1egw(B(oX~8^D5`7!uJCr-&0YI| zICNo#!}i&Js~KY&-K2?1rlnXI`;Tkm?SEX-sVP|{W~v-P&9p5hTs}fGDd3VoP5sBk zdtWTu(c&`o@aV!&@s{i)S6W68wC(zjF?he3x1(?P?KZY5ebDTyXk|c4NTV2`lp6c{ z$0)o#9zM6DZ{DWv-rX)&MIIo2f;LH`P1oPwyQ{Y^`&5zl&2^gkZn}N@cDck3B7fq^ zM^^-EHEFaS`u_c+yIAW^pA|L!GEMisyTJqy43ZyXj0VPx_xt;MH!gp-uTA5=VKj=A zOt;&mMKHh~98AW|V4yK=f4_e~RC^yw+PyUB8lq@|>ISB18V94&!+|a?klMk10K+|s zI*F2Y)U|EUHHo@zOp$I8{5Zs5Y=1#P158VsYfK_)+il}^q^|SP=1d(y!C+X>zzpyV zn2b8=F5cRLx^80EUEfa=Jc(q23$}@ZEf#=!1`-hvjn?|j0oxH>Vi(D=c5y_Oh+GL@wHM=eZOIvbln|}wKyv(Lq zI7`Q2AWh}GZ!)|`+uPD7n)QFzaK(6ZfK>@%FdgXL9P28Gsu03oSoDP>1ZO==f6l$< zLNHxI;~nn#yVW}8Z5RZ?Fw8*gMzW~g44m)UZfS+oeE)>rLzOzn!D(19j5E$GCwsnoVg*O8aW zoffbm^_)oPRH1H6NDZ|n-usRPX%uOzRAoM5b`0obL*VjHOlj3p;F2heX*jC`1^iFbTD&*fFW_k*B%(jcq(Cou`u;AzH6l*Y-`vq~8)fhUOG|>P6002ov JPDHLkV1ivWFjxQp delta 3522 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 diff --git a/public/images/emoji/apple/india.png b/public/images/emoji/apple/india.png index 16089d0430ad43edfc7a0f799ec589f231370f2e..298dca099fbfb77eb97f8b4ef1ef4f53f5afd727 100644 GIT binary patch delta 1368 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 DHgfZ$ diff --git a/public/images/emoji/apple/indonesia.png b/public/images/emoji/apple/indonesia.png index 1029e5db4468d5d7748395099612885be933e620..3a5a055b5e658f271e0f20593ba872ad6df51972 100644 GIT binary patch delta 1044 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 It^-0~f~okh%K!iX diff --git a/public/images/emoji/apple/infinity.png b/public/images/emoji/apple/infinity.png index f08f6836d8cfa759b69ae21a87bdb3206439a3d5..049cba1aed0e7351028f30d8184968c4945dce10 100644 GIT binary patch delta 825 zcmV-91IGN>5XAR-Zf=W(u-m5g5wy^+rHpX<@1M~|eAZ)y4$!YKKHMCaFaRq*G1oO;oURC&kb zjg4Pb$!XvBl(PcxVnrPwxgt3i@QM?w=v4tC?Fm#-wYpRI#DU8WY5=fh_3S$wx0dEH z1Xi97gnFQ|KxTyf;p7w|fp6B@ zji-D#$r|#j94Cc}gp|=Kq7UnN<+O=99z=@`Ipu1dOG=1nS*OWtc)IHO(^vQ5Yy>F< z&mDutMAhGLAuq_@qh3sD&~~01jo2nJvCQ=hNk!Cvcz+(y1k0AdQFDZKq=qD#YhcT_ zM5uvErW!s&dIR7Iv5hjzRqscEL1O6_0xAYG%Rx^lcm@YVOpHzt*6S-57TPPaOeEm{ zOwDpfNsI$aWR|HcBiJ!}L$qVqVp@sB47wkVA=4g4bI_kcw7d=BB@0gSv5qU<=*O@jf zsne2*-6sWs!-87{#r)TG7RQoux*ka+b1MXmb$`Srr-3X|1Cq|uOzg1`R_~p2-s8H& zJEr*u;y`tIcf@>8Rf5hG^;YRSb<7tFx5)NUI9i<=xVOFDeHbDl45Wf7&31;g3AiDI z^gtM&5y^gy1Q9%+!JNYxq85W12p8l!q`)0s`EA3#2qL!72}JZV6BU;CUkG6{np_FO zEHZdCgl|GGcaoF|V~k*0-XdC(Qe}j~@L4`43fsH@8Il00000NkvXXu0mjf D{2hRz delta 2135 zcmV-d2&nhP2H6mh8Gi%-0095wd&~d;2p~yBK~!ko?U-v&ROcDTU&RZlI$CK&GqKee zV~}aa1gmLnDW8+G!KDG0iv< zHFauQ)0UW~YE5rZqeB!$2>*Tn&YrX7vfFQ++2?#%X7})$|9^9NpYuG2kg$ap9xne!ux))5F&O zBlkN0)!BX6-G7iM&JS7)^O%or|G+m?hXWA6fC2>yG4( z&zkJ4uHV$w-EmL?*==%+!1QfS`&J11HK{WPkeb9p&CC)iGcpfFGbvXVaUWT``iB zC+2QmZIGyQ+>oG(QUP55F8F~;PU;htmy1=&l0aR|NQoY!fyK?u%BFiHl_U{WUl!;I zA*48`>VeuR3G|<{vg5}%+Al^K%i4OWw7uQW z(^mymVoY6Rx~v#%HQQj z9AM7JFDyu`{?eZ=0o={Zq{%5+FA05|@_#=?{gzFHkSAwSoy7`Dg3&>y1o3>CkykGd zAL-s*FC@=#UO1?!o}98^D6ungJ0vAW`$5%^2(oh#b4m6G`bOHb!9DSGOWDgJ1ney* z#Fk$%#Hr##Urc^1I7-$A_TFeC$%o}P8|D(-dS3ZTg5|`L$Y3ABd-VCB&&7Q$e}9AX zwyenEz~4>Z94zCz^QqrTiX-elQ({P(QB;-UUT5$lO5F4uch*+j?5gvnn$xw{9m=4y z?}+HH--oH2$xDTz;u|-RO@}l#O(UeVsuHZK1}$f|FAfD^JjAO4l4c;gN(8^42kC~; z207~w9leqwhX;Qr{e{p7IU+acKYwXD3)xky67(=@Unnqrbj7I>Rk}pv)rUHp8jJWL zzaV`sN!u%^fF?&M)3VJ|sX6SH?xgumTirrXjbpTiT4eum7|>}KoEQ{>e~Ziv z7A5}3*({aHypD z&hy%4m}@7bq^KM=RK2ZxB*+SS&U!;q@?*Y`5=E9o=61K2$>x=_xb}>{rAnZC5=T1N)Lf5xUamyrNoMKzpyHL@ z^L9;drvH!@x4W6{-i0@Rh-?{J8CD_J5jxGU4Ea@3bR9 z7cs_)Gp%|@>jm|o%7eRSFcPAR$SLKOF@^z$8nhm-`2JWGsf(z7(Raq7>hL1io`i3y zZpo&_0Zuh3m!s`YOLOb@avmk4vZfU*^d+=(w)WXHn~98lM~8QYHBr_GfCJ5%H0Ejp|*1f(RFydpj<4{q&96j*8bkU2h)w z@bEncc+FNJf$H{;8rxUWJ%VN{k>N)3t)uV1*3nVcR{U!DYn>fun{QV`R8csHFu7u9 z1PJVOwm_LqYNiqsjDR%VqYy2pJM2$Y2NQznOly*P8JiGA$TJ z?Cgxh+!}K?^MwFep>TuL71Pg*bV^Lful1gpmAN!CK~SHgFH9@Z7w@rTY|V^`pBExz zYRZE2HG48L3JsM;XO=C4-m^uwV$9bsVGCQ>!WOo$g)MAh3)}yv{Rc_8MJ(KJi>3eo N002ovPDHLkV1mw5HJ1PY diff --git a/public/images/emoji/apple/information_desk_person.png b/public/images/emoji/apple/information_desk_person.png index 4eef8513993f6d60b6cc01ef1619831d238986ff..d00d8c994691bb7ecd507989c799a8e800bcfafa 100644 GIT binary patch delta 2595 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 FV1lsJ?a=@L literal 3853 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 XV!C}zLO!6n00000NkvXXu0mjf`#Y=2#GgkN-s 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 YAIhQZ9li$LH2?qr07*qoM6N<$g0bZC$N&HU literal 4075 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 jxs*i4+t^pG`evT diff --git a/public/images/emoji/apple/interrobang.png b/public/images/emoji/apple/interrobang.png index 5a1ac46082c7c5f412ff5e3475b1451b52d88a03..89f9314d938c359f8721a3d17742aae0a6655cdf 100644 GIT binary patch delta 1045 zcmV+w1nT?m5~&D~BYyyaP)t-sM{rE(Ln7~iYIGL^d=~?AKQ+N81lny@cNYW3Cj_e^ z1EwJZ>QpwPAp`7NJ?mpb>|a3aWk%>kA)Fut>SRXdIu-6~P3~}1ei;MlMIq@)CV?3O zt0oA$B?Qtd2kB2Nq#*;&DhKC28tP|C=`929Fa+x_1?4RS=6@*w>p2tFD+I+xu-pIu z03>u$PE!E-8Y@Bu;SCu0(x2qB&LxpZq*FEOTX|>OzI$uH^LB@g%D5o<Gz=$ZKqjnPD|37d?cc3L#ci#4#sn_aL>2!)Bao)x+qLqwD zDDhWS)3$9>`F~NM6{=zh=K|@#Z_^}<G9%9-dSij3gmAlE2jFh$;)IF(tAP>6lQ+%I^g$&bShcU*(>H z48*eS+^j~3!+3Heq(V_YT#(X%oLQPCXlgLJrjjc)w&`eTJ3wFr$ z`93$)uNBKh9TW0V13#GpvsWH1$(SJ@5J5Vh3fp+f0tRwE%4l(8c(Qs&YHhT7(b*%R zHPTSq2Xxnrv04bJZ4_l32ZZNph&ESkqja3Dh<_(<`q}n}-0UD&W6P$WEnuuI!w(FD z#xfLQ%2;bh_D;wI9TWc7lBKEOL_>h0_e~9<6K#$hE~a}1yJNo=M-H{&ROL@Y{@EIW z&uON0z&s%*Ku5wZSMB_prd!7hKW2tl3sL~(zD*fPZ=NDxzunm5zO6>0N1_+PIJf_< zXn&~+K6qOw?V*1{InERqJb@9T!)ZNXuVOb7tQ`?=0#S{SOmO~71W{yoLq)!itO-$* zB}tMskvi1VBn-b;`;1mu%qgWj?pBIk+mO>In?*LAgg@`~Kw0R^Ix%JZ$?{I4gwa07 z2xIo4Lv6$4Zc2kRvQN`K=E^J3iDYbgjpQjO|MkM%JMLbRR!MTiMP zKkcYnlpcxU@iZ7y`>HR+ja$MN7u8-@uN=WP#Idxbztu%IHj#jv{QL-Sxe2?C^^HeqVSRHveMlJaB%7U;F{G;OOLMo({Uf P00000NkvXXu0mjf!i?h2 delta 2405 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 X>Pr~1O068*00000NkvXXu0mjfR%%rT diff --git a/public/images/emoji/apple/iphone.png b/public/images/emoji/apple/iphone.png index efdf26bd6715f9b58c1e95e1df5054ca80b9f227..4562be98754f5fdb2924fe3f22850c399b1c60b7 100644 GIT binary patch delta 1394 zcmV-&1&#WM6@&|rBYyzxP)t-sM{rD$k&?Eywy3D6v$M3ava_?Zv$eIgxw*Nvwzjmj zwXw0WwzjsbtE;K0sQ>^01Oo#H2M0<?I6B8U893~|uYHDg$U|ex=aWXJ4 zZEbC6XK0s@m`u`QprD`{RBRlv?n$*;eSLj4B^5)kyJBHsPk$pJQAi;@gOQ(+J|dve z3?M5PfwHu;v{2FC{{H?M!T#&(>z_qHS>pBn>S5u_s?c}=aWy3pI7$~TD7U3XO@~#~ z)YQSj!Hs`x)xV-m<7e2Q;J=Q?*G$k+A5Z4eSNCdRnPwHPKd38lH~f(R>#p?WQQhr| z-O2y}01tFhPJdGXc>jldo^+8*-Dob;r<$u`D0ydA-N6E(XmuW54vkCH8 z?c5VRU6~KX&mdc5rXwA%&4u2LAsQD#;(=s5E}(b5kn|v$b5a(#U*`{#5x95#HR zln6JPySuxa8iOi#8E)qgM)+ZGbHkW)_)ixhMGAPW?8C`u8(eRZWQS5!FBjOT%h;(9%a!9t{?|0aT=SROLZq3}OJ08=PVu8>GYRBB>*t3FC_GZfQVSgk-X0Qc|)M%t*tEsXh-MgqXB?Z970IsT0kYBM1Kyn zD}uox=NwSQX_^LrvE0@;SQJ7~X_kdKRIQeP0RIKWStuQ~>s9Fpd?9dG3{_DMxG#s_ z0Fo@rdKMt!j@s5ALX;EC0!xEIM+1^`&LW~b25>C_fdq?+Plv253{70XBBh}G+7Cee zlamt*5QK4TG?a#*xEn#}eC6x|)PHw4Y5}OYKO*QC5N-)%elJu^tv@@pN&F#ry4VgN ziTSBWmxrd2X*_08XlmfX(DVFeC_|ti`9*>tNCFL*`9MI*m?(-2Cwi<#l4Y4ON`oKd zjFAVw3#FpVk)@NU1tM2VO-c@P?xNQPim6E@xe-)-C5knadqctZPa^wJFpU zs8*Xmdkp@3^MRIA#KcS!MP?>F9xK9h+2=(RpbLH##~*~CvgGq>EC2++nVSe6 zPQwnr8k?WhPnFQTny~U|)dR|3AO7)5UVeS}4_a;;wMZYwQUCw|07*qoM6N<$f}t^- Ag8%>k delta 2688 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 Smaypn0000`;5qq9~To4O;o_}5y4t=A7 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 diff --git a/public/images/emoji/apple/iraq.png b/public/images/emoji/apple/iraq.png index 60172153e20b55d1d8497b3a6a5ce4763381af41..49f818c226f388d6ce41bbc19cbcb3eb8c43f792 100644 GIT binary patch delta 1217 zcmV;y1U~zz6VwTiBYyzWP)t-sM{rE0rlt`Q5eo|ov2S*FLw3qb^anRwTFpaJ0s;aa z9v+4Y6*)OMk&TTA2ng`J!4MD-78VxAJ$mEq5Z5quJ0t> zRMUhsxqX?-4u9kJK>z>)m`OxIRCr$O)5lIDK@bMuMY27D)gFwDkvfLS(K(UB?)$&e zRy7mFV6&X|z<=<;Qh)lZdiuxzneTk(JI-iOXXJc|7)-|F>Gjp+aCl)e99~^d$Af>u zMw2lLH<&eKQDzO?)pSw=M=CmCOiLq<VYzXR$yZy3n|^2ifUHbq#NZ1miq`a0*K3+qf?C_ZMyG zF>76ZP!=*6YlKKxg>y=oi_kK~fHgm>p`Xt;i+}pl=(rG-RZLi8lGtf6W$0SA>9=(rLa z34iq!2(|)63eaHH#X%HBevk=epW0Ca(S(a!3k=Ms4uurj)vDQ1`pF$7N*7W}0W}0( zzM|!KiBcG1BS?Rv8e)_yEelydgwibO1~~|L{>dFB`T%XTQoM5>9>C^#yS;^Mx6hk2 zq})FOp_I#x!P$HR=bs+_yxf<0x&Qs}bbq^PH#(cAIB;v(TnWWXi23u)-*(GjC1Mx| zpprl>SeigDTe^FaMbL|v_EI{;VeM^O)dSR@|I9^APjD8`C8B1%QHT|~Dc4#*CsZSAR6oep%JI57&@(!z0%5Jp<;ZS9bB@HO7qCpwnAD(!-{)&G{!W7 fNfG~+gM))l*f_Ik(;%n(00000NkvXXu0mjfB(p6y delta 2464 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 LNkvXXu0mjf>18UD delta 3261 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 vOJ^^c88&6|H+ZQPx$^h^x5kX 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 delta 2780 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 i;Lp(5HVPOn7 z3~2!YeiRd8Vq&zrzF}cu3poo(RY(dq3j+fK4>b>IX=!R_XJlk#lZS8EzTDAs_@u1Q%8p z12+S}2n!x$9hI?^kO2U#5fP*q7I^{!Pku#kmu{{xFSS-t2Y(-^#HE{VVh;}w8yg!F z6B8E~7YGOlNl8f`ARsU;EhQx-uC1*@L_zKF@`HthyS%zMI5<;NQ`Fbi0s;d6|Nq^& zxt*Py!xtCrz<OXl8CECGyVByd53JI5pKJB}u1ab^rhX9CT7nQvh9|up<8Z2o3(%t)kDO z>FzQ+u7*^reWa7EqV~5#y#N3N_en%SRCr$O&_|BjKz|U1QDY!5EC@odCE4&*syZ`M zIZkvA_dkKFhH8rgVaBjmUg%qJL7*T0?pOb3mo8n3qQUQ?@Lz;58jePjcjF|D1F8vv zG#O7ugTKPacogC|Xd0d8byu#NCQT;8)7lhILN=-QhNPn(E552ZJ;QI~-Q4~h>oFvdy`i7+;e25(nv803$JqR34 zTWKi}UkKf->t2ZsU_H9hq#r2HU)R6HwT^Yvjh|M?xVYD#LY z<8qNzRJK@@acv|$(~FB3l4e`fX8C2c`f<3+_GNb67PDhJuGqF!nd2W88Dmsa?C%br zzJIMAmWTPS6FzL`>-GBPhCWqW>~^!Fdh4NZtPOYzjxj4tnf>CV+VmXWh8Fx2uEE;aqOfhivoV|9s%g7 zBe*pe!5)PuMegPSBskBFrklGN5r4u z43)wA!Vc;|{Qh6TCv6g2WhfqH{~berJk6o3F-=vTLBA;=F7Xo#=h~t-455d z-@p0G*lc&}OZyq&o#Iq+SLns!G$?Px*Za>|xzDt?bOz)9Y==ximeb z#!#LYqAo{}b|c$ns5N*>6!oK&yyG_p4kXT}5CSA7&}ul)II#d4vO*Qo;y%EE}kRLWDcxA>CTeyl8#BVx}<3(y)V1!-qhdXuZ a)I0tGBr`@BUK0QS00{s|MNUMnLSTaLMencx delta 2680 zcmV-;3WxQd4S*GpBYy(`P)t-sM{rDF4+t4H5mr`KbRQaGVq$1$XfquPAvha-FE4Ix zZUX}Y6ciLQO*3RB7BvnQH4Yau4TwFCpGHPmSZEbCKY-^*Zs^KIXR;y9z#PzAW#w<92_fP9F`{_fg>InKMp%_Eq@+N5j}PW` z#l2Ti9zhnFF)KN1ExjuuQBhHun3%eai`&MrBFv~Zf{FVOMMg!WrbWxc|2BgM2}5Lt6yAl zEh@)WP^Mj2YY+*Sac_4W7=@~RP;4xaVpG;`Z_$p5h>ec)t+KBk6zQIx!#y_8!omFb z_!Pg)3uIR?6r3LJ zSuNY7eYE*`^N`SB`P|Dc%w2q3yo&2+csI8)LrQo@)t*x!C@uSBO000K* zNklmqn~snC59j^B3BTNXpFuKh+Ek`8 zmH#nj=B6`H=Awt`6aR`Zo%`~f=U@70lzn96QRdX=jehV4VMos(Eq!K|)EF)h|B~!>` zGL;=8k*4LoZ!-E~lf|#ineoJA#>;Q7S&19xurgv|Sp{-3g-at4i7pTVm&#xjJT+4f zJt;{00PA;#skynSsp$+fjJH(nr73vG`+!MF<8_z0hw$%ax`LrwtEFrP5p^2x7p9 z1%tt0#Zm=>3=AUw6=dgvilpYV;ZIoT{n-#I86M~t@WW!!bjJw{10WX{B7c!UpmDj- zG^_}fN+k_0ASB@wKyr#ymrsUr9Inj%WasPmH#|N#p(cM`G4p zAMT)z2&!Pe@yX_PtyZUNZ+~k(ZY*JwU0i5?2NjU>YgD;kHSWwz9BHf=JbS#owx%lE z9#1@Eo2t4)cU(%n53-vG;hp6d5SmnHuQ%>XNK8>DW$nR$?EVv32M%<%v~(XnyuGq& zTfDtWyTDw37Ct`5reO{1r_IIIg+M8|d03c}mynqvROj`d=-QjNGk>MrJ!GxpIwuDQ zZ*T9gp35z*)kE(-qlezn*0!CM3aCUoJTBYfl{mT$~Yk=Gp>1WU{7hVA~#5Ri&uDna9L~0mzc~Ti~H$Y5h z=Lez4u=V56W8Z(f(Y5F5q3#3QvrxJY{Cu=-L{nPQc&bPwtjp|TiYjZR2DS=(KW1Uk*M)Agt#on6?f;1x7+1ObV za)fHNkXfEmcQkMBc9g^2Er+i5gh6E!pidtKDJ#}1@zc+|yl-#fiT-d%9G39pM&;Tavsp>d(FgZE-n}6hk2em`hs_gjc_62&#e8II# zVQ{r%xUNGIP$4Cd(o&z4qb=AqGSZk(U0ZwXn;X4-7j}8k13hKo;Zdnu(=YZWcc>~S zTx`05%I-s#dm0+TzI2R?j4Ue~L9@t8xHmBH(`^{`-7~-Uwe^Mu_(9;|6-uZ32FhgN z!NIchzJDX*7u#nibt=?xO=W9qR%>f(!s&kelCRPZ9drLK^G+Fw&o9(oh$xH@2k`>{ z@(0M%(=(9n@9!J_^w{OUdQ05-WL<|UTmL`8K7Nm?ruNv44k5|c-^*+BI5c}hFe>t5?-7_Gn&gr5eSd{Pexd1Y3NfkkhaWF?l1QXNF{yA2 zqT>}k421{68$i?HGE{INJ=DvO9~5xDmtROCb&5OTi6vqb@*jif4@17bbUNKXG}Oz> zFCc&)1Q9EOND-v_f{zFWgB+P`@`{k;4-SF?_&_Pd5fS4MRHN7xkRBJed8;fc7*9Az zaewzio}&gAAo!xf)rx0STSkvG@JMt z-g>&l?D_Sx#~>?IBv>-kogz3l)dxrEQ(wPm8D?0UObR?AmMa!oy)l33(q~a#n7?GT)$8xsOt<`Z-+X3TThE)0 mGSAx5Z0d{PRHiZ&!}2F*FMv5q%cfxf0000B3L| diff --git a/public/images/emoji/apple/key.png b/public/images/emoji/apple/key.png index 29ab4cb67247f942a09ba6f1f3a1aecbe7a20d23..2f79383320ba6054a64b95a496fb142d1dbe53fa 100644 GIT binary patch delta 1573 zcmV+=2HN@G7qtwKBYyzTP)t-sM{rE#-@4bsm%y82|Lb(Z!sh+rCQ)kZvVI!)&nx4} zft7GP|L-EblSbmVVq!W5=B^^wt62BaGNOWI&6_X!?S1|2Z^f85r-wfmym{|+S~0z6DclmrWpSKsvVTp!dW~C&^G|7OyVA%##tD-o zc^foz{*9c(9ZA^5b*i`yQInU6++?iB(Ux%Ln9vD8BdEiVhEZX-1>suV zI!ux;pDU3@OyEjL_II=HZFlmPZ$s;HsfT@z3_8~{L1ve;d$$eM{mW%1K6nm8a6(iV zLryAyM1PF^n{dfspRPS(gu@w<%(%m)oRIx~asf0S*^(Rb5X|NpHHRcWItDtB1Q?Y;$!VoUAKy2!yYrCn9_|qW1Q}Ijoz&S;n%@vrElYsT z-=xkL+1qyI092NYQvY^j>? zgMSW4$l~@6eTSfoj!Ex@S_pyfSY?S;rIn}{;Ould7Hc4q8_X#g!DE!)0R(Yhz( zWY4aDR4G`4_22@$fPvH$!ZTv0s#6o!!vjpDpC;1RwS{^TVO28fF^BbtqKHxKR|L`g ztmdhAy|iI;|m<6(4;=D3BR;74I-^#m=h=p4aP$4 zzQBpViH@OZsswA!1iq3M3cc^j=lk?+W1SW{I@LHV0ereh)3k`=7}WbN)TwcHS{iHI zfeMPx=K&Lr*H?VsS61V$Q1ed_oqu)ZAf#-jQ-#tDB&uLmtJSdE0i~|b0Uel2=ku&y zU;q4h7_NM(j9+gt9q|g8+POS%GU&scb-I-0D_ItAABJ!y7w6k?2`(CU9527Sp0=p( zW0^r3!``E6PeuH2)i~&|J||8Qw19ej)ns$^BfNO5kM4C_^ig$+&H)g3p?_l@f^KuC z)Po|X{eu>)A>7f@K|_c;8*tX>@VO4_bSyTW%k+y)1`hrOP$k~PUOT7iqXmKg@$oU8 zPU8q1q4`{XH5Wijp>uot`e!(N5E}M5Tu0Sh!1(@BhLTvc@xIVG_VJaW$bt5b&kDt> zR?r;hig7MLAh7n2PMbor9Df|%2NL*29H)a8kT_ePIKHykY_zD`3Q{(FU%n3_+@DRB zwt|*Z)`zbPo~m$thOI_>npO@#*o0r8=8>NYf(}YGPs2JWLkFSschEA@DyN8-zk$Y# zS;O6q=~!+LiDTbKC*ExI@>kF@RTQOw3lwV<{#x5-FoZl|hQr%mI3D7aj1gtbFP#4X X>0Vs9PMi%$00000NkvXXu0mjf)^ZdA delta 3034 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 diff --git a/public/images/emoji/apple/key2.png b/public/images/emoji/apple/key2.png index 26a599228d0202b690eafdc9734f3084aa965bb2..398bf61ebdd97f93a25fc4f28c44007ecfc69212 100644 GIT binary patch delta 1413 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 diff --git a/public/images/emoji/apple/keycap_star.png b/public/images/emoji/apple/keycap_star.png index 87d99a4f944290f200747f5b873eea77a55340aa..c5f98f88ab369baddc6dccdf39a8bb4d103823da 100644 GIT binary patch delta 1142 zcmV-+1d02S7XJv47=Hu<0001|!>)7y001yhOjJcuXL?p|hEi#MQ)_}^ewb*6qkyBr zcbKFn;rtv)^g000DZQchC=+C`cc8U%bNFkSQ zcT~g=7_26zI$-2-L!?$yx%jw8NT@5PCt6ij%&k$08hF2NM$NA3xX+Bg{U-D5J8LJA z>@k)1-HuXBzEB8ZOxr7X!IE?oDN9D-G{+ z(14v&tr|t03xBeQy;HfHgmaKSlxw{)*y;7gg@L()G2Tl*#c4rydotM>PsXSdbZ%fW z2T8c#osrikGiitm-Wzi5U^3Z1n9u;|Xi{PJ_tH1L_vG?uG&~ z9nEBzeBqtVy4_Ki8II5mEh8*pAfS_6goMw3*co;^e1Gk9F|a_3!Z>L*jf>tpS+gWW zpyaeUDQZRlwcU=Ql^%E;MQyB6n`k%*EddL4#em06wzx(vsmL-(yHSx>rB#yJuaTP1 zjoI9KjTDnqa_TI_u@%-{C{&W_*m|^AN{Z{2E9TcYR@=t3a9J_WVz> z#X0Gh#Xe9uHRipy;UA{~5!!Qi|5Etrv zfEA`Ip_Kv)%Y1SXPWm{9?z{Uis0MD>`22ToG54uslP$kwVVU3e&gJ|R{9=)}7;n}g z&3R|?0WAwrfMXoB{DN13Gz&-z9zFR?@Z26AYA`!!4pJr0XF50yEav&3=1-Y42KWGo zN;NMFCvB~k_Yp*#&%vND^V$Ft7qll|>Z07*qo IM6N<$f^%RervLx| literal 2834 zcmV+t3+?oYP)Abfqr#7=#f755WqOgs)ZuZ6qR7_ce3i0rh@yLxv3irRgP*?7+vjbDp_{M7 z%h%*wafW%4u6&lWbBm^fp1pXHt#*&AbBw2gp1ggRw0DrKft{)Dq?(y}4oxF05t5<4%*4EYP?eXpE=ex_>eww;`nYxds!J)Ov!O`Ee z#@4R9%eub7Xn>o~*x~Z^_ji-B?(Xh=ldFfEw2+{&l&QdXk*$@i#K+X&Yk-=pzR~jW z?{9^llB&eJ$=7?AxX#++kfQth(Xj=Huev_xbwu_4UQk z+}z{o!NbSM$;p6~th>U<#>&pJyT;+)-Il4n)ZOLN*W9_v*o2?G*52mC%+rdbz~txZ zeU`I9x^#}Mu(Z0bztN?&$C|Fg-QeV;tFzNkl6ojg4D2! zl$9b<76e(9CN`|A*uk={1>5#zd%v<%f|&qw2juxDlgax&^UZvd348!R;JVDq1yZVD zf$)P5g#Q;bBY;&($i-`!D`3YnOBOIVOz!)7y?(=#K!fjdnH3RGby}Q0Jv`j5OY*0Cxa0G+WQcc3H`uoA z?QJN3nKD@V?QLy?x=XyFCD`08d!Co5sV*oe_|ptPYt@=W-t)`Q0eNxRX;q`6quc*D z1Gb~Zsx&s&%N2ORGgrdD@am2oug(axcY!a-^?U(%>83R7TKn%Ep#55y^yW)|*Xl$~ z=iuO)88bN8sYzVz1-uBx^II?c!2vF`^5el5ftPua=GNaiM5{TH_cAc&x+1XiHERB8 z<$pvv0~Ocj0CW5m=Bn2zY1v|>g*sDZR`{c$P(|Q3Z&0!JaL=1KJ%`s)hQ0|@gkmF# zG+$dw#j5QzE8AC5hOU_-u@UiNlD}L>Mdq43!jrcqlQQ&Watsd@1;y~={!B%F-v}WZ z>C2}K#qnc;<^Y~Smo{!%HIDF7>qhD^!vG@6BYs){G z5RXdodjb_DhM1%6$Uk(KcH?4mWq5RSX+=FDst+uUjt;MEzIcOn_fWol-W-yMiC9LH zIgU)J`J-$at*hsXE;BB!(mMYIm2q*Ix+^_hG+OpY=2E+Y*<@s)B4$Due-oL?-g3NK z{!@QNsiqyD|CFCKr4{`@SwHBlv@7t#5}24s9L5hMQK9>|ix|bdN0;~R?ZZWR)qD3| zet3`A-}SMsg52PTiBXXUJxie@@7CPjHFh^=Uu#?uCQL>&p<^&UZNsu9Hz8^AKFR7dOVn)e;7zJ zjZZ5Qc|ueq*kg&_AA9(Wy>AZRloKO8RZIWob7=-5o^Hp57B+?#* zV!-(Ql}D$t?JrSw`J*e}8wV7Mad8QotHMMqc6SV!cLpq}=MNm~=$bfZDILeqVOa*= zu`6`5S*U21k|i?6laPp0kJNseO`{*mk& zb_FST6BRi_3_p>Wj1<8i_#-t4A{M8g!OJOU(#2u~slmT~^@!B2Ao62C&VaK_$jW8g zp>IMjN6{fUlEn^1z9!D*Yb2DNg~$&Tp%<=6Z=cU)31yRt*z&_E^^I~Vx)mz=f)ITn z3Ps;a<&E_zhvn?aL{1s-?mb6EWTg5JYmUpM*yekwcL>p))c5d@uHh5xymFwEhz8YLpWn@#Gss_UWTRgeW4I4(9q(Air$=3A%S#PL;_8 z>A?|Bz-)uc+mA;@-IlRGYqr!;hWxx$hS|VuwUWaMq5#}_&iV}KI=2<1O0hUfH73&f zFhL5qb!ST6!YMgZ$E8X!eYBXUIDoe!Il$9+7o?C3t z3cVficnh_L#m@oDpH)M!5664PaC~4${p@nUb*WmW6mT3spp>bXqW`ZiS{wnL5c>Me z5MSX5C}Qy;x4C1>HFMnzvH+zDh6U3ChE>V{nZf2kP0nf=gsN1*(?Er4Aeq{E zE_q4IeW6>141xlt1q8`5+!ngqFS5BVTIpP-RvQcvQ^a6UtIM2ME*iI3hpCpovT}u! k^OSK~vGSGW6EzO=8{dZXalJW1mjD0&07*qoM6N<$g5Vt7egFUf diff --git a/public/images/emoji/apple/keycap_ten.png b/public/images/emoji/apple/keycap_ten.png index beac58b653950e292aafe86ff4a19c86c0a23fee..ead0328b4c91d6dca3a8714442c6dce21f7ea0a1 100644 GIT binary patch delta 1053 zcmV+&1mgR>7qJMCBYyxnP)t-sQfGQpY=c*ChEi#MQ)_~EnYnL|t!IUyl(5Og*5ta) z-J`k7)7|A_eVBrz!>hyA^7Hdqa*F@||D=(YMgRZ+1$0tQQvt)mgrJdECc2;@_j|7JB$pdT8M?}x54}fuXgVg0(fmX11RM zM5O6715E4CCa7`14NyTmO9I*HvX1lx8c|O6E^HD`N63!$L~(UQo#}+=JQO5Gbi^W# z1}Ff+>VF7qXDa005*-=jCdhM{aincTF!C~g61oM1uR!Q|M4Z0TEyxO`HB{;&Emac~ zPL6;O#FPb90x4C5AcLc;21Eh=vw+%k)Iq!~hzu!6AhcJIal}>D(WNz7^kqS4L0V@) zXdEfz3ep)VM?q)I5$Nb3DiSFO1@!P-0;r&Xr++5MA){!!1ytqv&Hv-)k7vZW!-B4k z?44#XSZz>1Wd$vc>^M|T`gOCje}G291$iJ%j!rk=IXkz?Kb~^t<8-5 zxPOL}qWp{|!uF4XL`c!fAg-%SvWm`e6J>&)EL|MAlCGq{oFN5S*%@)@;;Ah+j<=u( zXrf@Vs8EZU1-HgS5@G7{DWRnoOnL9Heb2G}EyavlAO>L=+*$ATw1fQrKYL1`8CT`D znTS$lAE{5ny>W7)9EnQX{BL>h>0kiTM}H#;KLvGjaNSQkaiC~)Oaig~Zw@kKf;NJ# zIS>i7Sw$z!QF-HcvvW|*!AqJb9}pE{Ah>y9qIsZEqI2Cr#my=~NtZLSGh=TnVrNZt zg`_}cUY1DU4Rtx5lMs!G)cgP=4!dJ0+%uvtkt(P|i)ziRwE}}zwu0L#!bs*z&lZPY X*o4wO2fiSk00000NkvXXu0mjfGeGs~ delta 3000 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 g03ZZ`gWs8d0ZQ;HD11AhYpjgONC1_lun7h+>% zA0j0(GBbI3c?JdsxVN}0EGtGxONWe;3LP;81_dZNO9=@GgNBD392^}T9b{u;h=Y9` z9UNtZqkw&RBqbzYUtcjWFIrz_YL2rdCMF6B3KkX=1qB7EuCfgb3m+gLRBebG8yg)Q z8YV+wUS3{&dVhF7K|z3id!(YHARiwrEGvP3e<3I_K0rn{IXE&jH5@cdGF*oZ6B?wb ztU^LUba;9M1O%6vnj9P)CO}#@OkzJ(YA;P{TwGi_Iy$_%tVLyq zU2T7rl9YIMbtEMuVPt4@a&SRLMl>=pTwGg|kBVbsVt)ez11l^mM@dPnuCXXSRZUDx zC^RGOZkjFXtEr>HMed4YO#QBO`GKVUFe zgnW8=c7JnoXk=tbhXf{Bg*000mlFC#HNH&%BgLS6_RGY1C-0|NpqEi4WW z4G9Sd6ciK~I$aYjNgW*=J3KoX85metS6f?K1|B(?ouMTrCZeXQaBglRMr%StL^Crp zqMn=>HB^6neIP+(Bs4~8XJ$!Xbg8VcnUswlJ%3#}VT`Y}x&|9Fyt=wqex@!{dnZeA zoS~+uq@a$7fRv4ez`njuPEL`Ij!k{9ARr(dIagwevrToNLv*L8s;w+OP#!NqLvWrr zT!OT)uWgmR4kkg1ii%KVdZw?qpsKVOvN zh<{OXlWv5Y87DW8nxvIqH$(sc0JC&bPE!Ds^%a-<83Yap{{AM+JpKOuG!OnuFFa;= z!!jQn6mB}Kdh$ltL{;itFc#PU7li_Q}uGpvVZ>l*<-NRMfvl?)LLeG^@`5kaf8Mq)0L%f< z0-yj#tC$^u84lzm7WUiUh)Nj{i9|c-WIW-orO0J+xkMonz3M`u9IGg~Og1VaDiZn4 z`+3kQJatW4_~JKr?vcsZO)8a2O@DZH@0zD3efwKcY>~VhMTJ@ln0`>ghhlV+puW! z9y0qJiMd*hOU)(Ps``T|S6WK|WE zj2X1ItDcf%8v^R6N%lfj#XD4t8T7nm{c|7{$&S~VEukpc(>@eB=gx>S5HZ@MV8cz8GrqK%Z9h<6o?$N>&P7+)00_K;PG2|qu~PzJhWp{4Lkc8Qg-t)7n|L#?7w4sp|nda9F4OO0rA>E;cS#2G)x-Zv~ z7F`(ZZmkh#l1>J_+uq$)EG|hSE3(gOX{pqSjhVhAMQaCJ25U;hx_@GlO`?C+-cngC z7VA3qnUYKPRZIJyy4&K?%IarGdG>X*Ro03LQD^lE64xrwW$X8UwRIYAiH)@*tt3iv z`sTZ!D>t{DIlsK5w6k>u^!Ur;;IKwp5R|d&q|sR0w(4<9@;&=rL35ANtohq$mzPRP zD_dvpl7)3{uGJ&=N`KJrm_#A#(UxhoY!w zp=>j*Qd?#o3yqdE)cx{|XXJ)+<$Zd+{zhTZ$J5@JdPu|(!cAH(mn%UON5PZ2%d?bZ zo!!@ey+_HGn9IJ70jIWCH74|Q4dQZ@A8~}(ZdUqvUGd0FC4ZUz(APg)CP9QS2VXaN z*9A{YaM)A8IH6RgMEeU-LoEGt>C7d?+|?J#)u;#43&jk96HDB5qX^j)3@}cW6$HA4 z2vKQ->B79y;*r)BwzjsLH!mf4YLvyJEF!R4@?-y{0`m~BIEdl48o`f_iyR~d)Qbf% zqO>_7KiPP|9Dfea_RigZ@AmiUpPY`#1OX=cJ4HQ#JUeGP#PUXwi1Csf%%!L&lWE7* zY#|mskqs5(UMigA`WQuH+#o0)Ltmc1^|$3t=x` zz~f(4U2 z@h}(vxpr~c&)&bg2Mgk{Fv0lnXNVAZbqL`BcwR6JbK+)Sn#3c_WF`-=@$km*(21Rb zzaB?np?`N|TC6upwAytJUs?S17=pO+dCu{e)Q~j!chY_gh6x2M6v8NzKbPGidOruj z+}))ZW=NiTF_;vA5GFzcqyBUJr14va)7h+Eve4r^0BpY-AW|KL9$sX~7UlMci+00000NkvXXu0mjfoFE}W diff --git a/public/images/emoji/apple/kimono.png b/public/images/emoji/apple/kimono.png index 40c93bc6ec7a576641bfb28fe827ad284a2343b9..f61cc9130cc5d8ff3b1fa2e69ff5d563dce2fff8 100644 GIT binary patch delta 2935 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 delta 2883 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 diff --git a/public/images/emoji/apple/kiss.png b/public/images/emoji/apple/kiss.png index e5dcb1fb396c59887325e542764ba34d8aed9f3f..11b6546e134e0fc51533e9fc56d0adfc216c8386 100644 GIT binary patch delta 2114 zcmV-I2)*}?8_p1rBYyziP)t-sM{rEG92}b!7SbCW+8Y~&8XLnG7j7daXF5ER7Z|@9 z8*>s7tR5er6&BSoGn*S7%^Mun8ynIZ8rK;bw<0968XBz>6xumD+AlD^Kt<9hDaawEiZc!5x^D}$s;AD6couSE7vYCoqrM&&=(lmRa?P3Ke{R_ z#u*vdBO}HvF4aLslo1f!M@-^MPSZzA&`M3>O;X-EJ>F4P+go1U85!9a7~UQp;UpyD z8XDj%EaEXT<2X6z9v8)gapjSXIeA0GRt>0jsL@_5iagI8 zG69vid3bqQ4SpWf>j9{;XKyo`-{e^akT{9snDTe`GMFD$KWB^^tot&!d9y@b>F`co z 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 D;1yW7 diff --git a/public/images/emoji/apple/kissing_cat.png b/public/images/emoji/apple/kissing_cat.png index cedc5222a9163eb7831833fdc524954b10b43313..866bd2dd1399d7b50443d8a7411c50015dc22fb2 100644 GIT binary patch delta 2491 zcmV;s2}JhI8^jZkBYy#^P)t-sM{rEzw1iSJAt)Xj)}Kh=t7_evJg{^|%aTRTnIhht zIKGP$=e>~CohatDQvd0I>cXJTl_tfJ7~PyYAG#^zM9;YG0d7F%b6hFr)uTAmF>e?z<-SsV>u$^tz4RAE$+pB zrf@KQS17}e7wVZe%b5_=kr~^O9p{ZN!jBN(kSExuA>x`T+Lj~liZ;uS6~2iQ){;8( zt4P&_HtLx?h-^;bs%xHODV%^_gjXP?b{BI|6pUsetbrn!a1{O5Uh~LC@yJ@#pd7%3 zB>&-a{@rM_mw!QmaX0_!eY<`r_|H@Azf@O9CQUyf?7li>RW3g@Bc6vot#2&jrX;m@ zDgWbQbY42_vqt~jRN%8gFdq@kk0i#5JOAW+&6OF&j3WQ?f#CJ6ZXMb$9*<(P9wW@HQl39>Zv`n7qJQ_LHLe9npT%Z6kpkQIZ4?<4wO}+On_maBxo%biF7`Esn z7rEF22!cf7(;@S=dVxPGY-fIy$)4~hX{M7o5_z6K&i@FNdba~}cek0) z_E}q!`aFM<=f1;i9qx$jzSQsK+0d?3F$}2l2T%8TP79M6oSJ6Z?CtNnC+KlmdxAW|Yd%Re=*h zXK5C6*p4A6)rL|Vo1Qur!2u>p|BST*nd2UTl2Sd9e|>sz@N1ld)9jAeqji#>+hsy~ zNq?h10qQgbR8^|ghbUF}fQ05h;3Vm@4icBydu(J}31C2|kx&ptxH8yKk_0M!&7o?w zK^c88m`oOv$z(9l3Dsycs%FzDMa%#ALL-SVmA|HBe#|Tui#vG5RD;C4f@uJ;8--BG z$RS{8A6+MPNT?Kdn#~$0XOv!qxI=(S9e)8PCWW3ti3F6;DOIE%^YL?q&;3eAm_Z^Z zfygdVC|VquBXkIqW?qrcA7ckir;0oXok`LN@}M9@B@B|(gDb*F{u6JR7+R~E=XtiL z-EUf)I1IH zT%6ltLI(oAcWmw6Lh#6BcxI!?ViZY>(P%_Z61^$rP}OW7I=y8%>7whp_f4~bkfJEE z-0kZ6hy<2(N8WY4E6Xs1$b&PR>VF5f9=Xrsx7G@&i=Tb)8sUQik>k|4P7tgi!Nz z1A6;+dF5gXA%&bt$F2oqBE^hM&tolUA{0aA)$bcCds8Nm1&|_Wt@AMRAb(Nh3vC{K z>8Rj@Pn`^%pg)?`c}iwr>H6qG-NNE^}*6#_PCVuM_BX=82Pe zvjzypuCH^>yrnItO0=ZMkbgs=py^Px=jV2vH~_8p(;Hh<{;&MH?MWPq<1mba*p6|H z8+3))WHXv*;*PUfK+5Ub0tG2JiMTN_=sM$WN@$IQOnie`%gl=+KD6{Z@9%%wYBWy9 z%)H#YC{{Cj9bJkKi@i-UnXdvxI=;UV>eQp+R(;zNBhG;K@MG~*M8u3B)Ya#>YX z#@IQVf4J8&|Ci>LI=(#_yOE?BTRcPCiRLNVC%4C8+xu4X!DrgfR#ukO(lu35)iJ2n z)ec6`42>KO5W+z2_c?~c7K`_?ja#*>5WG9_!t9S$PxvFpLklquKVHLABqtS*2~*2}AO)4##l?l=bm-_iFP;8hxa&B`!xMb;kjY7GIx=V~ zVRA8tLW*qwf)wlI9sfVGI=t4&5N_H4aVFZ*==k z0WldH6O==2L5w|!&MlYCk|tBlX5lWfeBZAJ56Ki~WPgGle`*WKb2yOjG?<`!tKaYs z&3A<+lAD~Owb>lQpQA@j{eX!q9B7nnHb->e#*f0N?)&C8Ae3#AB4a6b2m?KCTEEp%H@zd3vixJ zoF{3R4=rE;M_W|aq44r~IGb4p=SvB~^fH44id#{m)0%IZ^@yQ)WHm|q^JQvk!Ip7) ziV|2{!*Blfzso>DVC*687dhO3W?Itgg;1ttVpNnGh2b2{HD6?mt`&6$M_3;*S6T002ovPDHLk FV1n7O%-sM0 delta 3532 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 Eg3#=WfB*mh literal 3675 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 diff --git a/public/images/emoji/apple/kissing_smiling_eyes.png b/public/images/emoji/apple/kissing_smiling_eyes.png index 005a3bce517bc4cb52f583ac29f8b5cb71bbaae6..572cb5bc5166cc5bce5df4f7703bfb876d1bc9a8 100644 GIT binary patch delta 1878 zcmV-c2dVhb9pny>BYyzQP)t-sM{rE@iUj9@1j=(7*McO`eq z3F?a*$!-wykr&8q4)CZX>W?JNauCRG6WxCu*?a}&lMUaB3(s!@ms|<|=4=0^1^@F^ z|J6$W?S=pS(f|32|Fs?e;#2$IKmM;5|M{N(_jmvMul$t=|9`p%Wi0{!{J@7y1^THM z|HU`|??QJz1OLo7|Mh17-7lqT4zq?H%%m#by)pmK3IEtK|Ni3twIS zye#yh6aLOF|I#$=n-KrMHIhWxF8}}l6m(KfQvm(`ifmHh2OBr^!@l6r`I(uesI=fE z00006Gf6~2RDXD0)REban?MjnXEGo_2-(p*RWIy2-q%^P{{KIvs@pMO?AR0KC8u7x zsnXG{=I$S1-Th}+w(Xb(Vw#Tq*XeD?7`vlMs7OYhJ2st<%Pe#3jl#0rcL*mV*Kj@- z#&EwTO0s&Nabz}It?*Ws6K{NbEX#12$`V76*Zwo%*MF&mm{bf^w|N|`iDizC9)1cd zrFyV$iSvUzQBXgh;!`mBL@M`cDEqNs<^D<5zNVG<2XgpEp^PhQc@zh7zb5=s^w&Jv zm#i3D*F4{4eZ+5Nc-G`~4sQd~&?C}Z)3qJXxkhT!WlusLs@Bza5Y(58%O=}n3_ZWe z50IeiIDeo_XJ6c+|Fw{5fOV9m=Oi>DQ~Ao+y?I9TfSxyr1VmRyhK@sla}ct^vxg6K z&sYeuHT7*|Xpstm%RLSjb1{&R05U^@EVu|Z5t)I6>6ztB3^WBrMhtaiI06b<&h0N} zW1vKUVhPzY`y)63iUme8P68F|H3FeLOGT!ug?}!(g);y+9f=o=WSzWFB7}$t;M&BO zLsW|cr#S&aOj*&3WPU2x3yDa@srYWQ-t2lV9&Oj_ZOo~!5J*z=B7MfqehMPeCcd3l zRW;x74)MA|)@W)y(=V*>obFQ>;dDWrSVVC&MKv)MoUe zqA0>xTrypSz!KI(!A!j$;1D#KFU+s&B#BZxml!tV@uiLGx*iC+ zc8B}qLl0@OmeBRq4$mhYoa`p)58ID1T@vN_9u_zfJh|ugM==W0(Y)&WtAc>qb!TcSbr4f znwT2`bq9jURIWm;q@;>heqH1GBTERgM5~bH? z*YK=&{+Ia`@pphI(i4%cc@9aIRe;JRF!?P_uYkBSKze7pp1)JQJ)bEmzkg|}CX2X1 zRgQvlQ%(ZN56nl>)aTx$gyzzmYtVJsY`R-7SHR?WuO}Sc*=nhwS)h8;nWO_sVxu__0Gn>0zfXKXa43&# z?9(;CcvnivP#nuvAx;4dV$c^m9vXX5pH>3J7IRbyZ-6^9#+m=(zcyD%Tb77Y*xfH; zFjb=%?ac6+7Yqh&B!8xK9e1$^%T046MUGiHsNZDLl(jY+Y#u0zF^-Glwd19R~PchJ@ECAvQI0#3!4 ztsN_1R#U`*^3K8CbJiC(D)Of{M>A^M5cyyg}Ue8XxcKACcHAPJs!N Q;s5{u07*qoM6N<$f}L}fzyJUM literal 3792 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 Eg6~#r%K!iX delta 1289 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 Q00000Ne4wvM6N<$g7(E1ZvX%Q literal 4264 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 KMNUMnLSTZCdp|b- diff --git a/public/images/emoji/apple/knife.png b/public/images/emoji/apple/knife.png index 64159148d6820bacc03df443aad794ed54f2149c..956d1741303a306675621ce70776bba9a7341500 100644 GIT binary patch delta 1053 zcmV+&1mgSr6R`-8BYyy#P)t-sM{rENy}rW2!_CmpjE|4-=jG1M&M7P{r>UsW(b0B- zjC6K*hKPzdI5{ygGq=0DP*G9N&(Bs@SZr=`u&}VZyS(Az;-sgiU0`HFLPP25>aDM? z^z`-V>FG#GNn&zb&yTHQ1B7Y+!mzkKYudmeB*5Tsf zwYIj#$j9pH>i+)z9336=^YcSSN3?cXdH?_bA#_qsQvfLya{dTN{{H>hDIxI3~Uu#jax!-#G4R7X;VHcPta{mZh%i;9x05dqqxQ zDaGU%>0}|fJGDS+>rUyS&{>K?)q%yH{O@9++`Z?5oi09iGJ=#h&;3(b>`CkqQcE|_ z^Sxm2i68}#YD}Y=IUS9r6hO5XK56T`>1f#)1&5r4JAa*jD9mRMy(sMI;!_%>SENWn zlR2G_Ck>3G@IG-RO0=ixiu><!u_AQk3@FC?Wr$WNC-6?HS*)$6m1 zn9@ms1lWQ>Y0s40!$0>au#m1OEhcKgPJ$ z#o>0sv480V(Bsj-nh@ejX5)>{p9)3{Zw@!^w?gSzgHtzsp0FkVLf;nH6gbaN_PC*Kzds*VMdZnfPs9hpKe5G9BHPPgHpnf;K@Lu_536Z z!++IMMRz*O%!1li7}61?OlD*nC9$rqzIu|q2r15lK7P# zeF+FjoJx-WHBCJ|KvlVCA~@1*dQ2vd$0S>-l>)$76bO_aPd4P<)@4cV?Q?!n5Usl* zad;75pAV>I6#P1$eTPfk-albk2+3?5hmFlI)y?hec+4_-n`0&40&|7fB*`1Zbr${t Xb-cD7PvmfG00000NkvXXu0mjfDV7CZ delta 2547 zcmVcU}BYy(`P)t-sM{rChDJxM@QqCiDX=*GkG3n~* zv9hwk!ot14z|YXnJ3Ks&j*g_Hq;__8y1KigrKF>#r0nhP!^6Yn=jYJU(ZRyQ@$vCh zRaeQ%%Guf3?d|Qv$jATx|H;bD%g)Z7p`oOuq_VTKT3T9LTwEn3C4z{IiIJImgN(Sk zxma0QYin!A$A8DKu(M}qY5-?vQ&UsT&(2CqOz!XR($dnIo}ithsXIG6A|fI;H#a~) zL41jp*x1;XmX@5Jox8of_V)Ifotu@HmSJIGu(GhKtgO4fz4rI_@$&NJ<>lAe*tfX2 zy}!Q3#>VmS@xsEwkdl!@L`XnDK97%)ijItHc!M)FH-FgM+u`BkVsCui-QTRNtYdM4 zw6?U>*4EnG+dDixQBhM{X?on>;AV7ywXv}~Iy)U79~>PW4-XF*85z{p))f{O85)78`x6BFR!;i9CY8yp4yE92zj-{9Y#pq{O-uFK5Kz`?-j>FUwa z(G3j^+}_=|xw)5_m%_ut#Kpy~u&}+qzQDr4v9hwPuC1l0rnkAc&Cbru&du!X?AF)U z!^OmvmzJ8Go7vjhq^6{wp`f+5wx_A7kdl$l(0|aYt*phz$FsGx<>lt{^z@mVnUj^1 z$H>Ui)6?hZ=olLu>g(%`kB-pM(Je186&4r1z`)MW&qPK??(gr9k&h%MCW?%U`TP5a ziHCD`czuM5NlZlW7Z1`~e68DMjM`gn7~M*evmUi5KxVr(|eC>KNN`QpjkMEL2FkmXdldJbxR%8%-be(cpj zRQQc+6u^H0ocWk`>+);8@#EM0#W=|K-+$fxZuq72+v+>_-1sfuGU&swd*k8h?tt>8 zhisGI_uZ+6_p&tVwO1Lt000IaNklj(_$#YtJwJoZEa$fc=E_;!{baC8>EU^y_q>9P7X`ce!$7d2$3>J zj2i}N(uyDz6hMVEjf{ZhB&Jc@LLfee!(@d>u$m%%doJ~+W;vF*4?U$YCet1 z7v1ld|8boT`V{p9oV%45)J#4tNPorTa``omn3a>63FmI*1%%0@F-28!d2Y7|3=e36 za<^(lA)QWVqT;^l>%q|QSeYs)cM&NM5Jb&EIf#fu3+DikR1oeWj&rEJd;}4pbpF2} zkSA5t9@3=P)rZnnznnrvI4I~9$bni-7iV@v?I!ImIx(7(81c;BLJmp?U4L)8Ie0xx zIurwYatnbwCg)ne{7yHWrBY2^2uF&ZKNe_0ne1?$GFYmP$wy%|od+F92IO*XH%bkY z7A8WGViwX6R4q1n@6u_Z*>$KErA5P$cGD4*qejE07-;I~STq5S^yG218byQ5|MJw) z@!0`5QtCM*90FP>P$E8XH-C3D+@+GVA{-}>aWtd*HnaD(D&;U7X=XwpCkQkJRVDWv zcj>*iGmpZJj`Hl>5Q$%SP2MlJ@u@j~{s3tXXhHx9xq0hWlZj3f_g;hrQC6lPND!qq z3wRHM)L=*QsbjFD)Q?1kK@s&K3#E!!KJJ;biLj)IJ$nm9A_S#zdVedqgO7e*4E<;( z&QIVVC>_aB2nHVsa=#xH3ym6m@;vfD?9<+VEHyF&pO1=$CdI5i_ZyEp`1p>|rFBW) znl+5&V(PD#|N2{?HFAwofneh>+)<|ea!HUYa7hV=%fXlpPm2BN64!-EG0edrumWP^ zEXX`1esk%L7ONvL0)Jx=bzSAUF}s=jJZ_uL%3xqbprA{mS1OenjdJ2sWZfn0&}G}aUYh|UG!1&a zvO=km$r{Wu((c~hRc7;MyWL)kzDqCD6gyiq8mHB4Hovo-u$ZlV(B!P4LG2& zfit(T%>mS32~v@TT-I4y+YdErecHH>})9ptpTkD{SI+- z^}6XxNxB=ezQtKw+@O&aWrKlbmz31km)7fa5>N6nl6e}lMcL5M(xTTFd4U{nNoi>b z`0Gj~$xBHdmdGvo77*)-a$IKvrw>TFA(7attL@2=B!5Zcw{&TgdSzE2UE%>!>LnhJ zJ&QLql(m*LX-)uKBjo{%ZI_hRm)?+gs(IBzysWIX%Sn>v%?VVLchwONtH*OgVz=9? zv$A-+8b#HPNn|yh#_H+<0YV`2RC^?Lp50>~%FD}BRJ}@etKT}?5eO6zm{IAe;Q=u< zLy9VeqJPTw(h{-{=e*etg1|6_k&q~Oyy~pHa4CFeW{|yl$HxgUhQlG%8odf22#hUH zk>@j2K1a4ql&x__hg9lvX}K1FP~_F*nJN{gO4Ab3&%uT`t;;142(+ygLzO^_$yZrv zs%(BSi8N_>T%*7UirZ?mnS4Hz$VM63ty)lAZoXfssBNwVl-k<%58fqD zir?mMNt0|NseLoF8@*4=CJ`~CT0))lSNHdMPW74GZKsn`3P764g|jk#QI zu54CHc+Wy^VDXz@Xu8$p2OOizfdv9}N1(ri#V_9Wp8u-9(dZ(&z`AoVk^)^*Yo3o;xgmGze;b#NXW90&*qjd^r>WnzD7W|xD0oQQ(3o|%$2ljf5CmWz00Ge66ZZ|0&ilV&dS-SBQF7u){+FcX zDvO6c_AIbKNr!)D{!fPdwviWULb;|z{$(vIu9u@zuEG~`Ow#;oOyXPxBBmm%__R|b z$`MozlnN2<`hU4r`IQO)Y1>ZHwxoeRrr9UzT)559cB9n>(b|q|L2^m{i#5sfEI5&| zrtfdJ+v9P&^@c2=E+S=Fo)@q6=$SKq;(R`xPDQHN=|kb#GZ;t&Sx1Alqd265Jf)VU!AK`6a6VC`>}29#a7;zc5a$v{5~i~ zLMoh31oaHbv1wH-v^%>bl>~A+NC-N~3PF-W+J!>;rI0ub^;#;ahK7qdv(s}W*mT6u zsCs+EUVouGhL4c4K|+rnt8_L3At*%7fXO~U;yef%JAzcxYL2NZTnA!^oL=y52 z3MV)qhXsf+fV2?`rK?8Hp$G+OKasH5fWmA|YYihkg#1u^(?S{DDL|D#vC^KqOs2;! zKy@`*L(#^bvHcRuTO5^#Mg_=*N=Rg)V;SPv6o0)@TV%xHFWOEXk6lF&9Dzh)>mD42 z-~f`@@Kyx$_xy1E&JW?pWD!E8*eP!RXCX)oRUN{QzZHkzq)>8% zgF=9~g`3LK*P&93Mi|=rbLsDWS=I)XWSb-}x9tRw<9|j5 zZ|#39$Xh3bhaDo63^g!Kk5h_UXlY+p^=~1 zQg*acfYxR9sMOhp97xj>x@50V!+%g`doxWl{&`ge}8`$^}o60wy@A03U~I5cvfHsfMNG*~lSi8xUrkII=xHrZ~b0 z6sIPLI(dS;swmEZA!of{u)mRN9uSyQY7q$xvMI+;GJ}xw*OC$n7Jsy+=B+^vb~5=5 zzy2!+$&*Ij2~ED)W{=D(o}%CdNt*rgw?`57Y}*EA5BW*{kA6!(a-aHV0dl-t^H2QU z;F?_CBOt!=mjrO>5e?#3eMv!lF*&AWqyZz!m#Oq}#7w`-2$f=84*%i&3B=|j(>zO5 QE&u=k07*qoM6N<$f}cSZ&j0`b literal 4056 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 delta 2562 zcmV+d3jOul2a6PtBYy(`P)t-sM{rD9Y=Ts0dQoF^Qe}5$dy`^!k63DbUvh~`TWefz zgkW`xWq6Tabc<1AdRA$CS7>}wWOrI`hGBM(SZsb#VRcYqbWdS(UUG#}WOr3)dR1tA zS7>`vWp_dXunxma}1YjmXyHeV4R;nYM6Op&d$zqilqDe{dbeIXMmf8pueiT&~S&LzRA?4tFnNbxnp>b z`}+BYny___sehTcg`&Z9jHhCEj`Q^Ofu6l{i>76Jl7C)vh+lMyft9=Zik|Ln7FOK(0-S-iKD;F*yYdM=ETj|bB(HVi>0!^ z%XN*Z)qmUL!OYfmkgs=^ zv%=D^!qmRb-ExSb(b3V^*VV_>;;FsSvclAYoPWB?*W5P?mw1n;u(-g>&(XHKz^t&fh?}pW zwaciy&x)L{lA*EP-P&k05Nn@PE!Ed+D_Wq+S=L#+S=NfAlmGnPwd)2+L%DY zm-^Q$DDh3#^(!c#^yQiR8v& zz4yo<$xH06O>ABU5lA&fOVdVcWAjQPDSsJYMuU(9TB$^3SU{>cjsoIFsT16L)luuw zy6Wtn_r6DLAkPY<-+#aJ-QRa|xaTB?iy$Ony&^+hxX>e#(dn}10?vp$LfjP^*((fb z!jMs;>1-y0k(--4t3`l=3P&3AroC@fBb0IlXqIklUgDgYg5}lKC$Gl4 zvGrXClAWR9Yb>!vg(prNIr3JkICA8~iNc~-%bM_^#C;9pVuGSOr@tV0yTy>_Pv0pL zVBBHw?s^T!v^lp=HZ)8F?AbG|g@2GI8yZgD&e3ASdw~xW$xv0)UCGaXvrXjZU#Y85 zF(Si|s4VKtwfgwDWDD&7Nn&; zE0mrN7j+UX3xt@d3DR`PPU_I6o$2WXb$?TZ_UbfnQJRp-gdszM^nX*x&MUK<(HH{i z+Fuk3gmiFGnqUB-@HJ(QA`PVAr(+-bQhR|6T?VT7SfQ`_EuSduEzrTmB1hSpa3q{( z6({Nla^^H)$$=yyGzX}HW@;;Oi(lpBz`aDVl?Os>D_=5$iaA@z(0PA#d6zc?Ckfxm z4o5<{3cf^2#d&YYUw_Sc8iJFAui%Cvp>(w%emWHuWa#Tv{%T)iDE>z{#S7GQ5Rze9 zMDFPuQnktT`Vu?58 zue>2g1)RjGs4*1jn}SskCA$ydk^4DqT&61Ohl|RV)x{hqDyrd@AhTkiT*_hGJvkRIXs*?T~hQ zraDzXg?$AX+D4(s(4x{(IHjtYdJvM+EQVMrwvnO5+x(R`dLFLpO&Y(Iy#7tpY6D@qZ1~_j2CiwJKHa3d&!qMG6Jn zRI_BJ=>IX4Wn8a32>yUd)iXlt6pET>ge*$1cu=|Cm=%o#!4SNVwW`fjhm&Av-Io6d zsbMGx2}%~yP;j?uw5;Sz$vhvPXeES8#$XG&K3sx#zIcG+5DlO{|KLfSiV9tVS{ zl{Fvu@_*g_l9el0mRv=ZKsHm?=K)u;Wd{Q;a(KA2J<{HWvsp?iFxKag8Vn9-Q-u<0 zvXXEtHg1C%d?4)jK&BEnhb_|WV?(sRzT2DTm;Ev$Q=kZhaH=}c}RPN&V59nz^HCD*ylh07*qoM6N<$f&!s3h5!Hn diff --git a/public/images/emoji/apple/kosovo.png b/public/images/emoji/apple/kosovo.png index 0db8d5dc5fd104c5fec06fa69666457bd1275427..08be57266f467f9d22a13f8a4b643951aa538854 100644 GIT binary patch delta 1038 zcmV+p1o8XZ6QT%^BYyyaP)t-sM{rCZF<2WcQFVi*Uu}+Sd!9H*Yc)l187*2aLUU(# zns9%ib%duJE>j&ZRXkm#M`x`;VyZh@o>p$9W__`~rFk<@jwncvG*g@~NPaF(mfW># z*0OMni;t_DfO?O>&(`N4J9is0VkM1KN83Iu*aTX+`)(Ws*1K%``n3K1J)5|bpxfK0r#1*5mORTvFp1R*+F z1xgs>RK#&=tlcAMGRe1Soyevy6mAHcVf1o1IHdwbDTo|4?TNOD?~9j1k;Z^soC7|L zgQ+9h4n(^xl*Z|GU>yZLf{n@}1yS5hWCtQ}8$>uLrGNMZ2`WXIJf7={tIPSKs8BQ= ztA--)H>ojk+`1@d>Q*0_s;@QU)%kh>^`(+Ah^%Y&P-Fr4YcT*G!BouI<$A54S$%_s z;H2_$K3Ay|A>$&ziP*6|Dyr&QaaJ)vDyE?7wT?U8%mb0#w;q9D6V8=l3g_*>nN<~Q z6HQi2m4A!{tc@fl$=07c?*JuA2R zIGR#RJ|?n*MEz#4NP=>JajCOYL5T9E$wa-?$KRq(#8{DMS)P@%68S}Q%TJw$lN^9l z^AiDrBCcAQH6|^)iR=?I@_Ae}98vB#m7wA?6Mx0`K!x{UJIVRH8DTTw6BYR#T@;Y% z=|pkr5+SnChy0r?)4G_K$e$r@&OH_J!=6fH+f@^^(B%Q>o3xxxWPcFJ@E@ zM4A58s+HMK(V=KXcFui7^bb*1Jipg$J0pRnz9`eBoPTE{TxVU8meMCe&-e*x_x%~+ zZGT;!a&OZ4N%}{v3p6VcZ}$G7nU2JE5Iwp9P|-Sei^bw=z5ZM_ ze15LK7LBYcf}Dd$fI$U1zyN|U?7v7yLAYEmcI%D^X(~f$Ym6887*6qLgkTxo?E!kd z%!6j{nD-w?w8YAb#ST8e7d8RMvx4EfeuE1E*Z<3l7cc$-X>agJe}ZHR00000Ne4wv IM6N<$f_6#X#{d8T delta 2514 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 Ef>&WkwNCz>oke+wFzAuw$b z9lT|5zi)ZFYIM72alvkQvR-KNd_U|?NA6}p_op`Wk~-!xN&MO>`Moj4COO6wD%vDF z%@{8K`61vcLb47c!Ve~s3mmK=GtyUP(jGLbGeVmfD8*!PzJEzr+(lT2;;)5Czb-go7+8a;oZ% zOqx99|9`MgaWS|d%7XMu9(1tKllD4QMuLC-&fIg)J$asIUGn@7g>1iHufIPZcDr|E z_v6R+^?IKz(tlt;Xg`0wUOzOi?fLy3TK1*xZDKI4$WKjE##qHz#P}Ljd&)nZr>A{( z!&oPyBb;+h`SS8oRYh?+9Z#^J4bbNGBh8!TNWYBd!(ccd$}~+`c92S^>Lp&jKyU5D zyWQ?^cs?Ak&3=@@m_nN3ztH)JiXUCBI3SFTlo3=^V}IyW6xbf}69)#s3vtcZaSEx_ zHJU=o!`GCtEX$@$&a_dgbh8m0Kt-iisSwgT?6`;ef7@>%ILJ^46pIM4Wl54YnhTYh z&q6SW^pB})^m}Mfm2a!Qhw<&8?V zjFAFcVis$}qmuBf9es5W!C;<=7_qe>K!%3Vpxl5)*Q2%MYa6_%BgP9L67Cz#-jSnF zd#Wv2A-p{4zQ`@zQ7P7hI#@3xXrfx}gOOphxqmxyLID*ljM@WYyjhVyXhar`SV%&R z`Gh@KBhB(1iG|>Z$mdF2jnqLS(W{x5tbR!tg}hh`XYqAJ)}jkLLLn9pG@#J( z9kGZBC?k%UZThC6kXyW?Qj8c6$p`hkCqoWd2tjge2%S>XA8j!I(N{XAkU zB7dPK6P(+rjHO2sB+ub0$+fgwCN{ogjSwtj`lQi6EXEy@mh+$Z!#Ef=53u;mT zF!Pe95kON(cQVT8`KXve<4YToYkuv-j=9ljdaG4xq{J96m&=>xd_2D$k42n9!yR($ zfJ_32Z^+|k&gVCf2_3QcGYL3|;6L@zPI{2neGLSP$n9+qUHyT8aXlp)D2!)^>$FYF0YP ssKz2J>!U)B<9{UA&;PZ#=bn511zV90Wls?;_5c6?07*qoM6N<$f>+Jq)&Kwi delta 2602 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 R4$S}n002ovPDHLkV1k6_3!(r3 diff --git a/public/images/emoji/apple/label.png b/public/images/emoji/apple/label.png index ed8b9da46a213208f55926d67a5184a55794f8e4..08bb5bce00920a3e10f5d358cfc63dafa48aaa2d 100644 GIT binary patch delta 615 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 delta 2414 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 delta 2432 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 delta 2413 zcmV-z36l2g2KN$>BYy(`P)t-sM{rCdO_n26pCePA5HpVtGmRNMh!aYL8aRLsFpwZm zmlr~i5i^hyFpMBbkrh3dC03#jGLs}!ogz`3A5WnUFpn5RmlQpZ6g`m`LY5ITjSw`F z6g!s>GLaB6lnyeD8bgvGPnjW7q90D1AyS$oPnRQ7of<}%C4W|<7(|#BK9L z7eTOktLYX%uN6P8f3E9=vh9hs?T)$b6g{kzyznb%&3~A{@|?o+EMvP7Hld%y^b$Fy z5;>?7JE{;hoho3pEM>nEIHeCVm={5;6g;C5HlHhL(I;D}BU-=}Kd2Nurn2L9Z4+q!2fo6FHm`IiVLp zrVurnPm0?cOSqiD@GWS`FKW;=bJ(WI^o6qODPzWEn&2p8%q3sIC0@!gZ`CJUwsNH8 zH+I=9XvZN}!7XRR9#Xa?V8&AXL94 zU&J6(tQbV58AYKQNVpe3p)+vPKYZ6mgxFk_;3QnjUY6b_U(SfL?R2K)Eo{^tPP~Aw z=YNs8>u8+hVVC4xlj3U3%~=2d07i6DPE!Cj&DDuE4+99+IuoHKAMf_|r-<*Ws~JCu zSj_m(?>jO`_@gHyv)b>|I;zHK^>wOAN3yil>;6|+o_6d0&5U-<)YNCjbM*Md000Hx zNkl*tT$C71i&`|aO*5Htf#jm>&+9clAp&opv6C=_mIDW=L#K($*m<1vR(arj)42PdcF4Dk0f zq`!CMa6Cx4cpMcr!?ajFY8e<$Ik(^snG|r#!I;XZ zc5fX!Refq19+N*@(BJ>NO#1r^hVwD_GOGU6^J%Rue{iI<=rM=$tBg3D$3>+hgM8by zQ?3g*Gq#Y_%Xx524i7lJq<_L#Cj5=7Mb(X2Rv6<^K73Rz!{r_^g=I{)*Bhr{5HVQn zUi7ovirk9_BMdZN-G3G`8HJ>*qMzheltn6JG%b92f3mTSC@CJgd;3SZ-M%|iToPex z^I{J zwt;OMTMAAhrzA#APuqTlwe{36lAP2a<82_6*XpjY);ti}W(=7uNeYe2yYZ#MZsf&< zCM_|6TpFaIPm~}HHGjB3rnL#7aXp_Yp(idhq1F^KicbhVAM=qCV$O#q#2Z1*($I%W zk%pWhM``HZ=SsLI4LL&g@zs@=_I#m)J(nu0ol2<$AtT6iTv$K4>wi-v>>8~Xj+;U*e{A$_Ycq-I2K%B5!+?<=lFNY`F0eH?89LsBAi01Rl;#H7h| z4PBUh=zxL_Wq%9lYY-DpTBLSHl-I$QLkej*=oOWrjhuXmSazKrc{ux9g=8O&q+eh5 z;#F&fMMjkOwSx+|<{gz`vEt>67AiF(($nj(0=zsUGg48nCW6-5slkz+o?deE^o$Hn z)wX{9GKy*jC2vo;d4oWw$;`L4}j!9GX4<#fa+IDf3!b;@MY%z_{-$q94_7G_hY z5Qub8^7Z*e4nDr1la6?6N~*F-T1xTtk(qCbw6p4+38|L3h!BQ8o|57#la!R>=rDrF zTnv$5Dy(^XDkv21^0pcP6>hGidXlx}7q zQOphku_>_FAhwton5m1hR+VibYPsR+(?lZC-)5i94hjN2PzVZQv;F4A6OB!_BMf(_13L^6 f+f9tsp#Q;t#kR(3K+Vx_00000NkvXXu0mjfJ+xrB diff --git a/public/images/emoji/apple/large_blue_diamond.png b/public/images/emoji/apple/large_blue_diamond.png index a1fb6d9f972f56c265353bbf7152da58c17096e4..8d7ab3a69009c1451e7c5f55b81c8ff5dd601c2a 100644 GIT binary patch delta 724 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

    HK02RNhKwB!*IAgel1o4Cb{DuJUkplm& z6aKd<|C<2**M;ha1OCB7{*nOyqXYlVVU>)+u>b%72y{|TQvgxuL{br`>88oGmjD0) zFG)l}RCr#j&y9+NFbo7>aZit=f4cAgu$MT(AjPZQ?j+(5<$q(G9%NajuVh)*^%-02sZRk&-)EBA|-^lOn^!C>au* zjZSCcc1p_(=VM7+nyu1n7LiXGFR+QsugUWBYmMU3sejAE@xRi?Xa#`~h@!bItbz~I z|Nm@G7de=OZgVXiBv1F$TFP}kK1r9AMiSqNV$N&0*G1#lmBeXwmw6|C!O2tsv}hEk zdG(}D(l)*Z!ql0i(q|y?pA(8ZQVkAvLfr~pB;6+&eI`=(=$ z2Ctcv&42nEj~@)iY*sQHf}N98%POZzuv)Ub7M;EpRPFRxkvw_@0!qt@BfC6eI+r=i zYmrkVLg1VL7Nj5tyZjr2*V^tUDdV+AI-I1Xk2ddfz}c}A$!z>O2d}LpC#eYQZXfJW z`-_8}P}=bNuM<}C3XoJOz>%GTSELhOaT1)E9V1>5JG`PKI8i&if}|bJ8?`)vj4MVI QEdT%j07*qoM6N<$f~g5ap8x;= delta 2274 zcmV<82p#vq1?>@#BYy(`P)t-sM{rEfelXi~E8TuC&3Y})cq`F*Gt_`C-hD2~buHX@ zF5-YN;Da#Vh%nZAE!2cC(}OV7fG^a7FXDwUmNwp! zHS2~k?vgd{j5P6_IO~oy_|}B)m^a>uG2)ao+l({pk~Hv-HSCi$?1?k)k~Qs+G~$sn z?x8vFo;clwF!|Vu_QhWL*^b|kGWpt+H}Ir7=$bb8(|+-zI_sG>?4CIA zqB-J|H0+x<^0Gzfo;mi%V)MUN+levWjWg<~L*9`y?66MitV!FAHQa_U^Q}Mgu0Zgn zJL-`%?|+ds?~pa}utD&tJ?EG<@vJ}fyiW7BN7{ie^}bQzjWg}2KjV%w<&re$l{N9N zLiWR2_s?_lxlQo3OWTJq=%739utwmLH1xbt=%YUAr9bq+TI{n__S1;*z+UsmYV*Zq z?6q3;&wSg9GWF1a^~`qo+?@8=oZgc*_uZxIv42(Qu2%QWZSto(^}0*(o;mEHI_7~e z=6x^jr90_>G4r%V=bJa}r9JDKHu0i5^SMggh%xfFO75&f@3v6((}VZbiTBTV_u82C z)Q<4DQuf%G_STK|&2sk0XZFf$_tJg!)Q|MSVD!mv^2cuCmo@p^nE2b6_}!t_gEH2J zGk@ETGS-MQ@w{2_yjWXn5o-Vd05Wt^PE!C6L_`)55~orWQs+@p6s4%EtLf_GQ>>@x z<>l$==;=g6=;^5D=INy;tL5YAM5~~r7Dl`H000GQNklQO2T;TA$ubtLj}Uphah{2)QSuD9=LJ0 z{Y4|PLhceif8EQy_j%vX{VsRE1cg$F+L|?Ls96BL_Sv(wXw^L!(({)upOY}Eder84 z=e>B5=RHToI<#((J8y81=N_c1QXOV>9*;aYFmQy-%Ug|6r7Q37XlMVxK!4}x;eR~k z>p&MTu(SVZU*FUI&On~hbr?NwUf_{ieNP@ge$sdANFdK!52NIIxswmwzaH?4>-P_l z-IZE9v~DKw+z9wnM!*eV%0ym=*8}t9wBEk@yNs*1TXVondU&K=-N4h+dga$KuC(?5 zQ#Z0YY1e2@SI@n;xVXPw0S@lKz%WtNUe)y1J2(-bcCQ?Cyn{@H{%$FyLu_c-O_nnee2HZRFJc$0jgZ|u;?((p~25wIz|^yE;iuQ2~josMxR(|32GUr|JO_$CB|hes6oCGPfR z%IYvnDlb$4PfXF#_YiWlCtc7Pha%1%KW`GDSk0_cJCs_&Mw9;rDkt_2iN&b!=i%{5m@&SbrCvlo(sh^k2Rdg<7?usyf9lX`PZJ`K44>tym?!NJcAb61ZR@ zrHD`BCe*AndcAB!Ye5S4T)ZQ4jbr>dZi>K~_~u5kG!&fWhS+a#M92pF5bjxlq2=3K zTiZ&I08I895Md8I2?8ta@n1G=Yhbe7Xpe}Ew!mYpJ@M;rVSgAbh~kE9L_i2PN)T*l zG5LXHWX1-UJj50@A>cBz&5Wi#B8gV);3(1dWAHS`wu_>I*;d5q9@-X$>|oC*(MPZl zMR^9Zr*_G%xEYHLOz*$|c-Sm6ZFw&?;#@kLDiW<%q**T#QQ7plMES2;OH&q$>gljv z0S=y27R%Ifrhk{e(E5!y}SHQKsuP>gIe}q^k$OHIl|R zS6BY82wR*vpCUE6MpF3ZIFt$yZ1^;>tE-qsvmu~VLfwYXr_uO)8+DY55aypce*DyY w0!n2Fi%y(aGz%V3w|KESYF1F6B@aCQ2Rqt(v5Pxr4FCWD07*qoM6N<$f{7WiegFUf diff --git a/public/images/emoji/apple/last_quarter_moon.png b/public/images/emoji/apple/last_quarter_moon.png index dd30c430cc501b0c517ccd9008449d2d811e239a..1468eb8d94d2a22f82b0dc210a0e4a01fbab855d 100644 GIT binary patch delta 2336 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 diff --git a/public/images/emoji/apple/last_quarter_moon_with_face.png b/public/images/emoji/apple/last_quarter_moon_with_face.png index 1437604c9767d8e8d3bc2822bc99ecfe27a421fb..f1dd7189178d917aefa1b87bacd4a3d231c89400 100644 GIT binary patch delta 1583 zcmV+~2GIGd7QYOTBYyzoP)t-sM{rErq8$A3oZhP|-KH7#;ECF$A?n?w-?m2HvqRUU zDA%Pa+@~hprXAt6Li*~4{qTb4yh`T7TH&uI{`Zml?1%NcdOmt04L1aPY=9L=Rt1;%vmuw{Qv*64^8RL9v}9wC>0M=rLP_yFpb81_)p@Z+v>Dh z-R|!}I-_sH;YY;q+vuV><*a|TDU1*zQz{xZ)YR>@uYXo^BeG1&-EJrUIc=t9)F01H z7BR-S);q+g5vS8WpHDMD5E`WY?vF-Uon0*qFsao#O?9e6ebdD0UVkyqGMgqTMH0vH zTAoN(_VlRS%4_sK>mU{#EI4{ zB~qLKl7ClK4nfWIFs9*7JjsJ#62w*hxdEq`W~jS`!QmtbmO+r``NX@YPZouM9`bmC znooer<2?A}+e4S*g7UJOdM8OzO)UhFZ)Tmr%7Bwn196!NV~kKt=S$zr$e@TomZ`E- z$`q^drruRwJZsiFFCd6s_ejZo$dwSHSQTXji+`F_K8iA>L#>L{3eKBC++KS+eGmkW z;J|c`8|%iZ1M>#a>0_o`ZVfZ98dFpK*6=hM$82cnh=Pd#f-AeD)E{e1uP z>3{wQK;O4INqPL)?=2&cgxBTs{r&yR6BNCCU#F?nv4=_BwgW|yF|{Yque-;`$ER@3 z=*<3dd~ThqRbfOVB~Qb>Baxtel`w`U!S&ISdgB9#^CS)?e7}5t{_$&{Kjaa!T!(+3 z9)Eyf#4G7Qd9Vyqn^aZx@Q_Q%Ql1_!>3?kDKr~oGoM+32x2PmNWAXBjqubGe5L{0v z^20HkI8bDRuPqOdkg_aG4N32;JXMNumPO(6x^*Oo%vL2rg7l7xnTQ}LlX~*-_4K%Y zTor`_DM)%Jg{d;=E|o<*Ts|CCx=R8X1-r|V6KM}j$W?8OLU%>${Sk|Y%8+!6~Y zE@t(v6!Y0;*lArH+mPM9%k3Q`<&I0}*_Fx&bK`SjqyDRn5pFzkMx?TaIi(P_`Eu$t zLk_tyYjw&{K3Ufa{UDSw`cuniTz@-BiZKjq%r;4ageU=1(&t)3CXu8FBugOF`_SrA z@4c?HC+8s1h-4OuB(FEKw?O$jUUO|crra`SwT+l8H|Rz{z^lF7zG#m@a`!B4*DNXl zpeXD85*H-Dx>0gdNJ2!V!%$*)IiSePZs*c8Vi-awTUq0eP_rSt_LhW=h<~kZl42by zOZ=#aCw}__TsnV~WNn(b)oQO1NgST~-XV!JM{X(pSyO}*{RIBIguR5 zq1^}ei002ovPDHLkV1jC>I>-P3 delta 2853 zcmV+=3)=L*467E9BYy(`P)t-sM{rEtw_VPqNZG1D(WF26`qupRy28uS$)r}v(8kuN zKhdpAU3zFWePbNra{f3LD8f@(xpP!t3uwkOw+1O-nLHt_Mqv_aOA>Y{PddEvS8P?Vb-x!+rnq+;GFpFkJ+(D(WgTE?1A*% zjQQny`0I!9)qi!(zGe+X z`00l6+H3gbcJI|=>dam2&td1uU)Zom>B&{`*k$dIQ=#bWEsW81Sz;=4}h&u01QefHsW^x$^y*J}6Vd+pS1=*(s0 z!dUFiUh~^#=*(*0vqayyP3Op4@Y8MZ+I8QzO84Y`;=fb$-f!r`SLMA++pa_S>x%sB za`xqc?SIp9@YQzRyI0w=N7br9)~!VP=y>J7P3g*9{Ofn(zEAk#Y}~d>)uul5-D>jP zc=F$T_27E+-*M~DXXnXh@7Hnd&uRYde%rQB-n&rVwnyyETKC{(?8;O0*>m8xRQ&IX z-o9Az+I{}^kJzn5`ss4|=xg%UUF5$|;lf_#$bVw~?T6m5L*lwf<-%S2?S$jLSL@Di z*|}KTxnKD7?h*?N^xb3e*Kp#&VgB-yJ}W397a0EXhxqg0`0vuNoo3$9i>;MND;ysE z{P_U@0!BJKfOmI^f`RG2RPNJ+_UE(FyKnXBzGO`{@9N!9N=tfeWwouA;@{ly-ItVp zP=A4NIo8$NXkuTyy16&ofK>nh09|xaPE!C682-Qt903Xi`aC!#E>48WjA!ZdF2#fn zJVzCiU!c?TeI9YG{Ked{Q@_t#CT?`_IOVcn+;#ra;hzt4T2?F|bHUWD)+n}GI)Zw&hZijMp1TPF_w80g@MeShJh zQo>^slV0{$knQ~TG6ca6?g$ODPOpk}YHGuGE@T`pJCGlUR0dlOU7l7)CS$^;%*@ zX&INcL2_a@%gF5pDhVZ_sG8o+*Eclib!v{4wjJ_dhZZVW1|m*jG6e>cPA6J6mrs@R zn{s~!d8-pr>&aypQGnwZQhzczsa5j%i)NWwH@y`u&BCKXe6t7z_p>UrE=?8a;Ra z@%Jwn#B8Mpg>#g!MMf?YVwi!&7kO$L?|yaf<9lDNc2XD?94bbH-G5VN05V|hEcYUw?e{#@$XMiLE{klWBXO1(!PDsEkFvJb&w-55M~afNpp4c&PS8n0s_MrhXQH z=vW!wqquedyN7H4zIye+?NJU7Wu!se?2S8X0w4pOF60k>xwf|UuWvs2@WTgRTts;& zry%%TBZME3nP*u-41aVVWv%szL_jlqbNu9o8YrQ{&iUe*bACl|!#_w^#3x1_QXSb791>ebFK+U*!t z;>Fm$KDqpN|NDXyk|U?O%ncTVt!8^mv~_(TPV!!@!mY6Ly$GU1=JoE?V=n~JCJ%SF zmUn?5vDIp}7La=T`bcbr`6b+kdH4CIw|<2CwcKg0NVFB9W+F3p3V4>}e5$DDg2WE|K6E=CzzZuNR4Qy2_HK z$+15N-$w|KcejegX1x#t!x2uTmhj8Z1Gy(ACRW9-#}Q!qS|Cadh)}?kGKp07pnrL> zVcG5XudXVNZ-)SdN42!Jip?w`QNm#gaQdLzy?;1&ZEjAXm~<@t1!nZy6&bMPVPy%j zB}^vKq?l6-Dkj`l{8z3Vdkv;(M4WOK#k90G zcU6#u0*TSaXj(CuOb1LW2Q=_7NIw{3+;F zJ!Mbi+1bK##?G139UUEQIr&@%AUUd@f!^3sqFO+hE{@Ke2I{EF$jAq-xNYyGz`s8v z#w=VucX4z&fSPX8ST$B_k-Y8IXlT;LqtBiScp9CVnVz1`t*%xLNWrEJf4H!)O@BL6 zFP}MA`oZXEXZnDR$04CSY4v-dJZTVOcW((~U8#h^p`h7yB*yys*l*)Pdhdz-)n-{C z*l+P{CUc#kX82rV&xJ$^Bg7{r0oF)XCPt-F>GUCQ?Q?O2kVs+S@w*Za{qkiGnFYkR z>+L5th5V#Nh>nO)NZ$7&pnXSUHy%ZY{Qwcd{x9_({n(^yCOt`v00000NkvXXu0mjf D1b!7X diff --git a/public/images/emoji/apple/latin_cross.png b/public/images/emoji/apple/latin_cross.png index 96e47984a1a5d3e093e1b2598f899c53b55db1f1..527fe8bbbf39a25d481c70124558c907977fdbe6 100644 GIT binary patch delta 800 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 diff --git a/public/images/emoji/apple/laughing.png b/public/images/emoji/apple/laughing.png index 816a3e33576e9d8659c8aa2297641f713bf6e437..c9ba12d993ceaccba035b3585af06bc6f51e7982 100644 GIT binary patch delta 2107 zcmV-B2*mgE9LErlBYy!MP)t-sM{rEXa1`Q-BgSY4^Na({c^$@qD9L;!yM{K&a1+ja zAM%S1#c2xamL=zd6UA%|%WMnto*&$N8N+NA?3xeflnvE%0@!^9+=U3^jtlYf^vY@j z^tdMG>g?fq0j`~m($?7A-{HQorP-Yy%*@QcgcpitN1TCc!GFHG|ELB3_h0_vVgLD- z{g(s(xeEW)N&onI|H?f7^iu!maR2y}}$^Yzr|N5f;3IG1-)wVM2-bC`C5dYjT|JV)btRny6 zGJaAilU4<cpMTD=xcEnnFaEE_imHty$uJ~o zq^ZjIFBNrUOmFKtvf&d&_3hLcsmhxfRhnMa_G-1d*#?hx{e3E_ZyUzYK>_40_wn3y z-MOFN0S4BUp`N{>YFr`8>wr}S<;C+A4?WEBo4zkgp%Vzh#jRrPfN@RVqVBBp@p2`m0UXQWY7-d+<}qN;?kqi zu%pS;$xPGCc(LGOq0r1Sqch2aH?Hak*`zE>lYb>F9tSd$2d|}12K2Mf5CoKh7$?Y`?JisvFz~L2 ztXIpur;7!wxhvZL9t_buU=dOy>%(|pAR0Z#bC!GD++_!tFa?5=?UNB0dbXz&BCw&ZsQ{~@dPK;jf8RonJm`}qObL z5?7)yfGxeE*MepEJ`ICAxb5JvE9I zew=e=z|izZYU5tv<0{~SGxoH43`6;~3K+wwVD)IzJ<=aP(g$RleZQ!coi#4LXMfff z&>f^TVYJUug<2p-9?>2As)sN71Ize#9&d^kL$6tcpfB8miaR$*x42sxwQ ze}>9IaOdN8Yhl{g#gMeFgdiOc2VznmQp}@7I59nv+}IIG#ADm`Q=go};RpxN`eINF zsX4exQaR33F9Ty{(trgTIUd` zL$H%wxp{nfsL1|yftnDc#bW&m+5MgyeN;27SL=sUqf1c+CJQz6B88`BRx-E>TNJY;}@|+nQK%ihDC4%JjAVU`9 z6YA;>0H@wmNtuNj6Ob(Ey$ZA2nL zpb2;YRRHjETSYv!RAXKJ>g*$qc3n0nNIE5wM-kOT>&cs6o;N&~6< l(+g4c_fLcSAM+nR!C%Wr12wZgx>W!G002ovPDHLkV1ipF8M*)f literal 3699 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 R*46+3002ovPDHLkV1mY{Y#0Cl diff --git a/public/images/emoji/apple/leafy_green.png b/public/images/emoji/apple/leafy_green.png index d3ed9429f119311809bb0f5565e13c1ea006ca7b..d2d8270ce1c51c8ecd256c552aeb4d40328d0d14 100644 GIT binary patch delta 3004 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 Hu0mjfC-Y0t literal 3590 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 diff --git a/public/images/emoji/apple/lebanon.png b/public/images/emoji/apple/lebanon.png index 39a7f1bfa2192ee4df7b478d482362944d6eac53..e734317e47430e7ce860bb7202912a04603052a0 100644 GIT binary patch delta 1399 zcmV--1&I3M6p0IvBYyz!P)t-sM{rEOb7-GBEp{avh9(%hc5aW4kD6>}no~-prlx)= z9(gAlbS4|Zd2YpjcXlQl#C>$cd~$Oj7Pxh5$$@yse|5QXXpNhk|NsB`{QKWRE%WsA z)Icou_xC8NR@!S^(oH+t?dj(B^ z5v5J(Pdek{g(&@;NbD_@VhS@;!HT%+1d12M7>2c^?GXblZN@;+RQW`0G&R^ z!^78pa_8sg-rnB##=-6F?xiy$fFl>y*4Fb#Fx@j8_pqk2JuSvzQ`e!Ixw*N~C=sNi zqgwq6j{pDw7=Lt9PE!Eea+W-IG_;d>-pumQCa=AD~@y1uDTZQiZ?Z260 zjyWbHq?Zwd%$EoueQ|Mh`~62gf5OSlkmy<)Fi?Q~>WRSSi}cswqsX2!e3&jS1P(5Nb9rhhM;%vnqV3aNUH@bf&y|Tp3P9yh?ler zf`3y7RGWihhaoJ;(_P1P0$+<7?E%%-A&nuC6uqMRO48_IUkH;aODNO>$8#Ka;)V)0 zIs|IO5FE#;IG*cz70-`%bSQ*H>w)i85IyjMAf!fLf;2yLb=`A39dQ`qMu+c63??*K zpkv*RAMfZ;2#-w1a&*KCuy4ou+Oj3Z@qYpzT|i;oLFk8ol;|&Vw}9^UXe5TN?M*z- z!(`a^#I?Tq_(eDsJb4F=uxv+n?c}M|_l6YF!h$Oks^i#}rHPgsiUh$q1d>9}wH(Ly zAi2x85u8IIP4xXhcO}uC0FuNg$%?@2`S>BxdTo7zP5XopM6Wg*u_$O&|CdHADSsm3 zdcKcE2N9#SM)z;S;Sfjp=jZ3NZrOHs7t~mJABkGvfD3KOuZ`}9!$Gl!^D#LfRbzJF zohHy9zxWLasJU#^V#p4BNtCF>ptm?4k>ol8?A83ZjiJ+%UwCCVk!0Bt#kz})#aX$$ zj>MM;dE8*_>8mgc@&{gnx|9O9U6%b%~&nRnsuA#ldV)ELUITq{k+N?7Y^D z3pli2aYS-(Jo1^{+v?!QtVEEx4gp7&XEx4$hLCl{G}Zq5`}<>*cDoH}>up3%PXFXu z1EK?>-zT9|dRj^85$e`PDmgM&A}29GoS&a(vu8J#DbD5PP4=9u(hBrcYH%~f4kWtR zAZA>Hgv(Sew{ejca;dZI(^(ANFia!UJ(bfZ;T?m(AR;YnzlH-#rD9!3-DG)UXq*y4 zldvHO^n*PE3nOQ<=SZ@O9EdMPNar{x!L|R#Ip&yS{sv>>%vvXHJsAK1002ovPDHLk FV1o5!za9HF3}kdBR)uy<~@d~t0k9cUyO zuyt#0Dj%wNZ-_lHbulQugnDcz9mhV{?yde&rv(|_4VlJ=+sp}!$vXRVN1wL zHM~G8y1BXQ>+9Ou+TLDC$xS%GO*-P@;>=Dt#KgoyE#g=} z`uX`wqE`O@|JzwZrKP2&MKxHdWAgL!n>Z-ea9_|}Nq^9FWyU-vzCbMc|Nm2{VSvAj z$$@m&O*YFxD!D)`tve`_JuY%58{ASl*x%q`uWst=>)&Tn&`2@HRYA^IL%=#D<6TAK zR6O|j`1t($@c8rAT}jG%Y`tSsyiq^o@$|n(G?6kQ&gj*>HX?7heny^9X0vqBX;|HC zS>f&Pw}0Qnh&n9ETS&xgU5Ubyy>4Kd&ZgYy?2;`UqSCJHmWYhUnzPxw@A~`d`1*M) zADu%qgEc92wtK=-KdsibwQF9xMKPs2D9($3zFJD=XHx6;^LV|7<>=_vW>VIKb*xD@ z_Wu5~VN!}PA+SFz^4Zn);@{%%=G*Szl*gGumw!ddYg_Bc!nH~_&Yzg-hIW4~All>Q z=zeSPu%-9Q#m3~#r`WaV_3Yf++xP71vQ9kh>gn5+iNilC;pytAP(kE!VAsRI(z>>! zqoi1#RcESe!g_L=HSn&rKx3Fr?RxX$I0}*xZR+Xn{jHOi-*S3 z)qkxn8ph7h;osH#@$kkr)aw8M06}z8PE!D){5ztp3kM1Ztrz(mCx=wD0ueGH59jdi zXtS5#|9xBe;+ia-V9G~P)#LHO*`Bb_+H!cI!>FyI+Jerkt*xzn*5POX00z)WL_t(o z!|m5+SW{;d2XL#k4nPnP_e8OESF2BVdw)SBf)N9`A%F-d5NME*QNm7w3?U#01dy48 z9YMAtG6by%0`7_6z`a-ZI`>{kqM{YrZ{^Py9-fCE=e*qeo|9q2hBB0){D;xjQ=2f3 z$b<=cqXtE&>3%qC=CrBv=gc0CXX3=gOF#K&+<-7O-C5J7E}uL*BqSsyrLeGY7k}jF z(W3_r>>fUG@fW(+;uN9XnZ z`Umso^;e-D^fGhW{K+A>;qRZ5lM`c4Np|M5TIpdDSvv3mR^|r+}8-e2(|4 zJ3&ovw4R>YIN~stPoAMLVq!=n5`WpALh-;M2Y`Yd9UZCWZVVqKG&bTU^m_o#Z_a`R z3+Bw3JbU(x87V0W!wd{E8H1bwvhxH8N&?7>YVPt9l+nsaZD@cK+>NKO@Z`yCIE}+t z9b^I_kqC$jkPQxbdG!N@ht;Mt82e*m3knJXAj!$e6pAy&+1cK{7a@_%%zw7GBT2K*x%nj zFz{qSEWLOI%r2ZQz4-Xlv1^TuX=!Q2QAXBx z&eR9SQR|e@ry1eUE;!~6y?+&f!*zzn$XFfT@dq!I{&egL3+3?n&6d8V(T5C8)#^_#|?Kdhzos0dgI1lG?atTIUJOgxPG1KmW@`f8@i2GueM%o zY;x%QkDv8DgQG|OI=mrx=gy#>&`^gRkZo8ZDKWQ7FJ5XxoAdYxLVw2tkSzh3bQ@ui zk%{Z-&F?FqZ(sZt1r3Ls%npc)3kW#u|LFRIQ^(q_*z);&4yXJ?QAd&jvh-cMWh(|b zK}oMdBkz7^jrE&*!^+k0VYI1lQbjXFET+*=q?5^HGkHZ~1VX2=aLD2<5d5&a+r;ot zbhIgC?K)puOG_38m4C3=Jf2k6^-j?D02w=VuQ72owA#3Ji|N`v2t{jTyt1Y;Nm04@ zWoXTtp>7CSwZVOH?9(^KM551+f~N?w8as zf#ESFLSa#6P3E8~vZZ&Hb%{>MWTGOTfGuT9%i8J4J3ZO2R%D5G-IucEWip9CAma%n z)jW9@ItXYzy?^7LFpn*T*4VgsY4lP5jS!CnxA z4^M>RK62{kKI#v$Mf37X?j08+Wl|nn&c|;ygpS{k*DTgW&~}!bg}g8L6~g`-drvhhQE!Q zgSk1ZBY%!CFhch~Uph*$jr_7Xs<`;P2{^s2`Pw!&^P6eye}Zx0V0;41ws;tnBy5Z5 zoBdQ+BGMgP(p3lKp74hHXSbbhB)|zk_{nVbGo}f?&HX$S3 zx%diUPf`iKXxTwy>FKp$SR7x6RA)c2LvSg?R@1xI*u&Nb%j5pk(?@*j{D{07W0c?Pf4&IoxFsXQ&o9C+0#iQwcLbKXSP}p3LzMQ=2g#uf<^Phu0lE2l=qwI@c>n+a07*qo IM6N<$f=2ISVgLXD diff --git a/public/images/emoji/apple/ledger.png b/public/images/emoji/apple/ledger.png index dc7ea94eea826c209d39c53493ebd62745c0a707..9416e7243b94ebafe2ee944dd9d695b912727d28 100644 GIT binary patch delta 2169 zcmV-<2!{8>9EA~(BYy!qP)t-sM{rE-!ZYW?FQj}gn3rj%k1Eg4rFf2ox2SKqlq0p4 zPRqY`y`(qg#ck2jy`Z&>*1AKqzMsXqbga6T#{Vh0+5x7iH?Bx-X{3rDE8VU?8_PR)gtuQBk|4{_uM7&)FtZ6AJx1e@zNl@ zwQ>2?6Z_mA=f@nxpA78B5YWC}+TGd9#EQbep!C2U;orgT&mZmU)=f$)ntlhVuB5D= zTHvS@)YsAAwtoeTbp`p)1)rpt`{5R>m_y#iN3D`9hJ|6%t_bDC7`nf?`Q#_(!wzn6 zRfT#n+O`hJ%*nZp37DRf-n$Uvy$IsJ6oXNYIRF3vE_6~(QvmD!TNj=F2`HOA{hmhq zQ2eN8h=A7q{ObLfyuyCf_SU5S%ly;8w)60#*7N=mNq@~T000KdNklMcG4cN- zmCdFyng8xo_L6&hJ3H@cm8~3zKkd{?%k7WnK@jM+luYjJyn74cPjuWWwLeUs7l(%> zNz%?Sfqw}ibmWTvwqs_;eVIOAaQ63ozk4k?opXvlhKejg#~*^3Vl_FGN?m_{4tWq6 z4Ep)*^|jRMJRxbCLn$(JYQxaQgZV-lK0aQC_H{Sk7!dPm9rB>y{nJxN1VjdNf3vEq z{>!d3RFp@sE-!V|1}v@cvqDZ3EV=I2Zxm#QrGHAaPa*yOm)yw^9i{};6VCj0)@DegT9}NQ`K#UO3qt591R*QK0~A`pd8dWdNJHo1cJ}#A z>^&-s3hDIzvx^c69GMwawJgAJ?FA_NYM28hgCWT*o2z6+(w`+iqiwj4Yp znKxU04JypoI%G2>?nwT)mRvf9%s~qWQqZtunv3f|ba1`{6$|}0nQXGID!d=jGJhxm zL4_a@=;EJHb#k0az?&^AuK*&fuE%1>&^;TWuMC~Vpe8|zLThodH3k#CLb{j?AZ;TA zcdeX4=uzQgrkTKy@o$wOq;wukH2M;Qu+nIBR4z#~c(E;92~8}f3@{?2>4t|f0lJDc zqNJ+n$tc~po$k_V6&q0qg7x_5^na!61Zk&NqS3Fh|NiA>I^AFF+A>1OiSxof6x*;7 zv2`3x<3bhqAT$HrzGK;L%jxb<5yQW=n@Ud}f+< zx*5t=kNQJ^#<+}zqb{`BcvgHhY(N0g5Zc_Rc+l_Tus-M+Q8e4&loEG0IIC=mBdzk+Y!gZ;jO``u#623#~eFas}qOB zoyPO)4rhRIv}mt5<>LWD$-I>98k2Hi6pdu#5F!enxcXlbf1do+sz96Z6K znb$z(ckQ8uj?o)`03?D)n}CRhkQOq&Yp3t#VG>rT!{7&mc+)!4M;von`(4}IoV$5G ziH@Tvngm*#nhAJBs(%Pwn$Y7fr+w?u+%3~+0tN>P4y;eVJ2g{P-o@qRS6`sE(C3#n zp)|@OBqKy6AXX#10#%?0Avd5W7NB{QrCFBJVl(d3CF&}|1iFwwMk8zMXK#xT%2XL| z7DN~z#RL$9N1XCjsQcpmho^ma9>pqClo-@YgMbb(GE56CO@D}S_CEHW&1SP7!#v6| zr7GE&$%{>$D%GI_$TuPRLhki?_fOxPEdaGic_eUXXoVM$Z$d)#FD~|nXXlYp+{aYB ztkG`L(n*OB@&PSO$m$fu`FRm@nS_+&stFw(IC=7C$SuMmY?O)?(ApwW$}TWyv=Ryv z6{|Q_s^l#JRewAZ0JtY*p5v})s-z=T5HN(szCXSVvYpO@Z8s+6 zLGtiGgaS#YQA&Z@MyA#6?CuOi@F?Y^Vgj@zRN#z^MmMv8VgpZI)yi>W-9eY3LnYatysA;7*R-?z|jFTCN$hN zfK@AL@m(CIg$|E89oqobuEe%c9gu_$P37-bCJhxX505siJH>W@g`z;(UtMSY%7bl< vh5KfoJFVOf!-KB%@3B$LvHnYJ+W>w65uB0hEEs!r00000NkvXXu0mjf!BHwZ literal 3652 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 N002ovPDHLkV1kppOML(U delta 2637 zcmV-T3bOUW3Dp#kBYy(`P)t-sM{rCcRH`CZsw7;iCSa=_O`#}as~k+c9#E(pOQ--< zfgVwy8%eMlN39%9x+7SUC0(2&TB{{nm>Wv98%eS!U!){km=HsU980nQRjMOfoFrJ3 zCtsl&N24WNpeA3U8%U)hT%IUnsT)YQ8%w(X|NkRf+ctmVB!67nBVOAucHl2^-z{+8 zC1Bifujey);Ci*`g1YJ_WZjIw?N*-SFm&KGe&UqG?q{jzHGSeD&Fx#3(kyJ=?)Lp6S=s;o`7(FlDrw#^c-&5x z<0)sfp02-0l7HeujpI0i;yQ)nK8WIqw(tM{{@mTyCuQ9@Z{Pj>`#x*MB3|D)aNQ|! z-ZXvXC}!OCAan&|%-RkoE zFLdHSecx`G;UZhwC0w~EV!A44x+`k5%-r!kdfke!<$pPJ-X>|^FnHu2Q_Cr4(j{QW zF?P%zP_;CA)-iP4aGv5ab=50s*&|xdC1B7hX2>jS$skt6FLTOCmgg;R+A3$S9#O+t zkjRIs?I|Ns15{1(VD8fUzp-$py}4<`Z;UdCS%w$d)+5v z$TE12rCb%9z#N78wa=`rm z|9^q9?bOrKkh|}vwZe3P@RR@m03~!%PE!Ed+S=MB+S=ON13;Hf?oRI7+1Q@kmjv|& zpq=$$nZv_j{$IoN29sw100!SlL_t(o!>!l{R1TPLbef;=w*A4`hTiaOnMhv12@9$cgE0tDOR({v6z(T1s zx74-&aGJi;&)PLtDh|tke(BqGcj0c@pXP&FL^{o7xc31xFR)590 zOtG}Ie?Og*E6&WTcwAoo)TIMGEiZpuk(VjXB_x_PaLzTjxJ>JCE-npVQ@Pgo&uQqe zQgLQd!?ei{CwI7qlbQ?p6Awmugl$W%nrqa&iW;=O9!hA<<$quGQ_P!d zQdRP{upSy{o>6`u_(dN-HbH1%&2Rb@D*TKW&m*9uES=msx3`w;I6c<|=a>3>G6eI60e(F1g&od5E#`R8^G{)_uPE1SVMl+AF)ABUW$ z8ZV|FI0~WetIR;beoZK!k8h{w8Y>vc&foz)20PQ~=Ac#G%|mqO>>|x&UCCxlrBkE_ zO*M&e?e8KUuV~sm##G7(Xzzw2UmFwzOAz_qyXTvb5M(aH^+z`BHGc;MB?vU7$Yd!3 z^Cbj*23o8uIJvRVo1((T9%r9lwcAOLvj_pJNqY!*4#j^N*LsjAZp7>6DVdi8poNW zSAsVEbF6*Qkum0=6n|$TR?KQuoTIZYk!%B=Or&>`wJ#(xhD9Ex;LrdF%_h=7;ZYWbZ@C@s-P}h~4&&XIrj*=z*ah~v#?J`!1?0Q^X^MCay(DmlJxa+bMmTbEt z{33uPj^vQ+%;uF{%|jxG#=?{FmtK3nSKh~;=Y{u`@4a7Nia%M{=pgzGv|{tY?G8j7 z2(cYFchvk{p{abn3cM}hsZbT4pBlQ0ufD@^;6R8&4sAcUd4&lS3L(dot0=lNG*xBr zzVEL}4c&?QUw=(;Gz)bxg}gZNi%=Bq$nY-++!2Z{iszVtx@aIrqV_?aF(Hwm9CC<& zN=_R=ZW<`i6bjTpY$ND&i55yDPqHB-^bBkZ3iR}X5S#qwX*kqtMakMUPmVTrJb(h& zZ9{AgM9g@mtu0y63qb1tMC1ja9R#%87+Q`)%h+xJihuVahtk%rgV0hFi0Rcf6t%6hOqy0FYe(R-F~yRQ#3~Z4mEmaZ_zp zH70a|5SJW+kOg9~9zaYY42Qr+EIvY59br_pFd`nqm`n&|VB`>h)@z{MTp}!EwQ7e4 zm&@eZ+jB8{qcC`u$>ll))I*tPCN{! zkQFj=eR_`E-bt5-UG?`ARoi*!4cNG3*?}flji(Jo{`dX`bzm)pK!z^+00000NkvXXu0mjf$^b9u diff --git a/public/images/emoji/apple/left_right_arrow.png b/public/images/emoji/apple/left_right_arrow.png index da32322d952c8f27d97c7b9a3a1da326d7565713..ff914c278426d67f9a7fadb61aace64dbb9f3517 100644 GIT binary patch delta 994 zcmV<810DS36!!;^BYyxqP)t-sM{rC}W_?s_gI8~cQ)+)xYl3f%ta+QdXojNy|Nmou znvku>$k*h$&E2oX*XHT#pSsXrdXs;n!&h*J8%2t700006bW%=J03^fPPny{HJp2Fv z17t}=K~#8Nq|=L%s~`*p;I`_YaJ{(i|E@Rq z{uQ;*B|3nY`hSILL-C8$mbR}nTVVYTS^+!X77KFui^S{*cDX(HODI=}AGhgS$O$y< z(3e>S0%-lxX&ni)o<^Ny*2?N+b(j>Y9c^3Mbvz|bmQ-mQPm^}^GR~*i7eWfJH)=<( zon(yfOZ9(8?;!@gkSK4C2|eVuh4e}yh2A(Ll#EL6p?}e$Xe6Okj(}`FiUXm8DiuFqQU;!14WCF( z7{Cf-84}J{`*Fv~5dyn($stkb41w1Rk|#YU(2qi3`txtigYg~$!}m_;N@FEfN1>k` zdMia{wCh|@r-!%=Fvp=IZa#V_v#hmq2UNHj?SJB|9UWVTR?}KfsKi`$$TEh(u7h;= z(djJv3kj>Yb?JDuZoNT?Y+ZsDm=zi+wzNx8nWG~Q*)Bxmv?DbR(!vXL>L_sg5K4`Z zM2k%dTH2xbuM~4zZWsoEs2o|XO6nvG|NpOnk{wiI=Q3V{qt)dMzieXM+0cl`SB4#RfR9dM{Z Q^8f$<07*qoM6N<$f`t;Wp`h3h*)ZUV|S2ddy`mf zfL3UGQDbygXL(z2g*#(*RA+coWOre9k70I*VRVaQc#m9hhE;5f zWOewJ;7o@;@dX@8h) zgPoqW%$Tvsl&r_3xz4G*(r<>KXnvKi!qv6M*N>^iWqOfec8zX@pNpo%y3E_Z(B6lm z!f=P7W_*){qJP0~h@x?bqQunUgP*>euf)jK=UUP_fldoTNihh~4@b2qoe3V;mgMZ=Y?Yzg*XML2Gp{#tExLtCG zTyTYenz(wCuxNmr)!X63&)WR^`*x42Zik`T;poKE;d__2dzG?qhoHyS~OjjC&anz_o@Z-t+4ho8>c z=3sSvUbnxwDb;NN|fuZf$m^YQP3pTTT{oPnCPrM1Sfz|W4NxT(3yf}FX; z#m30a)86FkgP_5Lp}~Tiw!_lkh@!ubrook~#Ez%Il&r*^vdC+NpXKT9xW?9~w#LEC z)_?Kz_ukyw$H~af&dvarkdy!b05Nn@PE!CW+S=OM+S=OM+SpD`P6U^p?AilB2A|RM?CkONnf3l*-tgIB!yQicoStD$Bz~$NFQ1( z8y*)b;CS>BGLOV{s7X*#8>_Y=l`N88$bThm22E_F8PEipE?e4kQ7BNLrM3vNmyDJv zvXPB~Tig@9%eY*cs7>PMzxVfkzn?$e+><|k0N`Wzn1>UqR4N29nM||(6D))vDpghD z!()a6A@mzHk;iCOJzWv!4*}i?>ExV3A85lcN>N(oo z{Y=bscOUggr;Y_4f)u&mA9y+r4t$@hfF1%S!CKpoPsGKKHZ42}7%Vi1kAFTH7e~bg z;b2^3`{Aj$_`&8CWf;VVo{z-Nozr)c&(lMXK@N!x8JNhWwcVN?f%CgIUO0T7bUt}u z9=fJ7bb$yxqD_rAhUhzx{t0B$6dR=Sambfw?^*=b?>OBNA(}N06@Lr{1_>1MnNxc6)i--F54dnOG0B|Lh7JB~7k?cVo+(!d z1_6U0b-3v2H+u`fNFwm;Zt>M{ks888+bAW}CUf=W+uK0Dh?r)*=@Wqk4O==gLkc#x6c=4nx@}ox)_-pNs~8N3i0RBM zzX*J{Vaw`}g3YbGHV8Ru3bV)!$dh` z(P~foMGy>%W(OdNz~ZfEN@kNqIklop zXr!b8i5wj&o9k!(C4b+~9^i|&gIu^szPZ@$o*!t*P#q@`NM!01vUy(SdM-6wA*aD@ z1wpP9hg_}OZ7A{8=E)Q~CMN0;DcreUJe&NVPoF5*t@ZeNZiT2P5g14nI_+|t56*pD z3`W6~hD{%Mi*~1wIuICWf~5wTOy)jyZfiXl727`FbP8+A41ZGCgo)CZDYb65+i)gY z4{kbVz^Yp1vUE&@KoZpLMo*jtqo;mHCuTw=5Hb+x&x3Llc6-xJFcw-5tL=704#evZ z^jERyPOVmp{#qQp=Z`M6L92DrSt?w_pi5B{&2Rejy{J8})M8CkN@w6A4MU_m#d=0vR;Z+|L93=J-#2_N>v+eT272gg)U0G%wIm zVeo@0e4V(UOM;@-Pbzi6N{)z2H6{T``dN%pdXQClm7fr=QCLaLb*l)`nj1@Wqz1i| zF-spVqSIYVj<^1s=$Bp|zbK&yS-MOVf^g-@HGwxGhAxp`)V5`1MreN7Qlu!sD-sAZ zLRq=xOMkzJ7`ZZhq798JdxeDppD3G0fl7tFaBOPxiHHd-^okaW9KExp5QUeW01U9I zI9xakM?&3ZwED1VLZ6;<%5G;SoO*3>wl;1P1v)G#6j zX;glNS7f5FB6BVDxc(nv6ca8QU9ke$&xnit$cl>5n8?UuPK^sD&xnb}R~uDKT3j$y z#_I9Febssul@b?JmA?8u;DP(Cd=n=g568r}-v0nF?m=@EkIm%743o{PGCw#DNJ%y8 zHGk>MI7rv%&8aB>Fyh|qDxPH;J4U8icvac=j=&cP!zzmSh-F%gSP*_u#jugyl}3Wq zs6i|iY7AH`h{kA5@UMQ7@5)7y001gbOjJcja7ubqYzymAt<>3^yRYa{8r^nsMr~C6T+`Yf)z)o&M zqsxz5nS}-h1+{nRX8K@;q|gwQ)5~9!2{QAmhvi4S(0RtLk95t89lUW0~}e@=8R##l*FA%tZ$9)h7% zP{E3WU{q5Z4fYl=5_rW71r9=odo|RD5nS*vY7WF0tmbvu1dKzBllOJDKvE|pk+04M zBe&I{>TgV76g5O+oS0HcE(~-HBYd{`XbM3k|6od*27i>sNwoRIIEaYxx5uU=NkO!p zH~|bRGlVe_G})r(q7DKPZG&QFCUxBjq4LV<$t?|)PGjwqx|J|fQ=f<^&79ITmEHMM zozBIiY0S)=yek=jaZ)kgsqQYITcCvU>hAi1NV41(Ajang>U|ecmgOo}N@a*#Etg9K zvaxqwrGNb(ddl%SUz$)w0OD`zrK5{dEx{_KWwttBZc$l+Y_-P72WZ`p%3}0Z%MXOk z_is~cmBxP>%isv}RI7D^QYphOXj&yXoLW$8LG8mTU#%MX(#Q6un_=pz0VxaeCX#|u zolaiws-R%DdWL@4dmIx@aD}*+yzJrcPkWX3XMgb0-x)-%?Uv}y(%DpEB_vwt6i__( zZ27n44iX{)1?Zdm|LzBo0r_(C6&HXR{088{PDZ1{V~j1z)G~SWIyDjKG(~%zx)S&S zvw1hE+; delta 1836 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 W$P#N==a}FC0000~ diff --git a/public/images/emoji/apple/leg.png b/public/images/emoji/apple/leg.png index 7e3fe9590b4d363892605b88d1d710289fac9a9a..b657f68af6282d40edfb5196fffeb830a0ef2554 100644 GIT binary patch delta 844 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 delta 3259 zcmV;s3`Fy}5xyCaBYy(`P)t-sM{rEkt73+(PQ0O2tg>8dk3r(IW!ePA8{DyI%As51yn5cPTZgVt zyOc#?dqB9AS>(8E(x+l+iaahw7J-;yOI0snQbMkpSHquQ#ebVl=Dc%!ph<$NOWm+y za+X74gEl!x9*m@QcXm8^pGUlzUCg3i*r;3LyL8E-Ug5TF$)8nUd^6>_X){O^PG>ZT znR!@rIEQ#>vXolRrejiYE-XS5hly=#aa2N1Aa`kEPi!eeVjpjbWnN-NcWPZ!UoBjD zHsHQZ`|ghW?|+h7cQoIRRdO-x$WP?LPrR2p^3r3%mqPW|VeHIQ z*|tf(pFjEJb+(v3_S|l;kvE=$GOLU=c%Vn}(p$%-Lx275a{A|Z`P*IS#7;g|8?28w zntw4^bTnXqHvH~w=f_k1@qwg>G)G}3`s8c;?0e|DUuTOxLR%mA)>+xHZ|lioI#C(! z&RFryQo^4*^w(;kg*9-ML4Kx8`{{1`?1ua8iMpFR{Off4=zZ|gY3|Ko=EY~YluKlV zJNMgX{eSR!wwF2V&1lxKLb{wn%cno#yhpr}LE^q;-neL&d@r1SH+7ppO>8EfzI^7! zTeXro<-khMt3dtnh}^eC%BEo1vuUu9NZhJd>cL^fqCTdHL9UBG>%D6G=5ffGNz<=q zq=Y<`c{7A*A&|0b&7Mu)wsMSeCY88xy_`|jwSQISzIlVFSE-6FtI3W?Xd$@Noo#?t z-@jVVuu#FFP1B=N&#hd+m{G{5QKP<)grj8Lx>dD~KZ=z}q=qbakT`joRF|`W+P7oJ zq&cpeP>QZ$f`U1($eN&mJGY-!QfxG(#f7`pql<+-&Z%XUc_y{enR;v`cYrKyc{^Hi zLw~>6rm@YH(5O*~c23wy-dF$t08eyMPE!C_I0p^>AS(kDjxOtr84Rjp+7wYuudzWeFq{-yfAv)qgOm16VmR{U`n$;!_)e}$ttDt7NaCVN*-8-Mp- zGTIg+zu&uk`#$)l)PgB`@9=TGsYY}j+8_R|Z5Kcg{J9Uf-!7Oke8_0^>c3jTZ%c5V z?%Jye0fG9%aI4arHhuc)&-GZN!TJ8_E+VzidE?*PfwCN)H13N9)4w#D`scPb0_`e( z>T6}?46*SoZh?F@&2qTSjhi<8%YVNtT-et3>ea%*7gd%0{eQ>w_xB9GT46N&OE+%n zhku*?ul(~rb^dho{vK6o_SAfGZl0-${xF>>tGXK&PVn(@b>(neeS9J}Z3+kv$jZt} zx`3&v`DCo=h+(z0vbUjY&?SMh9>d{q;yobQVX3JB0a;0)?Ww6*W~Td#<$o+_Y3pw7 zd%^Q_rPBHX2M!!Mv~Anw%?@E?p zueNSIw0rk%PsriJn;jHXP0gesin3f)+*0f-|KTw});=5pZQXk8*p3}L&YnGZFe3w~ zu+)GfCz7zgv2UG}=89riD1V~n=a2gaZvn&g9gBhON9H2pz3f?Mx^qFrlq`UR` zVpmDaz8=Vh)0csJ-5PGpCSOFbVgFwol(uor& zy{V?D;GksO-1@`guAcAg6OP|&zU`#>7UhpBY*R6$*%+0Ryi_9!b~8yk>>4YHTdySjSn_XoW;Z6&mpjEPDG=jz65 zybf7Np&*P%CVTm^tFNa%GfFw_t-FuyID2r-8r8g^q%cxa;`p(zEvL~VW3eDBXB%UH ze(dWmsy|-p1Zx{0x_=@)GY%rP1`0xGGnER?B{ojdQiJA5pF%;f>j;}FtV;$;B_-93H&8osprBad2nP_7_ddGDFK0(`P=Z_S0F^Spg5~W=AjOmt z8<(iI6$=qg2zEiCsG;Fm>$7g-N7ruUq(E;Ra?=8Ih}>=&$bW!CZ(*F$xx~6gQzbN4 zNFkvxT_%6lD(lrj$j`|KBn~4nH!it%3FJV>eJ*kQY{k6w;o37$uWX?CN4c@+(Y1$V zQS39m*4h{)>s~c~sx@Jsg!hwc?=4ag^oqqyUYU>0NTJiDmmo8n} zMsjI0VZdP)C4Wq5tiIZ+rX!Ne<;}8QX*xi;c_|50az%+)Bn}RYlX`+e$_uBdL#`RL zmfq0R@JwzjE&9i`hu`G+v7MYEaqo6@#od-@@eUpi@yLL~RHRxaB>0s@W%BvB}_&OkYA?95r(Bo@n?(s4xfxAy0h`awwvPSlF@0WLDz zCp()un@B+jUAdB2XUbfDX95Xz!~*evK!hXu4xqd!kk~{5%V`swaPUnNfQ|}ULeGx5 zQhI}=3xA5l;&iF#QGGo?W#y$*A{6|9KN3_99+_v7j@}07N+PoWEMVFMDk>5SbfoEn z8|qKraw#j%gXU6f*=Rx7>~MCtGRaw4XE3+Fz6a1Uy60++B)7h_s7N3#g3hj9-4Fv% zP9By-Buu!Pl$@1(CYd@n@7?=0aTz@Z^k{Dg34hW>qMpK-(_8qNxjE%1`K8!0lx=vp zEhHHe6hxTYx9<~Zi~;ko2MfT;Sp<#%u31%WVN4pI`%PInBc<4?LY1JnGjVbLz}&xi z^Ik>8l`$HMEn66C<*Wlvk&dY6L3P@eojib`Bq9YVD2fEdVf=6V-$&<;I>fTjv9W@S zCVz&`iYoJ~y?1)^xEFJCusI?H1*Ih0QiVGH{?^vk>u!Q`r?aBsTO|Zb$w~^2AYIUZ zIsZX5pU>m&&xMk(CV!y(f`WdotXmgsXLkpnPD2&Mnj^9ji2)MKXuq7F{~$WLgzIv# zEGH+pJkPq+-#;o2tT@^d!vq6kZ;wu=VSmLK1Jwa(r6Y#SHC=o?Fh9Sf1R*FXICvd= z45X;ID2TcOjJ>0qTj$-o0GX&xNMU-Dc;uXMy6?ANCK7?la_oYk2c-Nd!nA~pBQOzO zUI&~t#bo74qW6)pn147d zlf~`V0|Nsolw0O#Z>OXXp^T$~2?;rQ_r{HiPxaIe+us;b((F7m7wE!u0Vx6{ph$zk z>lBj##4Um{5P;0o9v?@oV$>1uV{?Hn0HKuYNGUrzJGGV~E?x`?3CYY14Gl$Tk=iTB zXyuE6`T2H`TreO-xVbr^bqBtvf`7$?5a#%CfFvhx%zX1hpw^`GI3^d;9a7X%AkdN* zD!{lyKr&pa{pP1h-FeKIxRmmWAXtP_Q7}9n&)r=jF*JYM^DP|{INVHbW@bo;mntDR z;LK1gh8K--50%WE_|_+G1CVer9ftsg7y#rNorJNFTB7-UzBfNQy7I=yT7PeUcGsX% z3C8_68EPmJh=39eiZ^7Zw|8~r42_}QCZHx*;3XwI8h0kqJkk&vG*wmoztc&xJt1XLrjrdjB-Pa@#i$#YtA$Uh zDkbK_`zHWvgc+f#YHJG%3uCUr*@*-RIMw+RCJy_hTX)f?Gr_7v>`5WblP9&cRaMmw z@&jkR%YRF>P0W|RXV}rvA(2QbF%psqkXibycZ-&;f%&YZ%a^}LvNU}8$Fs~AX=rFn t)MCAJpam^`UEL87U43oV|MNf1zX8M-gVF?gwFLkG002ovPDHLkV1jUpdMy9| diff --git a/public/images/emoji/apple/leo.png b/public/images/emoji/apple/leo.png index 47c6c215c793b1a796b5c97dbe410357d56026a5..cfaa3a229d92fb48c2867758e7f246093e5d925a 100644 GIT binary patch delta 1346 zcmV-I1-<&B7}N@oBYyx|P)t-sM{rDWD}{9|ifbxU^!44i=8rV2vWUIfr{%q;!-q1T znohC*|NngXC0_sl00(qZPE!Dy@+8{YPwAH>TL1tAqDe$SRDXD0oRo=j^B@d_bGVi` zeV<9*|22OEGT=CAlYeO^o$c~v1s!a$wB}qq{4$2RAcIPAHUyylSThhADPg&Wx zb8?lgKW;E3f7iUWdU%iq-8xjRTDjqVuBWn^K$t%;`jJcTQAWU2l{6W2<~PkPmB}@< za~`ljv$@IeH;|g!$5E|ODbk^vEr8T}8NJmQ-F1({)_*CBY#{g*)G}sKos%*npVQoB zARy4>K<{PvvLsPDf-$L$5dv|e<~=AB(k6@OV5w*{+=xJw<7`H48WncQh9bOb?ilk; zYV=M*`pNXpQ(@XVIkAy=ORB@3eLz2(+^ByK5{sWgy#g&FHR?YEb-Mtcw)`HX_ofXX z^&0e=C4cH8NX&czf;Wi_={{#~v4K7;r8$G4(1OXs9MnXXJ-&Vn#Zw`Y!pzG+Q84SrK{5q! z_0Gu7u@MUsC+pS50CFMo3N*nX_t1+pa@n9-xPJt`EQB63MG&w1_SO&ph=3-b2J7X8*5 zeghaKK#@1hSsYW0`C zNqmk%FZ1T-4Dz1x@W1^JeFWHOnX@5T0>!cciCn#WK0?89&>cFMoG1Zu3^nB)CVx*l zse)4YM%jRNt*Hbmm&AB|jWR8r5JKh&M1@Pbl_BRmlv@&;1r0<@ovEbE6X@Em(6i(p z0ccaW4vcUH4J?_WLCNYM$XUR?8J`4wREWSHTFF5O(APrJ9hNG0souzqW1toCifs7c z+v|?kKscDVAGVhSXe8(-K@hL4h<{$AqHH-sh0O+ys2g>WAaN0=?C_`?QmJS|c+l>C zTnGY)XqRTwh<3DHKipyn2pTVXSV!Rbb&kkdkZwg!`z>~I^uXSYtA%ukh*CSGuIsLc zpw9CUK(HDxxDtjl!rO8Y5mE#ZiiUGnaK^5sG*-MRU!h3Wyh%ByYo5aTK0C)ry^_9J zsIk8sQe*2|iqu#n>w0F{#`Wd;R3FK@efqHfmUijGe{|zkTm*W0umAu607*qoM6N<$ Eg2@n&T>t<8 delta 3102 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 DKS6Vi diff --git a/public/images/emoji/apple/lesotho.png b/public/images/emoji/apple/lesotho.png index 14c605479f72e3199940ae4e78e78f4e5e413016..a2d062ba3bbe2d083bd5c01b3d8496565046074a 100644 GIT binary patch delta 1353 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 diff --git a/public/images/emoji/apple/levitate.png b/public/images/emoji/apple/levitate.png index a8798b25267898e359edccc0358fc5dd27d10f1a..1e1793f33333ce489a3c04059b0316fa6cda0813 100644 GIT binary patch delta 1224 zcmV;(1ULKq5ZeimBYy!7P)t-sM{rC(KR^Ki0Z2wgBOo0*J39#o2vS+!orYF4FB3>`_N&#tdDkLPXD(jHa0daEG#K0DKRlICMG8& zBqIn12O%IJ6%GqiQd1fl8c9h>78e*&Hx_7VX?S>fYg9GAaTC6|wA6+f`T67PmH#7@BbpBhQ;hpZ|5%x zc3+*QPf3b=|EE~lmfgyl($3R!9U-m!{6o_Dxs2W@rJ1PnRm#aWSa@xQdX{2zF*CP9Xs?dm(Ul5AEEzE1v+Zg_vhaFG@Q>rKDKk;cVLcD;=yJ6p60&qr{4NP z>%b*wMSq#g{PS~lJ|9<~t9cxifspm*P~3YmJR!PVpn3G90Q)sPC3LY`yDO9|Pu`2A zK>KStOjalN{k%$2ZlZvjc-!@QyWj8E>-E&T2Rnv2@!aD)?dZDRy`jJ}ChmS1hQqz< zO%$1|UoWnEKD+MrMU@!GcKS}^IQ2YlJM8xz8-I8<(|+U(MbW17&uEh*JixD6*gy|) zz|o@IY-)#1Ibu9SJ=jDK0b#Vf7#+0TXpsp>j9y_AH8^K1S&W+a&{^Ps#aa&rIgArR z%bg9`EF;c%pbZpIZ4wa7l1_QHTvARr&)C4*#{s74NM*82Fe8j*fDhXi4oC{2#iEQU zBY&LKflH}tJcSU7mWT=nH-HD4{5Y0t$U*TMoNH2qDZ#fZ7VMHfG{zNJC;G zuGvs%fEoG^5|;+drdLQyA zyFv6Vt4P(#kSm1ha*&a&6MTil63L`K;47p#mKFb+~E(^e#NFo^{;kaUbTW>?5o zBpYCUg<7%`6>d;nS0vLP1w4|(YOu78=? z?VjYJ=Uo%+4n29uIgHq0lT)OtG2$m=EDv@4Sr~sQ$wO*2pUaCkk-VfEB})%8-EuIs908c;{o3*F*4CmI*KCDnpSrlohswQ40Vs#I&at}Z0V zK!tHNfA{6qUA~g*s-^*gO2t}5KtaN}t5kCZ0RbdSFBEg>+0w+xioyY2n)tW7MNzj< m(uD(EBe6tkn%E=&1L|Kc@SIXu_Wo-C0000_aZ9* literal 2172 zcmbtUi9giq8lMK)4h~67mQjou*=7c_U{=fw29056kmV>8<4|Z(s;LYqJEd?mH{@Wl z9NS2iiikqpljR~gNKTfJQ0DyZJ@<3}f&2Y@-tYUo&+~k~&+{&yH^tMPrlJH<0)ap( z47wu=nCbr>3Nirygr>%UKr$dtH?|Wk+70l?$$hiNOTg1v z5(6**BN%KK05F*3=s|FB06ey6)PExXB`_F_LZUEO42?!7kw{LCl>bG6kcWo{mFhS+ zG(@3Lhy()8j%00VO0c)HurMbO2!ChV+uO^^%EI9$K%HP8GMmjdg~R*Pa34j)^=ju} zCvz&5N+c5ScsolA3!sFbzaJitM_O4?$>h+`P-|=JrFthoipgX`jV-LL(LOw1EEenH z;;OF?U95EGxS}~6A3%JrgrcsY-r3O+7Z<0ZqLPqsF4sCcey4nv4yF7Yj@lfE`E z0s{kYMPMWn$fKMUR_;vGSMXItM$Hkk#!^4$DRICX!EU=c`A(d=p1tXq0`n=c6*+~ zvtq~DX7|p=96ZP<%P+oP|r%p;XHb@gKlx6jYx>6;~>(}khWy((nu=@xT^kG zmb({7OW8n1eQg(bw}QzVS&WL7<@AbKT1##c$ucHd)61#0lNj zD=JqxI{6(tu{+;I%biMenC+CtV|C8uLQChSTytYJ>StUb|%}nq-$E(C9|SW>A8}juFNSa;-hu zQ{UGYDa=+pmCp*zb9mh&9be;2ju>n#5;^FjaclQJ#x$nJ- z?!0=mB*&g1EXIlbRC)%ZzOXM0oe?KUTIaT>%f>3~F=R+lMEK6Piif~cwv26XEBK|d z#)NE3?o1S}yc?uC?1$IWu{3o*Cr*35evbk-`_xn14dW2Fv3bs zqQl!E=dZpk`va4HzSO!W_px{}ugxO9@Z%l4m+B<#p?5*iovrQ9eKS2h25nVbHMLRp z&q{k3D>Ee{`5G{^_K5e@5Ce3B7t$&r<8<< zp!erPLU=O*hnV1MX?zH>+W?EQP0W%WKi}6qpZeB9xH=aVg6{U8CuUB4jjFzvX47Pj zAzeO-JJ;@|vQDG%yOS0Y?lOon@=5`bL1%yG5DUl`@GOso%acAzb8&_*GTTR^Kf`gu zzF|Qlp<@ti-6~y%Q8#~3rJl)zsYWMlrew4@bEY*J>zGTWRIC~|Uj69stVKDj>V6^C zf6{};%X)H}oObakOU7#DYKb_d+V^ZwG0He2zf~Xu3&JdIMy|5*ka(dQv`2k;^lEnTw7XpFZw{aDJqfSB&A*W%9^cqG zvaGY&-p$vu?vF83ydzI&Qq%vfHs;+C$Z5L>Ms)R`6Jt}A3Zh+Mkff#XuWG(QIhr#lsdSoPyK)1rNq*50gipMHZ)5 z;tsF}9);bADl-VY{LMf6nRi>$rS8=MgG4`6z(~f)GFeVej$B?Y$+Z{7Dxl6AaHrbRCuaODe#4Y7*6hvVoH$UFQ1>xv;Y7A diff --git a/public/images/emoji/apple/liberia.png b/public/images/emoji/apple/liberia.png index 7dea31eecf86897571ab97da8a5dff18c1ccdcf0..6e04a8008b778b57fec26c9e0ebfb3a26513576e 100644 GIT binary patch delta 1887 zcmV-l2cY=r8SM^`BYy!YP)t-sM{rE3aDHbOC5#?2pQNLFA20wECX;S;L>DV=5h8OH zB${n`v1M~?87OBMC1)2Us&s*C7A3iIf1Yu9Xci`A5+Jv4e7kahkvT}Zd4ynXdRuCE zTWEQ-X?QtCRb&$)U~PF5C_K6zIngjovlTJMDn;e%>H-rl`G4!~xiCiE)!4yPW83QI z*f>=C_xR77qs}5ix(Y1=9Xi$~NAUUh*)LA!^6?2JLfk%D_ub<5{{8R3$(t!Y<9LbX zh?mB2e&Aej^v%@T!p6;0XWwgnz&}ykPiF74z3Z2y(nVe4;NbrM|FTVAt|&jmWOUEb z($%oG*x}&KhkubvT5TvjRjI76JWXSY87;;eI+_ZP%snW4JD!p>oG5HC%y1SETf zm2i8Ejg+Ac3Z2~m001I%QchCfG8y#N3O(Md!>RCr$Pme+C{M-W9#SQJEp8KfkNlz(Jz4#+v@oHKLM|9^yU&+G!b zv|VNE$>rkN7d)NnncLHiU;dlC@x~iopKr^;=kxxQ!nbvFbaL|X)7L$VuOIy44$FY{+)9wHAE%d#iWjcmVZ!x7n0sfiWEF%>ksJy|(AuH%EnThyT+# zRY8t!H-9LKk%%le30)sbPfwDdHw(Y6MZYiR7hit+?TD_=>-E`}@#!la1q$Yfi>*qd zbepgCdWsSVOpS4EGAo<1bh8n?k1ba7`TX+o;^GUqxY!%*jezYCgRMrXUDZONTrQVL zq*5?V8G(Qib{y@!8hczU7ONF>j6vNbMOTEQi+?hz**+sjB;e_B4OB|t{+&}4OQ#>f zf}_XfNF*Y58=ZDm3-xWZY`)zoKG22h&8BIV!xJO*ClS8YBW%Q=Qp9b*k?ZHULaW{u zE3F_d`w<)8^=tL;*wm5j%e$siC#nddJFk_4et zaDUxVT2vv`>;;D4XvTD;YST$Ye4>M@7gUNP?^v9H~L_eEE18x>s@SV4SVy zZ%d6zFb)S-B$M>3MQ5%NlSz0sYU-%SC5owYMKOBQ<=t|QdoqJ^1aJv+WGcl@yPDM~ zHP!$DVrtaFrdyO&7h{@!dT7EV|_|sHs`Z|8~C8UM!d2D*J%NxMeL!DBw(iM?^6!7rP z^2Bh9U^2$@Wq-v?HEN-aquTB?T0w+|4iH)V*DQZYf>9s%-SMyP(rRpZ7hA{Aj(?J+ z9tyJTczAI~MMxj<Q>4>xt$1G!W zNOKtSw;kMkSG=a{rU$E=vq>-D5{)sd#`kwWo?l*Go}YhAXoNU>sCrwX#|tpDt@tH+ zw^4a?zUd?X-53Y%DVnB*KtF^D0-QYrtOnp6Nl2&)1H}>l?$uycGXg12f`2UVu{p%* z;0{(1&CNP6u|@=mD$)y15pVZ!7yXsC3)Lp(%WY)(EypU6x!G zNvz+&wMB&GZ}$-L&sTYNe2eh$kJM7V$=+r{env%6q##@iaL5r^WbphO9Tedh0Eq-F zJ;NXm#qUlnJkkY6MF2B|^?#5MA3f zr~K*30=`9f`a*rS+=%=nLYXO`AT`8BSano43jojDf&AjG#fo{dZ+B>Kb|Hb>#H zV~dao`2)0Uuh&Cvc7G4BGH3ya5gH)6J{%4UH{c52%?*w*9QYmapV!C(m%=-Mi?BmF zY?aASz)>g^uC}+gcQ#yI6>hFvsSR1b_t2Dt(&N)GD3fEOINtxhdv@w!oSvS2Ki=7a z*df}vLXqq*s#ynJ+yoFDWx#OiIXrOx*Y_SAdUp4>ch{mbDp-<^ELjYR0#m@j6dxe4 zEN%`wp0(ZQIosza2DnGCO&r?}FTQ`s2M>)Rt%o}gK Z@drAJMMBolDB=JB002ovPDHLkV1n3&p0@x1 delta 3302 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 diff --git a/public/images/emoji/apple/libra.png b/public/images/emoji/apple/libra.png index 4cafd3406403a2e8c0be0bb3562e3fca6dee15ab..0919d6e108632f1686106e02609e90a0f779e771 100644 GIT binary patch delta 1122 zcmV-o1fBbw74`^_BYyx?P)t-sM{rDWD}{6{iEAo;a4Um(Es$<0ftowEk2I{JJ-(DQ zvAJB%!*kQmq1*BB^Qc?C;M3!XGoYtH!`!jvp>(d)mEX*T+O0&$#=pmXFqGP*<^TWx z^!Eh{00007bW%=J0Gjk9+S*TM*UjMP8Te0sj9# zpCZ|nX_8Li$W1+5`&e!>!$r8Y*XAv*?d`G$Enmp}@8D{5{m|U5o1%M@&31k1s%

    ztu1sNf5LTLm;I}ikigrKxA1f>py zvRP0m+!#1UV*?5U!L@A$NW_NXBciB^60#Bj3J*W@AwXhuK0zDIQh&7L{r6Im7${7X zvlF13EFpB(F#y4(QBVj~5RC+)7@>@Q$MoSA&393 znY9rd%bpEmWI)fR|9|~4^uK>MyB}?`X#RMLgi(-^4M_*~BO}E0el(6!=y3!E4FXyA zBWSf$&xX&_F-=;$j=;!f4@kQCTlDNw(^x~}5oTm?Wp!Rb5_|S*#tqZ_(Ky02p*aiV z7DjhvRUWgA5Z1Sm!3HD@5&+oS2<%5`7()Beun-A54VwM55`T;rt)scA6_VQ8IC-7C zu1-!2RgrP_A0*Y(HiC%|vAR%Ee(g`CzOG->(o%-g(%(-=^e3%vBQR=Vt=UGeHR6!u zWJDCJ>MvYwxcc*Njg1Dw$8-#TmuWO*X8Vy2Lv2QgT5CuW7Og^~(Qx&PuRgtF%3ZIn zTD`!-4&rO);eWB<;V0LuF*G)sLFeL+L|lxL(h!sseHH{DoG&+g4aSuFZoh4^{Zv=C z6=oYehqru;-Rf0_yO~Gxnl$O0F8(-RumQH6K)I;BfQWCP3`ERv7Udyk{^>V8L0g3E9lVxJ$FMKkaB@;;v(a0^aAfWQBnlh@i$<&N&n vXT_{#W2h`!#JlnLC=So|GHHt~|A+hor<@f}ki)G=00000NkvXXu0mjfVAmr; diff --git a/public/images/emoji/apple/island.png b/public/images/emoji/apple/island.png index b945ee7eb90c7bdc4ebea61409be5e40e8961246..88b89a22242f24c6c6b9b93855630e389ab2099c 100644 GIT binary patch delta 2918 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 QrT_o{07*qoM6N<$f}KDTOaK4? delta 3121 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 LNkvXXu0mjfih+c# diff --git a/public/images/emoji/apple/isle_of_man.png b/public/images/emoji/apple/isle_of_man.png index 19c112ceb8807c55ec6a0b251f0a4ab2f44aebc4..032cef70c826b9d15b4f5bbdb89e45dbd54c6e27 100644 GIT binary patch delta 1043 zcmV+u1nm2s6Q>A}BYyysP)t-sM{rEBYI0;1A7&RKn^$12U}$d>AB!V5aS$DgB{OUo zBeQLGvut&=Z+Nq6bY&JHXcr;GJ50$jMbk1!x->?*iHgd+zr|2r)7RF{HcGx{aY zu}N0HCp_fn=&va|(mGGYEI_`fsI{wjsc=xw(XP59IH4;$`G5QStrjbr6efliCAc6o zuo^C^7Am@!K$s;pF-7HH0000HbW%=J0P$u&B>nvgt)k~hsdmqe%;Fe1ZvX%TGD$>1 zRCr$P*4dKcI1mNUp)i<&S~|6R-`SV?|F4@=Vn7V-3FD`Z4z36uPu!Hj(m#J>UU}se z-}jvO{t&`je1Cp^e0+^YVK_Nw^!4$%@SZeK2q{{}HiEuU`}$a10nhIw?hOn82$3zb zEIVea6>;zWrS$vz=fZ!iaWja>bDcxLiX>S^(P4AM9I{Mgs~a?1#n=$%T`WAz;=CD- zq0z7j0!Gl@LL^1Y?8kw2D?2Y{bk2l?@IsJ*j0?5We}ADZ&Me|KI@b6B4Uo4XRJ6$B6jt<-27Yj~O%Bqa}KoLPsA#`*&0fORFY06sAW841^wD~Q> zKs8Ossee(Xl;E78Wj_cVnk`^Lnx-;}D)G=roU=DXg%VN52`{u+o2p9JR4I_@Z=ih_ z)J~R6s)-2EDMOX66+;LVf_~9h3s;W$ys(({cLOuXuf_{)prp*a=DK$+s0J{A_ zH11Gk)|j-Z^C6803RsC{DyftzWtb0#c!*7mW&kYUyeG7|hpfbfTBk~*(B=_}dNpFw zG!h&q=YvM$P&QQ+f&&eFYOFTKs4{S*VWR~wDbv)9IKagj2<2Sh^EYvQf;(vc6hu-$|H6n+goEI`JA%B22&os(Ony8q&Q1`j!z9HQ`!dRfL(Cd5Bx)9BF8;;3Q z3w53S-7o*UgBGObt&=|kJ~^Sj-jAq}pxJU@ zzUrQJ33D@@l0hx{$A7aUW2U%p5IYGP&k*j&-uN63Tm0R5<&{_d1quB;^t6yBR15$B N002ovPDHLkV1h+(=bHck delta 2453 zcmV;G32OGI2%Zy=BYy(`P)t-sM{rDA8zNa8A*E<ANec&&AOTpJ*%aCfP9f2(wQpkipPbbMbPBwHIHuy}u6A0)AMfp91< zS{fgpVQ6C?C81|+rEhkycz>#Odt)Lgt7~&=BrIqoD`g@nVt*kgT^=Q39wb*58eJJ4 zSQQ#y93rlEe6e?cv2l1^9w%8DADmicR23SZWNe5#L!o18Qxh0$CN5wfCT}J!o?~j8 zSYMAyQgI}mHJ>RlzCumFL{G0Z zKB+J{vN%D*M}JbSGd#XUP_;Tlu{J=aFFB7SE4DjEt1>&ZIYXr`H?uiIx;{y`Jx9Mo zPJ13CwmnCxF*>g{KdLl6y+KTqb|cDY_>y;NUzDKTpt zBCj|@tba8=xM*>xS7E4RYqUvJ#mdRz=jhVZ)b{xLyI5kPM^L6YLVO}ApgKd6H9oOs zZ?;BG)!p6i@$s;MhSJx*nKwavDKU&HGPq)FuUurhdxE*Iu*A5#sCRYAw6n9Gk-CeK zzoeRSbtu~Dfw3JJ=SYoS{ft`41 z^7Zu1yuQM_hs?{Y)yK)^<=~VtI*%tVpifw%oS&zVZlPvVrKNVLZ9AoRSh1dfww_be z&d$7;oVYbW(7nIBvTeb+pQ|!DiabS@QCYQ8Osrf-oOO4xi9oKQsk^P}*v9}xbuYKAc~ z7Ws4awRJpVEtL25w00s<6L_t(o z!|m5+SW{;d2XMuTR#XruOF-1RXC2k<5`Th8AVjz<5eOI{2r+;+gb^e`l8|5+%7`c< zpzNuj5WsCap~?Sn~EKP)V)tgJLPHn#fW<7qQ&4Bx>pGMl*^2p<*Y;X#13YDDGa~p>t;sf`aoa zDk}DX2thJ45kiR&i9`Uwj4)pn#Ka)A6UA*vEGS3`4Xsa3PL@ig0)c?b<$rQu7?#DO z0va5SNQ{RWUcMf#0iKQyqY#h+g31C*QHaBVQ3ru49tgx> zz;vg0B1_nLEfbM0{&=}v-u_TZrMbJPAUlVIfzT!t!UHH^qw9JPUtf1WDwRZ!_orr` z{G+u{1S*4?&UJK1St8Ov$TKK(2;_iwT<09HIXck8*E{R17YU}5q<<~7tv55exC97- z_~jWVSQICcpL@jm%_wANYljEW)&UR`ToDSn1_CG|{r=mC3oqMlH_Q88OX`aF5JYgg zR5KEYjX*xZ3dlX;r$@%pqUYD;?S&nZv@Q;TAQo0Pj|f8VIvBYk@TIx?1zoGIl~=d7 zR55N#(j-^-1b$;iU4OYq9U_ke^16`y>o1*c0#*`yLy}fk`I66Ssja=j`)`PeKpZ(b@ z(*p9NrZb%UDM_rJJFS1+sgu-Xyt&zxsTD+b0uW1hC#|mUpMNwEN$bOlkTwvB?&Qzo z{+`xc)7^dhRo9D_6R~1#Aqp$!`t_RULQWGGri*ys_pK$w%X*bob3@1{D55n)YLVaS zu2MN#Ln6VOTd$uMamAV;yAebF)N8G^wbd_VVs&Uh8yR6~qN>7^l4g0QD7J|JArNjb zWmVZ=NJigq7v?L8s!r;ahsS$D`CUJi2&FFZlfQa#Qs+Tv?vmNnULNxU3 zLH~XL(EtQ`KZPh}(Rwo4vnl8(Q9;3uc#TtJXd6*MpvP8LSMZ^JXuw<>3Mo2dKSV{R z5fKORo;;9=F{gjh;_b<{%%KBPt@)#^);o;mhd|&+IDd$KwNr!*Ng`NBRI{I~Y4)p6 zk@ZRl+%^Iw$u3>tVdohD4YNe3&9!JS*U$lp)kci1qA1n~3-Vqjot`pL@GixzLo%`NVStV=efZUB@$fShBH z1*tR(Npf<%()e_qwW+}ZbDb6Ho9_gj1(w!JbALZqK}*0X;~I9R-aCC7Y=9tnAb0O> z-vKHqo<7%lw#fo>z2RO9Itv#np)q;}OTZyP#SIM&yU-j(?qbfIx$|e6jMZ83E-wzf zg{DhZFI_Zw^5V%LOXtmBIor};te&n`PoIf8I_6`MnCs|G7<~zjW;CN2S^fo73oH0~ T7!E|500000NkvXXu0mjffMjmA diff --git a/public/images/emoji/apple/israel.png b/public/images/emoji/apple/israel.png index 5c97ddf3300a0d73ec113a49afe315d1126748c7..a1c0b020fd1110df2d0ded468cb61188e55ccb83 100644 GIT binary patch delta 1346 zcmV-I1-<&!7SsxmBYyy*P)t-sM{rE0rlo#K<1u&|AcjDCTS&&|rbySh3{ zcYAw##l^*UcX!0Z#Ky+P#>U1BCucuowkA}u-QC>T+1T&y?DF#R;^N`w=jR+ttku=k z`1$z~KA8_fsTf70`1kbu{QQ!n&IUH1|NsBR(dpjh^Xur|d4H0~QF6Yhx!q)f#XMG@ zqobp=v#td%jE;_wV|T6sBZLMtmA1Uh1R!hQ0?A$g000tnQchC|FzrQ2T2G-%JEYk zSd?8Zr)p*Ic7Mx_-~LTrym+yg4=ffxQp~@;cDwC%y%vz=a=G4acVF|x-#K<55JgJ? z;FD!pq9~GZz1_`+xQjnE`GOSSkaa^MQG+3TUb!<1i`)RX`#QToXlu=U&A7*6esZ7Dpy| z5i$fBM1Sxv!-ysl?KvkbeLhE?X9Cj5W4eebvEqo-b?t!a{3rqe_#?;h5Hj^SP*CJy znWU-aBdVHZx*~)*b53`nGl>At=`|)QxFgZ*7zhGiqm7hd85KEGHS6#>o)IQ;FcHP^ z02h!LI8t#fMFlB9VFxi07HA;?5NTtPG7<@vf;&X`en8k@0^)#0NqoibL^_ESMZXu39SR!; zw`rQ@lPHc$sbXo6mLaqZ#?_REY65-_L})U456xJEQAGulqI^{CX(9zpgNFx7@qxwt zc7LnNOu<8mZmY@0bRrTNeV{NhnOndXLc2VkN+eGudZ-p?W|5dU=`vzzJe5eFn$ftL z4aB7>RWZT}dpeQvd`3n$BV43Bq9lpwhCfW?ccPF2<)NE?FOfC*<4>f}Ozb2#3n?nP zM3bBSJQ2;PVu{I^=}J-&mcd`{(J-SpiGN%db|`dF@-QPx^v4;IiT0=}le8$RD!%eq z&3L{?Ln8kCCvKEX{5~Sjw`UZisVe$F0jRp)w3#kH5l!q75XWg6_tE9 zGkLQ4y+y#`VVRK#8%6+sGjc*66ZMAfLL!5SF0Ldoyj10d2*dnXI~d^ePBc2%T*VdW zU{zSk2JWFE;#;y7J_Jz|FL^ym1b-&-kcn&XY=eRyT;0fIOI)^1a{zu_IUJf+6q=7= zj}FJWzt|DJ5Z9B?VW^o7AwU6w)#_ujc_%iT&1yxm*^Q_bmRPy=C=bj6M`7u(T-O+2 z00DomzX0AS#r*yKV|5r3Z9v?#&>7(mwPHaE-sGyF>~Hswj6`I5-#|!^H9Jj9z!x-% z&hbqkC%CXOltxwnjbichzkDD7zR>Vf3q||adGX@K|5e~6?K^v0VgLXD07*qoM6N<$ Ef~!S}umAu6 literal 2901 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 GBK`-$6&;BH diff --git a/public/images/emoji/apple/it.png b/public/images/emoji/apple/it.png index 7b200c3cecd663dc2bd280a923deaf7947974042..f63d7d3297fb032837d7c2e000d839a1849cd46d 100644 GIT binary patch delta 884 zcmV-)1B?9C5Q+zoBYyz2P)t-sM{rD;q?~(+f`^ER0aGY~b#Kkh%|mZhj7?2t93ir5 zZwE>zFE}J#7#+*Y%UYIq%gM@$E;V47daZ7An{suqZ*+QwfDT9~C~8Mz8XpHoCS4R7 z{r>(7ghUIANwFw0yfi)(j!y9K@v$~Pnld>=k!i#_MEUvo1b=Qf0b4A}JV&e~E(Cl& zwkdca^os7`L@82KFxc~qHX-PyuRCr$P*XeHB zKp2JL+7xUzgn!TgVTt#Rec!U&|9$n$$KdhE#TcYSRpnQR{CjjfkuuJYf3vc(GF_`C zY5HA+rYOy3r_*k=eo?JfyVFssH(?rxMx$0+9s%t4`^`CU?M^iTG(GQ0lqQJUlI0)w ztk?~Bn+?$4`q}CAXko@sU^LE#?+<-*H5Gk--+5X3G?%faD1As zX&9lXYC|%H{t%hF7`g78K~&&M(C84MC-lt1&uAeTh(nVTH0RJhw1_0^`I1F(QAjMJ2w)-Bp&P~lpJSm zvCsGbfs87Q+;qX~I;>uI@Q^eZbX6GI{r~vXS;+`&{!c3_EBga$r+U@rt`iji0000< KMNUMnLSTa2&7S=L delta 2121 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 delta 3082 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 VQ{%PWVjutj002ovPDHLkV1iF*V*3C9 literal 4100 zcmV+f5c}_mP)tNBUyJPjXN8CG8jr25S~UKc`z4D9T1Q_8<;^HZ7mg>MIN(PB#})XQ*9zkY#>x| zBS~8wN@yTsg(**HAW35%VS*`Yiz{xDFO54Kty3bdQX^-EDS$#8P-!1ud?xVhPvxIF z=A=90i#6q(Iq>RF!Wq#$_qve=_EwI=o>gyIv>agER8)Q1b9mvQ;FnR3pG+ zDCLMW@aa#(W+}#KDyvQ+;)XN7U?;O#B+YFsxLzjXf-|^VCbn87h0?b}r_WH}2d^ z;ej&r_fyt)FRxc5XC@Tjelea!AHG{A<#{pPZ!U6_E@p)(>AOM7Z7bl7HQR+Gs36SsPz` zCgQC<@8L{LVjkU@IMS9j)_^hQxIkYZ624O`|*|$H}i!@GB8^u{BX-*q(Q5~dZCSPwO5x~Q<00011bW%=J0R0{r z5+(iy3<6UugyO$3e1g~fVQ7#&aJ`Oc^O{HU_^JNYJ9WFm$Fb#}P4q+fz1GsC-}We4 z<*}IK@cG&6@7eM9vr3kviNJ%+--txs?Z)5R)8zwNDhU7p3|&b?K~z}7q?dV66KNX8 z1rOA+(6XGJDvzyNYn(rJwQ6fz$Juggt(ltp+B@BybSIteMAJ!k?ij)m5(1&ap#*}U zLZA{3VFp-W6*&}S3KdXbs|4KPkV8r>tGu0=onv?3FUh#Gv+It-e8pd>8*i|xZvRZ zj*hslU9Y~jXwb@6I|hRTqrtejxwye#==H@L^mcGA)YTd48Vz>M1v@t_zP2|*qoIze zP)BEQuyJ%@@t~D&bS^ZG&Z582!ouvEi|+iUcSl2moeLeoskzW>W9K`sEnN&}>Dzyb z8|bZv(vH@?c2A$xOHpdi}v;_cRp|I=;&;`cgI-TKRJ1Ma?+oa z{@b0;K1Itn>?ur|n7lkQGdbB;k#eEma`&I1g}au1Q%Xg{caPq$isxBdUtxBX>Dw)e`( zBc`mZwg$D96$yi_^umP;CYwR6VzqS*?WJ%`=hMB(uWWqsI!M^IH_7exHym*pY^Jsr zlH^1+VQ|@OHlL0VS&r29ww0Fl*s`+D7h2ukollBF!kQHhw=u7`&Y;%0Ol@I-)~ZCc z&fxR;2trh8Nm?`1)?R9|*;4u@lB`zm^YKsM97=K94BuVc^JZxwdfQB+XxF{n9OL!G{Em&;@|H8lZ2Dv(-^(*lRW%-7@+nJhK; z;YouC=2hfnrdcx5|FgLG-=tegT8%9gEc}8iDYMJq7panFEhg0nH0l?H(N%H@fZ+VS zPDRor*XK?y@;X**|0Zb7xr~w1B#97Q-k&2^59#T(dm_O0~~d ziX>>w@mP?g#BU^g=?jIHlGDbP91b46|HgHDR2gg6+W~&lQSH9 zA2%-k*BR3VP#K2=W7yFAfoKg^^_YTDfF_<%C=|H)TJ&>yH>p!eF`nOFXH84Cl zy-`-5%N#+KX;E`9ivC0vF;!AbDV0EAcwDJe1_FGuJkkVv8A+%#W(LRED@9IAQeon< z7--``sLbzC#XuVD8gfHY%_{-{gkl)Lz`>hPzT^k0M4d`7GYlj3Bs=r73pd9$Z$hFY zAA0s7hsFT)Tew&wm#0?ic|H6ZX;MT%3T2bbZkH7cgaLsR%>LfwJc!b{b+Iwqn>}3s zX*^C!BOnb;@)wIQDiwOYJ_2GCs4}HO$>0~qnsHI>14S4#60f_GXS62O#`?Blt9QD< zV;ue(Bqc>r#FPPq2`F$zuyFv1DpT?*Seib9je^3)Jf}M&{iWs6Sl4Eb6x92NP>Nz8 zg20cVvKSu2L|4_22tGwB)ayxtFc{PCOvmA8A{!*pVJRu_*TYjHiZD>5^8rW+(ZT4t z;0O>>yKs;s^jcMg+R>$FW(Lqbf2arb{D-D9AGPumg0tzI^HJ>Yy zNOFr^7|a`^)CX7sZA?%PU!;iSqH;*mi8aw&I}qqnWEDk0tj=cEgU>vs9li=PFOkb} z7K06-&<9ko!3h;S6zzquI|4c!0WJSUIx6iF>_)gIVjvf$hi03x@ccgDNFdE3JcVZh zN@xV!DaZz?Ah_IV9>4oBs1`tAww4w&F#VL2<^Tj%gCe#XLJlCg9VamaVqzdtfQ5Iw z&N}VMOHMkvE($t@+V319=_m<6go^^NVF=7k5<5EbZpMt8aVB6UA|3&W)^f*NtZ4}J zw+JYHJ*>xqOU^KWA|xpZr3sM$2K36R;-<2);wrOJuYj$jqzH7+sYRC6a_pJjY$t#U zKZvw{+0RdW1S4`~_&80IaHnYmQf07_ipa1kaWKt{e1=e&d0e3}=nMvf4lX;DN|n=^ z;VjQ{AKVcOU^d=&px214TTjkJv znPgw?!?4kO`s+ZSYY-ZwLVWKV^2C_M~2`dyZfLiL%McN3X zf#NcniA-7oj)L4|6!fBVv}TiCym%SWKVY}L1@~b#_myQ&(q5WA@B8~TZ=dJ+g+g1$ zM_>V!Nvka@jOoMTq|rFP?4GkhZlb5=i-Sm7pf@NqtC^UXSlE9HTgS#$fg1v6;LgpJ zS6UG!6AXWrY^ydj4jkdU&+MM|AnDfTuL9YcMqCgQdV?>u zEPey{cr;_o==G_z*@a?6r{t@t=`Ug^#M<7Ei?14AhqPlyD>1LvyRo}*tolM=t=wVj z!+c&3+^sX|L|JL;HQ2jjZbF$niXxi9hIh37)@|R9@heSCL7$`^qc80t0b<= z&gb%e8fUR^Dgzw#qA|!k_p0Etf`*6RuI}z`fI?S9o~_&dRDxlmOzQMBEhWztCPG$E zOEJR2tQ(D)%*%vheRZv3C4g7D?-M=y$Yfv`hGTd9Pa}zh!x5dKNb;o6@LiH(XOdQqS>jb2eDh(!<}in-RAM^&^e0glm9S}$U1Ym(kaHF2A9hP zJu*9)sk;xK1OoT+K0Qb|^Rtg%q(F4AdBmruC7vHrTo7?DHMEojDyeiMPSoi%V<@v3 zO&uH@q@v&(0pt@iZnFVGQG_iDrCd|*#aXtuNf3CN#KUfub%!xq1gt)NsM9S)A`XXR zX(l~mMmQG3DM4sgNPZe1uXPEz0$n6fZ?9uz@PgTVkn5MZ=yr^6T)R+79>C$IkH zq({-!!c$Z{PSZ5WaTtcN9LKUOhgg!yBtZ~lp{48BH051&$h%r{BKQ*wCkZKzOOsM% zx_ELDFHn7*@?Obr4~`@q^6t99L7`MA#;HO)UH})x_YKvzDLN#ze>fVczN#4LZfb9@ z6Vcw(Js`iPVH8ocx)iM#6uhdli8`M_)FMI+N&WJtG;B6BC00003`E3Yhevcm`Lx{8_Ti+ zx1$dJ>K&bo4mgfX%efu>;v31!El^1n0RaJlbPhIkGx^{qD_j;5|J2SuZY6zs5QI-U2^G^l+9_Yrl5n}|Ql-kXO(3&pXB)jjzVq~0)`Pl zh!>JlD`~NY4(2h4|A5o?OP^PgjoOeGIFREINI5dfk)M&nkfh{ccKx*ZUn^UUe4kQ+Nw7HH$XsQq7d7wf%1c{~0Ad6u z>tknRu8XvJ9}Ux`JzIKd*@ko-k>GHng?v9^^_jKG;XDuRd@`?wDR*j!>4uIor+>E( zl2Sl0qP}PZN&Q(aHe@bp4ZYUGpT^zAfy3@5IO2~ZBp|D-Cb`^^KtV0Pv|8(k&|vWi z0&5LZ5u%<)WjW7nwQS*)hd@ONijA1zzS)8xPLLqP7*Wro62{tY5#9(gv2%A*;Ye*- zLmbr3UV}3I7#R7?mQq=T$^lD){C^U$DKOpH{U~c1T?C1~T}Q(4sgI+1p0^h^#1_}1 z@rI%8>i_#CB7t%1MJr~*)udUFG76gVn-(MB9Jr0BO$*LaTuL}(e})Ew!DyQ3M<9?e zoypbT>SWgnFr(4gSwDfqvAzc~1cVUO;f`B7Ak;;8&gumHewHOk)wn*YI1IIt z&0sW80YMmo_;&CQg1bAd`Sk1~0adn!dE78Vw(rA>{1JRl+<0|5X4001dQ zBb1_ghj=6@Mj%UAB`ioKM1eMmp?*eEC4-)QFik0doq>v>eJDjCc9U;(cv1So67&kEtwytFg3IU;$ zJpcdz_25)smw!@Ul~MKIQx+B$0|NsE1qEN0QU?bI@7Yff5D*Is3tp5^Vwh9t(Mj#r zP06)84Gj(H(@XN(QQyf$%eOq`&q(0QM%2GR(!M}ikWAvtM$x=K&A2`A+ECBBKFYQ` z2?+}H-c#$u z`{Ywph)3?&PFRafP>xhmheQAX1bv=%*~39tjY$Lq5m}B)@Y+f{VKEF07(jYLLTWew z00}r-FJzZkSd&ypb3F9fOi6@Gxu!PQ!$Y&7G)Z|oX^vm))ktodWO$o!^50BNiceEb zA!1n`l7ECPy{kI??^VpWLF>&%5fBAxnqG99YE_U^_2yDhf=4x0D|Tuj`07)~wnFdI zN!P(a1_l?Kiz~3AIZlK`PJ2Sy)lh6eQnTC@%rlembg)!QEsAB+Tq8o@!9f>hTx&Y!sI=&!HKQE zt&^=FE$RRO2N_93K~z}7?bl~iQ)d_laDQ7{Y)gxXwHB*(s;AZN-JZ6md$)lw!bl(_ zH;V)UnS?A7LWniSq){ZyHY|k}gg{UV0og+k+}2eU=W%QIdf$6u--06%}2%^5>DQM~-aSGXMRL7Cq+qTh}S^R#3-Vv)_IK zGrsz2^JZdt)&|Ruhqm$7*VotY+q!kj!KHrgANKovsjmwCfbrn$ho3+RV0`n%F0kdEmJF_HCVCbfxInF>srkVb-8!0D|ZanSY#a`+09J zk|qIA5;z+*iE}k1r!v+L4W+5KZ?I*-tb|ESPZyCfh6EE@UGkGImxYM)og8qs6e@ru zLlsNM?r38{7tr}Uo^y2gqQ%mbot>GfT7g4AfT4uyiEYYwmz1SWb8>h9l2a9N#q9DW zGjQm&&b%%v13(-$d$jV>kAIe)Y?Vp{D-wZvFea2j(w}M8#?w$p!Qt^!sBAQL)5l->r_&kLqO{_*( zQmK@d+uHmSxujZzLL_}}jaC4m=y)2F#j>Ma|asY%t$mOC5bCo+zoXOGW zfa}RQ;ZO=fLc#=e0DnnM_P(74LxgWABEnErZel6i6}f0MVSGGYt326Dsn%0YYM_Hc zLZM@Csnr@4c}*xX!cfXLiNy$uD`ldPE;?DD)tqbV-JuB!2|=M`oxpJ*+?o)39Vj9) z%CNi7RIElY2s-qP41rSP&L5On+f_v6%3Ra0n{~jX=5X zP$l&u?eZh3+K;ibuQX?Na@($XzrLS6cb}K zmTu~=i58AOTFBt}U(M$5-IIb6Vq`L7WBY+~j%eLDNV(2&sMKssm@E_?ZZ@|c7G_)x zfyYmG)YO+HSbrxCb(kCX_tVEi-~$rvu_>>80w~q^>##=X z!atBo$LXA1r~4gR@Y;I%kvN~j<9<;Wacw9e)!I>Rw|{#+*>r79ubz~nr}Q@0fDYj4 zkf7Bjv5Whv46!nw?^>!gwnc4sN%40rSu?mxk9M}|oLwh&Xq3@jJ)1#A?JQK>Ox%wllcWF-_x_>TieJbV2a>#4TeM%W!W;%4mTk1 zWDK}O3`tz&V-`WEDMUZjgJCs;mJMulu z4?lcgcldC5XThdUFQ~i#TWfgiw8~+))nL#{a5~gj3ysxJ&YO4lea}8L^N~A19+~;^ zL+?KNXkGW=@-gVc?u`X`;J``jQOS0T<$q`sx@l!*Zt#==g!^aSF@0{(j6k?g<9l_` z2QR+%O7{W}^iEw}cX?lDL083J$NxB92(or9ECN)qy7tMtQ6j(#_(y_Xcman31D;#* z3MjJsa_z{->Q&$iq_+0)$LFC&P(Yw>!pFZEfztw>dvVEqZ@h6A7WY+54}jmg;Vgez trp*YNJ9j$F+#4ujB6KQKnack?e*?drxn=`uz$5?w002ovPDHLkV1lR*83h0U diff --git a/public/images/emoji/apple/japan.png b/public/images/emoji/apple/japan.png index ca04989883f43e7cc115893555703daf7b3bc8d7..5333762181d348a2f20cb881b13b961469865a66 100644 GIT binary patch delta 922 zcmV;L17-ZP6R!u5BYyy3P)t-s-Q(p>eW-xA&_Zv1-w*vI_*{C{*fr(P`#9hm?C0_{me zK~#8Ntdi@F+CU6Oai%vqxkMjdI--wbi(5 za7vg25n7&ubxKlZDr8J3JIzlNP2uU`O;fhkFhFPVtyIt3n!V!q>N1-DJY#0&fL{%_fdLBfvOg^m|J36qP!;bRmpyb;a6 zkcm_awA+u@ThTOo`-sjdP*%_^H$FF_`4ADo5`SnR7c@+*NW8ORh{QYXDA6Rjsr4rxV6T#!r9h!fd4b`vF5%tge> zUlM_lSv48=i4c(K6cKr<(j`i$UzGPfoFW=3U7`f+91$6wBqIKcXqFacX}J5Tty~^E w_)JkJ|4Wqr*xoK@@ce$cj^k4&W99k-HWQYpz*!Ef#LjV8( delta 2474 zcmV;b303y52eT89BYy(`P)t-sM{rE;^7VwAr}g&uSao|uQkW=<;ufir3uTJX2auXlPrfwAyli`QI-)PHG}-T(jogtYT)m)~rc-i*BY zM_Msaf6r-@-Ga0B?eOzlh}8f8{Y6+WL{=|CR4qqZDw4+hNL?{RS1LAP$N7{AVO0lT87t6VJ=BtJD1J=TZr65RVGYi zTwjdgihsQNlE(ODkl>EN|Ae#PN?t5efz(!XfkIY5Vv5L7bCyzWaY|!UM_omf$^T7a zGLXdnZZvJ}x{`>s-#>V_^Zu|cJ`^NwN{`~#? z`}_R+`}_R-`~Lg>#%lZf`~3UPx*6G=otR9M5UmR66vUu@XT=XO%dU)0HM<1Bwb4bzC_=Y}T;eYEJ z3XafFeDWnGvL-I^Gd-QGh8Bnk^!Tp$EMP>mAk@w{OnS|gggBx~V8Y4s&*|-GfiK<8 zj*hR>>CgdAVve&CtE=r2;^N}0p0Q$*ZDdXnr8DU;On8AAmy@PW%&xLxW@lFI1lRZr zALyfYME2{wRlj1=6OKvLX`;Hs+aAj73hDEdHvDcYkFiR}1!!%j@sKG|-m-I!B8%;2HT9U@+W4Wz^lpqWey?M#s zKP=222Ta4o@agZrueCT0eATphS%dfz4$2QPwjHMk(JLAkfJP6T#zV(lSvVW@9CEDBq1lD0mK!_ii^QI-!uqW1@XF-6Pz z5{$#u=CnD(>&}Z{k+Uh%i!k5;8{+Yl8GnEH!Qn^xqSr6R`hi!h z9|=*!#^P%@mm5SP@URA=%1ULTU!ZO|){l4(EP6N4Fz!prFh04V%sgdHpgWu{g+=ZL zal3pScO4`*RB<@gUPi9A;-%)o;10;IeZTpxUO}Z&9 zFOqRN0+mXc*?-Xyo5UK`@{UgQ1S#?u4eO>)Na`IiCKPZ4iS0cZ9jskRqq~wQB9;yh zaCi_CD@1zddLn1F9pTgAh5-g@^ zl}w^l+>o9ssz2pDUJ-2s#G6)_TBa#(?!TZCWcJkO7e+E@J~TrZ5_zAhkmg4YRNTEQ zEmsMZXMg@ZM>C2mMda;GBMxuZa}^Cm17eY^ERv7t$t?`i^sB0@&E{r`DYnMTNMmc}PXBc@;&6vbaZAeEKN1X|gD(WX5H zMU3d8iqiOj9GO5>9?d`|AYv3r<0EfZ@FElkl7A;6LXhZaS0sLbr%+B*M5M{G=BCDR z+#ypUgwc2_wUJ>45t1K&z1<8S4MCDiYfF>wdq=ZoS~4g^OQrb;V;n@zm^SiL`_#-C zQ>a*4P8lCdrj0y~0=`^1brfGr9Um(vttLcf`u}LUc|-w|7h3#iuK(D+`~ERA@by;~ oKO@-K*gP^pY;3;$#=>0O10(%bCa@@$FaQ7m07*qoM6N<$f=OTzP5=M^ diff --git a/public/images/emoji/apple/japanese_castle.png b/public/images/emoji/apple/japanese_castle.png index 5055d981b2b462a7bf756e70f7e6b0291a716b18..a6c2598aac30edf5290aab160a73f486501a13b9 100644 GIT binary patch delta 2185 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 d_wW9z`~!}8O}Inpe2Wk&vlX zQIJ49O)49uX=y+=Gw6bUi#auaMMCUFKH+n2o;5LyEh&^XGl?Z1dKwn-URZuBC#*0q z@IN^0M?mpUNy#@dbtE2HGcDglL9j?fmL(%;9T~MXF5FsFNq;{*z&8@VeZvne6} zQ$*!QDfL1&gB20LHyi(2LH<8C$TuAf1_HP@G0{FE!7wKOOg|nG39mC5pe-V&Fed$2 zIw~L=s4W&W5Pt{qOfUXqL1`HfoG~hVCmoP4D5-W}LKF+LhH+aM512nQlUhgrO-bB1 zG~GWax1Eb085jRlP}eIa<1Q(sG8ytUF`6qHmXLt_PdA_~7da>)%O@exJvqECF2Xf4 z!Y3c(S3FfjHm5Q!{&Y;iW>u?ONXNy(VJ05Qv!QiiRDV`cOnyZ;fp%)el7H2~vEbd@ z;yyg~MMKCqHS9q^{eoC(IVR$Laigc9`1$#3!MINV001m>QchC<1yW@JEfWg<9e$Sn zKK)LrhTCn(*t+EPoyFSm(!cK5!q2em=ID)}%emL4PRyqO00^c@L_t(|UX|DfR}@(u z1#qA<(0>RDm}W;E!_4ef44re%IY)BNIY+berT4ySbv?pX<2`!xl!qVxce`HIlb)ZW zHr#vgpwDQ~^{Q|DQ!lx8dvrIPdw;yuPfkAj`(?k%Xw(=CTCG-xXbl>ps=r^Q(e>Od z4?axH&Q46cTb#6Q@^79#eL9MakB^Uzy-G0*Lw~;-Fx<(x_Zu8Qpgw$fJBiqAcKfD_ zA#rYQIvIBSE|T_lIBqZ;W6 zX59fI#jS9@G04Wo#{2hM1j9(rwcQ}Ye2 zh<}sW9pqQy-$ub8Umbog0*ki@Bi&khVC_uwDVsfx=)Gw9?FOhw1PXC56QH#4LfZ`r zcA!>vZ6}m5MUe;}*@~126scrq z`qX!T0`5RDBCQRr%^+(P(s6k&g7DQnjDNH@h|43&kotE(9jTgF+r?1GF(!%Zm67Tm z#@fT8vxyhVZR=!6ZmIYwk=;ETB2t~_%RFg`hZi}XA^f0nN!ot_A{3yV!GzQqDlv#f zm3gFG<@eUIS&WqLQ-1wrFu2$20CA*fLk+S&##ga7lgMV>A zNT66OdX6ayR!8E~C@IbF4dTW~B&7Nits?ZBHI9*B1@?EM9#2IIQSDGp=qS_ zP^ly}fjT1d+;{N0(soK4QGSdtM?N6I9tRUhjNMU#~}g{C@El{B58 z@)ePBs(O|7EFcnh+;ebsa@l4XzklD6tVm>}Y%0y1pADg)ro}?rWBrPd-rA8?rY?`J z|GB3qw-9Yy|ASl|nwaFm!f}EMAE#5PbcqU6 z6}q*2ux`H#teaFv97cHv1B_y>ZiY44vXUh${ zO05KW;b0y>5p;BYF^F;p+Z?^VElULeI667aW1>X<-0b6+IX@&*>y*MZirQ_A zD(yA(<6s;RoM_aaoIcqNhr?99-l9#kYu*!Gu!yx&N|JDO_i$LL>)x*rB#d-8eF`X_ z|Fq?F+Voa;#*q?h%aW9*!r^v#K=}b_jjt36q$5b7jm9p%?9(AbJAdbc6SIX7Z)r`R zLXyrS!bp!=r|DCvj0W}pfglw;Bs+zjgZAk~O%QypIRZtuB9``aMP~4r#Wbk<0FMk#@5QE+iIF;Zlh@`jEtj{O-SeD+N58~Le;=xNV!i*VyhVBE( z1dt+r1B4U@4Fpnfah-v~u_k7FZqYhB8^{!*exBb;oBMlzhJx0(JMdj{!;ycv$tljd zI6t?(zP-M_J~y|B&I0@Ug{UKq4akn`ZiC!`jsfpVp?9AtHTC1`NqchDdQ)>Oev3O2HE)j@c}l9%^n*)RBmV#?cbF z6$-^-025)PU}2z1Q2h zy%Bt0hr=I=PLUJ0J?3;VG~#mF@pl4Q(DjX%rS=a%VEC#BJGZlS9gbu!mvn?|L;+$l zu`Fvcfr1H?VHmDoeFIv=b5`#yXLs8d?Wo)W#$R296o11ovVw3N$AUt5my6~GbT>Bb zzx8^Yg!Sf`wX=(}^H!^haR4o?t|nbBK!o6YB(Ova&Cn)p?3Pz<@1NMtD5FA7MrT8K z8&*gUBn*~<4I&67Il|XGdNQI>-}cP5qfy&rg_5K!j*y9PqQbaP1p_Cx4XD&?HU*C5 zO8FNf1AikUDx(g}Ez!KOkyLOhlB7g}qNs4bWX2K*$2IGDDKD_1+1I3IG%}!ub6a{} zZsXIjSrQ}^AV^_K%Gc}lJc2*)e9TL@_!o*%h`NulBe8lINGH(bS3pxRn`qi%ZstK# zS!0iKbT3_iY)n2({V!6zWX6Xsir5SsYc5F?^?#SH3#2w$oH0nQ66Pm?A}r-{>BGZX zqjA}&wX3X2s7pBbcZqJ;Bulo~Ql*5L7qCNsEX$cbIhj6WS>J0^-7T7jbVus!5r2}e zO@sLI<;!%VR%@JGT{UPHN80XDaSS9If|r{kcQ_5>=;-A00r@Xds}1Ua#v!X~)Vg8z zyMGkQ)rfNSc_-w`;WQ$eIdiLaU{V3N%i>H#B2>sxo4)+KGZjiMtimCZXySYi4Lx^C zzmG_u>@mMT6e0&(Kwl+`g%d{9cY}1}KALfTlN^40Za9$2kOh$Mk+J8F(Ts5xvQ6!X zp9GQ&rSLqo-1zx{(oXSlB29{l*|D^c41YngKuU>1U(cPR8xT0wLL@|P>03#b6#E=i z-#OZ00WW#l75f1~(;}$|H_uakQ^jp^UCnuc5DhV0d7lzfY?$&wl~G)m#bCAB+nC0000k(5R=EbaCYI^VQ_&sNm*B;s1X`(R7VgB1gAGF>s&^NFe2<+O|U{Jw>>iJSV*)%I+Hdjj4&kZWlWwsGmVc_A61H7X+*6XH@quRu7sLp<$VRIxiQmNz1oEhDKuH|SJE#7HkG zBOsSCC!8=SAR8N!FeNA*7uZioo;V}!QbfN&G^{!;?paZ(Kqi?vBYq8W>{v~>KQpvFG3Qx9 z-cmi`N3cPlqw)J5(?;GLEu|G!bU&KMLA+AAJ9KEH76dtJ1Zjy1Ar?aKNt_$L^;<| zHO^Hx)mS>oJuy5nEUh{^+JOw~(8 zo<1o@C>`5mN~c0Cdp0dn92B8-W3ZTvl8k=sVN>mWS-3STR45)*QB0CXIju7(g+n*7 zbYrKAc+SJSt!GrRgm9Rbh|@_u?TBLVV@>gEPKRJnR7E;791n6?O2@FHrBy>@J};Pn zZ_vM}pro9~U`)Qjz_dp%uR|}TNjQCSW0zu6lUYh~WnHfO6;H+}6>|+1=rQfq=r7cFLEI;@#PQXf@l2ey5E~8t7Wci*Z`^2PVq#)yW@c()WW3dU z_c3#0({=BcBb$OFB0Pi7rn;ACb}C~PMvi7YcT(*y1DL6D2f4IZz8t#Ch%O3BK~kpofp=na0pg}rd||AoqThvk zA}PJUkJrLesYGKECzxa>3Kw0@b>e1l*=#4SS|nVr2l^zyN;|e|_gGb(Ei9EPuS)Ha z>BP>!bI}r#P~bPdPbgFw>KWQ+0d@$2nk1^K&Q1}Fm6taLm2mMH5D6a2qEzLHgsRWY z^sH+Hp}}2yUZD~#j<>Mj?tN)#835oZ6!5qeLXk+w`ocgr^yw-DQvVo^)w0+k6y~Y= z?ouQflr-=p6nqspBGHo0Ny3T15@F!xS=q&tvX+| zO$0}f?5yY|xr2j@B2q#^uX+iK6Y+$372rr(csv#kD{mv`kalC<1G1wxOkcYG^aZWU z{_fpgwVWklsYK3D(0HeiiW{=@<14*>Yo-U%CME9atC#0qj!bY!xxE8w6_tux0!Y#c z6SU;a&+t;7+@}X35F7~vABFGSzfPY%eeTkO{4W1c|1m0-Sb=wT##dm)#5T^-pL0W4fSSn^v8;>RANc9%sp`rfN@lk-S|kAVQjSAVs8%AAhp<>2k$C^7Lps;dkyI!srl32{ z_hiWRSC{7h{huc)Rq=vb7^m7xE0G6TH8-kM#KoV!G0?q1IwB~}*Eiwp^zG}*OHY135XIuf*$ukp+U%2nUn)vCyYl#vSWK)bzTq?(6c|IG_YXLehi_7AuMP+q{XL6?Acg)XMhnP^#OT>%%=GtVc&nI|h2;_0xP{x&|UZ zNvMlJiAGKe#KwkxF(M+E5T06JUs>7Q-dveVu(OITENr~f>kV&U{^pJEfb8hne#B*U za4Dswr70!R)=*L+k^pK(kYkFXz}G(4+tSvJO#ASy={EWpAT+o)P&!O^NoiA4Q|a@< z^ov>uNzLu;+1;t`F>wj@A^xtmZf>^HH5CEmj)uFtD-`Y&NddgM1?YtXB{$SRH{_%;FiETA=hGnh z0#Z;AiJ8Oa=P(7*H7AqF(NslDOpHRpTU@xm;0t?zeMm0c*45iT$jd8;DewbDqtQsE zQcXUe$s{phlpLwynugNs%leqhm%C%!SXJZq$8StbNuV5XkOY@7IW(y>ER2B?7N(*3 z@dbQZ*yijDf=l&~Wd1<8ALg zOANja%nnp$BZx|cZUIXq7Dv|l338ZBrl5AHSYA`yrpedr9Ks2;YZ-(2KWCEJp2WMuC7>){uEQGaygve;;;0y{#$Y!l9H0V>WF~638KVeZ1GTAZ9a$Z zR~spZ-V4jq)39Sq_ndKXa0twii;1fcIMlkf+M*(wt*u+FR7$grq++pO>HA{CZ2eUEj z4Ly5yU}bvd0?Pd3Ten6YXlRVz80h~NHQ3BSk}^9kPJ1Ywxi>vBe_{R~&z_CU+`Kt+ z{no8HPLci(KNy_3G$$xINvZtrii&_)q_phH@h49{KD&JX>(j)vuu13MT)Kbx=>j26 z!Uh37H$N6+QV|fe7aV)?Jz$V` zf=z-MnfTd}9mNzgN^n<(xstQ4sp(s0P1~ITRbE>w$#o@4(RfS z)~P@cBf~&4VCUv$Wj2wB^iEDLEr1#{Us!~JJiyK;Y&mB~vGnw`2}fxa*wo+u+6n;as18bU%sOd5P5xi~s-t07*qo IM6N<$f}NVv^8f$< diff --git a/public/images/emoji/apple/japanese_ogre.png b/public/images/emoji/apple/japanese_ogre.png index c21eb772a91a32ac03ae420205c1c61867edceb4..6fc2b357891644654c93c65343a26f3435da6fae 100644 GIT binary patch delta 3351 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 literal 4787 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 N002ovPDHLkV1iu5^AP|5 diff --git a/public/images/emoji/apple/jeans.png b/public/images/emoji/apple/jeans.png index ce4b5602529d43e9b174624b5dbbd4bda04c708e..48e30993e068f9a0d318a6604e25a4973ff88de0 100644 GIT binary patch delta 2419 zcmV-(35@pF8T}HFBYy#^P)t-sM{rEQ$kNi+-cMbEou#;ViJYjg!SnIf+2-ro$D2o1 zgkWZTu)fe_ZiYxoZhnWJb&bq%n8#vqmUDigOjL7#hL==Yp;ugRZ+eqvn$u5Uf@f@f zPGgU1e!Y5`-k-kOkD9J-bclSI$9AUMV|$~ryu^u*oK8t#U4LYETWXJFkHgpF?Si}e zO-)^x(EC0)LU4tmkh9OD$?2k`oqVt1=;h!jC_Q4AkAF~M%V2q?UwFi@&*Nv4y@|2W zoWa~&fv|I-%2s{lS)BT7hojTz@bmck%*@D!g_3P=g@#&!LjV8(ICN4@Qve+;W;9U<3nVFfv$P8ir&)a84 z;7zvfne7iw)uiUp+kHSTOMWZ4LMXXhu8_h{rBdE4Mdu%(l#+k0g}HyBnxCK7Jl=S! z(P-3K?XzbZsQJfp_cic*4%Pay?4KRwT;lVWFMnS?UtL|5&(ElEBttX~zkmP9wp!&g zDxQf%GSzmIh%(Vf7)TR6Ll8)1t8vF*2(guw@88}e8D{_ZG7)dLfk~$;%)k()wMX{j z�~r4vgh2!v@(z{m05wl1=O%XBm(>(7FPXXf$izg}T&V|JuK5Ll7pxrqfJ1ogj~! zYkxm048v9`mD7q=j!7ib=`JoVcH5ULZ&Z!Hxu~l(H-AeiA^=h~lr2UM%DQ6tAd>Wm1&MVse|dcl6kuJ@nM! z{jza(TrQW3R4xdchRwCoYw2JxRDZ3eQqZlNa@(3&5s-J!!9$j!iOR)UCRtfqJ7p3< zLlvYdP1CttlMn@Ydk~!q1Yz5}04EVQ&?$;G!0AT~XYXU72VSpp3m{9e=%xcfNc7^# zzX1yBX$l}vpzPTt?4f-Ctsy8@bWFop|W=2W`Ir1K}1^R$ML3V;aRMW{sVbdJ5*dP)r5s4nds%=@#CO4gfKtXnfe`69L zm(kpX2(geS26=KQP-Rt#Ab;sv;>cw+#yM%1qgOE-`b2qfTkPUJ_PZR#6b>+bIW5k zg#il0(_@_$CRL=-!$UA_g5cCjY-<8!p~7L{aetQn}+=u9guaQ zF=!3VNSL+=NaOH2@_*;Xm;jC3>p>+*1Q3a!C?1l$_U7|j=a2{;**>Jy!i+pdwETKK zSC|#kn%60`)`w6nm3WAR8%bX%z&AFo9_1Zq*ndFN1()aCijIh#D{uo+Jmhye{Rj#h zLh(i)QV(yQ`vD@MwF37L4=p z|77XNz7-%?et)}NR3h112M@W!IoL;9rKEQubs>nZwwxRw#5y`jK zSo}XA^hG<-e?dBP2jWKY&|n90qZy$W`iVR}Xjq1aM=nk~h zAGTNs67eSl68#C0da=+W1jYVLG|iti(q==@kQity??3KBcUo92Sv|t(C!zyV5zwd~ zAhQ5X+<$?d%=!S@1jrs8P>6sQ&d;sUvqkke+@2 zb_@04{rgXcUwfCla&%<{9)5WL>C?N9AFr43%WNj+69EGse=;>D?gecIS#eZgl1ou? zaDS$LgO-Jou2o@wkDt76bcCs~%VlhSgpQtgeT2Hk(1EAjd4G(>ftK5PlFoE}n@?AW zYj%%PUw>a{g08sBbePI!Y=5i8-jlV}iLB6fmbH70x`l_2LP>U9VRunka&ef_l9-}t zeV$)#n3b)|jH0`?$I)th&Iv%IDwZ?@&)zRAPXm$?rKiLv?d`+Uf74u(f1p znmj&yIYfavJa|xYv^712I!Ti=ID9cPbV_NaL|mmgL3=`3pn>Rp- zF*kTxg1|RKi#|@8RC=;CJc2zyfHOOQIX-hkU7B{KlSW~kV2aCCdbdkxt~f}KSAM{Hs_0H@vpYC%Gcji?DONp7iatn}ReHQL zIdDu-fHO0BNMw;bO^QENo=k18D=lDHeZ6Ij$v{J)K|O0iSeSmU>NrV*MrfdauTJ%%VH zM?O)EOJJ=&PLDG(SWsDjNmi>xOPV@Ei$GkHIY)G9l+}s5_C8jSS#6R{QklEc=A*yZ zS73uGD{4JcgH3dh(B0}M^d77kgsNOjA4c3WPrYtt;S_?z*10)U|?ysx4rxO{DZCGQ%qKCjNPK1 zlz(xe?tPxvRBWhTX03<7Z&v^S0AX}ePE!Cr6%!IHA_@cnEum8K-@)PjHudY5xZfH6 z{{FshUd>*YRmmI(UB{uLj*0Mn#JNP%cZU1@*LH*b;@ifI4 zz?DP0iOsrk_oSrgq3e12s@~j(kUA;=0DlQ3NklY{Q0KX2-w%&VLE~ z;k@4IGbd+f=VQl?En9Zz&{o`g7vbpW%_mQue1G%St^2M$LRv|xq+saBA16DW4oCLX zsZ$3A>ZE0ys3^tYN)*T`t_L^>lspzgr4C0AzWedPFXb9VeCa)nnp0LrjEYK2t6psS zeh9bArS$uoVBNZ3G8XBniDpD=+J8^Hdt2V2i7)k3bf^I&iAuXveaILET0N29+FI9I zMH+t@e`}&#p;2^q6r^c-(>el6iB^-B6pHBROJJFqpg;y2yBt{rGX$n=(IfK{l1jqdrw<*QUy9?OJOGa&sr_C57c6wa(7o?P!qU z(OdUxTPKJYRrX{Nm6ww<>|ZM@sqE^yUn|RfQ!~+6Sgxq9?(9T^2*$_mKd-x&rVXsI zr;7okq(Z2+tE;v|mRi@YQh()FmzNh77H(OJR_wpFN_qazF4wfH!m50QN+r*&q(lZF z*+7X*)>@-dHC%2S9PGA4=_A4}-+xjSX$%0Kx7MY~WU`VHyBbw- zaq%e{R9vG%tTjLZ8U{})l`5suDrtQ^hl~ml zOc!PqMf}_|1u5&rjOxO|PT+L&c~YfP$}215a5zMw|8FovROIc`GZrdmvHPSVFhvSa z|M8SUqlqKYgi0xu!j@J=By?F$@5?UbcW&!@QC?oMYlGP&GwBUamYjHoIJKtmNElEU2q@YDxm3FgM-wh4g|a|Mo#gHVHpBscc$@!R|2%qrKL?Mj_0%G*;Mh1`R??(HR zVksBWtK2}TiDXO>6+wtg0~MmHJFE9DW0SKlRy?03NSuWGsv$h#?zB* zZGZ;N|LPNPYRO3~t~*sE=3A_uj?}~kLKG%Ae*h6TqC)t?BO_T&0tzb;Ol*GKzC|+; zZRx*u9za2`x5<)?i%=W_;qXs4GIXwE7q~PkU4I?7ci!|q-lq6kcsK&Zc#@;gQ#1MY z#(rIsD@D!?6Z08*2#5duvugqY(noHjY<~=??HIWM`iLS=gizFy83?zkCJ9366>cv1 zS1T;%qd~ak`$0p(VuREeah5X>VbfKnz%`i(p=|%geW(y&c}f6)BIR5fkIt9OM&w|f z>3%MU;<*(;1up&hV~LPA-2G@h7V zpoa+NiEy>NYEktjvL+q0Ah1}-9>a4eT{Giia3<0=9wG=E_Pe2W0cUBtIKsoytV6Mqk& zOfYImWJ%)(I1EsRw+|&0)QAcq`f?W9+yI~;ugeJl%EknNh$t7pU=!0B`jI^oQBa^C zNKMk{fDKBaTwn{sM0`ep!|X6$F%7|nY+Q~V@`b-eY*+qgjT$OqNG{|(tI;8&Z5apz zXEuM%1E5BN6pzewzZk6x*?KEF1b<#^-oca$iN5Y)G1+!D1!J4|5SSXgYh>$1SRn6! zV3-;#w!Qi6z73LEV1*Vy8!+T$ERzAK=Uv_8v+oB8%E{F+0V{+g4yh; zkr!ita2s?0lEWI&<1FU9ELOz}W@;qC0ugovAP^0v_FqtD!(}Z-2)9e8n}4d2h#zG! zr>G}kYRq)xiePvfff3oH3oZo^xct9@zAO$Ac);P06=(m?1Z)AD^2%MTE&iViz)xm$=_UKM#U=>L+SYX?3rXOJI zj-Wfk=ihkF=e$aLuFd(LfFW=hCg%JGi zr+4nOw6DQX?R8&W2Vece(2IvHw)gwJyO6=|J+uYmP+1b<6)8RT%zJC}n*4Eb0CO+$wpW#zw z@XOH4NK4=6=Hz#T_}}B+Xm!O~XYjnk&d$!eFhR&4H^<1xwhbrd=H{lRrrNEu(Tn+f0!c(c zRCr$P*JoE-IS>Zm0FDy}LQ6JCy1n;)U3;OIWdHxK*%{r7G0ujVeA=^zmvi6~4>KcK z67T+tdCObg(rh-?(`^2U(Q1AEe0ccRr(TuY>+9>o4}ZHmjn^1JfYA0#)3hwh^K83~ zxttco+1c^Vs@@kWY&2TjuuVlA3^d4KAc~6VnbxT2bUG)HoCsG3DKxPAe5>I zB_c8yw|`SiKR#7-H90vc7QNfsPgQzt+vA94P+}~X+TTkeUAE9k~o`nWgOFj2Vi&@hBzXo67ai!=o!W__C?X)B z07EIE%jNPrM3n?d;u0OCUAGHPXWWKWRGvdUE`RmoQIf#o3|0=2&cEO3aU5n6N&pE_ z*oE}nY1{NXZxg!pM!crZSkcxTfM)T<-ObHiBufy$N~i00yKXUpEx-rqJ%`%XtU$>v zW`_0z3G(RT=H}+&qJm@^FyHsP@mNW4U*a$~Dza@8mcoU<<)@0OK01ON#CI%?b%bO& z%YPYTem9R2#k4>|$lHXV-Eqgo{^OBGs0t2;s@5_Y5`|1>J_|HW1jze$2y`=<6(IRt zKb)%qcd#{REY686OM#>7x*tYV8z5x;8d4Hv?1KbUUQ!7hNsi*X_<{wpOafhZbe0;# z_&ubE+N=P`hX&F}z!fJsO#32}vs8B+-G2!vQD26@K}a+PLEQCmrYtW79L$~0=5iLI z6GoCiD@gerG|;G$G9M_N>Cm7omrfv++(|Q8AauKma5t(n0*dLFd=6caIW(o~fgnpO zNZA51R6?Q@3gQWajE~uwL!Z({Mdr(pp;AHMl;b!Yahxzh=XDh!M5#o|6qPDrCVyk3 zEoUUIK?GJm3PPt&T9S>5wuW#!%JavPU|93)^)sp=5+DIeWrcw%{YgaP}hw|AlWZ} z`ZZMzn9rEc9jQVj2>%wPeis6_nq~1@#D3uz$$fNEekoQ+%?JV!Xqn>$+3y!K3tRgM zsyC9R@q^9R0|9~*H!6+a+3Mq!-C3BciZ+khMDucfXon^I7D_w_)>k%vM1NS-Bf=d+ z6ZS6-|Cl>@CQw3aNvI`AeTXEz-V$LHCO(@))?UwSR%OCh>L#qGh*H7~bC>9K5e`@c!ZIYBG6Pd-^?0`jrFQ zOk2H=FxZL(RRDp)-rmvv{w~k{{?XCix6`YutF_1IDZpU4#ViqFPh#pML zhV>}8@tXfQ(1M=#_V)M`;pY($yBlR}k2M-QJWoY{^#9CT-tv}z0LYezJw=Fe5C8xG M07*qoM6N<$f|rCSjsO4v delta 2836 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 Av;Y7A diff --git a/public/images/emoji/apple/jordan.png b/public/images/emoji/apple/jordan.png index e89263bf39f1cfbf5fb51bafebcd7d18de72f3e5..39db04fe6be7b5f040a28700eccc80a4b3bb1183 100644 GIT binary patch delta 1257 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 diff --git a/public/images/emoji/apple/joy_cat.png b/public/images/emoji/apple/joy_cat.png index d171c97a49e21fbd938ad66780263dcf8c0b32f6..4dd1e340509d47a5fd8eb9b51bf353f007fb7ee8 100644 GIT binary patch delta 3235 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 literal 3782 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 delta 2952 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 literal 2511 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

    Zu{+kQSj)9hpTM{nSL>fDfZk9HL7b z$!i(+mmL1zL;lY-|Jy;&z-)_-*j;GQSdZXx`}F8IVV z^t~wYwIuGE6un&;z+WPMG!^~QJ^t4{|JF>)a}WOXVEo`k|LI2i*E#*{QT^UI_}xSK z&@=M0ALf$^{O3&k?pOWsTk4Yt^qvgvmMINaTM3H8eJ^UmEI!9)JJ;tm=gUrKC`Wg^O}>a-W}} zws0i1W);1+Pm+;K`1t$5zh;JnM$(YjjsO4vH*``?QvhOB{v!P!4E_~FbNztf1)cqR z#gQ`ILr#&tGxGhEHfs9k^m_fa-mduRs9w_O)VI{B$-b)o%D-lB000LYNkl? z>f%--`oD{MY*w$=&yK18OXbbd{5(mL^Ycq@e%=}wdreXl6T>hRMZQ`a_$fy@LsN|N zB)132=lazHMb9Tc0PXmxU&ORvyh`$%ac9}@<$nBuhA47q!8MRMO)AN zE9f~JjS+i%MS`;fbA$D!SZQA+JyEe#jDR&lNtjxbzi~0P)z>O%{Vc_tmoKkzauA%@ z^?zmgoPfE#=x2vN^RxEYGAFb;dD3{J4s6u0pED9kZe5?upUY+G)t1yO7-c@ zhw2I-Bu87a)_^Z45%rp(pf8f&4@v!CCB9eN)$b}^Q6&PAq|MNKza0;UZAqXG!OHqB z-hcOHE!k|sii|C_{`i!}^fNR1*?%X>ad{?eb0yv0{Qmx7-WLo8tX69P7>_L#P8noR zW^v${>_0I2C5q4d>vef16Hd829(Tm+jYN{k2qfuo+0e21Ud;;wmuBv31hY$2l(tAA zmXIf$0SPFulJLT~T@0jrda&itD+OIxhTBO#tV++v;zrffD_m%#*ihYbk>T^_52{nyUBM*Aa2pN>B9 z$tMzv0UuZx;rHPM3NqG^h32^ACm~0X5IuW$otHvxR4{K{36)BPx4L5ifD$qhYslZ? zAgZ@r$sIENwc-QM(Ln?g$bXtlrfleNA8)u1Gyw4n?)FfN<;Y@@E7@>lM|!RNF)?&d z!Gu+nN~Kh?`28WoK;vTt#ouD1q`g=yrn$w=XkMEA(Z{?;$O!S7DwTAa<7m3&hlGT{ zyB07}yS-R1rqgLtxH}%Cmofnw4%~6%i|C~5#UjbEkd_d57X^l4n16a5rHT)XuH+pS z3R-uA(@jc+P#K0ZcDtR7b^{yPZf6`2kkaWA&aErCgp$^h{5s1G2E)+M(25Ejh!YzS zVibg->Y$MDq{$OKrH5nG4L6S zIb%)?7Mm`aR1%R=Eq@!)NVLlax$Bu4rzX+Jlz;Vom8p`hm&+%75W^7o(TSs8cN7tiDwT( z+QmfHRN{(thZCe97ID&b7<8cN_5dZa7LXW_cnXQG;()uzH-GPJV(}43;)6ehtcB)^ zxM`f-I4}&)2#)o!!%edi$O{sO#~NS)!JxvQNZ=&E@o681)P^KT@b?K6N!ss*6c~T# z5S^grVQ65ya}N1|qFJa*2*+|PC>FmIS^{>^p~s#iC32ewBq)lvxxH`R1QoB_?LlW%)&rzoj%VaRdC+ZcV zDnxxnX?*|dJ=xIo{V%(*S{XbFps3#{Myu69rCDs8m>9)O7{!ynRI3xpej%|= zR~F=A77q@J6(YqTT+HIp_ZRW-)Hn=~z_^izoatlu|Ao&@a#z>hZMSg? zij43T-nMmH$H(#y7#O%NdjMK}`gC=5bHlhH_qyjMCN}5hrl#h^qJ=5A%xz9gOnJQq zqj6(%6$TC|9$I6u*sK`9eI1_@!$mPUX`X~7GccPc6$+&Y#H|Gp{@g5v8TS&k`TlW} dX5jv}`6pb!)n)Z_hqC|x002ovPDHLkV1njGtkeJi delta 3261 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 diff --git a/public/images/emoji/apple/hatching_chick.png b/public/images/emoji/apple/hatching_chick.png index 29b8a85f3b9b5258f848127f8e32b0771a02f0bd..696714f424394791e62bba08d868c6698e377c83 100644 GIT binary patch delta 2585 zcmV+!3g-348le=BBYy$TP)t-sM{rD%aZs(Ae*Drl{o_X9jtZ%FE9SC1ypvDRoj?BJ zLHyJ;m3C8?Z!(5_YkzK9?V}oyd}sXIK>g7+ig;zsw4e9FC+C<4-_^Uvu$|n*v)+OY zwUv5p#Fkb3$0hsw`1A7V`T6tr_wMTG-oL%EpPG%* z(8TTQ;@sKIvah4)<=VQptHZ*!(9FKJv!;}ce8<4C(Z#ZeXEC&>mBqHCyRMx3_1XOI zz3bAP@}?B{mwyQEmJR*aHvPB{{@gA4(Jue>X8E`s<%2I`*<{lXRg)F=Mt zKkSJD?~eoi${_vVIs2>^_rWIo>}vk_bpG5#^~x~)@OjI72k){U{`Z6b`CL6bG{1BO zO-)Jqpb6@Q0ssAo|K~RT;#0V;Qh$0#`>h7zeF3y$3V+bXQea?N?b=Y~fdT&LUz>|e z{Q2em{{Q;ILHq5eqD%$VlLz_Yg(@m2{r&rohIiYX9{=q={{5Q%`jOYw$;rpNrlOSO z;?@r9%knOHWTjb)OljsKCj}VuSRw=L9#lF9Sf`pKxzl=1w%)X`*%js}9 z_>T{~WX zY^SUS(6rG4Xjs}XxA+84yqm9-c+p}F2c?==fA;LA~iZ0a`h7EukbD7sh zJ8L&OB-N_N7_uzamxyxRHgzpbq0hrbornS@Pe>Y7J>D@4d0tsT_30nOL0u+z5r3@> zrA{P}Tu-OF4j@kG%@6o0K8rwIc>7(_aj`aF<`WwY>7&71)Ql0~&4h-yPM zxLnkxEK8}7e5vF?O0eE^;xkMvP2gJ*#8KN^fFwzlMd1V<)uw=vlxBrgkxJvBDsLS9 zM@r-f!(sRmL>p0-1ToE(1O#namMJNfW>ZlSZCWOdg*@ipoiaxT<5dw-Reu$+>!SOnlKUpHBYMaXduh`&j14)--GZhBf>rC`tvKX5|iUqp{|q z69!7zxxYEdG$Ya`PN!qpI*bTYfrTYWQUHS7K^+aEju$}!$%{Qgc}BFrz*!&;M_*Z^ zu$Lr}B&n(+O~d=ZW*1|ez<)B);|nTN3LW@=yzn>&0v1qU0TxsPlLbY$@$fZz90p64 zn_oGp9IPv3#$#G{9DE#ly&dt%2)Y0}27lZB&$*5ac~R2-xX7#X==e%(xFATM z`{Ta>4f2~jx`_|(q3^%_t{Sz6_T0^H0A2m^>C?=>h(G@3Gk-y!aVCFGzf7*b0;2pG zK^sRILefV%S`+cU1i5acI>wNj@o70(refTrJy3G$1-`YS6 z84{^)+ZH548SLHOUK$ssaQx}V$%L%Q_1MSNz`5@dkTb`CVmVt-_HCOabGga?^#cGM ziq6pN;`-yylYc+pa5|1pEBTj$8`IR?8z@o{a<%%)N7Hx0E=;%_$7sDF%T$%>5$`9q{me}k~-K57Guq29Pi^xIczWj zg_yJRk@rr00#e_3qjRRnLS6EjT?Pa}2$WT)1Ape+^OT(QRI=iEEl~9itW|gAlD2f4 zi2#BOAa!C|UZ51Er>iIdNuXeL`ZR}WehMQ|&dyt{br2|cv1ckOL9lMY0>)Ze9Un$$ zne}=dG?X{8^jvDO(FoQ=u>~znAW)bI8h3AU((|dMJ5Y%Q4IW~F4WST|I?wIY6BMk+ zL4Qe@-V2VD&1#D~qF}K`hXFQ#G>GY)$kL1DPI{o&O1MBMDYGcSc{#bb=#hmmDgeX? zGbdVBdR5t62^1`$?JA2xQI=kvnmZ~idaS`icoG68eXG}QRfP4R!jT5%KPTt3(oq2| v3e-_alU3<|rmC{0X~m+Z<>VLsKl~TfPZDhw@GWyu00000NkvXXu0mjfn?W0k delta 3397 zcmV-L4Z8B76vrBnBYy(`P)t-sM{rD;d0hJ8VW4tFnt5XEvOes*O2Cd!`Q&8v(_Ho5 zUBZ}Vqk1}wa6*Q1UCV|y;iEp)jx^MYGxNtwgLr86-e3FTVvluF;GaQwYg*o+Ir`aL z_R&?@)w=rOVfox%uyiY;jC7KMZ=;ZSn~HVCu$=hZUHH&f?SH#Q^~g?ra9`MtGS`SP zubqjun}d*nZf-wP^YilRzPz!tv8K4T zs`}<%`|4o*{{P;JGSq=C%gDRf*39?z@c8)i_}^O5(8clZ=>Ghs{r>#b)5-YSRojO# z>FD10;$Gg}()Z9$#lyFqnT`0?QufMA*o837%)s2)&wu^-pW>1<`Po|g=5OWW*x!#c z>8n4frkd7*FXQ6X^u9%phjO4_4V!H-_+WVGnJ8q{pDk=tDvNzl<4K$_~C29 zz_tADWbURs_0?DX@pqoVuBn`vm5Sz; zHtLu+=6{_z`ssW9@o)OwVeZUR^tVK(q?gCWy!`f-?#EBg2%HvIC9hJJ7V{Fsh}b-#TrDk>@R!%C`}g_d$W z`}N)3p*pd0C(p#P`|Wf5^na*iCXH=4ucMOu`G4mA)>X*AvBiTg;n~fys$heEQDI?P zQ&Ue#Nk+J@pZMvl&yO+i?A*9}EYzJl(8Ow!dQkc9!`s)#%z`e$xnF>1I-Zk*`|`E< z=$7~8in^?p@!65(yiD-HS<09VAEG zeSdjhGQ6K>?%>U&h*w?8lnDR;09SNUPE!CIy)Y5}AP4*|5h(oqLFYozx&HM+fL7p* ze$}7Ze*$x!My+@sWE?e2!bN)nb zUytIT);R_HA0YKd(RRf<=S`;PYa@PBw0Gje{n`tI0$X3Eh|NQ#%(`||ID*1zww#WTYuXZp?BGcbB-eQ1?Uw`l=b^0Goy-`I|L7l`oE-NdmRg^DRCFMUoJqUejA7vR9 zrA!^tF|Vi)fy8ijiF;C$FPG=%KWIDsy!Y|-tX9J!wQ$Oi!MwCN{O@SIt3jJ$%TsUO<&k|Qviihqw!%77tJx?u2zRTCL0zY69_g^trOoP?cOe3?M;~$;oBcx@wx6VJX(?~-AmO%=!Ip-mX&D-=oWt;S zc19;eA(I0KvrGmY3Q{<13Er`JLK|g7lEO56Q89*&RzuQVMBw7 z$$}ZbGk;lNG7sN29H`4yIkZCQ`#W1eN%ew{B@6aGZgGKewqQ63K>2 zy?0-I#k8TJ;a@ZVZSv0@UyR(qSO@xl|KIQa@$KKtOd3pt1^1y6GxIFGzY>a}RR;#@ zFnk$TsWv1V5{cUQpx}zBX~$3pX#eZ}QVSWIn}5yw-czvEc3(?}sfnndK%K|FO`*b; z8=YbQ`69-bapzVh6DA|!Q11bBW2n2n!?fdW%m`#K%h-7LfUT#!`@oQ?Nt3AHUfw-2 zo`H0m;Y)aF*Gdra_qp?+a2R$2hz(MCJ(RtOu0(I zTYt8pUgR*DcyEatsW2*qG?INkKkT?MypQtomwKP>Pse?u{ap}aXX{BHHto1P2pc5c z4UpvaRWXOhR5rq-DC4A#Av&Gh^0Hg7=ZkSC|BmhuB#~Qg{D)2=lgV1Cu@M$Z%$A@< zMx%~~OxoAkNw&AQ3yJC8V>}L8<;6ms?0@Mkb`*EYm_)U)peKXLngz!==Pqr zb}K}1eER=|Gj4Xr_z83EZK*L z)9LQ+lu^pYKAbvHad(H!*?SU>SLvz=*N?ADy|mIB6q!6g9v62l1CE^!IBuma8-FK! zWv^->Bp*~tOF<|UlBXw$LIk})r_;m3!_icBK7t6ATdC{UIuoFcTU|k7g&+yF!WPB` z+(&~IRK}KYppR?Is)=`$dVlN$$&H0eA@vk7`4Hu*iegx$f5WoU0Vz@hGF_3}~A}kg(al;BQu~O-UyUQlI7k^oH=7N(n z7AP3d3uC3jEY{-T2o{k50`c;IGQc=Uoi5z{v(6-t-XBs^9i1Fv{jdea4wSlixp|ag zKudU_F1fjwaZEi^zj4yrqd6PSq#kpWI)Ig%>k6AiAM|SRzyJtfxaRu##l|`~I5{~U z1!u)uo=TS0Bgx4LDCh-RE`R#4-+^2reguM)W5-g@MA!dC=WVxqE9#>U0p;iy2gDs?u1pNzjIg}H9c>jqb?|*Y(x@BQUfI`-x zLr2F4A)p}Uc-W>n?|%^4yy-Yl$coNE8j&1~9Nv$Z`2T~ypw00000NkvXXu0mjfkDmFV diff --git a/public/images/emoji/apple/head_bandage.png b/public/images/emoji/apple/head_bandage.png index 3e745bac06aa097d0e138df5db02fa512b4b7eff..e1c89b80fcfd5c274ab407722c6a11852e641e62 100644 GIT binary patch delta 1912 zcmV-;2Z#8Q9EJ~&BYyz-P)t-sM{rElge94nmz0#0$Y}(+hCa!HEY_JfqN1X#h+4>M z3Cn*Y$7>9oo0__PvoS|($dn~!H?s)Q_!dbN;^rom( z)uI3Z1|dmAK~#8N)YaE=+g1<;V3QmWq-B!Ug-FWiy|eaS)SI2;{U0W~=Lk!{lodIX zoBX(t2AcWi-^Bs+=|772>Hii%D4!KDXXUE!Z|jTIvwwE8bsqOvI<02AP!@ilsTP{8 zxOaX1J4gOu=le-*mjSuR}&2ieYl zEeY*lGZ|}|sv?69mlDo!i7c4z7fz#QO~xlqj$#gnKzh5A*r-?&4xxh~CCN%i;nvx7 zZ}ll!2=PKkCV`N2x~InJerm6UR4PPm(h!9bdw*Z7%E`$rRRGF3REL6OIvzl;QccJ^ z)nbJP%k{ymk5)Pz4QJ(t6LW>Q!ihBxN$(FQ@12_Y}<~4?qhG+Qiv_)hi%`}WojU1jL|F3WQ~onDlwkXWh*LEQr5xa;J&?1VFz zzyZqHx&Cmw9b#@k`bveWmlt=yXg@zQPBZ#q5BCVT-0AeG(@ zEQEEijf;%IFDw-Sg;@=Uqnn$`2Z+E8Bs4wks>-9OBNy#pBrN=%#2~k_InE#q?i!#!^Nq#;ZO&un z=+chuXomn`>9QYsAvg*#3QAtIlHl(n6HhhY_1)v=GX0Ci?_=-~KLf<1(SJyh4d0Ly zB{kqT1@HON-;LEl;+xF{jHywL|_NN0$M1PSp-20&)qV9oW9IU8t$NtB8d^x`Mx)L0goVB$GcuK1s zI~jJZqZ$W6a?}!ISBFbWp)r;7D2v9)Re~hc795k78PErgEz~GE*Ya6IA~EF$%A3I^ zOeQI2TWKkI*1K^f>RsEm$HQf3tBGC~dtuLm1qzP#hm3DQQSD z6f9^6y<$bzne$8`!39Z$ImQFUmPDASNrFobB$TRCw1UN9fN>F0z*LzEgt=5|1&S?b z@aXE8FqS&ksUjx|7;(73ASG=wFjpO!FNm|EN+Zh5!K=IpS4xqN%E!QZ+@G yCFBcpD}}HbCrJ{=WcbSM79#LPM%{#6uksg@)RV#01dz4>0000OU`;OwRt#{l$4Z{l(=v# zxoaqznwsyGHkX%|)|5oYe>IShkmasIn1Eu#ax0XSmdAoX>YF>ZkVxvKL8+sh$aXB? zl{t!wjoE=Qw2NTkm_DMKkk5TD;)XKgqeS7MM&_nPk!?-c+1cXa;`hW>-{0Tf-rn)B zLeJ07+uPgpw@3B8PV~7-<>lt)r9HyJ!`0Q*`rcRezfkzlSozXd$$2aM>R8C#Lu0i#@OufCm_|90|m^jGD$n>>E_|8-M*;wnTKjNS}%6~5C=;`jPK)JcO)YQ}V z#8d36K-ZEr`PW$Y$5zV9%HiSRqdQY1Y@*_^?0t%vt!-RE}IA)Qd8BM;Gbo>GsD^_QOun($e?ISLf&Fe@zOvywrUVh$K)_oHn4 z{lfj|?902_-=UbVcK`qifJsC_R9M5**LPIYSr!NI9Hk2`BG^V8b?lBadz_t}vXvG} zAP@+Igc^b&B=iI!fCPjTkicSy5(q_5K?FpxprEjT$N-AHcUQ+UmUU*QZoBXOeo3%R z+5h%Ja+0I@obSEw{T}&IDF0t&Wj@K)Va_}#hiQ)HX8)sN=IF5OkAGT8joJwnC0zZ7 z59duY|K*J1yiZoMzu3F?{P`WY&Y!RR*A?dv7BBoomX+=pRB^F%?qd6&hNgXTbmtd)JHI`91l4!Pz5I1LohML| zBxGRs?Yu-@RR_8n6$JckRlayMCC~>X8-7JFkiL=oYu4ZKSOl} zvIzVI{{8}i078L8b_bcHC5wMVGXL->_0YK+56_$t2+GP_T)aHolarHOUE#^y-NVDn ztE|jl=b08shfFey6=rYFbMoq=F#6Dt#8c;w9S;w8cX!Mn2qYI5mok6oHF*pR2?(6HDo{lU$C&&aF0(yf;VvB{ZI8HN4#1P2j zc%i;rT|ud?h6iC0q0p4l6c9-&oBPVnoNZAegFti`5E?Xgl2MxK>NQZ+WGo^StR0?G zo=i65rHj~pDFiBxo7k8;jmF2FiLxjWLs&Zf=EIvebuP!z>YacBN;0H8B^A$g zny_RLC@(IrWY1qw?Xi#*D;4Cfgf7a;yiR!TI(e?^$-R5`dcVJQ<;s;^L|wgl^8WSr zCye{ITT6a$-h&8fm?BMA=H)>w7#ehUcYFKsJC85zJ8rnK?cJy2m&OMN2M?j5 z9$oT#ThplD`}E`c&ayaqWD>f{@L=Zkd7DLK`2i*FgMPPuWdrLue9mF<54Y8%?)FBM+U(uPmDUc#MGPl zs_TzV!Nn1ohf52CnVOM()i8i&ZxpS-k0ZFVSs!&gk z^x1{m7oN3-=cL9nXu{nGXBoFOTpn>GM4XGR z>D}#V|Gst_K5DA2VAjakXn!jdi`ANtpHq`s$)NFfA6#W_yv}6!Ac~aW5usVPRXgA7 z>l=MwKv?*9q`9xJp+7{$P3YXXF?xOK=1Pt?B>J7BaTggO9lp?feed*iH0uXCT7p>< z>Y~0wtL+=>RCQu!{pLy^P9s2Xze}DVCP;^8wIJ*;myjUl2~cLy}NxeWs& zDk2X+9B(Ruh-I^U51);OVW0Tw*2;^jiw*i*_)tSXD` zK^jAlzV{y?DiuOhDixR2f+77=ZZz2$KzzT53MPgu$wYBV`j7s0T^G7o83|+| zDkFp2b>Tv5P)<%wO=^660R+nC`>8Y6*${`Vwf$DHRO^|v6M`~~5^^$v zg1B&rAqOA^2Raj`z^vb~G8~Xn=ld1%7-}OaC8F-a^Ya4%GFA{ULHYUN$Vo(jd}!X; z&{@%T=5*uNkdK+`ig=;y>_!@v6052pQ+Rk_U|^8J0wpjoJUko)N{mMi#~T8n&I;!n z&+K=Y>qKflAr&ArrbL5;C{w|E$Wv97n1}|%!GU;16|pvs#?ycPhS-V-6e$Wx1#T!4 zP&whaNCPRDF*+!asGd2?^cT{}hFOOqv9n0Y4TUPtF9kV`Dof5+*B!+=P z7Q#>&(iFg)Y1n}!gFw@*C*FL_WX9GO$^By3RNNf{L&yRk-scz;tpHRq4meb*Ff=71 zvz}>Z`{L~fiWI>!NE`-96&!nhHy182tyZtO_WYR9$wrP`R2N$~^QCY6GYbhxh$Pe= z(chure~$LFT)y1WGu-=i^FXeg1N$&4D~pXBXpA}4>E-(~8<@994Vn1VEJTskp}|Yr zh`KcRr045_Yy6#2Sya-gXKtAM%D2(UQ<(L&MMjCFUO*FlgqYITXv6A!|#@G#gS%35^j#DjdsH@D6x3 zpB>}J0|yOgxs~-R5XI7pltdA76bdM?u$Dy_ps}7C_K43LX^3^KDN+qvX$i<90XZWCe2y|q3UWyK*_;MN%6x4FL-ij zN|cG>Y?$g`1@)%8b|hJvO`f`e8C$o#LWC@}95fzJ4v0DeF%@+XXVI)l6!@=i2!!W^ zLOD*io5GB(-(FFX`QKjbUI#%K2mmla8m^v@@RLaBVgifr!|KLExOD46x^{=j=k%_P zMi;=vOFQ!Qj$BeW!ls*#iIBT{Xvzk=GT|fT+Hba(pg3n}hEdOqg>cTzdLgD)t%zXD z3FR?W<-IinVOlSGp*4tu?eQVxKo{op75#x^KvmdMW~O zYOhVFathT{ha#ry0(MmOk(AGhG5YEeF@=E8vaHCT22o@MjGuhLYp*8Rz}{TS;2-9C YPeno+@+IICw*UYD07*qoM6N<$g1&bzTL1t6 diff --git a/public/images/emoji/apple/headphones.png b/public/images/emoji/apple/headphones.png index fb9dc32ed92a8af677c9c002b93b02988ef5f99b..32c8c90ee2087d085e50c0fea2d7000b7f2457ce 100644 GIT binary patch delta 2283 zcmV%|JjwaB*=P8yglE7jtuT zO-)Uak&#zcR}&KxD=aJ#5fOuggmZIqva_^jXlR<9pC~FUEq^U86&4pSF)|w*9X>xl zBO@d^IXWO9Aw)z)2nh*GOH3vwC^9uS5D^h)X=;m(kEN)p$ji&y;NbA{@^yvhBLDyZ zCv;LyQvm)G{X`gP{samtP&&U|k7SqDB7f~X;D^qx$kdp-?dsjJq@L~mgX|kS000Nd zNklu3= zrcSq1r}n?p>Rk?BUl)tl>F~1E{VC*f`f`7FB_pMrYk75dzZhPA7uIbJ7Zb}#2!s$y zDWL>J6OgIDo%a3>)g8Wget)EVWDz}ET>c%?xqP-nRTR!S zC8aP?ykha$qV=~7PiLXRAVVo*1bmE9DiC^L@xUj;Kj!`NHkt#55@iHqEbYZWLX@yQ z%09RLke!(d2TV|+WI%5N635>Z`YPkQ{VG$PsTX7)Q!t2O;c+lHpSRoX`TTrv^{5y+ z6DAPM7k>@EhM)VHYJnLAOiAJQ^Jed~oV%@Fdwx&R7&8GIQk4xqG4$NOgY%S1Ns9}%SpMbd{n4ZWa%!Jzng?+;Vk0bAz; z^BxG;pY+~xdJ{wTDHeZlb8`8RiI~uwT!F-p4{RR-7 z3U*pqy3AAn&hlL> z2Y>b24^+QSOvu}ANo`vNft}TUq&|4yznUfJT#Lj;2>4lWOl9pdMR%NvhqIr8&K?Aj zF9_;gamucLe74uG1=07Iq^1Q&Fl9fEO;CN;LXeJBv}-@sTu^?6Rnpd)yqz<+#rz5I z?vB$pR3AW|gd?caYrou1CSNnN0)!|Rpo{4D6+M7FfW}X(D6$fRHz5;vO8t+8 zb>jp#s=PD-i5G=*qZ7!=Ku0cRd0`k}0wI(D$lZLXzcc0xC7i=^JlcJpM|V9|RFuToQV@&KWH+(nW2p#Yps9^2xio&CYA2|+C?JWf(I}LHu2FN?wTF^R3V$uQUTqpy zRUjR}<;{o41cis*duSk5n@z#NL(&>g+h26kfn0FZDiIm$1LY@QM;pr z%j9%sv(0Wpxjulj5aP|eU4J|z!Gc5(x>Ch%x6XWKobZIkdF?&~Y8imMZ|rtnX^=!2 z5!h4x_sE1|w2EAc^=`MytT#^iKw`Ugt^%pS%guM`oBk}42yd2SVpql zZF4WJaNL5IW~~h%NnFglEVjFbz=f-^eM}@kY^OP6M2Kn>sr+uYDSxDv%t=eb<3;U^ zP%gEj;K;)~XvHIZIG~uI>2%(WnFvWm6rdtoVPw$Cxy)(~8*2RutvchqmAEn(r5rw# zYn2E)oxr1HOrji~p@P84w^UQdGU$5VfukP~UL*kNqS08fKxipWk`ZZqx^@`GXeA*V zo3({j%5j)FJp4Ot2!F~(C%xrzxn6P+NB|K+SrX}{bDI2QC?TPI%wWu%st`o7-e)s3 zerBcC(orjU$k*$Pg@cGl?6^<%6JseXCWFts~(?piRW6U3;$b}(@*|7_8%0>!^1XTf=mDa002ovPDHLk FV1iExJlp^P literal 4054 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 diff --git a/public/images/emoji/apple/hear_no_evil.png b/public/images/emoji/apple/hear_no_evil.png index e29c3767c239cd4c8710d182e3a238104a3f6d37..7478efc5ba0a839fb3260baacd10a99ee266834a 100644 GIT binary patch delta 2526 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 literal 4127 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 diff --git a/public/images/emoji/apple/hear_with_hearing_aid.png b/public/images/emoji/apple/hear_with_hearing_aid.png index 17773b2f4eb34cb24764b00906a9580b1e1a263f..3936681b6f656abd88a0b178c8359a01130d2be1 100644 GIT binary patch delta 3317 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 delta 1948 zcmV;N2V?m78L1DDBYyz)P)t-sM{rDjfrf*FgK1}GZCFi{Wh(KvC6Q}CZEI;sL_x4~ z49<}i#)%T7Xa~2AM`B`Q^3QeDnjy=mXk1`qsHv&v&YxpwZH9$}XJ~5Cw1mEZ5P*Py zxqJ_Xg&d|}<)z919-QCTxrlXx&T3TOUU;ocJ_J6%7?64sG#W4HIJO9x> z|Hvk^O~sW%jAOir&<< zpw+g?r@P%G6jS*C00uirL_t(|UY*y8avDhz24DeA0b)P`4Z4sldsgc@`@XnOormq& z_kWqqtZKOxZXr+4Pgt@;5nue7RgJ~ot~9c5Ez7FuSbtW_{GhQ{BARJf_1fw2amD2L z`1It&GCwHgSb$V2*Vk89|G`{c{drw=szb1_)jwyna`ox#=`qXU;n})5nmN@<4XJg^PBn18T;2%J11E^XXtKDyyrZks5b;N9F^sJlTYj=-7tA?Jh;&co23EU;8yhHIkaoa`FSfeT#uT~kyEYhUiFu=8z`j01q>DWgykU|CY*$F3Y9k9(P-2h zjem!gQ?sbzioWzWP$-V{R2%@8xfo5M#Djpsy&%eSC->f|T@D7sh9mPi1H;C6 z`eoZlG43zYAnHK z`tk4-rxAB^L_!by@tAUUJ|7NJJH%~z|#AA_gFrUo%g9+$(h<&E%#P_YqbtAD4b z!NXwXQu=EnGz9?&P7NVLIS21IV)m-P#6`s*itrZAUVoEaqvCAm zA!jn3bdO$|{r+8dK2OA(PL$(hncLrVk)_P*33OZ(tpivlbc8^G|p13STMxSN*8{}Wsp8UXHW`|L?$b=xg1s@ z!{JHJ?6?6?DF6wbIYJa5T#|r7j70k_t5&O9xaHjr{_r9UiI~RoZ}<0e94(;CG-6PQ z@IS1d^}+c_>hw5wsa$@W&*yk*fi#eem4}4@&?y4N2aYojAn5ZvPk&_wsaPr(3gJk* zQheZuO_#8w=lfo)0>KnOF&5%c=VPGwz|n94JL<(q2!(@53Wd%Kg+88*2+t*Hn#6Eg zl6e5ZV4_qZb8Y~6R7(7%Sh}8quM!3;Rmd!fxHeV5{QdV-QQ!ips9>Z_A#(wk@DwN* zt?A#>@D4$tQrmWo^MCmGiYd=_iGQ(I8iIL%ffy^$P`d+8ImlK4_A$|osLgQI<)LW~ znMQ*7`+Fs!PHI+^H_}kMUeejy=LkK%f$-4yMWZCtI@h~~n7K40Sg+Ko&AY8l)f6jX zvdLVgpZl`A_RO`$m_mBhkdhbM75W142=kU2F@nC(%jOz?RvU&#D#3lhE~nTY(kFFhOApZ0AJVhct%Jg)yLoe76d%*8N5 zc$5!TemG9Da319kM|r6oa+5G@@8?c=seaz>`H)`wysqhgD>WMR&i=*4ey83jIHjbW i|0qv2^6$UP{}loI8^s$$KP1Kg0000T7nlx^BYy!VP)t-sM{rCLB1RM@O$;7F1Qq91kO&(;V|A7V7d(f4mUMNAYI&ExU~PjI9Sa{rQe%R>qNvKdyTfU8 zq^+)>I!49P&_PyzBuI||Bx)c;iwG=o6*++mFLoL}hYd4*0)HT4BSC&sX_({{F#Z4j zHco^$RFVV~VDa$otGCR@(A@g>_1W9s@1m#SA8{s2lI$fr4m^tMI!)LQD)_?3qN%&xTV>$J z%jfv`#xFechJTI9N?C@Qy#f|Q5i4INS(^eJQE!dB{NCZwMN6DEQnYh)F+gp}3?`Tc z50ncXw|lQA0000WbW%=J06iaJuKptk458uv@%`v~&!I@Cckr#qxAKW#uaL9wdPYk} z000GnNklzx4X#RKO=T`kB&}Gjz4`$CIv_`nLIl_Ioka#V{iBC z#qpne(j@jUON@H}Ah{@&dA{(V!! z7|e2Ve1Dd(29y3knktY+10xtJL(|!87KdbM3ef%79QyY7aQ@@sWDC|8gARMUM_<2Q ze1m1gg|e>Mg`(*Q3?LXmFbqXyGO8e}B#v`$`LB)k<VAx$x zFWtJ0Rtrr=u+$198>S|6t2aB{tJ%f=sDM(1SKIEwv5)OLFWsuML?Z~MC?!E*mw%(> zn*>a&|2`_?lC#rsO3IM5Zmem#c>3~RBBTQYzePZ~ks7BL9IeZzR-)}g)Q z2RQwE+bYRwJwq=c0!m;^3oOUDC9v=r2^(>}UiRg)HY(P@u%H==ihv z28hGq2M7wDffj@!-hlA8AU2>F208x*q96@`HZ*DwzYFQX2pbwLAUuS~S0Iom@D$0d zQ@0B9LJFZeDQCGi8qxezQGe4?S}{tf(#u9HCFgs2pZs+rwmvm=!*omsqZT(Z_`+8H z9iz*SR4!YZO11Yl)kNK;sD~{uCI0(K0 z0x5j_eM_jzp34%8Mj!-69*k%-dUJCb=H`Zj_g-m~A>~A!p%n!hL6$}oa&UTjm`ZI! zQmMnk(~n?9qbtxQ^nVN*p-L1@!6GQ02?;Pj*hy_~ZAI2TNyj2vshxx9&H_3_Euj{& zXg^3koaA6_sA5D3J)1_+RHe?|IMPE<5<+LW)s;00000NkvXXt^-0~g1+KUF8}}l literal 3025 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 B=%D}r diff --git a/public/images/emoji/apple/heart.png b/public/images/emoji/apple/heart.png index 8d5ece9a62d410063bc26fa0c641cae3edb8dd7a..74084f9d3af0c27838197a19e57d718c2698b65f 100644 GIT binary patch delta 1223 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 delta 2527 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 diff --git a/public/images/emoji/apple/heart_exclamation.png b/public/images/emoji/apple/heart_exclamation.png index b50e04e5a0e1ed1b4267259468e3f34b2957426e..bbea27f606c6258f0f85f324add68d4ed6a60edc 100644 GIT binary patch delta 940 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 N002ovPDHLkV1oA4uB-q6 diff --git a/public/images/emoji/apple/heart_eyes.png b/public/images/emoji/apple/heart_eyes.png index b5ac74b3c803dc626c13b3e1d1c19b18747a39c1..1ca75b3906dcc1a6128d7126e61d77e98adda93c 100644 GIT binary patch delta 2260 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 diff --git a/public/images/emoji/apple/heart_eyes_cat.png b/public/images/emoji/apple/heart_eyes_cat.png index fe6feb17b4880955cdaa782bb8b832735957905f..4cdf862cc066aac6bcefa6fac7432837ecf0f166 100644 GIT binary patch delta 2768 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 N002ovPDHLkV1kt_>9+s? diff --git a/public/images/emoji/apple/heartbeat.png b/public/images/emoji/apple/heartbeat.png index 2394dccaf47b201ad457d5ce91e65ebf8fd418a1..9716dbae23f33a2af7d91a3c5bfbf9c92e1df43e 100644 GIT binary patch delta 1242 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 diff --git a/public/images/emoji/apple/heartpulse.png b/public/images/emoji/apple/heartpulse.png index 753f3af77af56d5c98a464a96102dbbf56197529..298a7a3e591577eb65a5ff7acd47a2f494349cbf 100644 GIT binary patch delta 1639 zcmV-t2AKKv8}|&5BYyz8P)t-sM{rEC8CummkIXE9vl?8r8(!;kwb(e0`nuoCEPv%s zq41BzvKd%t~<(KLv}CwJ|AyX97;-bI550Dk}lKS@MERCr$G){AnZHWUWn4s@{*<5&nV#o!Jp4Dn@0fbY5N`@dHI zqe~Rq>ApaJ$4*8Ze>z8ull<|&$vj)calFXp^WRrc$?ufd55o{oyez(@P(cN%EdDPl zqZ)r=LWPe^7*1?}eM`+z1ck8xVT=*Ac&M-ir~pM3kAIG0qS@15$kQ|mh>C9=FhMlc z6|+cD@iz__t(Z#M)HOf%;RLjg%@e2xN$oa!y2%tx;TW8Qjcl|xBk5+kMd*_=y-P%r zaUM59l$2S8%E+1CXEu$@Iia7&0`yE$=(~GI2Ncb0cFhaY>}Vl?v_JvP1;AX}?LN^+ z4d)v2nSW)P*5jT^+eAw8=b7GUhifJ+C|%Ed)skz7LJWj7p`X~hcdHjX3mZ#!#*=~YM z%{|26Y`B-?I@`LIQr7jh$cqFMVCE{%3%lHDE2ox_dx#pMHu4V2&>s%{Fn|&`CTvlF zp?}r4!yqLn3bh32el%*oK(GqtVNe{ToGXQC#;UgOE2X%$CkoVEwNi@ z!+9cvDAstx`CVr`y$y9&d0y4k!{PXDm-mC*7Kob7-L*_XjfS>zxQs66kD;#8q^e0D z$M;c7mqAvAC=$*$8gid~f+`_!KG*Z89)Bw1@i5d$VpjEq5xL45yDEqQa-UfZbpnGO z&qoM&;s@l^%k^3wutqC3M+_%K2Sv`c+1J=mA>`^?w1WfMP6iGb%}xKi0o{WO$i8-y;?)(f@gogD+Q{#On-eQ z1Tiz2n{86^v|7vF0`ySXUq1HqT`d_9!O>N?{bn*Zn?GqwFR>5+tL$~)nHbMP=H}bk zAhjhY$aDh0<^$0fH2u_2;_>G0ujm3$Se72n$SID|lna#rN;#jX51PyThlV^kpvob{ zSm>784>I+53&%HxYw2%DQeG|LkbkR@K3zc9p-y=j-Zexmh13%NDf_E?hq2zYchg@l zYmb-T{1=h^`NRLGEPwuz*DLkl+9Bu7tT=a&oRdSV}Rao{OP+q#6=ROk2s4k5v*mFnv8?kel?t04J- luk6m8`kKtC4#W9(`2mheZZ6*4gQ@@k002ovPDHLkV1mCWE-e56 delta 3572 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 B>tz4{ diff --git a/public/images/emoji/apple/heavy_dollar_sign.png b/public/images/emoji/apple/heavy_dollar_sign.png index 736ddc678a94b65c70859e51c9328051f0f2a7dc..c2675cd04e7b8b95d3b86b6fde8439d48f924e9a 100644 GIT binary patch delta 654 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 N002ovPDHLkV1oA4uB-q6 diff --git a/public/images/emoji/apple/heavy_heart_exclamation_mark_ornament.png b/public/images/emoji/apple/heavy_heart_exclamation_mark_ornament.png index b50e04e5a0e1ed1b4267259468e3f34b2957426e..bbea27f606c6258f0f85f324add68d4ed6a60edc 100644 GIT binary patch delta 940 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 N002ovPDHLkV1oA4uB-q6 diff --git a/public/images/emoji/apple/heavy_minus_sign.png b/public/images/emoji/apple/heavy_minus_sign.png index 660ca6e909893ade906b26e570c74730f27631c7..8705fb4bc4435bd14f4d8b4bbd5c5dc0cb4b01f9 100644 GIT binary patch delta 155 zcmZo+TFp2?qMn7Bfq`N9;dLcIN+Q4~#MQmP$HBp&zP{eg%`FTJfDBhxSDw?8mjTtV zmjw9*GqAIN`gr#2&z09qfkM`vE{-7;ac@s;6l4$(a6OpZHiNH6Y|8?MyBYCrUz)j7 z@*kUuGjN1znLkxrJAK<1)rps;#C64HJ!52G7g=<(FS=rdMLN(N22WQ%mvv4FO#shD BHvj+t delta 244 zcmZ3@*upeHqMn19fq@~(*trx)`33ldxB_Vh2Zx4+hOn?OH#av3>FMd2o15$I?(X8^ z5*iu`6b}gr0g~b2;XrOeLIO~kzrVk$tE;oKGf)FRnDaFlh_E^~GtQoK`LDiL z@0VHcxjN@E_x#pmU=Y~E;^-0^dtdr gEEj8mUOK@1v&s1Qva_LmK*Je4UHx3vIVCg!0DR|IfdBvi diff --git a/public/images/emoji/apple/heavy_multiplication_x.png b/public/images/emoji/apple/heavy_multiplication_x.png index 5cdff8b821fd311cb869ae48e53cd94c0db125b6..72ce6d256c0b564467d2fee4a3dcfb8a6483021c 100644 GIT binary patch delta 420 zcmV;V0bBm=2(kl^7=Hu<0001|!>)7y001OVOjJcja7=f1cSc4=Mn*1Zi$@Qu99sf8BuYWMdv@7yR-IRv%s z$_gl>#$G@vm48D}YCupxEea^7fN~0`O#!v30L9Ma>C^IhiMt}=jyO@GIg1Z12rA!* z#ufyXZ`9t3%jVj1XtT^IE_;!0#btBtIb@bn{I&Q8DSle08mU(SLFqC`??6z}t%dG^ zpnfbi1A@8%fpW+xph!6c1q9^~6cEiEf&wDDn;@t!BOUsP literal 1134 zcmX9-c~BE~6y6X8CfqiZKu1Jnisdd;M=5a-0wfU90EyvRQA!D|31o$kM8<(~N+Pxd zEXNE-6$Ap4R>7o%qiPwU6l)cnq0|P<*p7%8G?7GVpig)^``d5d`;NDNYz>nU>p<`z zAPC|>qf(OKNqu+Q;^E8+jS?aVE`&*EMZ@dn=4Me*kytE_iHQ-3M6t240MgUbDHIBu z%~mKBrKP1D4hJ|u-X4L3N~LCGWWcnbpa3Mmq|s>50SpCGl}eS8k^)ok0X{TAo0^)6 zqA1|Bw6u4;t>SXIg@uJI77GaN?d@A6bgmg zp96g`1{K6XdfA4vD{OPJFo}_j;PQBRe4fd~v$nRf@NoP!t2F~&YQftW4X-RV=1M-^ zWL|q^Hf>ZIm#U01+qDhLI_9+xZ{)(2BVDh~F|WmK?2sB|)l$s#)TYYpNWcVk1cAM) zD+6QTnO$`VVkM(dj_E)-@KRes2c z+zyj{H$74pqg-eT)m1e0KBge|5~n&Z$VVP^GvtPGkGr#pk&lFVA$D=g(h2X6gmJ@t zl0ZfApyt4GB=s*u?MLEArnr6eki1@WH^3C$&#}=wzn{@&=>0EywE9ox*&hyb{?R_W zeobqv_nU9xHXNZpNximAmn->tYN5pIXfr9eb>weG z5~I}TyJKUyp*M+~7TbfD4zEt;pzoxYvEc;eRbII0W78c8?iCo1}U3BTn$ne_{+NIJYd9oUWaK0K%3 zgvlXieWLHhKqe=#(@9hV?r$}#sCm`dMp2HYE;ff9ZL_-C|5KpbPE_n&#?0PPuIcGu zg!tZkZzj(6(jY0AZBG*f&2^0ic=Q`aQQbFcKg*%6QDNrTndlEV(<|<3&Dn-QOkIOo z{*{jHp8auVCaJY={!HzS^33zHjaf{r(4%@GySmrVxqr`8V>E9eK454fulF=?i54rw6=(xNdJ>>YnekY}%887x!qMb>Bk$oc@4c0HH-QD9Xr_W&Z;Q CQ~TNg diff --git a/public/images/emoji/apple/heavy_plus_sign.png b/public/images/emoji/apple/heavy_plus_sign.png index c8ec6d3a3f0fc4ca99280f7438419a1c5696a3c7..9e5b43c78a93e6b00578f0a947439f4768e23230 100644 GIT binary patch delta 198 zcmcc0a*c6nkDHrYaBy&Pa&l*9CyM1`!bvk&%&|ot-Hu zDL{d&tgNuGu;k=qcXxLn7fAa1`$JT^y1I6EcgMuUq^70<*+4-rFRy@r0B2|C^z?LJ zUtfq8pde5xJUkpo0;PZ?P)%@fFig41E6aku?kdWZw;sRs<9p>lf2XtyqP7cuI%*;$6BRe}As0?TbPz}&V zpe~@4r>CcbgTs_NKA}Lbx|Rg_1vC5#`SmL#64Reh+clz|-0N>xg z0$eYg^F8Illk?kM#5U&#iN=*KcM7*?1+K*>Yz7 pd&UL*=hsiTeEz+Bakb+Gw!b^&G+u`k9S8c6!PC{xWt~$(695<-^wIzT diff --git a/public/images/emoji/apple/hedgehog.png b/public/images/emoji/apple/hedgehog.png index 85db3f703a75ffaabe47af17ab7f7c6fa3fb2578..12858bda37db6bbae49ea984754b28fbb6fec7e9 100644 GIT binary patch delta 2514 zcmV;@2`%=)8`~3*BYy!|P)t-sM{rD$Q9+(yPQtRB(Z;j4n0}mBM!%Yd*TS;b$+@Y3 zX1Jw}uWMSNWmD6{vfjj_(#5pW#Ivh>VX%s4$hoG^qllVhRNTzGrC(65YFf>|t-Y(3 zqhnB_bzQlli?pDM%)hL$gJzI;W1Lk-)5WuXWl*k{e#N$Jxu8?H9ka%%eLbRBD z|K!zUL@l^{Yo%UI_}tAm9}cXUg`kaiRWlucP(30P3vpON77hwVCJ{Uv2Ua*DX-qa- zJtuu)OK?>`nSyI<;Jb9m3eA6BAIepkZ(+}A_o|_%ICdOp z(uSKRDc)Ybd-r7!GuaL^mEr$~9l5x0H|^Q|*vGacOGm$V=9!rz-T1%gyT0qYzU#Y2 zM+e*C|9^#1Z`AAUPGht^+~~}gFkpVW+Ktgpr_ouzH-B$ta%N$EzB4)5_~vvP^|{G* zr@B0|UR`KbtIdA1y1ss|J^YOcHaeZTndMG3>4TD@&!ZwQs{Mt@d-KCz&w^zqt7|i| z*|&r=j6n1iNn}TyoEp+qK&=Ht!A z@M!(II?p#cGcz-fk|qyX7MKM}Oe_r?W*(Kq9ev7(h^^c;x$8t+xlHyW z;(sHWaIMyA|K3k%Kv3ADjIq)bYP@{w=|Gt+$K zUmI$;Gu)nR-&<(jf1IMIY7l9p)WyhSMvw}}v@MMTZ4;9t+o#M!K2io}LA2cX=X@IL ztINMG$UIePA4jLIC8N-`T@hu11eoC%Yk%L4J>uIoW;~L)!kYN5voZTmg`1zORhy1c z4Wp)GN^LkXb*N@Kl99$Z_K_VV5yC9AY}+Q>6v`q*dkBg2erxoLp{`XovSz@mmgone zNHa{_$YM$01lSi?fKw*5F^wFA12ZCV9D9^ou9;}KzC8EIp4GKH(m4-OmvUuXrhiB! zB=Q}CeVZkWnx5?;D-m`aV?O}1u%|5%z}bKhD_ENQ7}IR?J}neA5k-mym8X?6gZLV| zo|7TUFd>xKRGQi&$hLvzJ5dydf|coOQ_g<2=#M-wb0INjj^V$0^=gE`x(=cSl+E^( zjEJTv4*NwAW11M$_YuZrDYD2=)_=y>C(zK7G~map2fsBwmH!u!h{!mVGI8Crv$Lm{o@LnxBWe*a!^YafFcEHy zMVgyXH*Lqr;z<(fn8~%x&l6W)>z|(XUiW%A@&QyibE&7w#5^LXOPq*ds(%PB^Fi9S zRVsyVg-%w;&|`A?i&knid%K|5@7U$p*=2=>WxuJ+@xWb=sldY;L1Kwi7=;S?!muz= z2txdJ0n8k$>ogljE}h0h`V zygzZgzrSCic6TljV?MUsEKxC1Mrg-DnmZ6c;0l=#YzY@TX@H_U5@uof_vb%FH1|Uu zM0rU%IPP^Fm1PdLi9jZ+r!j6Od(1-{!Q-8^EY%?QaF(MvfX|7=bu43O{zmLJx{_?~>eS30pvVX8&QU)$f zygs_Hl%Nb2CED|e>jpuC3AhM6Ih(V(wlny40}^|$znpG*J9+K7Vn1asr5xH|OUMk3nT) z?smB{rOX2222=&Ub~SSbr3`$}$w}E9Oy!$&h})s@WN7fboqcw*)U$_M=X)g$5T(l9 zi!K*V7=|WSp?`xs>VyF;A4r*W70k%na>Wl(HzS_D#B(XRk{j~be4Ep0u!IpDm<9Kz?t(Jq*^+r4m{ zEThCs6H|zQIpC3IjQTpIkr8IeqtAmjh-qTQW=0KEgS?(^ptrkSum>60noT&vm2$n&iSaM$zgZD4*7{H;_*E-s$F zdiDFG-@b-3bhlEeERNL{f7%`&-+J&drtOiD?SJj1sXv}Rt=#>(_v6KpO6BfQ8QJ*W z-kqshZMxLbIOtaW#t?)BSFhFB?BWQhRl3#Md-?LtN9%6w?d{!$nHar0vVD8#E7IC7 zIkUi-zH=KuO9T4i;;r$$mp@L`XK&qtgdwo&)Y=C9vY1{y1mhDrhF cTl8K305d>?X=X>}p8x;=07*qoM6N<$f(GC7p#T5? delta 3520 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 KMNUMnLSTZk6A2gq diff --git a/public/images/emoji/apple/helmet_with_cross.png b/public/images/emoji/apple/helmet_with_cross.png index d02b442e0002264fc542abcd24764d51a034ddd4..97c6575f24cc0f6d9c50471687c7091cc5865d85 100644 GIT binary patch delta 2198 zcmV;H2x<538KDu7BYy#gP)t-sM{rC0^Cmogqz$8c_zPEDdlp%!h`{IySK`DsT`Etz25BVqiZf8$l-;t{fS<9T|-l68bDBl@}EJ zGcKML5~LUu^eQC89vRUh9a{(n*drf)5f0@jBajdc;3OaXJU3G9~`qRD0UbY^GQYgM?!H73X3c% z&{|h)3kmsQU4{}5{{H^&w6gs6_WkPW-*s|_I5+*t$bX_+TJ?&C`F(kJ4GQeY$M;Jt z)c^nhICN4@Qvmz@NDuvT1{^f}{{2QM{{HZi{eJ)!4sAzKO(fItCtzO=mu;<*g z#_`d<*5jtx%=+)N)ATA`4FCWJl1W5CRCr$0(%EX;Koo%Cf(3SvunmEjI7uBDYq&bMW*G}O{P zZstBg4}8OAeYluCns z$N+khT5p_Pp?w2M2h!oVRJZ4{D}1?+nKc?&3?Ln97d9XK4ML0w#v%cutaZ5vNr-!{ zr}LY1<0aUtZEtVSQ|So7BEAv2MhK)doqx~g`ql<$XN(XyT!=p*6cOsM4qgK~1oIOigY@6R{%Pyz@jMl4T4-`7XldCVYzka2&7;V9Y53SyR52Iy?<3TQP2 z5w?O(F&ykRdz%=n!vP8bO3MJ%w6#B*0fc{s&;;ssrw<5qyWPnos8#_gl|TZ>lYh|K zzwJNHej*fdUP1_*)9wla397z=&h}qA`8^2@J&T2*{4!+K03hfE6a>`}q0tkx_wp(g zYP02RJS=+_Km&lnb!a*b0P6GygFzpmGC;M$>n&O?6*TIrFZzH74yEvwt?uA%W(UOLCE9d1Of*jjSIg$fq1iZ>1$^2GpVL zY3EPh@0(F9TkO}yCPeem)4Ye|z*qfEn(3x#xIc1SKy_Vzt5dAnyuNP!rLO<}1!l9^ ztiGhXdItxPGaC7T)J<=S0KNEur4je$oBl&(V{||zMfG}As7cEpr1X+jA58HM!3VGfD3N5s@5Tq{n%T~0GOAA3# zq4+R7oT7NGj-bp!HkP3flz&+$3<(lm$__^IFP_D`A&7+smqt>TenkwB5bi3v?XK-_ zo|R~uRwxNlNA*(e3qnN<1qC9kqT5LasVvetB(Ct!fH4*#F2!pTA!UgVAYiPcgb33< zB#R_^5oT|fHkr-NKJwVjEh43cfPc-Rifkn|9t9<$ zRN`#!eZkhz!}M%6yBJI#q|Bu&z>uQ3am=2VF}A7;4I;oj7a&4-9$i9kJs1lulS1YD zdLS9dOjDMoX@xzm(ln#S1G7}3d3tmNE)S!H|w-TCzyqyE|*!Eg$*)-JK1TjjZsk_eI!4Ky1 zlj(>Brd%AipC?2jnu6~JP%9OU#?9 z=mFV=o<^GmZnSaay3WdPvYxh3+C5m-!_H$Qc?oYG z#P`RDLMgjlcvw*}3S}joJFJ2=%H+~mP|{-{W)!TFmVf2z>XN(2%B!m^QJOjhSEz3K z>}a^kTS68_vARx*ku#h-tE3^M#K%@>r8f(CAli{9L^2Y7q}+fx75I~Vx?9Kt9uh?y zoPrYGFhnFu{7c~95)npZ#zQGzoiIj9VToeIQ{|zY0_{vcuq7IL<23x9u9oJ=-}?6f Y#DY=FoezX@tN;K207*qoM6N<$f=+w=kN^Mx delta 3307 zcmV

    14G)eG=s6MHQcV2A4{S#*e!3qP6KevSE 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 Nx>`n>b?Wv}{{yH%MR))J diff --git a/public/images/emoji/apple/dollar.png b/public/images/emoji/apple/dollar.png index 4742a921f6bb1674628444afee2decc215c86843..5ae149656ace80af2401c773f9f6274bf696ac1b 100644 GIT binary patch delta 1922 zcmV-|2YvYT8juf=BYyzxP)t-sM{rEIxU197xaQ)`Vq{!wZ)jRxRELaz)zP}&-`aV5 zb;85C(z91?acYi|hM%ICl9r2>nUCS!#^$>Zu&$Wh*uT1~cH!N{fPrn^+r$0#(%##~ ziG_XG)xO-=!HkiE{`uJa#{kaEyUfY6|IGn~f_cWou)w~o?tj1m;@`@rq?MqZkA-Fx zuB@DXdvcD7fRm7fySk|U)=qz53bnJP^zY04(Lb4%iFb8vZEj@8!K1gVg0{4v|NrE% zp=`Ivtcz_TyQ_7_o)O^Ism#BRnSeTSqJO54P=t0$i-TiA|F3fk zLUJ>`uI*$df}eL+D=F74wY^uIBZO{mzW^D`&!6V=f0nc55ZA<42p}uvv zQbw2Gzm8CTI4<)sqbE@r(YhYnkdYC_yEhQl7D{7;@X#e`44$BTy;&^R6I52l8KZSi z2~jO>eOt-_`f$_p()GO)6(S)JLtLtd1g)2c^8!-JQ;)oo91#Qzp#)b}nNIo(1f$go z!+%MPu!tonKb{s4yZtzjEC4AGRM|pl6U2n8TqV$D1>ys=KGyXjM7>E6N8=JiC~Za6 z;S0oZ*&1glK*>r_PItixKk8#1Aur`tZeze|)Cz&+50DT>W|4Rc?d!$vb+d!|>eKQ* z^ysDEZaIfH3b_?rU@TRFJjb}DqmyNHf`4Y`y56k!yX65YJOt=LaW18j%6k>sNsR#L zYJx;d!c-IZFplU5El+iQTyJ*E+4*#e(8l)KTHAYT6`|Q%NJ)SwlPEwo3?xNtg7zV! z9BxUo2sK{Dq6k8S^PeG;DXlV+c`S@^l1`;9c1Or)9p)&OCOKu>mlw_$V%m}{K!0+8 zt|CMclmwZ!l_X9RHZ>cDXm>0oNOAu1`26@HNk$}!8L1y2Y-kpn)M}#&-J%2)r#MFS z?tEAer76-sLOgo}ErJ-Jj}ekm2!JR=rrTD@%8Zk}KJ4m59r6Ud0Q30#!a@N9#78Lh zXn+*1Y%3Z%T_T6`ZW!(J>__O)6Mq^ZjYWb!PEeG5g`K5jgn(L}7pEW{66Aq_9-+Vl z2rHH#t^$;zU`l2e2m%JOI0Cc}&|Y!2eSVH-jbuP+@e@QTBM@NG5n4jb@^JcL4mJ^z z9M%k%_mGhgeuP-ch;2hi_;4Pf`@`vUUakYQsfUan80;S-W#rLngoMxl5r4+mmLY)H zRu0etE|ECdFygNbe6IN&}0Jl7YJjC zh4u|eIc4lMKyROGF(Ve!E{cL#rG=9icTJWc+JLNDY-l&*#LDDgrP^yX|1ib4Fv8+C`E$i zPaO`&VVTyZaj@2t6xKKaD`I{ z*oH4qQ831p@=eUww11*pm8%K5ND+cVrD%-_U1+>goUtN7U85vt@fKX9$SB+Ylu?BC z?6NGLI>x1H2I&1?@8ACg(T?8}zR2(AcX#*so4CINC>(3X+}rBk_UjmhVHk!2Xj~{F zq*NA|lFdWN1p+1D(FBSI=l;j(7ldL#E>Otx_K`k#R0I@gk$bGMMf!;5Qfpn_#)9ZG z6JW+z1w|pAp^|gn(=?^un|4Hn;u%I!FQ%UkV}@jC(MSjL3F$lK*guu`UWA!L7~qAq zEj2a-uK_~9kcjuk8oTDua=q#r4!6+FK;Z0w1=#HV(B*RZ0=sa}Pr+&^ng9R*07*qo IM6N<$g205Rz5oCK delta 3442 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 UfuL3LQ2+n{07*qoM6N<$f~LL>R{#J2 diff --git a/public/images/emoji/apple/dolls.png b/public/images/emoji/apple/dolls.png index 4bab16d7113e8529ff78f19ab4cb148affb07502..e96863e19cdfc6299f538fbe7e4e2bc0bffd61bf 100644 GIT binary patch literal 3750 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 QW&i*H07*qoM6N<$f`8#6l>h($ literal 3839 zcmV{G$aup|3CLb&z93~ekTpu-R6e36}N|+lLA1_ayEG97_JA3WNRAdE&@8aj0=J}5C@>)oFf5f}69 z)gmfZ;KFfH8zI27pHdSKbtWip8yMo$m{}!ZKq*`B@Z+_cg`O@icpn?GQg*_wV_i{7 zPajc4A3H%HO*tMXiy$6*b70HIyJR3FZ#ZgQDow2~FD6Hkw4YU`l1EK2UY>|i&#{x# zuv3F9DyN>3ib+r3+sxO}!~XoD)i^W!`{wcM%UU^7$Xq<(n^9z9VL=lak2qM*y>4zH zUYUV+jcsn`)wT^MWxJ?%rj&g*K2Ma5iB?c$HYZRG6fin7Xe<&IPainFyt2o(c7D&> zpqGY^eoxQAh-V`?JxqJ);>=q$Y39qOpP{0MLT=x9pukO6i6uxqG&hegI*DXa)5Wc> zCm{a+`)*ZPq)AY3rn8fql-JQ}#H2?uOpoy5Y@0hya%@K0+}f*oaGsr7uYyTyG9!6A zKATr4!dZ89U46FLiMUcX`16DC&U#L1leTU?h)FkBDkY$4Qg(NUc6f7CDsSqLl6R7z z$Z3#~$*$@-Gv(oke!a)wp^Kh+kJ)lJUv7BrW`~wcgJy?}e0yDA00014bW%=J0Fg{V zWf&X-2@w7<{$pXWtK=l}i~=&xI+3;*9a zu+@(7@s7Hm0JKipTYg{v6M*zbL?YxTP^6D8}U0py3+FUKdf4w z6=WTE-yr2`2w^>;v+ z_*?4v`s;lpkW@T=&oUrOUw;z^=*PiuSrFnd4u`ifSY}2n9sHqVvP}7KeG9XldjZIM zr~N8@?VVd|>Sp5a3qbB}rc1RBW=6HK?^B>qC`BJ?PtZE8cbT}Gn#?HzzfG1bOJ8?q z6dxQRKSy7?BABVW`*->I`M&wzxtq8xW6@R>j!LEC`1S~`F@YIa=zo9y#_elYZ*z|5 z8Y~?pxILd51d(=X)w61~O;A!YCnhT^yC6Avm(A)W4L95CjHBXkRJ=+brX?BPK|w*g zB4cBds5p9TWH>d*dxGDtaRBrICWyK#H3ERB3_2qmxUfMx31RP8 zZQiMtcE#iNE>dma4ONY!(j)F5kzMEL^dvk`Z=-b)80|c)xgQ zaambe`ITLMcsvfj!AR?z?Nvt?_x3i9G_FDEF51DM5)f8g=jhy3jVWPxaQ10kT^7!o z;?Ck;^Db###ny!%&VlfL)n(CYjcBAxdcqG#^3w`}ZOd{G+Vw?I(?C}}YV*Q%1GfPn zKSzzISZ&U(FYKy!^aJOxmN9`FB393Iy4DvV$C2@S3>H6~c!(6#sp*73^=HE%(Bg*+ zZt3ozXRzm^RUwc?s z*gmb3w%$cjcPn$UO{GGmi+i}9J{0Rsu!Wj7Bt;Aly_uPbVh^X{ZM1S=E5;>~d$cHF z(k~r3EuI)!8;xtdFl~B&+`$?edd*g`U%%cFvr^m32HQfuC6SzHi{g>6;v8m6TN?mn z+9E!DiVl`Y&R-vT@ZkA_2M;RGR~=mZw81u6b7@XD|3Ql)k+9e(F&YC7HpX zmXwry_B=Gyu78bjXsFB6pY0Z=R>#OXlNN})S=STA#G=u^wh-A>(r zBbUqVzWJcDa9c7BjV1lP@a7ejkOV*pOe}#wAks3)ly{QW{*@&u3AM{x)8Bv02~-vu zD$kR<+}QTMjb;G>0h4GR>DA4+1R*e6k-!8_VQG|r0J81dD-HkhosWQ@1iRxilIELlp0y|Jp`YY3Y-f zv!7K}$?bYYBQ7FQqsz&v8(y<7k7jIq*IF}cGDN}*M60FMtv^hSmNf+e2oa4Ii{JhW zVBsZTv8rYP?vZFzWS$Z|I@&la5D3OEaSDD5_$F)eBsn0{W2&>Mf#2HNJk^WzAQFiL zf|wApV%{Ufp^OZ{rSYSz9gm_lh4DcH(a{=qOblmc_S&BfKM)iUz@?^CRL42C@>+cE zr8Exwb>+r8HyY_^;bXSN;Y9Ch^)MQCJ`d%5)$x9FhclA`<67yICy3%h`vuUP^vVc<|W8SHZ!u zu?FFw6#!*({xn}4`~cuUf+9kg5C}^Ep-z;^fFv~WEodc6Q0YH_ti7Hll%>{Q&CV{0 zpr^h_NKl@+cYosA*Yk^MJ!l$*jH`)75qPaUVfw8K6$u@}kad74q0z)I!F8~0tV;je z&+cA+!w+XfT%GXsmE2*_iw1>*?3sUGn~2#spCSq{8{JMXAOfp-{GTosCGfDAL)`I5S6Mru(_4$_pG$3^cc96mlj`7U3D#*Y&Jj3xK0slzh_*n_9x-S<^LWFL7Ze1L z05JxT!qI5#=LjP&Fk?e$i6~iGFr!wftQZ>`tY!Z*Hj;iiEwMda>6Hv>gWFOtHL0F7 z&z=yFAkrM@cnBJxLNHh%BQcQRv1(&R2H=D%!Wn7DQ`t&3KPoDX&AtpksmFtbHR;Nj zf~`6R2e`Nn8m;+1ySEFJ63@1rSr0U*x)5wqd~{~*j>tF`^=UwV)lS`$kzRJV4CtVi zS+kD)%g&w$a?-rRy+D)BsR2__W@c*Cs+tv#$|Iwr_z z-Tm>*HK0L7{rZK)wQs8@u8IRX(@n5_P2ci2^BNi&Iwog7dRw2qdgspAJ3uFaBJQ1G z=$@XpObpr%4sMp3x1Q(pCMeI|F#BWs37|oJcP37JJmGNM!MT^WJ2;7PdW5{&oc4Oc zym=ju&L4a*A*UfTGxOl=d*>R{S1X(QDYDoF0P_(iCxa}|p!}9i6Zf@k{y6RHeyerM zXSD4z%rDz?XXbf7Hc%&sSw`m8%KUSDduFt4o|~WF4y-=!@7wZV!i3DNGl7jnSQ*L8 zb8AJ`tip+F+tyym-*$CP%l5ShgTRUuWn^Bg%sN*X-vu;i8pNQ@Te_y@WNw|Ui>TOS z;Ran_k)JiSuyECNxIsc-gE)P8KnBHw4a!F`XeN?DoL)eK_%^Lty9HvmEDlWdWeo~*K~#mzgu-$%>lM9Jkgx!gU%;Z@h|GPT-I)9M+V$||hXF0$7or_oK( z=^&%d4wAwUmw(3scBDeZ;{u1aO3vp6jlELU>;{0X+1%S<-|{$|z^1XcZ0Gk{+V9KP z*j(N4OR2|t%-jrSg#|)Zdhq=KXqJ$~(q`lIcY}%*9vqU_QmR-TqgcvvFPhzdWw(B~q1Zjf11ClO*Rzl5~z9RKJ4Rsy7e)r~~9C$?m^+Ppa2A zb!n@5ry?~^6w7I4S%(TLGJo;~sIphvKT#Al&wo`_Rg{x`{FDmMcbq6%vz|QK`$8x7 z6)k9+Bg8b@c95%@mI~eS+%R-vSS{|;51Y%WHx4x*lOAU>fd(vBS@K-h4;^5wEP1@K z9J%48CXmaU5C<&K4BZ0dfg-81sh(>6Km;QOhRdudltmO-%c34uHuSjR8ukRpDuse@ zyMF?et0F4i-RuOT-g-GbCW@G#@>Fn9?v7jzJ#a+c9!(~o3Z};|w*i<4L93!p%U8B{ zicaa}P_+>XHGouvj35Z|fU<_!EQxYRKJpDUrx)n4F^0L8 zBATY=q!kqLXp}hIDuZ@gzQ8*{j!!^}A%84O7e-n@E6Qd`k;+!~sO9Sde?O%dhR{9V z#V_)J7i&{saRNw2t!(cfwn9%A0*!RT*rA}poVw59Q^#RQ)%Gi8Q0BNEolEC@v6v@G z7GfAoV)&~VNhrMVTvh6&P#n5o;`3+M+kei{F_dHD!H2;KTTHkYJV*N z{k8CQLsK;hH`{KnQw)icF6|~+?7+zu*YB^N%`I#hMHmLnfJ#kYEf76IN+v*l+{q%k zw35Yq@jmigif3UX0RcnfS>l=)D%m&*Pzz2g>deuhkmI{NO9%#vB`yh*q-iKg{wHS# zo91~w78gY^Zmu|v!NSEf5rwbiFn<&!0TRv6o%(@c@|hp00+ZyUmg#ib?{_+p1Bs&x zEkLJk?s4Nl{>(XS56^z5oSmHwhkrbM`esad`|iUpedpt(qGKu~1QPZw^=hBqu*xMf zEDfjMzw7?IO!s(j|5v6gz8PK5$Z_0w;{fTW)!Y41R^<$Pvy10%j|-^V9e=-gb#=v* zOYwc5D86E_Hu1^YY9n%hjAj>a#)OQ!obmYh_2B;1)o=GeIiXJpLsv(y2ucn2_Bm+S95$Y6kH@YAdBP}IF2r~Q}?GyMl~`Y!=tysXBpwSDvLY=-W3 zVfw#Yld4O5<7})hOa|E^ zDDdw6XGrR#sT2sSep{rYpPA7J4v#vnWvZ (&N(&$a!LZFjp}du80rCcN2=F~2OJ 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 diff --git a/public/images/emoji/apple/dominica.png b/public/images/emoji/apple/dominica.png index a67888e0a4245070a5cae59bfc56a5a6a5b78e44..a08cc9686a9ac780988ef4f6a02e621a5ddb666c 100644 GIT binary patch delta 2088 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 VJm}V6no= diff --git a/public/images/emoji/apple/dominican_republic.png b/public/images/emoji/apple/dominican_republic.png index c8f2926ab160e27d5d56727fedf3bacacd1cfccf..c0c16f26c0f691cc34ae586cce6a0cef8dd1f490 100644 GIT binary patch delta 1644 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 N002ovPDHLkV1hj@zLNj| delta 2545 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 Hu0mjfRdyD8 diff --git a/public/images/emoji/apple/doughnut.png b/public/images/emoji/apple/doughnut.png index f9e080005f173fe7fd45765f5bd3f596973c1e1a..da20c3688b7c0ce0b708343e38c3d00efe018e87 100644 GIT binary patch literal 4166 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 aY!AQ(4w#~A)B4}@18A!1snjajMEoBxS<6NM diff --git a/public/images/emoji/apple/dove.png b/public/images/emoji/apple/dove.png index 8b4ada7aa9edd0519c27a7ff9315452b16c38a67..525c83bf9a73928696296de562161d796bbb8b5e 100644 GIT binary patch delta 1823 zcmV+)2jKYj8m$hHBYyzEP)t-sM{rDXn^l9QY?+mhyuh)uu&ckjx4XNsvA3kj$-sxE zZLFxGxV5m=(a(6DU$d~Q!M?g{l}@_1v#_kEYMe*9wz9aiucM!vYnV(}g*n5&yVcUq z)zQvii$bcVp})MiXqHLP%*bGiMBCTX;oscF!M^I}ztqvr zw6CeSw64(2$;7|A-rU*B#=_0X#n{%<z&wua$00r|&L_t(|UbU8oa^hGNL?t1V$iigf7-n8j4kUZ_|NmXx zyWQ=!5B7P9M!sof))B|GYlM0yNOQ z%l_Ct?~mEY8ujZUe&JeluV(fjIsb?Mev?K+Gx-a%SRaXC2SP4_&n18!TtXJ2K~$BbG60 zm>O! z3?18Mm{!Ob7Ms5u7`FNN{_!r+(h5YRQ0zgB69(eMff)18ub0`?yQVR4yno01 z{E`hi#)LJkwK`9BR zOsN9>NtmTJE5IoTELlnA2qg*2 zHKd|(9^8Gw!O`t%=2+%=l02i)+6|3IJ+tE2%Ro7$HkU30AnoZ_X^rUDTs0!Kwt z$x2dyTwj8obQl4sC{{1GX__M=fz&DC0okEa2bAk;bv<&F6sr}!@scDsr+=zv$iss$ zKrkBY_EisbGEoqe9Li+|4x?mPRt^$SL;D)gSi%jF;0Bxs9HgS=lNp%WAlMZ${Tv|7 z5bWYVQLYf|jXWBYPwZa0ry3Je40c(v_)o%hA38QkD`a7%&0StSeM7oFLY9 zGKX0L5`=6SQdRR@ZAZ^`w0~>m+@-m)MD@-E2WYb)M_^5C?RvQ_f&ME?AW7`To^;o0 zI@)*C3^Ua?5|xQackNco*1jow2ulYN(xn*do~zZ+gr~=(Bm=2k2h=QCb|69M9Sg^1 z4UjwGFPhE$SP1wz5;nJw(wT1}Y~3WtKzLj(rnzEhWEG#UpG zI>5wzZBLW+hO#M3JY?y-cDTC|vqYq_WHD!!R#(j-J}F7-fD6HzT76P)Se7M`useuW zU#@MT^?=brs{>UZ)wD(oO9Rj$Tm68R)fqoRrU>N=<{R;*OO%Cid4Icmi N002ovPDHLkV1j2cixL0; delta 3444 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 N002ovPDHLkV1j2cixL0; delta 3444 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 literal 4369 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 P00000NkvXXu0mjf?Zc8i literal 4533 zcmV;m5lZffP)GZv!F_w~z`xem+0U}Hf9L07va*V%r+dA*WyHi^(9Ck!*kXF*pf#Bd}*VkIj%~V;1HnXuxqo!nl zgD}LfYN(|?bCOr(<#MvJLE_v<&F;yhu%Yoe6S%0!N;^JJ^*GSFKMc&>`G;AC? zb|1mMJuPGzHgO#)UlwwqFZ%Ilw2V--uQ!OWHnQ4!?&eu`t21DeD;NU-J9{B#n=Q%6 zK=kci`}S~#w>RI_OOPEB;Kq2@zHa5_Qc;5?*Um*DO%*#52qsq*vXNayd?GSt8l}rW z?CW7A3I#-lByC|Yyn$QLv~5p{CXl^4rO#Pr(?~ySL)+czpro7mTG8-ENo6JFCrFBU?1t%cGdmw z?ADJI6BF+H`hOM;>+n--do6~9TWu2xvC%@yqH9by9X&lgS$-&ml`f2;JDta0gkLk1 zlUbx@M4i4o*PU;#wK~A};IVg5Yd<7egkROjRfoBtSQiVDyHl~nK%SpVX=P7?j6k)V zN2H-~P)aUhj%~5((kLh>cz=2c2?)TJT1Rn9$jFqQ(z~#_w7Aj1-0SDk+S#3;pS|gd z@Y$W7uu7MLE~Lg-S5`#P(wrY3ACpQnj-irtq=RsiW|*{$a;rU~0001CbW%=J08uSB zBK;Qx2@o#*86kV1gS?_^XY)ai=N*i<{-P{YzWa?eNjCSN_Z1 zfywFk{@MP+T-x;h?7R7Iz3RRAwfFF|?zr;Nq?!BOyRYT-;j86z+Ph{Ss{jBF14%?d zR9M55mU~RoSr*5CKucRd-k=~L-~&x|LN-e1vG#BAb8+x&X&xu1K^ z_db3X@;>GbK@d8$U^5E(YV(pN`gnSWK@cJ$4iJ12O_%(>nuETGH3fs--kAUtkaQjm zL1BrelEAM9`CY=AE`r{1I4?jAIpqzZc9)n6(gMDcgW4@MVL>m{`GcT9RFFLmg08lk zu+rUMsZz|P0#oyMn;`E~TM+;hs5y^ifYP5TBXi;b7}pYmTBr?Yq1@!9fIj0_Jp0D<}?-f^+tw z*CYUSresF=L5Kt55H$LjEEqz0uQdhYLUzNP=5}M$_7wk|J!@mcY?JvXoQX2FHp8Tn z$D7xrhz>;|lKdmWQbO$F%-{q~PCN#&CC;Ok*P;7T562euxBXi*!uKl>l`NF`ABc)F zw!@^vk~AMUI*bs44#xT8kT{Lqp1BLD$=T=QgF{Bbxo$3b&#BR!^q1j}Z}NK^Pc}#79E`;c3#uHBP1OKR?Ov z+q_UHF#T}}C_ob8WtPqwBdk+5jM^N8ClHW$0zUVH;qiDRl0Y~VoF*+O=?cb1ID_jN{9w$|Y^CKFgv_wVOUO^w`OePUT7Q$ojmSY%T-r>@;t zqwAU?2-6Rvz&1<504+dDP(boFLpDsZwRM|%OmJ4MZaSU2&ggVoNg}qp8?=k=SJvos z25#0)csE26qS25SKEiV#{gG}c?|PuCZo$=oxb7ZoV#zd@oBh$aTz9J!+tUNunx!p; zQNNtn(PX#+>x>SOfx~RmR#`MWOGgbAzjU2=;AqLQwM#{eo|gdCnt$UHdsR|kdil~0 zMk;#TV%9Zub)BGJffv^POnf-N?IlFOr^#u0*S&jDItQoav9X%NfJxF<+4&zc%4fBk zUiR1-qQ{lhB9ZxsuBKAgaT)9;-y|8lsZilU8Q4phD*|1Sv9i)(=Crg)+C&TnZjyV$ z1MnCq4Sa9e84Qj@BI2}3{#9u-)^uEsfzZ)1{7E=5zYM%ADbn{ey{`yZwb|Up5ph6D zjNBW!xa%J+H)mu@12`PeY&JWLAQ*sr5YaLMIoz|dlgW6(!O$xJWPJ3f$sv&d6o&)) z$ofT^{tp}iBNxwLXh2Jw*({N`pFA=a)ihlWIzS)@cdqR<-*bRucEcGB2}VZ?3kv}Y zBqn0CnZ=qBSn&LOq?khh>6l>%zOay-#Zo1D@7(h{8%rK-5)74-sHBc8 zvcusZGl7vMKq(H4>BqxQ4v!OV9UbOVsq%6j&mv@|hktT@q7NshckoK7R1%+GC9kiq z?|Slw-=4R}7Ba*fx=N)g&lNM;n6~G?J%0om>*ZB^K8Z@?3x+P7J+tYvS4+U*Z%T;( zR8>V)SgkY5uH_Zi(zHa(sZdgAw0&X@^LLkPW!W{Mur{cxs;c-TqV}&x{m@@{OC2Q< zK|*{!RoO5;=2~1`U3I<45^*YMY6@kanEbnQ`R(G<6+miG!(k*U^&8(Wy=EehR}e`a zQ=FJ}x(46O&8;}!k=uwg3WYYx`TMMEwRf=hscUT9x)w)OyW_r)kWW0hf=HzjL6Bm6 z%(>D#KR>_doT#_ZC~AtbV|ZrF^>n^>e$X{G(Le+OQK?k5#SymQo$9;SF-lYufl5_X z%9&Z`V(;AC{HpVX!U__iP!!g8W3Hd)=XwX7V-pIJmJdcGQidISB0s-ZY!(VF6pz?i zEp6e&*wUN9!QNHpM8g`W!3y9%_YS@pbk4q0fS4+PqI3v_@rcg^swN99G+1m9L{(1A zE)UKPzF7i#SmDw@M&G`0K7}=MzF1IdwOUwg+7Ovc4qjIrD(FH6*+QeLO7%RwmakZV zd-eXh4CY#`rqJayqQW{pyENDPW^rsrLDZJ=^rdnYWr$pzetca@KIz+2$rg2moJTjX zxTQqJ!oFwa#rEvwNN|4Q>^U8OqJIEP6XV+b;ykk(Q zE}NWuZBVI!heqV<4J-rTl!N~ka>j-W z5awicb)S-|lIsPYr06`oUN2z1X0vPW)PfJY>;~-O3Aij47v{(-XcbK6w#W_Z=y)~L zqNG&7atpWyaKOT^vPpIsu!ryuy9{;!w*heUdbx_I>;oXL4WOOii0D!hNgk3w;I`Rp zZu;ayU@!_c!|=4tHVxVY@RU($O3RlrLZ7q5GLI<03Q(1n>h(_=8yg1(rdeg|4^}qm zZX5t!qrSAXRI8$@74^(m%LShedp|WjFgCVJK~a5Hr>xBaN|W7g@(M-WBXod#A301py;1Bi*M%rSk(H8?a8V3 zwXLx;ueiAQ!M$hxAVPerZ#Xs_?({`FoQ@OQ{gJn-uL02a-xud~4%o`rwY9Zu_Up!b z#l<&o-@JYAzol4hNLyDJzA?GE_nO3f855(eN@9#LenkXbZB;hetfe5V&@$GI%T-rf z;mQgb>8M~>oFg%*Fw6xL^1)DN&}uTbX!c`hQw;uyAtfTAsPR|vw;v7GJZN z03r#O!{KY5A!cvXU9ImcIDqHY!Vg0}Pn0GyC2he!z6JLDI=>j)0S#VL#8W&pwy@AV zgPU8~R~pp7QB|s&haQg&xoq?>XVMegTw0o+UwYw*uQ>sa)4%xV*wB!#>2ocI5MMs&;aj*6CfH7SglWdY7DD{3Hd*L!|Ft$>p=5M3Ahr4 z&_drMe=HXC#QcGvEfI`wE^fx-pkVX+ZSh1bw)M>e;FQ`;0KJFSR*0_WWeJN~8-&98 zsv?L_z)c8RQQ!AgyF$in9*->+vju}5fS@N4OMrKRdZ&HcFB7q#LM>6k=E@~PVU;X% zm=wusN>PL*l;sIcWd!%tgPa*8woc9!YX8=1AS=>42*6J3{D>(5BJfQT(k=FAeM%J>zIw1 zJ)7SsLLgCNCaFRMOo$JB!_b<+a?M~`q#F#w$2-ZS*PDDDy*6mbG?kT?X_!!fiYVb> zf=qx!YwFohYe`m4pa{fJaT*!O?YnY~0bu5udpr610#^66;X#9;Un{?Pmx;9#IFQ6B zl0AeZIYen@0&lPWtWd6*J~)n~4pS-9`Z>INM~5kE^kDj9q4+_i8hnzObDBw5(4B_M zd=X*59CtMjLcVlR{>ahZVOuCUGBUDGKbG)z<1Tj*SEks;F*@ z3KX}6EqZ-8mLW=o^!k&w?Eu+4u7IFIH&K!k8yN&xNa!6&PTZB^coPC~JGUs(A9Cse z(cC)Cv(pBMETJ`uY<|>{CQ4`M*)3N734I3Ca)j(lXK}b11#FC`rEh?o$u}wZ!FIBLa>HNnf>?h0Kh1m{^6oL5|Jp{$-ye{U(|y^;h_8Ds*y0 zTLcWEjN^cacN2$evbOqc`X%&yOI3|qy+C_ol}ah&AQazQhxvd1>i|UK~#8NrI-hE+qx2k zBQ}s~wxXc+!s6up|Nr-PAt^;SH?eV#$D%1>KA*E#Xx9Gp2X)83`{}Mf!d;DaM??DE z_q#rt>p(%} zb-i!Yab216RiMdw&F6I~y>nPrDzvjx1!%BNa=NY*NPhV;k=;+txs>tFmoKDwx9AAX$}q60L0?0#yI0PSa+c^FDyQbFJN`O3-++4oj^| zwVgdxCVwl<9i%Rj0o%G(pNRvGQVK}HZJ+BwZ{J#}l`%?(_S@Tk0lj_w-(6q7)`NBc zdi(m&+uP?|C8#3}kbnhWpoVmnpi`2v{RVo2?=}Q`s_aMNq@c?}bEfmmjC5qGs?aF~ z#Tk&+WtlTK+Naa5#!z(9@H`h$%7hA4mc~=^T7NJEEl6VANMCbG2I8a=jNU+$LN*l= z89u)CHYi9&AJH;o(>}g@v<3Q@v=LCELZSs^l(eM(Xr-e!!tjS7Bnf4dCvp1N01>U? z!Z2hY2*s5V+QyFz663{1$(d650m=YkN^=oNx{U8`#opT_GSh}Gz?ks`kXZrTSnK=u zwtwZ>d#f`QK>#BIXrTMAplI|USIXNAyf=t4x1wm|HSIPmjQk@K)v$kHQ=^Y%IBoMGAk>w8;o@_ zw0|H?NtOZ?L!PZrBFZ>|1gA4t;tnk>R9P>>{$EMcKFDAtErzT_3zTwBZ=jM*+JKgF zus-;IBX!70o-Jr7IkEf<5)`v7CM7Y0n6m*$-R}>W4=iB^e?RWOA{@f`1M8 zVMj%>-n-u&yIr5WPu7%RA|->#@(&OzpjqJ(u#}ax&ZXZRy8+*ix*XB+drLP`W^U0G zzh&b-`eKR6XjA&GAT4qMEyBmdfdruwkbmM+xQ;|itYWx;>6kRV8Oo-BsL+OCw$cGnvP{c5 z664lA&z*!wo^*?ELeNUN z)|}>2ZYC`Woa0KBHbQ=xnFk<8DL6`5;>BDHv5Zd85!X`WTr5%JNL091n14VvvJJnE z=9^PSp!{ZK#=U0%GCx3yfx~%0OL21s78|3}uVegfc-ctM2BjgR0TW;d>?>(*AQd!# za5h;eCc??mDDAiAW%zmD#@+_4K=6ooz7!5;T>k(`juyew%stth)@9a>{rHbhYK@Yy zv6^CcbHSOAH_!~AU=UqqE`L}Q%W@gg@H|!d+Y`S*GFmuBa1+AAkq?Rkn=^{%tl7K- zl$8GT)R0?r0iUF1b0TNt7$I~B3hP3-_FfBMgUy_c+nN?RK0P<&*zYZ<^|m2_7mQNI zNbeOd$3c4+3<^yNsIm2}1?`_|1gPnJ-P^b|L~_oNqm>E{d@!1E5`Rr)HwsAv(rhvA zuji>?p0yjNzGLh(+9QZF#u4PTMii2CY?^)=|1<+k4e_N#ltNH)(qK{rASZ!i zP}n|y9g~KAa^AVN{K@B%)89eKdxwHcyMM-F`uwJAjslb2cs4?hx{Z2S6p zy&lhp@x2q$ZXCPA;WXU$m&<$jf_5dcvYmG zL3eyrjE+HSb5x<4M~H_+jEG8#i9&^gSvXEll#@x1j7yV|UVp8nOq7sQpP5XWl|FcQ zR;Qs`uc%FhhGW0ATCAf?k&R!kt8vrDSD2bYe0@Q6ctL}KLw|xzn37bfqDqsGPM(=Z zkc?5Cm`$CRZq~$e;>~5ixIS}rVW^`!b9G3Hh+M0uTdbr&eSAZOg+qvjRiT?gfq*)6 zb!p1JL3?{XbbohVtEESei&LDJIdXC|Yi(Np@l%?Zdhyp%q@8x_(@BqvO_h;gx2eFu6#$vs)WyiZw5v~^m}khkNtBRr-O70B z(qzTBZPUYJ!?#?wtxuYiN0N?Ry02ZbsX&2%XT-N}*~nV6t5&V0PM48UotJLa#6^#b zMT>|>kc?8Nph}jJLWP1-p_)~zq-4jrK7M>om4A>_rk_-!oKBybLy3lD#J5V5k5j3k zXwAP(oR(t3ws+{zXU4fjjfzZ>jYf!tV7RU{Y;8%6ihMp=fBM~Cx2FF^hw4g~=T^yRH1cw)>f{#iMSUK4C+ zGt{PwZ%_uA>P;A3$zyPQAB&%5}< zn%QlTgjndc@bL&{^ZNOzqj~6FdiFb;@P81Of}w8p^;2|opP$3S;a9#(000TNNkleG~J>P0qyV^=x z8A;Z)l2)=M*_JJ#(>g3mUdxhg`IHaYvf~R&s*TNI3KW`TavyD1m`s2M0{dn(ntx9- z`GVXwfnGzTG`1-d>2_K5=mOK7Zq}MJ%8Pj@aJY`$*4Q3(;HANA|ww+W7#BwO+i_ zsCY*|zhWU=5fHwk@tj!9BBL#7r%X^@z9%mmsPUW z@}8XtRkblAFgF*-evkGKKD&%f)jpFO>pSz|huz%^pEI)~m!DzPMwYCP4bGmsL7h1_ z8yi`_gcX#(YvOb?+A}mZI)6Gg)D!LQAKaDC3d(t6b#%0*&gy7ub69I?#tgA1*g5$d zpEuOB&CgX-RLso>997=uH?o6r@?Q1Uv{jVV*4CD}=Gv-4uja9Ya{kyiWvs2PY_DXf z$kggTv32sd{paH=bJb15!;|vBm5=|sEuXEl?c({*zWnN6%=qfd&ws9dv5l?s`kz0! zc>d~l|ICi>u72^!UtVVkZ8`eUrx!0?JI{=3*Dikg(dI4eoMkVJ8|SWk{>|6le*5(| zpI-@d`d(mFYB_8Ar~G2{rKAGh0)%SAL4Pt`{NQ~@x@Md!OCvRW&QaSqNHyM5$qUS7_^f?zPJfw~Wi{Qzikt03iU^DrA$!bZ^o9 zy#njJEvkCHQUo9#vq%sO03gl7nx?Ma(7OAYSYaaF98PJpFn%U`EqYd z;eAYQ$*(Q_#;|@^hEotgc@%}OfuU)hJWfwo`g1axkw;QCR79WB&|5)AGM1qid02Vt^{EqE`~}QVF^Y!lOh;N z`Gz9DS@F}(8;9i1bQ8>h#Fj}~O(QtLQ*%)f194%wT>~K0=C!sKtoy09yZw;d*wBj7 z9JFG<#4V+eMtv5F6ELloDBJ-8q8dF0r?FuB-K94Q{C_U@R0k%3OjRDVlnVj!Ius@l zTFq@#xfL*nBeXQkM+&yz%~@OEm)F@-9E<~8_F+jm#sh>DE>+`ZDZ*j$%cLVX#o^Wa zMvb0=wRb6u0;Al~FbrcfWVR%w>QV^+dLgV<<6J@Thj)q4O?2riw%wk{vXY zkjZUHF&Qv577hb77gz96m{OP0_4Wn@%)F-3Duct>RrsUF?nOJ2&dvsl8IsVDz?hCS zs?`z{;0kjV;wwpnhm~?WIuo5lw)j%^sMR{K<9|o46iXj+*I9>r^?;@!L}z!`Q>AJO z1&vBG!eyW!fgmT?kUBxo}9)KvK%`oFTv-(;{<4JG6PisrzC%FrprN-0Lo{dHP=bbP3%rL%*VZS<1{`!MtN&;SQQ zS$~*;P(`yCF#nsH3o^chjhQBdn!0+UJ%-J#B6_G(M_wAziMm$xk0xwt|hekxTn`AZ{(^mgdp&E zbCZaHfY~NDqXLv-e(q@X_Nh*Z^m>tbdOX(GxAmsmK;CPsTW0%P`Qdmx9G>>}CVx|q zn#;lU1TL-}mO>0up-OQ$99C#NeS`gjul>;Fmb^R?8?;m^`3i+j zSGU^hCnQ`6Oo#|lDVOOP2#IHm)68se2;^~|#nE){9@lYW^t3x5flJvI@kXPOCyfu`};jB9#2INe@m9n9T-;O3Wd z)k}szZDo6VWo6ySj7mgf6six$_3>I`7UE_hznBn-NQ9P9=H$dk4RhM9taUjPFWq)w z+GLr(exRO9vdp5EHTO)^2_GNF2|-6I4NQ-dO@9{+Tm={GaC^wRa@&^%=+pSCM`)SEhCqQ=3TBi z$JptSTQ8MMo-6E0M|;K`(SNfO&agHv)&<+!HJXY#M{^v7U{YLGR~4An1T{*2SfuB7 z4W8|`j-{i~XyJ3WZQ#p(x%Ou-{^DR_sIom1RFr#lr%dy_O z&n_)nFay}XxqElgq|I|y3x($qsI@uFLZTO}UNHC4rMbW^-=(t)R)P#_zx(jgrpt?g z-M_hW7XYQBLx>njV0Dtv(DT%lme)FZcGJmw*H};~8t{%Y>qH$_Q_R@wxAZ>4?7AGnZ?BU8Q%SLklkAt0+S(r~$BQ;e+luwwM emFx~ANdN%h;z)jYUALqF00003c0+?%FNRz*zKdFgS1hu8NW6$u zw0cFtiB-g#Z^D{!yn#uubw0)~1L2mF~dt^3e0VQ(7u&000FQNklY@)lV+1npDe?0;tV&0M2u(dha}5G zROe}$D1XeGlx!5BYQ$zsqwC6#Ig=e{+2l_|c{INW1Rfw1)LfG=xngS=P zQ#C7~{U!hel%#nLBuw?k@!3-$C?jco2--F?gnv|rAV}(ZSNk&sP6VVTs}_%&H&}~` zqckChiR;49>pDVmWDu0*c@BRSu>D2A4S;e2q}c<>nu?fWl0X*`k{g&u@?8}KA`k@x z#Q;d8{N_o@s_OAF@YaH6j3iJ$2!QZ%BvT`hgo2_wgE58~f{`X96Ex^_DW+WB7gseF zf`1rN1u~2=V@Qcf2E&|ZS%z}xT#ncAqosimRmPd@aH5U@B#k78XPo0-QV>e3Sb>rp z=?;DD(p-^LH~?@4&tL*LlxDw0Gl0ZG2nk96G&6PQaldr|ZQ?3@8_s1JDzd7mR8>hz z0eS}+{?_cS0C>8qf?#Cu79T5 zU|e|G-!uqIs6h2dsQ|6lTYb73__y0d?k~?`-7?4LmG)Pe{<+F1v~0W8_36}^c%C~l z3=4AHZnv@!6|Kb9u>8vxAkFqNgkv!^4a4~GMPr1w+qjg414vt42HIDo1!=0n@1}6Z zP+X|TwA#9wTYe4N<;8K8r|*-IzvboBue?;Ws*<(fQEUV#YI_m`!HFb7M=Mo<3S5#a76lOBVRQ1(0HtDYquag@5O zXGSM@P%Cm!FI_z!iDf^4TsVScM6rrqV?rZyQ7@x(MW}pDe_J-Tid~UrKE9)Y$gGN< zaz=t*I(JhrwU%(AdQf^@I+kcXUOgXVLnW(wOow1OVL>Fjnsbk1I)Yd-xtDLThg@(> zEOt;VgkL(3Z+}OyfKP&8Jf3eta8fsya7ntAY?5q7v4mB)kY%fVPMdQ|x{zY5eNKT| zHk@-woozs!a6`V8X=z9(g=Rr-ODc?GI6XHu83T|n{kn4JDO-cqkUS-vy`faU%ZlKsfb{(zA-fmuS?tkf(J;%B6XLQ!K!fV_Z5MX+t8>vWTB- zKF_a&tbcn;SvVWhwTsoblFh1rypCR^b3=+-GL&aLcugqCp>(NtN4JSt!jzf4q@nyNp|bRW6=wKy*zhm}xzIRDUnUopFX*GjvKOgI6!Oid&ClJJYs~ zxQt)DlVxB$9Y`z`VLu?Qfm5S)NV7PC?6JH2xU= z6TT~MZHf>tW;ef@5%Tze>rk%>|_K$coa@74}u0PT1<@EDmOthH4 zoLSL(H0|f%{_dQsf_tTV|G>1n^nq*KnSbn|FdAvHJ6Gbtt)}7cuipE_=)&)C^#1+v zTEo%(nn=6x@am1S@X2NI==$sFl;^Ei#{d8a{7FPXR9M69muFa0$r{HG^-u&vL8K_K zkH7*eVizm+70X)hTCuIVw$*j3+uXkE?e(0T5K@7F=?y{(5E4QlBqV`QLWc#E(0}aZ z)=9Y6D+w!kuJ@z=4}oN6e)G<}|C#e12zsfPda0M1OulYzzTPiP@mX{*|2xO?FiJqOZr!>CNX4B;J%6U# z6c1k*d@efc^K+nRI+K@I061CQ)qgySeD%b${mTE6|A8aXAwPck>XeB&Q?E)Xr0xR1 z$?2|^5Jvs|ChB!)IAPe@K63XLPfX1}{B9!D%uo2EN&o_!LI4sr5LZmlYxb89pWJU3 z4FBVAch$pp?@payqmQ#NSuujk$;kt%CW)BzUj{gLTi2-3a16xugug!$T7NkkoLu6u z`WrdQB&ZQwVPRfj9u7xRD@TbNoF{ZU5Epk%qZc=uOcsoFb^Pk#sR#YhP8p?`2RJ!4 z0TjYhmJIAW8SF@k@$*YG8^ptp9yQ2W`f(m{JG`fpB2-IA3|wJWK~qz9c9U(R@(`02 zqhDPb?0ks6W-CUl))6{ge}D4XWG%Z{qvY8jSvE-ajT<+zo3fjl3UY8HVKX|gZw>!2oikpn5zovhKLJd$!x^t5Tw{+LYLIa)&z@< zEH{@$w29B>6NxOAUe#Y-!8V{Ggn@|KlM}B`cd)=Qqp`71L6oBn%o>4|sM53OScw#H z`pf%Oxpt{k{eS)CUF;$q-mF545riZ{-&>z@1s;Dw1NP!|oI!~^%k>qc^8-(a5}$j}7_8}xb=2*8ZT zlXd1IARQjht*@fds<=gZDMf-vim?q5so|%`hXlb3P3NH%}4^N*nCvESV z6-jf4TB&$5r=z23dG3B+0)V6ug2f-1aoj^P4@CyQV`*}?9f?y!XKE!WRYikb;Zww35{W%Jn zN8K`M@!+qtHsa_0d-yX&&Jqw({+YPC#zyx*==-)eCatZG7B@e@pK^0*2-w)#nm;%2 zJ%4crdmc11^_5A>s~yFeea6M>omc(c5CHkC7Ne@m-cZy_NZChKSQ_GRNw2fe!5ArhKcA@x&U+tEND*$MoQ%iJM*#$rdT7D-9as^av>WJUj z(zeU7#p}3nlP&MD39q}Be#=Xj|ELPJf%% zxYM4jcM{gPk~GNok~rBH3Jw3-p{9b@g^k($t^1c9QRj16WS*$P83k=K&o@k!7u8T)U4$2QkqL*5yA7lwS+v5$@O_NqTz8@qyHe#>$Z zw07iOkn0~fDN)ZJwEbfDvG1|V6@QUFu5i4zqaY$^UB%94lI(eCvnt+gY>B99t1BQl zLx@FsL+6fGT=`FK;F$9v;&S&{cH&!~4)o4<=>>F0jUv)3BSf70_S1P+e*48R+x~Uc zcB_=d`OJlQRxRDkFJF=Ir$-$pRy+mytzEe`&}KrfUz`5=a1dPnlZJEt$5)3B`HI!& z&aVv$9A75DHZyqb|NM*3e{*1RKYFeF_QpS-T(`YaP3Sq;CpIH?QH%>ar89u&X`)1^PM@j_|+U7ytkO07*qoM6N<$f}x|g+yDRo diff --git a/public/images/emoji/apple/drooling_face.png b/public/images/emoji/apple/drooling_face.png index 2b7260f7a031aac10bf4d21c25fb5c28ef082fb4..08e1f207af0f99428cf507024816a094657ebe12 100644 GIT binary patch delta 2256 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 delta 858 zcmV-g1Eu`p7Vrj;BYyy6P)t-sM{rEtW^3Sab=XKw>Yt+Y$IRk(ddDLvlhRL9$SyPHMo{DnA?Y_j_`|g1Cp6<7FV!F^`OCZU8!yKpC-9Pk z)iO8oq?+n+YvKt8%Lou}k1Y)V000tnQchCGz z0;)+wK~#8N)t3pboG=hXgISE3g-m;6pMU>T22V*r`D_NGNWTy8R8`$>nqU8^?#VTr zRAd(ks^jz$(1SX51?MTqmREqXIxlX?C4#iI*(HLEg`{9X#&Sps6=V$mf}}t}#x%Tm zgw9ZI9H=R7_kWq)RCMe>K$?W4Wsv`pW0FQrYgWw_rT^}ret&rDB@kkYJSRxMTLr)}spvd5 zO5`|0)xPz*H(tc4k1>*}g0nfvdj?9^vA$B0%ob?Z9FreoRlgtz@5HZj=?li-Y()~P zW4nUdN-04*pq;#5wI-odrOaA2UXl`NK7y7b(*H`b<<<;+5>l9=J#V*U!eI#hV5Eb=Y}9j(tk9CPy>+9szu-2OjfF2>09IZ*^cnN zZpE9{vqsM#XhTwN#>C%Z7=Su^M=)t}L!uo^(0q{o_P$JgjtC=LSF`3HyR}}fb7p7< z0VR6oj2E5Hk(|DqCXz%Nj0Fw?@*z1<3edq9| z=u^r=r+@NrC|53RZA`8$=Z&>7JN%oK30c>Ma+I+ng_rEi-)O?hSjzfSrsHuL!PJ>b k6Bb2TmPHXupyj94AHMvsof5gt@c;k-07*qoM6N<$f_M3*pa1{> diff --git a/public/images/emoji/apple/droplet.png b/public/images/emoji/apple/droplet.png index 28162fb84a00c2fa5ce497bd17df6bd6b0da53b3..92fdaddc47e7bc9257158fd363ab1a09e69a1f72 100644 GIT binary patch delta 1176 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 diff --git a/public/images/emoji/apple/duck.png b/public/images/emoji/apple/duck.png index 69a4d9264ce55f0dca20ddc8170dc810a7a8fbf7..bf020887f71d004727750639486bb50b5204071e 100644 GIT binary patch delta 2766 zcmV;<3NiJ_7u6MzBYy&{P)t-sM{rEbz`fYW$k>8Tx~r+3V>#8-(7Mgg=GoV?jeWeb zu+G1}#j~*yQ9|NzFVVogG)hZxXJn^)UCek>P(V0%b#k1Un8C2F?`$P3Cno|;Nwrcf zu$YqJqhr^BMpY{vuco8d#l((-feTkfdzy}NfpC*@S>=mMz<+5`mNglAOF(-V3ej~z z3Q|xAP)=}JQxaEH#)G1o)YanA((vEkV^~tbv9GqLqh3=>!LO;Nn3Qs6VaBqr0RaJ&hJtNjTMbz_ zpp%c#yt$fo0acMOzVN6D=pqv(IE9lqQi-Uk$M?fYI1Q~NN0X#EyX=PPP zL=_GXw|}9X4NEW#3psN+IUj*5-pIxbLLY5UM*=n_4OJrzVI@N>CRso`a5^wKH!>0w zN34J{(w;!YM-Qhqt^ZWf*bBWPb}Mx!2bQB{V{oD>1x`d>@HVxnTGtW{rrHK{c!Wk-O@WPnMPfgVM+56kVy3Dn~tF-vN%DLvb%sqpiR0^T4d;qn3Kikomalpm8p_HV246oADs;qp z>jQ_QFa7>tTUlAz)Yg%ZPlh0cLUDg`*o{;u`b4b-Ip1)!ILFGJ0KXMOGR->qu6jM_egz|#$Yf>d&f z-uUC?wa>0z{ToyY1gM_iAbR#Ypj^I6jn97yDFuW1Rb8|B@ z^PiTNm(N>+8um}tf4;W1_Lt8f|9^zE4k2lN0if~Nf?%M?#H_@^!gJ@&6&4mGCKmiO zcE~!ezSUD+zA%)3D1^^42;nkL#Ky)F(EQx7us$A7#9FNgS{R=@5e{_d-64Q_dKT1k zZjQgM;PsGcyHYIMIK8n1A#oM~3V$&wqCRmBQ=& z1B$ErY(zu^lSo96&Ve6Qm6n!Xce^h^x|ZC($UBo714)gJCo_YY^9zJidVObSr)tuD zSHk9Tdm)_OULGa)R6O}vXaAk5((90Fx7)pQX{^`J;WYD``H<#j4#HTuQO`8B?^R7! zR};|A&KE2{m)qP_QPJdYf`6cAK3Lq`_@`45uP#>s1WuJ(@8@$l{HBVJ0PrK{BS;1G z;`HW5XFaV@CqSrBm0RA-;li=_en0%c11LiB^Wg>d(KBSmw-&mxTy-7Ix=PRG^#X*# zClY7{SOrKN7A{PU+JA}9)z&UgPEMAVPTpm)e6TJKq#1G02xb&GV1E;Gd)c@!CO(V4 z&&q0RJC~OyOFP|KIm-tWj|;o!5FC;!pcPCE)$=#=yqNrG^pk6Sx32a|XXoVPl~34q zJ;ld@T0YPK1C9?8(JoMs&*ieT7>>p4U8jsk^`5V*1*x>N8kg&p20IR|C=@oELR5o; zqILlaRtIIdxE#}J-+zutJxC|f$aZx$+ zgCHM8E0@b961{%xlPK~j%JeD5!&w6am1>vu@Ulcdrn8wx8U-D8Ax>ejyb$O{oD>i* z25(2X`^`7XFH@U{@Br4T0pA1L=%Zb01>V2x{j{JmVrfsQr0^AGRiFEOCqyNi#HQ! zN9|HM_;Si#BRW8cx+dzjh@g{DB9Xh;6gH-ty*BL=Iwu?hl_)nWZ=#Hjjw`hRZ|kfGZikR(E!jjl_cMarxA+*$9O7#*m*O{B7NU|?W$)u=E^FgXSf zuNDeD%voA0aO;7y7y4VMc*`A~ zPNxCPLbJei#G|l@3y9tKF+l~i`kI=W35P)I#UYqn5<@0Ep2QX;sg!+69YjhK*+F9A zE(%b*X^{yiAOHf==@=dMYB3DMwHPfm^51XUN=TQhV$EN_}1z2vY$L28^41j5*a6-FCh`U@aHrwUG zg(ADo;E|bCjfzIQ1lBInm>Q2g>AyPT)yjcInQYkB(P1)~pcjlwDiUHa2^S1QDC(AK zlqQ=@c5gI&Wo0GZp>X`*Ne7Y#@77!Q&fwn$P zHw2xk1KNm<#*vZ6k$Vb9I@I~Lkk87DVll!3G0P0-!qO>Ccgz8$v9-0;nDE-(XZHT3 zl7G?P74Jo5GAR2@9+`Lq6oP3?NFg&wPfuh@vf0=;Vl;N47)Mk#k8N0G1cXoo$tmP# z{-PU|mmpYL>hJIG>W8RgD)R^!pqP{M;0r(yVMHFxOMba)2}w%=nMw=|%?amIq9Pfj zphG7|rTnfl;rwrBmlDqBr5q$jhW?$Bd4IB`kd#kHJ7XPi@XG44gkMoDqb#jis?8NH}I zZg*pMcVoM_xFj=eGvuAov)_CFWL(^CW@hG#nVV^wMPW=R={N0ZadGYKacS+F8%MjL z51abyc3@D_Hs3qBkrOgRr&5{J>^HzUd6>ye3io=<-n?)aZuRiPOv)nBN&ol!3(rXM UTmR%0>Hq)$07*qoM6N<$f|xWkwg3PC delta 3011 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 literal 3901 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 literal 2520 zcmW+%2Ut^Q7mmyzAc9iHkHTNE1d$4&SZGy7P*943Sh1iLks&PH2t*ok-O<(Va**TR-X4#~o1dQtn~jYPV5g?0fL&i-2TlfqvADP> z5D3I#F`LZ>mdoWbnM@9cBNB;#pGu|fVG;m-dU~4t@0y&PTv(ETC|@`Oz7Y%Ujo!6`tru&@A<15zLi zAeWbyK?wK(wNNMo3W0t=1Yj%{3nT|RXJ%%;eE9;D&&|!Pt*tFBEdi+#iG+*JUu=>P9#l}sm%WV{+^y535`cyR)nLj)-*4K}n zn4}E!51h|{`G8mArw|vX8xSb8QZ7x}TPm&a-&I*y`On%XQ|ayVM{=QOrGkmj%qDHl zJ-tYA=W2dVk#f~vm6auxSw}1{Kp=A09N^ZjZdl11-|L5O>GV6q$T*%F*7rZtv-NKF z9dCsd-N9}e51o5t&;w7oaxA|sJ*S+{N#lBsyBC^mqxWaxP~Oa!tDf7Y5@_Ay|qr*uU>?n zr^-nShhj~}C%trCF;Z$?Ad-e%P0%{?*%PK6&Li2%BP>-8=vY4AA?>PWs{9!6En;-C z&G#p?o~E&=yy=AwK0kcw`+_M?4&AN0V;xrQVMz&U?>$(L z0~#|JNZ1SDou*(sRuq~h{oLK5TC=_h8x7>FU$8qDPw zG`){_pM+TKanCS-q0LVQ+o&2TdVi>IaC!*c4dEXRSh)H=%*Zg>?sxgjcqz5x3K{sK zb#<1Lh3W4GMcV%ALpRR;+7(IA_ijJ^I9oBR3$Y`5>AgT0|tR&J8oR8nz<$wf)C zVN-@nQhXyM!{qqZD>GOXu^icb=_b;fP;k9QQl zmCjecoIGcfiJwH=PX2bbi*e9pUIFr{Fz)Bq-|gjHF?n#y*#qXU|Gk1`Td?nDnsTe- z7*tO>TGt+zqKwR0+4*nk4>B%tf>MrsNdC_{=M*n1>g0S0KwW%@RU+FQxL|e7g)Cfk zT0EQz*E`(GT(yC@V9SoFSo=0XD#H?Ilo?*zco3ep z??R-KXf&VZie^^85LESJHK{5Ye#Sn}1yR<>SLF}e6;ce*HiKPPDcP@!l-#sdb;r)z zngm$HH6VVx(^lPHSH1@Cv2y$VLuXA@*uDMhkyqUG^R+dvolwA;_`OAF+(pnj{i&T> zNf&XpuUhYPoUEz-8Uj9Paqys6!{cY~_{|N}Xd#ZQ=8i2;lF#)b`=8wlj9Y{1>DPpo zD%8_QG7{qCr zvqQVMmS(|6LVaZ%s-}$4fl2mur#3Jih(l6w_tn@H(u~u!ij!GdhEZ{ zI|~%!%%C>J~D`tBCYy-b1h=ZLIyxHbn G%>My4;H<3x diff --git a/public/images/emoji/apple/eagle.png b/public/images/emoji/apple/eagle.png index 5fa8bf54e887903615acf89f34df4c4ef922f89d..8b6b99c90794a5617c12c057163de08234b9bf7d 100644 GIT binary patch delta 2519 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 diff --git a/public/images/emoji/apple/ear.png b/public/images/emoji/apple/ear.png index aaecdb50d0b75f574d7d1ae2ad355781456b3521..876d282485c45176a16134ceeb10e191903763e4 100644 GIT binary patch delta 1179 zcmV;M1Z4a57On}9BYyx?P)t-sM{rEIdJnH~48w&Kx_l6nRS2?l4&bC7mQ@GDh7{41 z8Q7Z}{l_u%yD09oB`@iR?WYbP&G7U;!_2DL0|94afkhA*>GadGx!}Mp!aAiUP5#sBx{~>l7uLu@n z@+-v%7=|Adn}#52@oSWhhfZgIMKyCMdAya!l!sG~GX_y@%;!|dRIZ1PWid1--BL6V z5wJ!^ry%UNLVr)k83|>c@ArAm0W~(tRJKZEKvj*m#Pj{*N_d>so#{xTno_Q9=FIdAhg=sqXK_h^$8~5Q5Wo`G2KU0~5kw?v zR2GMnE~}NMGYe>ncknH-|?@1bM6`MD72_Y(5VTcC5Bb;+pz z6QMa&2!A#~R)T1Y{kIdA+-9@^iclCFamE&GQ9Ge;3pG@7*aG>+HYnuEmnyC}WRf{4 zU|7HX@`42HyGW)6t!&7#LK+(cC^4E}pQDnoLKMc;M+6~dZtFsXxWpDyvPBgxYY*+2 zQDP3(0*DshX%gn>(D}6b8X=6FO&y9R2>+5OB!62Qk!Q?|Dn(zCQ?@9L3O;Kp`!#54 zYb#``F94dfSP&qt?xL0<5XMkU;Uy(?DZMD%v@*}B5P_94XKa$iB=WArm{e#!ZTesn zCjNMQ%nr4nzE|dJt*rIrOU-df1B z&wtEt!;i-u76_kULh?e(uHLW%7~?HG9uys@2ttF5%ml-*{k-N=y3LPV5pxM)DFjHx zC$zbe=#3wjRGBvvDViXU9Y;uJgbHzrFGyP<@j~a*cIc3OZTY_JBSUkKl8L{Fwr9Fl zC?a}|S}Fm)wxt*9Ir7s3-ftpsE$AF?7cun)DXhoh~HcjwhNg zP@@52XQAD6AyBKxtzOHiUpsGE%Ng5=y~R1NR3Sd@I&+l8Suj%o%=>;QeumnlRM1D= zmoqr@PFtGL(CbVW^*i?2i3*Yrz0iRj`rN49v}54vqax zdyTkMV;)_35v?2mD%C6nA?klzmm?rm2}J}%ko*n%!yF26wLHYc!?gRcbPl}a;(dOc tX*^$Y2q9mF)1UuaY#hhEGk;(H0TiI6h;U~UiW2|;002ovPDHLkV1l+oEARjS delta 2927 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 DRR_U! delta 3435 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 KMNUMnLSTX)okt7+ literal 4093 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 R@!y8QQCHCc)hoRX{~suLOoadd diff --git a/public/images/emoji/apple/earth_asia.png b/public/images/emoji/apple/earth_asia.png index 60d1dbbb4a9b5bc504e1d900fcfdc1e6584b4c2d..99c44dcc1bab59eea4463807a1081358163e7326 100644 GIT binary patch literal 3826 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 diff --git a/public/images/emoji/apple/ecuador.png b/public/images/emoji/apple/ecuador.png index b0ee12a277f86b52155d1d52211b9886bd167937..298cbac640f20e3a4b065700d1b7e7c250f0a51b 100644 GIT binary patch delta 1871 zcmV-V2eA0T6x|MxBYy$2P)t-sM{rDU4;g0)6vei76*g%DA5+7$Z+>M!qlz?25iQ5I zXU4X1ViFoa8a2ACUt|&+Vh|Z*5*cR`9KWt)VGkL`wryn(7>FM!Dn4Oy8YIfOZfO)B z#ItH-5*y07aml)KwxwFVtYHZ*ZOgiIxu|2LjUtYA4AC<~5Pv?22RDQPFnqfmE)_$O z8A+D46(z0|B+M>99!{I745~T7aI14gTF7)xl?lk#f+j5`S%R8kc%X&$v;qRZ%KnGK8(c zXMa;9RHa*TdjvqELus5#JZw@_~gdvyh#^qNBf}t!{7PW&i*MGD$>1 zRCr$O(|=cQ+E5$?@Jg15MI>GLyqz5 zPv?Jt7yoCT^PK091W`ys5X8DwnQn(3~8{#c>QF)L2Yp(by#@To2)zW=#|X%d+~my?~NNOJO18^0hZKN+3}{&H}=H zQYMFzN|uEnEQO}H7OJI<9vqfkKtYlm5`-tAtWcal8fzrLSOvhR;?6Ry7 zmlg_)iR%Vqujlo8t#Porc4)4LRxX1^;D5G|p@UwpE<0}H)G$^Wt%I_O@~I7j>7gnu zzvD6Pd=d>B17oX3HSzI8LEDpMhVi3wXAWsbjUsKO(RL6Ei)a;t_FBw5U>NDdkBn^^ znK_hRHXb$o_5?7Ve_k?}TL#cU4%Id{O1I9T(OINQzyY!%cNFLH)^Q#nyMHK%W`B6G zU87MWlH1@G_{x#2oL}-&TABx^D5DYAw?yIa8;-CU%D?>qXivQ>Wv0w#$_=m5lfm%1 zH0``U=6U`nU$58ifkclEkDh|q80g2JuI}z;C^z+qbo}w%j}ItcQNE}7!gr?2jTXPh z+G7X;c>h`Ue?=XobHfjv-|f)dZ-3HI9LHfX8nOiCCCwZmyYU9PzELQ&69$Y57>SK5 z%Pux0UNotwk!;!08B(&OEw5VsWq;?i1Ey@jU3sw&gbOa7{Jv-4+C0xQ44q1m1$ zIqJ#5(R;9tkKcazaMtTMvetF9e#dc~R!^5tP5u_>$ufi&rxe9NDGW0}X+IsM={Rb$ z)33IUbbB2L>m)gaip3($FbvPT+NU0!S1rp@^W*lV?t-)iG(iwdPSG?t9&~v)Y@7X_ zs_UJmsT<&|31Me0xrX_<-GA2gX0vIUrtY>{yv;LfL&))`DW(a?SyeqZG{bQ0p^Ppn zLenWwcTa;D=G_}L$wR&&p+U~IBLOi34yk@fj87zFHm8#mOp&T)Yu)$V0=0Mva;=uGbpLSEzD1n}4M!mgU$Cn*mR% zj<)8|v# z-wH?qX=xis-WeVdkH=%%fe1l_A%ciRwl~2lEJFox7gO_TICO?@Ab|)cLQz-&U%y~9 zK?Gujz%>*M0E{PB&_D@Qfg#?Kcq|YJC!!kwtSp*H%;{)25=cXfLCc9b_;~8)y|6 zdnhesAtlDRc~}-2!L@i@8y>&0a#|D@#<+UPyLidFe8#zZUVj}Px~yx&w{}()7{0M_ zwWejctZR*UC|VjEF(O84AS7KF9Ji@xavUClDJ;gie6XHMp^!v79W zO6|{6o+T*Ctvv71RqW1F-@-}j%ue0FNV1zesVgw*%~Gx~Hh~}`4={BkMUK0mIJi1M zwKqMCEHPmg8J&hLpf5DZw_n1sRje*Ejv^%Ez(MWOTz?cjiXuOL{p4DB8y*lfgi1hf zvpqv4Pp30goBG{Rl`l1MBPgdPCI}>43@U9OI&d09lh(#@;LBRSvR>iKW!S+`$UsJh zgjLW%LipTT7d@Wc$Z4xMKj+6t#5Xv5CMyy)j`Gq@u_-1FF@Dm)a%za1Csw0BSA2(r zK6838bbp9t(7j`79wUP)Fx0wBFG_dFuSPFbr0LOP)yrNWOq{qbE4?!^p*1@>KTVq{ zELKu~1tfuaen+S-G^(OOqMTXh&RaB1g6-T`%)LurVMny8RAza7;Kfwp*HK!F$w)Y3 zNl{O485}rHWQ&n($g)q*Jw9AEQD$s5k&iR2Mt@ImQFJ+4l$xG-M`M+ckX1lkhf!5u zzpY6NDuY2?ZFF%*KTkhhb(ylDN1aDib2Un)rHW>KWrCB5c6V%4Xnj^^W!BD;BQtP0 zHECX7DKk1ooS8v&KVFMVWsW~lnUhSy!=+1RG5G3OgjOx1Xic1jEkQ?-os2ij$hwTI zzJHj1V<{z0sbgE^<M{6envV;V}jDN@;CZJ3eYZxj7f?*~nfZ z2r`r{Lj@ERac}Lo_r4(s2#TJ5C>jon<~h>Y12Q; zm^Xj+^2IBbE|Q)BBO|lwhxO|g&z?H{(~RY-e_FI`?%eqJ_|vCPQz(=xULXv{41XEv z^{eL#f9?Ynr-L4=mr5_28-Mg@L`1|fI{o5BCiCoBTU*<6AXg|9M%mB9zy9Sf>&9w0 z4H%18fFAMjz&LjP{P}|i3tcp{?RKfC8sL@Hc7ou~GOyhDN(lXSqX6AIAMOX&#Ku@8 zjrBMNiGx~NS|ocHjjagMA>a|DW`Ce=yITZ(|M~{F7tFUxdhOb^($a8FL62k5fCvnU zM0P=t`fw%Xk66PR)G_)-p4MmX7XlSRJGTzqq zEC`dyya=*YL&L>|OeP^m7e!N73sypq4nbKB1pht+C4!EQx{As!M>{)9?SHLMLJlOb zAV@lk2=s>&D};SE%=LY4x^o9QXUT?V344Y2AOQH#b&2^ zdHK<+vOr4dY)vtU03hYj(0}iHb}FOGRMiCwq04mr%1X1cs!F(7_uE(nWf4a-!AKYc zpFap;EQlaJHH37FbMI$W-7jsr-IeS0j6QHaqEK@p(1>RS9~nEpi`CNE+4QC_->-t1 z%NTe<()}o;1{-0QIa+EXD8^+j-LJTq*;UGY#^&VQII{|exND8 zVu)AO)F)HS>*8`t{6rgpvB!sWgbeTi-%|U4=K%%3gsn@SxzW`#Me7ivWjcvCY0gp$2M}q$}IJOpfsG>iI)%5QZ zK8ODz`RI)>nwgmyZo7xRv5DReb5m<~ck4K6H1)49Bn6PfH-BB+bG|5cc6O1GPEIi~ zaE#*oirl()d=|gAm*0sy+JH+58V#B286Osh{`k|hx}R0hZma4T85ya~^eQW;DZkU$ zR#9Hn!Y}VH@8*{VrSi-s0>xdpa6Rtu;p9Y^qU~XDixbrq<;mRgZWgzf`=GnzY0yL< zcT-dI9XqI0Fn?rpSeS>$b{x)(R!!*hcwW=X=d+%_YHBE@O$4$=ke-Q&iLt&uZ~%m( zRW~rYd+J#=tijS=F0Zup6Ck}2P{&|?PtRa|Zf9;ik5`|@;h23URKx=aui)10XLmYU z6Z=z|8v%q13ky4Rh)Ru%i?en&oe*T!(ZQ>)X2?9ssefsvrO=u=2?+^lxa~y&0Rfej zmG|!6HI1Vlnh3;cOim0+DQ~@cEe#MUK{?m1J-m4}a9>77dU|YZs8#lvTXpyJ_02~< zHES_QA3?2+&55*x6k0&wqt={j53gKz59%eT%DaQtQ;I1h(s$3SMTf} zh0tcVsJeT1^-K<-fHA|;(r{+4a&o{W;Xnw72nq&yV-S((U}ceaz*7W$>radg&Gx)i zS63N;^5DUvn}OTHYinzV1uR%2*HO@SVvrBf0e@Va4wI3QaSCM{h>eXnGYq*pTVN1z zEXc~r%EH;%+uPOE2xQ;hy?aHF;MK+kIeCyFqKpTLBmpF>1d+hNz>}E=f;~Nb+ywC< zX1@&QeI)EQI7?OMf>XAD`^(>;ovl!AJm?$YF%Uc%Q_jHf|K^QZwZhmMj4m`}?B} zqoU9ha>$q?CGja=5~MaL%CAvS*t7sy5Rqq2u+(~H00000NkvXXu0mjf(Eij* diff --git a/public/images/emoji/apple/egg.png b/public/images/emoji/apple/egg.png index 91b88aba55e6b1806c5ad176bc60efa1466e3033..a2cb9537e579615ee97c5195a86e5404b2e4d287 100644 GIT binary patch delta 951 zcmV;o14#Uu8^H&V7=Hu<0001|!>)7y001yhOjJcja7^Ri+2GvO-Pq9T=HKVz-QnET z_VVuV?C0U#*6HQn*woC=%E89Lx4pNlwXLF=k+tgp000McQchCgA{qMffD-~YWx0ykD0l(W_^jT%e43CdEcG2PwrjX^tXn?8&{Vz zgE!I<-lKzM%*s>8aix?eOQ=3FLP!~&bSLgOI8u6E{IH8zBSruf$MM~cuqOn$WQsZh z*NLG#fc(duB7b9wr^QMfM`_5YZ+58xS2DdZPG?-IwSOho^adu&veu^79oJfb*;1<0 zGrRdAi>OlM6Qk8f3%W1FoH1L%N@=RI?ASgWix8sPnbtb9cHaLYTu=#fwm85_8Yelh zF9jIaam`anX_@zc2>gbO3)q8J$kqVZTKN4zFr#9S1D2u%d# zTJhWWQhy3!%q9&}6i|wx9VrQ;^P49?=Xp`&);71HkR%b9d~>z}7@b)Vnj|ff7C@o` zDH}q@B@r))A=_jcMfeI}+GJuNE=~+B(l-o2r`8H+yyi-10cC{{ui%B}Q6UUNCe>pQ zRb`oH`+O}jl%5R3xo9*`t0ong_*&LHFAR;yH-DlErpV9uf>*p45hF?wDiJF4Gk#PC z0E8il@cg)=YHm{2lld&B3C#H^t*)z5|6r*1o)~kq)G#%e?Dza;gr30MZ4Qm5(-}b7 zcMDpNqBv-drm@j%Hib^OCf-35pa&s^jZg%pJlnOP0Rn+70;VqMa6BJ;AHtgZC(#Vn z^nbNy&n;8|q8brFntF4o5sgY&G=<(&iA!Zk0v@^%5>apbqqFCMQjnHeY0!J|e|$rc zh#9D4(s=rRQ$XOYWvFN_j^~wzVG*YNJpXNxBV(uO3%($3LliLv%HJ};s*;$xN&Cf( z>;vK>%c732hda#F`R}gpqP^+NO!=qti!i3YSDQlrfa#>RfT-*09x~l?ZF4x>eBQgP Z`46fTz_R?qbqfFh002ovPDHLkV1nhF%8dX3 literal 3482 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 diff --git a/public/images/emoji/apple/egypt.png b/public/images/emoji/apple/egypt.png index ad984e8db6ae71a547291313b09a0e1f848058f0..96ecc3f9944ad417b551f2c1df5519e10f220845 100644 GIT binary patch delta 1208 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 diff --git a/public/images/emoji/apple/eight.png b/public/images/emoji/apple/eight.png index d91591add1b6367ef8cc326e5bd3050e6441c816..2a2de676f58c9383975a65ac34dc46d462ddd5f1 100644 GIT binary patch delta 1009 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 diff --git a/public/images/emoji/apple/eight_pointed_black_star.png b/public/images/emoji/apple/eight_pointed_black_star.png index 41bfe101119413f2d4fa1cdc743c93d769731514..d4c58125bd9003175ddb4ca9e372ceacf30519e5 100644 GIT binary patch delta 1329 zcmV-11l~||HVZ9+nV&92l%v1|E~rAxgqVyfdANq{GciSr~v=bb?NT) z?~nu7*3tj}|NQUR`rx%a|NqI^o+6S?rKKmvK{z?G87j)as5=O*|aXU>R}6r>q4VMa(oD$PI+7~}vP!3(Q*!(2ya zqi@p7Mpc0)3t*?pTJ?7Pe!?_CW)477DP{%CdVqBAu+ti3OaYm>D)R(DDMLqaj06gK zPel}brhmO$l~JkmtVJp2&W=ECVGimbXJkmtIY5jmdy5B_(zrseD7~az2mDfGzKtYt zD0!AoprDk=pw*BLPzE}ej}{{a<&M)1HNM!LXs{Z^23S#YlUCXd>G%;CM7H2 zRDXf?6{Lx68eVrWA6^4OgpfJKsH`Ozt2JPrMa1QSt~QeA&3FYx(G|wo=s`w}D0>B2 z)&9`WgN-^Q?S&(i*djFIHqnwVMyYUQXy5*2M{&u?NF-8XDMx^IbEhJs2OD+FJuY93 z1)sn4+?@U?#p-$+gkd24U_O?t70bgS%6}I6|NrEIZEzq`wYBFE$(D1ui+FM+=+lVy zfEr6z^g__%nncnCTU)E5H&+v>u_=PCLNoxe7fB!Wy^a+*?3u>9$m!4_2vI->6?Na6 z!>Eds2>Pk9K5`)@CY=*d?9E(p2;-_~j&+-jrJz+zY*LRQOtU%ev{Pn{Ys*IWS$_^` zm4=z<3jz^!AGwo*PpBf&vYx!$rU23lA&(RYov0uR)9sSef@@Soaye8_NQ)fVVq&8m zbb;`dbM2Rk5gEE6Y;wej|AP_~hR(85k%1z%JVg0X`fUw_l88(Zl|5VVFF6n@)QVWr zx`18g0>3rZ5@}eU^O@-AJrT;VC4X5=DJ~thSrZc-n>H&dnFOE$DU}(t+j3;0wmCBq zVfm^c>Zh`ev0 n@_Ds~dRXWGje1!3`uOk{3zS97Pd%T300000NkvXXu0mjfyoQV6 delta 2765 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 delta 2582 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 delta 3011 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 diff --git a/public/images/emoji/apple/elf.png b/public/images/emoji/apple/elf.png index 2d3099aa06f93217ade89c127cf81c268d8c262b..7b7aa6b60cd8895b4d9d26ca5d513e8b5d16bd7d 100644 GIT binary patch delta 3277 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 LNkvXXu0mjf+LUib delta 3903 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 literal 2520 zcmW+%2Ut^Q7mmyzAc9iHkHTNE1d$4&SZGy7P*943Sh1iLks&PH2t*ok-O<(Va**TR-X4#~o1dQtn~jYPV5g?0fL&i-2TlfqvADP> z5D3I#F`LZ>mdoWbnM@9cBNB;#pGu|fVG;m-dU~4t@0y&PTv(ETC|@`Oz7Y%Ujo!6`tru&@A<15zLi zAeWbyK?wK(wNNMo3W0t=1Yj%{3nT|RXJ%%;eE9;D&&|!Pt*tFBEdi+#iG+*JUu=>P9#l}sm%WV{+^y535`cyR)nLj)-*4K}n zn4}E!51h|{`G8mArw|vX8xSb8QZ7x}TPm&a-&I*y`On%XQ|ayVM{=QOrGkmj%qDHl zJ-tYA=W2dVk#f~vm6auxSw}1{Kp=A09N^ZjZdl11-|L5O>GV6q$T*%F*7rZtv-NKF z9dCsd-N9}e51o5t&;w7oaxA|sJ*S+{N#lBsyBC^mqxWaxP~Oa!tDf7Y5@_Ay|qr*uU>?n zr^-nShhj~}C%trCF;Z$?Ad-e%P0%{?*%PK6&Li2%BP>-8=vY4AA?>PWs{9!6En;-C z&G#p?o~E&=yy=AwK0kcw`+_M?4&AN0V;xrQVMz&U?>$(L z0~#|JNZ1SDou*(sRuq~h{oLK5TC=_h8x7>FU$8qDPw zG`){_pM+TKanCS-q0LVQ+o&2TdVi>IaC!*c4dEXRSh)H=%*Zg>?sxgjcqz5x3K{sK zb#<1Lh3W4GMcV%ALpRR;+7(IA_ijJ^I9oBR3$Y`5>AgT0|tR&J8oR8nz<$wf)C zVN-@nQhXyM!{qqZD>GOXu^icb=_b;fP;k9QQl zmCjecoIGcfiJwH=PX2bbi*e9pUIFr{Fz)Bq-|gjHF?n#y*#qXU|Gk1`Td?nDnsTe- z7*tO>TGt+zqKwR0+4*nk4>B%tf>MrsNdC_{=M*n1>g0S0KwW%@RU+FQxL|e7g)Cfk zT0EQz*E`(GT(yC@V9SoFSo=0XD#H?Ilo?*zco3ep z??R-KXf&VZie^^85LESJHK{5Ye#Sn}1yR<>SLF}e6;ce*HiKPPDcP@!l-#sdb;r)z zngm$HH6VVx(^lPHSH1@Cv2y$VLuXA@*uDMhkyqUG^R+dvolwA;_`OAF+(pnj{i&T> zNf&XpuUhYPoUEz-8Uj9Paqys6!{cY~_{|N}Xd#ZQ=8i2;lF#)b`=8wlj9Y{1>DPpo zD%8_QG7{qCr zvqQVMmS(|6LVaZ%s-}$4fl2mur#3Jih(l6w_tn@H(u~u!ij!GdhEZ{ zI|~%!%%C>J~D`tBCYy-b1h=ZLIyxHbn G%>My4;H<3x diff --git a/public/images/emoji/apple/end.png b/public/images/emoji/apple/end.png index 126eebddf83d6a621e1aa6d68b5ef6ad0cde6e80..0b89b68396ac518fdd0a60d306fb9b8907205617 100644 GIT binary patch delta 642 zcmV-|0)73j43Gto8Gi!+003e$Lv;WE05(ueR7FQ{Oj%i3Nl8h5ett$qMn^|SgM))j zO-*TOX;D#8M@L6TM@L*-TwGjST3T9CQc_GzOh!gVSz`9_0000GbW%=J0N=TZ`_)5I zCJ=z7Y4(l$dVExE0005`NkltKqh0pIecHKC zc0rx8BcUPy?{sqK5cnr0*N^!}k?Y2zh2#|KA>1tMAQ_Jul2fRMB55JHB`qXFA{8WI zAQdE`PdZ3HsDI>4Cy{DK5_}&N-7EEw!R;W?bTcr07}IfxnwDXQqV_9GT1ZANkS2k9`>OnmNAp{ag6>do&UD26;)^E`t0)zQ?n|Ha6XpHl%=HUu2&l3h$uW4q5A7pslWka=UjSBIX&-AmeOC-CbxMnAx8~Fw6E6X!JGL<`OCE za0cNhXb0`l)*#r}@^}WBTM+LM)bsr*WY?j#LndZ+girq(O;E!fD$hBbKyQaFD?4O> zn5{j1YJ2G;$av0mkYna`xeqn*2+1)T@g0QO5U3vFR|s8sRZQjzvU6yGKxIXsuPx&j zO#@s)Y^}W51cF&0X;^N)Aq6tNhmtrQv>wXPu&#e09P4#hTf;DcxeAs;Sbv)qmTTDp cXg=+?KV%wiYk;2m{r~^~07*qoM6N<$f&$ALRR910 delta 1577 zcmV+^2G;qI1+NT{8Gi%-0095wd&~d;1@=iqK~!ko?b&;56h#;S@M%kEOM<*HQ35Cs zXiyL}8kEP;+x=$u?)L6_dyl^E`hI{Mu~0EQS_)K3E7THEG^QaXDhMIr4@poXAPIkn zF)4_U018En0TUvR5+3c1JG&g+d-U!$IonO_e90x<-b{bpnScH6n>mDr+JDfn=;U>S zaitjxgqtNRbi%QZ#@nFVO3F%g!C@xjgE#<02$YuTfCI0`J(;aC88IiR>4< za*kvLcr4Gx<$t_65;t=XA~_0)?S-D?g^lF7<1OUp@O}tH=O}@b7A&!oVpmK~_RDZG z7ACpD5*zV3V|_s6Ll-w-oH!sp9k0dRcmO#uK`;?-herd;i2-8f;bU~Mf<8bz50?iX z(?2N1T4B9KA3?oIZ~So+^H2>i3i0Dus}wun-R^@g%ZG z9VNC|?nmY(MjB-G;f-7Bwt0N#X7s1KYlXkVNwlUeFC4TYKi6o#5W2uAsCY29 z(z){-M}O4|Tn8J);;GIK)01?mi>-8VhHIU059^n<2bm;6De!|0~U2Z>G~ylUHq$NI$iqskU3%mxC1}o<-!P!AUMoDF2>Z6 zP3%1tixI+O*)#NWO?uB!{wdYb@mM%ZuZx$LK2Jf+zVK04i6pV^<6Y{034&;6N5IwV z41WYe40s<_8{|KH`tiOb0A(SdU(_IWFDDngVz29wv&Y$MCrV{S--EXshG_&b#7t^C zn#4v=Uu<@6nV<$quU#-J7Ko1GKlr|_F{i=3YL)M(Ie7lojTy~%$U=(Vih8QwcZcY- zwWGBDL3EVDh9?{L@i|SnSLw%o#;0orm4B{^1!CoC#kX;OY>>A}eIy14>!XEYhpANKeDWL_r9#Mz|;U?r~T(f}}FT-#>^U1vlN78D-kmB@SXH!v#+Mcic4^ zK_()6%WPmb1p_wf{VIh6&2k+Mi$`~EZ)sH-FNj+dk zsfmDG!|~S&$h%YHlyRi^X8G@>SAtR5wX`MV4qaI~NBXIPdqD3bKEcg|ALD}z8Sou1 zuc4AQ%}-g)=G`+so~cCp%ui>vJ%5c-!a?&hp+m{Yu$S$O4>FEpPtk;FB~|sBK|X)1 zJfwi=x3Tz!oG5#gFZ$v<_A}rr1&L%uNs<#|5G0XW)Msw7L0lot)kczcXU*%{K`Rpj z@e`z?qF+$a7FFNr(23;?UwyoFtmed6Qp2Z*21<-wIoIJQ^x-c9q>h8SoV0bqJvzS_z)Kr#1ZpZb`N}xzl7s(7t8e#5dZm| zQ#2Q7Y)E3HSCon|8VI56*WfCS0I5e&ew!^_S$?Cz8O<{Uk& z%=x2gZphkNO((-h>{lzN$$u5&eh53>WF(e@ymR&wN5a#k+#$!2qWcB+BBS(n)glTK zJAHS(cgoMJ?+`)@#t7egyM1@d&-rDLeV_M1U*E!R@2&E#w@cZ9(&^4PnK)e^Tqh9rStz{b|jt=8#c7m?FO?>)7a_P2EuY bpS6DhkfKo5D%uKS00000NkvXXu0mjfU-kSc diff --git a/public/images/emoji/apple/envelope.png b/public/images/emoji/apple/envelope.png index 4b6c0e9b79ca2f530ab2f8b47e4c137d568c3c0d..c3eb62c191ef5169ae1344b5be6aaecad51ace77 100644 GIT binary patch delta 749 zcmV+6-4mxqXm`uh6y+bcZ)000McQchC<2n9ToWuHt%x55Ab0(nV9K~#8N z?bzFLqc9KzP)Ka%B7yV&U%NBRpk7&ID_N)VM2m1MacGsD7k^JblzIB4T)A>(zTaNX zeKzRM>&J^(`94i=i|}gs_@6DpOv^mI-9(w&%{b{V$8+3qjFoQlG~ZTr3Gcu(SSLZB zqU+5YtsK%=V$4W0YvDB-nF;Bu2%O4%G+MtQjgBxHu|WE+L*}3nONI0uXEO(lJoK5w zHY~@EaVqAhJAY`@B%k&)a0sK_;&fItis&xkt#}+3_`?|*;RVAu>&U|TDB++{NU>yb z_S`s3%ep&~Oni?PQ!)}#s~AUIB;tcy5yb{$-{~@7|@TZM}q8e|rZGRXZcOGhoe4vM7DMih>!Xwlslr5=!wDqUY56izq418^NKwvYh1 zV`Jaq?~H|vEhIpw>RO1{4flrC1(XgVIDRckJEZhN08I=1K$f>@de_$-eV;7v_m^YN fl`B_%=Xbw9G(vW`4v^7C00000NkvXXu0mjfqO4>F literal 2520 zcmW+%2Ut^Q7mmyzAc9iHkHTNE1d$4&SZGy7P*943Sh1iLks&PH2t*ok-O<(Va**TR-X4#~o1dQtn~jYPV5g?0fL&i-2TlfqvADP> z5D3I#F`LZ>mdoWbnM@9cBNB;#pGu|fVG;m-dU~4t@0y&PTv(ETC|@`Oz7Y%Ujo!6`tru&@A<15zLi zAeWbyK?wK(wNNMo3W0t=1Yj%{3nT|RXJ%%;eE9;D&&|!Pt*tFBEdi+#iG+*JUu=>P9#l}sm%WV{+^y535`cyR)nLj)-*4K}n zn4}E!51h|{`G8mArw|vX8xSb8QZ7x}TPm&a-&I*y`On%XQ|ayVM{=QOrGkmj%qDHl zJ-tYA=W2dVk#f~vm6auxSw}1{Kp=A09N^ZjZdl11-|L5O>GV6q$T*%F*7rZtv-NKF z9dCsd-N9}e51o5t&;w7oaxA|sJ*S+{N#lBsyBC^mqxWaxP~Oa!tDf7Y5@_Ay|qr*uU>?n zr^-nShhj~}C%trCF;Z$?Ad-e%P0%{?*%PK6&Li2%BP>-8=vY4AA?>PWs{9!6En;-C z&G#p?o~E&=yy=AwK0kcw`+_M?4&AN0V;xrQVMz&U?>$(L z0~#|JNZ1SDou*(sRuq~h{oLK5TC=_h8x7>FU$8qDPw zG`){_pM+TKanCS-q0LVQ+o&2TdVi>IaC!*c4dEXRSh)H=%*Zg>?sxgjcqz5x3K{sK zb#<1Lh3W4GMcV%ALpRR;+7(IA_ijJ^I9oBR3$Y`5>AgT0|tR&J8oR8nz<$wf)C zVN-@nQhXyM!{qqZD>GOXu^icb=_b;fP;k9QQl zmCjecoIGcfiJwH=PX2bbi*e9pUIFr{Fz)Bq-|gjHF?n#y*#qXU|Gk1`Td?nDnsTe- z7*tO>TGt+zqKwR0+4*nk4>B%tf>MrsNdC_{=M*n1>g0S0KwW%@RU+FQxL|e7g)Cfk zT0EQz*E`(GT(yC@V9SoFSo=0XD#H?Ilo?*zco3ep z??R-KXf&VZie^^85LESJHK{5Ye#Sn}1yR<>SLF}e6;ce*HiKPPDcP@!l-#sdb;r)z zngm$HH6VVx(^lPHSH1@Cv2y$VLuXA@*uDMhkyqUG^R+dvolwA;_`OAF+(pnj{i&T> zNf&XpuUhYPoUEz-8Uj9Paqys6!{cY~_{|N}Xd#ZQ=8i2;lF#)b`=8wlj9Y{1>DPpo zD%8_QG7{qCr zvqQVMmS(|6LVaZ%s-}$4fl2mur#3Jih(l6w_tn@H(u~u!ij!GdhEZ{ zI|~%!%%C>J~D`tBCYy-b1h=ZLIyxHbn G%>My4;H<3x diff --git a/public/images/emoji/apple/envelope_with_arrow.png b/public/images/emoji/apple/envelope_with_arrow.png index 626e36b8ad4ae875d854acdadc80699e23275715..6ece8708915dee7059b74cd2a46775ca9da25369 100644 GIT binary patch delta 1093 zcmV-L1iJh871;=oBYyy9P)t-sM{rE)g^T9q=J{t_@bU5USx(y8+V}MJ)X~w=(b4~u zio-QB(Nj|Khl&1@i`m)R>g(;;*x20M-0bY_)z#JE;o;}!=giH}!NJ4z_4c;6xTvVA zoSmJJkdcCegXTjy{c>g1Bp~jC5Egy##w`sw&xjU07 zv(pLIsR&-E+Q<#zUm!Rk=A5btIr8$D<2dw>+fwSsd1;NHzKLXMRW7e3P|4d;(#TNi zLLK2Xi1#i5Pk#m#0JS|T;E+%;)_}U>xFtcQL1|RR9*6XxhNF9&QW+8r$1jm_ev`;L zeu>O?_Qfg{v&UK7n{oWHwD#q_;CWFb^1KIg-Y(Pn<4QHT5&iIBw5Q0PaQY?L?Wc{tf9 z0-!%!nn+Sh1pPSx5a&i75H58Hm#oev7mx*z=mf&;B_JVUj)ZfDU}GyXtdoDksGN*B zdldlrFCheFP<=@Ces@bw-*PP8kbpJ}L&!3Q`U5O4+L;TT@0l&?oO>h$8lee+rU6_^2W z>woVUge}y*Lblz`W+mMtj_5OE8$+t5D`XitfrdmV<&4;=PQCMj!i_^twi}C7eQYa< zx0Fj83b>eds?seH42E;!x(`!=b#ADFcCJQ-kiwFqTPr23(Bdp#{49x)dB9B4F6rbG zifbFv@mB7SIuB>YkAv-mrcM@PzaTjliGM;(jbjdXpRajcJV#=l64VG8x)-1uIo5C< zXQtOI4E+!2=^6`BYy(`P)t-sM{rEv-{0}^@$#UV|NsB<^Yj1y{?gLY|NsBd(b3cR z@aX91?d|Q~-`?8V+VAr4=H}++=H}w!;@#cd+S=OU;^Nzhhr@h*(|UK@V_Lv$Y0m8I z(Mmn*?e5*$+t=6E-{0TX*4DR0J?gr>;&W@)oSO2x!O^X&*ni;Qwn944rl{Z0*3;9} z;c#ixqoCBFp6!*Fx=KQ@HZQU|H1VF4urw~UKRU8JHSm{^@RyL!&(H4i^0PoX;p6Ag z(b3Y<(&*^u>WP8cU|8dFYwV_>=Z=uLM?dhKkh)Ju$ZKTokcaP)h}LFcz)?x?os#T> zee;}@-E?p9pMRFRM?uYSYV@n8;caN@h=J^mj?vN4yKHE@Yi7^S&$CBFxlv28C?2#f zBi!id|2a9{-r(2Q*Xru(>gwv~=;+ti*VNS1*4EbA+S=*q>Fn(6*x1+99k)!yFTgw(7?d9d= z?R#zOcxmi;YV3M!+uh^qc4zqb_tMhR=;-Ls(9p}y)9>%^_V)Jl^z`U(VeNcw>U3th zySu=^zu4R0!NI}vmWR*J&)VGK&CSi~a$~Npu9}*go}QlOY+cpY+|kj|!^6Y#^Yhfz z*txm6(tp#|$H&LzXf%h1fs%(z(3A=;-O<G~#mLOEv$xUG)WXKg zrlzK&q^8C;D#|@Dl9H0lKr-Ci+r>IA&qg`FFeRm>r<9bHiHV8V*Vo?N-tFz|?Ck65 z=;)S~mhpsi^NW4y>FRuZeZe*>;NRcWPeSqX^y=#D-{R)!>+s>^=-JuW+1c0bV^!PR z+<)|OW8dE1kdc$+=j`v-9$EkZ0BCelPE!B~y6FbF2rU!m1Dm>}q!Of?o12@YF(*3k zF%AB-C7Yk5*(2#F3@i}OA{>V3FE~)i&&t%(!ou<8=C;X<=%l3f?)qwT)%VA1$oQ|b zyMGbQ|>@$3+S$ z4W*`Ofi|nJgls6|0e$T5NuhhN3bfE0)=kN})5-FT5C;kmUO54|L$|&|L^{%_iQqqo!P(oR3A``4Rq_Vj@Etj?gOr{|ffe}CLHep(0- zU0tJhWa{{JOY&Gn*YBF@@HW;V8XLV$BYR)`-m-kwPIWYS8zEkAM}Ozu6IWc5 z=gR*2(Y+&0UPx2N=*C^wea)2bGjjdWjh!7$fDz!iB5x0z-Mbq*M>;w>M>pm@FMW2W z-XHDkoO=Jn50;q{{9yE)4)n6>csRY3HI|9k zu}tpu3$5z$@(-K4FP?2W z|53ih|KZ!&H5C<^4s(Vp6If<0eS2S`p7|3HT~wi_{QGv4nsZ|_Fn`-}443Y3B@QMl zE`cJmy?Yp#D$Y=3S`67~wi1_rEKq5KqQ}g3F)$q5x8pClV%Tiu7+bjwzA~j|+iNAR z;KBW(-KHfHmDItY>)F>}xlVC$F?{EsyjZWXl?7el@Ouus?HgF+5c&E(m+M)4{@Da) zQs#G!O$cII1R}9vWPd823Bc1AB^1SBH(z3ioOF2172N&$T7wdVwn>9V;QRI6AWwu; z6qraCIYcMVO!T?@yGza);OTp#!O4pmB8Mm{Jip=aSkUh%DLWS`%N&W|*s+k4SAfV- zjzl(x1DKq=9E%c=56 z{z^(_c_$EwVlfnbz8vlQqa+Oi83ko9(cChlmIaXrqIXk&b1RFHVKp?!+5uK*Z9Xs< zaWfo9#GWpaW&L_qD@RGl^wLXKt5wLt3PGL_!O%1m;eX4>mGGx_Ze=>PV5Mn>vP=x_ zX>J9(G;O7=7+RyXx&NI_Ns8itNYGNttR0E$tPvZYz({J~Sfp!xE1e04pxf7X{pX!t zmBb=JKhb{id4@<}VRmo=A;o(w-A4|sZ~q&Uh5&5%d;9tWkrde*CkY0ajHzph97YSk zg&BfMwtvNVA#mit*7glV78}~Pc189JPD@*o(oCAmp^4IcU-;JfMk98AP(_l1%`o+OX&9~4o*^hJ(`{4A6sEe19NBF>ntZ;|yqP0GV`=6=+nqFQBJD2J}La zc2W#l*_sC*)SWFUH(VQ5O$0mv9|}R7356hX!Y~1!TeVoQh_yeUeV=7+7!!GXQVK_O06%k*CLtp> zU1k{;gr#k985KQn8*myHcAH*&pk{!iX>=YMe4u21qGy7aW^5P}Z5b746c2727k{H_ zah6)8rl&J&YYb1A06=_$9~-8(eHAsW&%ESDb|q<<+S;4CC`6A!R7F0UOH zL1wK|Sdvei+}_{d*4Ebb_xIY`+UV%$v+t~_*T{$#aGHLq z(QHs(CUe9seorlTb_-IGfv$X#iG~Y~45r25J$V>erzXJJ>ES;(%n}I!S)ShU@xCi2 z*)=WDEF{4;GQ1lU`c9Sc6KXX`|7ouo?~EcJrBd?Z)FO7aJuorc*^xfc|0T>`zksF3#-;eH&)Wus#ha`Y+8xQBqL%ChZI z2qZ}L+J8asFGH9}?^h@kaybgbGnhes6k^icF@GLHuP-lQBfVad!VHE`hfV^ALB=ZR zcjrPiRB}ApET~4o3QDlpq^F?IopS?HRn_xs+m=ZY6Dtp)fw3AIh7m+4>LgICEi5vY zp<(B^O(o`#z^NwBT836H8V<|HYUHp%5E--p0TX?))euPM@ynJ^#1NU>FKCb|VR%O< zb$=P^5Q#ZzX7U z6bT_DAOt3AtuI0c2jycAr1(U#Om~1WnwTut)h5Ihd3^LC0EdIZf;s;+8Y7X)w&<*4C3L1dKj)>>8TgR zQoKml{jq~xH~rH{XCSdfJVxUl!V*dcfz)N)*6AV#pzBjf@bQWp;b#|}m0=QrOn)6? z>H1WVdP4dev8TBc3i&=7W8CYFC&{@Xp8rBa&{K;v_-yn>Ccf@Lx)>>SYj5wc*{so; zO&=rB9{*}5^Un{#BXmp&2ZUPf*T-+)Khb`YzW%5kV*Qat9dIZFQZ(aF`}Nb(I1t8h zTmtdW4k3qtX?m+krb&}j5HAbD?tdwu2zwC(QP3AKS>i-}`~H5JAw(P&*`xH^_LvXP z^FR-QaZ-*wBdyas2gACqua2D)8OI{y7_XzDPMFFJ1j$gT?u#QA)SlutXJ@zPcMmia zh>U_Q10)GqCr?uc1gUK4uIq#!A4(3v1R5G5DXHbV!;N`OGkn;^Rx>mATfI;m5dL-GUUSgmdPE;o>2{^gLV z@o}uyZs7oeBxlqIMap65tD-2@wz~ebTD#5R7>KJ$b8g<71cafgD6G(CYQ2U!hiOT=8wE}QBU+N!b3{}4{v-=O2{*)`nFw$b8sdNte6<5VP8MMpjDJ{6XCWJaXEtRW7giOCC-n98{rvYPV5N>IA8nOS+uGam^74hIXLqGfsxBgXDkC^_ylEU2bD2Hj9Ls)qgtK4Y+~d*R zyH9~Z)Ya6)#l*KlILSOPW|=_9I4Q?*Y3Q-8q%9)x($CuB;_2|-o56e~U$n+EBDd3_ zOJkz)>C&h?Gp08!@%{dMA{sh#hK8xl-09FNaDTw&;q2MYn39Z&-tF$o-0IU-O62kK zyV2zG>FD(0;n`?_^>-YDl z!Ijajt3_$ATq`+TQGO>^jhMBLzsAJS!hp}hjdEdJz^}4Hk}c}R!cKlJG;pLZXqiB6 z9)F=*R$`mh8Agh&t*y0pfQA4707GaaT6R9wYPI`)fBb$Vf<5W_YmeVY`Aa{~_xrx+!_UNIG@}{K zD~z?JrTrK*_Lk-&BJ5pVXFE)GoHb?qI1n3~IdkW~>o9HNurN#4#giSKCyZaWZhu{2 zVQ#J>FE6j60=y_}Z062)m}sr5Yc?cdZa;DMWXCCpv2kNoRzX2qTXC@;IXD5PtRgR0 zQSsjE=nud7`Ipnim>V;uIXKRm0Bb-aD?i^iDZ*dM@e3vrX@Nc~^)y>sTwb#`{1 z0)~tmR|ul5p*6ILKp=831_jdeps|17PbdR>^Ark2t~Lcol0dw$;PIf6zrQ}D-)QVN zmyXbA#Dw6ovSJv2ZRm7*M1)pAgKT>t^ljILz`#Hnkr*6ICj0quq*5sfNPiIk!sCrX zv>~8Np3SsC8YXc#Qj!+((u44Z5P1-^y6bo1Kxa@PU%W32JS0PCx*oK&0l#||GKni0se9%3BPmafgg4qJAc+0BNmIRkB3ES9^ATGNcQ>T<3Wu)D_1tBLkET60fB3x zlSuS@NOa0YA{1LOKEC4UR|AX#paViPTGJ~Vx{+~+%PqMn&&*_Jve_9FN>tUZnx?d?R|rgWn(U<;af7&BH|64(7&eq(UJ1PX<(T4uyL9b zCu(bJuP0*HU-k3;-}as_Z`=dY*m&c1O~;x3j00u)S^nZYmw=M=ys8J}q?@nnub@}pT zrEzfrfgk{(yaxt@&}G@iAo|R0{2O8En2TqDhEP$H}3<3`FtHz z3bPv}fB}S=7N+mmnZeK0y3f^irf#-YQ*ANm!+($Ns#J&T;AE&tB$9(5+q8sos+H{w zK)8V4vo?4d0N-}==IK7B+gZ3=*VWa5LjC8Ool-`kD1*E3r%4b!V<6MVQTbwax|m)-{)Vd?@q}w9qyq30000< LMFvhpu0mjf9Jr7- diff --git a/public/images/emoji/apple/eritrea.png b/public/images/emoji/apple/eritrea.png index 09cb8586f0188320120f40b0b199ab5945213576..f7453dbc1edbdea4f357da30ff4e1d5dd6bdee2b 100644 GIT binary patch delta 1619 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 diff --git a/public/images/emoji/apple/es.png b/public/images/emoji/apple/es.png index 64cb1f0e72f6bf89c0f8705aa31ec6870ffb7d32..5863456bc557ecf3d3597882d43efc0feb81098c 100644 GIT binary patch delta 1421 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 Xpg@uKCj;VlvfP8#> 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 bbaeCs*)tX?X0fEX00000NkvXXu0mjftNwQ$ delta 2558 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 UV9VOBUH||907*qoM6N<$f`?DJIsgCw diff --git a/public/images/emoji/apple/eu.png b/public/images/emoji/apple/eu.png index 3adf508d1802d32c9e11ce968ad690822a1b924f..c277b275607b4f99541f7744cd2fa96a7cf5dfe7 100644 GIT binary patch delta 873 zcmV-v1D5=r6aNN~BYyy0P)t-sM{rDEbDIz*QD}RhI7@K~B2o<^OgBw=8Z>AIA5&#` zo?>>KN@S2FPM|$spEOjFk&ks`bco5ZTOdiA6+Vm_Lz600r5ieT5jltT&_fF}g9s~d z3MXM&a-s(>e(YWxrT_o{40KXXQvmSYY&QC44xg^4&9;qkbAJE;0>w#0K~#8N?bh3l z;ye%p;2$sv%(Txra+vpj%)i>+*a>EZm%Z5wDkDb9#iw!`WdHY1=95o8X%Ug0wta^X zhr{9P>wCAmBXlR)?Y_SbqWwby!aYPO(o2Z$z{ILI?EOf+d{lvyzG1LHJ%vB8LV>_1{np& zZ=tdgzr4T#1`c7z2guBB7{JY@Yy_zL4U`>7#0w&0@PB!qXOfVr8clf5fdffu>x`0d zQc@X9@G2TzAf-Z~5n(lQSVt1Qu{7z8vs;MpW`Qoxp|#VkMzoEc=a*2D`qT({kd$#$ z(J0Rd4EgA6D5a#XUm8o=IHSu(@f%qQ^#Q_$`M{J={n9wbSpT#U=?W;V%zGV~BIFGH zQ6rB$p?|cQovs~rV4_pb$U5_S*wZBsJ3u8RiTA&LM%s{VLGMPyhU@O*Sv>r()Ltk)Z&| zw{|Vhh~lq*!>9;VH|m4roPFFjLqpYZv^~~{Xn)&?%xqNk0h!kp4>px6DM0MJgvx_f zdTS_MA_i+|UB`C6lXjd%>XA;%@R+ZApB6%vGKbkR8O_xtnd)P$T)=Y6nl zD`Mz~mY~x9$LK`>!9pX%!{t|q=Dc4+u_Z9Jkdc98fJj0a(KHEeo24ZZCl z1r{*mh=fsqXh6J`R;09%0Q7bs{KNU=lTZE!!&}y+j_~UO00000NkvXXu0mjfBi)|U delta 2453 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 R&9?vm002ovPDHLkV1jrdaVh`+ diff --git a/public/images/emoji/apple/european_castle.png b/public/images/emoji/apple/european_castle.png index 6c401ea66d06f142035f13dbf0226b57609c6a2f..011d1390197cec8208b0830fb8d3e7c12aa76e72 100644 GIT binary patch delta 2953 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 diff --git a/public/images/emoji/apple/evergreen_tree.png b/public/images/emoji/apple/evergreen_tree.png index d6fd16917674e00b16648a4d5c43c7be542b740b..299a4312bd915e3cd1edb8713b7b1a59131a6e88 100644 GIT binary patch delta 2536 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 QRR91007*qoM6N<$g3rwTIRF3v diff --git a/public/images/emoji/apple/exclamation.png b/public/images/emoji/apple/exclamation.png index fb0af104b38703273d5729c6d459eb0e516439f1..fa6539124e029d5d95800a222000dff19d851804 100644 GIT binary patch delta 494 zcmV7w008DOG2Y6q@BgT`iS{0~yYFn8rjxjx1sRWMzKS2=4W-A%J5DEx0;)V&bt03i)HBj1oyeA( zXi^@M?{A{c=a zPVDFCKsIh5A?gzIra>evcdY@usPgwCTk83Y_{ru+dxVGkK&DA#_q60@r=@M4terP3 kZd;bof7q^l+|2&?1C<9in`8YSqyPW_07*qoM6N<$f_6IA+yDRo delta 1441 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 Y_`hHLn@N!WuQd|rYC<)t)Q}PX122*PQUCw| diff --git a/public/images/emoji/apple/expressionless.png b/public/images/emoji/apple/expressionless.png index 87bc7f45ceb5bd7defe90dd9ee40984fe14f72d6..08d47d1d92ba564a0dadbd54073a8a67c7b2764a 100644 GIT binary patch delta 1527 zcmVP)t-sM{rEWfhf*;9m#A9$8QqWfg#3d2grORyM{K=c^UDF z5ABZ_=#e7XdIa8x36x(C&1?dLMgpj75N0m{vx*~ZGXdGTGgu)2T_*wm>2m-5%KhF% z_tQuJ;#>Qu5C8a-`;-I!{I>u4rT@e^|F{PK$qE1WbpQ8-|9`a}|Mg$}t`_v86aW6- z|MN-z#4Z2XG5^>N|GFsu;xhlyH0_%Y|GhB(%P!`U4EnVUdjJ3c4RlgYQvexV(xQCt zJPMBK%AryV!P5W$1p-M#K~#8N)RNbZ+b|GCS3(4;{lKtOz1ZHC^8bI98OmI*Wy0|W zdC4K*2hG*N<$uUe|A_qQ{~}LVnq@^@7g?6FB>zhb%j#-frfKS5@n>19I%CO~H7u*v zsq6dxCD8ZXv{nWCTA8|BI+DDJc^-&aym{BM)+~RxP5oVyMu2hraE9{+#51ZisvgoL zSxK5_Xi&1lje=BVkvveR(p`rdcen-3+=#yGboIwlX@7~H7jWD|uLk%T2k%rWy}#v* zwj&G=9D0#?U@;VFe5dHf8GSEh0!^@y;6fOW22PzWS!6*K7Lp^3h}r8xkpM=(s7c!@ zi7u!GAb-<_i4lgF1CX&bvC`^S1;jYu2^bWTbNq1lF?dee-dwJri^0a=x#&JCJTQQV zE?4J~LP~)Gn1ksnPEl-I(z(60@Q}2N;ie1l4q5gFW{R& z5TJn9DEVWzrNUa>N-_zhj*7Aof`%eWkVm$QwSUFcf5;(Tj;}OsILc>np3{bwqw!_ zAy?Win^X^G+2Pu-Gt_-ckUI`3h`w$`+t&3!RMT7!`zeRZ^(s=n*X$0bhM}RZ+qSH} zqClbhtvI*6N|!0(a4z$(GYkx!%jzCE7JqU8aV1D(JrAGmMhDP1?G;1inIMuV4e|&f zMl!I&h0X;*p@l*Vkt7bJ2UIgLTBx|)BX0&(fLKzB3w&pI|4nD#g46*94+_#*2T=75 ziW%bT2C36d*yjxQ=>YXhXvI)b&LCVmL@CrEXI`kNZm|yAiDFEhScTz~lv zP%qFu*30iC1XUI?a60*&g(1k~^q6(5H)P=Rv~4A(-Fc~Y6WDXn3 zZu2lZ-c3Do5>FXjTUA2J{}LmPh5P^p;w5vbH%M-}e74bhNe`#eLW@fAjTZ;0hxH(I zO8YEEZEq!1nxy_21IHH9n`o-U5;}oWOA(1>3OI`i;lkNY6-z|11x+?(#D75_OlXl0 zm*%Y!D7Aoy0)`zP5bmMn;#4X?!P0Tl*^olLAwh}K7)G`$@OXsx&iiSlS*Wg!CjLd5XlFyQ*fR(bN3mA41IL{@= zM=7RYAy&~kz60lZ0+%IFY;ZvXf;Q~9Z#+l%2z^VjMVbh_E8~anJ=zF7reIBpp%CK* z?>;YDgAz;wg&3XAdsOK931Q#_O-OOWK$&;*5v)AI5J5aV_W9|9sL-Q?KYb9jej;Q4 dkNJmx;18bv-Z}cMfpY)=002ovPDHLkV1i?R+&usQ delta 3431 zcmV-t4VdzX4Cxw>BYy(`P)t-sM{rE6hDW=AK)Q4;ynQz0qCC2MH{a+pv5HjchAq5q zDchDewS`8uYA3>cG`ogGxOFnSaxA!SEV^;{`Qpq z`K$NLQ`M0*`rTLe$XWNrRQuvt-_|R7Q*k1qr*81FJ^}0a&;$-rrJN@x}`{r!&-Cz2@ zM*7=v|Nh$j?u?#mC+MF!`rmB)>xB8qR`b_ftBE<1XeiElEcCfa+>tc+)nek1G_8$0 z_|aVHk2LzDNY(5n8(O}oBMW}r-+t69*wM*y0 zR)3;xD#fl#=F3&dv`iL`5w8FM06TP2PE!C4F^WO|IROX)==~M*Um1O!u8>TVg*o)2 znEsR=sPTfMb8PwGRPoO5a@W??$o9~b$n($X#OCSI$g5vv-v9s!-AP12R9M5**mqP@ zc@_uoP?K;_5fl){-uv09XE!XN7z_x6qJP0e6UK-$5ODx$iea*V3Q|T3lSZ%482IPf{S|WWy<#Z`@JNDqT}p;`$b~%dp|zs-uoWm0g3c~6^g0;vQ?HJ zKrB}+vzkHqpAfR1)vARnmUD;B;|y_^uUNRs%JjD~R4dCB%ZJYA-+VYadJ8f-`hW0d z{`sNhD=e+3zojLsg)4V}GI}dHHKD4wqocSgA@%sJQLuKcTxj^-E$V-;vK5$Hm4$&} zWk>#obEJ09vAXK$oB0*3D;Mg&7h`JqS?kc?!;FTQvLh2x8&+5OaIm8FGs_w8QO>7| zp~0K9y5O&V_zL9*BJixX79OHT%71ST4ke0U?WtnBE~qh)3Ii*age z(Mr_O+TglSC~E2ScMhGhV0~*v{@LeIQG536iHeFs7HH@Jm?*rwCn~ZYCbfRH-a8yi zTX0TC28RWO1qW*^B7_nQhk}B`dJ8IAyWcKR7T8KF^1C8~A|oS%f`Y;b41a035+S8VQ1nk4ll~_?(gUilt_F}gzCghm=7`{z zY4}hFI1LS5U5?V8PbM@+ncb}z=H~qOY^PrluY?BqW?Ub7nWr*4|{SLBka?mmyMNWBndsEZ*nNEuS zwWd0w?pG)?{l9N&DhH{u@)G16&ePcM)QNqH7to*|ReHtSyV+PRvO|IxL34CR5HE^?4)d!PR2)n&+a zoL^!Or^3hK*k7*03R=JX^Q(V7-AnV#DUrLl9Oz?Rxb~4|NV85|yTEZ8-s!SQz9Gkx z=8%e;*-zxKI_lT>P^yD#XwC-tCYPPVN`Ovj-j)^v#D5U?K}nkmQgT8=?Hw{Ql9Q8< ze>pM7zf4X}%*b%C4-L&pDFEj{pO^!XnHn-Xb@hTkqJ)xM3JUHZiAIZd04));v4D}A z5glz$L(ZL)O$bs-7ywzQ---+{)xCok~f!eOR*|9W` zJO!6T!xEy@!Avv_L3dK*V^GK#WYBmw+m8i9!je2CB_{_{cv2X{|3$+Bt|uoYMUEY| zQo{1fzT2j0&8$(D?ZJ^aIRgZjKuO95t)#KAf`1`!HXz7_7!e1cMhng9ZTwOu&EG;dO%ZrMHLO$vYMkHfuE=Yarw!3bA9In_Ipe&F|Kq~b_60-K9(9m;O z0)M8Y1e`3P5Eta<7T#v9`4%x<-NwuIfZmkDd@N}hwL(xdErlH@NX%uRS+CZ7(^BTZ zkV5P@5^*1!FU-m+%7U50>4P58z=%MZumH<0F5qPG`RqQigk=}vC2KR+yp50-G2`!| zlHkO#`B_;%{qxyhaK4=wy!!0tzZd!P>3_~j2^8cO9^YuDebY9!Zj%L|af`i&=~?_| zPd2_Qub(`==u2mNLqP(g0G^Mv_9q)v@59FUa5oPDOXB3s<~x2n_8vA>9&CJkk#Jzt zUJ;F}b#5dKL_RzyiNoCjQr62WFRnnonV2izpyewsUj0MJ?sMA0<=CNuL^fodpMTgU z%m`c(mM;Ey|Ni~IqWpP$&=MT_(UI-#l;qA5z=R^0*1A6+sdGeeJg+=ILW0Z5F*7sM ze~Q4eqc7dr8|nck1QldH?oQIsn(32{ngc1x+nG)0^L>dpYC^o^^XY8DfyT1aE-PV$(FM%z0zcGO zgb#DuViI`@h>FI9q!4J2fhg`Sz|_GARKpP1`5CzdV8@0sxgem)6bmHr!UOV*{1C-q z?byK`%MKR7KwCsTGxeq@2!BB&J&@v%1VsTQU@$oF)xe<#1}KOLaSI6NVaF7I(G+dc{+a3(v(BfmT0E_b>62}yQ z@_P$IxCp7gR*x=4GGH|{GhZ`pn>N$dn41~G`#e&}@B6nS+#rccnQJ_Kk%7(3nKlOh zof035EF(ya2v4EA3d8*nF_O%IxeKh76HehZgM*M+2tc2KJpj%oJF>q|0)YSk002ov JPDHLkV1gN_?I-{M diff --git a/public/images/emoji/apple/eye.png b/public/images/emoji/apple/eye.png index 92bccf8d5a5cc2ee6eb9f5e48df4da1ad4ebcd61..ae3ff4deccfb3014b1137f59b6f02985dc7fe389 100644 GIT binary patch delta 2062 zcmV+p2=VvF8JZA~BYy!nP)t-sM{rD3QC6Okl!SJ9f_rSz(QVgDxcg<+;hCDbqotB$bE(?Wygq)C);N0K6w6}g%F)k$@eNq>5 zOcJ@RtgCzsu&cD^;^l5V3c!^VbYNmVMJp@Psec*TxFM#Yrfo?p_44$8NduXaqB1Tn{{H@vY(~6*3q2zunPUyim<^0r z4XJDpn~IE&iI=CKuWU{|=)xZ-2nt4J&5r;802y>rPE!D)cjOB$TK*bNd!61e!J5U| zmu%9#=G(rT>tl@o00wwTL_t(|UhUUsPa|m-1z<3SvVRE;L&u82Ip>^nPUIXr{r`Wk z=f1DKc<2_*^hzs@)Q3-e;L$m^Tp(8dMfsCIvD)mLo2!(~O}owdn+lNC?Z`9|iHunO zS_SqS%Ifx%1roP9oer>nX4y8kr!&elf}eLdKv1}~x%2AF*xz%dqhvpypL>z>^yh9? zA+9q5^?$lnJH(`BBOqRuWA8CfI_nr=Bq;kU4*&KeF&!`nF<&UhUr6$%yPznmzba+h zO@WDkVG0N@abN27I#KC#I@@8=Upp_)`jkqgrV48V<~-Z+dHjCA$Jfq!VI3cb)9IWN zp=Y^mf5EYTytqh>7=tpOJ0AampXK1-z~4?6qJJ(bmCKHPA=y8`>A+!aI%wkY`M$E8 zoD7G6pQ6br2;9J$V()3BPmGs=fh^7y zI0*~`l$bYaB>Uv}4~7hCPBJHYLl-p~H^Y1I-n!)2aUcVI;KVM~071AlU#2;z5I)>D z!*aRIDh(PsRSI`UDP*aV?HxN1927cD2ArnTGzU6eJE0l#LI*c)E;Tb>^SUG#aDOFZ znz}%xrAvoqU2k1aP@x7}hCCJ|T@;i)7!)GNUAc$U%w*KO#I|)isf&vX`%|G%Nl71z z4F-t;4mtadc-&xz=FW{fG`YXOr*VS?WXu5VE)|+~(^{TGE$}j6qwA8NK>?pmuFz>~$m7|__mn7=#U%e4oBoRX*l$`RySY}*Z$+R5W5XmC;-kAKI2pm65N z`F?v1=`3U7)`faF*Nq!WKgGA<)PCjBRZzt_R0R|O#o9b`+}GE&8lbo&YXw(0mju+t zHu`ki-KD+}bVXHB=a7WAbBvrEEHiMB=3NU=B{QI93&@AR$$;M89JC42WWB+lL;#g2 z!<%J>rFPf4uH80IR9V%kLVxg)L4Ai~ZGFYMd*f-xgF;o4rA8t~Qm+ZjPV}kdYsYh89BJ|V#b)`Qpod9l!SG}bk08~~CN92=LG8X` zpwNnS)z|MU$)FI`M7_Z!6VmMiG66ykmnKKwjt&o7w@s&rXI2%$Ie$P(+o32Zgi8Bs zibF}Fk}Q#gJBiJ+`&&rY*JU>eJY_gXM~5g>MIl-S$Y{3}WzPx+S>MkZMpD3Ylknbx z!jbNVdZ{$#+I0`M6DR2x7440CEt zrwj+nSRn@+_7vL|e1DfFi;|viV4q%u#Gt!F7zi8$mkwy6`cw!IhAn49a0R)~%aI)`wI8V%#8hQmHWf6w}xXqeVXoRUmjoOhaAtrlJmQ{@f{C4cUaR1m@il~Z~{ z@0HJZsn%T!xdv12iOgZcn4@g0{21FCEU%KpsJv>H&zObamw(4u*(^wNM}T9%!J&T^ z>sGZ&A8`>Bv(z3ep0U|eiQ&!*eRwR@XgC~IWl-Fb)aszu>kX=^2nKaHUX0ZuFe<9S;s{rWp*l%J zK^*%w2E1I#MSqmQt%btd5JSPNU&m_Qc;j+m17X!D2v&vv`k^RmsPnqmEN=u*u!1bP z$HycRkH@oyv9^!vygF!wLMXMMatw>F?ODM5v#f7y?d5o&5VN;$S^vF%Y_01X7R%Pw s*8bL(#j>$(gYv%x!2cnC@+bcRS6fs`z!1zG00000Ne4wvM6N<$f*wlOn*aa+ delta 3268 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 X9&<8)_U$-f00000NkvXXu0mjfr-8%+ diff --git a/public/images/emoji/apple/eyes.png b/public/images/emoji/apple/eyes.png index 4ae438b91a385091c059dcfe75be8a5061de58cd..5002c7f005285d809ed5ce7245a1d962259425b6 100644 GIT binary patch delta 1148 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 diff --git a/public/images/emoji/apple/face_with_hand_over_mouth.png b/public/images/emoji/apple/face_with_hand_over_mouth.png index 7f80d6c4364b4789f05275ba1b8c3ccaac474e1a..9ccc5469b4b1b2c59dff9fd925d388e4eac21037 100644 GIT binary patch delta 2107 zcmV-B2*mfL9>)-nBYyz-P)t-sM{rEZUI)Zs5YBQV#A+PDTno-@7{72R&vYWTaWdfEKb{8Q5zM?RW~BLIh4&Hvg;!|NGYe@{#}ey#Mlq|F{bO_OAc!RsYj5`==lN zv@L=_1d~n(`k)v6ttS54L;wBe|It06WeU!!E$hrW^^6bhxi0?NIQ5wm?RyFS$1eZI z3I4(@|IIM}<9|TaBIwfq000zpQchC<=%H;^$ciRA6RY3n%6Z4@(wNIK0TQSH00!wv zL_t(|UcAuzl)&5FRjM;WsRn_;ls!F#rLx1_KrGt`6WU+XH7K_&6GeiFb zqZ-dVtpM?{R|FXp6kh2+ft9Aumip19j0a#q@q)vspbn2f@rRF1rI^4}M_gowLk8cz z?2v(#+k!HcKVP>T=O-|*PbLGQD}X0JfrJe0zN1?R98w2u*{Gncz(3LyS^8ba1m_zr zWFxCHWPd?UD~?S4u9K$JE9$zahuBboLpUX{-dw#m4>+|~w-s-zySy4Cj^^*oq*>CD z^;$m~{PakdkWB6NeF-NQd1I|7dZc}aq#Rk(8_*=?X@YZ%^DeJX3PS|K7}J!;lWRwx zBfbkURF-94c2<5(z+s7H2}dvL)neigA~@`+a(}=L2^o%n2{GB-SWbx%PeKxgVI(V~ z@@7$62$7I-6f4&QEeR1&XT9}+?hD=4A!H?P?s^~s`H<_oqR5TlGt8C2xrjhwq{(=o z7%i!7+me#lyZJq16PvD3JQ_)TL3~Ap#2E9L?>By9UzpnrfW~du#cm`6Z`lx~;^LG6 zWPikHn@}l9i#6=LaZZ=NQ?*MLiVUPgqjQJ>5r9 z`u$_l+w!CMo&rRvluEi^v+R5pS#Y0Jkcsm-6W2Q^z(`6XfR4q-d|0!$kK&l82x+Ri zm-wV}cAi3T7xD65Ni2#`iqPBZFrphmMlZ#(dIo_L1EZb%Slosot!xFQhS9dP>3_N| zuC78s!M(y#fA4{U#I=gyUnp%`!_biZ($5;9L`zMhrL%%A8q(TDL1%Pm(>$C6p?=!y z3G|SvOZIs60m77MS6$aAXM~phq5)Kc1Q2FYR25{IxZLAO-7g{&!H-UUtO1&j(6-i* zbf&K9;AxkucB(qK>IY4XMv<4|MBA{rSB!nS|7woijNtD**)X|+;=4RdR zMw<~rCu%7rWG_kC&<3s)z|t=dG~w_FBg}}D!+NOSkyblfLm(lA5clPKNq;aKZQHUX zZuu?^?v#|cBw^?<6$qi-OTQh>Y|E;3q$rKBXu#z=CCn(X7$MhF)pFr8*WK^angNrt zLfy1AU@e2Byk8p*qDYE!`Ze}L+YDTp#mQvkO+Zh zPVcAA&m0#9^)8v?00RyN!haFX#~pHK_K^n21;}-gaZA|hVxD=vOAnCeEZp8vqs9>p zL+T@`Oe{)S0NqgT0^<{O{7i5{Pmof;4edMv!H9;M1B8*VIffF9LEcNppE@|G&IQMJ z2|7BExmf@(_J)y^gcM6%hsjgvaGzsel^e@B{N}babHCAI^S^q$H#g*KymbVjFHqfFyBT3QiM*g1h^_4=HzQ zr(#(xQog^^G~%Yx1(n>CK9B3bA#DLcawQ%6r|TC17Lq$tNBO+0Z> z3WVQE+2l?p%36Ij;Zp@RscMaoXoo&b0q=QL8=Y|MONkz zJcKOaJ$JOU+js!gNvb3Y7RAk<8hMf!Mw%aC**54bR!_eegCs)lRveWC0M#cn5GgQ; zC1BjZJa=&7OMed_yQq}}rJ4SK-elU*>-D@|z5q0Ss?e3IL$&Zia4^n)`s)AsRRC1< zJ1-h)8!K)C9B;Rq%_qzLJk(A}Kw;tDTo*-QXJMFm-faGfA2sGSN@!`LxZQ5M5S;AG z@)Ha$9!NK36(6A3w(WuQ?duCR^?6B`4K@4n?d$r}iZp&3%F6omPI);|>Yr;Qt+myG}b002ovPDHLkV1lg44FmuH literal 3877 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 diff --git a/public/images/emoji/apple/face_with_head_bandage.png b/public/images/emoji/apple/face_with_head_bandage.png index 3e745bac06aa097d0e138df5db02fa512b4b7eff..e1c89b80fcfd5c274ab407722c6a11852e641e62 100644 GIT binary patch delta 1912 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 YPeno+@+IICw*UYD07*qoM6N<$g1&bzTL1t6 diff --git a/public/images/emoji/apple/face_with_monocle.png b/public/images/emoji/apple/face_with_monocle.png index 482da4563327fcb0762885ec0aceecb16ec06ef7..01e940c4cd01ea3c4775e3128f679f793c4fc37a 100644 GIT binary patch delta 2347 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 R0cZdK002ovPDHLkV1jA7h~5AI literal 3707 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 ZeF0xS%h1-&O1uC7002ovPDHLkV1n@yVCw(? diff --git a/public/images/emoji/apple/face_with_raised_eyebrow.png b/public/images/emoji/apple/face_with_raised_eyebrow.png index 8f01e6e7de6dba0537739f22f3dcc93e1242d656..27c5d6c4677cd04ad7b85b6eeeca0055ee604c01 100644 GIT binary patch delta 1823 zcmV+)2jKYR8?6qIBYyzrP)t-sM{rEab{)iN3d(8(zK1mRiUa44Aj*Lz(Sah%dL#Co z8O3J@#A*)5Zxif=5aNFm@0K0peGT@e6z-f4D3EF`N)_DZeaRQ@d2>zP{ z{_9=;-a`N4X#VSc|MzeI&_Mt1MgRS||NY1R`>Ou;kN^3c|9{(4|M`Lct_A=7)_+C> zlUWLgQ4YJ2DB{dLSuNUaMKmWok&ZH{;$}RuU3G<;6|Isk&$}s=fGU9px#+3Dm0000I zbW%=J0DIK_5r6)gBt2Z>>AafMz_#W1W|Q~;00rYoL_t(|Uc8d$Zre%_Mk7FC10vDC zx3TxGUfoNQ`~J^!XSlQ_TDD^+K+Y~fh}=E;X1L$}6+>0k0976Sg+$dA(*RZmVk)}& zXBN}g?iY{GJS_HG!yJ6or76aC(OTy7YhXS{*Y1K&pf&zv;R*0na0MJxSW5d*+G3W+OndqZ>JWFj%IU9rxb}K>sOH`BXYC0?KV@9l?|+JHg%hny5!r%Bn$X35mU%wgI7h(O{NIkf z>?Y0xQ2-uaB0#n^8X#aZV!^C!vx(K1fMghBjWO^4JpbvcrVBGrf<<5{hCY7Kq&?SG0i zRMm}YH*L4>isAzomSZE=Und;;IQ`nE*$M#!rfb_)HFdQ+|9rDc8sFY#pSxXMHw}K= zb;UKM-^mXb0QaDgK-y`Vy58+R|GeEMcGquzK92-73}FZ}#Y3(+Lzfdf1RXWx7|6NJ zXVW89;!bUrGPJ)Vg_c&dqwHFU(|-eUY}>H|jlk0uH}KIF0Sui1|(945*?1U z@CAPp4mWy+ct?wOf+}7TOTcsrbNB(VgPC2wKS1%~oo1_~5~#j_kwO&;0e@P=j)5l0 za?VgyE3WiJ6;=^O!KrAn2WafklDJaYs75Jr+TKR0)laBPE`${=lZk;w?rn}Gaix+R zj$l#;5};afAzD!|GLRqM^paRAHFfzI$R1Kz!ojNbWVg`&X1BdGvuUYRReBi6N-1)v z5GJEb<4n9IUI0@g5tQctIDhFO6K9IaXhn8O@#3k{HqZW<{2~zD8CGNy;sqd;(CPO; z{wfrQ0Ax0*G?h-sMs5BIzJ>i*M{j5mdy@yqcatSw+`ZF1N>Z9s?9gD?kn01GN(m}q zxMxZ6(GL=Fs8HenkocjNW-JLMQBMpz*fa{+RogA;;Y50-gb_y%Mt>XXsl*afZ1pqj zU@*HO$vChQmm-P-f)OxOhaC(S^t_R9FdR#!l)=F5^kIhU7$^2*(-J>QL;^+DPGbZf zSpg$X68Zv2M&Vsz3KB4zvoOY?8|%y1H4;jJ;#vUdkq)BkutN(Pl(-ZqgalEz&XB_y zk%Us9j3t>`hUbDaAb*9pJCxECS5^1coFS+FcViO zWJV!G826>O{-Y@HVx|m61{BS}2~g*?j6o%OSHQq=7OW%zZ|7CYaXnbTY~mO*d2Yna z>+vU%8vsKfAf6Yv(HH;oGj^iTbpyn8!^jy!`Eq=JMDcwAz8IMQ^B;B2TlEUY=n((_ N002ovPDHLkV1fl9c0~XH delta 3555 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 Hu0mjfDqZd7 literal 3709 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 diff --git a/public/images/emoji/apple/face_with_symbols_over_mouth.png b/public/images/emoji/apple/face_with_symbols_over_mouth.png index a1c246c6d18702e90aaf3870f4964eaefba9275d..9211ef24362db8d9782628a521e73c9a67aa3126 100644 GIT binary patch delta 1941 zcmV;G2Wt4I9ik7ABYyzxP)t-sM{rE&Mg!(T1My=I7*A0HMN7%MI>Bqb&@8W#r#2m1Q? zNJvLsUR}k-#B+3Wi;IdqHZ-4~p0u;F)YH=J>*~le0^s1^l7ANimm34NCjg-!17aZs z{;o;>x>a#12>-)i{g^WMa~4w<0emnF^=J|KdK&$sJ^YX>*Mlqkh$P2yBcD&X0m1?@U2OTMiuc~3++t?{>^Ov(sHF=DZYd{)1yx4Mg#xcd#!RY|JQfiK?Ll! z>Va z5C-5dfMhh{O?uJ3@9efG@BcWds-{(l5XY0-6gmR84j+G2OUHlwPwUNH?fvb}^LAT* zzjELHo8oSK&sj%V*0ybyWzpL4wj1}inbp==XKhtgMSn_LID6gy`51fimI_x6>O zf+J7FkbguL8+KV%EPdge@%4{|S5N9oX?uvWO7{H;i>;+W)%U81Kzi-$4^h<0ARvf} zIYtZ=1hR^v!^?@U*3ek4lz~{{Vy6$3%G)SiZ(a<@0jH4kNMN1VdqR5i$jA`JM{6Rsjf)`TpjLCm8JF;;4K5lNL?aC3^kSN$>|!pAjIe0X|cB* zJAbZ25J(hhyxl%0`r(D7N{pIZuD4MFgbqQD%booo2&DU%0JvR%YGk0`MJH8@SWH*= z01O49e=q6b$i4Xogjk}z>u*yW4|rSAp-K@a*C2o~lT%d$L88N!Zz6_RlH>R(;#%FS z)A7`e(mDWP9)x(`TnC{CiKtrZ;VSf~B!8A_;>(ce`q8nFkVC zAYiE`h8=)-Nc$r}EFm?;T5Hk4WTD^$y+OrOfpN%b(ILpUvqs2Bt<6+wktAAN^0@|~ zai!$G$U(?Xd&`i?1XPV*OT-lBAu90JfDBL#%n~{t?Jc=G9s%O!+DFJ1L!hujkblPz zMY0l7r6#C>(JmleRuwy@v*XVtv}|q?2-RV6udpU4xjP)_IT1%P6!s>P;-P@nVkpSr zKn&rq=SV!Jq7g!uFj+dFa3e)yp0GtA9=8Af94SMo9?G!d0%JPgs(sfp*&&4f_5> z3;c}cDi`_xKc}x^LJg!XoL=^^9m$I3vEn29D6@xX_43d{bfbU}k*FEr5Lo8cxrJn| z%DEGY1krSUXxH0kk=R_aolTNL?;#CSh^Mv`Em>5>mEvUdh)xo2%U`emtAE2`50Thv znyDv~xN3k$oK)jTDRRc?Xe`^-T8Eml2?P-ywKJ<}KSWfF<6ttuld6fOL{pWBH z(3CEfIk%)*rqPoHqQh?S@*g50Us+Sne7bzr8GE%vLnPLgYHck^Ak)5Z>RxDwmJ5ju zewru_r@=dxAu2;e34Vx}vVSqAHykOplv>oeSr$phd0xLv0EmRRG~WU%L@RHyFRU5O zWrVnB@;HL1+FBK7f~FywUagU~Cz16AUvsR9C>3K`&4~nhd}`H`ww1Jy3b6I8S(wuC z^(tZo5xM4_uU6--5YD#rYP`_6yR0O1rK1yDw)p;_uaws405z2fT)rIt0Z@*SPYMFo*|4S}qQY^Wu~ots;LXRlR7fo#~0$namKyW+4rVn0(NxCOte?i??V!9wAz=Kf`;5p!YI=3$yP+S_(Ex7v> zx4#02-f#`RKRrGCSn@FQg!YFYV*@w?kB`4yudn|u7qI^R_t!>u5)L0_NX(@JRE0_L|Hkj5>iBGBoy9OMhR!HN>-#oc6QD> zl5u2aA2L3^|HSw8csyUPAD^$s>+yWPUawd)Q-e!vU^Y5Bx=V&wU5oRI{XeiWo@W;Y zoj^J|MmjT`m7c+UT%W4&7+z$;PMmCtpje4c-I5%}i*#xUlJSTZ8TJuVgsz%pK_G=i9?KS7yRe6e1)vYz!a5!KR(1y7aD4Y{hb9`JqA(I2;ZJgC}oFoD+S;Kp{{l8psO( z0A}1#5D27Q7gnJR27y4*NMTV3sKXfk^tw>GCJX=oiX)L@mZJNe{(EirX+1%Io~kT| zUtf+w(|!_Z{lN$12p9~u8mF-staLCGw(?wczxNReEU*-+EF&Wgg+k~3znNIFIdbEb{sAS1HW<1ZtF{rZ34#ircQ`{pEk07*B;mI|I5>!M{(Xzv zF1HnzmOq$$P7PGpNY$m-i_hJa<>LdazSP{Vxh*Cx{v5$8C@6?PBLBWN+A6fz{pz*f z9mvhaEhQzD?XGe@Rn~U(BQz! z7cZ#Pg-LVdthbCc{L)s5b)yz^e}C88+cVu!zNe>qYja~|<djmX>c= zeio`HYRO;zCmzvZ2v12)ipC>5VziAxEK5&SzWFOQ>%tObf&1CmprD{sd-471n~kCB z_t5;gdLpK#CV$fO=N%;SO+*Ln#VpLtxO-JzkJ?t;XqtkKAJo$Wr4SZ*`$m50#}NtBsDk>z()MXw<}WOOypzm|D`Y z0Q|P)qtF+1=yOj~L(Mt)Q~qw1{sb@f#k;2Fb07EZRrSXRPur9J8>Kb2&ClCF44WM~ zXm2ckRKEB#^z-chEl!7jmoCuJu~iuAVyx`GkGy(}OYwwu0+{$fe(j&;UUs7=ltfb| zd_JD}>}LUQ{rd-lWrO(fd!=ah$5RuJ(KU$S~Rfg<3rDxp_P= z=ripn8ygT_o*MhwidtyL!4iqGRZ8nlonlWdh*bU6*p@*{-n}NTaLXbi)5h;uA$49% zewh84izujAGeCB+QqjEX-`+JfOS89*^!W__&HB* z&7W@)F*vcjv-$%A+*HOS;orS!L$wO7-}Yr|mjU+n_5dEqPjAxFk^-dajRp1U{3Q*;&*;Lgy^Ik}Z79(Xf!}HG*C8B^uD#*c!+7ZFXA4iS~UAdkypW3Q*T* z0EbT;e8yLTxJ+yTzB2AQ_Wm~`%SO^@5;dW+&Z5jyGn12(K?rs1eI@1%hVUM1ZMlS} zsKdP^5Cw*mV2>&*)4t76P@p^BngHkX@pMiz8g3(DsUc2Zp1bbfnx7wM=H-?kuu&qK z$*hTH7O*fKKL^^)q~wglh@#w!j1rOznz$I!p!_DW6=A|47ZX73T9o6iPnT}*9-oU4 z%`+lTOoz%bzkSxOOVks?^|Wtnm~xktYW2QKD%?#LdL2EOR35;a+3uW9pR$=#>0dd} zBjfVH?&=~n>YdZorWv#f4a=(L?!);4o2Swwd_BWuzo(G?9d8y>>nM52H-5faO2*8Z zDdPpTvag&}r#z&>JCcu>E7<;$l;mQ(U;#<*O7+|RfvB8$0nWkW>!)8!O}VuOXx`xM z8yKipiVH@%A3_dx+jpqxBGOYETyZ8Q z*TD%_qOgW#3yWNuuKZiXw?-LB68Ta9FXsSrdw4W^zjV;Uv(;Iyj>E%3{=&jSGlo0a zQt?0Is}sLTt>1jbN_<|p@L=oOU_s0zNoHwSf?f^8_dJU&3-M!GkIREn6k`1hgI?0z zDNj6`{xW3+6KA{!0H$;y=Pf06r+$3auJzT7h`Zlh;Pz4Lb*`a!(^*A*m2Y8n6Wj11 zAuzaZul*xa@NMWIOdiTlB++!Zib_I}4FSW^7v1KXaUSeIj_6-$`rl6^0R>*3jfV?m zv!%IOFwUhGW(Gv?-R{|$D48%UUoVq3V2Y?Wb zJ;d<5!P=5bws$=v3C^s9+mV~4xv~;Mahyzg7lnm@RgPpmaW2F7T6?+?@LNh8B;tHrN+7Ev3!E)jmCb? z2PenTf6fJl(BUF*gG&|yd0s}<#o~I+!@Q$N#qMt|xw*5Oxv5q5VpdyQTActw;?cFf zx@=74De3@_Wc%7Xa-2>#c~mIId`C$7ntvLHYx}?I_*B9c|=y})939pT;5v)eIuW~BQc3*#!_G|PClF1IHQ~5jK5)2NCP|{zI_d1EE{!9IPPn$4jGh+OJ6F~== zmIFN+|FVNynsc zMeXuxl+uS7juG-DV&ur%i=Bm0l*g#qPVAH2^pcqRMU~HeVIysVA13?mRQtyl+c@+w zGJPogu{PL0?k%vYT<={IT`Y3Yo8W)3-r+_oR~^caLc|t}j7)r1jP>^Qpm6>6OLEm}Y0;}~H?NXg0DB>w4O{{B&|s7LmwtKck;H1f&hN0~XDxv{6- z4SA!UqU-CE!6E4kL!K-hD>#juXJ+L(gveZ|Ne<<1eM8^=P=aB4@u>B^75^adkrS<5 z)3zYpDP@?&Wxmi23Cag;+w%G4H?E=m8u2!H`UEH23z1_QuC!YG_&*>|8F{e|?&!*y z!a`5-O_J$4$kvLI9X06a0HWf8y-}F?Qia5ZV|6H)RO%n181u}lytd+>r>L%u5OmSp z;2(~ocJXFw@oT3Ehlg}Y9kW?04{XNlo+wMwn-jcP%1>M^y}e|q%7_S==S&G0)z%GcI11pJOxOE@A1)UPT1sU<52 z+;$6+sPWEyylxZKGCw4so-f1}UECNped{cJO!wPAV)LIefAp6ZT{os><1wq-*R#(& zJCE%zvykZSdc*XGMlsCK;RrpxQoEz)rkVG66Wtml4w>jfq(NDRti#h53(;oiT9>>} zOi5wk4`s6%P8h;se>soXv}pp#pUr@a>? zcIzv24 ziY9!9d>lQh##|HC`#871Oq`#9qX&A$Byk{ReT8L`y#KP?qBNiZ5r;_WHgcY7Jk|5= zADDWi2IXK&6X{tgQnmObfcx|CbHaScTMEaf+6+yobJ_I%@xkn5nC7jb*FrPJ(LBij zy@pJ!zkHxP^XlbB=wA9*Jt>b6qZ#BVijmjJ6v1PD?m2g-gX}!cg~0Q zQ9q#fRJ3CJfT|yf5q3&la~8*=mf-NRu86p@BwWej?dPQ?iao~H6S!^Y*}^#BQTH1v zKGd%^-^sxj3{Q1swH8`lbY7~$Z^nW&gkQ~7+1+GYI_wp`V19->Wbt$c*K60c`=5W? ObcTASy6?1aNBj@DjYFgW diff --git a/public/images/emoji/apple/face_with_thermometer.png b/public/images/emoji/apple/face_with_thermometer.png index a9bcaf3156b5289bec98755ebf5047b092bc0740..d040840fc0e8b68019531081cbf5550b60c8bd00 100644 GIT binary patch delta 2530 zcmV<82_5#}9P1O1BYy#sP)t-sM{rEjeILtg5XxvR%4s9gcpb@gCgPkT$Y})5a3iw0 zzsP9`$!HAViYCo(3H6s1?2H)1X9mh^3Fw(D%WV+re+T4+8h3z;>yI5>UuW%t52}rp z+kgh&hzi$v1@@&C>9a|phl|3DR;+4g#6Ujl zeSF)wzH&)R*dHC;ouNWBJkMrRoH;xHjx+w=SO58&|Go?tfxkB>-zO0{`$x|Ket{fF1w%Y>QS7|LTGN{Iva$0sr@q|NX)L;5`4c z9{j2o|M+|V-Z1~_K6XC@g-Qhfy*B^-&i}?Y_nQvz(nXqdDZG^||M-Rfw`6pHRCr$0)7Ng|Koo%CI5hbJfy4%(ywJG!-swHPXM1_?J;y_Wogg+@?alsH zgc#eO&VLNb!9S{U@L$!aur;RH!J15stvCKoVQZaUtDj{&mSz1`yTh>Wwkk}w)#v$d z#dyBo>M`~AFmtFUAfDm~45jw= zpA_5HU|UW&OQ0<_qs(SCiEm(gt$o|8qH_}`Nf;&ts-Pqxl;~uy)X3+#;zC^y^Ag}n zg)}|Xoqba72%JtUV}Nc5jMJ%9-TjZ%Rl$k5n1h}$%54o)Xeb@CyP#&I$v=Y_sFepg#DN^lP!ta{JbdLvu!<=LFn#imG*1&s; z+_|_+3>pDSriCnkaKrznUE!UBJB(ypw54p*4STtl?=lJqklxf z!4YY_ntd>cxlRQLC3zQ3UGy#I*c1LBP&0nw@{O?HrZdiDf>D=!o-MHELI$ zch-*7+v$8Risut^yk6ehBe-^i>m$&lm1VkDz|0?RKm9mjx4&7m$f5b8=}Yz~P16y) zK(%L*e!-imZLcl!cPDoCn>H3k0e>9GVm4JugcOYiOvu9K0HGwI(4<+~=An$#hh~I$ z!iZu739^ZiL1vi5`daDbA*!&Uf!MK{*;!I(q3%p?La-GnxB-(iIh5 zH|DLo+q$O3AZeqK0nGxPH2b4@oupX(@4s5Yz|h}hULPK2w;ahskPN9azkk&XgQUKR zy_plR%&dp~tj6lGSWMIEw|&b=CJ+C~ZrQ^H7nAN#mK8-ebSh@VwCa~u>x*D~ogrW8 z!fk$YgZ&yc;TVQ)*bbz_BCE6#0Mrm=J8Z_5AV@d8*`qYgo0?F&sTnaCx-Kinejv$Y zI(g`4kZ+Tqp(x6tm=Xyzs(&rPG=-Mgd<69+$uv!=HP;MXmc@CYcmW3iw924YfYin? zm0%HNecUp~V^gZdW=({Bm;)a}AHflar9w7Y_A}`9pB&qL1~n{Y7g9x zJRSqm<%C-DXKAD~G1=oa7sokJR3(KaAy*k>HkX<886?e>g!-_R0e`{jWRBw _4X zV%k+za`yK2Af=8ZfuQOvhCPB3!__ovz-vNkxO<%0Djz1(Nbf2^q|?O=pky-ZKU#!etukmmKu}jD$CgraL6T~tIvkQ% z>QzaClPF}~80XUE`O5C zk&`*zUPQutVBLZ^mxm8;Pr9E!li|$PuEf~WVq2P~8Ctz=l>Fxxrzg3C{CPT?IbPf^ z!eKtRVnd-gLER^iqO?24K(j&$LG)Dk&-1x*?%*Jo&idcp-+wQtk%t{44*O5D*_E#M zu6Gjz>3{|rS@7`5U_j1Q{^TSNhn5Ep5{|oJAhg>2<4WYDly+bh+)xmY}dy!Iqz_q$(c+i+gNKXk-bQ3UOuut?UJ-> z^#O!JBvo(?=znJ17Bbkb)60W{E1YH?Ot(APj_~mibJ&r@Z2KgsZ~)O{Osd$HRw|a^ zV43q*IL-V$m@XBMIP3^ANdqD2qemJ|lyuxXof*Cd%Q8ri{ zkH^#aHh*cjrG!!=yoI^_WTo=yw$e_O3WbNLXgfRmwDqr^zt?tqF`Of@Qk{XWEQ4oH zS447XE-VlY7IHn0$IE|{7zGSbWIG}$VA%S=c|I6>;(~EUqEZM+un^oC^VGpB8utUq z7jPu2lx;Z~T5Z5Aoeg@?e-7acI1(#mS>RZJ*niAp=SL92B&QUtr-|CkuN;K*ZxSf7 zC=Nji7^?G2he^Jm_ZtO^VM~SDP#xYITxHHrrIpYIlZb-l1c=R09j|8{&QBrMbuD0* zA`2RMQ{139Ou)_k(jkdTxru^B7;(5L5h%oLhERt&zmZ(N5Gd3N6Xqlg#bSKi()lg5 z?pqFSz(O%_2=4gGyAcfe?B0|YQJl~10k+IWz~f$Bc{#%7d{NMlky;MQ|1zW-hj(46nUjP6A07*qoM6N<$f={LXx&QzG literal 3680 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 delta 3497 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 XDEP0?aiY$l00000NkvXXu0mjf%VWoV diff --git a/public/images/emoji/apple/fairy.png b/public/images/emoji/apple/fairy.png index 0cd98cd66be71be0e710ca2119bf1e80c48b61d4..888af196d81656344cd385641cf71d96b6f4d571 100644 GIT binary patch delta 3150 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 delta 3202 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 S(&FE71R!-#+I5=v$NvZPNWq%` delta 1024 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 DeD#!& delta 2801 zcmVD9x+-REL3WDk|jZ785=-ua96t{oKSo_(m!7R3YaJm;R&cqqw;3o&7bZq*d6a8-ly7^LX@7Q-kA;Q@7B>?kLs@8r zGDKvfoS$B5h=)#5taN(3uduq8n5JZEATwRGc6_C+x22Jjou{>)qN_1Yi!n@!6D(;k zONbUQZVo79ElGwQHghRNfiO#l6)tQZId>2$W+6ClD@KDRL4YGZeIh)17&37hHFOIk zVF?~iurM|#MSq1WM}{s+i47!M7%^@NC1fBpWF9(tA2VXHI6hTyo54d$E=GMXX{jDH zYdu$w2N*%y+S=CA&<-P1C0?T6;NRip=qW&UH+a3zhKV^$d#NolTWpeTg|N9fK>z>$ zzQ4f^Dr^@jR~INwr?t+>ba|X3Ct7HTMqZPmD=!`}S$`utbEvMkMO%V`Zek`tdp}l& z9yV~SLPj=GjAM40S(MK7_V?S##e0pbKT>lB1iO>g((I{r&CY;+>0ri&jYSs7_VHfP}Nb z)X%=P5`QURlA^kCmb{^{!>yQ#(YL3KhHt-dcEpyM!%tS9r?ld!tiX(qt#NmZp1jA@ z;^*)4*52qYOpMX5u!4Y+vrJN@G&yfVi_%9 zNo|SBsBpE2TP8(tGDvrL93PAwAa!C{e_>GP*4Uh>#IUcf-nhIXSb@o{lPFwsHeNwO zcCal=Do=7GukZR3=eH92sdY;r^-D_wAKDpgXS!r>c8B&2Xo+qqoU#KvhV zKYxTfK3iUMm_bArJ|2}yJJ0|C0D5#%PE!CK4P~LBDF+L!8bJQ>rUL%__u?<1PV>^8 zK$M1a;p(ldGQ87&wp4Ge$iUpGt-YpAZSM7)!a!tBAqp@82IAo0#avU?hme zNl8ILL0b-7zv+r^S|IQK#zj4mU@MJgb592 zXBRg&0-i`hAa@LKe6Seb&0BUnt#7ne`ddF+vL}AeGa&YFz5RBJgbyak%6}h=sm~CU zFMQJc3BY zxgc@IG4rz{BC1ZDICkvVL4T0_KAsp?6KE^1Usl5AW{RVtj)a9%VyeBVxyJ(s1swr? z_+%zPV76s{w(s=m(9jP+f`fxU2$*|Dc@;Sfb$3a5+DIZj7eZH)n+`QzPjAZ)$Q8Af z>7jiSZQQDv8Lc!IvfMN*$;?W$pYAEm;3z9g0n|1g6O)mi&gIIB3V)k>wGM1F%I2^o zO-=Up_6H5nKlF|M{Yz^ndvuiB*`R1oYll#JQASbGmBQxZ1C4=!pQ81UNXX%^*ete+ zErF1yDfGqvK9WtBHkAMLlY)Jvo!FFz&}!w4TYops#oxMN23oYWBDElQ zgu~%-Iakt3Dd1BRq-P9<6_y>O`fa1p3{dE;Z|~l|ef#_Gf4}o>usJ9vCx@5G;j&s{ zI@=-C(IF^mE)G0&U6h@?%?LVOefQ4Yn(=#g?y1TSnuGHA5>^_kL3X&M;8Ylea!7>B zN5-uRULTp*$^vrOYvf)^-UwTy}%Zzuuk+{?{Nx_G4ac z7YGW&8jHV_e4>Mt0(l4P{LS+Zrq0)#sN!UrLYA*yQyo`a^}{KoD1TS79>Nny#MmQTK{~5THySnn zv(SlxGfV60?n%#89h*s~ZQM?I~%BnaVfF4S$**$)j=sxDM0ra0rn?3y2j zYBK5cxqr}ha3g3TvK#NKuNXuk9)V~yXS5;I{I;r^2iH>0DbM^6ACZ-VH3Naa=^(O) zABjXV4;7S6%v?Bm|Gsqc{)|LpZZspv!^6+ZJVc8X){g93dSP;M^5}`NsWZP~v4072 zrYXxc4^-c&YHJl`!dms^p%D6$LdbPQ4N$SKO@C@cT)DhM*)=8Y8#?Ol`M3~HcU^RwHqrtZ?^p}xMM%hE?R@_s1fOwHGv zsZpynH5#c@dUQ|M$x9dMroXhakgEX#Ur6K|X^>pdN_7D z&+gv-A(HJCn4}l-91>yxBILk+Z8V9S)75aObjEq`t$Bx;a% z+u6<8<}Dl@^_#WD0^2nM;frk=dReC9Ks|GWGFfwT)LeL@jf00000NkvXXu0mjf DPI_5< diff --git a/public/images/emoji/apple/fallen_leaf.png b/public/images/emoji/apple/fallen_leaf.png index 418c28e5ada990ae05a022b2a009d835e6f8b5e7..ebe956b987bc44b98628cf6852ade61cc3103daf 100644 GIT binary patch delta 2051 zcmV+e2>kcy8ITZ=BYyz`P)t-sM{rEQeI|=c9j0k1j$1LZdO&wR6OeRctAbLfa5lMf zD1$^3r(_|tZYIHjAh2;aj7ST4I0c$i60&e0nN<~{S{aZ<3Cxl)yo_C_a6iR`N2gmF zr&}4kc`1ua6M8)j#DOq&J{Q`HA=r>5uY6S5e>K*iQkz8wqkm;S;kq5$r#<@6BC=T! zrc(@^N(QP|51>s5kwXQhN(q=m1h!rit568LV-w465ury0nMel4ZyBOc3%+O?v||^- zXAjtZ8qIbZ)pZfvh#jq7648Gn0nIgt{ zCg`6Rzi$z=Ykwe@Q5Ea16Y#|kUXJ|C0000ibW%=J0F7l$9y>t@6D+fked|`s*Zl69 zr@`Z%UYfkv@N)FL;Ct!GjN{7h_;%jTSq1c*000J&NklrC7d=2d+quB=H{kxS^gu`o$fhU+me-UTK`h(d#IR(H*xOp## z?jIf=PHS5g`^$?D7WR5+^c$f1_p=x1yL2}47XbQeyLC-}G^g^{Sk4Ce_{loWi&f+vEFrtD3}&XZ|Q!YL^+PxcWJo z<;%t-+RcOM*aSGXpC-L1#$6%n)~fKlo3{<&m#L1ZWDp=NqqOHoE>(+JSO7g!<*4)v zPJgLAH3)-3dr^}1f>4jyex2uOzo<(27k=8RDawRlB}$?+2|RsFPO3cc%~o4l@2HG1 zj42IzNiR*TF&e8Ubq+c|&5tP;+T*D@MN^E&P#*v}%2ZPK%NgiX{w*ze9)PfI+fzU7 zfqacp)c_Fae2c@i<&6HuAOTR~TOKlq^awhR zZknZ1sj_=nI09YnzI|v{E`UR^O=LQsr%4hdmZo4+?(j_IlQ@k{kO-1x)1>V;hr5Ic zvl)>^*$FJjWd#62SZro1G8B`D%Caa9K_b`jTdUDx{Ig_J#+KzJ0Mac5A;hZO(0~50 zAJ6A5mJCA%fwSS^TSYq}G66?Kb_b5;BtX+Oipg<}8xn`&dgZ!qOjT87fB|*hDAO@v z7&B95gMp?f1IN{18c36KDkl(U7_TUX?4~^I_xqf5cyxJGeGO_b8}k~)z(7cG(G($^ z`KcY7eE_ZJ1D8r!nE=FPuGh`~0Dn>5Gm{J;8B!DlNtiyizQ`b%IP9y8vlzN6_SSBurb1sTM`8Ppq0)m*_6Re@-I0_&6 zX$F%;ARUxm7Kwr(6jSNC`hP63MPYfE4I2x4s3b{Z0n5?AIA<{;_77Sw)}O=>jM^t3 zg=hb5TbeBr%n0KHWDMq9mc@sJ+rnVA-`S{lxl3L5qI+DdZ}wmr6GpK~Y?~0mY^V|# z8t_HR;_=NBFE_u#Y8TB4XK(hvp|PS6nPHpRHYU`{LP@H`l^qAe{(s@w#*$pTUP0b| zOV?x3wE5XdDVC81sj^b5Pb9J5Z&#k5NWgimyOr;IrpP!4bC8Sz-EtJ}>#1`<8Wx{t z`|r!H>uR>iFwQs#o3f!LK>(d|IZWl2-aO_u=Zm^=Os5oc4x%P83@!4*jHLl7o2DEf z7>lLuL5lzb;_Z{9Wq%a;zRy_-Co%H1n&Y{zvxQGk}f5 zJkJzoht|jsblvl`F@S6y5Ip%%sqCgvRYSJnG|5q=bu#k(Fa#831XILwTE1^RZVK<4 z+{$$cbJAo2D9kqvDl68%=agvoX>%s1{N@T~E>(pmYtv2o!hnlC04r^q0W#xRByN`GXW5Dg02I zO3?qDs$L(u%cZM$p3cP`arI`io^K)PEA&4%>f^_c``8OXdZ>&66lNr-xikH`<@0j6 z*~d#CI;e3&A$%wKJe{X*6gywU1CcJ5@lp@0aFV$j&1Ms?+bY(|TcVoRp#7_>{X=U4 z3d0GI#zyz3x&7}hHKAOsmaErm4e~8mMBwmAv4~a{2%O002ovPDHLkV1k&t&`tmV delta 3302 zcmVou~5a}6^BYy(`P)t-sM{rE7hE#`08(uORql|)+W;SOxC2&(rt%X&q!OnYnHP$Z^tFr#ZVpKn2xQ6HvkHK}$zg;gzSHx#XYN!z@HnSWj@u76U$g+Pl+8i-3E zp=c{pFCAz)8;L|2kzgpMY&o`pJ&RQ_w~1brTq%)TEzXufsc|x%by2yCS)g7koLwZm zd_#dwB9cxVuYN?4Rw;c(8k<-psdz-Ib27exH>_$dl3FH~V=&90V2o2Dws$phJr=r# zLwZRg*NHgAl7B_qx<{2|Jat4Smt!-QVl|^=F42!R(1l8RNhr~hM44qSmscT+QX;W{ zP0OM}sc|^EjyK4jUCNm}U@;J5G!VIiN6)BIlU^vcmU_E?M{GeOhDschOdZCSWTbde zn`=nViaNoEN}Fg%kVhQSn?s369puSO^UzJNfIQBFH-FlxTg!VnyrGP)i*ehiRee$} zj!7D*UniMWB9l-aiAWigO&ygG3pxWh<&=DW+p7oK7Eo zK^TQc8KGSzo>w89StF%dC5c5DrCuh0Ll}`x9ga*JkxUz{WGS+3Ft>0msb?&(X)U&L zF_%*ymVZzlkxCk{aWlSkFuZdvqgNxlZY`o=Cd-32nN1&{RU)iuEVF7Xvu7yMjXAGi zCWAs3zi=$af;!QNH^h1|o=_l{OdfYW7n@KYp;950NgRht9K(P&wrniHaxTbyGmuFh znNS|OcQed@G|z)I-jh4om_@;SG^=edzIid_n}0yASR|raBAHSjz;-dRZYt7{MCQXp zi%c84dpE^&E|gRs(~3ThQ6aZ!Db|)f)`BwIlt15^Ki;E0e?=V5hCaK0Jji!0%z7}` zk2~3jHnVm$;h{j@tUsV)Eb7ijnqMU6q(kVsLu@z{+Mhk=u|VUKL5@}_;)p%Wj6B4O zK7Y}BG2FF5_R3C_S|{CDV}Sqw0E2W=PE!Cc;UWqT2?Q7e7LYY@RMk0QBwO$9knfo= zKNp`mb&7)e&8{H2C=Yv3=K7_%6-)b4#CI%1ze~+Umb%*cuJ_lJjQZ@upON3_*v9R- z^ozm&h;=b$^E0-LY`Wn)>pe&*Q+r`|S6)FV5QK&)ig+ z;p*eGg6;qS2^C31K~z}7)R<>n6I&X_X_kNpCV2QI^o^a zj>L=|_{-P5J*C#++x53&ywYXBpH7b*i2l5;!)6<q{?(KJ1+M$L~j0*pyf9cNX8R zzftdL)y6M5xAPNYN%>b(9vHyv-i;^-v+kAei#vyYzVW_?3wP1{Z3IzsdP#ZyXCpK6 znXO$tVr~F*|9-{r&oQ2He1GTR)UB=MEdwU~(gz{U(jE&K32pNBKVSQPX!x{8Mz(4z zM@VR8becMBwTd+(V;8jZF%PdUxNz)Ly9bULuwnUJf|$_SZ0a<%*o@qHBU9Q?7BtGm zPyg}QGhKX9)V6F05{rZ~Ye`R`&CI5Rp~I8jIxzZIllHHAh9H+5jDLq9H6(17+0sjT zYVviA>YZy*TZ=p}R+)kS9Ta+yBjO=K0*P)-?UE(uSg-p-|M~29`iTTkrd1(5nPBiKG@I1g%s-rYohfv6hthxzo@L z&Ge%Q9NpK;*c6poSb)%&Sxf;2lj&A11Q>m1ZcqS|p zF=>wO)?O_Gb`|h=sZ1s_l?F(T*4Al{gXY6rn4=O2wSQV^EDk5Z@hKE|L_r}JSB zDqE4m;eY7Pig-*^>S~oK*VpjCnpnStY=`{?qoKCK+1f2B`3$l5Tfo~Adhz%@Ss!2jB$~9E-XSSlgk;@%F4>B-4Bma0e|}%>3EiaB@(e%smS1pW6OwM2=R95Z{`w#yQrF4LC45YzEhW9Ie-n+Gx^$1&i<-#*frZ={<|U=ax_p-6)zB8=YLT%F7*1)`=kWeZ*Qa9?FP~(gSe6? zKn2X#N4p+o;#Rg?9)5UP@Y*poh*TO0YM3h)s#K5|Qmdq9xd4k{IBwkXx=0;1rP zH^yv@tId0NpZVo+b=>D=u#rwDVAXg$aDQPEfvuE)1Z9F22ego#2!V`e9U6U*ny@eY z?BfoPnct|_>y1Q_iUdrU3*)gyw=))prW$3%B_={xBC|Vu-6+tU4Nvr`GE-4)1Cam% z!joW_iy-_`oh(^GrY3;O<;2C=H3*9-2p$D`@`e+7SYF#K1Q0x)#AU~GMOckFJ%6J{ zFH^(kgY_qhWFYe zAI!5z>&`26P79sSX7hpda>Y=!%O$f~i;4;}YGldegrrQDUHs`x4-Pu(%WQ=;GKGXp zCgb=dk(vZ^T(#{3Hmj{LUzZG4AAg4ez2@t|&N=nGySOMrr*~Q;WPYKrsT)spiVX*l+tFCPH!$AB%r#z{`dv}^ctFdm&S!Xiu+#i#TVvx>x*SS(HjpDs(&n>xW@z9BZAl5G$6 z@QiUb!d-03FRBHcWJ8-F87Fb(@d|R5c)i`NlcCLb%CG z#rw-LC?SgS!Z`TCF!;(mx{f6s8FIuF77Ye1`rC~B%t8FnRu2t7)0Z5o5E9^N-SoO7 z{mVc7&{HHGf)5Ng{Kz#6Us>9p9QeQ}^|~W$At?UPQWz9o!GDV#{l_C1jfJc?r2E!z z{nu>~4n>j+5*QL$mJbge7j2gm6!*U;5_)pEBPQXb8rhl?^t>p(V;u|%F^E1P`ob({ zCyD#SENuV>F({+CSsWuAe=jDS&mSVjA0oC85e#8k6%lzVB9bT|hr$#U*jd-RAR`%% zhURbL8y17DAAcbTPe%@SZ=oC=9i5f%f9wZ7ITL_*yB8WXD{iees0Jq>trHiHBZ+t! zeV8beqAZYWgUv-l#5;Y)vxKxinD2e~eE%v(~lT`)is~P2|82-j4 z-JcihwI}$$BGHi){KF&bupM(e0`tK;{o;}S@xslF4uAj7EXRovy?zentRV5ZCiA!+ z+M5vKq!i$!9RJEE!-Nm?y)27O1f*sN|H&%&+lQT91%X8Zu5u66m=*uqVgJrH{qxPX zcntT(L;dKh_P{alv>pH5bN~3+{pO(Tzb&k62mHx7|Kft~uNH`MR{zs1fM79CG%he5 z3=and^ncr*dod#9~yRLR62xU7siepZv+L*nSUE2AyhauBzR<4t%4h~OdgU537rWG zZCOtX2wUg5MeV{<&3!)q)if`_oqtG0s z+voYG+xfPa&5>ZVKfBTh&zG+FJjAhBUVBS(}~G z0#n(wds-WRPgB>rXZKo7B9Ybjc5kn*``sZ8yQeal%n2ZhUQ=sp>wY`tV~sYNk$*X% zO%&Vef5)>ukvS37PAMedrOmdj`lYA2ZIJJc!p~$BqS@-&U)QJFn21h6;;iO9(wiH9 zk*96or2k<86(5a8GoXtmhBvBy<#8R)YKrM}SYZ|&hO6VBzBf#@eIPpHjy*c#%O)T( z$WHv$)S5o-d>EdcT>{1x;H;2z)qlS?rkI&}NVs*$`0yE@Pm={1T9)C4_XD*JKMHzy zwlFy^n3zWIVxqAmDVFS=Q`QWbpM${S7$D#4H>xhKwE} z0Jz-*LHG%Sn5r#{YUAppI%)72bTPLSWRt9jTrRMwlbb7%YHD#(XAn5r>u}JVB}Gyc zMUtY04~dqo<)z>3N+#88-hXH}QK4XfxUNpJfElWUL;bSIVl$Egt=H=@Ob=lC4!wgG zOa>A!i|Sow2;}rL=A_FkhVt&>c14?SGFEZpkCil!0te zrh0>Da)sP^e)Z}f)k_gtz*DxEbY=CRI%yU~7O%`?6J^C|d(h6Ag;5zueBH>=xX#(6 zRL0s(hJc6PqAsZ8OOu$F7C4a)#RwwEQ>4gMwp;TS8%I0(AD)csG33#A>1Rv<4-&Q{+ZQ)PJyFF|XH4(_^FwzLh*qUfj^A%s_*c;e_hLKXqL`t|U77)8($y zg|QTAZ>W){h|EjpJyzS1i=CZ={i9yM!G8IV&LdZyZYl5NQ!VAS4TU%%aldQ6d*T>G za)jG&-t0N78MD|*+v?DOZM<8OV%8(yJ-a`DIPSmzdZzu^e1H3CW6bT2SuM&`sy6Ek zV})pY&-|6%uw!&|dhuCLk2EpBSq#>XQT2@*f&oe5`RCuw&v&0*ba*k$G5c-ze9y~; zFLnL^VI108BbT-{i$!Kybzp+5&-P5fkEdu|O;( zD5)tEnSWA3;|$^U7@fu~l?JFvZXuC!iNZblTtSm7@pf=H-8SgaJS zmjjiIMBZr7>Fmq>cBc)8>DFJE??&A2fIt>zXQexcBuO#6-%mnC{kfc-va`8<6e#40 z8Te3$rLdHa9nS4S=^-uU^R?`uh5=&40Zz?%K7jR;74k%L{ni=(^n5+1YjD!Gjkv z-|vu3s^+FYUz>vq6|N!2sWN?ie`_gkT=2j(pP}ai1vr%f6_^lzm9Jgl?y0*KPW64L z)U{vMD3nEtP;qTSJ?leR0~aBX5P9y&AeC%dw^!DD4G%Cp{pSAt`%hmy{m-piUw_?D zRQs!{4uD72+@ z_I{w+hdf|;JmX8i9hP>XcjECKi1bzlRQqbG)>S-jK5L&?)FPr9Z&p4TIQODRqj?Zh{VhtFntan(}AiTvVZ5&*KfW!yohc?;od1R%=+M%SkP*Hx4^Xb52&uQ zXQs3Z70``eH2e78z0b?0eN}tGbLrBhH($&w!p*Y}`e!<=W@gjrqDGTl7&!h7nEnlu zd#5@XIv-kenW!=WKao=$OFOxDU5>Z}|?p5=SNqLjJPF_uwCVwws2U$1r zuu@C|32oA(cKvYYyVCk>I6q>C_LYeD_`5mtK42gydlIfevq9Um_uONY-YD5}80(MAcv3mq0#T81z)66_wgpnWs$z(E2{)q4p@VEkI+2~-MR#lrM ziB7^3?Oa)TRtQrTgGJ3a#n@nzN{!nEPS8;VMd=p5lAu@jpp6#BLyEB{?&Xx9r%?CP zI*cXm1g9W9(V>5?Y=7ZFk4{H4Yc0*qxX(^mENY6f840*+?kuiWR9pn;ID(d<9!8Ui z`BDzQNy9;}QP33cFAl~;4HGSHt}KP&?nptIk;b9eF!Gn z21w1fw&{paMnvlil0cdq4xCnoJzFbFL7PEo#nXmg3$XmKBivv}<5rbRuRa7-Ns!9e z>d>)<6f4AIkN|7rjrz7WieLcRVtEzGI`~u(L2)kL9x2*fl*VFYcL1tAbZC?o%86s4 z7{LQE3G(@TX@3|0frE+S>nrQSMv7?0twM&DAdYJngq9Y9(%b%e09961Ve?VO)vDJ< zgmx~2u5GwZM4wOaS@?UpXhgm_ZR07T-#5BFl?wnA7e=>dha%8y4Qy&>wF01{5>&k# zwcK;4LU?YvD4T6+;D0tlq!kp7-6nESl5w>SG~f{Ss1`%Aq&xzBTX!w0He zOl~o`*nfQA{jTS;10N3p^l9hw$=vF&7uQNk*E2c?GSc1G1E^9ClX-bndv6o1)I!x~tLgqyI6gE1P)Dr?iNU8}vY z4RW#5( z1X4A&xsf$cL^~9^OolKsp$rWlB`9`Uj$zdxVO?eq36PixX<0f0l2gM_hMlXI-T>zS z+JF7e*!UwC%MgM>h!oPPbfF-KPLeSV4~&n^%R$1{hs_M>43$mHPEAeCE9+S z^K6%ZI1BUN$y1X0`b+feM*2pC7u}(0FsWB{V8S(6hH86X{?$3JC|b**SRq{D11+ zNC!~mZdtamp`reI{he{w|XP>o4&s*=F`elPDr_WrsI^eHsbAxM^NsJ~GM z|NMtTLDcnz+cL;AlpP&z?U0%b(@+>9ghKzj^K4xpPO4{tuD8%%q&4*&YA@00{s|MNUMn GLSTX*M*o`t delta 4692 zcmV-a607ZzB-JF4EPwLGQSi)ZO`)6d##6yHF5!me^xTv1%3krsWsrMm@yA!|!&ej! zIxj4m@WW2BEF`lnCic;1A|ZU~yi2o&H5C+4`_WHfOCP{q#2FZ32L~$j$4}FsJkOmw zDkqCBE0vxnA@amd_ttjRs!|{#dF;GOL5PB*L!&+yGZhq2e18@fw1zeE$5!UHNHT6| z5f3?7&d^+;ru% zK_MT06ckpj2mS7%l_?~hf>27E zl}0KM<-c3+)Q7JzEF3*KhAJR7cysaFqfSC!oGmD{l1{RrdP_Vpns6$`pFgNBDbTuv z(XwPq3J5wgV8WbGjdU}EbzN&Dc)^!DWm8j`JAWZBXJIZPO4hV=ZB#gfYDmtlRtzN} zMkp#Za%?<+dQU-8opv>}lsm(vUaM+AyK;HogyiFi=bVByA}Lwq!D_OKKA4Sk!GKDq zRV||~DrPWPEGTCfEyA&zGe~D7R}gRvKE-$gIYNH;G4IWL9^!Uz~kw zaDO#0h{trk=l}o!N_0|AQvhZD=aA>;{TvPlOFR7No%ZK-=YsxjEdKN8{^s!0=jZ3d zx%V8{=jT7Jif^jv=ayvny3@?Ux9`Tm@zL?xt((dQO5=$`v01moIL_t(o z!)%sqOjB7J$Dtu96bK1HG`=M}WK49_sDGpLp4pjXcR%#ymV0~O(12@9#&tjJ`j%`)oymOL=iIi4v;GUc zx9vH<^M9Um?m16Q&4#wNc1XQL!^6YzA+NNfb!*LgRNvb1tu#L};>}CH>1eHgZ-0}z zZ{yt{dqr_+-T$?#Z`)&w+q*^CCx*t4*1m_+;f3Gg;Adz=)Nnk1tnuA8O~)o(3uusT zdl}`G)HVEp)6n9z507}g`F!4HgFjK@JKqVf{@BoR@|73HnwUT|KzV~L?~)o07^b|o z@kAnF+)ywmDSoi2SwqK={Z-mAe}7Gy_aegp>z?={sWmaBoex^Ay&yHHQ>})ZqJiI( zgjSno%J{8hq-`x_klDA4tlw@G$k(Qqwo_VVf_TiC7E< zr$iD=Aewi?E0t`@WRuh9b0j0_td=ImtVSa^8yg$z!u8C-#*N@@`9v=rD}UwEuCUK% za5{^UAhIS69(_Bzt(p|=;4JQRAy;z$^U3n^tI12ZR<#a~kZP@tB?(HLPA=N z*su46D=>+(bpuq#)0_j-@T|p?jpPc2TrM4nl#&rMi&ZmFS9Cg^26N18cBC_IzrmmK z`+x;uIt^b{Ey-Fa+H59CLVtzhDh*{~8HS-*783*$)l$jgPGlez^XO(2xF`eOD|n=8hi+a>Gk0cWL4jk zVAkM-pY{h7awNkf9hH;3nZwGUhL0)8?`lNr_c@gTk^)rZ@k5Bp=YLP>^* O4=|N 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 WswH$cY7L_R0000 diff --git a/public/images/emoji/apple/family_man_boy.png b/public/images/emoji/apple/family_man_boy.png index 73ed9c6fb9ef6883cfb7515daed97bfebc650c61..af8b001df12f5445c25919db35a1a397ef0cb15d 100644 GIT binary patch delta 2386 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 QNdN!<07*qoM6N<$f<($2zW@LL diff --git a/public/images/emoji/apple/family_man_girl_boy.png b/public/images/emoji/apple/family_man_girl_boy.png index 99a8f3ec0625e64eb648a47e2e88fc35f3ff7e9b..99576e5a422c137e89fa570fc4f7e5cf1033a0a8 100644 GIT binary patch delta 3555 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 d9mz^{>Hp8%U|-!TjPT1mphvA-mUGy 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 VfDY$p#&iGx002ovPDHLkV1jRF0@wfm diff --git a/public/images/emoji/apple/family_man_girl_girl.png b/public/images/emoji/apple/family_man_girl_girl.png index b52424943c144f2e174c1b8ad7bf55293b1d7ad7..50841b1b1293ba7c865ad0f3e90bc0824cbb88fc 100644 GIT binary patch delta 2996 zcmV;l3rqB?8@U&dBYy%wP)t-sM{rE|#3X?|Q1!z#|L2|WxhD6^Kk|9*@x(Xr$wv6Y zGWOPa`_g3o)KUA&KL6c(MHVk?DoOmtF#E+X;b`6Y!YRCc4&kUDF($RHIjHlzCjZ!H z{?by@SkK9l9@d;7f*ynW$vpSPI{wd5b`*RJ2{^$?y=f+w8-EsDEhn44mPi>Af&blp z-k=xKnI`VJCdQ8*4-HZj4{P71B#tMF2?ssVml^-!kAhYcr*sz1kQ0I;etsZ(kV;P$ z5?f9lEPpgyx|m=xCcETd-?uuk?{Mm*E}+&^(T^mG*-6=a8G6G%zbhZX%uC0cERern zcwS7E=xXFgIe(&H4_#71p{Ivfz*3Rs-^78%<1!X)*&9`d&x-k}rz$0Yc^ zBJ{s1#-gG?XCaJFXPC977>2bmJ!U35;7(bxu0?W%_{%bRe%4{KL651{pP6s;E?~%IsfRA zn_UHwR0Qy|53YL`t#Aze(NO=+H2>2t=Cm+UIwjPoLjT)fctQnxVtoJ3Ftv9K!h;S9 z2t?wm1E^>P{K__VWKd{QF*+`UbYExSxl|h!i~jS|5(@_P#z`g~tsfYtlzDaQzblGr zN5YOID}N!ijbj_LgeqY~b@j(9W?4+gsAXD5Wjrx19vGSFyF$vB8_c(lIVhu*avb`- z7wyMjrff^#*R|QHCZcpCBO1AGSc=Y`B%P6YL4xdD0000&bW%=J05kqc{{9s3Bne#p z{%DTj{r$6_@OJ+G@bKWVfbd_<=G^_rF|+XZ`F{}orpV^7(c@NtgK& z?6;26#^QYd00`zuL_t(|UYwS9ZyPrhz%A$`X!s;RMiQVlY$S#Ow~2$;MdSYp^lOl} zxAxw9%X{ycy=V9SY9&u`>mqGY>L-YIk{*6|ixNPUcSn)TD*n;~Yr_LdhycH5#=>?E{fX z;_2CaqMNE2kw|3Kq=bjzUfoB!=3|lXwRgj%Qm@jhRLYfdxm-c)iK2@zq3gr%y1Vaf zdwoH{wY6w8+G;hMO&KsWS?w917B|V`=3)&O=7J;~=V`JBjGJmJ`Z>{eQDqt6D-LzVYBJww6u`tj3KviJC}OV^kyk^RslL zo?2MYSAYDWbKEFFWlQ>;to&_`Re97pdZ`rt+ow<`spvdRaD?S|0a<~(jzCZLY6*?_ zo)-XjjjY=`W@G?WtVuz*T7rF(DoFB#ov6aKYz|K&@@4L zOOv4KfyxZ|-sYH41QnS?8w;d_O++450JjI&Z|_PB?nh5!v3x!j>)JKVFEL6hk(iIQ^8 z1%sJP=H%ogbNG7y(W9g1CvQ(MnN08|iRmWtAkACE{l7q;u!_JmXL>Fy_x%2Qh)bsb z(HX5YO@J$NI{u|C(xcvaihrWKpS^NZR4x7c zq3OB66s;H1MuVz(eUm71-s|}XmD6>L3I#CLxM5zC?)CfF@C4)cBhRnt#)lBG)(`R0 zAEh(eK*!Bw6=5XY_<|0fjR&U2k6uXlP2p0AaS<~1k%vNuO#>eq&*k$-#4u{e6obuX%^?KW*n zGQtRDd2Cl>^JwEtD$r0@&>Eu=C}3!u0IFH1sii6bQdUhNBuyzHUv1~wJUH2U@+MM# z`s>_-xIT`@qtPT1XkX;qS~Vl`E@s7)kl?}$+>Yi{tsw=?ZNWyn z+$HfXA;j?vWmhks?p{)T%WA?*^U$myq{J+q$s|0%5HOtB-EW|r#yX`WE+D}+!TY-V znT^B&fyo!e0Dnc3B1+_MImC#Qg(0n@pmi7#CK0wpAda$#ks%;>UpEK~L?bT0 z%jK+uIjFGPrPT(+sKeY1!d%fvKtYDuq#LBdF^3q<#$!#lJI6`yF!n;B9?wJ~7|}W! zkVr%#sec^DAyOz5nuz!aT-6yi;qqoJ^-5(q8J2^Rg;b?76!29PEFIFXF{JFHFZj za;}LOHg@pGKd`xS(9o-czi&U>-o&$O{;^VN9DjaR18Z>-k$W=X5qS(myXNS=Ri1Ks zGY^`t51u}a-qNH&-GN_sp1geIkNTfC#-SR|{oV}OyaA+qOT%*%<7HKZ70qqMNs zAvTAPZIjPb$CdvA>EFr(d~k6w1$cF>Hh=4dGz|@9SNpebE=VJ~xs3>^AoetE#w|d; zIMdV0`S941kcwS_>aN?Wa)pnn~JBx?*+B%F3&KqjBc$iYExfsUY=qhkU4#H(`ws z%GG0+FC$jjflcpW5pwWqIp$mr37Q$BabJ+gTG>KSbfw%Ot`_NOU6A2is<`vRK!4ef z;S{T`*DEY#BdQMv%2hj`JTStv?e{vGNl0o3J*z>^5ds3px$}ykZ{?hciHX^Xb|I%TjXo>M zL8FiZG4kJ(ME{+#A;_7Un4SHpTeGv^fXOY@YEsU`Q89&*x-DHY4PQ7rI4$_z;Tjw~ qdtrEZ^b@H@hyRzH1!B5{GX4d&;2f?zvELs60000>cLL&%VF%k zO!LN4`qyjn$5-aNP4?lQ`sJs2K~VI@QPFSL3JOB@&tLDtPCgtk-hATo)OMbprs zDVhrkIp42BawL2D-GPHKhk`MN_smm!SR)VRP@G8_|I1N%24^!VD-pO^TbT?!b>G3tS>9F>$*qny+IkM9T2yeR+BfD zYFB_(NRZxmC=Mla6esiLTe+xYpL+{J6bSjW-A zy6W|y`t@qj000UINklr~*C5;lHTvg6SQPU_%n>1=wsfTt~ z-QDqw$DRo@8DHZ$iosam17nP+acqzQ%QA>l+~NqRKnS1!LJ$QhkOYzlk=-Oxv$^v} z?kLi3_l=Fg*>;cN_Xk+^#~;7{i_&M%(lWTV{=tYi(a3j&snN`@utXB zL)5yQ%KZE*s<5i5ON|jJ+L8alF`=?pa&u)enM5d=ELT=%Fl-RnpglDcPDbadQvv}n zsii`}a)L~a6(x$Ub-A3a)zyrHMSqkQP%@=bt=6DCdqP~7KEP?#Y1TR?7kd4s{?U8) z?#*-#xE&^&mX8)CN>s4*CPG2dT3c&%@4`ZF@8o2)ztyj$2~kaoNhDaS8^;kjnvLKD zPjei{(mb!Lr^ydQihMQ}lS7&cC|DI071 zO1)Wu$ZPN4?+SWg&CF<56X?5ncY?TPd(1e}H9I?ZYg1rq@Wa_#X%G4oJojaim`gkU zPdX1?+x$GOV}48qG-%$47=2rXK;a1cY-7J}U_Ra#qaJGK2q+{V- zm4b5kwu!m_V^Vbv5;-?^b!bd4g{4v`@7?Y0duuH?Z{w21Ex)}!6GN0TNiGaa)oLlE z%$3Mc1gGn1am&Ak_1G~vib5z1Ln<&k2)vZban|!?oG4NJRu79KKz{_m7_PE_n*~Bq zIilb^yTomgu_?Paa3P^64DlY0GaFD;5D~sZabh>^Egk{`LqavU*6T21kRZbOt>Pae z3CHXTOfE;q%LtC6%f^8RBiTbS;-5!{IWQzSG~6*YHPtb-xdOC0)3;?656Jl4b_If< zWzXh2I_9o6few-Eu7Ai?h$6OVd0>J{$M4^-Err0u=&f-PtE$7EOa+c0+1c4(I5^4c zwya7M`^CXq9-hE4p>PFZ*QFi&{fFW`UmRS&etnvQrAP%RlH$5If;ax~t=QpwzOMn) z(|wQs?qltC);ILL;b}v|wT6A4i5k?0pMx)5Yi}=aZ@+Wn=6~zgH*b`;l?&B=twD?_ z_A^0KUf$N$cKY<0K>c_cR9l;%`u@ZJe_l_Y20Y-qKMIwRkskb@y7}e6UcI?fa zGeC24sRYyMwttb?2YdA`YY(LE2jto#JAUIHj@|G_y-^6TSyfn$kQ}oL$41TsJf}_t zL}yN4d=Nqm0s_MB_FqMc$WQb}V{>y=RZCSR9|it4Hyg9`cQb%RC_!|7HVml@A<41- z?rB*I(k2Lv`CXox{QSzCwdzn`&xuL1L6hdTcI` z7;{xuqV`ta8!TQL(52ZGM8?_5mXST-El;kg>FcWl&kGP4B@V_a0ihAD>+9;0E`~&l zxnYQx(FurDK>8BHww^tG27?@u0>+Zp$#|Kvyj%&0o(2M&IWL$_77tDc2pmKPT5Zfk z2*G!*41Z}uEkWUs6bv>mZ>H5tnoKq4EC53YN^vnL8bMqXwv0FcVi6DsBPen?RmN^p z@B}JV=Bo0#tc)AU<{4m8Nu;QPS3C+X{{;n4E+Gy^hh)=?E%0Lkk{DXJ$ek3A!%9nD zm)7a@K^jOyJ53XL7B!4e)aWH)MCb2^A!Y$#nSUUHQPj@R1{`;kr!ci-+|4jL1Bm4y z4H;~poieGM)Wf0K>5W>c2B{GoV`J&?DMoFH$SX@w0e39fS)L?D(+gLPs2!J(+mNB`M03kw6T0`&zZL9V>C>SiMS_zh3 z+J7WBGp+Ry=*);98UbCTP1Szu5~2(sKBm>I0iUc{5wTVPX{}amtx`C^s5yttW@W0) z_=+fi=t786+8IPRd_@#Z&|GV^*J;xB^fU>_Ac=astZcw(YW0IHdueL4xz+Dw!jQ56 z;%}v?<*CITr5wFp-#}AsQ>juo4oQ^iGJjWXt=ZjcBZ%q7^z_DQit_e4mJszaGH$l^ zdWoZ<$6dk+da~M_J$~WQ;|sOI9Uy5MeRS(~zufMh%ybQ&0-`||JLxw=zeZ^PByl2P zIp}F$GBkbR$<4XBF>peYs9!vJK9%;*A;SAod!Zm5RKckGC1V$m`LwY*Ad1(rzQD)4f+=pm=A*4=FsM2&ZKy(Yf@)gpMmStSJn zDtuE?a<%9ot*h21h2=A+i8JV5J-+&&C?Cp|!G*7G4~-dfd97DF*qHvq4`6Our-{Y& zzX*s*6Nc!#;hAZT)#f7+Rb^C;3V&p36)HWKbL9%Gpmn~xf(KONh}C9ZLLfBXf~xZ? zgNWz7Q_hynIvz(LDaf3xnZu!MjV2o*Irr;J=>ZX#+(oA@Gl-xe1SAx*?ojw%8xyz7 z%MrC8!b(eVj@FcFAQ%Ka&(QRx#5k>S-__s!(eN`Fn9!FVbyx^AS{zo+u9TwEJXEhCn6LoZtV#xn`2WuE?58 zJ1;Ot94lH2X<(Rif>P|mc&W%AN|l@mOqw5pc9^5PiXy7SVFuE6wUZI{;fi=`9~-Ro zL~)HtMb;Fmb4uk=u?Ne0g2SX4wUx#u9`wU7ih3sd z9QVaL@471Y#V#}|s33;l@Wf2{#WVNXjTv*|_QW+SBa|W=e;;C{_`xsy%|;A0fcCy7 z{K`Q7%s~FqS=yZ%U|V4g8CVoy)e8?h#ETjRBwf{+92tp$=zpyqB#q`1Sf>y;aR>@2 z5fV%cB4`e0WckA^7a3p-PrK5YCdZ5w*_adWwIKi3X%SPg3<@w-LMZ;(bh4mmq=;uT zDW@VFgfS?i8FJzu8h#aP;3y%J6J*>bAdegub1Ea3FD9QJf8!YyYaDsvBp!+^B$_QH zogjteB8ufDk$>b7UDgDQ#|$8ZKRiUkfP_T{w{5>w06uh5PE!Ez@bLaX3;r1XB>es`@9_PH`0!Nl@Cm7D{@Hev z#aE4>+JE7esy$3YCIA2mS4l)cRCr!=mUnL& zNf^fS4;C1Zu!R(3WBVeXE$iZ(BH2lF=WjKAwikNu?!Bb;a^>6IJ4=8y=RDdSE$GMd zwi)0-SkYu=d0}N`VJB%e4H=bX;41Z>1&DH4+BsR zZf=^Bl(PAov%Z~B#25k@ED;H19Zw`W{dT*rBYqnMQdT*aq37vQ@lWGb8;Fi(0ivXc zTn}4vZeoQd(d3sBmhRYnAo_YGb#rr*iYF{2e1D&W z8ad|?+F_u2janHo3F;8V0D-8`G|d(i30=yi*^m)+5aw>7&ZdB;d2oT@&eT(1XL zr`kqeYCP1`ZC>Fb%%)Se5( z&2~p1>jxr`-=-W3e`7MW2&GWIQMryov_RELD%Zj$+KG(z(I%Cc^J;aB7=M*&uEnwC zZ%>2x&ywCs=;yx%^1R|KQp?LqzYY`%NjvYqG2$@ry^xCLji z1cQac*i*+6nk_|W`~m?|O65y1eMtMf36E~eqv7$V2^et~)Pr=Iihl%gOavO$Kf6hh z2S~vUOduFMa?VYPRsk4Of&itqKlVz^77tDV_lTH8TSe649FSa(mx|{+h{iD!H2Ywp z$SP74U`!xHO;h5?EypNPdOP0h7d^@LkKp1NZZK7-1K;%fK6C9yuyr5{~rB{n2Ptg z9O$s%D(KfcNW_-d)O_E$1a%xuqui4l(J7cxzus=3$IE#-1td{jIgB`X8?SsR06jvhmoF6WdyQIBoOx?c11h z#JoU^T*lyyCu?_@Ctu&kE){|?F!JN!KkMu3zdsH$kN)@?XkVvCM^{JG*@qYJ;ogdl z(|NSM{vC9D_J8r{>gwv~SE430x|TF0H?**ge;mo(}S-_g4gI z5JO$pd{5&T3_mGxilE)p=H`*o8?;$JrWn2by>dihrrVkpK*aP=DkTW!)6~oLdW5wx zm8wtet?%uv?>r$y&4L3IUEVEC3mh;VsHcNlG=GsWx|7=9*_oZ4eU5Ni-r3pTpUn?* zqOZ3PS^6v%3nUJ~>FMeC8Ih$*<=MKr+FILbZQB#bRHJ8n@JDCNc-S!8hI95GhRF7$} zeN1A3TMPJ4%6&%JVUUpySXVU-9hm1Hf`7!J9tKTGUTmiz3OFcipnq!KD22$I)gbiBlW`gP5eeNy4a<2t{cJz@@R0k;tSNk9!lla3Hm{*?+5s zx~OTmOHL~!8cCjLq@13{*W6+`lgTqFQqC01BGw9NVT>Fw-QC@7JQ;%1+NwZ&BE#vN zH0_NqzTe%QKdYm8@~6A=?_P^>ue4p(TJ3gwH&31FqUIbNRZ^g>?SvEv*1yLZ@HRDr zkJ{_`jrrnHJ|2*=RS=grbPo(w34e`dr_+J$)ZVL&;{MCkLh|_$9_9a;jZdXdmh7@) zs-Osh^9eK(ORU9$tIziH`|Hbd&z6&^`g~pe@=7p~J{fCgl8L2CGIWPY{I(G!Y$ei( zpl>DlS7C0(xBT3Pk6dA9#plQE*Ainh*-bnej6-1VaHtCqIe3=0-X-O=w z{WO}*J#pH#c848|&2(R#N`XLq44F%rlb{caVxh1a3*g3KW%Pxz}c|gfj_XW*4 zu8>m=9Us1^N%%wYl{thBE)?E4yuu(Y9E|ipr666I@Jx2VoPUj+tLl13$5SKoksE18da=F0#Rvl5U2^B&NBI>gcP4q1s0Dn{mOQ##w zR!xKmIll@pmizyb4TWwJEEA#SJ?AhmO-p`qatYSA?}U%Phgi;u#enwy)o+6&bA cs=oUVtE1sn>q2s701E&B07*qoM6N<$g87tFga7~l literal 4102 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%0D$2IHq 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 RcC!Eg002ovPDHLkV1m-;kKzCT literal 4489 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 b{9pAi6D2Lc@T0}-00000NkvXXu0mjf5NV?u diff --git a/public/images/emoji/apple/family_man_man_girl_girl.png b/public/images/emoji/apple/family_man_man_girl_girl.png index 8751df40d45c632329abd069066511cf22770bc5..1e0f6f5290a2cfce01299a8bf17f4b3825ab4cf0 100644 GIT binary patch delta 4513 zcmV;S5nk@TBcmgbEPoz--o)Fdm?V?MJHqqGM)$=o@_OztD4+YuJoLjeA{=EQT&(-c zJlUcgB_4nD!7Ta2GW5R{7HQcI6iD=j@%X_ozl$CI%s&=ntn$G;^UqN%B$MZD=zpyr{?}vb8dGow25jctOwIJJG*3MDMuR5t0Mx7cMFuO^%5Kf&Sea+aI5{NO74NS85 z$TJBufmTE)sV$)|C!8J`fG8k_Dwk)yF9krTiF+J+vQ^65nav}Y18L$ zm5njZ}O@G9TA&0IwsvmgEo-dd1aO-j!Yo{xtejR|+SNFyD8*jQQU7uVc ze}6JtUJzPbOm44;IP!w+tW#>ui9y6upUQE3%VdhlYk2#@B>l!H|HvlmuN&T>7U!xN z*_;*lz9Ig_Blf!<%P5dj1@gEb|JYjp$t&=+9Dl`#63~+r{o#)G!z}&fn*Y#1 z|LCFq=&JwkyYI0V)|V0Wz9knGPKHYZ%Zv~A&tvPhCjZPZ|Ij-i6$}5|W3zP(nOz6e znj7`F85a{^{pz)5Raox8DWhZs`^h=LgAnw`P5V=6}(EH!BqX(MH$5a_7fv-=!W>L^%J=GyT$4|I|zs5n2ulV?Q%o|IjM`(nAI= zdJ76z>eib7;DNS-8X6XF0XClh&Nu$rZn}I9dO`x}x;5dmJOA^^-?>%dvnLV`LjUot z_{KtgQa5sYdmb5e^tKEC>yPcT1pB@hn1*AnmVa8sm^2AKqUfjzR&I)PVOh?oNbusd zp?*aQMz+_gD~WAO3rxNE+=OUcM*q<=s%!`cIF!z?W5%?AA3J!fcN&CP4*JV4nsFC> zU^vE+9Bf4%KxCG{qh9^<)ySD4#JQf*q9~bcGPZp$8Ww1WWFAyJ47!y^T18TNk&OyL ztbdewRMKWkQvd(}MRZb5QvmP<{{9s(@b7Uw_X}43@EwLG@U`%#{*(Ru3-Iv0{n`EI zL4(=;Ou(Sn*thzITY2yr{i*8j@bLZP@MG)n@9O&7+V6*E^k@J84h=~}K~#8Nbe8o` zTv;E+2?>)x83Ke*!X}hbXt9*dcKbt{rhj>N-#_SFm2r0$+}+*Xow~bw*X4Ejo;x$0 z8M^xhRgy%SQ(Ro0ogvNqBH>T;MP^DeNGeH6{4+~ta``iJT`Q>0 zTu`1Y`6G`cxx7Gcwpc7?eL=Z2^N%b^83op#quR0-~}VJ}|VlT1usdE6=uU)zw+dMx#-GRUcMcX0G(uL~H)qkLB3`}8-gTIN$j%{?Qr{!Iv&fDZS%?u38nEWfE z)D9tXjgYryDOxC#@-pVS4qEXvU_{Tvre*cRXFVq_5tTa-5 z@%~12m7=Or=l$TH0f%X2Wps4ZhbT=(Ol62-DrvS-vF@s>ymfzjdwcWoZ-2jN*VgP* zq_*^YuUETP{nEAWdZ~T9J>>DUn@i|p-@y+ zxv83*$da9*sI_WNDRaLJITY^|SdFwTKPkdV%&B4AZiEPuBzaEIPz;FDXzV(wCOcBS zgOOEI-~oq{p;^05XJ=^{t$(F#`I#{wSu=wOxqP}?l)8I*TFxU%%Lt!9N=B#U5GfZ8 za#19K1UIdT0cF(K-5g1Hcf16+eBIrKot*|b5_EJ;6eQC!yqs_tKKQ`k^Z5)8B~d8#w!iRURYD&c5n|j-WJx4mTF0S97p&|D?0Au;P=C0pyu3y$D@%&5 z8f6!V;mUU8F!)3@I2_f@4oF-ZS+&fwc7||Ny<~^mLm+Qj`}b98Bx2op(e0m-CgTY5 zo6Y0Nc3V;&twAKevAGW%k!0A(ZQ=<;xl0nF&1PwiZ|UghdhQWT zqxUj}GF@IcI8LK1=uRETMyj}@~x_P6kqXi)io&Bk_^l$7ehb+�-b~7 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 delta 4540 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 Pr~#0A#=5Vy(J}u6JD^ci diff --git a/public/images/emoji/apple/family_man_woman_boy_boy.png b/public/images/emoji/apple/family_man_woman_boy_boy.png index e0623905f4be6b5f369b530ff85e14c2cd8e03bc..55f5b55a78f563ec4a4dbc3d898dbe98aff61c85 100644 GIT binary patch literal 4179 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 literal 4717 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 diff --git a/public/images/emoji/apple/family_man_woman_boys.png b/public/images/emoji/apple/family_man_woman_boys.png index e0623905f4be6b5f369b530ff85e14c2cd8e03bc..55f5b55a78f563ec4a4dbc3d898dbe98aff61c85 100644 GIT binary patch literal 4179 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 literal 4717 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 diff --git a/public/images/emoji/apple/family_man_woman_girl.png b/public/images/emoji/apple/family_man_woman_girl.png index daa0358895ae78cd1ebf612c902b614a5e5d999d..7b7a3541788c5c914c4d23d9a08aa9d5b3f141b8 100644 GIT binary patch delta 3548 zcmV<24I}dNA>A90BYy%kP)t-sM{rE#&SJlsO!&z?+AA;l#4wvGmcoV>GbyF_&Suja z9s0*L^Lg(qB$oKeIQz>mAR2quoErMbJ@&mP_P!?j&QAHkDQ!jx2nQ|w(L}-?AO6o# z;AY$p3`hLWQ?3pV&4we?m>uDy8vV;a{oI4_w=540Kf+19pnozK6cJAi3plMV7|fC# z+@2Thwk{0{F8s+l{MT_24o9gsr@nR=pEYlA00}i4b(>8UrH5SEH8L?Mqb??%&lMId zB%0SFCe$7x(;6Ef8-g<_rz0JQC?S!^6c)h|6DlK?w+;{6Co9kh466dt1_oGDspNVXX1J&xgjFgT_;mPV!d5?l`T`#Ngn5t zKj~}azDS<+x*q(*Ci%Z1=c*e2$||mJ3dxEPyL=7Ql@jc)7Vfwy+@2JUPz0l82jQd` z_P{fkSqA;*rG!TV|HmfrwH*B2g!s!*`^h{0$3I4K<&FX z|JPdn^2>HQ1MIOT8W9Ko(Lw#>nE%c<|I|zW%r1Wi2jH$G?7vOCjWPcA)=4M{N;fcQ zSwx?37hNv~LIwkOS12eML|g*|+Ot$JBM;uLIIn&g%a|Yk(J+l>8o;Z56A)Ky2nCpS zH{H>#8h;jWvWiOEx^L&tih)`?t5qevp=OMBR??&~rk8XU6J-C~WReI7(Yc8a3`VRB z41Q`}qlsUi3kn_>dP6o;u@v>&0000xbW%=J00$8q?~nfe@BZ*&@bEn>@cw+E>TbgR z{7vw?@U+tLO2zi5>DyoMZGAh+dfH){*}l>5`hWM4@8YNZ{%NkD000XeNklb58lo2k`mv3q$XG4|h>+kN zP_0~JDwmzb@oy|Ip35T;By*C9*f*Tml+yykPQTwTeo^JY#8H3+thW@swXSCV&8EXtlUo~t{YlRZVJYwS^xk;4VVgpHH4x__*y z4GUmE16VG(IO=W|Q!1EgL2tYE#nvh4d?S6yNs`=|jB@3Z`MRYUg5bKGs&-Trj0LcK zVYL1Pp_=3qq@*Q7cbRluw+&lVP$CK`)UCQD8louaZJ}dzI*e7dfMz|2EX5LtiXtJ{ z0}n}rfaCKsAcbkagwmlV=zG+gPeOKpMTk)&+AG_}#OOmb& z8Vct&{s5+^(E59~t3Pi-j92{F?asWa5olYm`iYJJAX$F>xZ6E@)qnROnb&-N*6r?> zUy6onOa4?W+($BpaOL&0i&uSE*?|A-yu3K=H;K=gLHp-Sn}JaA`N7V9ak~e}O8xDl zote$;ybK`2gnVK9H6ND-t36oQ0K~I1V68-aO$i#Cl5O1u(7<_pn%j0*kk@QIKTXyu zM1upt=AZ&h_o=2}4}T_`jdZga7L)ggqAlMK5{WiglKhhQIah4*`~Vu~^>W2ZuY@$c zZ5u)+1daWuQ4;PDOqxy1-Y^i=ehdNJ#yM`o6TD05ZOG;p=T1Av9YL#(_vNW9hgsEv7>{A&mtp&DC zFEE4^$rdD06wNQ^?L8B*azE;x!7QHbUwL52yceAg3anR?ZKx7>R;wG-RI8X7lEID) zqA6eu>m69CK7WESJ9~tgA-XgcfqdUrs3zJH!Vq$>bFi~BbGhabQ<7wjX#|Shl!1i# zD|QrJ1q(~xjItzzO&-R`m+#)V4)PU+ znow{Az7eIE$HcUaG=spx{SoL-Kh0=9A~+BM&dkD{cz*;UjD#pRb9iW*2= z4_(d=gi;Y^VRm+Qms0=*LcVgb3m^RDP6$es2G3}1oZfx&(maze<97ts~oK!K@+Si}i1*Yr1dfdF+ksB?$`{fk|pBGU1{_xAoe z7rX1eeft)&2Vee10SZPgwg8;})LpMXY29%cz<S{yjtQ+_GX()`fg3Lq-ZS_ zs}-bda{_9;^Z@5@xCq`raZpC<1y7XOnsnI&bg@!tOUjzzx_@rZ_xtl4X=k6KVodzx zIo!?zgyt{>Y5e5H@y7hdm!E&thMV-%OQGET`|eplLAv^h>1*A&En--2#$Tndr6}37 zxPMJ~p){qRDK7Pm>03CY*lycwXB5t{k>puAk6{^U!%rHh52x_IqX7E#um$O=Nq6)x z1?hEiej}AkVppbf(QN&6pryQQ7`X$AJAGlg@&=C0HZ;^Xgg_Edqn^fw5~DJs#%UAg zFwl}qlc$0aK><2~1BPQr<4d`0b~%qgFn=rRGVe;7XaPc8r${$RIs^yIz`%eZ0jjLe zW_%hm^(?(7=Qin*?~i2slibFM15S50S&#@~hr<#<4I1SVHgR7v)$%67UA$%i)+AWmmD9Xf@xYX>yM4u3-| z0jl^>2+q=;s)T68Nvg7kPE;u|c}Gx&giZu;AI=$6!zpO%*_sk-O=vvge8E^NO)P&x z8WWAIRx2o7YByc(8vxYR#S}?^+*^r+Pc|!aO4J7?pNAv|6vbTD0C@>=T5*7~o=TSp z0)w1EHuown8$s;4fLx|$0KUtbjDKrbQ1$^5j2;7`KAiWUa40sT;!0hLLCH$qQiQtiDIZr58q4T)B@^^s_d39lh-*JTo#LpG82^mLE;z^L*!U2#Gn&HHd{@K zF2v&IjBmD_7mf0e~Bm)FIO zm=O}fjVzYl-rf(PqkngUVgHJZ(Wy!CElFFH%Zn@iKq%-!?4pvRiQ-f1wFpUv;2gQD zYE;V5>$NNg@B}Yop<#NJ#zy-Yg5tmzJ3Rt|!V*I_8FDucj<;LYfPVxivsFTB5lzE5 z4HnwkrY0F;XRv3GI~fqd5S%_Z2OFt+wzwa{_$-$&;gDh(g`!Gf8y~j4BsuI3hhq?7 z%7Bn2==b_&ezo}Q8K&2wR@}iD+|^_hQg(~A7r9EOOxV7hq92uR#TjdFh0Tzv9d zH5!&M&1ekblU{g#XMev~nk}!o7!r;yT>>Q1485!PYQ?I@GdxjyY_jC%4&WGHGtyRzPaLY)`{Q^&~xVdtD7?~*IaWfi$8WcGn;tRhA%*c<(gZq>R z_-$mQWq4wAR6x|{9_Itd@;(Fy%=gU!B_tO~Hypad(#IOP;Z=b7fijJ64lGDii5`8U z5kntqI5Kc=z(0000v$M|B(VW~=EZ#1GolxM3&mzOi- zbRO-c58C`1@QMda=rWosRT(Q%0)bEvh$j=H)#d6-e3jmGvC^3Lbe*ge03cJBD9bKCPX>&6xZ|NB z`4Z4KXVVXb1+%#CMG5e~IO;d*ln_|1M)2__?=YsBMufXV8d@R1Q6+ewD!uxdTl-Ax zYRbIpg-ntKWLQP<>TveYfPH(CRJz^0i|yvdSc&ogp^KIHY;Lw_c3>X{ez_b{!pD9^ z90_D)Je)!w3?cs#+UV%Cw);$e_gGhlLFa1>0}#M@AN|E( z_uCImywX*Jqg2F%Va#{p?D-zK+;22&AN7$l)pmZsVLswESs^K63kEotXl*Uk<=%H& z$hB(l43UB+elmOg##OQIVS+7hP(_4{znyU|ROh{(V3&sE+)U4Fq^{_{Nh|~*P0UFM z*M!U41a<AZ&kYTU*X2?S+yPUi1} zDZ9lQVmpCAm}=6Bd^Ypr6nFFg3V+WT)S)CKw8Q#Z>J|@reR5GgGhX0Bj^YWX;bGoVrAYoWZ%H;rjHY8HNb z+CUhYX8SHW)=RfR(>cD`%9bvLp7u5UrSs>iNJl&>=2a&X-oWu@<>s(`;%RnvwRdFX z;inG+uk`pXe3c4zzvW%U4(}Am(YHMf_t{??8#{LITqq02)&GN?nP*d=r~Bdre(#B3 zs}eJRxN@*%x!R`8X%Jel(8Mz;g9kU`U`>2na2%{zt3evfTczY|XqDSJApFqN@aS~G z=W*u1Z(=C*8x3yTQvfsn=zO%__B6+<6c8X7zactg|ecs2O%(Be5 z;`!F8U0jfH63z1#MTFw>l2bo>z{)!3+@zJ%W}g4cp+Y)x8GScjd7CD9t0ly6f;}Nw zt$=3ip@XBNEf@@L3Gdy_fgbmNkCfjo>;12$HtMe> z4adg-8XYcNsXZv$LAOH}c@LC@fP2_4IB#XKgMIs@D{{jt&-z*WrA(L9QH6K*zyVnh zUvU%l(c9f7!i%yX$}-s(|FuOfv&KWn`6J#cHpU{JH0Fg2yjcynMUkc!)+qS}$pzvS z{ie4#zYwHaEamvnK1`vJt;@;&bLGH&tFOh%fTuW|w6b}PiEMF(5kKeijE+#(r0(4Mm;*+D@(}~T4Fk!T3K*Zj;x!gjxTd1hOBHF?Ti`xFPMlgCRW|g3o{@rvu|raU*udT562wq!VX0!^+@BO&WbAcXb%c~ zl6e~||H=?Cz{3p~xuA6>rxnGWm-z1yUQ0WG#3p7>yT#3FAC!M=32LN|3#L_vpBwgj z!WO2UYD6>0G)vK|B*Z})z~U#wbaEb%K6i|+A%mJN6}Y<6(73wNw>iP3zN)>8g4aTS zOB(PDGv&T6SkO}1xMMz;={830is4i6PBTOEpx2-4TgZhd$AFizWuoujZBF6gpIfowjt+0 zxx;TCKN|rwtk*s{1tGqAm7;w`7f0^$+4?$f3Fn{1e+oISF@VHyDf^A5^~Nn@77q{;mFGgG=bv62V5f&-mu*P@d_=ECQ=JnXt;h1lQ+&e6@2wt0Fh?dE z{@{pfS62>A-51NCwH{`K z@3~4)BUu26f3;8!1=d3f8`IdROowc1|p=RQpsHUy{hDh;F;AuY8& zH+9+`9SKg>PJ`IAtv#dGD43s|6x3^T12a`c&n-3zFYL^yX%O^@ms8!dcPI?anLchs zFWtn%CHPu`m-D2z{E9s(C5SLP#KYXlges9kf7x)>a51> zE8Ddz&D`f2SORC?TmQr-CFbq}PN8>~*!KJp?DG*(jf3)}iecoY$>i9YjG_GABzjSy zpW9beHpX0;u^o64@@}w6cMB3nL+&9<7mvtnrDScVD#rHq9tD5Hx)RYi^(vxPon2gEW>n7S03KLUK#WKXx<|(jw-L$ zkL&zSj=%d;?LO&GB>uJAbQ1qP;li3P$Oo|PE3$N_qpsQk2VN_QkNh2o)FyBPBu;4@ zf@+&ZSNtAb%>vF2&5$4!MD%Z|@K7;HH}AdX_S5E#oJ}^|A-P2ibsi-cFiR5 zcg9`~LdZ4vfOtw1|JL+qDHj0KaEkuD`W4En&f|+q)DG=B$+$+{-UgfaPvl+kkc6A) z@a4eP-dZDDebmylI<6e&*r1hMogyBmQ5DpnKg5JFSf-n%v1_QNu@PxZ;07k~Fq`?v zP{&F=KYQeXKWyJrDO?I|@q7Ar=&)S@_xFohLx5t;>ec-2apU)-JN)s3%EmBlY$&$} zi>+>9iIby`J4&X)6i3-cl`>>VW859)l4OGI}SQeQqGDQ1h6WT`F@-s(^TEsS=Nz`0k>zD z%*xGKUYbO^)-NXW5$5fasph9vBhF0)HqwV#%e{EO?112lB4wKoINT9e&b9p;;~Z%5x*DZ(;l{kgU3qkvun{ z+@gXJfuQq|(#KSSr6zH(yNIo=<9HO+5FqItJ*>xWafk zNM(hqf~x_Eg%M{s-M}cvtzX#UV~6Ipt3Q{L5_Dls^?~x44s<+J zyb0Xn`mF~Vf`0H8w9ih%ZhJe!lb?z~4^0taLCw{HfxUBG8ye-Zka$-EdBj5h2YMt* zx1)RN^n@oRvvYg8-#Vy>^{yTE|@@i5dlBF})w zje=5B_x;BUQVt$r)4+EBsAqepg%f?>{C$9rn?U-l-5P4r05>|$t4CDWKzYXUd}<9$n45B9mK=+^HCB8i3*OpwH-&=?GZy#E+WWNCEE-7 z%sOc!=6h4^@wBZWb$UhX7MLfJx+i6&glx3N{T59*eGWqw39_CZX=i6=ed@lP)jK+M uaWNr^d>ECj5b=|t?4o|y;_t(AdWQ5fQ1Tl6qkqqhL|@xP>!XHK?Ee5;CWFBM diff --git a/public/images/emoji/apple/family_man_woman_girl_boy.png b/public/images/emoji/apple/family_man_woman_girl_boy.png index 0b952159c740f0a2c6cc2d896539e55d1c6b1342..66f312366e0571beaf28f67440a3a6731de4659a 100644 GIT binary patch delta 4624 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 GLSTX*M*o`t delta 4692 zcmV-a607ZzB-JF4EPwLGQSi)ZO`)6d##6yHF5!me^xTv1%3krsWsrMm@yA!|!&ej! zIxj4m@WW2BEF`lnCic;1A|ZU~yi2o&H5C+4`_WHfOCP{q#2FZ32L~$j$4}FsJkOmw zDkqCBE0vxnA@amd_ttjRs!|{#dF;GOL5PB*L!&+yGZhq2e18@fw1zeE$5!UHNHT6| z5f3?7&d^+;ru% zK_MT06ckpj2mS7%l_?~hf>27E zl}0KM<-c3+)Q7JzEF3*KhAJR7cysaFqfSC!oGmD{l1{RrdP_Vpns6$`pFgNBDbTuv z(XwPq3J5wgV8WbGjdU}EbzN&Dc)^!DWm8j`JAWZBXJIZPO4hV=ZB#gfYDmtlRtzN} zMkp#Za%?<+dQU-8opv>}lsm(vUaM+AyK;HogyiFi=bVByA}Lwq!D_OKKA4Sk!GKDq zRV||~DrPWPEGTCfEyA&zGe~D7R}gRvKE-$gIYNH;G4IWL9^!Uz~kw zaDO#0h{trk=l}o!N_0|AQvhZD=aA>;{TvPlOFR7No%ZK-=YsxjEdKN8{^s!0=jZ3d zx%V8{=jT7Jif^jv=ayvny3@?Ux9`Tm@zL?xt((dQO5=$`v01moIL_t(o z!)%sqOjB7J$Dtu96bK1HG`=M}WK49_sDGpLp4pjXcR%#ymV0~O(12@9#&tjJ`j%`)oymOL=iIi4v;GUc zx9vH<^M9Um?m16Q&4#wNc1XQL!^6YzA+NNfb!*LgRNvb1tu#L};>}CH>1eHgZ-0}z zZ{yt{dqr_+-T$?#Z`)&w+q*^CCx*t4*1m_+;f3Gg;Adz=)Nnk1tnuA8O~)o(3uusT zdl}`G)HVEp)6n9z507}g`F!4HgFjK@JKqVf{@BoR@|73HnwUT|KzV~L?~)o07^b|o z@kAnF+)ywmDSoi2SwqK={Z-mAe}7Gy_aegp>z?={sWmaBoex^Ay&yHHQ>})ZqJiI( zgjSno%J{8hq-`x_klDA4tlw@G$k(Qqwo_VVf_TiC7E< zr$iD=Aewi?E0t`@WRuh9b0j0_td=ImtVSa^8yg$z!u8C-#*N@@`9v=rD}UwEuCUK% za5{^UAhIS69(_Bzt(p|=;4JQRAy;z$^U3n^tI12ZR<#a~kZP@tB?(HLPA=N z*su46D=>+(bpuq#)0_j-@T|p?jpPc2TrM4nl#&rMi&ZmFS9Cg^26N18cBC_IzrmmK z`+x;uIt^b{Ey-Fa+H59CLVtzhDh*{~8HS-*783*$)l$jgPGlez^XO(2xF`eOD|n=8hi+a>Gk0cWL4jk zVAkM-pY{h7awNkf9hH;3nZwGUhL0)8?`lNr_c@gTk^)rZ@k5Bp=YLP>^* O4=|N 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 WswH$cY7L_R0000 diff --git a/public/images/emoji/apple/family_man_woman_girl_girl.png b/public/images/emoji/apple/family_man_woman_girl_girl.png index 705854d75f90d574dda84333fad1195acffcc257..d85b666a14a89b331b3c316b9aca786c9f4f3873 100644 GIT binary patch literal 4479 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 RF~a}=002ovPDHLkV1m@qiVgq( literal 4676 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 z zw(OveqQx7#?lIb6vzsrgpsJAl^s2?z zC>ovPv#aSLRI8|Gw&UfDWQqK$Sh_YyZ(}v;UXj1y(oc}v*=P^hGx zEWaKhmBFs|hKWkETKk9gjkbw@0#L5s zJL_WF=S?mQ1s(c?vN$i&a7;?`_uKBzk2^7v7F%VT|4i_w1E4KGn#jcF-;ank21f{K zJnSTJ%DVV|J~o^jmWRy#r2OLjh>K;61QH&X5Cp83*xNhi#ZdFJ{nm=BRL`7=2DvhR(&Bb?ouW>e|b4y2|KNaHapazq*HU9 z-TmF4We*rKTOhvqxx2e_E|peRL-sCZEH&5NKiU7}Qvl|8nzem;qN$_tvggr5ufJp? z)!9FJ=LW>I7PW2tNwzl?W?RE?dWZ$^c-Yu diff --git a/public/images/emoji/apple/family_man_woman_girls.png b/public/images/emoji/apple/family_man_woman_girls.png index 705854d75f90d574dda84333fad1195acffcc257..d85b666a14a89b331b3c316b9aca786c9f4f3873 100644 GIT binary patch literal 4479 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 RF~a}=002ovPDHLkV1m@qiVgq( literal 4676 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 z zw(OveqQx7#?lIb6vzsrgpsJAl^s2?z zC>ovPv#aSLRI8|Gw&UfDWQqK$Sh_YyZ(}v;UXj1y(oc}v*=P^hGx zEWaKhmBFs|hKWkETKk9gjkbw@0#L5s zJL_WF=S?mQ1s(c?vN$i&a7;?`_uKBzk2^7v7F%VT|4i_w1E4KGn#jcF-;ank21f{K zJnSTJ%DVV|J~o^jmWRy#r2OLjh>K;61QH&X5Cp83*xNhi#ZdFJ{nm=BRL`7=2DvhR(&Bb?ouW>e|b4y2|KNaHapazq*HU9 z-TmF4We*rKTOhvqxx2e_E|peRL-sCZEH&5NKiU7}Qvl|8nzem;qN$_tvggr5ufJp? z)!9FJ=LW>I7PW2tNwzl?W?RE?dWZ$^c-Yu diff --git a/public/images/emoji/apple/family_men_boy.png b/public/images/emoji/apple/family_men_boy.png index 5273bf784fd6fa0593c465002ea5b37e891a8c43..e3eb5937668c9990ab9df207f0dec7b28a0e7857 100644 GIT binary patch delta 3346 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 literal 4102 zcmb_f=QkS;pp8*mt=O?*m)gW85hF^(-jr(XRn(@45v6L=+M~AG+NP*gJNDj6jj9!@ zM)m#Pzwpkx=iGb0-E;1T`{80xNNs8gHVOa$K#kCW8~x`x|4TBW|I|@hBLDy(0-*Fv zG_`&75NYcMrTOO*p2tJ>C%uT13GavY=8|GX&A4V6@5R%8BQcR2wV1Wje#4Dsq#*JY zH*ds`PkQ)4)1z*Kxe9e^26r`!aL%P1+uCi3LJ zWys;)DOP59e!@s!Er#s$xv<0D3YgYQiHjL)JiNr2T#g$4nXr%)D?aMbxg16b@F(H> z^nMTM3k#--ix!-A>q@%L{`{oL#~Uy9bXv+|;ek+wtj{7BXBe0VeLaTa;eNT>s za-T+HC|7}(iTn#jQZZ;2;@fj`GPeB@!2ws35B59X!8SyQ{k>RK@E_AmTHNi_rxW#7 z4jvFNLBV2YY3Llv14YA;tcL@rNAEIQ(GvM?{C^j1&WA0jNr~aF6HXVi7@0zWQjr-i zWF>_d#T-W^oj%tFiNt%0&$K?7Z9o8JlTsacH$Iu}4Trg#s>phL>`azDTB&`m!;CGm z-sygPIOHJh>GE^TufI%3Q{f>{xy0Vgwj)P1FZOXpN^o^v2)%?zT|C4Tt`_NLmLH}y zSo@@{z-xP^DAbOhlLJP^$}T74=HqDH)ttd8h&-JNjc`zxv`%SBMd(P;O@5Ax@wZ+0 z5+)1}*HA>L>Ph%VVr*U%Do2KZWeb%a7wLIbA_E)mvpn|H^-xlN$Ce|N_(bWSdgqi5@L z_HX;XpUr&UJU;9{?3$=t!>=6`?X2#dP5xZ`_y38z|9jY-O5PY706@8lfJ03zdOfnk z^%z_^2M~z@Ao2zw5UmRT!M@fw{^8GRjOAtj>R3n1Sd#R!93}sDoJ&@|lf{<2zl)Dm zEQL<2jOV102E#%59gobf%snvpxGE6}=j+^LyI8^d2R6T3Q48$a&Fv((@pQiaoj;Bb zxBC%X@XU#?wbE%<&iq|RX=&+LtEcl&Ns>KX&K0 zdHs)UIXpeZ%#DqW{fzpTcYz;W%t?Q9GZ;xL`d{JY%S-jg`um-63o@-G>0;MwTN#3Z z@woEf29G}z`#*qLrq7?vKpfpY>(r%qiy?*xtJLb70>@*r3q8AlNJz9u zOanz}Pbm0(AK_kfZBSbCu0pW9joqgh3}(5w$lmZF(_M_oY7?v7kuyK6A&wV!^bUf> zV)K!^4b$KTO^jHmJuRUf##GeyZEuw@*iT6+-P5-3EQ_TVC4-ov8X^BuazZ!|yh_+8 zV;CB3etj>F-u3Nf(BeS=w!_TQFr2VmN|2f_K3G>KSC1ry09Q8TAcdhi{%*{jb@`1Y z5nY(t3s3V&prT8khA!61ew%2qKY2wWilB|=)3k7sBN%?lSO|U#M@a28YI3Cs3F%$D zkCJM#gcvaU2hwN*OF79~HQ*&c%EEjP-o-Igl-F*-jVZO6nxuGG)CDx;k+fKW7Eq#1AzVG~$eO-(a?h-+bzIFdZJ4>(P#!#CoQ&XVLz&EY?=^9HtB!)z9xgk)dKGg?iNNyn_c z^a_pn1hy)!V1+W$uNI0}Fvdx>t#Oejc8K1QEk1)V;NqH{fu*}_{Ar@@(qnq}RO+*%fSd5k0m&k|{=w$uw& z_hX-W#Lj?uCIuMyG52H03X3p5>a;Cu4tVH2Kd-Ibf6~}759OV%Rw!6WQP6#E?HDCi z*05Zch;C5uTkFZfV_sSb2XRQ4e~71|O;}eBtQxcKWk{Oc`qe@4zxz!uG04ID=$7$@frbE|D;%`D_L$7hwIpI}EB4jD2bsJ=E`l<6LtwWh zGgF(BcTco3)z7QLOG<^%}ApDj8X}-RtFpZ5-^2Ooi!sU93N|>4L zYP4#BQoAy8*qWO5qnFFxK$Uh1ms*6(#dp`T;$rW3xt)G!4PANp4&M~NzMw(dOWH@g zJD$*-VxEuZN2}OBVP*``;gwIVJ{VTNIjE-Z5dykVW@NXL`ymUpvI`Pw2spXXJ*~?P zjh}a%Ol@uTZ2~OVC=RZtXDayl3y~^a36eg+8bpe0uOT3{2v7&KQq5Dn*qXNDed8&6 znHKGPf<2>=&-)MqC5KSAmfp;oX5QeE!GHq0e)m6I9OTr{*N|X#^ZU9u3JBl z@jIiu^WCK69KXFs`Z=*WvH{-jY$0O2jLfBYYSeU%J$+K=Qs>3J=fB%p|*)OG_sIaxorl zm@{L6heK5Dtk{xE>cD9VR*I@p;I(*>sA+SIWG2hKTsFWAS@3UuVm_+RQj8pQw`mFH zg1l>?Y??#jK1A~pd&dYKpc5f&^?c`F9oM37^Jo;n8VJaZfhO}c5f3zXnSiOlndRws zIj66`DfnTvUWb*WXdBgVJrc)Oi?m80<3^8QeVSR&EPC#lr6XBN<^`XqP?g zRm-4+E}ZGW`@#VkY#AJ^py>WzS>H~QeuNPHOL^JaiL$lLiPA2D5ET$fI;as$JM7!= z1yo=mKjSSGfu-^5>=9bgW!WbG$ZF^_K+%GOF#U0?hF9B~Q4vy@rJnAIVRD>MSm0gw#i`S>OTo3kq^jV#{qjuzog;rsur1w_H@aU!WFr zCt;Rn5(m|uQkS31WPaU{;(WL6_P0}jZon5{uOivQdG3-FqjF;S8$xzRzKi1#g8b&5 z4oKR6Oz$<)4TOLfS~;?!kO&CyoN4x3#KzQerR=pNos?hq;0leLSxqLfX5sNA&UpTJ z?WM{`tf2VX`f>NAs`v}a*o_<`Db=2jks++j7n6sc;8ni zXT3PDuRwFs)Ldp$W!+PS0{UL(5fx zbDUpQ_4PWGMeA19Ca}__ToScy3gsiw}a~HSMhHGRkjx@R+cpl z#D5JZ-R&nu^~$pV4e5CrY17;$rm#bn%%c_CUjbFv{alH?g(JBfRLBNi(2?a#QjcRc zmb)~Ajd)=4w|4d{T3c%_KljMtG_3k^HzMu{;0i|7+ijW-AdD_?Lun5L_}3=~8B2r^ z^x+x_c2_`@ue-Ozl_}%tw(*jnfkltD2eCYfJ!!X)?n2??LR*689#`-%~Cq5Ok~cDK)Dp>#&c0+6hhwnWaLGr^u+26Q6W- zOAd;a+BYuc*X$`QT+^?7RWpZE6^T53kIJU^FMPm;v4?V4I8VYgDNF<(ax;Q=%VyM) zksf*L5RG3~6OGhBSwtVor}@jt++l4*IV)BotUf@x9XM#SMs~KMh)YLbTIRF&7Cd<6{Pcs<`ZHjqpD2MT7I28Y}Ca@!Y1ZCR&~E^G+Olk bi9`~>QL7{8P_Fs^&I|ydiGtpC}9?ad<n~hWz&}z5^Qb$*J%()f5>u`I&{G%`TKL90x`Z3w zq8$o1fzFZ>!G;$QQ=|LFG}xRW5md4a3oA>n+;-G7i-lTk%<#u&Iv+25Lw0xSWyjYWE*wdNIF;tDIpScY+_YgA*i8m zd4Nl3hw##XwuvJnl@Uf=FjtTN*)$_hnl>?JEL=$~ZCd!hBI>Rh{K6yIn-l)U zCjZDJ|I8}!yCwI#9ptJU|H&%krWDGK67RAb-=P-KmKFcZF!Q(_{?}l|h!XJ1YWl+} zgi8ef?z;ccE%eG)|K^;Yn|Ij|aferoPjW8e$+oBz?b`BmA2mkA=scZ@R z$vNz`C684H_{S~(&Nuz?&vHl#>bytnyEL(hA5T9e-MC)}1`O7`eC@0Y|IWdko#MLG;8w|Is$Xl_>t+e$%EV5)w?Gd?2x&cK-C(-p!o-@5PU99iMqU z_1&M)nJ3MqKA4MXHa8=JbX|E`HBKu9^t223=D2%f9jk~(fM-fgJ3+OUQNXZ&EG0~g zb1-=T002OAQchC<9sTbu2@&w``u_cgbpGu9~ zyMkZUrtq@2&6{Ij!=m5jnYYT)(d$V#3nv`_01RPCL_t(|UUZg+OB`t!#NF$*~(g zz2nuTI22B$3LTvdb_MoKE`bL?EfrD)pp)HB!SU5ds&IC;w`aEncgfs@@12iMB&!eu zkWY5DJ1o2xaaQbXcE?q2Czs2)H}y0Mcb|2!wPtL2 z8Gx2Dx;D|-w_y>hDng9OGKVY;OOk}KW*G(+$J;X#uu{f^FphznP7M&%72VOaL7$PO z*R7bBvoYrX{tS%!)@);MS^00mt7;6RXF%IX*? zj>LGDPRk|$rfDvuqdY^@(C!C(Mk?k?u~?=inV!n<9%_h4DsGRYr=c5&9LAa%XTc>B zrDijhX>gjO_>AT-62Q{oVHo_5xM zsHC7Mw{UcH%$qH(zFVm?VktikwRiTZu0>^T^%_Ym9IVtihOm0C^A|fzbwrX^SL^)| z58`*P`q#JWFdiw?`+uYR)MC+%tB>ouiypG__xts$Bq5sq__|SG(4Z)~|L1z8xU~b2 zY=8Xlp>kCaEgiRK8`4yZME>dT-+aI4b=q3*-~6*nl}-fPMu(c1dQsW@yjuW--+58oEM6`pVIbCM=P;sqk)6GGy%tI3%*93C z-v8rr8?DS1FM`+%^N1Cn?2FFL%1RrpM+a1$= ze&6`1gves{*apUgPB}Z7%*qVu{_&4tsu2#B)y=Z)*6IR;sni~S;J%_DCUfp$n>%(6 zKwjoJChCe;x=m3Glne|(S)0iw_;^O0w8x4r0s>Jcmp#id_ymMlR1e?jXy~beJc_rd zqUZ>CphRVAsDn&Vi+EuS3u!^~!WhwJrh@*ne+VegDN6GWB{B%0lK(soKGY!0mEt%m z_7EuTt)rj9$aP8!f+Rs=3;HSOXYMH?VFR+j?Lpg5D$zZWZ&;;RL((8E9%(mMr}sA^mSQu(|_ z4XKmm(~}v`DFH`OI>E~jHZybs>3N2cJAdK)^gIopoTW^CR+1A%S z4P3Yy_~E)#?|)^N+fN(m8OD*L)oy|Wl^U^0xJh~ut<}CV)=;ns4u^mt{7HS@nFVj!XOPD;&!^u! z@2Bziy&7XbRKtE+3QBUM-bK_gu! zie6KZ)pB~{TN-r(96;*o?w$%5Qf(t>)oOKL>r{-zLLg+Z+H5;JHk(z~@-yptNy$}} zLlFjgx=B3))ptQ5si?0J`WiSEiwTFm#cbXAwDEQm{oTing}ha-qAGs#ML9UY40Xf( zxC!^|#;5Kfkm_*|>UUq1{1$O6CX&9znm_;aM`|;*W^?M3t;Ir-u7ZO!-3wEj@Zgf3 zZsdn*>q#KhT`jq$*8^f8PN8?|Bk3)DY;NMoqj^0@73IVk`1JhgFKon~S{OJZeOICb z$6x@c#kM-Nb)K}kx;i>~ev7oagX+u|Fh4_|o^NS3-1DQVJGwAbUtd#GL*K!-18XP1|!XXuEMQp?M@ zbF7D&8hf5SgFQ`sW0dUaR1|Jvxu;$u0c0>30cx?%CYI#L6CdqI3NSbYA|6@xP$WZL zemWt0;KB|N2=0@JyyQKuErN_HC}(F_F*pKHG~x+F3FQmgW!77u+6EFbGtN55otB?y z53+kaOmce&ppK3jfT{p8S#&=Mj6cM&9-k6TC0JID1ZDzQp%|f0j~A@qWf|Vd2~Pq_ zYFWmxctByDc7b7f5J?4+l8~23bZ523gp0 zBH^Jk!^PMjv)|oFppIXkf=c%pE-hdmK?jaB*hp#ViitsP+-kAtR+4B}U2stkbz|5Z z><%#|Fv*?9+M13ZG*Fca@`s#QM8n~LqR>REd$JGsN%VRqVj(f1kgZJ1OJa<7cthg!o9FrWI6nnBSRPpZ5af%AbL5qBg7G zOgr}LoS(?n8@b(-mAW?Rd>|Ay0N#n z*1PEm@=~&!I2!0CYU^{x_~6K5@4I=7TwHW7ZoQf9UG;hWY3|Tyv~g)vo*JE>?R}n7 zR#U0x^Y0#yrW}kUaXl*NT*+5|)M^XGB*x)zN26{xx<9)woQk?#4#6p{Sn*@bNfS=5 z!=*$O_mlYI^a$G38JEk>@qE7H4mf`$5J-r0awKtDAE~etX;GmU+h=Duo55HG(s0%( zXl`6eOA$qF{DR5Df$#6!0p}EiNEY)hC)lyzD1%|Y(>n)K!)9{rzh>D6m!Y{dNtg2zX>Ahj`l?c2pfD(Lm= z4-*{5Vl4^dUtq@h@^wZ{)IignK@KM#;Zx90CfAaIr`P#paY%>dZA#_ zx%L6qX0_aR+9=s%5A1nDrYv$M6ewX^dfgfCtA4wQj7269`wy6$&%{gc!MwRXZr zq|ZU7b{cs9{{24}b-#;9mkD&4TzG#eO0!X%8tLrKzT6B9##CW`FM zaSjeUASHM7$yFm!ss{)t#Fjqt#ZmFZQ0loy^~_!R-G@DceH0l}BPn+o8Dtb2RwPro z5+h0BvP|#5PezoE#E>*4Qku(|IVnq)X<99IqxJj$6n&zm^E zjy3SYP507h^~zND&}1Jvg%lZ72nHCjg*MQiJ>#@T`PzbDMkFOrQ49+&7BqZTYlPaT zKjE)K_RnBFdBHSms^-gqCR3gnJAfBAcP3P(CseIdL@hBcE<%IUELwp0&Q$o!QS`)2 z^~X)`zDW4XPw~P_`O#M7vO*#tdil{>7Z+dbyGQ4>L-@~E>bOPVtv?kNS@+3LARcqu zt3VqXX8rWr+NV7n8*L>cfZwk}(VsdQK%M&2UCx|2_|sw4qdc;IE&14Vz>YH)IgS0% zQWO+X_|$9k%Tw&aP5JA>g;gEGk~aJC(aDxKw}mh+E0`%Ji0HjcEGdx=5L*54#w1d> zAWO3IY_03$mmOe9W(|>YaoN6U6Wz6WsW|@0OFkYI=s#Qppk0T*lkA!BP ze>1L$Ml&lI+_zbgcQT%na*J&(*0^mVAwniISL4#2s*hA#Q$E(RNlPsbT1{0=WQKTQ zKB15iT~MHL^><6rHHSbbWT1%#ieC3P=-&Wo@8-; z$F+RIoJx0pf;d}BK5AQ0r=rTILnugdQbi$VQ6105rz|gLWW$x<00010bW%=J0RH>% z?*#7`{|x^AJtQ&j@9*~h@Q(iehg7BEci``P8SSg@K}dw}{A{lM)@k|g@AX&J@8ZRo z3}J*YXf>SSTA>UWe|c(SNH6lw-X(ZO9gzh}wVT2%iXs8-Q;we_nGe&owN zn5K9Z)m-$kMV0Yw2pIJ>H8ssO%}6!%Er(Yx_Y^=X@YEw0^3~UeiV9Y6GS`P{Ynnr$ zmX?mKB>+pCsjuZl&m_30@SbU14)IO_2` z;($t{(WrqR2TdnSD$HuUG1}#gRVtP$19*%EqlWZ*Q)Y5?#P1JAU9Qmp-&Wa!RB6!b z^(L0vP@EY2w-Ikw)D;bS)QY9jfE*evNilgz&@NICg0j@->g|mNZ`_=kx_9rss;#V>GiAGaqocfDgA{bR zdPhl&w{cq&bL5vjBx&h&MFS2nX!T+g{A!%BnUiy*+QmsUo*m>#x=rC|yk4hN=Y*01 zi4~c%LE0%`PqG20!LO{8c$o?QO9*=7PWwLQ8S(JCB=#(Q(j0rPI&pIB`f z-^dJ%K723Yh&%LckHQWdBPm;c@|%_?$|N?nurNQi-H`kyw0F-j&1l3z8Ojd0YC^mn_iSixm#pX~4c-&`}v+Qb8kpskdJ zAzFUx@4x%19W2_O>7o9i+qGHnK>WqYO+>1rvCir7pBh^X@NLyv8y?=CYO#`Ro%uw3 zXz2w^pFmn0#$E3kI&}at)GWAeOgG0!$+BT-BT3)Nhzy1ss$xAFtdmMxkftFpjNCIsRWqNHn6K0vllw4Z8r_+GL0tXAm zigIDf7Fm28EhKb5EAqUV(1FQ>(fs!0rd7OMWRjEOF6ofI^srzx}UJ6wW8TdfJO~G%l5LABp^3!N9MIe&X3yTmk#!bgllcneLkc=R3 z*cP4mSuGBKk*s`d#d(x(hU>WYKixw^L)}BS^=SBV{xZvIiNOfB+h(~P4Bqamb9-c* zp!R00JRtX@l6200-RG7lHN+Oy1aba3G1PhcTI1kIT5|L7~(y?IOOlim2$8l(qL12V@jlw9}p!Qf!^ z;NY6gOGRaF++99AJpA($x0zvCmNMU&9d2!H9Ufl0Ej`Iuvj*;~t{xb8@bc-CCr@8K z7^to;g$vb#2~y@?fdY4)Y5n#2v+?oqXU~7VenwGi>ygBaZ$y+*<>ebd^7%@UN=gBC zR3T;lMWG;FzkXeLZ)$3)05vt8IrHauO&cLI+*MMd++8}5V4*AU+6?*9k0=6d}QSLY{xC%W#v-I5tV9N90T{fe*EVB`}c1izdnOF zmq3WM1C~MNX2dB6m6Z5=9TRV-8)~4xYnYy!=qN#`($6++`Xl0i|ILf(D>e1dAvXN> z;{EFi1q7&yioa#5_5cScrvc>am`tm$O*WgMx3j3K(v92VocD7fh$am6(~~bCDPwjyB9g-zS+*ul{C;Q zq_ngvNS!07q+#Ifc-x{x)8bJj-2V38=g*%zcMeFOsy^pW2iYa7-EK4Bn&6? zLo~S7ipOJPW8sJrhM>V1i=l8h@+MAFKxF_bzuXZHtJO~2gt|}z^tI4!I-GvB;6)|< zTrn9@tGy)b#V8Gg!PVyV3-sjG^XD#Jym%f!WeUhQP6)h*#dR8ErPJ>~Ewa%;6JULY z*1+p~YC$xUkj4;Gw<#pOlb{9a<_-YC>vPrGvQwwZPG7$Dff3|@nWs(q%APQ9RzpMO zkSIc+?f}R4jNk>EWTr3;oSka3;BC|B1&L%h3LYFP2|%X+RPO6wD9Yx6rc~wywHNwT z*(^}DI)dWf-GY+tupDP$Sza{r5cLb$U^DmeG{?NT`Y8f^qFVdI4+u2Na=e9sbARg>m*KO5ypYI)NwmscDA-TKvhu8P> z`QG>LK3}7qu?b0+g$2cRE|M?0X0h1BsLK$08M~3>^X)F>>^J`cbwU@-%)$T6a#q%@ zYjn7pPf|>-U#(74owy=AM>AG2>zb>#n6O14r8_y$Jb=3IH~_Rk(S(S!VP-MA9-#oQ z*KC#IgfX2|tNZsTom4>z%yOQXOW54*_1Z)VopB#Z`;h~6-%+WP3lw!1Z?+yUWD{nz zbiIj%SbhsWrFLCj-M`O-Q46`6&!)deD_gvpk1ZtH1qvOV*apyi1tifvH(4kRZhNtO z6x@5tgN#;Zk5)c;Q7s}UP5Zn4S3!q%}f6)YS(F}eKS8ng(t)XSyM@^LL$s;u*ejeRIu3BsrDMva1tmo*+aDekPSZ~Um>dhd zEfg}(?pvisO8GlVhy|gP%4z+aMImq=B%VGA@SIL8a3!&N5NO5?E=^ih+SgDn5^w!( zef8i`>#aab%cJ!~&-<->f~LuBln{Wb0MzZ!`t4!3ZG2wKEogu4eIXKx;Rt#yJstO# zB;^Ilg<3JVh=khS1A^K{PwmjOG@JiQW#SMBo7){VfE*l1yAd`JQogCW zm`QDk1&~jCdvW+58Ff`M`gmw1rGZWgGnq_$Tt?{6hDI+zqmYN5P~ZY^h0v`jGgBLj zTxrpB5I093j*X42#4HfYwpzN>&u}4m4r+swvC|?9gls}%+=cTT0*zmQxH;Mw3n95< z#W=%QikZ!j+wBg8)ZApN!Es02?#&FiOgy#onswi>DMh0d5Zr!MGUSf*_V)VV_ZkF8 zJ~)oJLntMQ3b{U?$K&z+f#g9)$o+MAcziq>jb4DXAqez%1}d5W4GgfcIao%HoEu!Y z+IJ!F!FER~DP4e)k={z+q6tdB&*;60000niOc?C?Sy@df_D>jT&^}9)IH_9f&e0r6L@J5nk0Iisc^~dmx4792aydBbO;6 zlqHen5n0X-P=CWA8-N*Z+YCy(4^+wPY33n<*dBS*B8J{0jo;W#)fyFqn<$irA%{#s zVR0CAlADGU4|%{|ePI?>d5w-^i=#$!tf5O}N?(RWQ><}0R$zIWaX5GU!z2F2ChM;n z*_;&RsTldcBJs5x^S&kZyC2Ak5&y|4|I8}jq7?PbVt+s~~2^wzhg zc>1{t3q`Z1h*cC3SjV-E)~7C~eItWkF}jOAH7#-$5@Q(^Yly$Q(f|MeI&@M_Qvm+( zaPTZa2^jDF@bLZq@coDWnEL)z`~0cgrP;vh{C}ap+3-Mg*n07XTkE^T7`yQO#ZcPt z;qUqWzMP2X000WkNkl(aVe{5{Q-#_4V_x(n0r^^8vaC&}=I2{Y) znSa`8{PeVz8DDTXf5)6<%H?wAY})^8#M3{1`avol{}6{`ZQSp9X5$B@Er~q0@+_3W z0?Jq_*J@B}+Vzwfn65#>sZcqva0^sf9xIbMUpnKP*q`|n`zNuYB&9*2w!=*;GT z9(?NL@!tnCaOJ_?-d@8NoJ6W)?hfM`4S$w_0SKs;f|2sYFA zM<;9gbo375?6eh$6gUz6T`NO`-1+ETdVe(( zeb}7X*-53&Z}QD-wn!YU(xZWZmZgc%YAB(7PX&X)K}bKRn#Q_rWIre7o!}~=*+e?D zx*7_F(&=Gefg*lDrr-lskwY6$9g@LDj7gY-G49DF;dxZdml}i0%3fgDit1)`gy62 zFeln%UuSC631z((fBU=_lK{-0DsZhD*mM+sF81R?5C$S#oev}0 zRPn*?dU7{Y4FlCEfBCU<)Np_^Ch$ zp2bMGAfM?%HB!9@BQ9vy_$lLPB~og@;tK{iH3owX9dXm_8vg*H1Yy{$dI9P*Bx%T} zg;3U7zvrdNxI_#vx!9{(2*y}7*%Sb6iV~pYo<+RTK=MQyG1^I+Vy22QAmIXzoK!Kq z0)hlJ9eo|SrmQ%?1b=1BRCEbpl})<35Gs%i3uB^G1OZkWk;O^KYRm1iD8LYHHYtKL zndWnLGsDnYGCI?=Jh2eW$z;#B5m3^pqNt2Pq76-Xx|vC)BCK$17+iq^RuN>Gz28TF zND3PpxmZkY5JQ*HA5Rb`wC4G|mVA(E=8Hba8iuUiO0sz6XMYU#+(t#m&mlKd;xu2} z03_#4(jr5GLRN33Md@T1@KIC=8*=uGuHK&y5C(*y+-!cY7;^?p)W|wJcws4U299qiwd=q3QbxIbHz%f9e>%b`#k5ADpz{~ zpMJUT(|_jldiM9btHUTrFKtUpUwwM?tSytdcMlAJ{8;!l-jcHD}*p958(>DhA4yPoXDLLJ3wJQ^T@x9q&p& zk#t`3jqLQbt6>(LOp02m+$+%wsS-bV^*GOnYk$}9W&wqvUZ2xoFLK(Hs8n|*g{qm7 zD`SigC6dV$`t_64a|miW5Ktt&{#tVq4w%aqd^}Oe=Hc#(nX0EaAsqlOCtUq@Z2cY0%0D$2IHq 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 RcC!Eg002ovPDHLkV1m-;kKzCT literal 4489 zcmV;45q9p0P)ne4ns z`rCsuZEhDOW)m7zBp!3mo;@a0nhg^^!H+fUzfRz=L-NH??Y~S=rJtgAEFnRS4HP>F z3n9vzLduyso2= zj^npT^xTsQ3|IQ*r5i$`{qe^-dDMqh9S#Wv9Y(9VhcT>qEEE-YE-RQTT2v%bxtwSu z`_^6T!cG46-6bP}`r@1Y?z^ROC^vX>AxyFn5>4p5OZ)A@6*Pk(7!7zx7u2ak`tjE) zCz2{BiZg7{l3yUoWYhKKxjA>q3JqoCzfLS*$^7Gs``~spZ@+I~S1@F%>&RpM)>S4} z!Pj@(f^k{Nr9}JNYezaW5iWNQG?eMaP@RENv4=O=vPPbFFY3#6>ePzYvsgDH3=k(FwNJbM^P@ssiO9K(+_OtlJRmhwc)(r6D<@{vy@8H}WfUuF z^ytRm%6=wEi6=vINtltoc6!putGHy9WL9^4JyW7wYP_|e(NJ<3ZkCq7h+=6#LGF+^|Hx+*?rzArCj_ootX^(`905jnfHBkx<#$s zbbe=9u%WV{GU(ZPW>dQE3rgQ~CbzB($WbCO+ zsr}Tl=B4M3jv^13Ky~1Rvwk@#bA4dgQ&(PETIyP&xbbl263#At8F<=Dkz8OzmkIsy zV4F&ZeIu?OyFEWY-}>7JKdI=8jX~f zmuG+j3-gCF7Gvor?)n|!geBntSpvk7B`IYe3A?LfUa#NBQZ+pwdreKvbra@hPba$| z-2io37CE3ZQveu<>qFPNboFLi!0Bf3=nelpKF|RBT$#CgM zM8W1D304jz9NvWdim)p)HTJydlo^JiF^pz-L1aOqKsX!%zkadxqEam~Bn=LNRV9bh z>5x=Kk_Gdw#aWq=#w#|Kq^*U8IBvBT!g0N@kS0Z0Oo76pLuN<}{%_SR@WW`5lNBNb z(xvfW!YKEUn=;@?fuW%=PV!EbSijgb*2mITDiE;XxB+P(Ko!!A0Pvd=@a^CN<`5iU~9!vxic%b_Xl*bhJ7e2nRHd zAsh}nYyn8gmz1(1E%6uHGkk$bq-b|K2+lXBe|`akC$WyMXV0qU>o`IY zlanM(a1zYKUz;~q-7H0&oj2DzS@oc0oD>v(W9n0L%A94it12=x=E4jH`qflb)w=gV zhL_dDiy)hu^ZZp+^>W^WV)gtPsftWD>ls#dXQw8lB% z_|%ih@eo5S1J7q3wX{Pl+!&mic{o;PBqiJF)K`1ZtP&(?%s1K%IQph>qur8kfR0qf z#o<3Eu?%Un$Mrp^hk(=(*Sj#1Q z_JYewsXkeytYCs@+m^1!nR^9TA8`2mS=r|lFtk)qoOpc2ZUin^BJei1n^i=2Tf($= zS+L_QPtqKNnM_oGHW_I67@%bJgCF-V^K7ZF?;R9*a3BxC-kB{bKD*^#OFetGZ&(A`{y@W$iip;X_~Fht9jKndf;kJ2=_b*Vx$C_tU+)NffJW$gwEyx7?I$7I*^^mNzcAN{{*YHU23Y~F656eV;ip<=i# zF4mqTNLjlPMSHQozrPWkOBMu=jwW*2qhX3QEszoy?LpCQ6z^yPQ&Q5uAcUw$2vGa9 zK0K>YF2b+%Qqk<~&d$l%OS6-mowsKZs;Ky=PPb3vz`LJcKYa{(`ucM}a4u^C)OXP1 zSz8e2BGRSV&iPN}P=?LjoP$gG`>xqmAbtI9)>ps*%YQzy$Us~E;Ugv2EPW%R>570l4pO=k|l_ym<2J*B&uDEvX>Qx|Be53ms zIPmvwuDx_ZueYPBu14|&pop~VC!UwLKSKTeOUZYi%AZ4Zr3VX0@0ysH_yon))5`z? z)MW&^0J?ayCq6!Ify&VcJ4m%(LY1AtG9HgxCLyK9iYa}3WMtf;Ilu$Q_y|0BRFNPd z5aL|9Jw6@|(0CpcvppRSzbzE+$T#NU6d$JVLrNE3kA&a40~G8aP^KDlfeIiY%uSGpWAEtbjyZ^s+)-+WJ%=H9H;i0s7bCI`g0=!B;IVD(RY5_)g?HVYnF9`BMr?iwv$B5Kg-94jFkP*!v)zQK$O=nPc{TO{mURa# z28%=BMDzU;Na@Cn8~;EcXc<8eq`}zZ8o3*)7GWo~s(xF%!=8te1arT*^|o6yJDpIn zDlF^_VIc}v!Dr(HvHLTmlmr!A>Ez5jZ8EmW{*Xi^iZ-D-6wR+OPy`o!*E&gvtWAWi z1^UGuw&WRbis7LBgc$w*BIws&3$Fa#dcFL#aYbL_I%Cz30b?OY6=2Oc$U!uwq5=m@6bN8y6${D6PRc8QsUP5ALx7S5FbO1q zKv3II@=(vUfsn3ywsZaYoIB&|-wY{OQqsnEck`^I0&OS+DH+o(G%Ljx+Jf-q{fGq~o}_W<3wa{~EbQ*oiO+oVuJKNZr{S{ZG#ne`-wMS7;xJVT1j zMuyg6tVN>T=p9Fb)L4 z_jvsd-maEIpC6$vG#WvD0eRKNd3NFEqNiKe>+OY&Z?s{AInop1I7)$=CGZEEazOG* z+DHXu8hLXLYJtth>>VbpU)NmWMh_)OqF$ghT!&HNKdANbf|?NbF8e}>iPTHcaxfa( zg+E%xc=*-g7(kgBmk>0i&~(_;N^`;&O~7d2coV(_pGU80w8=fS5eY5eMBB^5nf8TW zMA8c7y`h=Sz1O?t6sPsR_z4_m4nQzla+lBJNbRE;SNrAr(2`X5*U(h^(91Y!?;w2E z2&)ma*xh4D1#??cm~LyY-I6!@8Ux7x0w!}hp`%Wa3^7v&&n9jTSuDYyt6>*(^)5?$ z>}G;x8r3dqQbXHm_Wqv>&!P|ND*?K3_$)7R^D5kF+Oslt3UzkDY_y$M>uwxJgIm8< zi>js4`r}Y+^oEWync@dlLriNkVX~U7r+0to)7SOsYetvvZPiE!TF}M@k#h>E3@#Io zE9CufWL1lGHI?E@IN|EV1a8z!T2Q3_9}f)Nb~ZF1 z=vrsjyP22w9fA>SmWgzJPdFU*cqT;Ra*`f-y7g!%iKNJg27}la&x?jap=c1ID9Ngy zEDjC~IBz#JIMdL(tIzwY9RUGCqDVAnLAB>q$_a`Sc59yh_#l}&Y8V_-=>2=>>SkOo zCRprnWe}j-0G)L7u)j_^VGQI6ELpDKorA|^&!dEQS0>77b(Q@o$WS}Xs4+q;@&rS1 zuTn;0Z0PSa)NlrMExUDoh%&<*3rnla4!@)df)uki9Dw7=?Xn{1qGdCHV`O=i+g&Ax zl%>tHTmC9kTILDm|1zqa~*q|Lpof&;?v-8R&miA6b!z$k5C zczfG2zw!yx+1cWX2UgeCa&vP(#8Od<#ls)6va)j5-iH%q=>FGEPmhmJPY*|fVWTlT z61qH%YWvM;ODChXs3NOtxmnrS>+9=p-~I#jc4ud2JsYG|gGvPr0n^m9wA6IIko@Yu zkO4XCJNx^$&T4-jQER9l)jT*$ORcS~8?9%B*zxhya33MVDmXi!{Cci#ok<4dfU+@r zQX8`y8(=Oqji0oXnej~uN~Rt7^zR=FQ6ME%E%Rw-_UMn(IyyQ64y2}ZOPLv8UxK<& zmX%#nQe0eE_}RHCEG#ZADakIoaG|ucprD|r=t_S6m#Fenb>&J?Q9(gz!RI+SnVH{a b{9pAi6D2Lc@T0}-00000NkvXXu0mjf5NV?u diff --git a/public/images/emoji/apple/family_men_girls.png b/public/images/emoji/apple/family_men_girls.png index 8751df40d45c632329abd069066511cf22770bc5..1e0f6f5290a2cfce01299a8bf17f4b3825ab4cf0 100644 GIT binary patch delta 4513 zcmV;S5nk@TBcmgbEPoz--o)Fdm?V?MJHqqGM)$=o@_OztD4+YuJoLjeA{=EQT&(-c zJlUcgB_4nD!7Ta2GW5R{7HQcI6iD=j@%X_ozl$CI%s&=ntn$G;^UqN%B$MZD=zpyr{?}vb8dGow25jctOwIJJG*3MDMuR5t0Mx7cMFuO^%5Kf&Sea+aI5{NO74NS85 z$TJBufmTE)sV$)|C!8J`fG8k_Dwk)yF9krTiF+J+vQ^65nav}Y18L$ zm5njZ}O@G9TA&0IwsvmgEo-dd1aO-j!Yo{xtejR|+SNFyD8*jQQU7uVc ze}6JtUJzPbOm44;IP!w+tW#>ui9y6upUQE3%VdhlYk2#@B>l!H|HvlmuN&T>7U!xN z*_;*lz9Ig_Blf!<%P5dj1@gEb|JYjp$t&=+9Dl`#63~+r{o#)G!z}&fn*Y#1 z|LCFq=&JwkyYI0V)|V0Wz9knGPKHYZ%Zv~A&tvPhCjZPZ|Ij-i6$}5|W3zP(nOz6e znj7`F85a{^{pz)5Raox8DWhZs`^h=LgAnw`P5V=6}(EH!BqX(MH$5a_7fv-=!W>L^%J=GyT$4|I|zs5n2ulV?Q%o|IjM`(nAI= zdJ76z>eib7;DNS-8X6XF0XClh&Nu$rZn}I9dO`x}x;5dmJOA^^-?>%dvnLV`LjUot z_{KtgQa5sYdmb5e^tKEC>yPcT1pB@hn1*AnmVa8sm^2AKqUfjzR&I)PVOh?oNbusd zp?*aQMz+_gD~WAO3rxNE+=OUcM*q<=s%!`cIF!z?W5%?AA3J!fcN&CP4*JV4nsFC> zU^vE+9Bf4%KxCG{qh9^<)ySD4#JQf*q9~bcGPZp$8Ww1WWFAyJ47!y^T18TNk&OyL ztbdewRMKWkQvd(}MRZb5QvmP<{{9s(@b7Uw_X}43@EwLG@U`%#{*(Ru3-Iv0{n`EI zL4(=;Ou(Sn*thzITY2yr{i*8j@bLZP@MG)n@9O&7+V6*E^k@J84h=~}K~#8Nbe8o` zTv;E+2?>)x83Ke*!X}hbXt9*dcKbt{rhj>N-#_SFm2r0$+}+*Xow~bw*X4Ejo;x$0 z8M^xhRgy%SQ(Ro0ogvNqBH>T;MP^DeNGeH6{4+~ta``iJT`Q>0 zTu`1Y`6G`cxx7Gcwpc7?eL=Z2^N%b^83op#quR0-~}VJ}|VlT1usdE6=uU)zw+dMx#-GRUcMcX0G(uL~H)qkLB3`}8-gTIN$j%{?Qr{!Iv&fDZS%?u38nEWfE z)D9tXjgYryDOxC#@-pVS4qEXvU_{Tvre*cRXFVq_5tTa-5 z@%~12m7=Or=l$TH0f%X2Wps4ZhbT=(Ol62-DrvS-vF@s>ymfzjdwcWoZ-2jN*VgP* zq_*^YuUETP{nEAWdZ~T9J>>DUn@i|p-@y+ zxv83*$da9*sI_WNDRaLJITY^|SdFwTKPkdV%&B4AZiEPuBzaEIPz;FDXzV(wCOcBS zgOOEI-~oq{p;^05XJ=^{t$(F#`I#{wSu=wOxqP}?l)8I*TFxU%%Lt!9N=B#U5GfZ8 za#19K1UIdT0cF(K-5g1Hcf16+eBIrKot*|b5_EJ;6eQC!yqs_tKKQ`k^Z5)8B~d8#w!iRURYD&c5n|j-WJx4mTF0S97p&|D?0Au;P=C0pyu3y$D@%&5 z8f6!V;mUU8F!)3@I2_f@4oF-ZS+&fwc7||Ny<~^mLm+Qj`}b98Bx2op(e0m-CgTY5 zo6Y0Nc3V;&twAKevAGW%k!0A(ZQ=<;xl0nF&1PwiZ|UghdhQWT zqxUj}GF@IcI8LK1=uRETMyj}@~x_P6kqXi)io&Bk_^l$7ehb+�-b~7 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 delta 4540 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 FV1hpk?5zL* diff --git a/public/images/emoji/apple/family_woman_girl.png b/public/images/emoji/apple/family_woman_girl.png index ee2491a203a1071b97827b7ddce0728133578374..78a9862bb95ce0b65d86367224b4f65b058553f2 100644 GIT binary patch delta 2639 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 QlmGw#07*qoM6N<$g5tt_-2eap diff --git a/public/images/emoji/apple/family_woman_girl_boy.png b/public/images/emoji/apple/family_woman_girl_boy.png index d35a2a21e147a152343e864ab5c52f6dd9ea0ef3..6599a15e70f633c82144631fc394c4de708953d5 100644 GIT binary patch literal 3605 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 bio5h5%0G2gg5gGU00000NkvXXu0mjfNTn4= literal 3920 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 JPDHLkV1myPm81Xw delta 2206 zcmV;P2x0e$2dNQ|BYy(`P)t-sM{rD66bryD8__ZzGXMY;0065f8UO$P;$>8mArjIu zAFV4FU;qHMB^-?+63Q?guqqkLF&(Tb7{@RjpCS~>Fdn@v8q_i#lpGhZDi*jb8pJOg zkN^O~E*#S{AI~x$7zO~uFC5V_9;PN1z%LxQEE~oz9n3Hu&3`c;#xNbsF&?!n8Ne7^f*2&oLg%F&(-r8?!1H(K8^t zEE+Wc0NWt9Ap;?xGWjUFdfP;9=Tt9K0+WcNz__D;cyZ7_TT8y)7EiGa!5$4Xr5{&oUoA4*-Q9 z4|N(2)iWQ29uBD}7rZVU%|0vHfM?!AFo_-z$S@tpFdfG)9Z?Vl z;#x}NXI9%?OzVw(-cCN1 z#xEM$HX^hu8s0Y{*E1m7Jt(g%7QrqX(ljC6PB^3{7Og27xGWp5DHqo>Aj2;mavKdc z4FGc(4BSR6ye%8MEE~Bj8rwG_*Ec1vDj3o;9J4MOttlAXJt*5rG21pH&oUm|L@>TC z8_6&p-G4+c-Ay{xMH6h+MA>B41-!>uMH6h+MBHT71;5H%S zHzU?FAK5e@+A|>6G#}bDA>cJ3+A$yEHX__JAl*JH)G{CCHzLF?9N{@8<2onZGa%hU zFn`=NBH}qD=R7IrJSeU;7tsI!0NZp@PE!B`q5c948V8-I_ap-g2Inr~HPsT{gZ>FB zTfPCd`}7UO_7|=@%kS~c>rI@FZgOhrN_}A=4HX{lg|aB?1}tj#xM=G3O!EUJNue0y}shRFZ`1bsCWupN>q@9n(zmOmU1=WzdibG~_V-+TAoY1i&r{2$S2=~vgov3wcG zmn{##Z!JZOjNdG|0g9EY=79XSRevjCzT{)flJqStXTbQ!8V=%;(tjb`(mWd@Dm&j$ z1ID>udx1FAat^``v0r0E#hvMDFqrRqg4pyk17R*C0VB#h!hsJ`^@(vHu3S(Li>zZY zqLOq6Byv?5L2OQ9D3Cic!ZD&y8ziEuC%`<5heZ5B6Gqhgb{<-K>_C{u)PF)b6jI_a zBHe8Q^u~|^nCEr|b4YPFV$Zgo2G?#c%7pQqR&d1>bt_iXrv_ZR-BtqQu^DzSg`Rw@ zsJjOeMel-fxCIiqi?O1F^N=X5CyY&zkjRjU74;p)gUKAFgK=0Qm?LMm609h`qZ1HS zYm(U?+zd9l5Gyi8vVf>ICV!A;djOFu@XLXS+5%hxIyN_u?{}*?q?n{itSD?KC^GcZ zY=!|8>Eo~>-F={FSl2*4ata`__c7wjcD_S>Qs}rV5QleD?+9JfolyTrxYZ|}kx`n> zSg7v55c?oO)T30nwv;nblY=2?>ha)H`w~Q5)0O?F`2M;;Y#!xMa(~EXJU|f5vbhwI zBU_Wq4q2+m6&*?t^}0n7(R7)X$8d^>8PtU!s!UTFh2S2c0m=d2$Zv83T!;oEfx|OcQD| z!>;EvL@Q^>(xA9+Q1rc?)t}T)`qWQ+;He7DJ3V%sfZ`gEt^STNg zu2{GE)TRxqgKFmfxMHo}e{s!sU!wUBzpuII_pe>?X$9Hy!i)19bzZNh?#$;eqxic& zHP?B(-a5y;mw)CGMaTRNzSg7b6`y`Zi=R8ncw4dW!pWT^&m)IiKB?gNnxF5a`J;Q| zZ?BBmdkzys2cA-g2>vlmzv=y&IvQ|y+(i(*4vsYs%?ZSh-wlj4!VbdE=m}6Xal57) zr2-_i(GV@(rNKqPHf z-cKkHcw?quK#6ToXmC{&T}T|gDAxc001tFhPE!CV^w_QY{C^Ano;+b>(4LFel0pCg z0+>leK~#8N?UvcD+AtUf8z6+;Yxb4*f60DcV#k~moL*HGbI`d!Vl@9x;_&O=Y zS(Z4mzf(YPyFDKF-R@|(-ygSIvMnRg1^@}?Tw3_?xVt~RD|@4G4k(O-5XRcJr4;|* z;_{r$p7R-ntACDL;NXN93$5#?qNFWjr57ETJnDIqOk~M5A`p7iuzX3dsp`JE}hysUTMrLIjE2 zQ47>p?|+Iyq=+c;qC%6eh`89aBjYL7Mq?X_dikfKDi>R>qkbw3t6x9cP&8T1>IE6U zBihULBEU)XmF;)ri^7|B%f0r8qG}Q(enB>;I@qT3 zh}k4}WCtg@ZDo8vYIxu#RhJlrgf0vDVlZqQOEF3m1BRexDLpUf!JA99eaEgL*ih>z4Djhj5 zA2~04m5m!VDi$y%ZHs|#ih(3QHGPD;#D$Pf^=DaX+UjVA44{3j)GBmX)#quUx|7+b74h*Zc%+| z9X&BUc4IepW@?3dS9@1FNN-zfXHe2xIFDdPGGI>2PA$+*E_G~GjaojGSUgm6 zU4N)sKB!(lMrT}Tbzhp;CFlSE08(^PPE!D)I3A)W0t*MN31AWLdKNOUS86Qa`4QYw zdYgz|7M=e1&>T?n*#@ofAl0Gi@WIM!`rH<`mO{g{wdTAC_eu4MkDWZ>~o(f+b4I$RH*J0!bi2fgplGNx)SB6&!#JCyL5y>%!IH>h8VoCGi0d0qdXn z{>}Mt@4NT@e!mPFWQ#4fyuvs-xlD0DGjpb=(@POkTt65$>>amxvnNeF1G03^M}Koy z3>)PzAk4*e+;X>BGv=Q?TYUW1-txM-%6%Y}b^2RpR?Yq56GzMca(=5YN_FeUYsdi}o7-#7p9>tB66%Au#_1okq_ZQcyHi~|Qw zoY=oV@1TOWkshxJSnJD*AWEe~R)4mpKIi&tR%rDOZFHJuvA_fOgN9D1X(WM7?LzjV%=RbI2ayu4;lnly3ZaWeso zgF=NsE|LpGyqKiz31CGWnok5-N~Ka65E^WS)*MUEF3G8fUr(>!3sYWRo__}d357r; z5+IQYL&PU~fdYqIH<90fHGO6Rp>3OA=b%+ z00JK=A(9&!4k55LDT7bx0)P2wsbo?di|xz593DW~5Y3HDpwpF^9TgATjB2&I%y_Ax zLJS~<1p>!LA|os62CXNONnk~RG)_1rG&(F2ENFXaWkY*=YeVb7BoT$9-9Rs zN~uH^ttS-6VEYEH4G#uTJcLT0Z8dF;jST`&a7Zh6}*^@bbn^px53DYh`105 zLNo;8Myi1G!1OeC6L5l((Gb+v#8!xdLSz;#v?s*!fe`rE0AiLtGDYR?gbNDsMkC26 zsL)wg6vze;k<6xr`r|{vC{+8vv@LfhTu_JwA{3Tg6pQ)^@y$@}pHH9UMqwcWf#99- zTg9m!5CsoH4sAnp7=QE5z1>^3MeW@B4cr*P67RCcBUZ?#cL<#Rcbs5&i)w$pv1RkN zs7>7=e-D4`}IWn z@v-5f?fdm(AtpHfo{)Ej@vgOua00FM=tURukM0)|zW+i{B5^8Y_rivKYtNqurXCd* z{FK*%soCt_YBtWJ#nvNk9-F2$b=AwC7K)B-3RQ${QhDA02eS4x&>&ScrO$Fr z?X9h??MCC3#ulAG1|mnN5e=W9K7u8ey~1Awt8AN2U>FQcR{?E)wv}#PxOetM(KbZr-e}Zfa`E%4%w= z_Uo*=Uw_qg(1JG-8Ea68N#CyAn3@`sW-+R+7LA-XZN%jF#*FqDI@I0WWAxYwi#}Uc zebZ3%99mfIr(K^;W?1GUE;nAqWU5puNHp()#)!#_#}0jW`1m1?*csk_rN^4-hSgSR zLRMDwF~1$!bSa7Pn9t7!X>M)?8@alt2pEe$1a5?LZnMv>gX|xrY~6XCd`uQlNXK|>)~$a{Bpm1hS=K=w_9mv nXEz*Kgrn`Zpe?r8(vSQH%VW7Y5~zuM00000NkvXXu0mjflFU3y diff --git a/public/images/emoji/apple/banjo.png b/public/images/emoji/apple/banjo.png index ca4b485dcb14e0b469502fe4f69247248672cb36..579ba32a2b910c0adb895aaada48cc9493b94949 100644 GIT binary patch delta 2400 zcmV-m37_`Z2kH`#BYy(`P)t-sM{rE*--ETawoyz%ETuPcqd)sXabESUoLCK`)DGJ*SIMl$4ZdXKCEsxPRW?y5Zxz;NiQ^#G0gdOWoeN z-r&5?!I#aukFSSRqIO8y+_pwWM%mG*pL0bzIy%n3l+3w}&b^VRdru)DAHSVsnruH{ zSysWYg{ps1rh7@cmR?FqNk2hC5E2ufo}MZxDsF9UR#a3P8yjO_VA02(b ztdGaEZ>FY>pP!L%X<&$QR+g2D!?cg5sGMeCR*HX8v8RrFWIf5ebf2Jri*#3{rH_|? zUw?#fQ@_BUfpJ}ecWD51DWm`Z0DN>(PE!CF{&@rt9t8{v{)qliJ16}X{`-<~T`oo# ze=c79^r!yy`>z$Y&cyFPUr=m_cGCXk`u(8m_AJ*Wn|`nUQooV@ukek9_p#65l3sOe zi6WZ!n7*s~&$`TL=-$5n!R3+3tXAD}wtwL#bnEr->9WP#-8<{+;oRrgoJz0~P#S3%2XF*bG`7UVu2B<>rfFu9nBIH4T-v3Xe!cew?Cl0Y12Iwr z1Ze^a78C>&dylg zYvq-Pk|qA5`@p^(NuC>3dEJ`*dsXE_#cB$U?c?+Q{i@-rN723!95!+GwhDEbCDa&3J8cPvyGRV0<&NyZYPD!;{gZfd>pq4`7kWb19>R; z=A#j@VK$r>x*MOfFeOXF)PKTR-qUe8j#Gtvwi}NrnlgPRE@xpLlg-i!HK923>=W_D zVm1qRo~dHK78d73VDhtgBCYl^_B<}H`TA{l_w)4!C(2=OZyt*;;$>w+J<5om}_c zl2bv^AdfH)=4V}u#Msw6yB6$!T998-SY|ZoYoiu1^RoC%9xL-hcPz@%IlC4ZOAxi1 zPFJgGhLVb#8WHG<&+G`^jm4RBglH~Ps}bt+qS4Q#-soVlzFOHookO z3Y-fJ2BY=fG9IHEt`2in?i-hsxQT-64P7gW9$CHF@Vt{P>Wu0seT<99TfOQ`-3LvmA(=(o+pHwDh8CYPXkeosJ-ux zX4=HQ5`K8mDLvoRW#a~~Lb>?u=>?6WjnGG(^J5N3WKyLmz2>8XHujenfD4g3w=xo5 zb*RuaQ@2g&HGdB!)K^|O0ySR_O=et}=un{&ef5yC2qiSPzq}C4nwFUJIV1n?btQC!o{^LKBa)ROX_Q&V#?=uNlBoJJ_W zVsJp#P;?CK`HwrSH};pO-%D*ei$LR@L5b$t;i2OCn&qfJy=SOO(?PXB$oPDyG^9l* z5GbWyp9iA8kGO}F_NDh#6w)U;jfMKIYFTl7-3c-QeI!A8f9cic2@4My3iYbto?>pz z@jwjs+JEg9gYiq0FeS z6;#`bf%B~+0aKBHB#@ho#)7h^=2D%iyV@!%ZYZkT?11%yjhIC}oNEnBy4-LiS!DhC3tBD+i;DMvE)OaB9a`Qx?< S24$lF0000=!otGL%gl?6k6>9*laGq}`uhL>|I4Cjy_jYL z4)BQp001R)QchCVMRl)QzI)DC z^3PcN&$@Q)n&tVnHTesU<~bjZsSkB@dt#XZ@$OfKlB`5%x zX4oH~SU2NP-Jxxr5W)HUX3S7#T+V2&bTU%zPUVoWEbWkVy31$mIhdj(mcW@rQUjq*WyUt9 z0X%oMQN>b}j_y=u>^WF8^*IygWzuzMru1)cF@MgI=$y&(xFQfcno1_7S$)pP;xcKt z@2Nlz7A*hH+NOm(_`p)kJ_tC5ZOWHY$rU zmdti{s9>yBf_zjY`7X-Kysl2nE=nM4pH(1-LRb|=na5@Q!wO15(ohMqDI^VIWgJD( z_J0IbkciiX3Z#EDEM--XoXQzt;ftjLStf-L9uIZ8p#Z#YG^KRR3Rs;neeS!Jz$G%7dv( zcAJqTkyuhd(qOv&>>c&2`6>+3hOveTiaf*Dw~eL!VT;H0It<%34A)<8%Y`d&mF)002ovPDHLkV1f$%-oyX^ diff --git a/public/images/emoji/apple/bank.png b/public/images/emoji/apple/bank.png index 1a3975ded5d6850749af061941b8304b2765931c..22d8a3bd378e2d5819bb188a5d4b3b228fcbbc2d 100644 GIT binary patch delta 2427 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 literal 4000 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 literal 3668 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 w{oh)qS-iPqHp~)>Wv0d#L1TLWB>pF diff --git a/public/images/emoji/apple/barber.png b/public/images/emoji/apple/barber.png index 4aa900f348ca6a32f1b85462100a54a0e44288e4..283dea24e60468d66916f231d0698dd0e9ea0dce 100644 GIT binary patch delta 2045 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 TBDGZf00000NkvXXu0mjfBeJ~8 literal 3952 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 KMNUMnLSTYbhYK12 diff --git a/public/images/emoji/apple/basket.png b/public/images/emoji/apple/basket.png index 0d50c85330e2cc10616b14f8ee7f0741cd3b51ea..80173c32de3587ce95c295b6f61bbba7d8f4f095 100644 GIT binary patch delta 2662 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 diff --git a/public/images/emoji/apple/basketball_man.png b/public/images/emoji/apple/basketball_man.png index 0083d36694467d6a1120376a53339a5fb8b8984f..8a07e9bd590c0d8040cbbf4251ef5c0b83ed36dc 100644 GIT binary patch delta 3077 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 TT5$-800000NkvXXu0mjfr=&w5 delta 3118 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 Cu3^*w diff --git a/public/images/emoji/apple/basketball_player.png b/public/images/emoji/apple/basketball_player.png index 0083d36694467d6a1120376a53339a5fb8b8984f..8a07e9bd590c0d8040cbbf4251ef5c0b83ed36dc 100644 GIT binary patch delta 3077 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 TT5$-800000NkvXXu0mjfr=&w5 delta 3118 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 Cu3^*w diff --git a/public/images/emoji/apple/basketball_woman.png b/public/images/emoji/apple/basketball_woman.png index f9ea688e4098104905a4e2c564a39e80463a1923..6ac790da7f6169226170c95b46bce390d419cc68 100644 GIT binary patch delta 3128 zcmV-849D}68N3*fBYy(=P)t-sM{rE^;HAZiF4vPP;`Z46(_E0r#hK{lwTe*q)O*o~ z8O5A$@v}9YUp|IsWWK(=wsafSjvdI5GX2(Or&?38pq$5uC}S!Kvt0$1G$*N2O1s6! zrb09N(O~hxQMPp+NHj0zsX6GM9KB~^@USNR;Dhq9B>vGh$`sEkM1B_ zmX($7xk2#XtRNsDz8?{DZg1wE8uYRq{KPEyx*z}9X8XV-xEcZMq#E$68{n84oDc&1 z%trmoJjTVw{l_!383OpX8rzW>#C;pdgBs1bw6L?Z0RaK46ac�j(Sc#To$q&`pC5 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 eVwwD7pZ@{<`ypVYM7{9<000066 literal 3666 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 diff --git a/public/images/emoji/apple/bath.png b/public/images/emoji/apple/bath.png index 768d173203c94752e1de06f4d149416515fb6647..e9f183580150c7b8ab3c545bd8ed60155f52aa82 100644 GIT binary patch delta 2268 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 diff --git a/public/images/emoji/apple/bathtub.png b/public/images/emoji/apple/bathtub.png index 960cd4566003630152a4a5df71b2e48010c9df05..e35494b4647300a96e8d7dea12be45b47be3850d 100644 GIT binary patch delta 2657 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 diff --git a/public/images/emoji/apple/battery.png b/public/images/emoji/apple/battery.png index 66588178ce344ffe758b701d050eb7e41beb8928..647c0e40bede011519ca86d23d3dc2afaf531451 100644 GIT binary patch delta 1923 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 diff --git a/public/images/emoji/apple/beach.png b/public/images/emoji/apple/beach.png index 2249706d653cd04c9ed95cbded2decf5b4d0933b..8e8bef4a65c0963d949f889ee8090d18d7eb3f0e 100644 GIT binary patch delta 2948 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%0Dr9R-L=ZZWE`yxO*XcBoxLiXf`fzWq|SRGL{(Iz zCMTzYcD?Rhef5bQ{stRcFR#7Mof+T+XB5Loh}s+ev=OAtOoUZje~&wnL;tYS*$ZCR z>5H6T->1>eIFK5;kQ9Wh2`LC_ODqT-lJ+((3 z)XX528A!@}PkkaM+y)~k-w0`90g@=nIlMJFQ)R{spj5V~D|TA2Q+bk9pp!?6FGiCR zX@$15qLDzFqv-9za0qQ_X@3bX3NLCSos*~|0~Zsc_fV2oXlSTkaZqLuKw1hH$fTg9 z<;IO0MMa&I0i8H;r0W_fk@@-g?dgXFnxSwW8gK3mDRzpYj$neS4MCKI80cA0&{l;D zO*lxUQtXt_$U%|(7=Q)gX&t1KMoT#j<@$^3E^iWat_v9n_70i9d!~!;fac)NztKVOMn6mza zz=XiSz{$X7h@-I6y}!UniEo>z6O+Bi zTC6`+1t|?D$} z!DchqY=U@g>7$dE9;( zbqo~?R_s->+N!Fm`uPfmQn$>_y@ET3%0G9xJ7@6NvHuJOSWYbNYHSsf%wH)nEz9%r zuH=!_mD{MAA8LLW>gLUx*ouYG(qq%p(+dj=UnMat%gghCBD2f0v$Ojib)2fE23d$Y zb@mjLj(@2Sm@h%v<>i+~6mlsf#4g0{(4j+^gNNhC$+6CorJu#r=#LcyoyGX{!lett zrCdr$`RS(+)FBi+d@r90P6Kobmu^0Cqag%KnOsNo`u~#cN2R17i_#E?4-=?-bVd=B z11;AO4qpZIO_~g4$Nglaa$&zbtdW!9C9A1HXMgl8oWL9svbL6A`yL|Jb$qBG&|Kn-o3HI5Vo7+e+R`dU^S=bJBIzI-E(Cg@Y8Mp~8K{Gj8TrHdCW zHGeSBgWecQPtRb{Od}@2R_AH!eCmkK;i20#f7{4o2ss=skH>@0I&{rGWAY|Nm}X}` z=;%o5NJ5<%*&AmN2N;J5zm%snOGjs+junr&ZPE7a+YMBWghGz$roN+^DG9Gz(wTUFaNOJvl$3;dWPq7OMT{h%kToVZJSTb3@hE@)^MB{# z+}vYIN<4jhe6jpvFn1Z>6E5UHdkmp7PivtJc;o<7)Di({pWvatFfsy@vCoxPF;4vmdqk{&K z^kQP*F)R$m0men_1di#5t&ZRuN`FKmpr8O(SM($lJbDDkJx}aGp0G9^@GKV>7blTK zO?C7giDN7S3dRz{xGw0op(nb!kRl${hYBr?s~8j~aO_u&-2qqvLz%Y-EGHKymoW`{ zIJ7ikP+%Nm&MUSzp{}7!;*BV$mncY#k6erbLnQK+sA&pb{Yiij>T0TCYk$mSPWU*; z@DIJcC9;*q0;b{(lF2tUM3y(HkvWa{9)1GI(UqFI9M<@MpRk1jQ^S>NGMNN%-Xi$t zjbDxgi9{xoso5Lr8ZjsHfrKsO>zZnUrlxjuMDX90hMLBzeEL*ABQcmlj*&pHN>^7E zr>nb4z&D}`nT*%_WXoo-SRYJ?#bU5&1nvLd@BD$&Ogc=hasU7T07*qoM6N<$f+@wX AE&u=k diff --git a/public/images/emoji/apple/beach_umbrella.png b/public/images/emoji/apple/beach_umbrella.png index 2249706d653cd04c9ed95cbded2decf5b4d0933b..8e8bef4a65c0963d949f889ee8090d18d7eb3f0e 100644 GIT binary patch delta 2948 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%0Dr9R-L=ZZWE`yxO*XcBoxLiXf`fzWq|SRGL{(Iz zCMTzYcD?Rhef5bQ{stRcFR#7Mof+T+XB5Loh}s+ev=OAtOoUZje~&wnL;tYS*$ZCR z>5H6T->1>eIFK5;kQ9Wh2`LC_ODqT-lJ+((3 z)XX528A!@}PkkaM+y)~k-w0`90g@=nIlMJFQ)R{spj5V~D|TA2Q+bk9pp!?6FGiCR zX@$15qLDzFqv-9za0qQ_X@3bX3NLCSos*~|0~Zsc_fV2oXlSTkaZqLuKw1hH$fTg9 z<;IO0MMa&I0i8H;r0W_fk@@-g?dgXFnxSwW8gK3mDRzpYj$neS4MCKI80cA0&{l;D zO*lxUQtXt_$U%|(7=Q)gX&t1KMoT#j<@$^3E^iWat_v9n_70i9d!~!;fac)NztKVOMn6mza zz=XiSz{$X7h@-I6y}!UniEo>z6O+Bi zTC6`+1t|?D$} z!DchqY=U@g>7$dE9;( zbqo~?R_s->+N!Fm`uPfmQn$>_y@ET3%0G9xJ7@6NvHuJOSWYbNYHSsf%wH)nEz9%r zuH=!_mD{MAA8LLW>gLUx*ouYG(qq%p(+dj=UnMat%gghCBD2f0v$Ojib)2fE23d$Y zb@mjLj(@2Sm@h%v<>i+~6mlsf#4g0{(4j+^gNNhC$+6CorJu#r=#LcyoyGX{!lett zrCdr$`RS(+)FBi+d@r90P6Kobmu^0Cqag%KnOsNo`u~#cN2R17i_#E?4-=?-bVd=B z11;AO4qpZIO_~g4$Nglaa$&zbtdW!9C9A1HXMgl8oWL9svbL6A`yL|Jb$qBG&|Kn-o3HI5Vo7+e+R`dU^S=bJBIzI-E(Cg@Y8Mp~8K{Gj8TrHdCW zHGeSBgWecQPtRb{Od}@2R_AH!eCmkK;i20#f7{4o2ss=skH>@0I&{rGWAY|Nm}X}` z=;%o5NJ5<%*&AmN2N;J5zm%snOGjs+junr&ZPE7a+YMBWghGz$roN+^DG9Gz(wTUFaNOJvl$3;dWPq7OMT{h%kToVZJSTb3@hE@)^MB{# z+}vYIN<4jhe6jpvFn1Z>6E5UHdkmp7PivtJc;o<7)Di({pWvatFfsy@vCoxPF;4vmdqk{&K z^kQP*F)R$m0men_1di#5t&ZRuN`FKmpr8O(SM($lJbDDkJx}aGp0G9^@GKV>7blTK zO?C7giDN7S3dRz{xGw0op(nb!kRl${hYBr?s~8j~aO_u&-2qqvLz%Y-EGHKymoW`{ zIJ7ikP+%Nm&MUSzp{}7!;*BV$mncY#k6erbLnQK+sA&pb{Yiij>T0TCYk$mSPWU*; z@DIJcC9;*q0;b{(lF2tUM3y(HkvWa{9)1GI(UqFI9M<@MpRk1jQ^S>NGMNN%-Xi$t zjbDxgi9{xoso5Lr8ZjsHfrKsO>zZnUrlxjuMDX90hMLBzeEL*ABQcmlj*&pHN>^7E zr>nb4z&D}`nT*%_WXoo-SRYJ?#bU5&1nvLd@BD$&Ogc=hasU7T07*qoM6N<$f+@wX AE&u=k diff --git a/public/images/emoji/apple/beach_with_umbrella.png b/public/images/emoji/apple/beach_with_umbrella.png index 2249706d653cd04c9ed95cbded2decf5b4d0933b..8e8bef4a65c0963d949f889ee8090d18d7eb3f0e 100644 GIT binary patch delta 2948 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%0Dr9R-L=ZZWE`yxO*XcBoxLiXf`fzWq|SRGL{(Iz zCMTzYcD?Rhef5bQ{stRcFR#7Mof+T+XB5Loh}s+ev=OAtOoUZje~&wnL;tYS*$ZCR z>5H6T->1>eIFK5;kQ9Wh2`LC_ODqT-lJ+((3 z)XX528A!@}PkkaM+y)~k-w0`90g@=nIlMJFQ)R{spj5V~D|TA2Q+bk9pp!?6FGiCR zX@$15qLDzFqv-9za0qQ_X@3bX3NLCSos*~|0~Zsc_fV2oXlSTkaZqLuKw1hH$fTg9 z<;IO0MMa&I0i8H;r0W_fk@@-g?dgXFnxSwW8gK3mDRzpYj$neS4MCKI80cA0&{l;D zO*lxUQtXt_$U%|(7=Q)gX&t1KMoT#j<@$^3E^iWat_v9n_70i9d!~!;fac)NztKVOMn6mza zz=XiSz{$X7h@-I6y}!UniEo>z6O+Bi zTC6`+1t|?D$} z!DchqY=U@g>7$dE9;( zbqo~?R_s->+N!Fm`uPfmQn$>_y@ET3%0G9xJ7@6NvHuJOSWYbNYHSsf%wH)nEz9%r zuH=!_mD{MAA8LLW>gLUx*ouYG(qq%p(+dj=UnMat%gghCBD2f0v$Ojib)2fE23d$Y zb@mjLj(@2Sm@h%v<>i+~6mlsf#4g0{(4j+^gNNhC$+6CorJu#r=#LcyoyGX{!lett zrCdr$`RS(+)FBi+d@r90P6Kobmu^0Cqag%KnOsNo`u~#cN2R17i_#E?4-=?-bVd=B z11;AO4qpZIO_~g4$Nglaa$&zbtdW!9C9A1HXMgl8oWL9svbL6A`yL|Jb$qBG&|Kn-o3HI5Vo7+e+R`dU^S=bJBIzI-E(Cg@Y8Mp~8K{Gj8TrHdCW zHGeSBgWecQPtRb{Od}@2R_AH!eCmkK;i20#f7{4o2ss=skH>@0I&{rGWAY|Nm}X}` z=;%o5NJ5<%*&AmN2N;J5zm%snOGjs+junr&ZPE7a+YMBWghGz$roN+^DG9Gz(wTUFaNOJvl$3;dWPq7OMT{h%kToVZJSTb3@hE@)^MB{# z+}vYIN<4jhe6jpvFn1Z>6E5UHdkmp7PivtJc;o<7)Di({pWvatFfsy@vCoxPF;4vmdqk{&K z^kQP*F)R$m0men_1di#5t&ZRuN`FKmpr8O(SM($lJbDDkJx}aGp0G9^@GKV>7blTK zO?C7giDN7S3dRz{xGw0op(nb!kRl${hYBr?s~8j~aO_u&-2qqvLz%Y-EGHKymoW`{ zIJ7ikP+%Nm&MUSzp{}7!;*BV$mncY#k6erbLnQK+sA&pb{Yiij>T0TCYk$mSPWU*; z@DIJcC9;*q0;b{(lF2tUM3y(HkvWa{9)1GI(UqFI9M<@MpRk1jQ^S>NGMNN%-Xi$t zjbDxgi9{xoso5Lr8ZjsHfrKsO>zZnUrlxjuMDX90hMLBzeEL*ABQcmlj*&pHN>^7E zr>nb4z&D}`nT*%_WXoo-SRYJ?#bU5&1nvLd@BD$&Ogc=hasU7T07*qoM6N<$f+@wX AE&u=k diff --git a/public/images/emoji/apple/bear.png b/public/images/emoji/apple/bear.png index 7bcba72a788e2fe59eaa12cc3e33cf190313053a..0a90eacd83eb9db9f34c0adaf147a857f070460c 100644 GIT binary patch delta 1748 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 y&d=5TeRF#iO2Ge}tXqy7~PLbghgwM65!N{d?_ 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

  • + {{#unless isNumber}} +
    + + {{combo-box content=pollChartTypes + value=chartType + valueAttribute="value"}} +
    + {{/unless}} + {{#if showMinMax}}
    @@ -56,12 +65,14 @@ {{input-tip validation=minNumOfOptionsValidation}} {{/unless}} -
    - -
    + {{#unless isPie}} +
    + +
    + {{/unless}}
    /logs" email_in: 'Allow users to post new topics via email (requires manual or pop3 polling). Configure the addresses in the "Settings" tab of each category.' email_in_min_trust: "The minimum trust level a user needs to have to be allowed to post new topics via email." + email_in_authserv_id: "The identifier of the service doing authentication checks on incoming emails. See https://meta.discourse.org/t/134358 for instructions on how to configure this." email_in_spam_header: "The email header to detect spam." email_prefix: "The [label] used in the subject of emails. It will default to 'title' if not set." email_site_title: "The title of the site used as the sender of emails from the site. Default to 'title' if not set. If your 'title' contains characters that are not allowed in email sender strings, use this setting." diff --git a/config/site_settings.yml b/config/site_settings.yml index ce91ea6237..9ad1751d21 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -965,6 +965,8 @@ email: email_in_min_trust: default: 2 enum: "TrustLevelSetting" + email_in_authserv_id: + default: "" email_in_spam_header: type: enum default: "none" diff --git a/lib/email/authentication_results.rb b/lib/email/authentication_results.rb new file mode 100644 index 0000000000..c5ad6e2249 --- /dev/null +++ b/lib/email/authentication_results.rb @@ -0,0 +1,110 @@ +# frozen_string_literal: true + +module Email + class AuthenticationResults + attr_reader :results + + VERDICT = Enum.new( + :gray, + :pass, + :fail, + start: 0, + ) + + def initialize(headers) + authserv_id = SiteSetting.email_in_authserv_id + @results = Array(headers).map do |header| + parse_header(header.to_s) + end.filter do |result| + authserv_id.blank? || authserv_id == result[:authserv_id] + end + end + + def action + @action ||= calc_action + end + + def verdict + @verdict ||= calc_verdict + end + + private + + def calc_action + if verdict == :fail + :hide + else + :accept + end + end + + def calc_verdict + VERDICT[calc_dmarc] + end + + def calc_dmarc + verdict = VERDICT[:gray] + @results.each do |result| + result[:resinfo].each do |resinfo| + if resinfo[:method] == "dmarc" + v = VERDICT[resinfo[:result].to_sym].to_i + verdict = v if v > verdict + end + end + end + verdict = VERDICT[:gray] if SiteSetting.email_in_authserv_id.blank? && verdict == VERDICT[:pass] + verdict + end + + def parse_header(header) + # based on https://tools.ietf.org/html/rfc8601#section-2.2 + cfws = /\s*(\([^()]*\))?\s*/ + value = /(?:"([^"]*)")|(?:([^\s";]*))/ + authserv_id = value + authres_version = /\d+#{cfws}?/ + no_result = /#{cfws}?;#{cfws}?none/ + keyword = /([a-zA-Z0-9-]*[a-zA-Z0-9])/ + authres_payload = /\A#{cfws}?#{authserv_id}(?:#{cfws}#{authres_version})?(?:#{no_result}|([\S\s]*))/ + + method_version = authres_version + method = /#{keyword}\s*(?:#{cfws}?\/#{cfws}?#{method_version})?/ + result = keyword + methodspec = /#{cfws}?#{method}#{cfws}?=#{cfws}?#{result}/ + reasonspec = /reason#{cfws}?=#{cfws}?#{value}/ + resinfo = /#{cfws}?;#{methodspec}(?:#{cfws}#{reasonspec})?(?:#{cfws}([^;]*))?/ + + ptype = keyword + property = value + pvalue = /#{cfws}?#{value}#{cfws}?/ + propspec = /#{ptype}#{cfws}?\.#{cfws}?#{property}#{cfws}?=#{pvalue}/ + + authres_payload_match = authres_payload.match(header) + parsed_authserv_id = authres_payload_match[2] || authres_payload_match[3] + resinfo_val = authres_payload_match[-1] + + if resinfo_val + resinfo_scan = resinfo_val.scan(resinfo) + parsed_resinfo = resinfo_scan.map do |x| + { + method: x[2], + result: x[8], + reason: x[12] || x[13], + props: x[-1].scan(propspec).map do |y| + { + ptype: y[0], + property: y[4], + pvalue: y[8] || y[9] + } + end + } + end + end + + { + authserv_id: parsed_authserv_id, + resinfo: parsed_resinfo + } + end + + end +end diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 41035dc381..836405aae5 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -196,7 +196,14 @@ module Email end def hidden_reason_id - @hidden_reason_id ||= is_spam? ? Post.hidden_reasons[:email_spam_header_found] : nil + @hidden_reason_id ||= + if is_spam? + Post.hidden_reasons[:email_spam_header_found] + elsif auth_res_action == :hide + Post.hidden_reasons[:email_authentication_result_header] + else + nil + end end def log_and_validate_user(user) @@ -308,6 +315,10 @@ module Email end end + def auth_res_action + @auth_res_action ||= AuthenticationResults.new(@mail.header[:authentication_results]).action + end + def select_body text = nil html = nil diff --git a/spec/components/email/authentication_results_spec.rb b/spec/components/email/authentication_results_spec.rb new file mode 100644 index 0000000000..8a103c89bd --- /dev/null +++ b/spec/components/email/authentication_results_spec.rb @@ -0,0 +1,299 @@ +# frozen_string_literal: true + +require "rails_helper" +require "email/authentication_results" + +describe Email::AuthenticationResults do + describe "#results" do + it "parses 'Nearly Trivial Case: Service Provided, but No Authentication Done' correctly" do + # https://tools.ietf.org/html/rfc8601#appendix-B.2 + results = described_class.new(" example.org 1; none").results + expect(results[0][:authserv_id]).to eq "example.org" + expect(results[0][:resinfo]).to be nil + end + + it "parses 'Service Provided, Authentication Done' correctly" do + # https://tools.ietf.org/html/rfc8601#appendix-B.3 + results = described_class.new(<<~EOF + example.com; + spf=pass smtp.mailfrom=example.net + EOF + ).results + expect(results[0][:authserv_id]).to eq "example.com" + expect(results[0][:resinfo][0][:method]).to eq "spf" + expect(results[0][:resinfo][0][:result]).to eq "pass" + expect(results[0][:resinfo][0][:reason]).to be nil + expect(results[0][:resinfo][0][:props][0][:ptype]).to eq "smtp" + expect(results[0][:resinfo][0][:props][0][:property]).to eq "mailfrom" + expect(results[0][:resinfo][0][:props][0][:pvalue]).to eq "example.net" + end + + it "parses 'Service Provided, Several Authentications Done, Single MTA' correctly" do + # https://tools.ietf.org/html/rfc8601#appendix-B.4 + results = described_class.new([<<~EOF , + example.com; + auth=pass (cram-md5) smtp.auth=sender@example.net; + spf=pass smtp.mailfrom=example.net + EOF + <<~EOF , + example.com; iprev=pass + policy.iprev=192.0.2.200 + EOF + ]).results + expect(results[0][:authserv_id]).to eq "example.com" + expect(results[0][:resinfo][0][:method]).to eq "auth" + expect(results[0][:resinfo][0][:result]).to eq "pass" + expect(results[0][:resinfo][0][:reason]).to be nil + expect(results[0][:resinfo][0][:props][0][:ptype]).to eq "smtp" + expect(results[0][:resinfo][0][:props][0][:property]).to eq "auth" + expect(results[0][:resinfo][0][:props][0][:pvalue]).to eq "sender@example.net" + expect(results[0][:resinfo][1][:method]).to eq "spf" + expect(results[0][:resinfo][1][:result]).to eq "pass" + expect(results[0][:resinfo][1][:reason]).to be nil + expect(results[0][:resinfo][1][:props][0][:ptype]).to eq "smtp" + expect(results[0][:resinfo][1][:props][0][:property]).to eq "mailfrom" + expect(results[0][:resinfo][1][:props][0][:pvalue]).to eq "example.net" + expect(results[1][:authserv_id]).to eq "example.com" + expect(results[1][:resinfo][0][:method]).to eq "iprev" + expect(results[1][:resinfo][0][:result]).to eq "pass" + expect(results[1][:resinfo][0][:reason]).to be nil + expect(results[1][:resinfo][0][:props][0][:ptype]).to eq "policy" + expect(results[1][:resinfo][0][:props][0][:property]).to eq "iprev" + expect(results[1][:resinfo][0][:props][0][:pvalue]).to eq "192.0.2.200" + end + + it "parses 'Service Provided, Several Authentications Done, Different MTAs' correctly" do + # https://tools.ietf.org/html/rfc8601#appendix-B.5 + results = described_class.new([<<~EOF , + example.com; + dkim=pass (good signature) header.d=example.com + EOF + <<~EOF , + example.com; + auth=pass (cram-md5) smtp.auth=sender@example.com; + spf=fail smtp.mailfrom=example.com + EOF + ]).results + + expect(results[0][:authserv_id]).to eq "example.com" + expect(results[0][:resinfo][0][:method]).to eq "dkim" + expect(results[0][:resinfo][0][:result]).to eq "pass" + expect(results[0][:resinfo][0][:reason]).to be nil + expect(results[0][:resinfo][0][:props][0][:ptype]).to eq "header" + expect(results[0][:resinfo][0][:props][0][:property]).to eq "d" + expect(results[0][:resinfo][0][:props][0][:pvalue]).to eq "example.com" + expect(results[1][:authserv_id]).to eq "example.com" + expect(results[1][:resinfo][0][:method]).to eq "auth" + expect(results[1][:resinfo][0][:result]).to eq "pass" + expect(results[1][:resinfo][0][:reason]).to be nil + expect(results[1][:resinfo][0][:props][0][:ptype]).to eq "smtp" + expect(results[1][:resinfo][0][:props][0][:property]).to eq "auth" + expect(results[1][:resinfo][0][:props][0][:pvalue]).to eq "sender@example.com" + expect(results[1][:resinfo][1][:method]).to eq "spf" + expect(results[1][:resinfo][1][:result]).to eq "fail" + expect(results[1][:resinfo][1][:reason]).to be nil + expect(results[1][:resinfo][1][:props][0][:ptype]).to eq "smtp" + expect(results[1][:resinfo][1][:props][0][:property]).to eq "mailfrom" + expect(results[1][:resinfo][1][:props][0][:pvalue]).to eq "example.com" + end + + it "parses 'Service Provided, Multi-tiered Authentication Done' correctly" do + # https://tools.ietf.org/html/rfc8601#appendix-B.6 + results = described_class.new([<<~EOF , + example.com; + dkim=pass reason="good signature" + header.i=@mail-router.example.net; + dkim=fail reason="bad signature" + header.i=@newyork.example.com + EOF + <<~EOF , + example.net; + dkim=pass (good signature) header.i=@newyork.example.com + EOF + ]).results + + expect(results[0][:authserv_id]).to eq "example.com" + expect(results[0][:resinfo][0][:method]).to eq "dkim" + expect(results[0][:resinfo][0][:result]).to eq "pass" + expect(results[0][:resinfo][0][:reason]).to eq "good signature" + expect(results[0][:resinfo][0][:props][0][:ptype]).to eq "header" + expect(results[0][:resinfo][0][:props][0][:property]).to eq "i" + expect(results[0][:resinfo][0][:props][0][:pvalue]).to eq "@mail-router.example.net" + expect(results[0][:resinfo][1][:method]).to eq "dkim" + expect(results[0][:resinfo][1][:result]).to eq "fail" + expect(results[0][:resinfo][1][:reason]).to eq "bad signature" + expect(results[0][:resinfo][1][:props][0][:ptype]).to eq "header" + expect(results[0][:resinfo][1][:props][0][:property]).to eq "i" + expect(results[0][:resinfo][1][:props][0][:pvalue]).to eq "@newyork.example.com" + expect(results[1][:authserv_id]).to eq "example.net" + expect(results[1][:resinfo][0][:method]).to eq "dkim" + expect(results[1][:resinfo][0][:result]).to eq "pass" + expect(results[1][:resinfo][0][:reason]).to be nil + expect(results[1][:resinfo][0][:props][0][:ptype]).to eq "header" + expect(results[1][:resinfo][0][:props][0][:property]).to eq "i" + expect(results[1][:resinfo][0][:props][0][:pvalue]).to eq "@newyork.example.com" + end + + it "parses 'Comment-Heavy Example' correctly" do + # https://tools.ietf.org/html/rfc8601#appendix-B.7 + results = described_class.new(<<~EOF + foo.example.net (foobar) 1 (baz); + dkim (Because I like it) / 1 (One yay) = (wait for it) fail + policy (A dot can go here) . (like that) expired + (this surprised me) = (as I wasn't expecting it) 1362471462 + EOF + ).results + + expect(results[0][:authserv_id]).to eq "foo.example.net" + expect(results[0][:resinfo][0][:method]).to eq "dkim" + expect(results[0][:resinfo][0][:result]).to eq "fail" + expect(results[0][:resinfo][0][:reason]).to be nil + expect(results[0][:resinfo][0][:props][0][:ptype]).to eq "policy" + expect(results[0][:resinfo][0][:props][0][:property]).to eq "expired" + expect(results[0][:resinfo][0][:props][0][:pvalue]).to eq "1362471462" + end + + it "parses header with no props correctly" do + results = described_class.new(" example.com; dmarc=pass").results + expect(results[0][:authserv_id]).to eq "example.com" + expect(results[0][:resinfo][0][:method]).to eq "dmarc" + expect(results[0][:resinfo][0][:result]).to eq "pass" + expect(results[0][:resinfo][0][:reason]).to be nil + expect(results[0][:resinfo][0][:props]).to eq [] + end + + it "parses header with multiple props correctly" do + results = described_class.new(<<~EOF + mx.google.com; + dkim=pass header.i=@email.example.com header.s=20111006 header.b=URn9MW+F; + spf=pass (google.com: domain of foo@b.email.example.com designates 1.2.3.4 as permitted sender) smtp.mailfrom=foo@b.email.example.com; + dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=email.example.com + EOF + ).results + + expect(results[0][:authserv_id]).to eq "mx.google.com" + expect(results[0][:resinfo][0][:method]).to eq "dkim" + expect(results[0][:resinfo][0][:result]).to eq "pass" + expect(results[0][:resinfo][0][:reason]).to be nil + expect(results[0][:resinfo][0][:props][0][:ptype]).to eq "header" + expect(results[0][:resinfo][0][:props][0][:property]).to eq "i" + expect(results[0][:resinfo][0][:props][0][:pvalue]).to eq "@email.example.com" + expect(results[0][:resinfo][0][:props][1][:ptype]).to eq "header" + expect(results[0][:resinfo][0][:props][1][:property]).to eq "s" + expect(results[0][:resinfo][0][:props][1][:pvalue]).to eq "20111006" + expect(results[0][:resinfo][0][:props][2][:ptype]).to eq "header" + expect(results[0][:resinfo][0][:props][2][:property]).to eq "b" + expect(results[0][:resinfo][0][:props][2][:pvalue]).to eq "URn9MW+F" + expect(results[0][:resinfo][1][:method]).to eq "spf" + expect(results[0][:resinfo][1][:result]).to eq "pass" + expect(results[0][:resinfo][1][:reason]).to be nil + expect(results[0][:resinfo][1][:props][0][:ptype]).to eq "smtp" + expect(results[0][:resinfo][1][:props][0][:property]).to eq "mailfrom" + expect(results[0][:resinfo][1][:props][0][:pvalue]).to eq "foo@b.email.example.com" + expect(results[0][:resinfo][2][:method]).to eq "dmarc" + expect(results[0][:resinfo][2][:result]).to eq "pass" + expect(results[0][:resinfo][2][:reason]).to be nil + expect(results[0][:resinfo][2][:props][0][:ptype]).to eq "header" + expect(results[0][:resinfo][2][:props][0][:property]).to eq "from" + expect(results[0][:resinfo][2][:props][0][:pvalue]).to eq "email.example.com" + end + end + + describe "#verdict" do + before do + SiteSetting.email_in_authserv_id = "valid.com" + end + + shared_examples "is verdict" do |verdict| + it "is #{verdict}" do + expect(described_class.new(headers).verdict).to eq verdict + end + end + + context "with no authentication-results headers" do + let(:headers) { "" } + + it "is gray" do + expect(described_class.new(headers).verdict).to eq :gray + end + end + + context "with a single authentication-results header" do + context "with a valid fail" do + let(:headers) { "valid.com; dmarc=fail" } + include_examples "is verdict", :fail + end + + context "with a valid pass" do + let(:headers) { "valid.com; dmarc=pass" } + include_examples "is verdict", :pass + end + + context "with a valid error" do + let(:headers) { "valid.com; dmarc=error" } + include_examples "is verdict", :gray + end + + context "with no email_in_authserv_id set" do + before { SiteSetting.email_in_authserv_id = "" } + + context "with a fail" do + let(:headers) { "foobar.com; dmarc=fail" } + include_examples "is verdict", :fail + end + + context "with a pass" do + let(:headers) { "foobar.com; dmarc=pass" } + include_examples "is verdict", :gray + end + end + end + + context "with multiple authentication-results headers" do + context "with a valid fail, and an invalid pass" do + let(:headers) { ["valid.com; dmarc=fail", "invalid.com; dmarc=pass"] } + include_examples "is verdict", :fail + end + + context "with a valid fail, and a valid pass" do + let(:headers) { ["valid.com; dmarc=fail", "valid.com; dmarc=pass"] } + include_examples "is verdict", :fail + end + + context "with a valid error, and a valid pass" do + let(:headers) { ["valid.com; dmarc=foobar", "valid.com; dmarc=pass"] } + include_examples "is verdict", :pass + end + + context "with no email_in_authserv_id set" do + before { SiteSetting.email_in_authserv_id = "" } + + context "with an error, and a pass" do + let(:headers) { ["foobar.com; dmarc=foobar", "foobar.com; dmarc=pass"] } + include_examples "is verdict", :gray + end + end + end + end + + describe "#action" do + it "hides a fail verdict" do + results = described_class.new("") + results.expects(:verdict).returns(:fail) + expect(results.action).to eq (:hide) + end + + it "accepts a pass verdict" do + results = described_class.new("") + results.expects(:verdict).returns(:pass) + expect(results.action).to eq (:accept) + end + + it "accepts a gray verdict" do + results = described_class.new("") + results.expects(:verdict).returns(:gray) + expect(results.action).to eq (:accept) + end + end + +end diff --git a/spec/components/email/receiver_spec.rb b/spec/components/email/receiver_spec.rb index 811fc3839c..400f72385c 100644 --- a/spec/components/email/receiver_spec.rb +++ b/spec/components/email/receiver_spec.rb @@ -1021,6 +1021,19 @@ describe Email::Receiver do expect(post.hidden_reason_id).to eq(Post.hidden_reasons[:email_spam_header_found]) end + it "creates hidden topic for failed Authentication-Results header" do + Fabricate(:user, email: "existing@bar.com", trust_level: SiteSetting.email_in_min_trust) + expect { process(:dmarc_fail) }.to change { Topic.count }.by(1) # Topic created + + topic = Topic.last + expect(topic.visible).to eq(false) + + post = Post.last + expect(post.hidden).to eq(true) + expect(post.hidden_at).not_to eq(nil) + expect(post.hidden_reason_id).to eq(Post.hidden_reasons[:email_authentication_result_header]) + end + it "adds the 'elided' part of the original message when always_show_trimmed_content is enabled" do SiteSetting.always_show_trimmed_content = true diff --git a/spec/fixtures/emails/dmarc_fail.eml b/spec/fixtures/emails/dmarc_fail.eml new file mode 100644 index 0000000000..4fe78ef7ed --- /dev/null +++ b/spec/fixtures/emails/dmarc_fail.eml @@ -0,0 +1,12 @@ +Return-Path: +From: Foo Bar +To: category@bar.com +Subject: This is a topic from an existing user +Date: Fri, 15 Jan 2016 00:12:43 +0100 +Message-ID: <32@foo.bar.mail> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable +Authentication-Results: example.com; dmarc=fail + +Hey, this is a topic from an existing user ;) From 7e08dabeacdefe5277ecf8289f2eeaa37ddc45e5 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Tue, 26 Nov 2019 23:12:47 +0530 Subject: [PATCH 296/408] FIX: do not validate topic when resetting `bumped_at` Migrated topics were failing when resetting `bumped_at` via `reset-bump-date` endpoint because there was an existing (imported) topic with same title. --- app/models/topic.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/topic.rb b/app/models/topic.rb index b537891597..6e10a13c2f 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -1374,7 +1374,8 @@ class Topic < ActiveRecord::Base post_type: Post.types[:regular] ).last || first_post - update!(bumped_at: post.created_at) + self.bumped_at = post.created_at + self.save(validate: false) end def auto_close_threshold_reached? From ff34ab6aefb907f75cb3c83dec19d3d7b1a67e72 Mon Sep 17 00:00:00 2001 From: Kris Date: Tue, 26 Nov 2019 12:55:25 -0500 Subject: [PATCH 297/408] UX: Show obvious message when backup restoration is disabled --- .../javascripts/admin/templates/backups-index.hbs | 5 +++++ app/assets/stylesheets/common/admin/backups.scss | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/app/assets/javascripts/admin/templates/backups-index.hbs b/app/assets/javascripts/admin/templates/backups-index.hbs index ee7abc5f3a..7f0675e5a5 100644 --- a/app/assets/javascripts/admin/templates/backups-index.hbs +++ b/app/assets/javascripts/admin/templates/backups-index.hbs @@ -28,6 +28,11 @@ title="admin.backups.read_only.enable.title" label="admin.backups.read_only.enable.label"}} {{/if}} +
    diff --git a/app/assets/stylesheets/common/admin/backups.scss b/app/assets/stylesheets/common/admin/backups.scss index b5d8658639..718de153b1 100644 --- a/app/assets/stylesheets/common/admin/backups.scss +++ b/app/assets/stylesheets/common/admin/backups.scss @@ -96,3 +96,18 @@ button.ru { margin-left: 10px; } } + +.backup-options { + display: flex; + align-items: center; + flex-wrap: wrap; + button { + margin-right: 0.5em; + } + .backup-message { + margin-left: auto; + @include breakpoint(mobile-extra-large) { + margin: 1.25em 0 0; + } + } +} From 935d4cfa603212c03fe9e670b2dfe2af46e52b33 Mon Sep 17 00:00:00 2001 From: Simon Cossar Date: Tue, 26 Nov 2019 15:01:37 -0500 Subject: [PATCH 298/408] Check site default locale if Rtl class is initialized without a user (#8417) --- lib/rtl.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rtl.rb b/lib/rtl.rb index 2df7acb4fc..abf91ebf5c 100644 --- a/lib/rtl.rb +++ b/lib/rtl.rb @@ -13,7 +13,7 @@ class Rtl end def current_user_rtl? - SiteSetting.allow_user_locale && user.try(:locale).in?(rtl_locales) + SiteSetting.allow_user_locale && (user&.locale || SiteSetting.default_locale).in?(rtl_locales) end def site_locale_rtl? From 5f7948ace6ecfc4926f77d434a78e2147d0ec920 Mon Sep 17 00:00:00 2001 From: Kris Date: Tue, 26 Nov 2019 16:04:40 -0500 Subject: [PATCH 299/408] follow up adjustment to ff34ab6 --- app/assets/stylesheets/common/admin/backups.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/common/admin/backups.scss b/app/assets/stylesheets/common/admin/backups.scss index 718de153b1..a69f7c8003 100644 --- a/app/assets/stylesheets/common/admin/backups.scss +++ b/app/assets/stylesheets/common/admin/backups.scss @@ -101,7 +101,7 @@ button.ru { display: flex; align-items: center; flex-wrap: wrap; - button { + .btn { margin-right: 0.5em; } .backup-message { From 2673cad14280948679d1f94a977e9f868da20858 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Tue, 26 Nov 2019 15:42:47 -0700 Subject: [PATCH 300/408] DEV: Remove buffered rendering from user directory This is another refactoring in the multi-step process to remove all uses of our custom Render Buffer. Previous commit: e0199e80944e55bf0adcd6b60ca811956d8102ce in this series. This commit affects the table header sorting on the user directory page. It is just a refactor and should not change any functionality. --- .../components/directory-toggle.js.es6 | 87 ++++++++++--------- .../templates/components/directory-toggle.hbs | 1 + 2 files changed, 46 insertions(+), 42 deletions(-) create mode 100644 app/assets/javascripts/discourse/templates/components/directory-toggle.hbs diff --git a/app/assets/javascripts/discourse/components/directory-toggle.js.es6 b/app/assets/javascripts/discourse/components/directory-toggle.js.es6 index 2b761c99b9..a2dcec81b5 100644 --- a/app/assets/javascripts/discourse/components/directory-toggle.js.es6 +++ b/app/assets/javascripts/discourse/components/directory-toggle.js.es6 @@ -1,48 +1,51 @@ import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; -import { bufferedRender } from "discourse-common/lib/buffered-render"; -export default Component.extend( - bufferedRender({ - tagName: "th", - classNames: ["sortable"], - attributeBindings: ["title"], - rerenderTriggers: ["order", "asc"], - labelKey: null, +export default Component.extend({ + tagName: "th", + classNames: ["sortable"], + attributeBindings: ["title"], + labelKey: null, + chevronIcon: null, + columnIcon: null, - @discourseComputed("field", "labelKey") - title(field, labelKey) { - if (!labelKey) { - labelKey = `directory.${this.field}`; - } - - return I18n.t(labelKey + "_long", { defaultValue: I18n.t(labelKey) }); - }, - - buildBuffer(buffer) { - const icon = this.icon; - if (icon) { - buffer.push(iconHTML(icon)); - } - - const field = this.field; - buffer.push(I18n.t(this.labelKey || `directory.${field}`)); - - if (field === this.order) { - buffer.push(iconHTML(this.asc ? "chevron-up" : "chevron-down")); - } - }, - - click() { - const currentOrder = this.order, - field = this.field; - - if (currentOrder === field) { - this.set("asc", this.asc ? null : true); - } else { - this.setProperties({ order: field, asc: null }); - } + @discourseComputed("field", "labelKey") + title(field, labelKey) { + if (!labelKey) { + labelKey = `directory.${this.field}`; } - }) -); + + return I18n.t(labelKey + "_long", { defaultValue: I18n.t(labelKey) }); + }, + + toggleProperties() { + if (this.order === this.field) { + this.set("asc", this.asc ? null : true); + } else { + this.setProperties({ order: this.field, asc: null }); + } + }, + toggleChevron() { + if (this.order === this.field) { + let chevron = iconHTML(this.asc ? "chevron-up" : "chevron-down"); + this.set("chevronIcon", `${chevron}`.htmlSafe()); + } else { + this.set("chevronIcon", null); + } + }, + click() { + this.toggleProperties(); + }, + didReceiveAttrs() { + this._super(...arguments); + this.toggleChevron(); + }, + init() { + this._super(...arguments); + if (this.icon) { + let columnIcon = iconHTML(this.icon); + this.set("columnIcon", `${columnIcon}`.htmlSafe()); + } + } +}); diff --git a/app/assets/javascripts/discourse/templates/components/directory-toggle.hbs b/app/assets/javascripts/discourse/templates/components/directory-toggle.hbs new file mode 100644 index 0000000000..91785f8530 --- /dev/null +++ b/app/assets/javascripts/discourse/templates/components/directory-toggle.hbs @@ -0,0 +1 @@ +{{columnIcon}}{{title}}{{chevronIcon}} From 08077513906592d32800827b5c3d8f0bd508739c Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 27 Nov 2019 00:10:43 +0100 Subject: [PATCH 301/408] REFACTOR: poll-pie-chart widget (#8415) This commit mostly get rid of the later() call and encapsulate all pie chart display logic inside discourse-poll-pie-canvas widget instead of sharing it between discourse-poll-pie-chart and discourse-poll-pie-canvas --- .../discourse/widgets/widget.js.es6 | 2 +- .../javascripts/widgets/discourse-poll.js.es6 | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/widget.js.es6 b/app/assets/javascripts/discourse/widgets/widget.js.es6 index 159727522b..cb75df16ae 100644 --- a/app/assets/javascripts/discourse/widgets/widget.js.es6 +++ b/app/assets/javascripts/discourse/widgets/widget.js.es6 @@ -118,7 +118,7 @@ export default class Widget { this.appEvents = register.lookup("service:app-events"); this.keyValueStore = register.lookup("key-value-store:main"); - this.init(); + this.init(this.attrs); // Helps debug widgets if (Discourse.Environment === "development" || ENV.environment === "test") { diff --git a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 index f6c5cdeb5e..2932c8ecad 100644 --- a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 +++ b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 @@ -10,7 +10,6 @@ import round from "discourse/lib/round"; import { relativeAge } from "discourse/lib/formatter"; import loadScript from "discourse/lib/load-script"; import { getColors } from "../lib/chart-colors"; -import { later } from "@ember/runloop"; import { classify } from "@ember/string"; import { PIE_CHART_TYPE } from "../controllers/poll-ui-builder"; @@ -542,6 +541,18 @@ function clearPieChart(id) { createWidget("discourse-poll-pie-canvas", { tagName: "canvas.poll-results-canvas", + init(attrs) { + loadScript("/javascripts/Chart.min.js").then(() => { + const data = attrs.poll.options.mapBy("votes"); + const labels = attrs.poll.options.mapBy("html"); + const config = pieChartConfig(data, labels); + + const el = document.getElementById(`poll-results-chart-${attrs.id}`); + // eslint-disable-next-line + new Chart(el.getContext("2d"), config); + }); + }, + buildAttributes(attrs) { return { id: `poll-results-chart-${attrs.id}` @@ -555,7 +566,7 @@ createWidget("discourse-poll-pie-chart", { const contents = []; if (!attrs.showResults) { - clearPieChart(this.attrs.id); + clearPieChart(attrs.id); return contents; } @@ -563,7 +574,7 @@ createWidget("discourse-poll-pie-chart", { let chart; if (attrs.groupResults && attrs.groupableUserFields.length > 0) { chart = this.attach("discourse-poll-grouped-pies", attrs); - clearPieChart(this.attrs.id); + clearPieChart(attrs.id); } else { if (attrs.groupableUserFields.length) { btn = this.attach("button", { @@ -574,18 +585,7 @@ createWidget("discourse-poll-pie-chart", { action: "toggleGroupedPieCharts" }); } - const data = attrs.poll.options.mapBy("votes"); - const labels = attrs.poll.options.mapBy("html"); - loadScript("/javascripts/Chart.min.js").then(() => { - later(() => { - const el = document.querySelector( - `#poll-results-chart-${this.attrs.id}` - ); - const config = pieChartConfig(data, labels); - // eslint-disable-next-line - new Chart(el.getContext("2d"), config); - }); - }); + chart = this.attach("discourse-poll-pie-canvas", attrs); } contents.push(btn); From 0fb497eb237cd455b9738737af58620139acac8f Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 27 Nov 2019 12:35:14 +1100 Subject: [PATCH 302/408] DEV: use Discourse.cache over Rails.cache Discourse.cache is a more consistent method to use and offers clean fallback if you are skipping redis This is part of a larger change that both optimizes Discoruse.cache and omits use of setex on $redis in favor of consistently using discourse cache Bench does reveal that use of Rails.cache and Discourse.cache is 1.25x slower than redis.setex / get so a re-implementation will follow prior to porting --- app/models/theme.rb | 4 +- app/models/topic_embed.rb | 2 +- lib/discourse.rb | 1 + lib/inline_oneboxer.rb | 6 +- lib/oneboxer.rb | 8 +- lib/search.rb | 2 +- lib/site_setting_extension.rb | 4 +- script/benchmarks/cache/bench.rb | 81 +++++++++++++++++++ spec/components/cache_spec.rb | 5 ++ .../components/site_setting_extension_spec.rb | 2 +- spec/requests/onebox_controller_spec.rb | 2 +- 11 files changed, 102 insertions(+), 15 deletions(-) create mode 100644 script/benchmarks/cache/bench.rb diff --git a/app/models/theme.rb b/app/models/theme.rb index aae30f6612..0597cda86f 100644 --- a/app/models/theme.rb +++ b/app/models/theme.rb @@ -418,7 +418,7 @@ class Theme < ActiveRecord::Base end def cached_settings - Rails.cache.fetch("settings_for_theme_#{self.id}", expires_in: 30.minutes) do + Discourse.cache.fetch("settings_for_theme_#{self.id}", expires_in: 30.minutes) do hash = {} self.settings.each do |setting| hash[setting.name] = setting.value @@ -438,7 +438,7 @@ class Theme < ActiveRecord::Base end def clear_cached_settings! - Rails.cache.delete("settings_for_theme_#{self.id}") + Discourse.cache.delete("settings_for_theme_#{self.id}") end def included_settings diff --git a/app/models/topic_embed.rb b/app/models/topic_embed.rb index a18e34c3ad..12ff86a646 100644 --- a/app/models/topic_embed.rb +++ b/app/models/topic_embed.rb @@ -228,7 +228,7 @@ class TopicEmbed < ActiveRecord::Base end def self.expanded_for(post) - Rails.cache.fetch("embed-topic:#{post.topic_id}", expires_in: 10.minutes) do + Discourse.cache.fetch("embed-topic:#{post.topic_id}", expires_in: 10.minutes) do url = TopicEmbed.where(topic_id: post.topic_id).pluck_first(:embed_url) response = TopicEmbed.find_remote(url) diff --git a/lib/discourse.rb b/lib/discourse.rb index c61a2f14e7..07b7369a6b 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -591,6 +591,7 @@ module Discourse SiteSetting.after_fork $redis._client.reconnect Rails.cache.reconnect + Discourse.cache.reconnect Logster.store.redis.reconnect # shuts down all connections in the pool Sidekiq.redis_pool.shutdown { |c| nil } diff --git a/lib/inline_oneboxer.rb b/lib/inline_oneboxer.rb index 1405edc234..b76ebe848c 100644 --- a/lib/inline_oneboxer.rb +++ b/lib/inline_oneboxer.rb @@ -14,11 +14,11 @@ class InlineOneboxer end def self.purge(url) - Rails.cache.delete(cache_key(url)) + Discourse.cache.delete(cache_key(url)) end def self.cache_lookup(url) - Rails.cache.read(cache_key(url)) + Discourse.cache.read(cache_key(url)) end def self.lookup(url, opts = nil) @@ -70,7 +70,7 @@ class InlineOneboxer title: title && Emoji.gsub_emoji_to_unicode(title) } unless opts[:skip_cache] - Rails.cache.write(cache_key(url), onebox, expires_in: 1.day) + Discourse.cache.write(cache_key(url), onebox, expires_in: 1.day) end onebox diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index e726f71685..fe054f5b54 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -51,7 +51,7 @@ module Oneboxer end def self.cached_onebox(url) - if c = Rails.cache.read(onebox_cache_key(url)) + if c = Discourse.cache.read(onebox_cache_key(url)) c[:onebox] end rescue => e @@ -61,7 +61,7 @@ module Oneboxer end def self.cached_preview(url) - if c = Rails.cache.read(onebox_cache_key(url)) + if c = Discourse.cache.read(onebox_cache_key(url)) c[:preview] end rescue => e @@ -71,7 +71,7 @@ module Oneboxer end def self.invalidate(url) - Rails.cache.delete(onebox_cache_key(url)) + Discourse.cache.delete(onebox_cache_key(url)) end # Parse URLs out of HTML, returning the document when finished. @@ -281,7 +281,7 @@ module Oneboxer end def self.external_onebox(url) - Rails.cache.fetch(onebox_cache_key(url), expires_in: 1.day) do + Discourse.cache.fetch(onebox_cache_key(url), expires_in: 1.day) do fd = FinalDestination.new(url, ignore_redirects: ignore_redirects, ignore_hostnames: blacklisted_domains, diff --git a/lib/search.rb b/lib/search.rb index 4e163cb23c..56503df5d4 100644 --- a/lib/search.rb +++ b/lib/search.rb @@ -137,7 +137,7 @@ class Search return 0 unless SiteSetting.search_prefer_recent_posts? # It can be quite slow to count all the posts so let's cache it - Rails.cache.fetch("search-min-post-id:#{SiteSetting.search_recent_posts_size}", expires_in: 1.week) do + Discourse.cache.fetch("search-min-post-id:#{SiteSetting.search_recent_posts_size}", expires_in: 1.week) do min_post_id_no_cache end end diff --git a/lib/site_setting_extension.rb b/lib/site_setting_extension.rb index c19eb8814e..2c651d0b61 100644 --- a/lib/site_setting_extension.rb +++ b/lib/site_setting_extension.rb @@ -192,7 +192,7 @@ module SiteSettingExtension end def client_settings_json - Rails.cache.fetch(SiteSettingExtension.client_settings_cache_key, expires_in: 30.minutes) do + Discourse.cache.fetch(SiteSettingExtension.client_settings_cache_key, expires_in: 30.minutes) do client_settings_json_uncached end end @@ -432,7 +432,7 @@ module SiteSettingExtension protected def clear_cache! - Rails.cache.delete(SiteSettingExtension.client_settings_cache_key) + Discourse.cache.delete(SiteSettingExtension.client_settings_cache_key) Site.clear_anon_cache! end diff --git a/script/benchmarks/cache/bench.rb b/script/benchmarks/cache/bench.rb new file mode 100644 index 0000000000..8f16f4bfcf --- /dev/null +++ b/script/benchmarks/cache/bench.rb @@ -0,0 +1,81 @@ +# frozen_string_literal: true + +require 'benchmark/ips' +require File.expand_path('../../../../config/environment', __FILE__) + +Benchmark.ips do |x| + + x.report("redis setex string") do |times| + while times > 0 + $redis.setex("test_key", 60, "test") + times -= 1 + end + end + + x.report("redis setex marshal string") do |times| + while times > 0 + $redis.setex("test_keym", 60, Marshal.dump("test")) + times -= 1 + end + end + + x.report("Discourse cache string") do |times| + while times > 0 + Discourse.cache.write("test_key", "test", expires_in: 60) + times -= 1 + end + end + + x.report("Rails cache string") do |times| + while times > 0 + Rails.cache.write("test_key_rails", "test", expires_in: 60) + times -= 1 + end + end + + x.compare! +end + +Benchmark.ips do |x| + x.report("redis get string") do |times| + while times > 0 + $redis.get("test_key") + times -= 1 + end + end + + x.report("redis get string marshal") do |times| + while times > 0 + Marshal.load($redis.get("test_keym")) + times -= 1 + end + end + + x.report("Discourse read cache string") do |times| + while times > 0 + Discourse.cache.read("test_key") + times -= 1 + end + end + + x.report("Rails read cache string") do |times| + while times > 0 + Rails.cache.read("test_key_rails") + times -= 1 + end + end + + x.compare! +end + +# Comparison: +# redis setex string: 13250.0 i/s +# redis setex marshal string: 12866.4 i/s - same-ish: difference falls within error +# Discourse cache string: 10443.0 i/s - 1.27x slower +# Rails cache string: 10367.9 i/s - 1.28x slower + +# Comparison: +# redis get string: 13147.4 i/s +# redis get string marshal: 12789.2 i/s - same-ish: difference falls within error +# Rails read cache string: 10486.4 i/s - 1.25x slower +# Discourse read cache string: 10457.1 i/s - 1.26x slower diff --git a/spec/components/cache_spec.rb b/spec/components/cache_spec.rb index 33c54a573b..178905a77a 100644 --- a/spec/components/cache_spec.rb +++ b/spec/components/cache_spec.rb @@ -9,6 +9,11 @@ describe Cache do Cache.new end + it "supports float" do + cache.write("float", 1.1) + expect(cache.read("float")).to eq(1.1) + end + it "supports fixnum" do cache.write("num", 1) expect(cache.read("num")).to eq(1) diff --git a/spec/components/site_setting_extension_spec.rb b/spec/components/site_setting_extension_spec.rb index cfc28d77ed..ee856e144c 100644 --- a/spec/components/site_setting_extension_spec.rb +++ b/spec/components/site_setting_extension_spec.rb @@ -800,7 +800,7 @@ describe SiteSettingExtension do it 'expires the cache' do settings.default_locale = 'zh_CN' - expect(Rails.cache.exist?(SiteSettingExtension.client_settings_cache_key)).to be_falsey + expect(Discourse.cache.exist?(SiteSettingExtension.client_settings_cache_key)).to be_falsey end it 'refreshes the client' do diff --git a/spec/requests/onebox_controller_spec.rb b/spec/requests/onebox_controller_spec.rb index 40e95b12fc..1d14499e41 100644 --- a/spec/requests/onebox_controller_spec.rb +++ b/spec/requests/onebox_controller_spec.rb @@ -56,7 +56,7 @@ describe OneboxController do stub_request(:get, url).to_return(status: 200, body: html).then.to_raise bypass_limiting - Rails.cache.delete("onebox__#{url}") + Discourse.cache.delete("onebox__#{url}") get "/onebox.json", params: { url: url } expect(response.status).to eq(200) expect(response.body).to include("Onebox1") From 88ecb650a98921e5e3cd345e29f84d9dd204b777 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 27 Nov 2019 16:11:49 +1100 Subject: [PATCH 303/408] DEV: Implement a faster Discourse.cache This is a bottom up rewrite of Discourse cache to support faster performance and a limited surface area. ActiveSupport::Cache::Store accepts many options we do not use, this partial implementation only picks the bits out that we do use and want to support. Additionally params are named which avoids typos such as "expires_at" vs "expires_in" This also moves a few spots in Discourse to use Discourse.cache over setex Performance of setex and Discourse.cache.write is similar. --- app/controllers/email_controller.rb | 4 +- app/models/discourse_single_sign_on.rb | 8 +- app/models/report.rb | 2 +- lib/cache.rb | 107 ++++++++++++++++++++----- lib/discourse_tagging.rb | 2 +- script/benchmarks/cache/bench.rb | 14 ++++ spec/components/cache_spec.rb | 11 +++ spec/components/redis_store_spec.rb | 4 + spec/requests/email_controller_spec.rb | 4 +- 9 files changed, 127 insertions(+), 29 deletions(-) diff --git a/app/controllers/email_controller.rb b/app/controllers/email_controller.rb index 0e82707e36..5e8b8d63af 100644 --- a/app/controllers/email_controller.rb +++ b/app/controllers/email_controller.rb @@ -112,7 +112,7 @@ class EmailController < ApplicationController else key = "unsub_#{SecureRandom.hex}" - $redis.setex key, 1.hour, user.email + Discourse.cache.write key, user.email, expires_in: 1.hour url = path("/email/unsubscribed?key=#{key}") if topic @@ -125,7 +125,7 @@ class EmailController < ApplicationController end def unsubscribed - @email = $redis.get(params[:key]) + @email = Discourse.cache.read(params[:key]) @topic_id = params[:topic_id] user = User.find_by_email(@email) raise Discourse::NotFound unless user diff --git a/app/models/discourse_single_sign_on.rb b/app/models/discourse_single_sign_on.rb index 6b6e392683..9d72a9cc98 100644 --- a/app/models/discourse_single_sign_on.rb +++ b/app/models/discourse_single_sign_on.rb @@ -27,21 +27,21 @@ class DiscourseSingleSignOn < SingleSignOn def register_nonce(return_path) if nonce - $redis.setex(nonce_key, SingleSignOn.nonce_expiry_time, return_path) + Discourse.cache.write(nonce_key, return_path, expires_in: SingleSignOn.nonce_expiry_time) end end def nonce_valid? - nonce && $redis.get(nonce_key).present? + nonce && Discourse.cache.read(nonce_key).present? end def return_path - $redis.get(nonce_key) || "/" + Discourse.cache.read(nonce_key) || "/" end def expire_nonce! if nonce - $redis.del nonce_key + Discourse.cache.delete nonce_key end end diff --git a/app/models/report.rb b/app/models/report.rb index 5271e0bef3..7eac9ffd2f 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -163,7 +163,7 @@ class Report end def self.cache(report, duration) - Discourse.cache.write(cache_key(report), report.as_json, force: true, expires_in: duration) + Discourse.cache.write(cache_key(report), report.as_json, expires_in: duration) end def self.find(type, opts = nil) diff --git a/lib/cache.rb b/lib/cache.rb index f7df05ed6f..9c0863eba9 100644 --- a/lib/cache.rb +++ b/lib/cache.rb @@ -1,8 +1,20 @@ # frozen_string_literal: true -# Discourse specific cache, enforces 1 day expiry +# Discourse specific cache, enforces 1 day expiry by default -class Cache < ActiveSupport::Cache::Store +# This is a bottom up implementation of ActiveSupport::Cache::Store +# this allows us to cleanly implement without using cache entries and version +# support which we do not use, in tern this makes the cache as fast as simply +# using `$redis.setex` with a more convenient API +# +# It only implements a subset of ActiveSupport::Cache::Store as we make no use +# of large parts of the interface. +# +# An additional advantage of this class is that all methods have named params +# Rails tends to use options hash for lots of stuff due to legacy reasons +# this makes it harder to reason about the API + +class Cache # nothing is cached for longer than 1 day EVER # there is no reason to have data older than this clogging redis @@ -10,9 +22,14 @@ class Cache < ActiveSupport::Cache::Store # pointless data MAX_CACHE_AGE = 1.day unless defined? MAX_CACHE_AGE - def initialize(opts = {}) - @namespace = opts[:namespace] || "_CACHE_" - super(opts) + # we don't need this feature, 1 day expiry is enough + # it makes lookups a tad cheaper + def self.supports_cache_versioning? + false + end + + def initialize(namespace: "_CACHE") + @namespace = namespace end def redis @@ -33,30 +50,82 @@ class Cache < ActiveSupport::Cache::Store end end - def normalize_key(key, opts = nil) + def normalize_key(key) "#{@namespace}:#{key}" end + def exist?(name) + key = normalize_key(name) + redis.exists(key) + end + + # this removes a bunch of stuff we do not need like instrumentation and versioning + def read(name) + key = normalize_key(name) + read_entry(key) + end + + def write(name, value, expires_in: nil) + write_entry(normalize_key(name), value, expires_in: nil) + end + + def delete(name) + redis.del(normalize_key(name)) + end + + def fetch(name, expires_in: nil, force: nil, &blk) + if block_given? + key = normalize_key(name) + raw = nil + + if !force + raw = redis.get(key) + end + + if raw + begin + Marshal.load(raw) + rescue => e + log_first_exception(e) + end + else + val = blk.call + write_entry(key, val, expires_in: expires_in) + val + end + elsif force + raise ArgumentError, "Missing block: Calling `Cache#fetch` with `force: true` requires a block." + else + read(name) + end + end + protected - def read_entry(key, options) - if data = redis.get(key) - data = Marshal.load(data) - ActiveSupport::Cache::Entry.new data + def log_first_exception(e) + if !defined? @logged_a_warning + @logged_a_warning = true + Discourse.warn_exception(e, "Corrupt cache... skipping entry for key #{key}") end - rescue - # corrupt cache, fail silently for now, remove rescue later end - def write_entry(key, entry, options) - dumped = Marshal.dump(entry.value) - expiry = options[:expires_in] || MAX_CACHE_AGE + def read_entry(key) + if data = redis.get(key) + Marshal.load(data) + end + rescue => e + # corrupt cache, this can happen if Marshal version + # changes. Log it once so we can tell it is happening. + # should not happen under any normal circumstances, but we + # do not want to flood logs + log_first_exception(e) + end + + def write_entry(key, value, expires_in: nil) + dumped = Marshal.dump(value) + expiry = expires_in || MAX_CACHE_AGE redis.setex(key, expiry, dumped) true end - def delete_entry(key, options) - redis.del key - end - end diff --git a/lib/discourse_tagging.rb b/lib/discourse_tagging.rb index 4711a8b74b..5b7996a946 100644 --- a/lib/discourse_tagging.rb +++ b/lib/discourse_tagging.rb @@ -336,7 +336,7 @@ module DiscourseTagging end def self.staff_tag_names - tag_names = Discourse.cache.read(TAGS_STAFF_CACHE_KEY, tag_names) + tag_names = Discourse.cache.read(TAGS_STAFF_CACHE_KEY) if !tag_names tag_names = Tag.joins(tag_groups: :tag_group_permissions) diff --git a/script/benchmarks/cache/bench.rb b/script/benchmarks/cache/bench.rb index 8f16f4bfcf..572ee5ec1c 100644 --- a/script/benchmarks/cache/bench.rb +++ b/script/benchmarks/cache/bench.rb @@ -79,3 +79,17 @@ end # redis get string marshal: 12789.2 i/s - same-ish: difference falls within error # Rails read cache string: 10486.4 i/s - 1.25x slower # Discourse read cache string: 10457.1 i/s - 1.26x slower +# +# After Cache re-write +# +# Comparison: +# redis setex string: 13390.9 i/s +# redis setex marshal string: 13202.0 i/s - same-ish: difference falls within error +# Discourse cache string: 12406.5 i/s - same-ish: difference falls within error +# Rails cache string: 12289.2 i/s - same-ish: difference falls within error +# +# Comparison: +# redis get string: 13589.6 i/s +# redis get string marshal: 13118.3 i/s - same-ish: difference falls within error +# Rails read cache string: 12482.2 i/s - same-ish: difference falls within error +# Discourse read cache string: 12296.8 i/s - same-ish: difference falls within error diff --git a/spec/components/cache_spec.rb b/spec/components/cache_spec.rb index 178905a77a..7b367743cf 100644 --- a/spec/components/cache_spec.rb +++ b/spec/components/cache_spec.rb @@ -9,6 +9,12 @@ describe Cache do Cache.new end + it "supports exist?" do + cache.write("testing", 1.1) + expect(cache.exist?("testing")).to eq(true) + expect(cache.exist?(SecureRandom.hex)).to eq(false) + end + it "supports float" do cache.write("float", 1.1) expect(cache.read("float")).to eq(1.1) @@ -36,10 +42,14 @@ describe Cache do end it "can delete correctly" do + cache.delete("key") + cache.fetch("key", expires_in: 1.minute) do "test" end + expect(cache.fetch("key")).to eq("test") + cache.delete("key") expect(cache.fetch("key")).to eq(nil) end @@ -69,6 +79,7 @@ describe Cache do r = cache.fetch "key" do "bob" end + expect(r).to eq("bob") end diff --git a/spec/components/redis_store_spec.rb b/spec/components/redis_store_spec.rb index 86f37c0e19..ab7ec0c0c2 100644 --- a/spec/components/redis_store_spec.rb +++ b/spec/components/redis_store_spec.rb @@ -44,6 +44,9 @@ describe "Redis Store" do end it "can be cleared without clearing our cache" do + cache.clear + store.clear + store.fetch "key" do "key in store" end @@ -53,6 +56,7 @@ describe "Redis Store" do end store.clear + expect(store.read("key")).to eq(nil) expect(cache.fetch("key")).to eq("key in cache") diff --git a/spec/requests/email_controller_spec.rb b/spec/requests/email_controller_spec.rb index a5330e39dd..10658907b6 100644 --- a/spec/requests/email_controller_spec.rb +++ b/spec/requests/email_controller_spec.rb @@ -151,7 +151,7 @@ RSpec.describe EmailController do describe 'when topic is public' do it 'should return the right response' do key = SecureRandom.hex - $redis.set(key, user.email) + Discourse.cache.write(key, user.email) get '/email/unsubscribed', params: { key: key, topic_id: topic.id } expect(response.status).to eq(200) expect(response.body).to include(topic.title) @@ -161,7 +161,7 @@ RSpec.describe EmailController do describe 'when topic is private' do it 'should return the right response' do key = SecureRandom.hex - $redis.set(key, user.email) + Discourse.cache.write(key, user.email) get '/email/unsubscribed', params: { key: key, topic_id: private_topic.id } expect(response.status).to eq(200) expect(response.body).to_not include(private_topic.title) From 52c8cab7f2244598f478eec28bd978c035166c27 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Wed, 27 Nov 2019 14:00:46 +0530 Subject: [PATCH 304/408] FIX: bypass finaldestination check for Vimeo links. --- lib/oneboxer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index fe054f5b54..c281f30e34 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -23,7 +23,7 @@ module Oneboxer end def self.ignore_redirects - @ignore_redirects ||= ['http://www.dropbox.com', 'http://store.steampowered.com', Discourse.base_url] + @ignore_redirects ||= ['http://www.dropbox.com', 'http://store.steampowered.com', 'http://vimeo.com/', Discourse.base_url] end def self.force_get_hosts From 520a83aa62c4b4ec67d50b31923370b94d077c97 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Wed, 27 Nov 2019 14:52:28 +0530 Subject: [PATCH 305/408] FIX: correct hostname in vimeo.com --- lib/oneboxer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index c281f30e34..695f2f1914 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -23,7 +23,7 @@ module Oneboxer end def self.ignore_redirects - @ignore_redirects ||= ['http://www.dropbox.com', 'http://store.steampowered.com', 'http://vimeo.com/', Discourse.base_url] + @ignore_redirects ||= ['http://www.dropbox.com', 'http://store.steampowered.com', 'http://vimeo.com', Discourse.base_url] end def self.force_get_hosts From 2d3113e4da74be2a0288dbe3273093cd2d27fd21 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Wed, 27 Nov 2019 11:48:31 +0200 Subject: [PATCH 306/408] FIX: Correctly resize lazy loaded images in Oneboxes --- app/assets/javascripts/discourse/lib/lazy-load-images.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/lazy-load-images.js.es6 b/app/assets/javascripts/discourse/lib/lazy-load-images.js.es6 index b8a4cad87f..284c5a3be4 100644 --- a/app/assets/javascripts/discourse/lib/lazy-load-images.js.es6 +++ b/app/assets/javascripts/discourse/lib/lazy-load-images.js.es6 @@ -58,7 +58,7 @@ function show(image) { let inOnebox = false; let inQuote = false; for (let element = image; element; element = element.parentElement) { - if (element.tagName === "ARTICLE") { + if (element.tagName === "ARTICLE" && element.dataset.postId) { break; } if (element.classList.contains("onebox")) { From cab9c7c77efa6fd4837eec3d4097796d09c6955f Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Wed, 27 Nov 2019 16:22:25 +0530 Subject: [PATCH 307/408] Bump onebox version. - FIX: use dedicated Vimeo onebox for all video types --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 46b4f8e68b..5a77669c3c 100644 --- a/Gemfile +++ b/Gemfile @@ -41,7 +41,7 @@ gem 'redis-namespace' gem 'active_model_serializers', '~> 0.8.3' -gem 'onebox', '1.9.23' +gem 'onebox', '1.9.24' gem 'http_accept_language', '~>2.0.5', require: false diff --git a/Gemfile.lock b/Gemfile.lock index d6016f5053..213187d108 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -243,7 +243,7 @@ GEM omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack - onebox (1.9.23) + onebox (1.9.24) htmlentities (~> 4.3) multi_json (~> 1.11) mustache @@ -499,7 +499,7 @@ DEPENDENCIES omniauth-oauth2 omniauth-openid omniauth-twitter - onebox (= 1.9.23) + onebox (= 1.9.24) openid-redis-store parallel_tests pg From 13a0da8c3966f8726dd1140da87e435a086318ab Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 26 Nov 2019 16:27:14 +0000 Subject: [PATCH 308/408] DEV: Use shared logout function when revoking all sessions --- .../discourse/controllers/preferences/account.js.es6 | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 index 337cac9db1..f09f94ae89 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/account.js.es6 @@ -1,4 +1,3 @@ -import { isEmpty } from "@ember/utils"; import { not, or, gt } from "@ember/object/computed"; import Controller from "@ember/controller"; import { iconHTML } from "discourse-common/lib/icon-library"; @@ -11,6 +10,7 @@ import showModal from "discourse/lib/show-modal"; import { findAll } from "discourse/models/login-method"; import { ajax } from "discourse/lib/ajax"; import { userPath } from "discourse/lib/url"; +import logout from "discourse/lib/logout"; // Number of tokens shown by default. const DEFAULT_AUTH_TOKENS_COUNT = 2; @@ -240,14 +240,7 @@ export default Controller.extend(CanCheckEmails, PreferencesTabController, { } ) .then(() => { - if (!token) { - const redirect = this.siteSettings.logout_redirect; - if (isEmpty(redirect)) { - window.location = Discourse.getURL("/"); - } else { - window.location.href = redirect; - } - } + if (!token) logout(); // All sessions revoked }) .catch(popupAjaxError); }, From 1a6bbfd10baa753ba760efae079b3ba2561cf098 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 27 Nov 2019 11:41:07 +0000 Subject: [PATCH 309/408] FIX: Do not start the login flow when logging out from SSO/Authenticator (#8423) This affects login_required sites which use SSO or have only one authenticator enabled. Previously, logging out would redirect to the homepage, which would then redirect to the identity provider. Now, users will be redirected to the Discourse login page. This avoids the confusing situation where a user appears to remain logged in after clicking logout. Sites which have explicitly defined a logout_redirect url are not affected by this change. For context, see https://meta.discourse.org/t/134138/2 --- .../javascripts/discourse/lib/logout.js.es6 | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/logout.js.es6 b/app/assets/javascripts/discourse/lib/logout.js.es6 index 09986e892b..23160f8e44 100644 --- a/app/assets/javascripts/discourse/lib/logout.js.es6 +++ b/app/assets/javascripts/discourse/lib/logout.js.es6 @@ -1,4 +1,6 @@ import { isEmpty } from "@ember/utils"; +import { findAll } from "discourse/models/login-method"; + export default function logout(siteSettings, keyValueStore) { if (!siteSettings || !keyValueStore) { const container = Discourse.__container__; @@ -9,9 +11,21 @@ export default function logout(siteSettings, keyValueStore) { keyValueStore.abandonLocal(); const redirect = siteSettings.logout_redirect; - if (isEmpty(redirect)) { - window.location = Discourse.getURL("/"); - } else { + if (!isEmpty(redirect)) { window.location.href = redirect; + return; } + + const sso = siteSettings.enable_sso; + const oneAuthenticator = + !siteSettings.enable_local_logins && findAll().length === 1; + + if (siteSettings.login_required && (sso || oneAuthenticator)) { + // In this situation visiting most URLs will start the auth process again + // Go to the `/login` page to avoid an immediate redirect + window.location.href = Discourse.getURL("/login"); + return; + } + + window.location.href = Discourse.getURL("/"); } From a227083c1cac1e3c72bd73ac1ddf44932da7a377 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 27 Nov 2019 12:39:31 +0000 Subject: [PATCH 310/408] FEATURE: Limit the number of active sessions for a user (#8411) If a user has more than 60 active sessions, the oldest sessions will be terminated automatically. This protects performance when logging in and when loading the list of recently used devices. --- app/models/user_auth_token.rb | 10 +++++++ lib/auth/default_current_user_provider.rb | 3 +++ .../default_current_user_provider_spec.rb | 27 +++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/app/models/user_auth_token.rb b/app/models/user_auth_token.rb index 30a38c68bc..48079e351d 100644 --- a/app/models/user_auth_token.rb +++ b/app/models/user_auth_token.rb @@ -8,6 +8,8 @@ class UserAuthToken < ActiveRecord::Base # used when token did not arrive at client URGENT_ROTATE_TIME = 1.minute + MAX_SESSION_COUNT = 60 + USER_ACTIONS = ['generate'] attr_accessor :unhashed_auth_token @@ -220,6 +222,14 @@ class UserAuthToken < ActiveRecord::Base end end + + def self.enforce_session_count_limit!(user_id) + tokens_to_destroy = where(user_id: user_id). + where('rotated_at > ?', SiteSetting.maximum_session_age.hours.ago). + order("rotated_at DESC").offset(MAX_SESSION_COUNT) + + tokens_to_destroy.delete_all # Returns the number of deleted rows + end end # == Schema Information diff --git a/lib/auth/default_current_user_provider.rb b/lib/auth/default_current_user_provider.rb index 3f405233cc..86d6bb3d5e 100644 --- a/lib/auth/default_current_user_provider.rb +++ b/lib/auth/default_current_user_provider.rb @@ -164,6 +164,9 @@ class Auth::DefaultCurrentUserProvider unstage_user(user) make_developer_admin(user) enable_bootstrap_mode(user) + + UserAuthToken.enforce_session_count_limit!(user.id) + @env[CURRENT_USER_KEY] = user end diff --git a/spec/components/auth/default_current_user_provider_spec.rb b/spec/components/auth/default_current_user_provider_spec.rb index 616de7b4c0..08be6290bc 100644 --- a/spec/components/auth/default_current_user_provider_spec.rb +++ b/spec/components/auth/default_current_user_provider_spec.rb @@ -586,6 +586,33 @@ describe Auth::DefaultCurrentUserProvider do expect(UserAuthToken.where(user_id: user.id).count).to eq(2) end + it "cleans up old sessions when a user logs in" do + user = Fabricate(:user) + + yesterday = 1.day.ago + + UserAuthToken.insert_all((1..(UserAuthToken::MAX_SESSION_COUNT + 2)).to_a.map do |i| + { + user_id: user.id, + created_at: yesterday + i.seconds, + updated_at: yesterday + i.seconds, + rotated_at: yesterday + i.seconds, + prev_auth_token: "abc#{i}", + auth_token: "abc#{i}" + } + end) + + # Check the oldest 3 still exist + expect(UserAuthToken.where(auth_token: (1..3).map { |i| "abc#{i}" }).count).to eq(3) + + # On next login, gets fixed + provider('/').log_on_user(user, {}, {}) + expect(UserAuthToken.where(user_id: user.id).count).to eq(UserAuthToken::MAX_SESSION_COUNT) + + # Oldest sessions are 1, 2, 3. They should now be deleted + expect(UserAuthToken.where(auth_token: (1..3).map { |i| "abc#{i}" }).count).to eq(0) + end + it "sets secure, same site lax cookies" do SiteSetting.force_https = false SiteSetting.same_site_cookies = "Lax" From 119c4d0c1bccd85fe609c7faeb70c13af62cb109 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 27 Nov 2019 17:36:45 +0100 Subject: [PATCH 311/408] DEV: adds a `stringToHTML` helper to be used in tests (#8424) This will replace the need for jquery: `$(string)` --- test/javascripts/helpers/html-helper.js.es6 | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 test/javascripts/helpers/html-helper.js.es6 diff --git a/test/javascripts/helpers/html-helper.js.es6 b/test/javascripts/helpers/html-helper.js.es6 new file mode 100644 index 0000000000..e9997908db --- /dev/null +++ b/test/javascripts/helpers/html-helper.js.es6 @@ -0,0 +1,5 @@ +export function stringToHTML(string) { + const parser = new DOMParser(); + const doc = parser.parseFromString(string, "text/html"); + return doc.body.firstChild; +} From b6e08c06c5a04c724484b314de8bd1acd25d4478 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 27 Nov 2019 16:50:31 +0000 Subject: [PATCH 312/408] DEV: Remove unused user_auth_token_log_serializer Usage was removed in f2331ef07f527b58f980e461edf79041ce6f64f1 --- .../user_auth_token_log_serializer.rb | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 app/serializers/user_auth_token_log_serializer.rb diff --git a/app/serializers/user_auth_token_log_serializer.rb b/app/serializers/user_auth_token_log_serializer.rb deleted file mode 100644 index 0a676f8c7c..0000000000 --- a/app/serializers/user_auth_token_log_serializer.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class UserAuthTokenLogSerializer < ApplicationSerializer - include UserAuthTokensMixin - - attributes :action - - def action - case object.action - when 'generate' - I18n.t('log_in') - when 'destroy' - I18n.t('unsubscribe.log_out') - else - I18n.t('staff_action_logs.unknown') - end - end -end From 1c9d18f09418bdfa1585dad658ebf851cf5046d8 Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Wed, 27 Nov 2019 17:19:44 -0300 Subject: [PATCH 313/408] FIX: Correctly ignore/approve replies when acting on a flagged post (#8425) --- app/models/reviewable_flagged_post.rb | 2 +- lib/post_destroyer.rb | 4 ++-- spec/components/post_destroyer_spec.rb | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/models/reviewable_flagged_post.rb b/app/models/reviewable_flagged_post.rb index 340d63c8b5..5f3a3a6d95 100644 --- a/app/models/reviewable_flagged_post.rb +++ b/app/models/reviewable_flagged_post.rb @@ -228,7 +228,7 @@ class ReviewableFlaggedPost < Reviewable def perform_delete_and_agree_replies(performed_by, args) result = agree(performed_by, args) - PostDestroyer.delete_with_replies(performed_by, post, self) + PostDestroyer.delete_with_replies(performed_by, post, self, defer_reply_flags: false) result end diff --git a/lib/post_destroyer.rb b/lib/post_destroyer.rb index 48517527d8..2b74d83791 100644 --- a/lib/post_destroyer.rb +++ b/lib/post_destroyer.rb @@ -39,11 +39,11 @@ class PostDestroyer end end - def self.delete_with_replies(performed_by, post, reviewable = nil) + def self.delete_with_replies(performed_by, post, reviewable = nil, defer_reply_flags: true) reply_ids = post.reply_ids(Guardian.new(performed_by), only_replies_to_single_post: false) replies = Post.where(id: reply_ids.map { |r| r[:id] }) PostDestroyer.new(performed_by, post, reviewable: reviewable).destroy - replies.each { |reply| PostDestroyer.new(performed_by, reply).destroy } + replies.each { |reply| PostDestroyer.new(performed_by, reply, defer_flags: defer_reply_flags).destroy } end def initialize(user, post, opts = {}) diff --git a/spec/components/post_destroyer_spec.rb b/spec/components/post_destroyer_spec.rb index 76c1fd9220..52c7a18b6b 100644 --- a/spec/components/post_destroyer_spec.rb +++ b/spec/components/post_destroyer_spec.rb @@ -798,4 +798,28 @@ describe PostDestroyer do end end + describe '#delete_with_replies' do + let(:reporter) { Discourse.system_user } + fab!(:post) { Fabricate(:post) } + + before do + reply = Fabricate(:post, topic: post.topic) + post.update(replies: [reply]) + PostActionCreator.off_topic(reporter, post) + + @reviewable_reply = PostActionCreator.off_topic(reporter, reply).reviewable + end + + it 'ignores flagged replies' do + PostDestroyer.delete_with_replies(reporter, post) + + expect(@reviewable_reply.reload.status).to eq Reviewable.statuses[:ignored] + end + + it 'approves flagged replies' do + PostDestroyer.delete_with_replies(reporter, post, defer_reply_flags: false) + + expect(@reviewable_reply.reload.status).to eq Reviewable.statuses[:approved] + end + end end From d12f2580deea52678a795f6394792be187cd6049 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Wed, 27 Nov 2019 22:15:34 +0100 Subject: [PATCH 314/408] FIX: Serve crawler view to Google PageSpeed --- config/site_settings.yml | 10 +++++----- spec/components/crawler_detection_spec.rb | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/config/site_settings.yml b/config/site_settings.yml index 9ad1751d21..6db2c67468 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -389,12 +389,12 @@ login: enable_discord_logins: default: false discord_client_id: - default: '' + default: "" discord_secret: - default: '' + default: "" secret: true discord_trusted_guilds: - default: '' + default: "" type: list enable_sso: client: true @@ -1344,7 +1344,7 @@ security: list_type: compact crawler_user_agents: hidden: true - default: "rss|bot|spider|crawler|facebook|archive|wayback|ping|monitor" + default: "rss|bot|spider|crawler|facebook|archive|wayback|ping|monitor|lighthouse" type: list list_type: compact crawler_check_bypass_agents: @@ -2050,7 +2050,7 @@ api: default: 30 retry_web_hook_events: default: false - api_key_last_used_epoch: + api_key_last_used_epoch: default: "" # Value is added in a migration hidden: true revoke_api_keys_days: diff --git a/spec/components/crawler_detection_spec.rb b/spec/components/crawler_detection_spec.rb index dd9ce42d22..db45d2cbd6 100644 --- a/spec/components/crawler_detection_spec.rb +++ b/spec/components/crawler_detection_spec.rb @@ -47,6 +47,7 @@ describe CrawlerDetection do crawler! "LogicMonitor SiteMonitor/1.0" crawler! "Java/1.8.0_151" crawler! "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)" + crawler! "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3694.0 Mobile Safari/537.36 Chrome-Lighthouse" end it "returns true when VIA header contains 'web.archive.org'" do From e7c7a0509749c24e17cc786d7c78594acaf03824 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Thu, 28 Nov 2019 07:32:17 +1000 Subject: [PATCH 315/408] FIX: Mark secure media upload insecure automatically if used for theme component (#8413) When uploading a file to a theme component, and that file is existing and has already been marked as secure, we now automatically mark the file as secure: false, change the ACL, and log the action as the user (also rebake the posts for the upload) --- app/controllers/admin/themes_controller.rb | 12 +++++++ app/jobs/regular/rebake_posts_for_upload.rb | 11 +++++++ app/models/upload.rb | 4 +-- app/models/user_history.rb | 6 ++-- app/services/staff_action_logger.rb | 11 +++++++ config/locales/client.en.yml | 1 + config/locales/server.en.yml | 3 ++ spec/models/upload_spec.rb | 12 +++++++ spec/requests/admin/themes_controller_spec.rb | 31 +++++++++++++++++++ 9 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 app/jobs/regular/rebake_posts_for_upload.rb diff --git a/app/controllers/admin/themes_controller.rb b/app/controllers/admin/themes_controller.rb index 116ed1b322..43df7efca4 100644 --- a/app/controllers/admin/themes_controller.rb +++ b/app/controllers/admin/themes_controller.rb @@ -23,12 +23,24 @@ class Admin::ThemesController < Admin::AdminController if upload.errors.count > 0 render_json_error upload else + # we assume a user intends to make some media public + # if they are uploading it to a theme component + mark_upload_insecure(upload) if upload.secure? render json: { upload_id: upload.id }, status: :created end end end end + def mark_upload_insecure(upload) + upload.update_secure_status(secure_override_value: false) + StaffActionLogger.new(current_user).log_change_upload_secure_status( + upload_id: upload.id, + new_value: false + ) + Jobs.enqueue(:rebake_posts_for_upload, id: upload.id) + end + def generate_key_pair require 'sshkey' k = SSHKey.generate diff --git a/app/jobs/regular/rebake_posts_for_upload.rb b/app/jobs/regular/rebake_posts_for_upload.rb new file mode 100644 index 0000000000..a56b433643 --- /dev/null +++ b/app/jobs/regular/rebake_posts_for_upload.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Jobs + class RebakePostsForUpload < ::Jobs::Base + def execute(args) + upload = Upload.find_by(id: args[:id]) + return if upload.blank? + upload.posts.find_each(&:rebake!) + end + end +end diff --git a/app/models/upload.rb b/app/models/upload.rb index 189a08f325..a6842ce9a9 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -230,9 +230,9 @@ class Upload < ActiveRecord::Base self.posts.where("cooked LIKE '%/_optimized/%'").find_each(&:rebake!) end - def update_secure_status + def update_secure_status(secure_override_value: nil) return false if self.for_theme || self.for_site_setting - mark_secure = should_be_secure? + mark_secure = secure_override_value.nil? ? should_be_secure? : secure_override_value self.update_column("secure", mark_secure) Discourse.store.update_upload_ACL(self) if Discourse.store.external? diff --git a/app/models/user_history.rb b/app/models/user_history.rb index dcb11d5ea6..3adbb62eb1 100644 --- a/app/models/user_history.rb +++ b/app/models/user_history.rb @@ -102,7 +102,8 @@ class UserHistory < ActiveRecord::Base api_key_update: 81, api_key_destroy: 82, revoke_title: 83, - change_title: 84 + change_title: 84, + override_upload_secure_status: 85 ) end @@ -181,7 +182,8 @@ class UserHistory < ActiveRecord::Base :change_title, :api_key_create, :api_key_update, - :api_key_destroy + :api_key_destroy, + :override_upload_secure_status ] end diff --git a/app/services/staff_action_logger.rb b/app/services/staff_action_logger.rb index c6cbb48d0f..9130f34692 100644 --- a/app/services/staff_action_logger.rb +++ b/app/services/staff_action_logger.rb @@ -373,6 +373,17 @@ class StaffActionLogger )) end + def log_change_upload_secure_status(opts = {}) + UserHistory.create!(params(opts).merge( + action: UserHistory.actions[:override_upload_secure_status], + details: [ + "upload_id: #{opts[:upload_id]}", + "reason: #{I18n.t("uploads.marked_insecure_from_theme_component_reason")}" + ].join("\n"), + new_value: opts[:new_value] + )) + end + def log_check_email(user, opts = {}) raise Discourse::InvalidParameters.new(:user) unless user UserHistory.create!(params(opts).merge( diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index bbd442acd9..36fa5c1073 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -3936,6 +3936,7 @@ en: api_key_create: "api key create" api_key_update: "api key update" api_key_destroy: "api key destroy" + override_upload_secure_status: "override upload secure status" screened_emails: title: "Screened Emails" description: "When someone tries to create a new account, the following email addresses will be checked and the registration will be blocked, or some other action performed." diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 54e8ab9160..bb82cba5b6 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -971,6 +971,9 @@ en: topic_description: "To re-subscribe to %{link}, use the notification control at the bottom or right of the topic." private_topic_description: "To re-subscribe, use the notification control at the bottom or right of the topic." + uploads: + marked_insecure_from_theme_component_reason: "upload used in theme component" + unsubscribe: title: "Unsubscribe" stop_watching_topic: "Stop watching this topic, %{link}" diff --git a/spec/models/upload_spec.rb b/spec/models/upload_spec.rb index 9f4a52de44..5d7cca2598 100644 --- a/spec/models/upload_spec.rb +++ b/spec/models/upload_spec.rb @@ -289,6 +289,18 @@ describe Upload do end describe '.update_secure_status' do + it "respects the secure_override_value parameter if provided" do + upload.update!(secure: true) + + upload.update_secure_status(secure_override_value: true) + + expect(upload.secure).to eq(true) + + upload.update_secure_status(secure_override_value: false) + + expect(upload.secure).to eq(false) + end + it 'marks a local upload as not secure with default settings' do upload.update!(secure: true) expect { upload.update_secure_status } diff --git a/spec/requests/admin/themes_controller_spec.rb b/spec/requests/admin/themes_controller_spec.rb index 17cdf9ea9f..4be50292ec 100644 --- a/spec/requests/admin/themes_controller_spec.rb +++ b/spec/requests/admin/themes_controller_spec.rb @@ -37,6 +37,37 @@ describe Admin::ThemesController do expect(upload.id).not_to be_nil expect(JSON.parse(response.body)["upload_id"]).to eq(upload.id) end + + context "when trying to upload an existing file" do + let(:uploaded_file) { Upload.find_by(original_filename: "fake.woff2") } + let(:response_json) { JSON.parse(response.body) } + + before do + post "/admin/themes/upload_asset.json", params: { file: upload } + expect(response.status).to eq(201) + end + + context "if the file is secure media" do + before do + uploaded_file.update_secure_status(secure_override_value: true) + upload.rewind + end + + it "marks the upload as not secure" do + post "/admin/themes/upload_asset.json", params: { file: upload } + expect(response.status).to eq(201) + expect(response_json["upload_id"]).to eq(uploaded_file.id) + uploaded_file.reload + expect(uploaded_file.secure).to eq(false) + end + + it "enqueues a job to rebake the posts for the upload" do + Jobs.expects(:enqueue).with(:rebake_posts_for_upload, id: uploaded_file.id) + post "/admin/themes/upload_asset.json", params: { file: upload } + expect(response.status).to eq(201) + end + end + end end describe '#export' do From 901054fd75f986bfaa8726cade381b365023be56 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Thu, 28 Nov 2019 07:48:29 +1000 Subject: [PATCH 316/408] FIX: Cache failed onebox URL request server-side (#8421) We already cache failed onebox URL requests client-side, we now want to cache this on the server-side for extra protection. failed onebox previews will be cached for 1 hour, and any more requests for that URL will fail with a 404 status. Forcing a rebake via the Rebake HTML action will delete the failed URL cache (like how the oneboxer preview cache is deleted). --- app/controllers/onebox_controller.rb | 3 +++ lib/oneboxer.rb | 13 ++++++++++++ spec/components/oneboxer_spec.rb | 11 ++++++++++ spec/requests/onebox_controller_spec.rb | 27 +++++++++++++++++++++---- 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/app/controllers/onebox_controller.rb b/app/controllers/onebox_controller.rb index 10c500317b..f656ba3414 100644 --- a/app/controllers/onebox_controller.rb +++ b/app/controllers/onebox_controller.rb @@ -19,6 +19,8 @@ class OneboxController < ApplicationController invalidate = params[:refresh] == 'true' url = params[:url] + return render(body: nil, status: 404) if Oneboxer.recently_failed?(url) + hijack do Oneboxer.preview_onebox!(user_id) @@ -34,6 +36,7 @@ class OneboxController < ApplicationController Oneboxer.onebox_previewed!(user_id) if preview.blank? + Oneboxer.cache_failed!(url) render body: nil, status: 404 else render plain: preview diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index 695f2f1914..a594499f26 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -72,6 +72,7 @@ module Oneboxer def self.invalidate(url) Discourse.cache.delete(onebox_cache_key(url)) + Discourse.cache.delete(onebox_failed_cache_key(url)) end # Parse URLs out of HTML, returning the document when finished. @@ -136,6 +137,14 @@ module Oneboxer Onebox::Matcher.new(url).oneboxed end + def self.recently_failed?(url) + Discourse.cache.read(onebox_failed_cache_key(url)).present? + end + + def self.cache_failed!(url) + Discourse.cache.write(onebox_failed_cache_key(url), true, expires_in: 1.hour) + end + private def self.preview_key(user_id) @@ -150,6 +159,10 @@ module Oneboxer "onebox__#{url}" end + def self.onebox_failed_cache_key(url) + "onebox_failed__#{url}" + end + def self.onebox_raw(url, opts = {}) url = URI(url).to_s local_onebox(url, opts) || external_onebox(url) diff --git a/spec/components/oneboxer_spec.rb b/spec/components/oneboxer_spec.rb index f90eb5ba75..c04287ecb9 100644 --- a/spec/components/oneboxer_spec.rb +++ b/spec/components/oneboxer_spec.rb @@ -12,6 +12,17 @@ describe Oneboxer do expect(Oneboxer.onebox("http://boom.com")).to eq("") end + describe "#invalidate" do + let(:url) { "http://test.com" } + it "clears the cached preview for the onebox URL and the failed URL cache" do + Discourse.cache.write(Oneboxer.onebox_cache_key(url), "test") + Discourse.cache.write(Oneboxer.onebox_failed_cache_key(url), true) + Oneboxer.invalidate(url) + expect(Discourse.cache.read(Oneboxer.onebox_cache_key(url))).to eq(nil) + expect(Discourse.cache.read(Oneboxer.onebox_failed_cache_key(url))).to eq(nil) + end + end + context "local oneboxes" do def link(url) diff --git a/spec/requests/onebox_controller_spec.rb b/spec/requests/onebox_controller_spec.rb index 1d14499e41..babe310476 100644 --- a/spec/requests/onebox_controller_spec.rb +++ b/spec/requests/onebox_controller_spec.rb @@ -4,6 +4,10 @@ require 'rails_helper' describe OneboxController do + before do + Discourse.cache.delete(Oneboxer.onebox_failed_cache_key(url)) + end + let(:url) { "http://google.com" } it "requires the user to be logged in" do @@ -112,19 +116,34 @@ describe OneboxController do end describe "missing onebox" do - it "returns 404 if the onebox is nil" do + def stub_request_to_onebox_url(response_body) stub_request(:head, url) - stub_request(:get, url).to_return(body: nil).then.to_raise + stub_request(:get, url).to_return(body: response_body).then.to_raise + end + + it "returns 404 if the onebox is nil" do + stub_request_to_onebox_url(nil) get "/onebox.json", params: { url: url, refresh: "true" } expect(response.response_code).to eq(404) end it "returns 404 if the onebox is an empty string" do - stub_request(:head, url) - stub_request(:get, url).to_return(body: " \t ").then.to_raise + stub_request_to_onebox_url(" \t ") get "/onebox.json", params: { url: url, refresh: "true" } expect(response.response_code).to eq(404) end + + it "cases missing onebox URLs so we do not attempt to preview again" do + stub_request_to_onebox_url(nil) + get "/onebox.json", params: { url: url, refresh: "true" } + expect(response.response_code).to eq(404) + Oneboxer.expects(:preview_onebox!).never + get "/onebox.json", params: { url: url, refresh: "true" } + expect(response.response_code).to eq(404) + expect( + Discourse.cache.read(Oneboxer.onebox_failed_cache_key(url)) + ).not_to eq(nil) + end end describe "local onebox" do From c54be3ff25e0b25043487204ff10edab67b046b0 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Thu, 28 Nov 2019 08:20:32 +1000 Subject: [PATCH 317/408] Add tests for oneboxer.js.es6 (#8418) --- test/javascripts/lib/oneboxer-test.js.es6 | 78 +++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 test/javascripts/lib/oneboxer-test.js.es6 diff --git a/test/javascripts/lib/oneboxer-test.js.es6 b/test/javascripts/lib/oneboxer-test.js.es6 new file mode 100644 index 0000000000..77ca103827 --- /dev/null +++ b/test/javascripts/lib/oneboxer-test.js.es6 @@ -0,0 +1,78 @@ +import { load } from "pretty-text/oneboxer"; +import { ajax } from "discourse/lib/ajax"; +import { failedCache, localCache } from "pretty-text/oneboxer-cache"; +import { stringToHTML } from "helpers/html-helper"; + +function loadOnebox(element) { + return load({ + elem: element, + refresh: false, + ajax, + synchronous: true, + categoryId: 1, + topicId: 1 + }); +} + +QUnit.module("lib:oneboxer"); + +QUnit.test("load - failed onebox", async assert => { + let element = document.createElement("A"); + element.setAttribute("href", "http://somebadurl.com"); + + // prettier-ignore + server.get("/onebox", () => { //eslint-disable-line + return [404, {}, {}]; + }); + + await loadOnebox(element); + + assert.equal( + failedCache["http://somebadurl.com"], + true, + "stores the url as failed in a cache" + ); + assert.equal( + loadOnebox(element), + undefined, + "it returns early for a failed cache" + ); +}); + +QUnit.test("load - successful onebox", async assert => { + const html = ` + + `; + + // prettier-ignore + server.get("/onebox", () => { //eslint-disable-line + return [200, {}, html]; + }); + + let element = document.createElement("A"); + element.setAttribute("href", "http://somegoodurl.com"); + + await loadOnebox(element); + + assert.equal( + localCache["http://somegoodurl.com"].prop("outerHTML"), + stringToHTML(html).outerHTML, + "stores the html of the onebox in a local cache" + ); + assert.equal( + loadOnebox(element), + stringToHTML(html).outerHTML, + "it returns the html from the cache" + ); +}); From 481c8314f0b79253578c0f7facbe91f792301411 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 28 Nov 2019 04:02:35 +0530 Subject: [PATCH 318/408] FEATURE: consolidate group membership request notifications. --- .../discourse-common/lib/icon-library.js.es6 | 3 +- ...uest-consolidated-notification-item.js.es6 | 25 ++++++ app/models/notification.rb | 78 ++++++++++++++++++- config/locales/client.en.yml | 2 + spec/models/notification_spec.rb | 44 +++++++++++ 5 files changed, 148 insertions(+), 4 deletions(-) create mode 100644 app/assets/javascripts/discourse/widgets/membership-request-consolidated-notification-item.js.es6 diff --git a/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 b/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 index 726b49cfde..f0188fb2c5 100644 --- a/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 +++ b/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 @@ -36,7 +36,8 @@ const REPLACEMENTS = { "notification.watching_first_post": "far-dot-circle", "notification.group_message_summary": "users", "notification.post_approved": "check", - "notification.membership_request_accepted": "user-plus" + "notification.membership_request_accepted": "user-plus", + "notification.membership_request_consolidated": "users" }; // TODO: use lib/svg_sprite/fa4-renames.json here diff --git a/app/assets/javascripts/discourse/widgets/membership-request-consolidated-notification-item.js.es6 b/app/assets/javascripts/discourse/widgets/membership-request-consolidated-notification-item.js.es6 new file mode 100644 index 0000000000..ea5f54d198 --- /dev/null +++ b/app/assets/javascripts/discourse/widgets/membership-request-consolidated-notification-item.js.es6 @@ -0,0 +1,25 @@ +import { createWidgetFrom } from "discourse/widgets/widget"; +import { DefaultNotificationItem } from "discourse/widgets/default-notification-item"; +import { userPath } from "discourse/lib/url"; + +createWidgetFrom( + DefaultNotificationItem, + "membership-request-consolidated-notification-item", + { + url() { + return userPath( + `${this.attrs.username || this.currentUser.username}/messages` + ); + }, + + text(notificationName, data) { + return I18n.t( + "notifications.membership_request_consolidated", + { + group_name: data.group_name, + count: parseInt(data.count, 10) + } + ); + } + } +); diff --git a/app/models/notification.rb b/app/models/notification.rb index fa6bb66490..a5c1e05389 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -4,6 +4,9 @@ class Notification < ActiveRecord::Base belongs_to :user belongs_to :topic + MEMBERSHIP_REQUEST_CONSOLIDATION_WINDOW_HOURS = 24 + MEMBERSHIP_REQUEST_CONSOLIDATION_THRESHOLD = 3 + validates_presence_of :data validates_presence_of :notification_type @@ -20,11 +23,15 @@ class Notification < ActiveRecord::Base attr_accessor :skip_send_email - after_commit :send_email, on: :create after_commit :refresh_notification_count, on: [:create, :update, :destroy] after_commit(on: :create) do - DiscourseEvent.trigger(:notification_created, self) + consolidated = consolidate_membership_requests + + unless consolidated + DiscourseEvent.trigger(:notification_created, self) + send_email + end end def self.ensure_consistency! @@ -66,7 +73,8 @@ class Notification < ActiveRecord::Base liked_consolidated: 19, post_approved: 20, code_review_commit_approved: 21, - membership_request_accepted: 22 + membership_request_accepted: 22, + membership_request_consolidated: 23 ) end @@ -226,6 +234,70 @@ class Notification < ActiveRecord::Base NotificationEmailer.process_notification(self) if !skip_send_email end + private + + def consolidate_membership_requests + return unless unread_pm? + + post_id = data_hash[:original_post_id] + return if post_id.blank? + + custom_field = PostCustomField.select(:value).find_by(post_id: post_id, name: "requested_group_id") + return if custom_field.blank? + + group_id = custom_field.value.to_i + group_name = Group.select(:name).find_by(id: group_id)&.name + return if group_name.blank? + + consolidation_window = MEMBERSHIP_REQUEST_CONSOLIDATION_WINDOW_HOURS.hours.ago + timestamp = Time.zone.now + unread = user.notifications.unread + + consolidated_notification = unread + .where("created_at > ? AND data::json ->> 'group_name' = ?", consolidation_window, group_name) + .find_by(notification_type: Notification.types[:membership_request_consolidated]) + + if consolidated_notification.present? + data = consolidated_notification.data_hash + data["count"] += 1 + + Notification.transaction do + consolidated_notification.update!( + data: data.to_json, + read: false, + updated_at: timestamp + ) + + destroy! + end + + return true + end + + notifications = unread + .where(notification_type: Notification.types[:private_message]) + .where("created_at > ? AND data::json ->> 'topic_title' = ?", consolidation_window, data_hash[:topic_title]) + + return if notifications.count < MEMBERSHIP_REQUEST_CONSOLIDATION_THRESHOLD + + Notification.transaction do + Notification.create!( + notification_type: Notification.types[:membership_request_consolidated], + user_id: user_id, + data: { + group_name: group_name, + count: notifications.count + }.to_json, + updated_at: timestamp, + created_at: timestamp + ) + + notifications.destroy_all + end + + true + end + end # == Schema Information diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 36fa5c1073..87879ab05c 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1782,6 +1782,7 @@ en: topic_reminder: "{{username}} {{description}}" watching_first_post: "New Topic {{description}}" membership_request_accepted: "Membership accepted in '{{group_name}}'" + membership_request_consolidated: "{{count}} open membership requests for '{{group_name}}'" group_message_summary: one: "{{count}} message in your {{group_name}} inbox" @@ -1820,6 +1821,7 @@ en: topic_reminder: "topic reminder" liked_consolidated: "new likes" post_approved: "post approved" + membership_request_consolidated: "new membership requests" upload_selector: title: "Add an image" diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb index eeb26d3f00..a78d6e8ed6 100644 --- a/spec/models/notification_spec.rb +++ b/spec/models/notification_spec.rb @@ -355,5 +355,49 @@ describe Notification do expect(Notification.recent_report(user)).to contain_exactly(notification) end end + + describe '#consolidate_membership_requests' do + fab!(:group) { Fabricate(:group, name: "XXsssssddd") } + fab!(:user) { Fabricate(:user) } + fab!(:post) { Fabricate(:post) } + + def create_membership_request_notification + Notification.create( + notification_type: Notification.types[:private_message], + user_id: user.id, + data: { + topic_title: I18n.t('groups.request_membership_pm.title', group_name: group.name), + original_post_id: post.id + }.to_json, + updated_at: Time.zone.now, + created_at: Time.zone.now + ) + end + + before do + PostCustomField.create!(post_id: post.id, name: "requested_group_id", value: group.id) + create_membership_request_notification + end + + it 'should consolidate membership requests to a new notification' do + notification = create_membership_request_notification + notification.reload + + notification = create_membership_request_notification + expect { notification.reload }.to raise_error(ActiveRecord::RecordNotFound) + + notification = Notification.last + expect(notification.notification_type).to eq(Notification.types[:membership_request_consolidated]) + + data = notification.data_hash + expect(data[:group_name]).to eq(group.name) + expect(data[:count]).to eq(3) + + notification = create_membership_request_notification + expect { notification.reload }.to raise_error(ActiveRecord::RecordNotFound) + + expect(Notification.last.data_hash[:count]).to eq(4) + end + end end end From bb31e7f5b6150e7d30461cdeef9b537f43f3caee Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Wed, 27 Nov 2019 15:44:01 -0700 Subject: [PATCH 319/408] DEV: Remove buffered rendering from watched words This is another refactoring in the multi-step process to remove all uses of our custom Render Buffer. Previous commit: 2673cad14280948679d1f94a977e9f868da20858 in this series. This commit affects the display of watched words on the admin watched word page. It is just a refactor and does not change any functionality. --- .../components/admin-watched-word.js.es6 | 47 +++++++++---------- .../components/admin-watched-word.hbs | 1 + 2 files changed, 24 insertions(+), 24 deletions(-) create mode 100644 app/assets/javascripts/admin/templates/components/admin-watched-word.hbs diff --git a/app/assets/javascripts/admin/components/admin-watched-word.js.es6 b/app/assets/javascripts/admin/components/admin-watched-word.js.es6 index 8a408cf166..8e81ee3676 100644 --- a/app/assets/javascripts/admin/components/admin-watched-word.js.es6 +++ b/app/assets/javascripts/admin/components/admin-watched-word.js.es6 @@ -1,30 +1,29 @@ import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; -import { bufferedRender } from "discourse-common/lib/buffered-render"; import { escapeExpression } from "discourse/lib/utilities"; -export default Component.extend( - bufferedRender({ - classNames: ["watched-word"], +export default Component.extend({ + classNames: ["watched-word"], + watchedWord: null, + xIcon: iconHTML("times").htmlSafe(), - buildBuffer(buffer) { - buffer.push(iconHTML("times")); - buffer.push(` ${escapeExpression(this.get("word.word"))}`); - }, + init() { + this._super(...arguments); + this.set("watchedWord", `${escapeExpression(this.get("word.word"))}`); + }, - click() { - this.word - .destroy() - .then(() => { - this.action(this.word); - }) - .catch(e => { - bootbox.alert( - I18n.t("generic_error_with_reason", { - error: `http: ${e.status} - ${e.body}` - }) - ); - }); - } - }) -); + click() { + this.word + .destroy() + .then(() => { + this.action(this.word); + }) + .catch(e => { + bootbox.alert( + I18n.t("generic_error_with_reason", { + error: `http: ${e.status} - ${e.body}` + }) + ); + }); + } +}); diff --git a/app/assets/javascripts/admin/templates/components/admin-watched-word.hbs b/app/assets/javascripts/admin/templates/components/admin-watched-word.hbs new file mode 100644 index 0000000000..82e6b5431c --- /dev/null +++ b/app/assets/javascripts/admin/templates/components/admin-watched-word.hbs @@ -0,0 +1 @@ +{{xIcon}} {{watchedWord}} From 0fed417439e0061a6c59372947b67a073fdf6cd3 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 28 Nov 2019 04:31:55 +0530 Subject: [PATCH 320/408] DEV: always trigger 'notification_created' event. And make prettier happy. --- ...ship-request-consolidated-notification-item.js.es6 | 11 ++++------- app/models/notification.rb | 8 ++------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/membership-request-consolidated-notification-item.js.es6 b/app/assets/javascripts/discourse/widgets/membership-request-consolidated-notification-item.js.es6 index ea5f54d198..fafa3656f6 100644 --- a/app/assets/javascripts/discourse/widgets/membership-request-consolidated-notification-item.js.es6 +++ b/app/assets/javascripts/discourse/widgets/membership-request-consolidated-notification-item.js.es6 @@ -13,13 +13,10 @@ createWidgetFrom( }, text(notificationName, data) { - return I18n.t( - "notifications.membership_request_consolidated", - { - group_name: data.group_name, - count: parseInt(data.count, 10) - } - ); + return I18n.t("notifications.membership_request_consolidated", { + group_name: data.group_name, + count: parseInt(data.count, 10) + }); } } ); diff --git a/app/models/notification.rb b/app/models/notification.rb index a5c1e05389..4c0419f9e7 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -26,12 +26,8 @@ class Notification < ActiveRecord::Base after_commit :refresh_notification_count, on: [:create, :update, :destroy] after_commit(on: :create) do - consolidated = consolidate_membership_requests - - unless consolidated - DiscourseEvent.trigger(:notification_created, self) - send_email - end + DiscourseEvent.trigger(:notification_created, self) + send_email unless consolidate_membership_requests end def self.ensure_consistency! From 83a521e8c6b511315610fe35575d803973448b5b Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Wed, 27 Nov 2019 16:44:34 -0700 Subject: [PATCH 321/408] DEV: Fix failing test with watched words Follow up to: bb31e7f5b6150e7d30461cdeef9b537f43f3caee This commit fixes this failing test: `Assertion Failed: it should escape watched words` Now that we have a handlebars template we can us it for escaping because it does that for us. --- .../javascripts/admin/components/admin-watched-word.js.es6 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/components/admin-watched-word.js.es6 b/app/assets/javascripts/admin/components/admin-watched-word.js.es6 index 8e81ee3676..d4f5108c0f 100644 --- a/app/assets/javascripts/admin/components/admin-watched-word.js.es6 +++ b/app/assets/javascripts/admin/components/admin-watched-word.js.es6 @@ -1,6 +1,5 @@ import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; -import { escapeExpression } from "discourse/lib/utilities"; export default Component.extend({ classNames: ["watched-word"], @@ -9,7 +8,7 @@ export default Component.extend({ init() { this._super(...arguments); - this.set("watchedWord", `${escapeExpression(this.get("word.word"))}`); + this.set("watchedWord", this.get("word.word")); }, click() { From fd8ce7256c3d8b2948660d4e9d7a7213aa8561c2 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 28 Nov 2019 05:19:46 +0530 Subject: [PATCH 322/408] DEV: don't send staff welcome message to first admin. --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.rb b/app/models/user.rb index e90315db6a..4d211b1698 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -418,6 +418,7 @@ class User < ActiveRecord::Base def enqueue_staff_welcome_message(role) return unless staff? + return if role == :admin && User.real.where(admin: true).count == 1 Jobs.enqueue( :send_system_message, From 2bb36d72a3874c3e0436edddf535e7e1dc6e95ca Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Wed, 27 Nov 2019 17:19:23 -0700 Subject: [PATCH 323/408] DEV: Fix failing test on CI due to whitespace differences I could not replicate the failure locally, but it was consistently failing on CI with: ``` Assertion Failed: it should escape watched words Expected: , Actual: ``` This commit removes an extra space that was added originally, but I don't think it is really needed after double checking how it displays in the UI. The `x` icon and the word have sufficient spacing between them. If we need to we can tweak it in css instead. --- .../admin/templates/components/admin-watched-word.hbs | 2 +- test/javascripts/acceptance/admin-watched-words-test.js.es6 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/templates/components/admin-watched-word.hbs b/app/assets/javascripts/admin/templates/components/admin-watched-word.hbs index 82e6b5431c..c9e4fd9b04 100644 --- a/app/assets/javascripts/admin/templates/components/admin-watched-word.hbs +++ b/app/assets/javascripts/admin/templates/components/admin-watched-word.hbs @@ -1 +1 @@ -{{xIcon}} {{watchedWord}} +{{xIcon}}{{watchedWord}} diff --git a/test/javascripts/acceptance/admin-watched-words-test.js.es6 b/test/javascripts/acceptance/admin-watched-words-test.js.es6 index c602667fa6..48bd7c146b 100644 --- a/test/javascripts/acceptance/admin-watched-words-test.js.es6 +++ b/test/javascripts/acceptance/admin-watched-words-test.js.es6 @@ -34,7 +34,7 @@ QUnit.test("list words in groups", async assert => { assert.equal( $(find(".watched-words-list .watched-word")[2]).text(), - ' ', + '', "it should escape watched words" ); From fac91a9e71c8e2f3bc7fa4705780f5a3d9bc8f95 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Wed, 27 Nov 2019 17:42:22 -0700 Subject: [PATCH 324/408] DEV: Remove unnecessary watched word test This test is longer needed now that we are using handlebars which provides escaping by default. Follow up to 2bb36d72a3874c3e0436edddf535e7e1dc6e95ca and bb31e7f5b6150e7d30461cdeef9b537f43f3caee --- test/javascripts/acceptance/admin-watched-words-test.js.es6 | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/javascripts/acceptance/admin-watched-words-test.js.es6 b/test/javascripts/acceptance/admin-watched-words-test.js.es6 index 48bd7c146b..cefd82772e 100644 --- a/test/javascripts/acceptance/admin-watched-words-test.js.es6 +++ b/test/javascripts/acceptance/admin-watched-words-test.js.es6 @@ -32,12 +32,6 @@ QUnit.test("list words in groups", async assert => { "Always show the words when checkbox is checked." ); - assert.equal( - $(find(".watched-words-list .watched-word")[2]).text(), - '', - "it should escape watched words" - ); - await click(".nav-stacked .censor a"); assert.ok(exists(".watched-words-list")); From c218036107f1dc98829f4e894e2c20f266239c42 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Thu, 28 Nov 2019 02:09:05 +0100 Subject: [PATCH 325/408] FIX: Make Google Groups scraper work for G Suite users --- script/import_scripts/google_groups.rb | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/script/import_scripts/google_groups.rb b/script/import_scripts/google_groups.rb index 6d627db25b..6e3f2f0969 100755 --- a/script/import_scripts/google_groups.rb +++ b/script/import_scripts/google_groups.rb @@ -69,11 +69,31 @@ def find(css, parent_element = driver) end end +def base_url + if @domain.nil? + "https://groups.google.com/forum/?_escaped_fragment_=categories" + else + "https://groups.google.com/a/#{@domain}/forum/?_escaped_fragment_=categories" + end +end + def crawl_categories 1.step(nil, 100).each do |start| - url = "https://groups.google.com/forum/?_escaped_fragment_=categories/#{@groupname}[#{start}-#{start + 99}]" + url = "#{base_url}/#{@groupname}[#{start}-#{start + 99}]" get(url) + begin + if start == 1 && find("h2").text == "Error 403" + exit_with_error(<<~MSG.red.bold) + Unable to find topics. Try running the script with the "--domain example.com" + option if you are a G Suite user and your group's URL contains a path with + your domain that looks like "/a/example.com". + MSG + end + rescue Selenium::WebDriver::Error::NoSuchElementError + # Ignore this error. It simply means there wasn't an error. + end + topic_urls = extract(".subject a[href*='#{@groupname}']") { |a| a["href"].sub("/d/topic/", "/forum/?_escaped_fragment_=topic/") } break if topic_urls.size == 0 @@ -208,6 +228,7 @@ def parse_arguments opts.banner = "Usage: google_groups.rb [options]" opts.on("-g", "--groupname GROUPNAME") { |v| @groupname = v } + opts.on("-d", "--domain DOMAIN") { |v| @domain = v } opts.on("-c", "--cookies PATH", "path to cookies.txt") { |v| @cookies = v } opts.on("--path PATH", "output path for emails") { |v| @path = v } opts.on("-f", "--force", "force import when user isn't allowed to see email addresses") { @force_import = true } From 7371b427cd6f0d082fa042a696afea000fb8ed47 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 28 Nov 2019 13:13:13 +1100 Subject: [PATCH 326/408] DEV: correct a few Ruby 2.7 deprecations Note: ``` def foo(bar: 1) end foo({bar: 2}) # raises a deprecation, instead use: foo(**{bar: 2}) ``` Additionally when matching regexes always use strings. It does not make sense to match a non string to a regex. --- app/controllers/metadata_controller.rb | 8 +++++++- app/controllers/reviewables_controller.rb | 4 ++-- app/controllers/topics_controller.rb | 2 +- app/models/remote_theme.rb | 2 +- lib/user_name_suggester.rb | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/controllers/metadata_controller.rb b/app/controllers/metadata_controller.rb index 279cb99345..279bdfea1b 100644 --- a/app/controllers/metadata_controller.rb +++ b/app/controllers/metadata_controller.rb @@ -25,7 +25,13 @@ class MetadataController < ApplicationController private def default_manifest - display = Regexp.new(SiteSetting.pwa_display_browser_regex).match(request.user_agent) ? 'browser' : 'standalone' + display = "standalone" + if request.user_agent + regex = Regexp.new(SiteSetting.pwa_display_browser_regex) + if regex.match(request.user_agent) + display = "browser" + end + end manifest = { name: SiteSetting.title, diff --git a/app/controllers/reviewables_controller.rb b/app/controllers/reviewables_controller.rb index 83738cb21d..ce5c2cd29e 100644 --- a/app/controllers/reviewables_controller.rb +++ b/app/controllers/reviewables_controller.rb @@ -33,8 +33,8 @@ class ReviewablesController < ApplicationController filters[filter_key] = params[filter_key] end - total_rows = Reviewable.list_for(current_user, filters).count - reviewables = Reviewable.list_for(current_user, filters.merge(limit: PER_PAGE, offset: offset)).to_a + total_rows = Reviewable.list_for(current_user, **filters).count + reviewables = Reviewable.list_for(current_user, **filters.merge(limit: PER_PAGE, offset: offset)).to_a claimed_topics = ReviewableClaimedTopic.claimed_hash(reviewables.map { |r| r.topic_id }.uniq) diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index 971974e95d..e5989bc139 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -449,7 +449,7 @@ class TopicsController < ApplicationController topic_status_update = topic.set_or_create_timer( status_type, params[:time], - options + **options ) if topic.save diff --git a/app/models/remote_theme.rb b/app/models/remote_theme.rb index c2cd50fbcf..e278da0ddb 100644 --- a/app/models/remote_theme.rb +++ b/app/models/remote_theme.rb @@ -146,7 +146,7 @@ class RemoteTheme < ActiveRecord::Base importer.all_files.each do |filename| next unless opts = ThemeField.opts_from_file_path(filename) value = importer[filename] - updated_fields << theme.set_field(opts.merge(value: value)) + updated_fields << theme.set_field(**opts.merge(value: value)) end # Destroy fields that no longer exist in the remote theme diff --git a/lib/user_name_suggester.rb b/lib/user_name_suggester.rb index d849816cc9..2f7c7c920a 100644 --- a/lib/user_name_suggester.rb +++ b/lib/user_name_suggester.rb @@ -11,7 +11,7 @@ module UserNameSuggester end def self.parse_name_from_email(name_or_email) - return name_or_email if name_or_email !~ User::EMAIL + return name_or_email if name_or_email.to_s !~ User::EMAIL # When 'walter@white.com' take 'walter' name = Regexp.last_match[1] From b1207289992c752d55abbbbf7215fa37a0a5b2b2 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Thu, 28 Nov 2019 16:19:01 +1100 Subject: [PATCH 327/408] FEATURE: Ability to add components to all themes (#8404) * FEATURE: Ability to add components to all themes This is the first and functional step from that topic https://dev.discourse.org/t/adding-a-theme-component-is-too-much-work/15398/16 The idea here is that when a new component is added, the user can easily assign it to all themes (parents). To achieve that, I needed to change a site-setting component to accept `setDefaultValues` action and `setDefaultValuesLabel` translated label. Also, I needed to add `allowAny` option to disable that for theme selector. I also refactored backend to accept both parent and child ids with one method to avoid duplication (Renamed `add_child_theme!` to more general `add_relative_theme!`) * FIX: Improvement after code review * FIX: Improvement after code review2 * FIX: use mapBy and filterBy directly --- .../theme-setting-relatives-selector.js.es6 | 26 ++++++++++++ .../admin-customize-themes-show.js.es6 | 35 ++++++++++++++-- .../admin/mixins/setting-component.js.es6 | 16 ++++++-- .../javascripts/admin/models/theme.js.es6 | 9 +++++ .../templates/components/site-setting.hbs | 5 ++- .../components/site-settings/compact-list.hbs | 2 +- .../admin/templates/customize-themes-show.hbs | 17 ++++++-- .../stylesheets/common/admin/customize.scss | 3 ++ app/controllers/admin/themes_controller.rb | 40 +++++++++++++------ app/models/theme.rb | 9 ++++- config/locales/client.en.yml | 2 + spec/components/guardian_spec.rb | 2 +- spec/components/stylesheet/importer_spec.rb | 2 +- spec/components/stylesheet/manager_spec.rb | 4 +- spec/components/svg_sprite/svg_sprite_spec.rb | 2 +- spec/models/theme_spec.rb | 23 ++++++----- spec/requests/admin/themes_controller_spec.rb | 10 +++++ spec/requests/application_controller_spec.rb | 2 +- spec/services/user_updater_spec.rb | 2 +- 19 files changed, 168 insertions(+), 43 deletions(-) create mode 100644 app/assets/javascripts/admin/components/theme-setting-relatives-selector.js.es6 diff --git a/app/assets/javascripts/admin/components/theme-setting-relatives-selector.js.es6 b/app/assets/javascripts/admin/components/theme-setting-relatives-selector.js.es6 new file mode 100644 index 0000000000..8ba638076c --- /dev/null +++ b/app/assets/javascripts/admin/components/theme-setting-relatives-selector.js.es6 @@ -0,0 +1,26 @@ +import Component from "@ember/component"; +import BufferedContent from "discourse/mixins/buffered-content"; +import SettingComponent from "admin/mixins/setting-component"; + +export default Component.extend(BufferedContent, SettingComponent, { + layoutName: "admin/templates/components/site-setting", + + _save() { + return this.model + .save({ [this.setting.setting]: this.convertNamesToIds() }) + .then(() => this.store.findAll("theme")); + }, + + convertNamesToIds() { + return this.get("buffered.value") + .split("|") + .filter(Boolean) + .map(themeName => { + if (themeName !== "") { + return this.setting.allThemes.find(theme => theme.name === themeName) + .id; + } + return themeName; + }); + } +}); diff --git a/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 index acf195e3a9..a7308865ce 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 @@ -1,5 +1,11 @@ import { makeArray } from "discourse-common/lib/helpers"; -import { empty, notEmpty, match } from "@ember/object/computed"; +import { + empty, + filterBy, + match, + mapBy, + notEmpty +} from "@ember/object/computed"; import Controller from "@ember/controller"; import { default as discourseComputed } from "discourse-common/utils/decorators"; import { url } from "discourse/lib/computed"; @@ -15,6 +21,9 @@ export default Controller.extend({ previewUrl: url("model.id", "/admin/themes/%@/preview"), addButtonDisabled: empty("selectedChildThemeId"), editRouteName: "adminCustomizeThemes.edit", + parentThemesNames: mapBy("model.parentThemes", "name"), + availableParentThemes: filterBy("allThemes", "component", false), + availableThemesNames: mapBy("availableParentThemes", "name"), @discourseComputed("model.editedFields") editedFieldsFormatted() { @@ -50,6 +59,24 @@ export default Controller.extend({ } }, + @discourseComputed("model.parentThemes.[]") + relativesSelectorSettings() { + return Ember.Object.create({ + list_type: "compact", + type: "list", + preview: null, + anyValue: false, + setting: "parent_theme_ids", + label: I18n.t("admin.customize.theme.component_on_themes"), + choices: this.availableThemesNames, + default: this.parentThemesNames.join("|"), + value: this.parentThemesNames.join("|"), + defaultValues: this.availableThemesNames.join("|"), + allThemes: this.allThemes, + setDefaultValuesLabel: I18n.t("admin.customize.theme.add_all_themes") + }); + }, + @discourseComputed("allThemes", "model.component", "model") availableChildThemes(allThemes) { if (!this.get("model.component")) { @@ -241,7 +268,7 @@ export default Controller.extend({ addChildTheme() { let themeId = parseInt(this.selectedChildThemeId, 10); let theme = this.allThemes.findBy("id", themeId); - this.model.addChildTheme(theme); + this.model.addChildTheme(theme).then(() => this.store.findAll("theme")); }, removeUpload(upload) { @@ -258,7 +285,9 @@ export default Controller.extend({ }, removeChildTheme(theme) { - this.model.removeChildTheme(theme); + this.model + .removeChildTheme(theme) + .then(() => this.store.findAll("theme")); }, destroy() { diff --git a/app/assets/javascripts/admin/mixins/setting-component.js.es6 b/app/assets/javascripts/admin/mixins/setting-component.js.es6 index 6da9f010da..9cec819404 100644 --- a/app/assets/javascripts/admin/mixins/setting-component.js.es6 +++ b/app/assets/javascripts/admin/mixins/setting-component.js.es6 @@ -51,7 +51,6 @@ export default Mixin.create({ }); } } - let preview = setting.get("preview"); if (preview) { return new Handlebars.SafeString( @@ -67,9 +66,9 @@ export default Mixin.create({ return componentType.replace(/\_/g, "-"); }, - @discourseComputed("setting.setting") - settingName(setting) { - return setting.replace(/\_/g, " "); + @discourseComputed("setting.setting", "setting.label") + settingName(setting, label) { + return label || setting.replace(/\_/g, " "); }, @discourseComputed("type") @@ -91,6 +90,11 @@ export default Mixin.create({ return "site-settings/" + typeClass; }, + @discourseComputed("setting.anyValue") + allowAny(anyValue) { + return anyValue !== false; + }, + @discourseComputed("setting.default", "buffered.value") overridden(settingDefault, bufferedValue) { return settingDefault !== bufferedValue; @@ -209,6 +213,10 @@ export default Mixin.create({ toggleSecret() { this.toggleProperty("isSecret"); + }, + + setDefaultValues() { + this.set("buffered.value", this.get("setting.defaultValues")); } } }); diff --git a/app/assets/javascripts/admin/models/theme.js.es6 b/app/assets/javascripts/admin/models/theme.js.es6 index 94ccf5f9b0..fb00497c25 100644 --- a/app/assets/javascripts/admin/models/theme.js.es6 +++ b/app/assets/javascripts/admin/models/theme.js.es6 @@ -269,6 +269,15 @@ const Theme = RestModel.extend({ return this.saveChanges("child_theme_ids"); }, + addParentTheme(theme) { + let parentThemes = this.parentThemes; + if (!parentThemes) { + parentThemes = []; + this.set("parentThemes", parentThemes); + } + parentThemes.addObject(theme); + }, + @discourseComputed("name", "default") description: function(name, isDefault) { if (isDefault) { diff --git a/app/assets/javascripts/admin/templates/components/site-setting.hbs b/app/assets/javascripts/admin/templates/components/site-setting.hbs index 980c30986c..888a132a26 100644 --- a/app/assets/javascripts/admin/templates/components/site-setting.hbs +++ b/app/assets/javascripts/admin/templates/components/site-setting.hbs @@ -1,8 +1,11 @@

    {{unbound settingName}}

    + {{#if setting.defaultValues }} + {{setting.setDefaultValuesLabel}} + {{/if}}
    - {{component componentName setting=setting value=buffered.value validationMessage=validationMessage preview=preview isSecret=isSecret}} + {{component componentName setting=setting value=buffered.value validationMessage=validationMessage preview=preview isSecret=isSecret allowAny=allowAny}}
    {{#if dirty}}
    diff --git a/app/assets/javascripts/admin/templates/components/site-settings/compact-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/compact-list.hbs index e741bea5ed..551ca3d45d 100644 --- a/app/assets/javascripts/admin/templates/components/site-settings/compact-list.hbs +++ b/app/assets/javascripts/admin/templates/components/site-settings/compact-list.hbs @@ -1,3 +1,3 @@ -{{list-setting settingValue=value choices=setting.choices settingName=setting.setting}} +{{list-setting settingValue=value choices=setting.choices settingName=setting.setting allowAny=allowAny}} {{setting-validation-message message=validationMessage}}
    {{{unbound setting.description}}}
    diff --git a/app/assets/javascripts/admin/templates/customize-themes-show.hbs b/app/assets/javascripts/admin/templates/customize-themes-show.hbs index 4b28949ad2..c90e73e7a5 100644 --- a/app/assets/javascripts/admin/templates/customize-themes-show.hbs +++ b/app/assets/javascripts/admin/templates/customize-themes-show.hbs @@ -59,16 +59,16 @@ {{#if model.remote_theme.remote_url}} {{#if sourceIsHttp}} - {{i18n "admin.customize.theme.source_url"}} {{d-icon "link"}} + {{i18n "admin.customize.theme.source_url"}}{{d-icon "link"}} {{else}}
    {{model.remote_theme.remote_url}}
    {{/if}} {{/if}} {{#if model.remote_theme.about_url}} - {{i18n "admin.customize.theme.about_theme"}} {{d-icon "link"}} + {{i18n "admin.customize.theme.about_theme"}}{{d-icon "link"}} {{/if}} {{#if model.remote_theme.license_url}} - {{i18n "admin.customize.theme.license"}} {{d-icon "link"}} + {{i18n "admin.customize.theme.license"}}{{d-icon "link"}} {{/if}} {{#if model.description}} @@ -156,6 +156,17 @@
    {{/if}} + {{#if model.component }} +
    +
    {{i18n "admin.customize.theme.title"}}
    + {{#d-section class="form-horizontal theme settings"}} +
    + {{theme-setting-relatives-selector setting=relativesSelectorSettings model=model class="theme-setting"}} +
    + {{/d-section}} +
    + {{/if}} +
    {{i18n "admin.customize.theme.css_html"}}
    {{#if model.hasEditedFields}} diff --git a/app/assets/stylesheets/common/admin/customize.scss b/app/assets/stylesheets/common/admin/customize.scss index 4495cf2ded..d626ba2c8b 100644 --- a/app/assets/stylesheets/common/admin/customize.scss +++ b/app/assets/stylesheets/common/admin/customize.scss @@ -150,6 +150,9 @@ a.license-url { display: inline-block; margin-right: 10px; + .d-icon { + margin-left: 5px; + } } .mini-title { diff --git a/app/controllers/admin/themes_controller.rb b/app/controllers/admin/themes_controller.rb index 43df7efca4..9db615e519 100644 --- a/app/controllers/admin/themes_controller.rb +++ b/app/controllers/admin/themes_controller.rb @@ -176,19 +176,11 @@ class Admin::ThemesController < Admin::AdminController end if theme_params.key?(:child_theme_ids) - expected = theme_params[:child_theme_ids].map(&:to_i) + add_relative_themes!(:child, theme_params[:child_theme_ids]) + end - @theme.child_theme_relation.to_a.each do |child| - if expected.include?(child.child_theme_id) - expected.reject! { |id| id == child.child_theme_id } - else - child.destroy - end - end - - Theme.where(id: expected).each do |theme| - @theme.add_child_theme!(theme) - end + if theme_params.key?(:parent_theme_ids) + add_relative_themes!(:parent, theme_params[:parent_theme_ids]) end set_fields @@ -294,6 +286,26 @@ class Admin::ThemesController < Admin::AdminController private + def add_relative_themes!(kind, ids) + expected = ids.map(&:to_i) + + relation = kind == :child ? @theme.child_theme_relation : @theme.parent_theme_relation + + relation.to_a.each do |relative| + if kind == :child && expected.include?(relative.child_theme_id) + expected.reject! { |id| id == relative.child_theme_id } + elsif kind == :parent && expected.include?(relative.parent_theme_id) + expected.reject! { |id| id == relative.parent_theme_id } + else + relative.destroy + end + end + + Theme.where(id: expected).each do |theme| + @theme.add_relative_theme!(kind, theme) + end + end + def update_default_theme if theme_params.key?(:default) is_default = theme_params[:default].to_s == "true" @@ -310,6 +322,7 @@ class Admin::ThemesController < Admin::AdminController begin # deep munge is a train wreck, work around it for now params[:theme][:child_theme_ids] ||= [] if params[:theme].key?(:child_theme_ids) + params[:theme][:parent_theme_ids] ||= [] if params[:theme].key?(:parent_theme_ids) params.require(:theme).permit( :name, @@ -321,7 +334,8 @@ class Admin::ThemesController < Admin::AdminController settings: {}, translations: {}, theme_fields: [:name, :target, :value, :upload_id, :type_id], - child_theme_ids: [] + child_theme_ids: [], + parent_theme_ids: [] ) end end diff --git a/app/models/theme.rb b/app/models/theme.rb index 0597cda86f..f0476e67a9 100644 --- a/app/models/theme.rb +++ b/app/models/theme.rb @@ -376,10 +376,15 @@ class Theme < ActiveRecord::Base fields.values end - def add_child_theme!(theme) - new_relation = child_theme_relation.new(child_theme_id: theme.id) + def add_relative_theme!(kind, theme) + new_relation = if kind == :child + child_theme_relation.new(child_theme_id: theme.id) + else + parent_theme_relation.new(parent_theme_id: theme.id) + end if new_relation.save child_themes.reload + parent_themes.reload save! Theme.clear_cache! else diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 87879ab05c..477d7c86c9 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -3590,6 +3590,7 @@ en: color_scheme_select: "Select colors to be used by theme" custom_sections: "Custom sections:" theme_components: "Theme Components" + add_all_themes: "Add all themes" convert: "Convert" convert_component_alert: "Are you sure you want to convert this component to theme? It will be removed as a component from %{relatives}." convert_component_tooltip: "Convert this component to theme" @@ -3622,6 +3623,7 @@ en: edit_css_html: "Edit CSS/HTML" edit_css_html_help: "You have not edited any CSS or HTML" delete_upload_confirm: "Delete this upload? (Theme CSS may stop working!)" + component_on_themes: "Include component on these themes" import_web_tip: "Repository containing theme" import_web_advanced: "Advanced..." import_file_tip: ".tar.gz, .zip, or .dcstyle.json file containing theme" diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index 34a2eae70e..46ef188bcc 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -2890,7 +2890,7 @@ describe Guardian do expect(user_guardian.allow_themes?([theme.id, theme2.id])).to eq(false) theme2.update!(user_selectable: false, component: true) - theme.add_child_theme!(theme2) + theme.add_relative_theme!(:child, theme2) expect(user_guardian.allow_themes?([theme.id, theme2.id])).to eq(true) expect(user_guardian.allow_themes?([theme2.id])).to eq(false) end diff --git a/spec/components/stylesheet/importer_spec.rb b/spec/components/stylesheet/importer_spec.rb index f143bd0b39..21c70032fc 100644 --- a/spec/components/stylesheet/importer_spec.rb +++ b/spec/components/stylesheet/importer_spec.rb @@ -74,7 +74,7 @@ describe Stylesheet::Importer do t.component = true t.set_field(target: :extra_scss, name: "my_files/moremagic", value: child_scss) t.save! - theme.add_child_theme!(t) + theme.add_relative_theme!(:child, t) }} let(:importer) { described_class.new(theme: theme) } diff --git a/spec/components/stylesheet/manager_spec.rb b/spec/components/stylesheet/manager_spec.rb index 95ca08b6ab..9b782657e2 100644 --- a/spec/components/stylesheet/manager_spec.rb +++ b/spec/components/stylesheet/manager_spec.rb @@ -40,7 +40,7 @@ describe Stylesheet::Manager do child_theme.set_field(target: :common, name: "embedded_scss", value: ".child_embedded{.scss{color: red;}}") child_theme.save! - theme.add_child_theme!(child_theme) + theme.add_relative_theme!(:child, child_theme) old_link = Stylesheet::Manager.stylesheet_link_tag(:desktop_theme, 'all', theme.id) @@ -88,7 +88,7 @@ describe Stylesheet::Manager do it "can correctly account for settings in theme's components" do theme = Fabricate(:theme) child = Fabricate(:theme, component: true) - theme.add_child_theme!(child) + theme.add_relative_theme!(:child, child) child.set_field(target: :settings, name: :yaml, value: "childcolor: red") child.set_field(target: :common, name: :scss, value: "body {background-color: $childcolor}") diff --git a/spec/components/svg_sprite/svg_sprite_spec.rb b/spec/components/svg_sprite/svg_sprite_spec.rb index 2885699b4a..f8acc0028b 100644 --- a/spec/components/svg_sprite/svg_sprite_spec.rb +++ b/spec/components/svg_sprite/svg_sprite_spec.rb @@ -138,7 +138,7 @@ describe SvgSprite do theme.update(component: true) theme.save! parent_theme = Fabricate(:theme) - parent_theme.add_child_theme!(theme) + parent_theme.add_relative_theme!(:child, theme) expect(SvgSprite.all_icons([parent_theme.id])).to include("dragon") end diff --git a/spec/models/theme_spec.rb b/spec/models/theme_spec.rb index c7fa086ade..ae162773e3 100644 --- a/spec/models/theme_spec.rb +++ b/spec/models/theme_spec.rb @@ -53,12 +53,17 @@ describe Theme do parent.save! - parent.add_child_theme!(child) + parent.add_relative_theme!(:child, child) expect(Theme.lookup_field(parent.id, :mobile, "header")).to eq("Common Parent\nMobile Parent\nWorldie\nMobile") end + it 'can support parent themes' do + child.add_relative_theme!(:parent, theme) + expect(child.parent_themes).to eq([theme]) + end + it "can automatically disable for mismatching version" do expect(theme.supported?).to eq(true) theme.create_remote_theme!(remote_url: "", minimum_discourse_version: "99.99.99") @@ -74,7 +79,7 @@ describe Theme do end it '#transform_ids filters out disabled components' do - theme.add_child_theme!(child) + theme.add_relative_theme!(:child, child) expect(Theme.transform_ids([theme.id], extend: true)).to eq([theme.id, child.id]) child.update!(enabled: false) expect(Theme.transform_ids([theme.id], extend: true)).to eq([theme.id]) @@ -85,11 +90,11 @@ describe Theme do grandparent = Fabricate(:theme, user: user) expect do - child.add_child_theme!(grandchild) + child.add_relative_theme!(:child, grandchild) end.to raise_error(Discourse::InvalidParameters, I18n.t("themes.errors.no_multilevels_components")) expect do - grandparent.add_child_theme!(theme) + grandparent.add_relative_theme!(:child, theme) end.to raise_error(Discourse::InvalidParameters, I18n.t("themes.errors.no_multilevels_components")) end @@ -198,7 +203,7 @@ HTML describe "#switch_to_component!" do it "correctly converts a theme to component" do - theme.add_child_theme!(child) + theme.add_relative_theme!(:child, child) scheme = ColorScheme.create!(name: 'test') theme.update!(color_scheme_id: scheme.id, user_selectable: true) theme.set_default! @@ -216,7 +221,7 @@ HTML describe "#switch_to_theme!" do it "correctly converts a component to theme" do - theme.add_child_theme!(child) + theme.add_relative_theme!(:child, child) child.switch_to_theme! theme.reload @@ -236,8 +241,8 @@ HTML let!(:orphan4) { Fabricate(:theme, component: true) } before do - theme.add_child_theme!(child) - theme.add_child_theme!(child2) + theme.add_relative_theme!(:child, child) + theme.add_relative_theme!(:child, child2) end it "returns an empty array if no ids are passed" do @@ -575,7 +580,7 @@ HTML child.set_field(target: :settings, name: "yaml", value: "integer_setting: 54") child.save! - theme.add_child_theme!(child) + theme.add_relative_theme!(:child, child) json = cached_settings(theme.id) expect(json).to match(/\"boolean_setting\":false/) diff --git a/spec/requests/admin/themes_controller_spec.rb b/spec/requests/admin/themes_controller_spec.rb index 4be50292ec..edba250cf7 100644 --- a/spec/requests/admin/themes_controller_spec.rb +++ b/spec/requests/admin/themes_controller_spec.rb @@ -321,6 +321,16 @@ describe Admin::ThemesController do expect(UserHistory.where(action: UserHistory.actions[:change_theme]).count).to eq(1) end + it 'updates a child theme' do + child_theme = Fabricate(:theme, component: true) + put "/admin/themes/#{child_theme.id}.json", params: { + theme: { + parent_theme_ids: [theme.id], + } + } + expect(child_theme.parent_themes).to eq([theme]) + end + it 'can update translations' do theme.set_field(target: :translations, name: :en, value: { en: { somegroup: { somestring: "defaultstring" } } }.deep_stringify_keys.to_yaml) theme.save! diff --git a/spec/requests/application_controller_spec.rb b/spec/requests/application_controller_spec.rb index 372d1cf78f..bfc4c44066 100644 --- a/spec/requests/application_controller_spec.rb +++ b/spec/requests/application_controller_spec.rb @@ -374,7 +374,7 @@ RSpec.describe ApplicationController do expect(controller.theme_ids).to eq([theme2.id]) theme2.update!(user_selectable: false, component: true) - theme.add_child_theme!(theme2) + theme.add_relative_theme!(:child, theme2) cookies['theme_ids'] = "#{theme.id},#{theme2.id}|#{user.user_option.theme_key_seq}" get "/" diff --git a/spec/services/user_updater_spec.rb b/spec/services/user_updater_spec.rb index 52dc56b5ef..c6a9194e7c 100644 --- a/spec/services/user_updater_spec.rb +++ b/spec/services/user_updater_spec.rb @@ -225,7 +225,7 @@ describe UserUpdater do theme = Fabricate(:theme) child = Fabricate(:theme, component: true) - theme.add_child_theme!(child) + theme.add_relative_theme!(:child, child) theme.set_default! updater.update(theme_ids: [theme.id.to_s, child.id.to_s, "", nil]) From 700bd280e45de7811145aca609847f84e4219c35 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 28 Nov 2019 06:29:17 +0100 Subject: [PATCH 328/408] FIX: adds data-topic-id to quick-access-item (#8422) This fix will allow discourse-encrypt to decrypt messages titles of the quick-access-pannel for PMs --- .../discourse/widgets/quick-access-item.js.es6 | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 b/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 index a37200e595..a9c2706769 100644 --- a/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 +++ b/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 @@ -33,11 +33,19 @@ createWidget("quick-access-item", { return result; }, - html({ icon, href }) { + html({ href, icon }) { + let content = this._contentHtml(); + + let topicId = href.match(/\/t\/.*?\/(\d+)/); + if (topicId && topicId[1]) { + topicId = escapeExpression(topicId[1]); + content = `${content}`; + } + return h("a", { attributes: { href } }, [ iconNode(icon), new RawHtml({ - html: `
    ${this._usernameHtml()}${this._contentHtml()}
    ` + html: `
    ${this._usernameHtml()}${content}
    ` }) ]); }, From d10f55c3e93fcb4b24fbc92f6dd4bf31f5c8ef82 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 28 Nov 2019 16:38:26 +1100 Subject: [PATCH 329/408] Revert "FIX: adds data-topic-id to quick-access-item (#8422)" This reverts commit 700bd280e45de7811145aca609847f84e4219c35. Oops looks like this breaks tests: ``` Module Failed: widget:quick-access-item Test Failed: escapedContent attribute is not escaped Assertion Failed: TypeError: Cannot read property 'match' of undefined Expected: true, Actual: false Test Failed: anonymous Assertion Failed: failed, expected argument to be truthy, was: 0 Expected: true, Actual: 0 Assertion Failed: Element .enable-anonymous not found. Test Failed: anonymous - switch back Assertion Failed: failed, expected argument to be truthy, was: 0 Expected: true, Actual: 0 Assertion Failed: Element .disable-anonymous not found. Test Failed: log out Assertion Failed: failed, expected argument to be truthy, was: 0 Expected: true, Actual: 0 Assertion Failed: Element .logout not found. Test Failed: content attribute is escaped Assertion Failed: TypeError: Cannot read property 'match' of undefined Expected: true, Actual: false ``` --- .../discourse/widgets/quick-access-item.js.es6 | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 b/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 index a9c2706769..a37200e595 100644 --- a/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 +++ b/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 @@ -33,19 +33,11 @@ createWidget("quick-access-item", { return result; }, - html({ href, icon }) { - let content = this._contentHtml(); - - let topicId = href.match(/\/t\/.*?\/(\d+)/); - if (topicId && topicId[1]) { - topicId = escapeExpression(topicId[1]); - content = `${content}`; - } - + html({ icon, href }) { return h("a", { attributes: { href } }, [ iconNode(icon), new RawHtml({ - html: `
    ${this._usernameHtml()}${content}
    ` + html: `
    ${this._usernameHtml()}${this._contentHtml()}
    ` }) ]); }, From 7fc99f5e7b4fb4b60c778c5458e32853e00e8063 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 28 Nov 2019 10:51:08 +0100 Subject: [PATCH 330/408] UX: do not show shadow on hover images on touch devices (#8429) --- .../stylesheets/common/base/lightbox.scss | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/assets/stylesheets/common/base/lightbox.scss b/app/assets/stylesheets/common/base/lightbox.scss index 465d2c49b2..b15a724b2a 100644 --- a/app/assets/stylesheets/common/base/lightbox.scss +++ b/app/assets/stylesheets/common/base/lightbox.scss @@ -73,15 +73,17 @@ $meta-element-margin: 6px; margin: auto; } -@if is-light-color-scheme() { - a.lightbox { - -webkit-transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); - transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); - } +.discourse-no-touch { + @if is-light-color-scheme() { + a.lightbox { + -webkit-transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + transition: all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + } - a.lightbox:hover { - border-radius: 5px; - box-shadow: 0 2px 5px 0 rgba($primary, 0.2), - 0 2px 10px 0 rgba($primary, 0.2); + a.lightbox:hover { + border-radius: 5px; + box-shadow: 0 2px 5px 0 rgba($primary, 0.2), + 0 2px 10px 0 rgba($primary, 0.2); + } } } From e92e06c3a7006a97bc09c90f40afc4a7452709ca Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 28 Nov 2019 11:27:36 +0100 Subject: [PATCH 331/408] FIX: adds data-topic-id to quick-access-item (#8430) This fix will allow discourse-encrypt to decrypt messages titles of the quick-access-pannel for PMs --- .../discourse/widgets/quick-access-item.js.es6 | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 b/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 index a37200e595..46b209d1af 100644 --- a/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 +++ b/app/assets/javascripts/discourse/widgets/quick-access-item.js.es6 @@ -33,11 +33,21 @@ createWidget("quick-access-item", { return result; }, - html({ icon, href }) { + html({ href, icon }) { + let content = this._contentHtml(); + + if (href) { + let topicId = href.match(/\/t\/.*?\/(\d+)/); + if (topicId && topicId[1]) { + topicId = escapeExpression(topicId[1]); + content = `${content}`; + } + } + return h("a", { attributes: { href } }, [ iconNode(icon), new RawHtml({ - html: `
    ${this._usernameHtml()}${this._contentHtml()}
    ` + html: `
    ${this._usernameHtml()}${content}
    ` }) ]); }, From 0911a9202e2417b43a1df247691c8187add81294 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Thu, 28 Nov 2019 16:46:14 +0100 Subject: [PATCH 332/408] FIX: Make sure the suspended status is up to date (#8432) Continuation of #8206 The returned suspend attribute was overwriting a computed property, which made the user admin page go out of sync. Fixes a computed-property.override deprecation (https://emberjs.com/deprecations/v3.x#toc_computed-property-override) --- app/serializers/admin_user_list_serializer.rb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/serializers/admin_user_list_serializer.rb b/app/serializers/admin_user_list_serializer.rb index e670cd767f..5e1363f108 100644 --- a/app/serializers/admin_user_list_serializer.rb +++ b/app/serializers/admin_user_list_serializer.rb @@ -23,7 +23,6 @@ class AdminUserListSerializer < BasicUserSerializer :approved, :suspended_at, :suspended_till, - :suspended, :silenced, :silenced_till, :time_read, @@ -62,10 +61,6 @@ class AdminUserListSerializer < BasicUserSerializer object.silenced_till? end - def suspended - object.suspended? - end - def include_suspended_at? object.suspended? end From 6431daaa2ee7dee5104f65bf34c39127ff8be62d Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 28 Nov 2019 11:34:40 +0000 Subject: [PATCH 333/408] DEV: Rename dynamic segment to snake case to fit with Ember convention --- .../discourse/routes/app-route-map.js.es6 | 16 ++++++++-------- .../discourse/routes/build-category-route.js.es6 | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/discourse/routes/app-route-map.js.es6 b/app/assets/javascripts/discourse/routes/app-route-map.js.es6 index dc8cdf92f6..dfcbfef9b3 100644 --- a/app/assets/javascripts/discourse/routes/app-route-map.js.es6 +++ b/app/assets/javascripts/discourse/routes/app-route-map.js.es6 @@ -28,9 +28,9 @@ export default function() { // top this.route("top"); this.route("topCategoryNone", { - path: "/c/*categorySlugPathWithID/none/l/top" + path: "/c/*category_slug_path_with_id/none/l/top" }); - this.route("topCategory", { path: "/c/*categorySlugPathWithID/l/top" }); + this.route("topCategory", { path: "/c/*category_slug_path_with_id/l/top" }); // top by periods Site.currentProp("periods").forEach(period => { @@ -41,10 +41,10 @@ export default function() { this.route(top, { path: "/top/" + period }); this.route(top + "CategoryNone", { - path: "/c/*categorySlugPathWithID/none/l/top/" + period + path: "/c/*category_slug_path_with_id/none/l/top/" + period }); this.route(top + "Category", { - path: "/c/*categorySlugPathWithID/l/top/" + period + path: "/c/*category_slug_path_with_id/l/top/" + period }); }); @@ -55,10 +55,10 @@ export default function() { this.route(filter, { path: "/" + filter }); this.route(filter + "CategoryNone", { - path: "/c/*categorySlugPathWithID/none/l/" + filter + path: "/c/*category_slug_path_with_id/none/l/" + filter }); this.route(filter + "Category", { - path: "/c/*categorySlugPathWithID/l/" + filter + path: "/c/*category_slug_path_with_id/l/" + filter }); }); @@ -69,8 +69,8 @@ export default function() { this.route("categoryWithID", { path: "/c/:parentSlug/:slug/:id" }); // default filter for a category - this.route("categoryNone", { path: "/c/*categorySlugPathWithID/none" }); - this.route("category", { path: "/c/*categorySlugPathWithID" }); + this.route("categoryNone", { path: "/c/*category_slug_path_with_id/none" }); + this.route("category", { path: "/c/*category_slug_path_with_id" }); }); this.route("groups", { resetNamespace: true, path: "/g" }, function() { diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index c7cb74613c..ca2a476538 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -17,8 +17,8 @@ export default (filterArg, params) => { queryParams, serialize(modelParams) { - if (!modelParams.categorySlugPathWithID) { - modelParams.categorySlugPathWithID = [ + if (!modelParams.category_slug_path_with_id) { + modelParams.category_slug_path_with_id = [ modelParams.parentSlug, modelParams.slug, modelParams.id @@ -33,7 +33,7 @@ export default (filterArg, params) => { model(modelParams) { modelParams = this.serialize(modelParams); - const parts = modelParams.categorySlugPathWithID.split("/"); + const parts = modelParams.category_slug_path_with_id.split("/"); let category = null; if (parts.length > 0 && parts[parts.length - 1].match(/^\d+$/)) { From 4eb8d1e71727e71c7f5ac892425a8e66c878964c Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 28 Nov 2019 15:51:18 +0000 Subject: [PATCH 334/408] FIX: fix typo --- .../javascripts/discourse/routes/build-category-route.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index ca2a476538..bdd98751b5 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -39,7 +39,7 @@ export default (filterArg, params) => { if (parts.length > 0 && parts[parts.length - 1].match(/^\d+$/)) { const id = parseInt(parts.pop(), 10); - category = Category.findByID(id); + category = Category.findById(id); } else { const [slug, parentSlug] = [...parts].reverse(); @@ -52,7 +52,7 @@ export default (filterArg, params) => { ) { const id = parseInt(parts.pop(), 10); - category = Category.findByID(id); + category = Category.findById(id); } } From 11a73b3f155ed82676ab7770eb99f5dd8c88f84f Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Thu, 28 Nov 2019 10:54:06 +0000 Subject: [PATCH 335/408] DEV: Client side routing for routes with tag and category context This moves also moves some of the logic to Category. --- .../discourse/models/category.js.es6 | 52 +++++++++++++++++++ .../discourse/routes/app-route-map.js.es6 | 16 +++--- .../routes/build-category-route.js.es6 | 25 ++------- .../discourse/routes/tags-show.js.es6 | 37 ++++++------- 4 files changed, 77 insertions(+), 53 deletions(-) diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 2de39b44e4..57d8f2dcc6 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -287,6 +287,58 @@ Category.reopenClass({ return categories; }, + findBySlugAndParent(slug, parentCategory) { + return Category.list().find(category => { + if (Discourse.SiteSettings.slug_generation_method === "encoded") { + slug = encodeURI(slug); + } + + return ( + category.slug === slug && + (category.parentCategory || null) === parentCategory + ); + }); + }, + + findBySlugPath(slugPath) { + let category = null; + + for (const slug of slugPath) { + category = this.findBySlugAndParent(slug, category); + + if (!category) { + return null; + } + } + + return category; + }, + + findBySlugPathWithID(slugPathWithID) { + const parts = slugPathWithID.split("/"); + let category = null; + + if (parts.length > 0 && parts[parts.length - 1].match(/^\d+$/)) { + const id = parseInt(parts.pop(), 10); + + category = Category.findById(id); + } else { + category = Category.findBySlugPath(parts); + + if ( + !category && + parts.length > 0 && + parts[parts.length - 1].match(/^\d+-/) + ) { + const id = parseInt(parts.pop(), 10); + + category = Category.findById(id); + } + } + + return category; + }, + findBySlug(slug, parentSlug) { const categories = Category.list(); let category; diff --git a/app/assets/javascripts/discourse/routes/app-route-map.js.es6 b/app/assets/javascripts/discourse/routes/app-route-map.js.es6 index dfcbfef9b3..3dc0d5787a 100644 --- a/app/assets/javascripts/discourse/routes/app-route-map.js.es6 +++ b/app/assets/javascripts/discourse/routes/app-route-map.js.es6 @@ -211,10 +211,11 @@ export default function() { this.route("tags", { resetNamespace: true }, function() { this.route("show", { path: "/:tag_id" }); - this.route("showCategory", { path: "/c/:category/:tag_id" }); - this.route("showCategoryNone", { path: "/c/:category/none/:tag_id" }); - this.route("showParentCategory", { - path: "/c/:parent_category/:category/:tag_id" + this.route("showCategory", { + path: "/c/*category_slug_path_with_id/:tag_id" + }); + this.route("showCategoryNone", { + path: "/c/*category_slug_path_with_id/none/:tag_id" }); Site.currentProp("filters").forEach(filter => { @@ -222,13 +223,10 @@ export default function() { path: "/:tag_id/l/" + filter }); this.route("showCategory" + filter.capitalize(), { - path: "/c/:category/:tag_id/l/" + filter + path: "/c/*category_slug_path_with_id/:tag_id/l/" + filter }); this.route("showCategoryNone" + filter.capitalize(), { - path: "/c/:category/none/:tag_id/l/" + filter - }); - this.route("showParentCategory" + filter.capitalize(), { - path: "/c/:parent_category/:category/:tag_id/l/" + filter + path: "/c/*category_slug_path_with_id/none/:tag_id/l/" + filter }); }); this.route("intersection", { diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index bdd98751b5..e487570d5a 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -33,28 +33,9 @@ export default (filterArg, params) => { model(modelParams) { modelParams = this.serialize(modelParams); - const parts = modelParams.category_slug_path_with_id.split("/"); - let category = null; - - if (parts.length > 0 && parts[parts.length - 1].match(/^\d+$/)) { - const id = parseInt(parts.pop(), 10); - - category = Category.findById(id); - } else { - const [slug, parentSlug] = [...parts].reverse(); - - category = Category.findBySlug(slug, parentSlug); - - if ( - !category && - parts.length > 0 && - parts[parts.length - 1].match(/^\d+-/) - ) { - const id = parseInt(parts.pop(), 10); - - category = Category.findById(id); - } - } + const category = Category.findBySlugPathWithID( + modelParams.category_slug_path_with_id + ); if (category) { return { category }; diff --git a/app/assets/javascripts/discourse/routes/tags-show.js.es6 b/app/assets/javascripts/discourse/routes/tags-show.js.es6 index 2e340267a2..8616b6959d 100644 --- a/app/assets/javascripts/discourse/routes/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/routes/tags-show.js.es6 @@ -39,12 +39,7 @@ export default DiscourseRoute.extend(FilterModeMixin, { this.set("filterType", this.navMode.split("/")[0]); - if (params.category) { - this.set("categorySlug", params.category); - } - if (params.parent_category) { - this.set("parentCategorySlug", params.parent_category); - } + this.set("categorySlugPathWithID", params.category_slug_path_with_id); if (tag && tag.get("id") !== "none" && this.currentUser) { // If logged in, we should get the tag's user settings @@ -64,31 +59,29 @@ export default DiscourseRoute.extend(FilterModeMixin, { controller.set("loading", true); const params = filterQueryParams(transition.to.queryParams, {}); - const categorySlug = this.categorySlug; - const parentCategorySlug = this.parentCategorySlug; + const category = this.categorySlugPathWithID + ? Category.findBySlugPathWithID(this.categorySlugPathWithID) + : null; const topicFilter = this.navMode; const tagId = tag ? tag.id.toLowerCase() : "none"; let filter; - if (categorySlug) { - const category = Category.findBySlug(categorySlug, parentCategorySlug); - if (parentCategorySlug) { - filter = `tags/c/${parentCategorySlug}/${categorySlug}/${tagId}/l/${topicFilter}`; - } else if (this.noSubcategories) { - filter = `tags/c/${categorySlug}/none/${tagId}/l/${topicFilter}`; - } else { - filter = `tags/c/${categorySlug}/${tagId}/l/${topicFilter}`; - } - if (category) { - category.setupGroupsAndPermissions(); - this.set("category", category); + if (category) { + category.setupGroupsAndPermissions(); + this.set("category", category); + filter = `tags/c/${Category.slugFor(category)}`; + + if (this.noSubcategories) { + filter += "/none"; } + + filter += `/${tagId}/l/${topicFilter}`; } else if (this.additionalTags) { + this.set("category", null); filter = `tags/intersection/${tagId}/${this.additionalTags.join("/")}`; - this.set("category", null); } else { - filter = `tags/${tagId}/l/${topicFilter}`; this.set("category", null); + filter = `tags/${tagId}/l/${topicFilter}`; } return findTopicList(this.store, this.topicTrackingState, filter, params, { From 6005fadacaccd27386a7e01d6acc850d6b3bda20 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Fri, 29 Nov 2019 12:41:42 +1100 Subject: [PATCH 336/408] FIX: add a unique index to developers table (#8436) --- ...28222140_add_unique_index_to_developers.rb | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 db/migrate/20191128222140_add_unique_index_to_developers.rb diff --git a/db/migrate/20191128222140_add_unique_index_to_developers.rb b/db/migrate/20191128222140_add_unique_index_to_developers.rb new file mode 100644 index 0000000000..d839b15770 --- /dev/null +++ b/db/migrate/20191128222140_add_unique_index_to_developers.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class AddUniqueIndexToDevelopers < ActiveRecord::Migration[6.0] + def up + execute <<~SQL + DELETE FROM developers d1 + USING ( + SELECT MAX(id) as id, user_id + FROM developers + GROUP BY user_id + HAVING COUNT(*) > 1 + ) d2 + WHERE + d1.user_id = d2.user_id AND + d1.id <> d2.id + SQL + + add_index :developers, %i(user_id), unique: true + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end From 8237e0e0012ede79a4467d40410ee2358893e727 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Fri, 29 Nov 2019 13:07:24 +0530 Subject: [PATCH 337/408] UX: show group full name even when title is same. (#8437) --- .../javascripts/discourse/components/groups-info.js.es6 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/components/groups-info.js.es6 b/app/assets/javascripts/discourse/components/groups-info.js.es6 index 336e826b80..18f86c829d 100644 --- a/app/assets/javascripts/discourse/components/groups-info.js.es6 +++ b/app/assets/javascripts/discourse/components/groups-info.js.es6 @@ -5,8 +5,8 @@ export default Component.extend({ tagName: "span", classNames: ["group-info-details"], - @discourseComputed("group.full_name", "group.title") - showFullName(fullName, title) { - return fullName && fullName.length && fullName !== title; + @discourseComputed("group.full_name") + showFullName(fullName) { + return fullName && fullName.length; } }); From 1e0c2235a3d5417d44dfc8eeb8490fa947181488 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Fri, 29 Nov 2019 15:18:42 +0200 Subject: [PATCH 338/408] FIX: Optimize quoted images (#8427) Only images that were part of a lightbox used to be optimized. This patch ensures that quoted images are also optimized. --- lib/cooked_post_processor.rb | 72 +++++++++---------- spec/components/cooked_post_processor_spec.rb | 34 +++++++++ 2 files changed, 69 insertions(+), 37 deletions(-) diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index acb8035524..82e2646840 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -208,9 +208,7 @@ class CookedPostProcessor # minus emojis @doc.css("img.emoji") - # minus oneboxed images - oneboxed_images - - # minus images inside quotes - @doc.css(".quote img") + oneboxed_images end def extract_images_for_post @@ -348,7 +346,8 @@ class CookedPostProcessor end end - add_lightbox!(img, original_width, original_height, upload, cropped: crop) + add_lightbox!(img, original_width, original_height, upload, cropped: crop) if img.ancestors('.quote').blank? + optimize_image!(img, upload, cropped: crop) if upload end def loading_image(upload) @@ -373,6 +372,38 @@ class CookedPostProcessor .each { |r| yield r if r > 1 } end + def optimize_image!(img, upload, cropped: false) + w, h = img["width"].to_i, img["height"].to_i + + thumbnail = upload.thumbnail(w, h) + if thumbnail && thumbnail.filesize.to_i < upload.filesize + img["src"] = thumbnail.url + + srcset = +"" + + each_responsive_ratio do |ratio| + resized_w = (w * ratio).to_i + resized_h = (h * ratio).to_i + + if !cropped && upload.width && resized_w > upload.width + cooked_url = UrlHelper.cook_url(upload.url, secure: upload.secure?) + srcset << ", #{cooked_url} #{ratio.to_s.sub(/\.0$/, "")}x" + elsif t = upload.thumbnail(resized_w, resized_h) + cooked_url = UrlHelper.cook_url(t.url, secure: upload.secure?) + srcset << ", #{cooked_url} #{ratio.to_s.sub(/\.0$/, "")}x" + end + + img["srcset"] = "#{UrlHelper.cook_url(img["src"], secure: upload.secure?)}#{srcset}" if srcset.present? + end + else + img["src"] = upload.url + end + + if small_upload = loading_image(upload) + img["data-small-upload"] = small_upload.url + end + end + def add_lightbox!(img, original_width, original_height, upload, cropped: false) # first, create a div to hold our lightbox lightbox = create_node("div", LIGHTBOX_WRAPPER_CSS_CLASS) @@ -389,39 +420,6 @@ class CookedPostProcessor a.add_child(img) - # replace the image by its thumbnail - w, h = img["width"].to_i, img["height"].to_i - - if upload - thumbnail = upload.thumbnail(w, h) - if thumbnail && thumbnail.filesize.to_i < upload.filesize - img["src"] = thumbnail.url - - srcset = +"" - - each_responsive_ratio do |ratio| - resized_w = (w * ratio).to_i - resized_h = (h * ratio).to_i - - if !cropped && upload.width && resized_w > upload.width - cooked_url = UrlHelper.cook_url(upload.url, secure: upload.secure?) - srcset << ", #{cooked_url} #{ratio.to_s.sub(/\.0$/, "")}x" - elsif t = upload.thumbnail(resized_w, resized_h) - cooked_url = UrlHelper.cook_url(t.url, secure: upload.secure?) - srcset << ", #{cooked_url} #{ratio.to_s.sub(/\.0$/, "")}x" - end - - img["srcset"] = "#{UrlHelper.cook_url(img["src"], secure: upload.secure?)}#{srcset}" if srcset.present? - end - else - img["src"] = upload.url - end - - if small_upload = loading_image(upload) - img["data-small-upload"] = small_upload.url - end - end - # then, some overlay informations meta = create_node("div", "meta") img.add_next_sibling(meta) diff --git a/spec/components/cooked_post_processor_spec.rb b/spec/components/cooked_post_processor_spec.rb index eb2111d67e..c2ca2d0b23 100644 --- a/spec/components/cooked_post_processor_spec.rb +++ b/spec/components/cooked_post_processor_spec.rb @@ -872,6 +872,40 @@ describe CookedPostProcessor do end + context "#convert_to_link" do + fab!(:thumbnail) { Fabricate(:optimized_image, upload: upload, width: 512, height: 384) } + + before do + CookedPostProcessor.any_instance.stubs(:get_size).with(upload.url).returns([1024, 768]) + end + + it "adds lightbox and optimizes images" do + post = Fabricate(:post, raw: "![image|1024x768, 50%](#{upload.short_url})") + + cpp = CookedPostProcessor.new(post, disable_loading_image: true) + cpp.post_process + + doc = Nokogiri::HTML::fragment(cpp.html) + expect(doc.css('.lightbox-wrapper').size).to eq(1) + expect(doc.css('img').first['srcset']).to_not eq(nil) + end + + it "optimizes images in quotes" do + post = Fabricate(:post, raw: <<~MD) + [quote] + ![image|1024x768, 50%](#{upload.short_url}) + [/quote] + MD + + cpp = CookedPostProcessor.new(post, disable_loading_image: true) + cpp.post_process + + doc = Nokogiri::HTML::fragment(cpp.html) + expect(doc.css('.lightbox-wrapper').size).to eq(0) + expect(doc.css('img').first['srcset']).to_not eq(nil) + end + end + context "#post_process_oneboxes" do let(:post) { build(:post_with_youtube, id: 123) } let(:cpp) { CookedPostProcessor.new(post, invalidate_oneboxes: true) } From 7fee3c61de7feeaa5e784f3a36df15beeea3c931 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 29 Nov 2019 09:30:54 -0500 Subject: [PATCH 339/408] Support for custom messages and redirects when creating posts (#8434) * Support for custom messages and redirects when creating posts When a post/topic is created Discourse serializes a `NewPostResult` object. Normally this contains a status like `created_post` or errors describing why the post could not be created. There are times when a plugin might want to take the inputted post and do something in the background. In this case, the plugin can return a custom `message` and `route_to` attribute in the `NewPostResult`. If present, the message will be displayed in an alert, and when "Ok" is clicked the user will be routed to the new URL. * Destroy the draft in parallel --- .../discourse/controllers/composer.js.es6 | 11 ++++++++++ app/serializers/new_post_result_serializer.rb | 20 ++++++++++++++++++- lib/new_post_result.rb | 2 ++ .../new_post_result_serializer_spec.rb | 17 ++++++++++++++++ .../acceptance/composer-test.js.es6 | 20 +++++++++++++++++++ .../helpers/create-pretender.js.es6 | 9 +++++++++ 6 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 spec/serializers/new_post_result_serializer_spec.rb diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index ae1393bd34..a379d8f7e1 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -709,6 +709,17 @@ export default Controller.extend({ if (result.responseJson.action === "create_post") { this.appEvents.trigger("post:highlight", result.payload.post_number); } + + if (result.responseJson.route_to) { + this.destroyDraft(); + if (result.responseJson.message) { + return bootbox.alert(result.responseJson.message, () => { + DiscourseURL.routeTo(result.responseJson.route_to); + }); + } + return DiscourseURL.routeTo(result.responseJson.route_to); + } + this.close(); const currentUser = this.currentUser; diff --git a/app/serializers/new_post_result_serializer.rb b/app/serializers/new_post_result_serializer.rb index ca6eee7f9c..9232062711 100644 --- a/app/serializers/new_post_result_serializer.rb +++ b/app/serializers/new_post_result_serializer.rb @@ -6,7 +6,9 @@ class NewPostResultSerializer < ApplicationSerializer :errors, :success, :pending_count, - :reason + :reason, + :message, + :route_to has_one :pending_post, serializer: TopicPendingPostSerializer, root: false, embed: :objects @@ -64,4 +66,20 @@ class NewPostResultSerializer < ApplicationSerializer pending_count.present? end + def route_to + object.route_to + end + + def include_route_to? + object.route_to.present? + end + + def message + object.message + end + + def include_message? + object.message.present? + end + end diff --git a/lib/new_post_result.rb b/lib/new_post_result.rb index 70bf3f7262..25d61f497a 100644 --- a/lib/new_post_result.rb +++ b/lib/new_post_result.rb @@ -9,6 +9,8 @@ class NewPostResult attr_accessor :post attr_accessor :reviewable attr_accessor :pending_count + attr_accessor :route_to + attr_accessor :message def initialize(action, success = false) @action = action diff --git a/spec/serializers/new_post_result_serializer_spec.rb b/spec/serializers/new_post_result_serializer_spec.rb new file mode 100644 index 0000000000..4a1fe6dc22 --- /dev/null +++ b/spec/serializers/new_post_result_serializer_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe NewPostResultSerializer do + + it "includes the message and route_to if present" do + result = NewPostResult.new(:custom, true) + result.message = 'hello :)' + result.route_to = "/cool-route" + + serializer = described_class.new(result) + expect(serializer.success).to eq(true) + expect(serializer.message).to eq('hello :)') + expect(serializer.route_to).to eq('/cool-route') + end +end diff --git a/test/javascripts/acceptance/composer-test.js.es6 b/test/javascripts/acceptance/composer-test.js.es6 index 273275cde5..d85bb9a278 100644 --- a/test/javascripts/acceptance/composer-test.js.es6 +++ b/test/javascripts/acceptance/composer-test.js.es6 @@ -234,6 +234,26 @@ QUnit.test("Create an enqueued Topic", async assert => { assert.ok(invisible(".d-modal"), "the modal can be dismissed"); }); +QUnit.test("Can display a message and route to a URL", async assert => { + await visit("/"); + await click("#create-topic"); + await fillIn("#reply-title", "This title doesn't matter"); + await fillIn(".d-editor-input", "custom message"); + await click("#reply-control button.create"); + assert.equal( + find(".bootbox .modal-body").text(), + "This is a custom response" + ); + assert.equal(currentURL(), "/", "it doesn't change routes"); + + await click(".bootbox .btn-primary"); + assert.equal( + currentURL(), + "/faq", + "can navigate to a `route_to` destination" + ); +}); + QUnit.test("Create a Reply", async assert => { await visit("/t/internationalization-localization/280"); diff --git a/test/javascripts/helpers/create-pretender.js.es6 b/test/javascripts/helpers/create-pretender.js.es6 index 46e9e11c84..618a94942e 100644 --- a/test/javascripts/helpers/create-pretender.js.es6 +++ b/test/javascripts/helpers/create-pretender.js.es6 @@ -497,6 +497,15 @@ export default function() { }); } + if (data.raw === "custom message") { + return response(200, { + success: true, + action: "custom", + message: "This is a custom response", + route_to: "/faq" + }); + } + return response(200, { success: true, action: "create_post", From a6aada16bdde76d172ff4f528d1f0cc1ed47145f Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 29 Nov 2019 15:16:06 +0000 Subject: [PATCH 340/408] DEV: Refactor API key specs to avoid hard-coding keys By hard-coding keys, we are not testing the API key system end to end. This change also makes the specs more resilient to upcoming API key changes --- .../default_current_user_provider_spec.rb | 117 +++++++++--------- spec/integration/rate_limiting_spec.rb | 2 +- spec/requests/admin/users_controller_spec.rb | 2 +- spec/requests/posts_controller_spec.rb | 2 +- spec/services/user_anonymizer_spec.rb | 2 +- 5 files changed, 61 insertions(+), 64 deletions(-) diff --git a/spec/components/auth/default_current_user_provider_spec.rb b/spec/components/auth/default_current_user_provider_spec.rb index 08be6290bc..3c1f1ce0e0 100644 --- a/spec/components/auth/default_current_user_provider_spec.rb +++ b/spec/components/auth/default_current_user_provider_spec.rb @@ -32,8 +32,8 @@ describe Auth::DefaultCurrentUserProvider do it "finds a user for a correct per-user api key" do user = Fabricate(:user) - ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1) - good_provider = provider("/?api_key=hello") + api_key = ApiKey.create!(user_id: user.id, created_by_id: -1) + good_provider = provider("/?api_key=#{api_key.key}") expect(good_provider.current_user.id).to eq(user.id) expect(good_provider.is_api?).to eq(true) expect(good_provider.is_user_api?).to eq(false) @@ -42,23 +42,23 @@ describe Auth::DefaultCurrentUserProvider do user.update_columns(active: false) expect { - provider("/?api_key=hello").current_user + provider("/?api_key=#{api_key.key}").current_user }.to raise_error(Discourse::InvalidAccess) user.update_columns(active: true, suspended_till: 1.day.from_now) expect { - provider("/?api_key=hello").current_user + provider("/?api_key=#{api_key.key}").current_user }.to raise_error(Discourse::InvalidAccess) end it "raises for a user pretending" do user = Fabricate(:user) user2 = Fabricate(:user) - key = ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1) + key = ApiKey.create!(user_id: user.id, created_by_id: -1) expect { - provider("/?api_key=hello&api_username=#{user2.username.downcase}").current_user + provider("/?api_key=#{key.key}&api_username=#{user2.username.downcase}").current_user }.to raise_error(Discourse::InvalidAccess) key.reload @@ -67,16 +67,16 @@ describe Auth::DefaultCurrentUserProvider do it "raises for a revoked key" do user = Fabricate(:user) - key = ApiKey.create!(key: "hello") + key = ApiKey.create! expect( - provider("/?api_key=hello&api_username=#{user.username.downcase}").current_user.id + provider("/?api_key=#{key.key}&api_username=#{user.username.downcase}").current_user.id ).to eq(user.id) key.reload.update(revoked_at: Time.zone.now, last_used_at: nil) expect(key.reload.last_used_at).to eq(nil) expect { - provider("/?api_key=hello&api_username=#{user.username.downcase}").current_user + provider("/?api_key=#{key.key}&api_username=#{user.username.downcase}").current_user }.to raise_error(Discourse::InvalidAccess) key.reload @@ -85,10 +85,10 @@ describe Auth::DefaultCurrentUserProvider do it "raises for a user with a mismatching ip" do user = Fabricate(:user) - ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1, allowed_ips: ['10.0.0.0/24']) + api_key = ApiKey.create!(user_id: user.id, created_by_id: -1, allowed_ips: ['10.0.0.0/24']) expect { - provider("/?api_key=hello&api_username=#{user.username.downcase}", "REMOTE_ADDR" => "10.1.0.1").current_user + provider("/?api_key=#{api_key.key}&api_username=#{user.username.downcase}", "REMOTE_ADDR" => "10.1.0.1").current_user }.to raise_error(Discourse::InvalidAccess) end @@ -97,14 +97,14 @@ describe Auth::DefaultCurrentUserProvider do freeze_time user = Fabricate(:user) - key = ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1, allowed_ips: ['100.0.0.0/24']) + key = ApiKey.create!(user_id: user.id, created_by_id: -1, allowed_ips: ['100.0.0.0/24']) - found_user = provider("/?api_key=hello&api_username=#{user.username.downcase}", + found_user = provider("/?api_key=#{key.key}&api_username=#{user.username.downcase}", "REMOTE_ADDR" => "100.0.0.22").current_user expect(found_user.id).to eq(user.id) - found_user = provider("/?api_key=hello&api_username=#{user.username.downcase}", + found_user = provider("/?api_key=#{key.key}&api_username=#{user.username.downcase}", "HTTP_X_FORWARDED_FOR" => "10.1.1.1, 100.0.0.22").current_user expect(found_user.id).to eq(user.id) @@ -114,48 +114,48 @@ describe Auth::DefaultCurrentUserProvider do it "finds a user for a correct system api key" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) - expect(provider("/?api_key=hello&api_username=#{user.username.downcase}").current_user.id).to eq(user.id) + api_key = ApiKey.create!(created_by_id: -1) + expect(provider("/?api_key=#{api_key.key}&api_username=#{user.username.downcase}").current_user.id).to eq(user.id) end it "raises for a mismatched api_key param and header username" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) + api_key = ApiKey.create!(created_by_id: -1) params = { "HTTP_API_USERNAME" => user.username.downcase } expect { - provider("/?api_key=hello", params).current_user + provider("/?api_key=#{api_key.key}", params).current_user }.to raise_error(Discourse::InvalidAccess) end it "finds a user for a correct system api key with external id" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) + api_key = ApiKey.create!(created_by_id: -1) SingleSignOnRecord.create(user_id: user.id, external_id: "abc", last_payload: '') - expect(provider("/?api_key=hello&api_user_external_id=abc").current_user.id).to eq(user.id) + expect(provider("/?api_key=#{api_key.key}&api_user_external_id=abc").current_user.id).to eq(user.id) end it "raises for a mismatched api_key param and header external id" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) + api_key = ApiKey.create!(created_by_id: -1) SingleSignOnRecord.create(user_id: user.id, external_id: "abc", last_payload: '') params = { "HTTP_API_USER_EXTERNAL_ID" => "abc" } expect { - provider("/?api_key=hello", params).current_user + provider("/?api_key=#{api_key.key}", params).current_user }.to raise_error(Discourse::InvalidAccess) end it "finds a user for a correct system api key with id" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) - expect(provider("/?api_key=hello&api_user_id=#{user.id}").current_user.id).to eq(user.id) + api_key = ApiKey.create!(created_by_id: -1) + expect(provider("/?api_key=#{api_key.key}&api_user_id=#{user.id}").current_user.id).to eq(user.id) end it "raises for a mismatched api_key param and header user id" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) + api_key = ApiKey.create!(created_by_id: -1) params = { "HTTP_API_USER_ID" => user.id } expect { - provider("/?api_key=hello", params).current_user + provider("/?api_key=#{api_key.key}", params).current_user }.to raise_error(Discourse::InvalidAccess) end @@ -174,8 +174,8 @@ describe Auth::DefaultCurrentUserProvider do freeze_time user = Fabricate(:user) - key = SecureRandom.hex - api_key = ApiKey.create!(key: key, created_by_id: -1) + api_key = ApiKey.create!(created_by_id: -1) + key = api_key.key provider("/?api_key=#{key}&api_username=#{user.username.downcase}").current_user provider("/?api_key=#{key}&api_username=system").current_user @@ -198,9 +198,8 @@ describe Auth::DefaultCurrentUserProvider do # should not rake limit a random key api_key.destroy - key = SecureRandom.hex - ApiKey.create!(key: key, created_by_id: -1) - provider("/?api_key=#{key}&api_username=#{user.username.downcase}").current_user + api_key = ApiKey.create!(created_by_id: -1) + provider("/?api_key=#{api_key.key}&api_username=#{user.username.downcase}").current_user end end @@ -218,8 +217,8 @@ describe Auth::DefaultCurrentUserProvider do it "finds a user for a correct per-user api key" do user = Fabricate(:user) - ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1) - params = { "HTTP_API_KEY" => "hello" } + api_key = ApiKey.create!(user_id: user.id, created_by_id: -1) + params = { "HTTP_API_KEY" => api_key.key } good_provider = provider("/", params) expect(good_provider.current_user.id).to eq(user.id) @@ -243,8 +242,8 @@ describe Auth::DefaultCurrentUserProvider do it "raises for a user pretending" do user = Fabricate(:user) user2 = Fabricate(:user) - ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1) - params = { "HTTP_API_KEY" => "hello", "HTTP_API_USERNAME" => user2.username.downcase } + api_key = ApiKey.create!(user_id: user.id, created_by_id: -1) + params = { "HTTP_API_KEY" => api_key.key, "HTTP_API_USERNAME" => user2.username.downcase } expect { provider("/", params).current_user @@ -253,9 +252,9 @@ describe Auth::DefaultCurrentUserProvider do it "raises for a user with a mismatching ip" do user = Fabricate(:user) - ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1, allowed_ips: ['10.0.0.0/24']) + api_key = ApiKey.create!(user_id: user.id, created_by_id: -1, allowed_ips: ['10.0.0.0/24']) params = { - "HTTP_API_KEY" => "hello", + "HTTP_API_KEY" => api_key.key, "HTTP_API_USERNAME" => user.username.downcase, "REMOTE_ADDR" => "10.1.0.1" } @@ -268,9 +267,9 @@ describe Auth::DefaultCurrentUserProvider do it "allows a user with a matching ip" do user = Fabricate(:user) - ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1, allowed_ips: ['100.0.0.0/24']) + api_key = ApiKey.create!(user_id: user.id, created_by_id: -1, allowed_ips: ['100.0.0.0/24']) params = { - "HTTP_API_KEY" => "hello", + "HTTP_API_KEY" => api_key.key, "HTTP_API_USERNAME" => user.username.downcase, "REMOTE_ADDR" => "100.0.0.22", } @@ -280,7 +279,7 @@ describe Auth::DefaultCurrentUserProvider do expect(found_user.id).to eq(user.id) params = { - "HTTP_API_KEY" => "hello", + "HTTP_API_KEY" => api_key.key, "HTTP_API_USERNAME" => user.username.downcase, "HTTP_X_FORWARDED_FOR" => "10.1.1.1, 100.0.0.22" } @@ -292,15 +291,15 @@ describe Auth::DefaultCurrentUserProvider do it "finds a user for a correct system api key" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) - params = { "HTTP_API_KEY" => "hello", "HTTP_API_USERNAME" => user.username.downcase } + api_key = ApiKey.create!(created_by_id: -1) + params = { "HTTP_API_KEY" => api_key.key, "HTTP_API_USERNAME" => user.username.downcase } expect(provider("/", params).current_user.id).to eq(user.id) end it "raises for a mismatched api_key header and param username" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) - params = { "HTTP_API_KEY" => "hello" } + api_key = ApiKey.create!(created_by_id: -1) + params = { "HTTP_API_KEY" => api_key.key } expect { provider("/?api_username=#{user.username.downcase}", params).current_user }.to raise_error(Discourse::InvalidAccess) @@ -308,17 +307,17 @@ describe Auth::DefaultCurrentUserProvider do it "finds a user for a correct system api key with external id" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) + api_key = ApiKey.create!(created_by_id: -1) SingleSignOnRecord.create(user_id: user.id, external_id: "abc", last_payload: '') - params = { "HTTP_API_KEY" => "hello", "HTTP_API_USER_EXTERNAL_ID" => "abc" } + params = { "HTTP_API_KEY" => api_key.key, "HTTP_API_USER_EXTERNAL_ID" => "abc" } expect(provider("/", params).current_user.id).to eq(user.id) end it "raises for a mismatched api_key header and param external id" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) + api_key = ApiKey.create!(created_by_id: -1) SingleSignOnRecord.create(user_id: user.id, external_id: "abc", last_payload: '') - params = { "HTTP_API_KEY" => "hello" } + params = { "HTTP_API_KEY" => api_key.key } expect { provider("/?api_user_external_id=abc", params).current_user }.to raise_error(Discourse::InvalidAccess) @@ -326,15 +325,15 @@ describe Auth::DefaultCurrentUserProvider do it "finds a user for a correct system api key with id" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) - params = { "HTTP_API_KEY" => "hello", "HTTP_API_USER_ID" => user.id } + api_key = ApiKey.create!(created_by_id: -1) + params = { "HTTP_API_KEY" => api_key.key, "HTTP_API_USER_ID" => user.id } expect(provider("/", params).current_user.id).to eq(user.id) end it "raises for a mismatched api_key header and param user id" do user = Fabricate(:user) - ApiKey.create!(key: "hello", created_by_id: -1) - params = { "HTTP_API_KEY" => "hello" } + api_key = ApiKey.create!(created_by_id: -1) + params = { "HTTP_API_KEY" => api_key.key } expect { provider("/?api_user_id=#{user.id}", params).current_user }.to raise_error(Discourse::InvalidAccess) @@ -355,9 +354,8 @@ describe Auth::DefaultCurrentUserProvider do freeze_time user = Fabricate(:user) - key = SecureRandom.hex - api_key = ApiKey.create!(key: key, created_by_id: -1) - params = { "HTTP_API_KEY" => key, "HTTP_API_USERNAME" => user.username.downcase } + api_key = ApiKey.create!(created_by_id: -1) + params = { "HTTP_API_KEY" => api_key.key, "HTTP_API_USERNAME" => user.username.downcase } system_params = params.merge("HTTP_API_USERNAME" => "system") provider("/", params).current_user @@ -381,9 +379,8 @@ describe Auth::DefaultCurrentUserProvider do # should not rate limit a random key api_key.destroy - key = SecureRandom.hex - ApiKey.create!(key: key, created_by_id: -1) - params = { "HTTP_API_KEY" => key, "HTTP_API_USERNAME" => user.username.downcase } + api_key = ApiKey.create!(created_by_id: -1) + params = { "HTTP_API_KEY" => api_key.key, "HTTP_API_USERNAME" => user.username.downcase } provider("/", params).current_user end @@ -467,10 +464,10 @@ describe Auth::DefaultCurrentUserProvider do it "should update last seen for API calls with Discourse-Visible header" do user = Fabricate(:user) - ApiKey.create!(key: "hello", user_id: user.id, created_by_id: -1) + api_key = ApiKey.create!(user_id: user.id, created_by_id: -1) params = { :method => "POST", "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest", - "HTTP_API_KEY" => "hello" + "HTTP_API_KEY" => api_key.key } expect(provider("/topic/anything/goes", params).should_update_last_seen?).to eq(false) diff --git a/spec/integration/rate_limiting_spec.rb b/spec/integration/rate_limiting_spec.rb index 5f609cf319..13fe8f7359 100644 --- a/spec/integration/rate_limiting_spec.rb +++ b/spec/integration/rate_limiting_spec.rb @@ -56,7 +56,7 @@ describe 'rate limiter integration' do #request.set_header("action_dispatch.show_exceptions", true) admin = Fabricate(:admin) - api_key = Fabricate(:api_key, key: SecureRandom.hex, user: admin) + api_key = Fabricate(:api_key, user: admin) global_setting :max_admin_api_reqs_per_key_per_minute, 1 diff --git a/spec/requests/admin/users_controller_spec.rb b/spec/requests/admin/users_controller_spec.rb index 724b3a0ad4..f3deeaad8c 100644 --- a/spec/requests/admin/users_controller_spec.rb +++ b/spec/requests/admin/users_controller_spec.rb @@ -745,7 +745,7 @@ RSpec.describe Admin::UsersController do end describe '#invite_admin' do - let(:api_key) { Fabricate(:api_key, user: admin, key: SecureRandom.hex) } + let(:api_key) { Fabricate(:api_key, user: admin) } let(:api_params) do { api_key: api_key.key, api_username: admin.username } end diff --git a/spec/requests/posts_controller_spec.rb b/spec/requests/posts_controller_spec.rb index d9d4270d0c..ee043ae5b6 100644 --- a/spec/requests/posts_controller_spec.rb +++ b/spec/requests/posts_controller_spec.rb @@ -781,7 +781,7 @@ describe PostsController do it 'prevents whispers for regular users' do post_1 = Fabricate(:post) - user_key = ApiKey.create!(user: user, key: SecureRandom.hex).key + user_key = ApiKey.create!(user: user).key post "/posts.json", params: { api_username: user.username, diff --git a/spec/services/user_anonymizer_spec.rb b/spec/services/user_anonymizer_spec.rb index d534d8ca16..bd58710b64 100644 --- a/spec/services/user_anonymizer_spec.rb +++ b/spec/services/user_anonymizer_spec.rb @@ -215,7 +215,7 @@ describe UserAnonymizer do end it "removes api key" do - ApiKey.create(user_id: user.id, key: "123123123") + ApiKey.create(user_id: user.id) expect { make_anonymous }.to change { ApiKey.count }.by(-1) user.reload expect(user.api_keys).to be_empty From dd8fe1a9e7cf18eee597f348db5d867a94cccc4b Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 29 Nov 2019 15:49:08 +0000 Subject: [PATCH 341/408] DEV: Update annotations --- app/models/developer.rb | 4 ++++ plugins/poll/app/models/poll.rb | 1 + 2 files changed, 5 insertions(+) diff --git a/app/models/developer.rb b/app/models/developer.rb index 0b0dcd9320..a789dd6dd6 100644 --- a/app/models/developer.rb +++ b/app/models/developer.rb @@ -28,3 +28,7 @@ end # id :integer not null, primary key # user_id :integer not null # +# Indexes +# +# index_developers_on_user_id (user_id) UNIQUE +# diff --git a/plugins/poll/app/models/poll.rb b/plugins/poll/app/models/poll.rb index f71de80cb2..88e918a190 100644 --- a/plugins/poll/app/models/poll.rb +++ b/plugins/poll/app/models/poll.rb @@ -79,6 +79,7 @@ end # anonymous_voters :integer # created_at :datetime not null # updated_at :datetime not null +# chart_type :integer default("bar"), not null # # Indexes # From 88dce41be1edf0eb044356b74f8f8367042140fd Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 29 Nov 2019 16:28:39 +0000 Subject: [PATCH 342/408] DEV: Drop unused google and instagram auth_info tables Information was migrated to user_associated_accounts in fc7938f7e081318ad52462bd2aa1c95e61fb5d03 and 703c724cf3adff0feb89f99be30f4fb4ed540e22 --- ...rop_unused_google_instagram_auth_tables.rb | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 db/post_migrate/20191129144706_drop_unused_google_instagram_auth_tables.rb diff --git a/db/post_migrate/20191129144706_drop_unused_google_instagram_auth_tables.rb b/db/post_migrate/20191129144706_drop_unused_google_instagram_auth_tables.rb new file mode 100644 index 0000000000..f1b3df2e60 --- /dev/null +++ b/db/post_migrate/20191129144706_drop_unused_google_instagram_auth_tables.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'migration/table_dropper' + +class DropUnusedGoogleInstagramAuthTables < ActiveRecord::Migration[6.0] + DROPPED_TABLES ||= %i{ + google_user_infos + instagram_user_infos + } + + def up + DROPPED_TABLES.each do |table| + Migration::TableDropper.execute_drop(table) + end + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end From ad6f33e5b12c7d9bc8ee58003ae65fa60cee1dd2 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 29 Nov 2019 16:43:38 +0000 Subject: [PATCH 343/408] DEV: Remove unused instagram_user_info model This has been unused since 703c724cf3adff0feb89f99be30f4fb4ed540e22 --- app/models/instagram_user_info.rb | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 app/models/instagram_user_info.rb diff --git a/app/models/instagram_user_info.rb b/app/models/instagram_user_info.rb deleted file mode 100644 index 404876aa2a..0000000000 --- a/app/models/instagram_user_info.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -class InstagramUserInfo < ActiveRecord::Base - - belongs_to :user - -end - -# == Schema Information -# -# Table name: instagram_user_infos -# -# id :integer not null, primary key -# user_id :integer -# screen_name :string -# instagram_user_id :integer -# created_at :datetime not null -# updated_at :datetime not null -# From cdec5f154b21ed9b483a638ede5e26356e7c4c80 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 29 Nov 2019 16:53:53 +0000 Subject: [PATCH 344/408] DEV: Remove remaining reference to instagram_user_infos Follow-up to ad6f33e5b12c7d9bc8ee58003ae65fa60cee1dd2 --- app/models/user.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 4d211b1698..dd099725ea 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -56,7 +56,6 @@ class User < ActiveRecord::Base has_many :user_associated_accounts, dependent: :destroy has_one :github_user_info, dependent: :destroy has_many :oauth2_user_infos, dependent: :destroy - has_one :instagram_user_info, dependent: :destroy has_many :user_second_factors, dependent: :destroy has_many :totps, -> { From 06c2e28bbb76a6bba94717d87ac2f796e3de542b Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 29 Nov 2019 17:12:06 +0000 Subject: [PATCH 345/408] DEV: Remove two more references to instagram_user_infos Follow-up to ad6f33e5b12c7d9bc8ee58003ae65fa60cee1dd2 --- app/services/user_anonymizer.rb | 1 - spec/services/user_anonymizer_spec.rb | 1 - 2 files changed, 2 deletions(-) diff --git a/app/services/user_anonymizer.rb b/app/services/user_anonymizer.rb index 99c7dc6dd4..bb5bd3f705 100644 --- a/app/services/user_anonymizer.rb +++ b/app/services/user_anonymizer.rb @@ -64,7 +64,6 @@ class UserAnonymizer @user.single_sign_on_record.try(:destroy) @user.oauth2_user_infos.try(:destroy_all) @user.user_associated_accounts.try(:destroy_all) - @user.instagram_user_info.try(:destroy) @user.user_open_ids.find_each { |x| x.destroy } @user.api_keys.find_each { |x| x.try(:destroy) } @user.user_emails.secondary.destroy_all diff --git a/spec/services/user_anonymizer_spec.rb b/spec/services/user_anonymizer_spec.rb index bd58710b64..36ec4f0b77 100644 --- a/spec/services/user_anonymizer_spec.rb +++ b/spec/services/user_anonymizer_spec.rb @@ -210,7 +210,6 @@ describe UserAnonymizer do expect(user.user_associated_accounts).to be_empty expect(user.single_sign_on_record).to eq(nil) expect(user.oauth2_user_infos).to be_empty - expect(user.instagram_user_info).to eq(nil) expect(user.user_open_ids.count).to eq(0) end From 380748475790a04c7ee94fd66f43a862c348b591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Fri, 29 Nov 2019 22:14:41 +0100 Subject: [PATCH 346/408] FIX: delay the 'send_advanced_tutorial_message' job to prevent race conditions When a user accepts an invite with an email address that matches a group which automatically awards its members Trust Level 2, a race condition might happen when the 'send_advanced_tutorial_message' job runs. That job is enqueued inside the 'user_promoted' event which is triggered inside a transaction on the user record. If the job runs before the transaction is done, the user record is invisible and this generates an exception. --- plugins/discourse-narrative-bot/plugin.rb | 5 ++++- plugins/discourse-narrative-bot/public/public | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) create mode 120000 plugins/discourse-narrative-bot/public/public diff --git a/plugins/discourse-narrative-bot/plugin.rb b/plugins/discourse-narrative-bot/plugin.rb index 54e97a05e7..efa6ae8fea 100644 --- a/plugins/discourse-narrative-bot/plugin.rb +++ b/plugins/discourse-narrative-bot/plugin.rb @@ -257,7 +257,10 @@ after_initialize do args[:old_trust_level] == TrustLevel[1] if SiteSetting.discourse_narrative_bot_enabled && promoted_from_tl1 - Jobs.enqueue(:send_advanced_tutorial_message, user_id: args[:user_id]) + # NOTE: since the `user_promoted` event is triggered from inside a transaction + # we have to delay the job otherwise it might run before the transaction + # is commited and the user will be invisible to the job + Jobs.enqueue_in(1.minute, :send_advanced_tutorial_message, user_id: args[:user_id]) end end end diff --git a/plugins/discourse-narrative-bot/public/public b/plugins/discourse-narrative-bot/public/public new file mode 120000 index 0000000000..65954e2f81 --- /dev/null +++ b/plugins/discourse-narrative-bot/public/public @@ -0,0 +1 @@ +/home/regis/Poetry/discourse/plugins/discourse-narrative-bot/public \ No newline at end of file From 5ae570a088a1c7ed40f89261b69ada90324257d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Fri, 29 Nov 2019 22:23:43 +0100 Subject: [PATCH 347/408] remove unnecessary symlink --- plugins/discourse-narrative-bot/public/public | 1 - 1 file changed, 1 deletion(-) delete mode 120000 plugins/discourse-narrative-bot/public/public diff --git a/plugins/discourse-narrative-bot/public/public b/plugins/discourse-narrative-bot/public/public deleted file mode 120000 index 65954e2f81..0000000000 --- a/plugins/discourse-narrative-bot/public/public +++ /dev/null @@ -1 +0,0 @@ -/home/regis/Poetry/discourse/plugins/discourse-narrative-bot/public \ No newline at end of file From 455147cabef497dc493e0140b9a6de3866e7b03b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Fri, 29 Nov 2019 22:48:39 +0100 Subject: [PATCH 348/408] DEV: use DB.after_commit instead of delaying the job --- plugins/discourse-narrative-bot/plugin.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/discourse-narrative-bot/plugin.rb b/plugins/discourse-narrative-bot/plugin.rb index efa6ae8fea..5ea07c9090 100644 --- a/plugins/discourse-narrative-bot/plugin.rb +++ b/plugins/discourse-narrative-bot/plugin.rb @@ -257,10 +257,12 @@ after_initialize do args[:old_trust_level] == TrustLevel[1] if SiteSetting.discourse_narrative_bot_enabled && promoted_from_tl1 - # NOTE: since the `user_promoted` event is triggered from inside a transaction - # we have to delay the job otherwise it might run before the transaction - # is commited and the user will be invisible to the job - Jobs.enqueue_in(1.minute, :send_advanced_tutorial_message, user_id: args[:user_id]) + # The event 'user_promoted' is sometimes called from inside a transaction. + # Use this helper to ensure the job is enqueued after commit to prevent + # any race conditions. + DB.after_commit do + Jobs.enqueue(:send_advanced_tutorial_message, user_id: args[:user_id]) + end end end end From 57f108899a909d7d4978da7ab2273de4ed69bbb7 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Sat, 30 Nov 2019 15:16:36 +0200 Subject: [PATCH 349/408] FEATURE: Make site texts controller handle pages and locales (#8408) Some endpoints are returning i18n keys instead of translated messages and with these changes, the site_texts endpoint can help translating those. Pagination part is needed for better wildcard support. For example, looking for 'js.notifications' would set 'has_more' to true, but return only the first 50 messages with no way of fetching the remaining. --- .../admin/site_texts_controller.rb | 19 ++++++++++--- .../admin/site_texts_controller_spec.rb | 27 +++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/site_texts_controller.rb b/app/controllers/admin/site_texts_controller.rb index 0f9d7bad65..69d2665023 100644 --- a/app/controllers/admin/site_texts_controller.rb +++ b/app/controllers/admin/site_texts_controller.rb @@ -20,11 +20,15 @@ class Admin::SiteTextsController < Admin::AdminController extras = {} query = params[:q] || "" + + locale = params[:locale] || I18n.locale + raise Discourse::InvalidParameters.new(:locale) if !I18n.locale_available?(locale) + if query.blank? && !overridden extras[:recommended] = true - results = self.class.preferred_keys.map { |k| record_for(k) } + results = I18n.with_locale(locale) { self.class.preferred_keys.map { |k| record_for(k) } } else - results = find_translations(query, overridden) + results = I18n.with_locale(locale) { find_translations(query, overridden) } if results.any? extras[:regex] = I18n::Backend::DiscourseI18n.create_search_regexp(query, as_string: true) @@ -41,8 +45,15 @@ class Admin::SiteTextsController < Admin::AdminController end end - extras[:has_more] = true if results.size > 50 - render_serialized(results[0..49], SiteTextSerializer, root: 'site_texts', rest_serializer: true, extras: extras, overridden_keys: overridden_keys) + page = params[:page].to_i + raise Discourse::InvalidParameters.new(:page) if page < 0 + + per_page = 50 + first = page * per_page + last = first + per_page + + extras[:has_more] = true if results.size > last + render_serialized(results[first..last - 1], SiteTextSerializer, root: 'site_texts', rest_serializer: true, extras: extras, overridden_keys: overridden_keys) end def show diff --git a/spec/requests/admin/site_texts_controller_spec.rb b/spec/requests/admin/site_texts_controller_spec.rb index 356dcfc07c..51e23127b9 100644 --- a/spec/requests/admin/site_texts_controller_spec.rb +++ b/spec/requests/admin/site_texts_controller_spec.rb @@ -58,6 +58,33 @@ RSpec.describe Admin::SiteTextsController do expect(JSON.parse(response.body)['extras']['has_more']).to be_truthy end + it 'works with pages' do + texts = Set.new + + get "/admin/customize/site_texts.json", params: { q: 'e' } + JSON.parse(response.body)['site_texts'].each { |text| texts << text['id'] } + expect(texts.size).to eq(50) + + get "/admin/customize/site_texts.json", params: { q: 'e', page: 1 } + JSON.parse(response.body)['site_texts'].each { |text| texts << text['id'] } + expect(texts.size).to eq(100) + end + + it 'works with locales' do + get "/admin/customize/site_texts.json", params: { q: 'yes_value', locale: 'en' } + value = JSON.parse(response.body)['site_texts'].find { |text| text['id'] == 'js.yes_value' }['value'] + expect(value).to eq(I18n.with_locale(:en) { I18n.t('js.yes_value') }) + + get "/admin/customize/site_texts.json", params: { q: 'yes_value', locale: 'de' } + value = JSON.parse(response.body)['site_texts'].find { |text| text['id'] == 'js.yes_value' }['value'] + expect(value).to eq(I18n.with_locale(:de) { I18n.t('js.yes_value') }) + end + + it 'returns an error on invalid locale' do + get "/admin/customize/site_texts.json", params: { locale: '?' } + expect(response.status).to eq(400) + end + it 'normalizes quotes during search' do value = %q|“That’s a ‘magic’ sock.”| put "/admin/customize/site_texts/title.json", params: { site_text: { value: value } } From 580b28986192cb659ea4232c3a22c865125e9197 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Sat, 30 Nov 2019 20:14:22 +0530 Subject: [PATCH 350/408] UX: skip leading spaces in selection when adding a link. --- .../javascripts/discourse/components/d-editor.js.es6 | 8 ++++---- .../discourse/controllers/insert-hyperlink.js.es6 | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index 5173f41d89..e668828ccb 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -99,6 +99,7 @@ class Toolbar { id: "link", group: "insertions", shortcut: "K", + trimLeading: true, sendAction: event => this.context.send("showLinkModal", event) }); } @@ -956,15 +957,14 @@ export default Component.extend({ } let linkText = ""; - this._lastSel = this._getSelected(); + this._lastSel = toolbarEvent.selected; if (this._lastSel) { - linkText = this._lastSel.value.trim(); + linkText = this._lastSel.value; } showModal("insert-hyperlink").setProperties({ - linkText: linkText, - _lastSel: this._lastSel, + linkText, toolbarEvent }); }, diff --git a/app/assets/javascripts/discourse/controllers/insert-hyperlink.js.es6 b/app/assets/javascripts/discourse/controllers/insert-hyperlink.js.es6 index b04499456b..21ea0603f8 100644 --- a/app/assets/javascripts/discourse/controllers/insert-hyperlink.js.es6 +++ b/app/assets/javascripts/discourse/controllers/insert-hyperlink.js.es6 @@ -147,7 +147,7 @@ export default Controller.extend(ModalFunctionality, { const origLink = this.linkUrl; const linkUrl = origLink.indexOf("://") === -1 ? `http://${origLink}` : origLink; - const sel = this._lastSel; + const sel = this.toolbarEvent.selected; if (isEmpty(linkUrl)) { return; From 3cf4ba50696aff32aef2036af68fafb6bba1dbb0 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Mon, 2 Dec 2019 10:24:07 +0100 Subject: [PATCH 351/408] FIX: ensures censor has always at least an empty string to handle (#8442) --- app/assets/javascripts/discourse/models/topic.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/models/topic.js.es6 b/app/assets/javascripts/discourse/models/topic.js.es6 index 94b778f65d..d95f8334b8 100644 --- a/app/assets/javascripts/discourse/models/topic.js.es6 +++ b/app/assets/javascripts/discourse/models/topic.js.es6 @@ -110,7 +110,7 @@ const Topic = RestModel.extend({ @discourseComputed("fancy_title") fancyTitle(title) { let fancyTitle = censor( - emojiUnescape(title || ""), + emojiUnescape(title) || "", Site.currentProp("censored_regexp") ); From c414db107c50f4692de7ec3dd37279b2d17fb07b Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Fri, 29 Nov 2019 11:53:05 +0000 Subject: [PATCH 352/408] FIX: Handle none path correctly with three levels With a path like "/c/foo/1/none", "none" was being interpreted as an id. --- .../routes/build-category-route.js.es6 | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index e487570d5a..56c984a53f 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -18,13 +18,27 @@ export default (filterArg, params) => { serialize(modelParams) { if (!modelParams.category_slug_path_with_id) { - modelParams.category_slug_path_with_id = [ - modelParams.parentSlug, - modelParams.slug, - modelParams.id - ] - .filter(x => x) - .join("/"); + if (modelParams.id === "none") { + const category_slug_path_with_id = [ + modelParams.parentSlug, + modelParams.slug + ].join("/"); + const category = Category.findBySlugPathWithID( + category_slug_path_with_id + ); + this.replaceWith("discovery.categoryNone", { + category, + category_slug_path_with_id + }); + } else { + modelParams.category_slug_path_with_id = [ + modelParams.parentSlug, + modelParams.slug, + modelParams.id + ] + .filter(x => x) + .join("/"); + } } return modelParams; From 9251065768fab0ee8519384b301ce7301e7a25bc Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Fri, 29 Nov 2019 14:58:08 +0000 Subject: [PATCH 353/408] FIX: Generate redirect URL correctly when using a subdirectory The url property of a category contains the base_uri and so it shouldn't be concatated into a larger URL unless it is the prefix. --- .../select-kit/components/tag-drop.js.es6 | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 index 4fbea17f54..5e2f953631 100644 --- a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 @@ -5,6 +5,7 @@ import DiscourseURL from "discourse/lib/url"; import TagsMixin from "select-kit/mixins/tags"; import { default as discourseComputed } from "discourse-common/utils/decorators"; const { isEmpty, run } = Ember; +import Category from "discourse/models/category"; export default ComboBoxComponent.extend(TagsMixin, { pluginApiIdentifiers: ["tag-drop"], @@ -78,12 +79,14 @@ export default ComboBoxComponent.extend(TagsMixin, { } }, - @discourseComputed("firstCategory", "secondCategory") - noTagsUrl() { - var url = "/tags"; - if (this.currentCategory) { - url += this.get("currentCategory.url"); + @discourseComputed("currentCategory") + noTagsUrl(currentCategory) { + let url = "/tags"; + + if (currentCategory) { + url += `/c/${Category.slugFor(currentCategory)}`; } + return Discourse.getURL(`${url}/none`); }, @@ -157,9 +160,11 @@ export default ComboBoxComponent.extend(TagsMixin, { url = Discourse.getURL(this.noTagsUrl); } else { url = "/tags"; + if (this.currentCategory) { - url += this.get("currentCategory.url"); + url += `/c/${Category.slugFor(this.currentCategory)}`; } + url = Discourse.getURL(`${url}/${tagId.toLowerCase()}`); } From 374534f00ee487d859fc2b826ea519befe0da350 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Fri, 29 Nov 2019 15:47:17 +0000 Subject: [PATCH 354/408] DEV: Use category ids in URLs preferentially --- .../javascripts/discourse/controllers/discovery.js.es6 | 10 +++++----- .../javascripts/discourse/models/nav-item.js.es6 | 2 +- .../discourse/routes/build-category-route.js.es6 | 6 +++--- .../javascripts/discourse/routes/tags-show.js.es6 | 2 +- .../select-kit/components/category-drop.js.es6 | 2 +- .../javascripts/select-kit/components/tag-drop.js.es6 | 6 ++++-- test/javascripts/fixtures/discovery_fixtures.js.es6 | 6 +++--- test/javascripts/helpers/create-pretender.js.es6 | 4 ++-- 8 files changed, 20 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/discovery.js.es6 b/app/assets/javascripts/discourse/controllers/discovery.js.es6 index c797ed7565..93237fa22b 100644 --- a/app/assets/javascripts/discourse/controllers/discovery.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery.js.es6 @@ -23,13 +23,13 @@ export default Controller.extend({ showMoreUrl(period) { let url = "", category = this.category; + if (category) { - url = - "/c/" + - Category.slugFor(category) + - (this.noSubcategories ? "/none" : "") + - "/l"; + url = `/c/${Category.slugFor(category)}/${category.id}${ + this.noSubcategories ? "/none" : "" + }/l`; } + url += "/top/" + period; return url; }, diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index e2fcff3f92..943f11fd89 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -120,7 +120,7 @@ NavItem.reopenClass({ if (context.category) { includesCategoryContext = true; - path += `/c/${Category.slugFor(context.category)}`; + path += `/c/${Category.slugFor(context.category)}/${context.category.id}`; if (context.noSubcategories) { path += "/none"; diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index 56c984a53f..86f18c5ddd 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -102,9 +102,9 @@ export default (filterArg, params) => { }, _retrieveTopicList(category, transition) { - const listFilter = `c/${Category.slugFor(category)}/l/${this.filter( - category - )}`, + const listFilter = `c/${Category.slugFor(category)}/${ + category.id + }/l/${this.filter(category)}`, findOpts = filterQueryParams(transition.to.queryParams, params), extras = { cached: this.isPoppedState(transition) }; diff --git a/app/assets/javascripts/discourse/routes/tags-show.js.es6 b/app/assets/javascripts/discourse/routes/tags-show.js.es6 index 8616b6959d..ccbb0292cb 100644 --- a/app/assets/javascripts/discourse/routes/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/routes/tags-show.js.es6 @@ -69,7 +69,7 @@ export default DiscourseRoute.extend(FilterModeMixin, { if (category) { category.setupGroupsAndPermissions(); this.set("category", category); - filter = `tags/c/${Category.slugFor(category)}`; + filter = `tags/c/${Category.slugFor(category)}/${category.id}`; if (this.noSubcategories) { filter += "/none"; diff --git a/app/assets/javascripts/select-kit/components/category-drop.js.es6 b/app/assets/javascripts/select-kit/components/category-drop.js.es6 index 5374ed04e3..165818ffb2 100644 --- a/app/assets/javascripts/select-kit/components/category-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/category-drop.js.es6 @@ -144,7 +144,7 @@ export default ComboBoxComponent.extend({ } else { const category = Category.findById(parseInt(categoryId, 10)); const slug = Category.slugFor(category); - categoryURL = Discourse.getURL("/c/") + slug; + categoryURL = Discourse.getURL(`/c/${slug}/${categoryId}`); } DiscourseURL.routeTo(categoryURL); diff --git a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 index 5e2f953631..66d662be70 100644 --- a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 @@ -84,7 +84,7 @@ export default ComboBoxComponent.extend(TagsMixin, { let url = "/tags"; if (currentCategory) { - url += `/c/${Category.slugFor(currentCategory)}`; + url += `/c/${Category.slugFor(currentCategory)}/${currentCategory.id}`; } return Discourse.getURL(`${url}/none`); @@ -162,7 +162,9 @@ export default ComboBoxComponent.extend(TagsMixin, { url = "/tags"; if (this.currentCategory) { - url += `/c/${Category.slugFor(this.currentCategory)}`; + url += `/c/${Category.slugFor(this.currentCategory)}/${ + this.currentCategory.id + }`; } url = Discourse.getURL(`${url}/${tagId.toLowerCase()}`); diff --git a/test/javascripts/fixtures/discovery_fixtures.js.es6 b/test/javascripts/fixtures/discovery_fixtures.js.es6 index afcdf8fe46..03863bf964 100644 --- a/test/javascripts/fixtures/discovery_fixtures.js.es6 +++ b/test/javascripts/fixtures/discovery_fixtures.js.es6 @@ -2683,7 +2683,7 @@ export default { ] } }, - "/c/bug/l/latest.json": { + "/c/bug/1/l/latest.json": { users: [ { id: 1, username: "sam", avatar_template: "/images/avatar.png" }, { @@ -3863,7 +3863,7 @@ export default { ] } }, - "/c/feature/l/latest.json": { + "/c/feature/2/l/latest.json": { users: [ { id: 1, username: "sam", avatar_template: "/images/avatar.png" }, { @@ -4935,7 +4935,7 @@ export default { ] } }, - "/c/dev/l/latest.json": { + "/c/dev/7/l/latest.json": { users: [ { id: 1, username: "sam", avatar_template: "/images/avatar.png" }, { diff --git a/test/javascripts/helpers/create-pretender.js.es6 b/test/javascripts/helpers/create-pretender.js.es6 index 618a94942e..9beff0a169 100644 --- a/test/javascripts/helpers/create-pretender.js.es6 +++ b/test/javascripts/helpers/create-pretender.js.es6 @@ -64,8 +64,8 @@ export default function() { return response(json); }); - this.get("/c/bug/l/latest.json", () => { - const json = fixturesByUrl["/c/bug/l/latest.json"]; + this.get("/c/bug/1/l/latest.json", () => { + const json = fixturesByUrl["/c/bug/1/l/latest.json"]; if (loggedIn()) { // Stuff to let us post From 016732cced8e1ad0302b8ec11488ad6615db447a Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Mon, 2 Dec 2019 16:10:58 +0530 Subject: [PATCH 355/408] FEATURE: improve suspect user discovery --- lib/admin_user_index_query.rb | 2 +- spec/components/admin_user_index_query_spec.rb | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/admin_user_index_query.rb b/lib/admin_user_index_query.rb index ea6afa0192..74b5d403e9 100644 --- a/lib/admin_user_index_query.rb +++ b/lib/admin_user_index_query.rb @@ -84,7 +84,7 @@ class AdminUserIndexQuery .human_users .joins(:user_profile, :user_stat) .where("users.created_at <= ?", 1.day.ago) - .where("LENGTH(COALESCE(user_profiles.bio_raw, '')) > 0") + .where("LENGTH(COALESCE(user_profiles.bio_raw, user_profiles.website, '')) > 0") .where("user_stats.posts_read_count <= 1 AND user_stats.topics_entered <= 1") end diff --git a/spec/components/admin_user_index_query_spec.rb b/spec/components/admin_user_index_query_spec.rb index 5471bcd059..8060066f88 100644 --- a/spec/components/admin_user_index_query_spec.rb +++ b/spec/components/admin_user_index_query_spec.rb @@ -92,14 +92,23 @@ describe AdminUserIndexQuery do end describe 'with a suspected user' do - fab!(:user) { Fabricate(:active_user, created_at: 1.day.ago) } fab!(:bot) { Fabricate(:active_user, id: -10, created_at: 1.day.ago) } + fab!(:regular_user) { Fabricate(:user, created_at: 1.day.ago) } + fab!(:user_with_bio) { Fabricate(:active_user, created_at: 1.day.ago) } + fab!(:user_with_website) { Fabricate(:user, created_at: 1.day.ago) } + + before do + user_with_website.user_profile.website = 'https://example.com' + user_with_website.user_profile.save! + end it 'finds the suspected user' do bot - user + regular_user + user_with_bio + user_with_website query = AdminUserIndexQuery.new(query: 'suspect') - expect(query.find_users).to eq([user]) + expect(query.find_users).to contain_exactly(user_with_bio, user_with_website) end end From 712e171b34fa6376fc68705b47a53c01e9a8ed33 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Mon, 2 Dec 2019 12:08:01 +0000 Subject: [PATCH 356/408] DEV: Don't pass multiple categories to tag-drop The tag-drop component uses the passed in categories to calculate paths, but only the last category is relevant, since, from a category we can calculate its ancestors. --- .../templates/components/bread-crumbs.hbs | 3 +- .../select-kit/components/tag-drop.js.es6 | 28 +++++++++++++++++-- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/discourse/templates/components/bread-crumbs.hbs b/app/assets/javascripts/discourse/templates/components/bread-crumbs.hbs index 9f41a5d160..e15d265a6b 100644 --- a/app/assets/javascripts/discourse/templates/components/bread-crumbs.hbs +++ b/app/assets/javascripts/discourse/templates/components/bread-crumbs.hbs @@ -14,8 +14,7 @@ {{#if siteSettings.tagging_enabled}} {{tag-drop - firstCategory=firstCategory - secondCategory=secondCategory + currentCategory=category tagId=tagId}} {{/if}} diff --git a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 index 66d662be70..601398eb40 100644 --- a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 @@ -1,4 +1,5 @@ -import { alias, or } from "@ember/object/computed"; +import { computed } from "@ember/object"; +import { alias } from "@ember/object/computed"; import { makeArray } from "discourse-common/lib/helpers"; import ComboBoxComponent from "select-kit/components/combo-box"; import DiscourseURL from "discourse/lib/url"; @@ -6,6 +7,7 @@ import TagsMixin from "select-kit/mixins/tags"; import { default as discourseComputed } from "discourse-common/utils/decorators"; const { isEmpty, run } = Ember; import Category from "discourse/models/category"; +import deprecated from "discourse-common/lib/deprecated"; export default ComboBoxComponent.extend(TagsMixin, { pluginApiIdentifiers: ["tag-drop"], @@ -17,7 +19,6 @@ export default ComboBoxComponent.extend(TagsMixin, { allowAutoSelectFirst: false, tagName: "li", showFilterByTag: alias("siteSettings.show_filter_by_tag"), - currentCategory: or("secondCategory", "firstCategory"), tagId: null, categoryStyle: alias("siteSettings.category_style"), mutateAttributes() {}, @@ -27,6 +28,27 @@ export default ComboBoxComponent.extend(TagsMixin, { allowContentReplacement: true, isAsync: true, + currentCategory: computed("secondCategory", "firstCategory", { + set(key, value) { + this.currentCategoryRaw = value; + return value; + }, + + get() { + if (this.currentCategoryRaw) { + return this.currentCategoryRaw; + } + + const result = this.secondCategory || this.firstCategory; + if (result) { + deprecated( + "Setting firstCategory and secondCategory on tag-drop directly is deprecated. Please use currentCategory instead." + ); + return result; + } + } + }), + @discourseComputed("tagId") noTagsSelected() { return this.tagId === "none"; @@ -70,7 +92,7 @@ export default ComboBoxComponent.extend(TagsMixin, { return tagId ? `tag-${tagId}` : "tag_all"; }, - @discourseComputed("firstCategory", "secondCategory") + @discourseComputed("currentCategory") allTagsUrl() { if (this.currentCategory) { return Discourse.getURL(this.get("currentCategory.url") + "?allTags=1"); From 5df719a3c29f94a56744e4563d2b973ec53c0fdb Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 29 Nov 2019 16:12:05 -0500 Subject: [PATCH 357/408] FEATURE: Support pasting a list of usernames into a PM This allows you to paste multiple usernames into a PM's recipient list at once. It supports usernames separated by spaces, commas, and new lines. --- .../discourse/components/user-selector.js.es6 | 40 +++++++++++++++++++ .../components/composer-user-selector.hbs | 2 +- .../components/user-selector-test.js.es6 | 38 ++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 test/javascripts/components/user-selector-test.js.es6 diff --git a/app/assets/javascripts/discourse/components/user-selector.js.es6 b/app/assets/javascripts/discourse/components/user-selector.js.es6 index e6170b81ed..85e5c61dd7 100644 --- a/app/assets/javascripts/discourse/components/user-selector.js.es6 +++ b/app/assets/javascripts/discourse/components/user-selector.js.es6 @@ -9,6 +9,25 @@ export default TextField.extend({ autocapitalize: false, name: "user-selector", + init() { + this._super(); + this._paste = e => { + let pastedText = ""; + if (window.clipboardData && window.clipboardData.getData) { + // IE + pastedText = window.clipboardData.getData("Text"); + } else if (e.clipboardData && e.clipboardData.getData) { + pastedText = e.clipboardData.getData("text/plain"); + } + + if (pastedText.length > 0) { + this.importText(pastedText); + e.preventDefault(); + return false; + } + }; + }, + @observes("usernames") _update() { if (this.canReceiveUpdates === "true") { @@ -19,6 +38,7 @@ export default TextField.extend({ @on("willDestroyElement") _destroyAutocompleteInstance() { $(this.element).autocomplete("destroy"); + this.element.addEventListener("paste", this._paste); }, @on("didInsertElement") @@ -52,6 +72,8 @@ export default TextField.extend({ return usernames; }; + this.element.addEventListener("paste", this._paste); + const userSelectorComponent = this; $(this.element) @@ -128,6 +150,24 @@ export default TextField.extend({ }); }, + importText(text) { + let usernames = []; + if ((this.usernames || "").length > 0) { + usernames = this.usernames.split(","); + } + + (text || "").split(/[, \n]+/).forEach(val => { + val = val.replace(/^@+/, "").trim(); + if (val.length > 0) { + usernames.push(val); + } + }); + this.set("usernames", usernames.uniq().join(",")); + if (this.canReceiveUpdates !== "true") { + this._createAutocompleteInstance({ updateData: true }); + } + }, + // THIS IS A HUGE HACK TO SUPPORT CLEARING THE INPUT @observes("usernames") _clearInput() { diff --git a/app/assets/javascripts/discourse/templates/components/composer-user-selector.hbs b/app/assets/javascripts/discourse/templates/components/composer-user-selector.hbs index 9a9b1cfcf8..21c69bda7a 100644 --- a/app/assets/javascripts/discourse/templates/components/composer-user-selector.hbs +++ b/app/assets/javascripts/discourse/templates/components/composer-user-selector.hbs @@ -1,6 +1,6 @@ {{#if showSelector}} {{user-selector topicId=topicId - onChangeCallback=(action "triggerResize") + onChangeCallback=(action "triggerResize") id="private-message-users" includeMessageableGroups='true' placeholderKey="composer.users_placeholder" diff --git a/test/javascripts/components/user-selector-test.js.es6 b/test/javascripts/components/user-selector-test.js.es6 new file mode 100644 index 0000000000..407cbd6796 --- /dev/null +++ b/test/javascripts/components/user-selector-test.js.es6 @@ -0,0 +1,38 @@ +import componentTest from "helpers/component-test"; + +moduleForComponent("user-selector", { integration: true }); + +componentTest("pasting a list of usernames", { + template: `{{user-selector usernames=usernames class="test-selector"}}`, + + beforeEach() { + this.set("usernames", "evil,trout"); + }, + + test(assert) { + let element = find(".test-selector")[0]; + let paste = text => { + let e = new Event("paste"); + e.clipboardData = { getData: () => text }; + element.dispatchEvent(e); + }; + + assert.equal(this.get("usernames"), "evil,trout"); + paste("zip,zap,zoom"); + assert.equal(this.get("usernames"), "evil,trout,zip,zap,zoom"); + paste("evil,abc,abc,abc"); + assert.equal(this.get("usernames"), "evil,trout,zip,zap,zoom,abc"); + + this.set("usernames", ""); + paste("names with spaces"); + assert.equal(this.get("usernames"), "names,with,spaces"); + + this.set("usernames", null); + paste("@eviltrout,@codinghorror sam"); + assert.equal(this.get("usernames"), "eviltrout,codinghorror,sam"); + + this.set("usernames", null); + paste("eviltrout\nsam\ncodinghorror"); + assert.equal(this.get("usernames"), "eviltrout,sam,codinghorror"); + } +}); From b643526d9a407b8abb826dba78a954cdfe6d6133 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Mon, 2 Dec 2019 18:48:40 +0200 Subject: [PATCH 358/408] FIX: Do not autocomplete categories or emojis in code blocks (#8433) Emojis and category autocomplete show up often when writing code snippets, which makes it easy to insert unwanted text by mistake. --- .../discourse/components/d-editor.js.es6 | 13 ++++- .../discourse/lib/category-hashtags.js.es6 | 20 +++++--- .../discourse/lib/utilities.js.es6 | 39 ++++++++++++++ test/javascripts/lib/utilities-test.js.es6 | 51 ++++++++++++++++++- 4 files changed, 114 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index e668828ccb..e0b745a47f 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -20,7 +20,9 @@ import { siteDir } from "discourse/lib/text-direction"; import { determinePostReplaceSelection, clipboardData, - safariHacksDisabled + safariHacksDisabled, + caretPosition, + inCodeBlock } from "discourse/lib/utilities"; import toMarkdown from "discourse/lib/to-markdown"; import deprecated from "discourse-common/lib/deprecated"; @@ -420,6 +422,10 @@ export default Component.extend({ }, onKeyUp: (text, cp) => { + if (inCodeBlock(text, cp)) { + return false; + } + const matches = /(?:^|[^a-z])(:(?!:).?[\w-]*:?(?!:)(?:t\d?)?:?) ?$/gi.exec( text.substring(0, cp) ); @@ -511,7 +517,10 @@ export default Component.extend({ } return list; }); - } + }, + + triggerRule: textarea => + !inCodeBlock(textarea.value, caretPosition(textarea)) }); }, diff --git a/app/assets/javascripts/discourse/lib/category-hashtags.js.es6 b/app/assets/javascripts/discourse/lib/category-hashtags.js.es6 index cac265f259..28042fff16 100644 --- a/app/assets/javascripts/discourse/lib/category-hashtags.js.es6 +++ b/app/assets/javascripts/discourse/lib/category-hashtags.js.es6 @@ -1,5 +1,9 @@ export const SEPARATOR = ":"; -import { caretRowCol } from "discourse/lib/utilities"; +import { + caretRowCol, + caretPosition, + inCodeBlock +} from "discourse/lib/utilities"; export function replaceSpan($elem, categorySlug, categoryLink) { $elem.replaceWith( @@ -21,10 +25,14 @@ export function categoryHashtagTriggerRule(textarea, opts) { if (/^#{1}\w+/.test(line)) return false; } - if (col < 6) { - // Don't trigger autocomplete when ATX-style headers are used - return line.slice(0, col) !== "#".repeat(col); - } else { - return true; + // Don't trigger autocomplete when ATX-style headers are used + if (col < 6 && line.slice(0, col) === "#".repeat(col)) { + return false; } + + if (inCodeBlock(textarea.value, caretPosition(textarea))) { + return false; + } + + return true; } diff --git a/app/assets/javascripts/discourse/lib/utilities.js.es6 b/app/assets/javascripts/discourse/lib/utilities.js.es6 index 145674f3a5..4ab8eb7ccb 100644 --- a/app/assets/javascripts/discourse/lib/utilities.js.es6 +++ b/app/assets/javascripts/discourse/lib/utilities.js.es6 @@ -410,5 +410,44 @@ export function rescueThemeError(name, error, api) { document.body.prepend(alertDiv); } +const CODE_BLOCKS_RULES = [ + { rule: /`(?:[^`\n]+?\n?)+?`/gm, end: "`" }, + { rule: /^```[^]*?^```/gm, end: "\n```" }, + { rule: /\[code\][^]*?\[\/code\]/gm, end: "\n[/code]" } +]; + +export function getCodeBlocks(value) { + const blocks = []; + + CODE_BLOCKS_RULES.forEach(entry => { + const { rule, end } = entry; + + let match; + while ((match = rule.exec(value)) != null) { + blocks.push([match.index, match.index + match[0].length]); + } + + // Try to end block and see if other code blocks are found + if (end) { + while ((match = rule.exec(value + end)) != null) { + // Save only positions that were not found before (which end past the + // end of the original value). + if ( + match.index < value.length && + match.index + match[0].length > value.length + ) { + blocks.push([match.index, value.length]); + } + } + } + }); + + return blocks; +} + +export function inCodeBlock(value, pos) { + return getCodeBlocks(value).any(([start, end]) => start <= pos && pos <= end); +} + // This prevents a mini racer crash export default {}; diff --git a/test/javascripts/lib/utilities-test.js.es6 b/test/javascripts/lib/utilities-test.js.es6 index 39c9b0635a..46c00735bf 100644 --- a/test/javascripts/lib/utilities-test.js.es6 +++ b/test/javascripts/lib/utilities-test.js.es6 @@ -9,7 +9,9 @@ import { setDefaultHomepage, caretRowCol, setCaretPosition, - fillMissingDates + fillMissingDates, + getCodeBlocks, + inCodeBlock } from "discourse/lib/utilities"; QUnit.module("lib:utilities"); @@ -186,3 +188,50 @@ QUnit.test("fillMissingDates", assert => { "it returns a JSON array with 31 dates" ); }); + +QUnit.test("getCodeBlocks - works with [code]", assert => { + assert.deepEqual( + getCodeBlocks("[code]\nfoo\n[/code]\n\nbar\n\n[code]\nbaz"), + [ + [0, 18], + [25, 35] + ] + ); +}); + +QUnit.test("getCodeBlocks - works with backticks", assert => { + assert.deepEqual(getCodeBlocks("foo `bar\nbar`! `baz"), [ + [4, 13], + [15, 19] + ]); +}); + +QUnit.test("getCodeBlocks - works with triple backticks", assert => { + assert.deepEqual(getCodeBlocks("```\nfoo\n```\n\nbar\n\n```\nbaz"), [ + [0, 11], + [18, 25] + ]); +}); + +QUnit.test("inCodeBlock", assert => { + const raw = + "bar\n\n```\nfoo\n```\n\nbar\n\n`foo\nfoo`\n\nbar\n\n[code]\nfoo\n[/code]\n\nbar`foo"; + + assert.notOk(inCodeBlock(raw, 4)); + assert.ok(inCodeBlock(raw, 5)); + assert.ok(inCodeBlock(raw, 16)); + assert.notOk(inCodeBlock(raw, 17)); + + assert.notOk(inCodeBlock(raw, 22)); + assert.ok(inCodeBlock(raw, 23)); + assert.ok(inCodeBlock(raw, 32)); + assert.notOk(inCodeBlock(raw, 33)); + + assert.notOk(inCodeBlock(raw, 38)); + assert.ok(inCodeBlock(raw, 39)); + assert.ok(inCodeBlock(raw, 57)); + assert.notOk(inCodeBlock(raw, 58)); + + assert.notOk(inCodeBlock(raw, 61)); + assert.ok(inCodeBlock(raw, 62)); +}); From 87a298a59b67df9c3a752d7506b3a9fce215fd9d Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Mon, 2 Dec 2019 11:51:06 -0600 Subject: [PATCH 359/408] FIX: Poll pie container was too large (#8444) --- plugins/poll/assets/stylesheets/desktop/poll.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/poll/assets/stylesheets/desktop/poll.scss b/plugins/poll/assets/stylesheets/desktop/poll.scss index bbdf1a12af..3dd37b8f51 100644 --- a/plugins/poll/assets/stylesheets/desktop/poll.scss +++ b/plugins/poll/assets/stylesheets/desktop/poll.scss @@ -48,7 +48,7 @@ div.poll { div.poll.pie { .poll-container { - width: calc(100% - 181px); + width: calc(100% - 190px); .poll-grouped-pie-container { width: 50%; From 118fef23533679f28486b82121814018175b7db6 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Mon, 2 Dec 2019 13:59:52 -0600 Subject: [PATCH 360/408] FIX: Hide pie legend when results are grouped (#8445) --- .../assets/javascripts/widgets/discourse-poll.js.es6 | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 index 2932c8ecad..9fd47d5107 100644 --- a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 +++ b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 @@ -490,7 +490,10 @@ createWidget("discourse-poll-grouped-pies", { ) { const data = result.grouped_results[chartIdx].options.mapBy("votes"); const labels = result.grouped_results[chartIdx].options.mapBy("html"); - const chartConfig = pieChartConfig(data, labels, 1.2); + const chartConfig = pieChartConfig(data, labels, { + aspectRatio: 1.2, + displayLegend: false + }); const canvasId = `pie-${attrs.id}-${chartIdx}`; let el = document.querySelector(`#${canvasId}`); if (!el) { @@ -594,7 +597,9 @@ createWidget("discourse-poll-pie-chart", { } }); -function pieChartConfig(data, labels, aspectRatio = 2.0) { +function pieChartConfig(data, labels, opts = {}) { + const aspectRatio = "aspectRatio" in opts ? opts.aspectRatio : 2.0; + const displayLegend = "displayLegend" in opts ? opts.displayLegend : true; return { type: PIE_CHART_TYPE, data: { @@ -609,7 +614,8 @@ function pieChartConfig(data, labels, aspectRatio = 2.0) { options: { responsive: true, aspectRatio, - animation: { duration: 400 } + animation: { duration: 400 }, + legend: { display: displayLegend } } }; } From f65c4535556eeff24944369d6f262ef6be147eec Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Tue, 3 Dec 2019 09:27:26 +1100 Subject: [PATCH 361/408] Revert "FIX: Do not autocomplete categories or emojis in code blocks (#8433)" This reverts commit b643526d9a407b8abb826dba78a954cdfe6d6133. Sadly this introduces a regex runaway CPU condition, we will re-work this so it is safe. --- .../discourse/components/d-editor.js.es6 | 13 +---- .../discourse/lib/category-hashtags.js.es6 | 20 +++----- .../discourse/lib/utilities.js.es6 | 39 -------------- test/javascripts/lib/utilities-test.js.es6 | 51 +------------------ 4 files changed, 9 insertions(+), 114 deletions(-) diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index e0b745a47f..e668828ccb 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -20,9 +20,7 @@ import { siteDir } from "discourse/lib/text-direction"; import { determinePostReplaceSelection, clipboardData, - safariHacksDisabled, - caretPosition, - inCodeBlock + safariHacksDisabled } from "discourse/lib/utilities"; import toMarkdown from "discourse/lib/to-markdown"; import deprecated from "discourse-common/lib/deprecated"; @@ -422,10 +420,6 @@ export default Component.extend({ }, onKeyUp: (text, cp) => { - if (inCodeBlock(text, cp)) { - return false; - } - const matches = /(?:^|[^a-z])(:(?!:).?[\w-]*:?(?!:)(?:t\d?)?:?) ?$/gi.exec( text.substring(0, cp) ); @@ -517,10 +511,7 @@ export default Component.extend({ } return list; }); - }, - - triggerRule: textarea => - !inCodeBlock(textarea.value, caretPosition(textarea)) + } }); }, diff --git a/app/assets/javascripts/discourse/lib/category-hashtags.js.es6 b/app/assets/javascripts/discourse/lib/category-hashtags.js.es6 index 28042fff16..cac265f259 100644 --- a/app/assets/javascripts/discourse/lib/category-hashtags.js.es6 +++ b/app/assets/javascripts/discourse/lib/category-hashtags.js.es6 @@ -1,9 +1,5 @@ export const SEPARATOR = ":"; -import { - caretRowCol, - caretPosition, - inCodeBlock -} from "discourse/lib/utilities"; +import { caretRowCol } from "discourse/lib/utilities"; export function replaceSpan($elem, categorySlug, categoryLink) { $elem.replaceWith( @@ -25,14 +21,10 @@ export function categoryHashtagTriggerRule(textarea, opts) { if (/^#{1}\w+/.test(line)) return false; } - // Don't trigger autocomplete when ATX-style headers are used - if (col < 6 && line.slice(0, col) === "#".repeat(col)) { - return false; + if (col < 6) { + // Don't trigger autocomplete when ATX-style headers are used + return line.slice(0, col) !== "#".repeat(col); + } else { + return true; } - - if (inCodeBlock(textarea.value, caretPosition(textarea))) { - return false; - } - - return true; } diff --git a/app/assets/javascripts/discourse/lib/utilities.js.es6 b/app/assets/javascripts/discourse/lib/utilities.js.es6 index 4ab8eb7ccb..145674f3a5 100644 --- a/app/assets/javascripts/discourse/lib/utilities.js.es6 +++ b/app/assets/javascripts/discourse/lib/utilities.js.es6 @@ -410,44 +410,5 @@ export function rescueThemeError(name, error, api) { document.body.prepend(alertDiv); } -const CODE_BLOCKS_RULES = [ - { rule: /`(?:[^`\n]+?\n?)+?`/gm, end: "`" }, - { rule: /^```[^]*?^```/gm, end: "\n```" }, - { rule: /\[code\][^]*?\[\/code\]/gm, end: "\n[/code]" } -]; - -export function getCodeBlocks(value) { - const blocks = []; - - CODE_BLOCKS_RULES.forEach(entry => { - const { rule, end } = entry; - - let match; - while ((match = rule.exec(value)) != null) { - blocks.push([match.index, match.index + match[0].length]); - } - - // Try to end block and see if other code blocks are found - if (end) { - while ((match = rule.exec(value + end)) != null) { - // Save only positions that were not found before (which end past the - // end of the original value). - if ( - match.index < value.length && - match.index + match[0].length > value.length - ) { - blocks.push([match.index, value.length]); - } - } - } - }); - - return blocks; -} - -export function inCodeBlock(value, pos) { - return getCodeBlocks(value).any(([start, end]) => start <= pos && pos <= end); -} - // This prevents a mini racer crash export default {}; diff --git a/test/javascripts/lib/utilities-test.js.es6 b/test/javascripts/lib/utilities-test.js.es6 index 46c00735bf..39c9b0635a 100644 --- a/test/javascripts/lib/utilities-test.js.es6 +++ b/test/javascripts/lib/utilities-test.js.es6 @@ -9,9 +9,7 @@ import { setDefaultHomepage, caretRowCol, setCaretPosition, - fillMissingDates, - getCodeBlocks, - inCodeBlock + fillMissingDates } from "discourse/lib/utilities"; QUnit.module("lib:utilities"); @@ -188,50 +186,3 @@ QUnit.test("fillMissingDates", assert => { "it returns a JSON array with 31 dates" ); }); - -QUnit.test("getCodeBlocks - works with [code]", assert => { - assert.deepEqual( - getCodeBlocks("[code]\nfoo\n[/code]\n\nbar\n\n[code]\nbaz"), - [ - [0, 18], - [25, 35] - ] - ); -}); - -QUnit.test("getCodeBlocks - works with backticks", assert => { - assert.deepEqual(getCodeBlocks("foo `bar\nbar`! `baz"), [ - [4, 13], - [15, 19] - ]); -}); - -QUnit.test("getCodeBlocks - works with triple backticks", assert => { - assert.deepEqual(getCodeBlocks("```\nfoo\n```\n\nbar\n\n```\nbaz"), [ - [0, 11], - [18, 25] - ]); -}); - -QUnit.test("inCodeBlock", assert => { - const raw = - "bar\n\n```\nfoo\n```\n\nbar\n\n`foo\nfoo`\n\nbar\n\n[code]\nfoo\n[/code]\n\nbar`foo"; - - assert.notOk(inCodeBlock(raw, 4)); - assert.ok(inCodeBlock(raw, 5)); - assert.ok(inCodeBlock(raw, 16)); - assert.notOk(inCodeBlock(raw, 17)); - - assert.notOk(inCodeBlock(raw, 22)); - assert.ok(inCodeBlock(raw, 23)); - assert.ok(inCodeBlock(raw, 32)); - assert.notOk(inCodeBlock(raw, 33)); - - assert.notOk(inCodeBlock(raw, 38)); - assert.ok(inCodeBlock(raw, 39)); - assert.ok(inCodeBlock(raw, 57)); - assert.notOk(inCodeBlock(raw, 58)); - - assert.notOk(inCodeBlock(raw, 61)); - assert.ok(inCodeBlock(raw, 62)); -}); From f3109a1f25c52e4bf911ce3bd2854e0de480815d Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Tue, 3 Dec 2019 17:31:16 +1000 Subject: [PATCH 362/408] Add timezone to current_user_serializer (#8448) * the code to get current user already got their user_option record as well, so adding the timezone column to the attributes returned should not create any additional overhead. this timezone will be very useful for getting momentjs dates relative to the user's timezone --- app/serializers/current_user_serializer.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/serializers/current_user_serializer.rb b/app/serializers/current_user_serializer.rb index 72363fc3ac..a119bb324a 100644 --- a/app/serializers/current_user_serializer.rb +++ b/app/serializers/current_user_serializer.rb @@ -44,7 +44,8 @@ class CurrentUserSerializer < BasicUserSerializer :groups, :second_factor_enabled, :ignored_users, - :title_count_mode + :title_count_mode, + :timezone def groups object.visible_groups.pluck(:id, :name).map { |id, name| { id: id, name: name.downcase } } @@ -106,6 +107,10 @@ class CurrentUserSerializer < BasicUserSerializer object.user_option.redirected_to_top end + def timezone + object.user_option.timezone + end + def can_send_private_email_messages scope.can_send_private_messages_to_email? end From 69213d2ea4c23e44b26e58adc2e7c1b7d9351d62 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Tue, 3 Dec 2019 00:37:01 -0700 Subject: [PATCH 363/408] FIX: 500 error for missing badge grouping (#8446) If a badge grouping happens to have been deleted a 500 error will be thrown when looking a user's badges. This fix allows the badge page to still be shown without any errors. The badge with the missing badge grouping is still displayed. I'll follow up with a separate pr/commit that will ensure if a badge grouping is deleted, all badges with that badge_grouping_id will also be updated. --- app/serializers/basic_user_badge_serializer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/serializers/basic_user_badge_serializer.rb b/app/serializers/basic_user_badge_serializer.rb index 510f23b5e6..dd3880e423 100644 --- a/app/serializers/basic_user_badge_serializer.rb +++ b/app/serializers/basic_user_badge_serializer.rb @@ -10,6 +10,6 @@ class BasicUserBadgeSerializer < ApplicationSerializer end def grouping_position - object.badge.badge_grouping.position + object.badge&.badge_grouping&.position end end From 9eccfb7b5200cb35014606c6e85585e7a08586bb Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Tue, 3 Dec 2019 04:39:10 -0300 Subject: [PATCH 364/408] FIX: Guarantee order to correctly defer replies in review queue (#8426) Our code used to approve the first flagged post and ignore the rest in some specific conditions. --- app/controllers/posts_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index dd4b78e756..c28102530c 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -335,7 +335,7 @@ class PostsController < ApplicationController params.require(:post_ids) agree_with_first_reply_flag = (params[:agree_with_first_reply_flag] || true).to_s == "true" - posts = Post.where(id: post_ids_including_replies) + posts = Post.where(id: post_ids_including_replies).order(:id) raise Discourse::InvalidParameters.new(:post_ids) if posts.blank? # Make sure we can delete the posts From 0d3d2c43a0dd420e7702f329d4ffb7d63fe4c326 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Tue, 3 Dec 2019 10:05:53 +0100 Subject: [PATCH 365/408] DEV: s/\$redis/Discourse\.redis (#8431) This commit also adds a rubocop rule to prevent global variables. --- .rubocop.yml | 17 +++++++-- app/controllers/application_controller.rb | 4 +- app/controllers/forums_controller.rb | 2 +- app/controllers/session_controller.rb | 6 +-- app/controllers/user_api_keys_controller.rb | 2 +- .../users/associate_accounts_controller.rb | 4 +- .../users/omniauth_callbacks_controller.rb | 2 +- app/controllers/webhooks_controller.rb | 4 +- app/helpers/application_helper.rb | 2 +- .../onceoff/clean_up_sidekiq_statistic.rb | 2 +- app/jobs/onceoff/onceoff.rb | 4 +- app/jobs/regular/run_heartbeat.rb | 4 +- app/jobs/scheduled/clean_up_uploads.rb | 6 +-- .../pending_queued_posts_reminder.rb | 4 +- .../scheduled/pending_reviewables_reminder.rb | 6 +-- app/jobs/scheduled/pending_users_reminder.rb | 4 +- app/jobs/scheduled/poll_mailbox.rb | 12 +++--- app/mailers/user_notifications.rb | 4 +- app/models/admin_dashboard_data.rb | 16 ++++---- app/models/application_request.rb | 2 +- app/models/category_featured_topic.rb | 6 +-- app/models/concerns/cached_counting.rb | 10 ++--- app/models/concerns/stats_cacheable.rb | 4 +- app/models/global_setting.rb | 8 ++-- app/models/post.rb | 8 ++-- app/models/search_log.rb | 8 ++-- app/models/site.rb | 10 ++--- app/models/topic_link_click.rb | 4 +- app/models/topic_view_item.rb | 4 +- app/models/trust_level3_requirements.rb | 12 +++--- app/models/user.rb | 4 +- app/models/user_option.rb | 4 +- app/models/user_profile_view.rb | 4 +- app/models/user_stat.rb | 4 +- app/models/web_crawler_request.rb | 12 +++--- app/services/badge_granter.rb | 6 +-- app/services/group_message.rb | 4 +- app/services/random_topic_selector.rb | 18 ++++----- app/services/topic_timestamp_changer.rb | 2 +- config/application.rb | 2 +- config/initializers/001-redis.rb | 2 +- config/initializers/100-sidekiq.rb | 2 +- config/initializers/100-watch_for_restart.rb | 2 +- config/unicorn.conf.rb | 4 +- ...13174159_create_digest_unsubscribe_keys.rb | 8 ++-- ...0303183607_clear_common_passwords_cache.rb | 2 +- lib/admin_confirmation.rb | 12 +++--- lib/auth/default_current_user_provider.rb | 2 +- lib/auth/open_id_authenticator.rb | 2 +- lib/backup_restore.rb | 18 ++++----- lib/cache.rb | 4 +- lib/common_passwords/common_passwords.rb | 4 +- lib/discourse.rb | 37 +++++++++++-------- lib/discourse_hub.rb | 4 +- lib/discourse_redis.rb | 2 +- lib/discourse_updates.rb | 28 +++++++------- lib/distributed_memoizer.rb | 4 +- lib/distributed_mutex.rb | 2 +- lib/email/processor.rb | 4 +- lib/email_backup_token.rb | 6 +-- lib/final_destination.rb | 6 +-- lib/middleware/anonymous_cache.rb | 14 +++---- lib/oneboxer.rb | 6 +-- lib/post_revisor.rb | 8 ++-- lib/rate_limiter.rb | 10 ++--- lib/secure_session.rb | 10 ++--- lib/sidekiq/pausable.rb | 8 ++-- lib/stylesheet/watcher.rb | 4 +- lib/tasks/redis.rake | 2 +- lib/tasks/typepad.thor | 8 ++-- lib/topic_retriever.rb | 4 +- .../lib/discourse_narrative_bot/actions.rb | 6 +-- .../discourse_narrative_bot/track_selector.rb | 12 +++--- .../track_selector_spec.rb | 14 +++---- plugins/discourse-presence/plugin.rb | 12 +++--- .../spec/presence_manager_spec.rb | 8 ++-- .../spec/requests/presence_controller_spec.rb | 8 ++-- script/benchmarks/cache/bench.rb | 8 ++-- script/redis_memory.rb | 2 +- .../postgresql_fallback_adapter_spec.rb | 2 +- .../default_current_user_provider_spec.rb | 4 +- spec/components/cache_spec.rb | 8 ++-- spec/components/discourse_redis_spec.rb | 6 +-- spec/components/discourse_spec.rb | 16 ++++---- spec/components/distributed_memoizer_spec.rb | 6 +-- spec/components/distributed_mutex_spec.rb | 18 ++++----- spec/components/email/processor_spec.rb | 8 ++-- .../middleware/anonymous_cache_spec.rb | 2 +- .../middleware/request_tracker_spec.rb | 2 +- spec/components/post_revisor_spec.rb | 2 +- spec/components/pretty_text_spec.rb | 4 +- spec/components/rate_limiter_spec.rb | 4 +- spec/components/topic_query_spec.rb | 2 +- .../validators/post_validator_spec.rb | 2 +- spec/jobs/about_stats_spec.rb | 6 +-- spec/jobs/poll_mailbox_spec.rb | 2 +- spec/mailers/user_notifications_spec.rb | 2 +- spec/models/application_request_spec.rb | 10 ++--- spec/models/global_setting_spec.rb | 6 +-- spec/models/search_log_spec.rb | 2 +- spec/models/topic_spec.rb | 2 +- spec/models/user_spec.rb | 2 +- spec/models/user_stat_spec.rb | 4 +- spec/models/web_crawler_request_spec.rb | 8 ++-- spec/rails_helper.rb | 2 +- .../requests/admin/backups_controller_spec.rb | 2 +- spec/requests/admin/users_controller_spec.rb | 2 +- spec/requests/application_controller_spec.rb | 4 +- spec/requests/search_controller_spec.rb | 4 +- spec/requests/session_controller_spec.rb | 12 +++--- .../requests/user_api_keys_controller_spec.rb | 4 +- spec/requests/webhooks_controller_spec.rb | 2 +- spec/services/group_message_spec.rb | 12 +++--- spec/services/random_topic_selector_spec.rb | 8 ++-- spec/services/topic_timestamp_changer_spec.rb | 8 ++-- spec/services/word_watcher_spec.rb | 2 +- .../shared_examples_for_stats_cacheable.rb | 6 +-- spec/tasks/redis_spec.rb | 2 +- 118 files changed, 378 insertions(+), 362 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 9a5cd47be7..eebd794151 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -132,8 +132,17 @@ Style/Semicolon: Style/RedundantReturn: Enabled: true -DiscourseCops/NoChdir: - Enabled: true - Exclude: - - 'spec/**/*' # Specs are run sequentially, so chdir can be used +DiscourseCops/NoChdir: + Enabled: true + Exclude: + - 'spec/**/*' # Specs are run sequentially, so chdir can be used + - 'plugins/*/spec/**/*' + +Style/GlobalVars: + Enabled: true + Severity: warning + Exclude: + - 'lib/tasks/**/*' + - 'script/**/*' + - 'spec/**/*.rb' - 'plugins/*/spec/**/*' diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 592a80cdfc..f843ddc7e0 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -768,14 +768,14 @@ class ApplicationController < ActionController::Base if !SiteSetting.login_required? || (current_user rescue false) key = "page_not_found_topics" - if @topics_partial = $redis.get(key) + if @topics_partial = Discourse.redis.get(key) @topics_partial = @topics_partial.html_safe else category_topic_ids = Category.pluck(:topic_id).compact @top_viewed = TopicQuery.new(nil, except_topic_ids: category_topic_ids).list_top_for("monthly").topics.first(10) @recent = Topic.includes(:category).where.not(id: category_topic_ids).recent(10) @topics_partial = render_to_string partial: '/exceptions/not_found_topics', formats: [:html] - $redis.setex(key, 10.minutes, @topics_partial) + Discourse.redis.setex(key, 10.minutes, @topics_partial) end end diff --git a/app/controllers/forums_controller.rb b/app/controllers/forums_controller.rb index 734d475ee1..7192c59dd1 100644 --- a/app/controllers/forums_controller.rb +++ b/app/controllers/forums_controller.rb @@ -9,7 +9,7 @@ class ForumsController < ActionController::Base after_action :add_readonly_header def status - if $shutdown + if $shutdown # rubocop:disable Style/GlobalVars render plain: "shutting down", status: 500 else render plain: "ok" diff --git a/app/controllers/session_controller.rb b/app/controllers/session_controller.rb index 0bddc5322b..a0828685a7 100644 --- a/app/controllers/session_controller.rb +++ b/app/controllers/session_controller.rb @@ -409,15 +409,15 @@ class SessionController < ApplicationController end def one_time_password - @otp_username = otp_username = $redis.get "otp_#{params[:token]}" + @otp_username = otp_username = Discourse.redis.get "otp_#{params[:token]}" if otp_username && user = User.find_by_username(otp_username) if current_user&.username == otp_username - $redis.del "otp_#{params[:token]}" + Discourse.redis.del "otp_#{params[:token]}" return redirect_to path("/") elsif request.post? log_on_user(user) - $redis.del "otp_#{params[:token]}" + Discourse.redis.del "otp_#{params[:token]}" return redirect_to path("/") else # Display the form diff --git a/app/controllers/user_api_keys_controller.rb b/app/controllers/user_api_keys_controller.rb index d5d9e09cb6..353b4cb3e2 100644 --- a/app/controllers/user_api_keys_controller.rb +++ b/app/controllers/user_api_keys_controller.rb @@ -205,7 +205,7 @@ class UserApiKeysController < ApplicationController raise Discourse::InvalidAccess unless UserApiKey.allowed_scopes.superset?(Set.new(["one_time_password"])) otp = SecureRandom.hex - $redis.setex "otp_#{otp}", 10.minutes, username + Discourse.redis.setex "otp_#{otp}", 10.minutes, username Base64.encode64(public_key.public_encrypt(otp)) end diff --git a/app/controllers/users/associate_accounts_controller.rb b/app/controllers/users/associate_accounts_controller.rb index 6505afa6a7..2cb04a5d45 100644 --- a/app/controllers/users/associate_accounts_controller.rb +++ b/app/controllers/users/associate_accounts_controller.rb @@ -21,7 +21,7 @@ class Users::AssociateAccountsController < ApplicationController # Presents a confirmation screen to the user. Accessed via GET, with no CSRF checks def connect auth = get_auth_hash - $redis.del "#{REDIS_PREFIX}_#{current_user&.id}_#{params[:token]}" + Discourse.redis.del "#{REDIS_PREFIX}_#{current_user&.id}_#{params[:token]}" provider_name = auth.provider authenticator = Discourse.enabled_authenticators.find { |a| a.name == provider_name } @@ -37,7 +37,7 @@ class Users::AssociateAccountsController < ApplicationController def get_auth_hash token = params[:token] - json = $redis.get "#{REDIS_PREFIX}_#{current_user&.id}_#{token}" + json = Discourse.redis.get "#{REDIS_PREFIX}_#{current_user&.id}_#{token}" raise Discourse::NotFound if json.nil? OmniAuth::AuthHash.new(JSON.parse(json)) diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb index 7e7e108a35..5e38387224 100644 --- a/app/controllers/users/omniauth_callbacks_controller.rb +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -31,7 +31,7 @@ class Users::OmniauthCallbacksController < ApplicationController if session.delete(:auth_reconnect) && authenticator.can_connect_existing_user? && current_user # Save to redis, with a secret token, then redirect to confirmation screen token = SecureRandom.hex - $redis.setex "#{Users::AssociateAccountsController::REDIS_PREFIX}_#{current_user.id}_#{token}", 10.minutes, auth.to_json + Discourse.redis.setex "#{Users::AssociateAccountsController::REDIS_PREFIX}_#{current_user.id}_#{token}", 10.minutes, auth.to_json return redirect_to Discourse.base_uri("/associate/#{token}") else @auth_result = authenticator.after_authenticate(auth) diff --git a/app/controllers/webhooks_controller.rb b/app/controllers/webhooks_controller.rb index 02bff441fb..59e120dedd 100644 --- a/app/controllers/webhooks_controller.rb +++ b/app/controllers/webhooks_controller.rb @@ -119,8 +119,8 @@ class WebhooksController < ActionController::Base # prevent replay attacks key = "mailgun_token_#{token}" - return false unless $redis.setnx(key, 1) - $redis.expire(key, 10.minutes) + return false unless Discourse.redis.setnx(key, 1) + Discourse.redis.expire(key, 10.minutes) # ensure timestamp isn't too far from current time return false if (Time.at(timestamp.to_i) - Time.now).abs > 12.hours.to_i diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f4ef9660d6..4a5bf248e8 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -41,7 +41,7 @@ module ApplicationHelper return request.env[sk] if request.env[sk] request.env[sk] = key = (session[sk] ||= SecureRandom.hex) - $redis.setex "#{sk}_#{key}", 7.days, current_user.id.to_s + Discourse.redis.setex "#{sk}_#{key}", 7.days, current_user.id.to_s key end end diff --git a/app/jobs/onceoff/clean_up_sidekiq_statistic.rb b/app/jobs/onceoff/clean_up_sidekiq_statistic.rb index 397fc4f79b..7b51cde58b 100644 --- a/app/jobs/onceoff/clean_up_sidekiq_statistic.rb +++ b/app/jobs/onceoff/clean_up_sidekiq_statistic.rb @@ -3,7 +3,7 @@ module Jobs class CleanUpSidekiqStatistic < ::Jobs::Onceoff def execute_onceoff(args) - $redis.without_namespace.del('sidekiq:sidekiq:statistic') + Discourse.redis.without_namespace.del('sidekiq:sidekiq:statistic') end end end diff --git a/app/jobs/onceoff/onceoff.rb b/app/jobs/onceoff/onceoff.rb index 4de373399d..847779b817 100644 --- a/app/jobs/onceoff/onceoff.rb +++ b/app/jobs/onceoff/onceoff.rb @@ -16,7 +16,7 @@ class Jobs::Onceoff < ::Jobs::Base # Pass `force: true` to force it happen again def execute(args) job_name = self.class.name_for(self.class) - has_lock = $redis.setnx(running_key_name, Time.now.to_i) + has_lock = Discourse.redis.setnx(running_key_name, Time.now.to_i) # If we can't get a lock, just noop if args[:force] || has_lock @@ -25,7 +25,7 @@ class Jobs::Onceoff < ::Jobs::Base execute_onceoff(args) OnceoffLog.create!(job_name: job_name) ensure - $redis.del(running_key_name) if has_lock + Discourse.redis.del(running_key_name) if has_lock end end diff --git a/app/jobs/regular/run_heartbeat.rb b/app/jobs/regular/run_heartbeat.rb index 708c45f7db..4d5c013053 100644 --- a/app/jobs/regular/run_heartbeat.rb +++ b/app/jobs/regular/run_heartbeat.rb @@ -10,11 +10,11 @@ module Jobs end def execute(args) - $redis.set(self.class.heartbeat_key, Time.new.to_i.to_s) + Discourse.redis.set(self.class.heartbeat_key, Time.new.to_i.to_s) end def self.last_heartbeat - $redis.get(heartbeat_key).to_i + Discourse.redis.get(heartbeat_key).to_i end end end diff --git a/app/jobs/scheduled/clean_up_uploads.rb b/app/jobs/scheduled/clean_up_uploads.rb index 08e8aeb2a2..70d4d14441 100644 --- a/app/jobs/scheduled/clean_up_uploads.rb +++ b/app/jobs/scheduled/clean_up_uploads.rb @@ -96,16 +96,16 @@ module Jobs end def last_cleanup=(v) - $redis.setex(last_cleanup_key, 7.days.to_i, v.to_s) + Discourse.redis.setex(last_cleanup_key, 7.days.to_i, v.to_s) end def last_cleanup - v = $redis.get(last_cleanup_key) + v = Discourse.redis.get(last_cleanup_key) v ? v.to_i : v end def reset_last_cleanup! - $redis.del(last_cleanup_key) + Discourse.redis.del(last_cleanup_key) end protected diff --git a/app/jobs/scheduled/pending_queued_posts_reminder.rb b/app/jobs/scheduled/pending_queued_posts_reminder.rb index 599446374e..29bc670957 100644 --- a/app/jobs/scheduled/pending_queued_posts_reminder.rb +++ b/app/jobs/scheduled/pending_queued_posts_reminder.rb @@ -33,11 +33,11 @@ module Jobs end def last_notified_id - (i = $redis.get(self.class.last_notified_key)) && i.to_i + (i = Discourse.redis.get(self.class.last_notified_key)) && i.to_i end def last_notified_id=(arg) - $redis.set(self.class.last_notified_key, arg) + Discourse.redis.set(self.class.last_notified_key, arg) end def self.last_notified_key diff --git a/app/jobs/scheduled/pending_reviewables_reminder.rb b/app/jobs/scheduled/pending_reviewables_reminder.rb index f06e8a7ed2..df7a6a8aa3 100644 --- a/app/jobs/scheduled/pending_reviewables_reminder.rb +++ b/app/jobs/scheduled/pending_reviewables_reminder.rb @@ -37,11 +37,11 @@ module Jobs end def self.last_notified_id - $redis.get(last_notified_key).to_i + Discourse.redis.get(last_notified_key).to_i end def self.last_notified_id=(arg) - $redis.set(last_notified_key, arg) + Discourse.redis.set(last_notified_key, arg) end def self.last_notified_key @@ -49,7 +49,7 @@ module Jobs end def self.clear_key - $redis.del(last_notified_key) + Discourse.redis.del(last_notified_key) end def active_moderator_usernames diff --git a/app/jobs/scheduled/pending_users_reminder.rb b/app/jobs/scheduled/pending_users_reminder.rb index 8ef1332485..0c1be62ad8 100644 --- a/app/jobs/scheduled/pending_users_reminder.rb +++ b/app/jobs/scheduled/pending_users_reminder.rb @@ -50,11 +50,11 @@ module Jobs end def previous_newest_username - $redis.get previous_newest_username_cache_key + Discourse.redis.get previous_newest_username_cache_key end def previous_newest_username=(username) - $redis.setex previous_newest_username_cache_key, 7.days, username + Discourse.redis.setex previous_newest_username_cache_key, 7.days, username end def previous_newest_username_cache_key diff --git a/app/jobs/scheduled/poll_mailbox.rb b/app/jobs/scheduled/poll_mailbox.rb index f382e8fc8a..178cbdb9bd 100644 --- a/app/jobs/scheduled/poll_mailbox.rb +++ b/app/jobs/scheduled/poll_mailbox.rb @@ -43,15 +43,15 @@ module Jobs end end rescue Net::OpenTimeout => e - count = $redis.incr(POLL_MAILBOX_TIMEOUT_ERROR_KEY).to_i + count = Discourse.redis.incr(POLL_MAILBOX_TIMEOUT_ERROR_KEY).to_i - $redis.expire( + Discourse.redis.expire( POLL_MAILBOX_TIMEOUT_ERROR_KEY, SiteSetting.pop3_polling_period_mins.minutes * 3 ) if count == 1 if count > 3 - $redis.del(POLL_MAILBOX_TIMEOUT_ERROR_KEY) + Discourse.redis.del(POLL_MAILBOX_TIMEOUT_ERROR_KEY) mark_as_errored! add_admin_dashboard_problem_message('dashboard.poll_pop3_timeout') Discourse.handle_job_exception(e, error_context(@args, "Connecting to '#{SiteSetting.pop3_polling_host}' for polling emails.")) @@ -65,13 +65,13 @@ module Jobs POLL_MAILBOX_ERRORS_KEY ||= "poll_mailbox_errors".freeze def self.errors_in_past_24_hours - $redis.zremrangebyscore(POLL_MAILBOX_ERRORS_KEY, 0, 24.hours.ago.to_i) - $redis.zcard(POLL_MAILBOX_ERRORS_KEY).to_i + Discourse.redis.zremrangebyscore(POLL_MAILBOX_ERRORS_KEY, 0, 24.hours.ago.to_i) + Discourse.redis.zcard(POLL_MAILBOX_ERRORS_KEY).to_i end def mark_as_errored! now = Time.now.to_i - $redis.zadd(POLL_MAILBOX_ERRORS_KEY, now, now.to_s) + Discourse.redis.zadd(POLL_MAILBOX_ERRORS_KEY, now, now.to_s) end def add_admin_dashboard_problem_message(i18n_key) diff --git a/app/mailers/user_notifications.rb b/app/mailers/user_notifications.rb index 597607be26..0be2f2b3e1 100644 --- a/app/mailers/user_notifications.rb +++ b/app/mailers/user_notifications.rb @@ -697,9 +697,9 @@ class UserNotifications < ActionMailer::Base def summary_new_users_count(min_date) min_date_str = min_date.is_a?(String) ? min_date : min_date.strftime('%Y-%m-%d') key = self.class.summary_new_users_count_key(min_date_str) - ((count = $redis.get(key)) && count.to_i) || begin + ((count = Discourse.redis.get(key)) && count.to_i) || begin count = User.real.where(active: true, staged: false).not_suspended.where("created_at > ?", min_date_str).count - $redis.setex(key, 1.day, count) + Discourse.redis.setex(key, 1.day, count) count end end diff --git a/app/models/admin_dashboard_data.rb b/app/models/admin_dashboard_data.rb index 288158eb32..889be79bd9 100644 --- a/app/models/admin_dashboard_data.rb +++ b/app/models/admin_dashboard_data.rb @@ -63,16 +63,16 @@ class AdminDashboardData end def self.set_problems_started - existing_time = $redis.get(problems_started_key) - $redis.setex(problems_started_key, 14.days.to_i, existing_time || Time.zone.now.to_s) + existing_time = Discourse.redis.get(problems_started_key) + Discourse.redis.setex(problems_started_key, 14.days.to_i, existing_time || Time.zone.now.to_s) end def self.clear_problems_started - $redis.del problems_started_key + Discourse.redis.del problems_started_key end def self.problems_started_at - s = $redis.get(problems_started_key) + s = Discourse.redis.get(problems_started_key) s ? Time.zone.parse(s) : nil end @@ -109,19 +109,19 @@ class AdminDashboardData end def self.problem_message_check(i18n_key) - $redis.get(problem_message_key(i18n_key)) ? I18n.t(i18n_key, base_path: Discourse.base_path) : nil + Discourse.redis.get(problem_message_key(i18n_key)) ? I18n.t(i18n_key, base_path: Discourse.base_path) : nil end def self.add_problem_message(i18n_key, expire_seconds = nil) if expire_seconds.to_i > 0 - $redis.setex problem_message_key(i18n_key), expire_seconds.to_i, 1 + Discourse.redis.setex problem_message_key(i18n_key), expire_seconds.to_i, 1 else - $redis.set problem_message_key(i18n_key), 1 + Discourse.redis.set problem_message_key(i18n_key), 1 end end def self.clear_problem_message(i18n_key) - $redis.del problem_message_key(i18n_key) + Discourse.redis.del problem_message_key(i18n_key) end def self.problem_message_key(i18n_key) diff --git a/app/models/application_request.rb b/app/models/application_request.rb index 2447501445..df3cc15ab4 100644 --- a/app/models/application_request.rb +++ b/app/models/application_request.rb @@ -52,7 +52,7 @@ class ApplicationRequest < ActiveRecord::Base req_types.each do |req_type, _| key = redis_key(req_type, date) - $redis.del key + Discourse.redis.del key end end diff --git a/app/models/category_featured_topic.rb b/app/models/category_featured_topic.rb index 9ffb283b18..2848383605 100644 --- a/app/models/category_featured_topic.rb +++ b/app/models/category_featured_topic.rb @@ -16,7 +16,7 @@ class CategoryFeaturedTopic < ActiveRecord::Base batch_size ||= DEFAULT_BATCH_SIZE - next_category_id = batched ? $redis.get(NEXT_CATEGORY_ID_KEY).to_i : 0 + next_category_id = batched ? Discourse.redis.get(NEXT_CATEGORY_ID_KEY).to_i : 0 categories = Category.select(:id, :topic_id, :num_featured_topics) .where('id >= ?', next_category_id) @@ -27,7 +27,7 @@ class CategoryFeaturedTopic < ActiveRecord::Base if batched if categories.length == batch_size next_id = Category.where('id > ?', categories.last.id).order('id asc').limit(1).pluck(:id)[0] - next_id ? $redis.setex(NEXT_CATEGORY_ID_KEY, 1.day, next_id) : clear_batch! + next_id ? Discourse.redis.setex(NEXT_CATEGORY_ID_KEY, 1.day, next_id) : clear_batch! else clear_batch! end @@ -39,7 +39,7 @@ class CategoryFeaturedTopic < ActiveRecord::Base end def self.clear_batch! - $redis.del(NEXT_CATEGORY_ID_KEY) + Discourse.redis.del(NEXT_CATEGORY_ID_KEY) end def self.feature_topics_for(c, existing = nil) diff --git a/app/models/concerns/cached_counting.rb b/app/models/concerns/cached_counting.rb index 4430126ced..86871677c8 100644 --- a/app/models/concerns/cached_counting.rb +++ b/app/models/concerns/cached_counting.rb @@ -19,13 +19,13 @@ module CachedCounting class_methods do def perform_increment!(key, opts = nil) - val = $redis.incr(key).to_i + val = Discourse.redis.incr(key).to_i # readonly mode it is going to be 0, skip return if val == 0 # 3.days, see: https://github.com/rails/rails/issues/21296 - $redis.expire(key, 259200) + Discourse.redis.expire(key, 259200) autoflush = (opts && opts[:autoflush]) || self.autoflush if autoflush > 0 && val >= autoflush @@ -51,9 +51,9 @@ module CachedCounting # this may seem a bit fancy but in so it allows # for concurrent calls without double counting def get_and_reset(key) - namespaced_key = $redis.namespace_key(key) - val = $redis.without_namespace.eval(GET_AND_RESET, keys: [namespaced_key]).to_i - $redis.expire(key, 259200) # SET removes expiry, so set it again + namespaced_key = Discourse.redis.namespace_key(key) + val = Discourse.redis.without_namespace.eval(GET_AND_RESET, keys: [namespaced_key]).to_i + Discourse.redis.expire(key, 259200) # SET removes expiry, so set it again val end diff --git a/app/models/concerns/stats_cacheable.rb b/app/models/concerns/stats_cacheable.rb index 22968ab31a..31d4908097 100644 --- a/app/models/concerns/stats_cacheable.rb +++ b/app/models/concerns/stats_cacheable.rb @@ -19,7 +19,7 @@ module StatsCacheable def fetch_cached_stats # The scheduled Stats job is responsible for generating and caching this. - stats = $redis.get(stats_cache_key) + stats = Discourse.redis.get(stats_cache_key) stats = refresh_stats if !stats JSON.parse(stats).with_indifferent_access end @@ -35,7 +35,7 @@ module StatsCacheable def set_cache(stats) # Add some extra time to the expiry so that the next job run has plenty of time to # finish before previous cached value expires. - $redis.setex stats_cache_key, (recalculate_stats_interval + 5).minutes, stats + Discourse.redis.setex stats_cache_key, (recalculate_stats_interval + 5).minutes, stats end end end diff --git a/app/models/global_setting.rb b/app/models/global_setting.rb index d7e126155c..eb3592d1e4 100644 --- a/app/models/global_setting.rb +++ b/app/models/global_setting.rb @@ -26,9 +26,9 @@ class GlobalSetting if @safe_secret_key_base && @token_in_redis && (@token_last_validated + REDIS_VALIDATE_SECONDS) < Time.now @token_last_validated = Time.now - token = $redis.without_namespace.get(REDIS_SECRET_KEY) + token = Discourse.redis.without_namespace.get(REDIS_SECRET_KEY) if token.nil? - $redis.without_namespace.set(REDIS_SECRET_KEY, @safe_secret_key_base) + Discourse.redis.without_namespace.set(REDIS_SECRET_KEY, @safe_secret_key_base) end end @@ -39,10 +39,10 @@ class GlobalSetting @token_in_redis = true @token_last_validated = Time.now - token = $redis.without_namespace.get(REDIS_SECRET_KEY) + token = Discourse.redis.without_namespace.get(REDIS_SECRET_KEY) unless token && token =~ VALID_SECRET_KEY token = SecureRandom.hex(64) - $redis.without_namespace.set(REDIS_SECRET_KEY, token) + Discourse.redis.without_namespace.set(REDIS_SECRET_KEY, token) end end if !secret_key_base.blank? && token != secret_key_base diff --git a/app/models/post.rb b/app/models/post.rb index e348723242..73acc182d5 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -247,12 +247,12 @@ class Post < ActiveRecord::Base def store_unique_post_key if SiteSetting.unique_posts_mins > 0 - $redis.setex(unique_post_key, SiteSetting.unique_posts_mins.minutes.to_i, id) + Discourse.redis.setex(unique_post_key, SiteSetting.unique_posts_mins.minutes.to_i, id) end end def matches_recent_post? - post_id = $redis.get(unique_post_key) + post_id = Discourse.redis.get(unique_post_key) post_id != (nil) && post_id.to_i != (id) end @@ -696,11 +696,11 @@ class Post < ActiveRecord::Base end def self.estimate_posts_per_day - val = $redis.get("estimated_posts_per_day") + val = Discourse.redis.get("estimated_posts_per_day") return val.to_i if val posts_per_day = Topic.listable_topics.secured.joins(:posts).merge(Post.created_since(30.days.ago)).count / 30 - $redis.setex("estimated_posts_per_day", 1.day.to_i, posts_per_day.to_s) + Discourse.redis.setex("estimated_posts_per_day", 1.day.to_i, posts_per_day.to_s) posts_per_day end diff --git a/app/models/search_log.rb b/app/models/search_log.rb index dd0939a3d1..003331250b 100644 --- a/app/models/search_log.rb +++ b/app/models/search_log.rb @@ -39,8 +39,8 @@ class SearchLog < ActiveRecord::Base # for testing def self.clear_debounce_cache! - $redis.keys("__SEARCH__LOG_*").each do |k| - $redis.del(k) + Discourse.redis.keys("__SEARCH__LOG_*").each do |k| + Discourse.redis.del(k) end end @@ -56,7 +56,7 @@ class SearchLog < ActiveRecord::Base result = nil - if existing = $redis.get(key) + if existing = Discourse.redis.get(key) id, old_term = existing.split(",", 2) if term.start_with?(old_term) @@ -80,7 +80,7 @@ class SearchLog < ActiveRecord::Base result = [:created, log.id] end - $redis.setex(key, 5, "#{result[1]},#{term}") + Discourse.redis.setex(key, 5, "#{result[1]},#{term}") result end diff --git a/app/models/site.rb b/app/models/site.rb index e96a888a89..de8cfe0be5 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -102,7 +102,7 @@ class Site if guardian.anonymous? seq = MessageBus.last_id('/site_json') - cached_json, cached_seq, cached_version = $redis.mget('site_json', 'site_json_seq', 'site_json_version') + cached_json, cached_seq, cached_version = Discourse.redis.mget('site_json', 'site_json_seq', 'site_json_version') if cached_json && seq == cached_seq.to_i && Discourse.git_version == cached_version return cached_json @@ -114,10 +114,10 @@ class Site json = MultiJson.dump(SiteSerializer.new(site, root: false, scope: guardian)) if guardian.anonymous? - $redis.multi do - $redis.setex 'site_json', 1800, json - $redis.set 'site_json_seq', seq - $redis.set 'site_json_version', Discourse.git_version + Discourse.redis.multi do + Discourse.redis.setex 'site_json', 1800, json + Discourse.redis.set 'site_json_seq', seq + Discourse.redis.set 'site_json_version', Discourse.git_version end end diff --git a/app/models/topic_link_click.rb b/app/models/topic_link_click.rb index 6b45f7e9af..a4b59b9dd4 100644 --- a/app/models/topic_link_click.rb +++ b/app/models/topic_link_click.rb @@ -102,8 +102,8 @@ class TopicLinkClick < ActiveRecord::Base # Rate limit the click counts to once in 24 hours rate_key = "link-clicks:#{link.id}:#{args[:user_id] || args[:ip]}" - if $redis.setnx(rate_key, "1") - $redis.expire(rate_key, 1.day.to_i) + if Discourse.redis.setnx(rate_key, "1") + Discourse.redis.expire(rate_key, 1.day.to_i) args[:ip] = nil if args[:user_id] create!(topic_link_id: link.id, user_id: args[:user_id], ip_address: args[:ip]) end diff --git a/app/models/topic_view_item.rb b/app/models/topic_view_item.rb index 60edba453c..ff8ff957c2 100644 --- a/app/models/topic_view_item.rb +++ b/app/models/topic_view_item.rb @@ -18,8 +18,8 @@ class TopicViewItem < ActiveRecord::Base redis_key << ":ip-#{ip}" end - if skip_redis || $redis.setnx(redis_key, "1") - skip_redis || $redis.expire(redis_key, SiteSetting.topic_view_duration_hours.hours) + if skip_redis || Discourse.redis.setnx(redis_key, "1") + skip_redis || Discourse.redis.expire(redis_key, SiteSetting.topic_view_duration_hours.hours) TopicViewItem.transaction do # this is called real frequently, working hard to avoid exceptions diff --git a/app/models/trust_level3_requirements.rb b/app/models/trust_level3_requirements.rb index 26224e018e..3092259aaf 100644 --- a/app/models/trust_level3_requirements.rb +++ b/app/models/trust_level3_requirements.rb @@ -243,8 +243,8 @@ class TrustLevel3Requirements end def self.clear_cache - $redis.del NUM_TOPICS_KEY - $redis.del NUM_POSTS_KEY + Discourse.redis.del NUM_TOPICS_KEY + Discourse.redis.del NUM_POSTS_KEY end CACHE_DURATION = 1.day.seconds - 60 @@ -252,17 +252,17 @@ class TrustLevel3Requirements NUM_POSTS_KEY = "tl3_num_posts" def self.num_topics_in_time_period - $redis.get(NUM_TOPICS_KEY) || begin + Discourse.redis.get(NUM_TOPICS_KEY) || begin count = Topic.listable_topics.visible.created_since(SiteSetting.tl3_time_period.days.ago).count - $redis.setex NUM_TOPICS_KEY, CACHE_DURATION, count + Discourse.redis.setex NUM_TOPICS_KEY, CACHE_DURATION, count count end end def self.num_posts_in_time_period - $redis.get(NUM_POSTS_KEY) || begin + Discourse.redis.get(NUM_POSTS_KEY) || begin count = Post.public_posts.visible.created_since(SiteSetting.tl3_time_period.days.ago).count - $redis.setex NUM_POSTS_KEY, CACHE_DURATION, count + Discourse.redis.setex NUM_POSTS_KEY, CACHE_DURATION, count count end end diff --git a/app/models/user.rb b/app/models/user.rb index dd099725ea..44dbfa7b1f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -711,9 +711,9 @@ class User < ActiveRecord::Base now_date = now.to_date # Only update last seen once every minute redis_key = "user:#{id}:#{now_date}" - return unless $redis.setnx(redis_key, "1") + return unless Discourse.redis.setnx(redis_key, "1") - $redis.expire(redis_key, SiteSetting.active_user_rate_limit_secs) + Discourse.redis.expire(redis_key, SiteSetting.active_user_rate_limit_secs) update_previous_visit(now) # using update_column to avoid the AR transaction update_column(:last_seen_at, now) diff --git a/app/models/user_option.rb b/app/models/user_option.rb index 9756f3d0de..10fd562c6c 100644 --- a/app/models/user_option.rb +++ b/app/models/user_option.rb @@ -94,8 +94,8 @@ class UserOption < ActiveRecord::Base delay = SiteSetting.active_user_rate_limit_secs # only update last_redirected_to_top_at once every minute - return unless $redis.setnx(key, "1") - $redis.expire(key, delay) + return unless Discourse.redis.setnx(key, "1") + Discourse.redis.expire(key, delay) # delay the update Jobs.enqueue_in(delay / 2, :update_top_redirection, user_id: self.user_id, redirected_at: Time.zone.now) diff --git a/app/models/user_profile_view.rb b/app/models/user_profile_view.rb index ef8d37b0b7..5bc6acbe14 100644 --- a/app/models/user_profile_view.rb +++ b/app/models/user_profile_view.rb @@ -16,8 +16,8 @@ class UserProfileView < ActiveRecord::Base redis_key << ":ip-#{ip}" end - if skip_redis || $redis.setnx(redis_key, '1') - skip_redis || $redis.expire(redis_key, SiteSetting.user_profile_view_duration_hours.hours) + if skip_redis || Discourse.redis.setnx(redis_key, '1') + skip_redis || Discourse.redis.expire(redis_key, SiteSetting.user_profile_view_duration_hours.hours) self.transaction do sql = "INSERT INTO user_profile_views (user_profile_id, ip_address, viewed_at, user_id) diff --git a/app/models/user_stat.rb b/app/models/user_stat.rb index 2aabbdbf32..e76c8c113a 100644 --- a/app/models/user_stat.rb +++ b/app/models/user_stat.rb @@ -163,11 +163,11 @@ class UserStat < ActiveRecord::Base end def self.last_seen_cached(id) - $redis.get(last_seen_key(id)) + Discourse.redis.get(last_seen_key(id)) end def self.cache_last_seen(id, val) - $redis.setex(last_seen_key(id), MAX_TIME_READ_DIFF, val) + Discourse.redis.setex(last_seen_key(id), MAX_TIME_READ_DIFF, val) end protected diff --git a/app/models/web_crawler_request.rb b/app/models/web_crawler_request.rb index fb61f95b10..ac55ce4a8f 100644 --- a/app/models/web_crawler_request.rb +++ b/app/models/web_crawler_request.rb @@ -16,8 +16,8 @@ class WebCrawlerRequest < ActiveRecord::Base def self.increment!(user_agent, opts = nil) ua_list_key = user_agent_list_key - $redis.sadd(ua_list_key, user_agent) - $redis.expire(ua_list_key, 259200) # 3.days + Discourse.redis.sadd(ua_list_key, user_agent) + Discourse.redis.expire(ua_list_key, 259200) # 3.days perform_increment!(redis_key(user_agent), opts) end @@ -34,7 +34,7 @@ class WebCrawlerRequest < ActiveRecord::Base date = date.to_date ua_list_key = user_agent_list_key(date) - while user_agent = $redis.spop(ua_list_key) + while user_agent = Discourse.redis.spop(ua_list_key) val = get_and_reset(redis_key(user_agent, date)) next if val == 0 @@ -55,11 +55,11 @@ class WebCrawlerRequest < ActiveRecord::Base ua_list_key = user_agent_list_key(date) - while user_agent = $redis.spop(ua_list_key) - $redis.del redis_key(user_agent, date) + while user_agent = Discourse.redis.spop(ua_list_key) + Discourse.redis.del redis_key(user_agent, date) end - $redis.del(ua_list_key) + Discourse.redis.del(ua_list_key) end protected diff --git a/app/services/badge_granter.rb b/app/services/badge_granter.rb index c7c6049ddb..25462cf467 100644 --- a/app/services/badge_granter.rb +++ b/app/services/badge_granter.rb @@ -122,17 +122,17 @@ class BadgeGranter } end - $redis.lpush queue_key, payload.to_json if payload + Discourse.redis.lpush queue_key, payload.to_json if payload end def self.clear_queue! - $redis.del queue_key + Discourse.redis.del queue_key end def self.process_queue! limit = 1000 items = [] - while limit > 0 && item = $redis.lpop(queue_key) + while limit > 0 && item = Discourse.redis.lpop(queue_key) items << JSON.parse(item) limit -= 1 end diff --git a/app/services/group_message.rb b/app/services/group_message.rb index 5c22d90d52..d944f22e6d 100644 --- a/app/services/group_message.rb +++ b/app/services/group_message.rb @@ -54,12 +54,12 @@ class GroupMessage def sent_recently? return false if @opts[:limit_once_per] == false - $redis.get(sent_recently_key).present? + Discourse.redis.get(sent_recently_key).present? end # default is to send no more than once every 24 hours (24 * 60 * 60 = 86,400 seconds) def remember_message_sent - $redis.setex(sent_recently_key, @opts[:limit_once_per].try(:to_i) || 86_400, 1) unless @opts[:limit_once_per] == false + Discourse.redis.setex(sent_recently_key, @opts[:limit_once_per].try(:to_i) || 86_400, 1) unless @opts[:limit_once_per] == false end def sent_recently_key diff --git a/app/services/random_topic_selector.rb b/app/services/random_topic_selector.rb index b7a1087b46..4a89646dbe 100644 --- a/app/services/random_topic_selector.rb +++ b/app/services/random_topic_selector.rb @@ -40,9 +40,9 @@ class RandomTopicSelector key = cache_key(category) if results.present? - $redis.multi do - $redis.rpush(key, results) - $redis.expire(key, 2.days) + Discourse.redis.multi do + Discourse.redis.rpush(key, results) + Discourse.redis.expire(key, 2.days) end end @@ -56,13 +56,13 @@ class RandomTopicSelector return results if count < 1 - results = $redis.multi do - $redis.lrange(key, 0, count - 1) - $redis.ltrim(key, count, -1) + results = Discourse.redis.multi do + Discourse.redis.lrange(key, 0, count - 1) + Discourse.redis.ltrim(key, count, -1) end if !results.is_a?(Array) # Redis is in readonly mode - results = $redis.lrange(key, 0, count - 1) + results = Discourse.redis.lrange(key, 0, count - 1) else results = results[0] end @@ -80,7 +80,7 @@ class RandomTopicSelector results = results[0...count] end - if !backfilled && $redis.llen(key) < BACKFILL_LOW_WATER_MARK + if !backfilled && Discourse.redis.llen(key) < BACKFILL_LOW_WATER_MARK Scheduler::Defer.later("backfill") do backfill(category) end @@ -94,7 +94,7 @@ class RandomTopicSelector end def self.clear_cache! - $redis.delete_prefixed(cache_key) + Discourse.redis.delete_prefixed(cache_key) end end diff --git a/app/services/topic_timestamp_changer.rb b/app/services/topic_timestamp_changer.rb index bc24369718..d02cda99f4 100644 --- a/app/services/topic_timestamp_changer.rb +++ b/app/services/topic_timestamp_changer.rb @@ -35,7 +35,7 @@ class TopicTimestampChanger end # Burst the cache for stats - [AdminDashboardData, About].each { |klass| $redis.del klass.stats_cache_key } + [AdminDashboardData, About].each { |klass| Discourse.redis.del klass.stats_cache_key } end private diff --git a/config/application.rb b/config/application.rb index a8f2fcc98f..a8e9af88d7 100644 --- a/config/application.rb +++ b/config/application.rb @@ -243,7 +243,7 @@ module Discourse require 'logster/redis_store' # Use redis for our cache config.cache_store = DiscourseRedis.new_redis_store - $redis = DiscourseRedis.new + $redis = DiscourseRedis.new # rubocop:disable Style/GlobalVars Logster.store = Logster::RedisStore.new(DiscourseRedis.new) # we configure rack cache on demand in an initializer diff --git a/config/initializers/001-redis.rb b/config/initializers/001-redis.rb index 61bd490bd0..e48441594e 100644 --- a/config/initializers/001-redis.rb +++ b/config/initializers/001-redis.rb @@ -2,5 +2,5 @@ if Rails.env.development? && ENV['DISCOURSE_FLUSH_REDIS'] puts "Flushing redis (development mode)" - $redis.flushall + Discourse.redis.flushall end diff --git a/config/initializers/100-sidekiq.rb b/config/initializers/100-sidekiq.rb index 1c95cdbe83..f3241e3562 100644 --- a/config/initializers/100-sidekiq.rb +++ b/config/initializers/100-sidekiq.rb @@ -24,7 +24,7 @@ end MiniScheduler.configure do |config| - config.redis = $redis + config.redis = Discourse.redis config.job_exception_handler do |ex, context| Discourse.handle_job_exception(ex, context) diff --git a/config/initializers/100-watch_for_restart.rb b/config/initializers/100-watch_for_restart.rb index 292bf54bd3..bb18758cf9 100644 --- a/config/initializers/100-watch_for_restart.rb +++ b/config/initializers/100-watch_for_restart.rb @@ -29,7 +29,7 @@ Thread.new do if old_time != time Rails.logger.info "attempting to reload #{$$} #{$PROGRAM_NAME} in #{wait_seconds} seconds" - $shutdown = true + $shutdown = true # rubocop:disable Style/GlobalVars sleep wait_seconds Rails.logger.info "restarting #{$$}" Process.kill("USR2", $$) diff --git a/config/unicorn.conf.rb b/config/unicorn.conf.rb index f4e6c4f9a3..6c0ac9a7ef 100644 --- a/config/unicorn.conf.rb +++ b/config/unicorn.conf.rb @@ -155,7 +155,7 @@ before_fork do |server, worker| sleep 10 force_kill_rogue_sidekiq end - $redis._client.disconnect + Discourse.redis._client.disconnect end end @@ -170,7 +170,7 @@ before_fork do |server, worker| end - $redis._client.disconnect + Discourse.redis._client.disconnect # Throttle the master from forking too quickly by sleeping. Due # to the implementation of standard Unix signal handlers, this diff --git a/db/migrate/20150213174159_create_digest_unsubscribe_keys.rb b/db/migrate/20150213174159_create_digest_unsubscribe_keys.rb index a7e1107575..aeb7e86dba 100644 --- a/db/migrate/20150213174159_create_digest_unsubscribe_keys.rb +++ b/db/migrate/20150213174159_create_digest_unsubscribe_keys.rb @@ -18,18 +18,18 @@ class CreateDigestUnsubscribeKeys < ActiveRecord::Migration[4.2] def migrate_redis_keys return if Rails.env.test? - temp_keys = $redis.keys('temporary_key:*') + temp_keys = Discourse.redis.keys('temporary_key:*') if temp_keys.present? temp_keys.map! do |key| - user_id = $redis.get(key).to_i - ttl = $redis.ttl(key).to_i + user_id = Discourse.redis.get(key).to_i + ttl = Discourse.redis.ttl(key).to_i if ttl > 0 ttl = "'#{ttl.seconds.ago.strftime('%Y-%m-%d %H:%M:%S')}'" else ttl = "CURRENT_TIMESTAMP" end - $redis.del(key) + Discourse.redis.del(key) key.gsub!('temporary_key:', '') user_id ? "('#{key}', #{user_id}, #{ttl}, #{ttl})" : nil end diff --git a/db/migrate/20160303183607_clear_common_passwords_cache.rb b/db/migrate/20160303183607_clear_common_passwords_cache.rb index bb4e515663..421301e9ed 100644 --- a/db/migrate/20160303183607_clear_common_passwords_cache.rb +++ b/db/migrate/20160303183607_clear_common_passwords_cache.rb @@ -4,6 +4,6 @@ require "common_passwords/common_passwords" class ClearCommonPasswordsCache < ActiveRecord::Migration[4.2] def change - $redis.without_namespace.del CommonPasswords::LIST_KEY + Discourse.redis.without_namespace.del CommonPasswords::LIST_KEY end end diff --git a/lib/admin_confirmation.rb b/lib/admin_confirmation.rb index bf9254db43..dc132b72f7 100644 --- a/lib/admin_confirmation.rb +++ b/lib/admin_confirmation.rb @@ -15,13 +15,13 @@ class AdminConfirmation guardian.ensure_can_grant_admin!(@target_user) @token = SecureRandom.hex - $redis.setex("admin-confirmation:#{@target_user.id}", 3.hours.to_i, @token) + Discourse.redis.setex("admin-confirmation:#{@target_user.id}", 3.hours.to_i, @token) payload = { target_user_id: @target_user.id, performed_by: @performed_by.id } - $redis.setex("admin-confirmation-token:#{@token}", 3.hours.to_i, payload.to_json) + Discourse.redis.setex("admin-confirmation-token:#{@token}", 3.hours.to_i, payload.to_json) Jobs.enqueue( :admin_confirmation_email, @@ -38,16 +38,16 @@ class AdminConfirmation @target_user.grant_admin! StaffActionLogger.new(@performed_by).log_grant_admin(@target_user) - $redis.del "admin-confirmation:#{@target_user.id}" - $redis.del "admin-confirmation-token:#{@token}" + Discourse.redis.del "admin-confirmation:#{@target_user.id}" + Discourse.redis.del "admin-confirmation-token:#{@token}" end def self.exists_for?(user_id) - $redis.exists "admin-confirmation:#{user_id}" + Discourse.redis.exists "admin-confirmation:#{user_id}" end def self.find_by_code(token) - json = $redis.get("admin-confirmation-token:#{token}") + json = Discourse.redis.get("admin-confirmation-token:#{token}") return nil unless json parsed = JSON.parse(json) diff --git a/lib/auth/default_current_user_provider.rb b/lib/auth/default_current_user_provider.rb index 86d6bb3d5e..3bc8957ea3 100644 --- a/lib/auth/default_current_user_provider.rb +++ b/lib/auth/default_current_user_provider.rb @@ -30,7 +30,7 @@ class Auth::DefaultCurrentUserProvider # bypass if we have the shared session header if shared_key = @env['HTTP_X_SHARED_SESSION_KEY'] - uid = $redis.get("shared_session_key_#{shared_key}") + uid = Discourse.redis.get("shared_session_key_#{shared_key}") user = nil if uid user = User.find_by(id: uid.to_i) diff --git a/lib/auth/open_id_authenticator.rb b/lib/auth/open_id_authenticator.rb index 403ac1936b..3dc60b3d65 100644 --- a/lib/auth/open_id_authenticator.rb +++ b/lib/auth/open_id_authenticator.rb @@ -87,7 +87,7 @@ class Auth::OpenIdAuthenticator < Auth::Authenticator omniauth.provider :open_id, setup: lambda { |env| strategy = env["omniauth.strategy"] - strategy.options[:store] = OpenID::Store::Redis.new($redis) + strategy.options[:store] = OpenID::Store::Redis.new(Discourse.redis) # Add CSRF protection in addition to OpenID Specification def strategy.query_string diff --git a/lib/backup_restore.rb b/lib/backup_restore.rb index d3d59079e6..3b7e189d07 100644 --- a/lib/backup_restore.rb +++ b/lib/backup_restore.rb @@ -36,21 +36,21 @@ module BackupRestore end def self.mark_as_running! - $redis.setex(running_key, 60, "1") + Discourse.redis.setex(running_key, 60, "1") save_start_logs_message_id keep_it_running end def self.is_operation_running? - !!$redis.get(running_key) + !!Discourse.redis.get(running_key) end def self.mark_as_not_running! - $redis.del(running_key) + Discourse.redis.del(running_key) end def self.should_shutdown? - !!$redis.get(shutdown_signal_key) + !!Discourse.redis.get(shutdown_signal_key) end def self.can_rollback? @@ -128,7 +128,7 @@ module BackupRestore Thread.new do # this thread will be killed when the fork dies while true - $redis.expire(running_key, 1.minute) + Discourse.redis.expire(running_key, 1.minute) sleep 30.seconds end end @@ -139,20 +139,20 @@ module BackupRestore end def self.set_shutdown_signal! - $redis.set(shutdown_signal_key, "1") + Discourse.redis.set(shutdown_signal_key, "1") end def self.clear_shutdown_signal! - $redis.del(shutdown_signal_key) + Discourse.redis.del(shutdown_signal_key) end def self.save_start_logs_message_id id = MessageBus.last_id(LOGS_CHANNEL) - $redis.set(start_logs_message_id_key, id) + Discourse.redis.set(start_logs_message_id_key, id) end def self.start_logs_message_id - $redis.get(start_logs_message_id_key).to_i + Discourse.redis.get(start_logs_message_id_key).to_i end def self.start_logs_message_id_key diff --git a/lib/cache.rb b/lib/cache.rb index 9c0863eba9..9e76ea6eac 100644 --- a/lib/cache.rb +++ b/lib/cache.rb @@ -5,7 +5,7 @@ # This is a bottom up implementation of ActiveSupport::Cache::Store # this allows us to cleanly implement without using cache entries and version # support which we do not use, in tern this makes the cache as fast as simply -# using `$redis.setex` with a more convenient API +# using `Discourse.redis.setex` with a more convenient API # # It only implements a subset of ActiveSupport::Cache::Store as we make no use # of large parts of the interface. @@ -33,7 +33,7 @@ class Cache end def redis - $redis + Discourse.redis end def reconnect diff --git a/lib/common_passwords/common_passwords.rb b/lib/common_passwords/common_passwords.rb index d3d9bce440..022cd81dee 100644 --- a/lib/common_passwords/common_passwords.rb +++ b/lib/common_passwords/common_passwords.rb @@ -9,7 +9,7 @@ # If the password file is changed, you need to add a migration that deletes the list from redis # so it gets re-populated: # -# $redis.without_namespace.del CommonPasswords::LIST_KEY +# Discourse.redis.without_namespace.del CommonPasswords::LIST_KEY class CommonPasswords @@ -39,7 +39,7 @@ class CommonPasswords end def self.redis - $redis.without_namespace + Discourse.redis.without_namespace end def self.load_passwords diff --git a/lib/discourse.rb b/lib/discourse.rb index 07b7369a6b..d4b6b4eb68 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true +# rubocop:disable Style/GlobalVars require 'cache' require 'open3' @@ -378,9 +379,9 @@ module Discourse def self.enable_readonly_mode(key = READONLY_MODE_KEY) if key == USER_READONLY_MODE_KEY - $redis.set(key, 1) + Discourse.redis.set(key, 1) else - $redis.setex(key, READONLY_MODE_KEY_TTL, 1) + Discourse.redis.setex(key, READONLY_MODE_KEY_TTL, 1) keep_readonly_mode(key) if !Rails.env.test? end @@ -406,7 +407,7 @@ module Discourse @mutex.synchronize do @dbs.each do |db| RailsMultisite::ConnectionManagement.with_connection(db) do - if !$redis.expire(key, READONLY_MODE_KEY_TTL) + if !Discourse.redis.expire(key, READONLY_MODE_KEY_TTL) @dbs.delete(db) end end @@ -419,18 +420,18 @@ module Discourse end def self.disable_readonly_mode(key = READONLY_MODE_KEY) - $redis.del(key) + Discourse.redis.del(key) MessageBus.publish(readonly_channel, false) Site.clear_anon_cache! true end def self.readonly_mode?(keys = READONLY_KEYS) - recently_readonly? || $redis.mget(*keys).compact.present? + recently_readonly? || Discourse.redis.mget(*keys).compact.present? end def self.pg_readonly_mode? - $redis.get(PG_READONLY_MODE_KEY).present? + Discourse.redis.get(PG_READONLY_MODE_KEY).present? end # Shared between processes @@ -444,23 +445,23 @@ module Discourse end def self.recently_readonly? - postgres_read_only = postgres_last_read_only[$redis.namespace] - redis_read_only = redis_last_read_only[$redis.namespace] + postgres_read_only = postgres_last_read_only[Discourse.redis.namespace] + redis_read_only = redis_last_read_only[Discourse.redis.namespace] (redis_read_only.present? && redis_read_only > 15.seconds.ago) || (postgres_read_only.present? && postgres_read_only > 15.seconds.ago) end def self.received_postgres_readonly! - postgres_last_read_only[$redis.namespace] = Time.zone.now + postgres_last_read_only[Discourse.redis.namespace] = Time.zone.now end def self.received_redis_readonly! - redis_last_read_only[$redis.namespace] = Time.zone.now + redis_last_read_only[Discourse.redis.namespace] = Time.zone.now end def self.clear_readonly! - postgres_last_read_only[$redis.namespace] = redis_last_read_only[$redis.namespace] = nil + postgres_last_read_only[Discourse.redis.namespace] = redis_last_read_only[Discourse.redis.namespace] = nil Site.clear_anon_cache! true end @@ -491,7 +492,7 @@ module Discourse begin git_cmd = 'git rev-parse HEAD' self.try_git(git_cmd, Discourse::VERSION::STRING) - end + end # rubocop:disable Style/GlobalVars end def self.git_branch @@ -589,7 +590,7 @@ module Discourse # note: some of this reconnecting may no longer be needed per https://github.com/redis/redis-rb/pull/414 MessageBus.after_fork SiteSetting.after_fork - $redis._client.reconnect + Discourse.redis._client.reconnect Rails.cache.reconnect Discourse.cache.reconnect Logster.store.redis.reconnect @@ -737,10 +738,10 @@ module Discourse digest = Digest::MD5.hexdigest(warning) redis_key = "deprecate-notice-#{digest}" - if !$redis.without_namespace.get(redis_key) + if !Discourse.redis.without_namespace.get(redis_key) Rails.logger.warn(warning) begin - $redis.without_namespace.setex(redis_key, 3600, "x") + Discourse.redis.without_namespace.setex(redis_key, 3600, "x") rescue Redis::CommandError => e raise unless e.message =~ /READONLY/ end @@ -832,4 +833,10 @@ module Discourse ensure @preloaded_rails = true end + + def self.redis + $redis + end end + +# rubocop:enable Style/GlobalVars diff --git a/lib/discourse_hub.rb b/lib/discourse_hub.rb index eead8cfdc4..31d4e8a2f0 100644 --- a/lib/discourse_hub.rb +++ b/lib/discourse_hub.rb @@ -14,7 +14,7 @@ module DiscourseHub end def self.stats_fetched_at=(time_with_zone) - $redis.set STATS_FETCHED_AT_KEY, time_with_zone.to_i + Discourse.redis.set STATS_FETCHED_AT_KEY, time_with_zone.to_i end def self.get_payload @@ -102,7 +102,7 @@ module DiscourseHub end def self.stats_fetched_at - t = $redis.get(STATS_FETCHED_AT_KEY) + t = Discourse.redis.get(STATS_FETCHED_AT_KEY) t ? Time.zone.at(t.to_i) : 1.year.ago end diff --git a/lib/discourse_redis.rb b/lib/discourse_redis.rb index ae2884f933..728e244db7 100644 --- a/lib/discourse_redis.rb +++ b/lib/discourse_redis.rb @@ -262,7 +262,7 @@ class DiscourseRedis def delete_prefixed(prefix) DiscourseRedis.ignore_readonly do - keys("#{prefix}*").each { |k| $redis.del(k) } + keys("#{prefix}*").each { |k| Discourse.redis.del(k) } end end diff --git a/lib/discourse_updates.rb b/lib/discourse_updates.rb index a203bd2ea1..6a7dc2a54b 100644 --- a/lib/discourse_updates.rb +++ b/lib/discourse_updates.rb @@ -58,42 +58,42 @@ module DiscourseUpdates # last_installed_version is the installed version at the time of the last version check def last_installed_version - $redis.get last_installed_version_key + Discourse.redis.get last_installed_version_key end def latest_version - $redis.get latest_version_key + Discourse.redis.get latest_version_key end def missing_versions_count - $redis.get(missing_versions_count_key).try(:to_i) + Discourse.redis.get(missing_versions_count_key).try(:to_i) end def critical_updates_available? - ($redis.get(critical_updates_available_key) || false) == 'true' + (Discourse.redis.get(critical_updates_available_key) || false) == 'true' end def updated_at - t = $redis.get(updated_at_key) + t = Discourse.redis.get(updated_at_key) t ? Time.zone.parse(t) : nil end def updated_at=(time_with_zone) - $redis.set updated_at_key, time_with_zone.as_json + Discourse.redis.set updated_at_key, time_with_zone.as_json end ['last_installed_version', 'latest_version', 'missing_versions_count', 'critical_updates_available'].each do |name| eval "define_method :#{name}= do |arg| - $redis.set #{name}_key, arg + Discourse.redis.set #{name}_key, arg end" end def missing_versions=(versions) # delete previous list from redis - prev_keys = $redis.lrange(missing_versions_list_key, 0, 4) + prev_keys = Discourse.redis.lrange(missing_versions_list_key, 0, 4) if prev_keys - $redis.del prev_keys - $redis.del(missing_versions_list_key) + Discourse.redis.del prev_keys + Discourse.redis.del(missing_versions_list_key) end if versions.present? @@ -101,18 +101,18 @@ module DiscourseUpdates version_keys = [] versions[0, 5].each do |v| key = "#{missing_versions_key_prefix}:#{v['version']}" - $redis.mapped_hmset key, v + Discourse.redis.mapped_hmset key, v version_keys << key end - $redis.rpush missing_versions_list_key, version_keys + Discourse.redis.rpush missing_versions_list_key, version_keys end versions || [] end def missing_versions - keys = $redis.lrange(missing_versions_list_key, 0, 4) # max of 5 versions - keys.present? ? keys.map { |k| $redis.hgetall(k) } : [] + keys = Discourse.redis.lrange(missing_versions_list_key, 0, 4) # max of 5 versions + keys.present? ? keys.map { |k| Discourse.redis.hgetall(k) } : [] end private diff --git a/lib/distributed_memoizer.rb b/lib/distributed_memoizer.rb index a93ea9a90c..44a52806b4 100644 --- a/lib/distributed_memoizer.rb +++ b/lib/distributed_memoizer.rb @@ -8,7 +8,7 @@ class DistributedMemoizer # memoize a key across processes and machines def self.memoize(key, duration = 60 * 60 * 24, redis = nil) - redis ||= $redis + redis ||= Discourse.redis redis_key = self.redis_key(key) @@ -50,7 +50,7 @@ class DistributedMemoizer # Used for testing def self.flush! - $redis.scan_each(match: "memoize_*").each { |key| $redis.del(key) } + Discourse.redis.scan_each(match: "memoize_*").each { |key| Discourse.redis.del(key) } end protected diff --git a/lib/distributed_mutex.rb b/lib/distributed_mutex.rb index f293a334dc..39481f2269 100644 --- a/lib/distributed_mutex.rb +++ b/lib/distributed_mutex.rb @@ -17,7 +17,7 @@ class DistributedMutex def initialize(key, redis: nil, validity: DEFAULT_VALIDITY) @key = key @using_global_redis = true if !redis - @redis = redis || $redis + @redis = redis || Discourse.redis @mutex = Mutex.new @validity = validity end diff --git a/lib/email/processor.rb b/lib/email/processor.rb index a6ecec4ecc..76acd2749e 100644 --- a/lib/email/processor.rb +++ b/lib/email/processor.rb @@ -119,8 +119,8 @@ module Email key = "rejection_email:#{email}:#{type}:#{Date.today}" - if $redis.setnx(key, "1") - $redis.expire(key, 25.hours) + if Discourse.redis.setnx(key, "1") + Discourse.redis.expire(key, 25.hours) true else false diff --git a/lib/email_backup_token.rb b/lib/email_backup_token.rb index 0e49b69609..098f7c7e07 100644 --- a/lib/email_backup_token.rb +++ b/lib/email_backup_token.rb @@ -12,16 +12,16 @@ class EmailBackupToken def self.set(user_id) token = self.generate - $redis.setex self.key(user_id), 1.day.to_i, token + Discourse.redis.setex self.key(user_id), 1.day.to_i, token token end def self.get(user_id) - $redis.get self.key(user_id) + Discourse.redis.get self.key(user_id) end def self.del(user_id) - $redis.del self.key(user_id) + Discourse.redis.del self.key(user_id) end def self.compare(user_id, token) diff --git a/lib/final_destination.rb b/lib/final_destination.rb index 549f3df2f4..4177800ae6 100644 --- a/lib/final_destination.rb +++ b/lib/final_destination.rb @@ -11,17 +11,17 @@ class FinalDestination def self.clear_https_cache!(domain) key = redis_https_key(domain) - $redis.without_namespace.del(key) + Discourse.redis.without_namespace.del(key) end def self.cache_https_domain(domain) key = redis_https_key(domain) - $redis.without_namespace.setex(key, "1", 1.day.to_i).present? + Discourse.redis.without_namespace.setex(key, "1", 1.day.to_i).present? end def self.is_https_domain?(domain) key = redis_https_key(domain) - $redis.without_namespace.get(key).present? + Discourse.redis.without_namespace.get(key).present? end def self.redis_https_key(domain) diff --git a/lib/middleware/anonymous_cache.rb b/lib/middleware/anonymous_cache.rb index 8c4ccc6afe..e5968d3538 100644 --- a/lib/middleware/anonymous_cache.rb +++ b/lib/middleware/anonymous_cache.rb @@ -177,8 +177,8 @@ module Middleware end def cached(env = {}) - if body = decompress($redis.get(cache_key_body)) - if other = $redis.get(cache_key_other) + if body = decompress(Discourse.redis.get(cache_key_body)) + if other = Discourse.redis.get(cache_key_other) other = JSON.parse(other) if req_params = other[1].delete(ADP) env[ADP] = req_params @@ -203,7 +203,7 @@ module Middleware if status == 200 && cache_duration if GlobalSetting.anon_cache_store_threshold > 1 - count = $redis.eval(<<~REDIS, [cache_key_count], [cache_duration]) + count = Discourse.redis.eval(<<~REDIS, [cache_key_count], [cache_duration]) local current = redis.call("incr", KEYS[1]) redis.call("expire",KEYS[1],ARGV[1]) return current @@ -231,8 +231,8 @@ module Middleware } end - $redis.setex(cache_key_body, cache_duration, compress(parts.join)) - $redis.setex(cache_key_other, cache_duration, [status, headers_stripped].to_json) + Discourse.redis.setex(cache_key_body, cache_duration, compress(parts.join)) + Discourse.redis.setex(cache_key_other, cache_duration, [status, headers_stripped].to_json) headers["X-Discourse-Cached"] = "store" else @@ -243,8 +243,8 @@ module Middleware end def clear_cache - $redis.del(cache_key_body) - $redis.del(cache_key_other) + Discourse.redis.del(cache_key_body) + Discourse.redis.del(cache_key_other) end end diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index a594499f26..6575bc9822 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -122,15 +122,15 @@ module Oneboxer end def self.is_previewing?(user_id) - $redis.get(preview_key(user_id)) == "1" + Discourse.redis.get(preview_key(user_id)) == "1" end def self.preview_onebox!(user_id) - $redis.setex(preview_key(user_id), 1.minute, "1") + Discourse.redis.setex(preview_key(user_id), 1.minute, "1") end def self.onebox_previewed!(user_id) - $redis.del(preview_key(user_id)) + Discourse.redis.del(preview_key(user_id)) end def self.engine(url) diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb index b8d0fb6c81..f20e286429 100644 --- a/lib/post_revisor.rb +++ b/lib/post_revisor.rb @@ -265,11 +265,11 @@ class PostRevisor end def cached_original_raw - @cached_original_raw ||= $redis.get(original_raw_key) + @cached_original_raw ||= Discourse.redis.get(original_raw_key) end def cached_original_cooked - @cached_original_cooked ||= $redis.get(original_cooked_key) + @cached_original_cooked ||= Discourse.redis.get(original_cooked_key) end def original_raw @@ -278,12 +278,12 @@ class PostRevisor def original_raw=(val) @cached_original_raw = val - $redis.setex(original_raw_key, SiteSetting.editing_grace_period + 1, val) + Discourse.redis.setex(original_raw_key, SiteSetting.editing_grace_period + 1, val) end def original_cooked=(val) @cached_original_cooked = val - $redis.setex(original_cooked_key, SiteSetting.editing_grace_period + 1, val) + Discourse.redis.setex(original_cooked_key, SiteSetting.editing_grace_period + 1, val) end def diff_size(before, after) diff --git a/lib/rate_limiter.rb b/lib/rate_limiter.rb index 98fdfc7df5..091eea3c28 100644 --- a/lib/rate_limiter.rb +++ b/lib/rate_limiter.rb @@ -24,12 +24,12 @@ class RateLimiter # Only used in test, only clears current namespace, does not clear globals def self.clear_all! - $redis.delete_prefixed(RateLimiter.key_prefix) + Discourse.redis.delete_prefixed(RateLimiter.key_prefix) end def self.clear_all_global! - $redis.without_namespace.keys("GLOBAL::#{key_prefix}*").each do |k| - $redis.without_namespace.del k + Discourse.redis.without_namespace.keys("GLOBAL::#{key_prefix}*").each do |k| + Discourse.redis.without_namespace.del k end end @@ -119,12 +119,12 @@ class RateLimiter if @global "GLOBAL::#{key}" else - $redis.namespace_key(key) + Discourse.redis.namespace_key(key) end end def redis - $redis.without_namespace + Discourse.redis.without_namespace end def seconds_to_wait diff --git a/lib/secure_session.rb b/lib/secure_session.rb index 667034361e..cd28dc7683 100644 --- a/lib/secure_session.rb +++ b/lib/secure_session.rb @@ -16,23 +16,23 @@ class SecureSession def set(key, val, expires: nil) expires ||= SecureSession.expiry - $redis.setex(prefixed_key(key), expires.to_i, val.to_s) + Discourse.redis.setex(prefixed_key(key), expires.to_i, val.to_s) true end def ttl(key) - $redis.ttl(prefixed_key(key)) + Discourse.redis.ttl(prefixed_key(key)) end def [](key) - $redis.get(prefixed_key(key)) + Discourse.redis.get(prefixed_key(key)) end def []=(key, val) if val == nil - $redis.del(prefixed_key(key)) + Discourse.redis.del(prefixed_key(key)) else - $redis.setex(prefixed_key(key), SecureSession.expiry.to_i, val.to_s) + Discourse.redis.setex(prefixed_key(key), SecureSession.expiry.to_i, val.to_s) end val end diff --git a/lib/sidekiq/pausable.rb b/lib/sidekiq/pausable.rb index 132bed3055..4ec09192aa 100644 --- a/lib/sidekiq/pausable.rb +++ b/lib/sidekiq/pausable.rb @@ -12,13 +12,13 @@ class SidekiqPauser end def pause!(value = "paused") - $redis.setex PAUSED_KEY, TTL, value + Discourse.redis.setex PAUSED_KEY, TTL, value extend_lease_thread true end def paused? - !!$redis.get(PAUSED_KEY) + !!Discourse.redis.get(PAUSED_KEY) end def unpause_all! @@ -48,7 +48,7 @@ class SidekiqPauser stop_extend_lease_thread if @dbs.size == 0 end - $redis.del(PAUSED_KEY) + Discourse.redis.del(PAUSED_KEY) true end @@ -83,7 +83,7 @@ class SidekiqPauser @mutex.synchronize do @dbs.each do |db| RailsMultisite::ConnectionManagement.with_connection(db) do - if !$redis.expire(PAUSED_KEY, TTL) + if !Discourse.redis.expire(PAUSED_KEY, TTL) # if it was unpaused in another process we got to remove the # bad key @dbs.delete(db) diff --git a/lib/stylesheet/watcher.rb b/lib/stylesheet/watcher.rb index f59b53f6dc..7c56afbb8c 100644 --- a/lib/stylesheet/watcher.rb +++ b/lib/stylesheet/watcher.rb @@ -7,11 +7,11 @@ module Stylesheet REDIS_KEY = "dev_last_used_theme_id" def self.theme_id=(v) - $redis.set(REDIS_KEY, v) + Discourse.redis.set(REDIS_KEY, v) end def self.theme_id - ($redis.get(REDIS_KEY) || SiteSetting.default_theme_id).to_i + (Discourse.redis.get(REDIS_KEY) || SiteSetting.default_theme_id).to_i end def self.watch(paths = nil) diff --git a/lib/tasks/redis.rake b/lib/tasks/redis.rake index 08e352cfc3..4e5605b4df 100644 --- a/lib/tasks/redis.rake +++ b/lib/tasks/redis.rake @@ -9,7 +9,7 @@ task 'redis:clean_up' => ['environment'] do regexp = /((\$(?\w+)$)|(^?(?\w+):))/ cursor = 0 - redis = $redis.without_namespace + redis = Discourse.redis.without_namespace loop do cursor, keys = redis.scan(cursor) diff --git a/lib/tasks/typepad.thor b/lib/tasks/typepad.thor index df2a2cb311..cb6eb8b6e5 100644 --- a/lib/tasks/typepad.thor +++ b/lib/tasks/typepad.thor @@ -161,11 +161,11 @@ class Typepad < Thor if options[:google_api] && comment[:author] =~ /plus.google.com\/(\d+)/ gplus_id = Regexp.last_match[1] - from_redis = $redis.get("gplus:#{gplus_id}") + from_redis = Discourse.redis.get("gplus:#{gplus_id}") if from_redis.blank? json = ::JSON.parse(open("https://www.googleapis.com/plus/v1/people/#{gplus_id}?key=#{options[:google_api]}").read) from_redis = json['displayName'] - $redis.set("gplus:#{gplus_id}", from_redis) + Discourse.redis.set("gplus:#{gplus_id}", from_redis) end comment[:author] = from_redis end @@ -184,11 +184,11 @@ class Typepad < Thor if comment[:author] =~ /www.facebook.com\/profile.php\?id=(\d+)/ fb_id = Regexp.last_match[1] - from_redis = $redis.get("fb:#{fb_id}") + from_redis = Discourse.redis.get("fb:#{fb_id}") if from_redis.blank? json = ::JSON.parse(open("http://graph.facebook.com/#{fb_id}").read) from_redis = json['username'] - $redis.set("fb:#{fb_id}", from_redis) + Discourse.redis.set("fb:#{fb_id}", from_redis) end comment[:author] = from_redis end diff --git a/lib/topic_retriever.rb b/lib/topic_retriever.rb index 95391a4900..3da6f932a2 100644 --- a/lib/topic_retriever.rb +++ b/lib/topic_retriever.rb @@ -24,8 +24,8 @@ class TopicRetriever # Throttle other users to once every 60 seconds retrieved_key = "retrieved_topic" - if $redis.setnx(retrieved_key, "1") - $redis.expire(retrieved_key, 60) + if Discourse.redis.setnx(retrieved_key, "1") + Discourse.redis.expire(retrieved_key, 60) return false end diff --git a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb index a1164f102f..342e149128 100644 --- a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb +++ b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/actions.rb @@ -51,15 +51,15 @@ module DiscourseNarrativeBot key = "#{DiscourseNarrativeBot::PLUGIN_NAME}:reset-rate-limit:#{post.topic_id}:#{data['state']}" - if !(count = $redis.get(key)) + if !(count = Discourse.redis.get(key)) count = 0 - $redis.setex(key, duration, count) + Discourse.redis.setex(key, duration, count) end if count.to_i < 2 post.default_rate_limiter.rollback! post.limit_posts_per_day&.rollback! - $redis.incr(key) + Discourse.redis.incr(key) end end diff --git a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/track_selector.rb b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/track_selector.rb index 90f1f58626..c370934965 100644 --- a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/track_selector.rb +++ b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/track_selector.rb @@ -53,7 +53,7 @@ module DiscourseNarrativeBot if previous_status && data[:attempted] == previous_status && !data[:skip_attempted] generic_replies(klass.reset_trigger, state) else - $redis.del(generic_replies_key(@user)) + Discourse.redis.del(generic_replies_key(@user)) end Store.set(@user.id, data) @@ -143,14 +143,14 @@ module DiscourseNarrativeBot if public_reply? key = "#{PUBLIC_DISPLAY_BOT_HELP_KEY}:#{@post.topic_id}" - last_bot_help_post_number = $redis.get(key) + last_bot_help_post_number = Discourse.redis.get(key) if !last_bot_help_post_number || (last_bot_help_post_number && @post.post_number - 10 > last_bot_help_post_number.to_i && - (1.day.to_i - $redis.ttl(key)) > 6.hours.to_i) + (1.day.to_i - Discourse.redis.ttl(key)) > 6.hours.to_i) - $redis.setex(key, 1.day.to_i, @post.post_number) + Discourse.redis.setex(key, 1.day.to_i, @post.post_number) message end else @@ -190,7 +190,7 @@ module DiscourseNarrativeBot def generic_replies(track_reset_trigger, state = nil) reset_trigger = "#{self.class.reset_trigger} #{track_reset_trigger}" key = generic_replies_key(@user) - count = ($redis.get(key) || $redis.setex(key, 900, 0)).to_i + count = (Discourse.redis.get(key) || Discourse.redis.setex(key, 900, 0)).to_i case count when 0 @@ -210,7 +210,7 @@ module DiscourseNarrativeBot # Stay out of the user's way end - $redis.incr(key) + Discourse.redis.incr(key) end def self.i18n_key(key) diff --git a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/track_selector_spec.rb b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/track_selector_spec.rb index 140e894046..c957cfe627 100644 --- a/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/track_selector_spec.rb +++ b/plugins/discourse-narrative-bot/spec/discourse_narrative_bot/track_selector_spec.rb @@ -243,7 +243,7 @@ describe DiscourseNarrativeBot::TrackSelector do context 'generic replies' do after do - $redis.del("#{described_class::GENERIC_REPLIES_COUNT_PREFIX}#{user.id}") + Discourse.redis.del("#{described_class::GENERIC_REPLIES_COUNT_PREFIX}#{user.id}") end it 'should create the right generic do not understand responses' do @@ -472,17 +472,17 @@ describe DiscourseNarrativeBot::TrackSelector do let(:post) { Fabricate(:post, topic: topic) } after do - $redis.flushall + Discourse.redis.flushall end describe 'when random reply massage has been displayed in the last 6 hours' do it 'should not do anything' do - $redis.set( + Discourse.redis.set( "#{described_class::PUBLIC_DISPLAY_BOT_HELP_KEY}:#{other_post.topic_id}", post.post_number - 11 ) - $redis.class.any_instance.expects(:ttl).returns(19.hours.to_i) + Discourse.redis.class.any_instance.expects(:ttl).returns(19.hours.to_i) user post.update!(raw: "Show me what you can do @discobot") @@ -494,12 +494,12 @@ describe DiscourseNarrativeBot::TrackSelector do describe 'when random reply message has not been displayed in the last 6 hours' do it 'should create the right reply' do - $redis.set( + Discourse.redis.set( "#{described_class::PUBLIC_DISPLAY_BOT_HELP_KEY}:#{other_post.topic_id}", post.post_number - 11 ) - $redis.class.any_instance.expects(:ttl).returns(7.hours.to_i) + Discourse.redis.class.any_instance.expects(:ttl).returns(7.hours.to_i) user post.update!(raw: "Show me what you can do @discobot") @@ -515,7 +515,7 @@ describe DiscourseNarrativeBot::TrackSelector do described_class.new(:reply, user, post_id: other_post.id).select expect(Post.last.raw).to eq(random_mention_reply) - expect($redis.get( + expect(Discourse.redis.get( "#{described_class::PUBLIC_DISPLAY_BOT_HELP_KEY}:#{other_post.topic_id}" ).to_i).to eq(other_post.post_number.to_i) diff --git a/plugins/discourse-presence/plugin.rb b/plugins/discourse-presence/plugin.rb index 21f121cf17..54d694b069 100644 --- a/plugins/discourse-presence/plugin.rb +++ b/plugins/discourse-presence/plugin.rb @@ -36,20 +36,20 @@ after_initialize do # return true if a key was added def self.add(type, id, user_id) key = get_redis_key(type, id) - result = $redis.hset(key, user_id, Time.zone.now) - $redis.expire(key, MAX_BACKLOG_AGE) + result = Discourse.redis.hset(key, user_id, Time.zone.now) + Discourse.redis.expire(key, MAX_BACKLOG_AGE) result end # return true if a key was deleted def self.remove(type, id, user_id) key = get_redis_key(type, id) - $redis.expire(key, MAX_BACKLOG_AGE) - $redis.hdel(key, user_id) > 0 + Discourse.redis.expire(key, MAX_BACKLOG_AGE) + Discourse.redis.hdel(key, user_id) > 0 end def self.get_users(type, id) - user_ids = $redis.hkeys(get_redis_key(type, id)).map(&:to_i) + user_ids = Discourse.redis.hkeys(get_redis_key(type, id)).map(&:to_i) User.where(id: user_ids) end @@ -88,7 +88,7 @@ after_initialize do has_changed = false # Delete entries older than 20 seconds - hash = $redis.hgetall(get_redis_key(type, id)) + hash = Discourse.redis.hgetall(get_redis_key(type, id)) hash.each do |user_id, time| if Time.zone.now - Time.parse(time) >= 20 has_changed |= remove(type, id, user_id) diff --git a/plugins/discourse-presence/spec/presence_manager_spec.rb b/plugins/discourse-presence/spec/presence_manager_spec.rb index 80e20ed65c..b6cf1155ce 100644 --- a/plugins/discourse-presence/spec/presence_manager_spec.rb +++ b/plugins/discourse-presence/spec/presence_manager_spec.rb @@ -13,10 +13,10 @@ describe ::Presence::PresenceManager do let(:post2) { Fabricate(:post) } after(:each) do - $redis.del("presence:topic:#{post1.topic.id}") - $redis.del("presence:topic:#{post2.topic.id}") - $redis.del("presence:post:#{post1.id}") - $redis.del("presence:post:#{post2.id}") + Discourse.redis.del("presence:topic:#{post1.topic.id}") + Discourse.redis.del("presence:topic:#{post2.topic.id}") + Discourse.redis.del("presence:post:#{post1.id}") + Discourse.redis.del("presence:post:#{post2.id}") end it 'adds, removes and lists users correctly' do diff --git a/plugins/discourse-presence/spec/requests/presence_controller_spec.rb b/plugins/discourse-presence/spec/requests/presence_controller_spec.rb index 46607739c3..80547019a7 100644 --- a/plugins/discourse-presence/spec/requests/presence_controller_spec.rb +++ b/plugins/discourse-presence/spec/requests/presence_controller_spec.rb @@ -17,10 +17,10 @@ describe ::Presence::PresencesController do let(:manager) { ::Presence::PresenceManager } after do - $redis.del("presence:topic:#{post1.topic.id}") - $redis.del("presence:topic:#{post2.topic.id}") - $redis.del("presence:post:#{post1.id}") - $redis.del("presence:post:#{post2.id}") + Discourse.redis.del("presence:topic:#{post1.topic.id}") + Discourse.redis.del("presence:topic:#{post2.topic.id}") + Discourse.redis.del("presence:post:#{post1.id}") + Discourse.redis.del("presence:post:#{post2.id}") end context 'when not logged in' do diff --git a/script/benchmarks/cache/bench.rb b/script/benchmarks/cache/bench.rb index 572ee5ec1c..ff6092e859 100644 --- a/script/benchmarks/cache/bench.rb +++ b/script/benchmarks/cache/bench.rb @@ -7,14 +7,14 @@ Benchmark.ips do |x| x.report("redis setex string") do |times| while times > 0 - $redis.setex("test_key", 60, "test") + Discourse.redis.setex("test_key", 60, "test") times -= 1 end end x.report("redis setex marshal string") do |times| while times > 0 - $redis.setex("test_keym", 60, Marshal.dump("test")) + Discourse.redis.setex("test_keym", 60, Marshal.dump("test")) times -= 1 end end @@ -39,14 +39,14 @@ end Benchmark.ips do |x| x.report("redis get string") do |times| while times > 0 - $redis.get("test_key") + Discourse.redis.get("test_key") times -= 1 end end x.report("redis get string marshal") do |times| while times > 0 - Marshal.load($redis.get("test_keym")) + Marshal.load(Discourse.redis.get("test_keym")) times -= 1 end end diff --git a/script/redis_memory.rb b/script/redis_memory.rb index a092d6d4ce..442463bc41 100644 --- a/script/redis_memory.rb +++ b/script/redis_memory.rb @@ -2,7 +2,7 @@ require File.expand_path("../../config/environment", __FILE__) -@redis = $redis.without_namespace +@redis = Discourse.redis.without_namespace stats = {} diff --git a/spec/components/active_record/connection_adapters/postgresql_fallback_adapter_spec.rb b/spec/components/active_record/connection_adapters/postgresql_fallback_adapter_spec.rb index 0e9efa94a7..8a53e37c5c 100644 --- a/spec/components/active_record/connection_adapters/postgresql_fallback_adapter_spec.rb +++ b/spec/components/active_record/connection_adapters/postgresql_fallback_adapter_spec.rb @@ -41,7 +41,7 @@ describe ActiveRecord::ConnectionHandling do ActiveRecord::Base.clear_all_connections! ActiveRecord::Base.establish_connection - $redis.flushall + Discourse.redis.flushall end describe "#postgresql_fallback_connection" do diff --git a/spec/components/auth/default_current_user_provider_spec.rb b/spec/components/auth/default_current_user_provider_spec.rb index 3c1f1ce0e0..c5cd696641 100644 --- a/spec/components/auth/default_current_user_provider_spec.rb +++ b/spec/components/auth/default_current_user_provider_spec.rb @@ -399,7 +399,7 @@ describe Auth::DefaultCurrentUserProvider do end after do - $redis.flushall + Discourse.redis.flushall end it "should not update last seen for suspended users" do @@ -416,7 +416,7 @@ describe Auth::DefaultCurrentUserProvider do u.suspended_till = 1.year.from_now u.save! - $redis.del("user:#{user.id}:#{Time.now.to_date}") + Discourse.redis.del("user:#{user.id}:#{Time.now.to_date}") provider2 = provider("/", "HTTP_COOKIE" => "_t=#{unhashed_token}") expect(provider2.current_user).to eq(nil) diff --git a/spec/components/cache_spec.rb b/spec/components/cache_spec.rb index 7b367743cf..a174017ffd 100644 --- a/spec/components/cache_spec.rb +++ b/spec/components/cache_spec.rb @@ -32,12 +32,12 @@ describe Cache do end it "can be cleared" do - $redis.set("boo", "boo") + Discourse.redis.set("boo", "boo") cache.write("hello0", "world") cache.write("hello1", "world") cache.clear - expect($redis.get("boo")).to eq("boo") + expect(Discourse.redis.get("boo")).to eq("boo") expect(cache.read("hello0")).to eq(nil) end @@ -64,13 +64,13 @@ describe Cache do "bob" end - expect($redis.ttl(key)).to be_within(2.seconds).of(1.minute) + expect(Discourse.redis.ttl(key)).to be_within(2.seconds).of(1.minute) # we always expire withing a day cache.fetch("bla") { "hi" } key = cache.normalize_key("bla") - expect($redis.ttl(key)).to be_within(2.seconds).of(1.day) + expect(Discourse.redis.ttl(key)).to be_within(2.seconds).of(1.day) end it "can store and fetch correctly" do diff --git a/spec/components/discourse_redis_spec.rb b/spec/components/discourse_redis_spec.rb index e9a28b7d54..6d4af1d817 100644 --- a/spec/components/discourse_redis_spec.rb +++ b/spec/components/discourse_redis_spec.rb @@ -101,12 +101,12 @@ describe DiscourseRedis do it 'should check the status of the master server' do begin fallback_handler.master = false - $redis.without_namespace.expects(:set).raises(Redis::CommandError.new("READONLY")) + Discourse.redis.without_namespace.expects(:set).raises(Redis::CommandError.new("READONLY")) fallback_handler.expects(:verify_master).once - $redis.set('test', '1') + Discourse.redis.set('test', '1') ensure fallback_handler.master = true - $redis.del('test') + Discourse.redis.del('test') end end end diff --git a/spec/components/discourse_spec.rb b/spec/components/discourse_spec.rb index 0049e1de99..38625ee86d 100644 --- a/spec/components/discourse_spec.rb +++ b/spec/components/discourse_spec.rb @@ -185,21 +185,21 @@ describe Discourse do let(:user_readonly_mode_key) { Discourse::USER_READONLY_MODE_KEY } after do - $redis.del(readonly_mode_key) - $redis.del(user_readonly_mode_key) + Discourse.redis.del(readonly_mode_key) + Discourse.redis.del(user_readonly_mode_key) end def assert_readonly_mode(message, key, ttl = -1) expect(message.channel).to eq(Discourse.readonly_channel) expect(message.data).to eq(true) - expect($redis.get(key)).to eq("1") - expect($redis.ttl(key)).to eq(ttl) + expect(Discourse.redis.get(key)).to eq("1") + expect(Discourse.redis.ttl(key)).to eq(ttl) end def assert_readonly_mode_disabled(message, key) expect(message.channel).to eq(Discourse.readonly_channel) expect(message.data).to eq(false) - expect($redis.get(key)).to eq(nil) + expect(Discourse.redis.get(key)).to eq(nil) end def get_readonly_message @@ -217,14 +217,14 @@ describe Discourse do describe ".enable_readonly_mode" do it "adds a key in redis and publish a message through the message bus" do - expect($redis.get(readonly_mode_key)).to eq(nil) + expect(Discourse.redis.get(readonly_mode_key)).to eq(nil) message = get_readonly_message { Discourse.enable_readonly_mode } assert_readonly_mode(message, readonly_mode_key, readonly_mode_ttl) end context 'user enabled readonly mode' do it "adds a key in redis and publish a message through the message bus" do - expect($redis.get(user_readonly_mode_key)).to eq(nil) + expect(Discourse.redis.get(user_readonly_mode_key)).to eq(nil) message = get_readonly_message { Discourse.enable_readonly_mode(user_readonly_mode_key) } assert_readonly_mode(message, user_readonly_mode_key) end @@ -252,7 +252,7 @@ describe Discourse do end it "returns true when the key is present in redis" do - $redis.set(readonly_mode_key, 1) + Discourse.redis.set(readonly_mode_key, 1) expect(Discourse.readonly_mode?).to eq(true) end diff --git a/spec/components/distributed_memoizer_spec.rb b/spec/components/distributed_memoizer_spec.rb index c040ed92a5..0fb9aedef6 100644 --- a/spec/components/distributed_memoizer_spec.rb +++ b/spec/components/distributed_memoizer_spec.rb @@ -5,9 +5,9 @@ require 'rails_helper' describe DistributedMemoizer do before do - $redis.del(DistributedMemoizer.redis_key("hello")) - $redis.del(DistributedMemoizer.redis_lock_key("hello")) - $redis.unwatch + Discourse.redis.del(DistributedMemoizer.redis_key("hello")) + Discourse.redis.del(DistributedMemoizer.redis_lock_key("hello")) + Discourse.redis.unwatch end # NOTE we could use a mock redis here, but I think it makes sense to test the real thing diff --git a/spec/components/distributed_mutex_spec.rb b/spec/components/distributed_mutex_spec.rb index e3c492f63c..97c3d0096c 100644 --- a/spec/components/distributed_mutex_spec.rb +++ b/spec/components/distributed_mutex_spec.rb @@ -6,7 +6,7 @@ describe DistributedMutex do let(:key) { "test_mutex_key" } after do - $redis.del(key) + Discourse.redis.del(key) end it "allows only one mutex object to have the lock at a time" do @@ -31,7 +31,7 @@ describe DistributedMutex do it "handles auto cleanup correctly" do m = DistributedMutex.new(key) - $redis.setnx key, Time.now.to_i - 1 + Discourse.redis.setnx key, Time.now.to_i - 1 start = Time.now.to_i m.synchronize do @@ -54,16 +54,16 @@ describe DistributedMutex do mutex = DistributedMutex.new(key, validity: 2) mutex.synchronize do - expect($redis.ttl(key)).to eq(2) - expect($redis.get(key).to_i).to eq(Time.now.to_i + 2) + expect(Discourse.redis.ttl(key)).to eq(2) + expect(Discourse.redis.get(key).to_i).to eq(Time.now.to_i + 2) end mutex = DistributedMutex.new(key) mutex.synchronize do - expect($redis.ttl(key)).to eq(DistributedMutex::DEFAULT_VALIDITY) + expect(Discourse.redis.ttl(key)).to eq(DistributedMutex::DEFAULT_VALIDITY) - expect($redis.get(key).to_i) + expect(Discourse.redis.get(key).to_i) .to eq(Time.now.to_i + DistributedMutex::DEFAULT_VALIDITY) end end @@ -80,11 +80,11 @@ describe DistributedMutex do context "readonly redis" do before do - $redis.slaveof "127.0.0.1", "99991" + Discourse.redis.slaveof "127.0.0.1", "99991" end after do - $redis.slaveof "no", "one" + Discourse.redis.slaveof "no", "one" end it "works even if redis is in readonly" do @@ -111,7 +111,7 @@ describe DistributedMutex do Concurrency::Scenario.new do |execution| locked = false - $redis.del('mutex_key') + Discourse.redis.del('mutex_key') connections.each do |connection| connection.unwatch diff --git a/spec/components/email/processor_spec.rb b/spec/components/email/processor_spec.rb index 40da5e4e7e..3fe4ab41b7 100644 --- a/spec/components/email/processor_spec.rb +++ b/spec/components/email/processor_spec.rb @@ -5,7 +5,7 @@ require "email/processor" describe Email::Processor do after do - $redis.flushall + Discourse.redis.flushall end let(:from) { "foo@bar.com" } @@ -78,7 +78,7 @@ describe Email::Processor do it "only sends one rejection email per day" do key = "rejection_email:#{[from]}:email_reject_empty:#{Date.today}" - $redis.expire(key, 0) + Discourse.redis.expire(key, 0) expect { Email::Processor.process!(mail) @@ -91,7 +91,7 @@ describe Email::Processor do freeze_time(Date.today + 1) key = "rejection_email:#{[from]}:email_reject_empty:#{Date.today}" - $redis.expire(key, 0) + Discourse.redis.expire(key, 0) expect { Email::Processor.process!(mail3) @@ -131,7 +131,7 @@ describe Email::Processor do it "sends more than one rejection email per day" do Email::Receiver.any_instance.stubs(:process_internal).raises("boom") key = "rejection_email:#{[from]}:email_reject_unrecognized_error:#{Date.today}" - $redis.expire(key, 0) + Discourse.redis.expire(key, 0) expect { Email::Processor.process!(mail) diff --git a/spec/components/middleware/anonymous_cache_spec.rb b/spec/components/middleware/anonymous_cache_spec.rb index ed09e6149b..d76def01d4 100644 --- a/spec/components/middleware/anonymous_cache_spec.rb +++ b/spec/components/middleware/anonymous_cache_spec.rb @@ -143,7 +143,7 @@ describe Middleware::AnonymousCache::Helper do # depends on i7z implementation, but lets assume it is stable unless we discover # otherwise - expect($redis.get(helper.cache_key_body).length).to eq(16) + expect(Discourse.redis.get(helper.cache_key_body).length).to eq(16) end it "handles brotli switching" do diff --git a/spec/components/middleware/request_tracker_spec.rb b/spec/components/middleware/request_tracker_spec.rb index 3673bf83d3..8faeaf079e 100644 --- a/spec/components/middleware/request_tracker_spec.rb +++ b/spec/components/middleware/request_tracker_spec.rb @@ -264,7 +264,7 @@ describe Middleware::RequestTracker do User.where(id: -100).pluck(:id) end redis_calls.times do - $redis.get("x") + Discourse.redis.get("x") end result end diff --git a/spec/components/post_revisor_spec.rb b/spec/components/post_revisor_spec.rb index 7f85177a14..cf008c3056 100644 --- a/spec/components/post_revisor_spec.rb +++ b/spec/components/post_revisor_spec.rb @@ -91,7 +91,7 @@ describe PostRevisor do before do # There used to be a bug where wiki changes were considered posting "too similar" # so this is enabled and checked - $redis.delete_prefixed('unique-post') + Discourse.redis.delete_prefixed('unique-post') SiteSetting.unique_posts_mins = 10 end diff --git a/spec/components/pretty_text_spec.rb b/spec/components/pretty_text_spec.rb index c75bb39a72..794c787b5a 100644 --- a/spec/components/pretty_text_spec.rb +++ b/spec/components/pretty_text_spec.rb @@ -456,7 +456,7 @@ describe PrettyText do ['apple', 'banana'].each { |w| Fabricate(:watched_word, word: w, action: WatchedWord.actions[:censor]) } expect(PrettyText.cook("# banana")).not_to include('banana') ensure - $redis.flushall + Discourse.redis.flushall end end end @@ -1091,7 +1091,7 @@ HTML end describe "censoring" do - after(:all) { $redis.flushall } + after(:all) { Discourse.redis.flushall } def expect_cooked_match(raw, expected_cooked) expect(PrettyText.cook(raw)).to eq(expected_cooked) diff --git a/spec/components/rate_limiter_spec.rb b/spec/components/rate_limiter_spec.rb index 4e03d06e83..7e18fee778 100644 --- a/spec/components/rate_limiter_spec.rb +++ b/spec/components/rate_limiter_spec.rb @@ -63,11 +63,11 @@ describe RateLimiter do context 'handles readonly' do before do - $redis.without_namespace.slaveof '10.0.0.1', '99999' + Discourse.redis.without_namespace.slaveof '10.0.0.1', '99999' end after do - $redis.without_namespace.slaveof 'no', 'one' + Discourse.redis.without_namespace.slaveof 'no', 'one' end it 'does not explode' do diff --git a/spec/components/topic_query_spec.rb b/spec/components/topic_query_spec.rb index c29204fb8f..7e1530abed 100644 --- a/spec/components/topic_query_spec.rb +++ b/spec/components/topic_query_spec.rb @@ -767,7 +767,7 @@ describe TopicQuery do context 'suggested_for' do def clear_cache! - $redis.keys('random_topic_cache*').each { |k| $redis.del k } + Discourse.redis.keys('random_topic_cache*').each { |k| Discourse.redis.del k } end before do diff --git a/spec/components/validators/post_validator_spec.rb b/spec/components/validators/post_validator_spec.rb index 5b5826e1a3..36db615006 100644 --- a/spec/components/validators/post_validator_spec.rb +++ b/spec/components/validators/post_validator_spec.rb @@ -198,7 +198,7 @@ describe PostValidator do end after do - $redis.del(@key) + Discourse.redis.del(@key) end context "post is unique" do diff --git a/spec/jobs/about_stats_spec.rb b/spec/jobs/about_stats_spec.rb index fbc423a6b0..5dbee6578a 100644 --- a/spec/jobs/about_stats_spec.rb +++ b/spec/jobs/about_stats_spec.rb @@ -7,12 +7,12 @@ describe Jobs::AboutStats do begin stats = About.fetch_stats.to_json cache_key = About.stats_cache_key - $redis.del(cache_key) + Discourse.redis.del(cache_key) expect(described_class.new.execute({})).to eq(stats) - expect($redis.get(cache_key)).to eq(stats) + expect(Discourse.redis.get(cache_key)).to eq(stats) ensure - $redis.del(cache_key) + Discourse.redis.del(cache_key) end end end diff --git a/spec/jobs/poll_mailbox_spec.rb b/spec/jobs/poll_mailbox_spec.rb index 078bb55fd7..267913034d 100644 --- a/spec/jobs/poll_mailbox_spec.rb +++ b/spec/jobs/poll_mailbox_spec.rb @@ -30,7 +30,7 @@ describe Jobs::PollMailbox do end after do - $redis.del(Jobs::PollMailbox::POLL_MAILBOX_TIMEOUT_ERROR_KEY) + Discourse.redis.del(Jobs::PollMailbox::POLL_MAILBOX_TIMEOUT_ERROR_KEY) end it "add an admin dashboard message on pop authentication error" do diff --git a/spec/mailers/user_notifications_spec.rb b/spec/mailers/user_notifications_spec.rb index d8f932c140..a623d87f4e 100644 --- a/spec/mailers/user_notifications_spec.rb +++ b/spec/mailers/user_notifications_spec.rb @@ -108,7 +108,7 @@ describe UserNotifications do subject { UserNotifications.digest(user) } after do - $redis.keys('summary-new-users:*').each { |key| $redis.del(key) } + Discourse.redis.keys('summary-new-users:*').each { |key| Discourse.redis.del(key) } end context "without new topics" do diff --git a/spec/models/application_request_spec.rb b/spec/models/application_request_spec.rb index 249d3ca23c..794fbbb53a 100644 --- a/spec/models/application_request_spec.rb +++ b/spec/models/application_request_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe ApplicationRequest do before do ApplicationRequest.last_flush = Time.now.utc - $redis.flushall + Discourse.redis.flushall end after do @@ -28,15 +28,15 @@ describe ApplicationRequest do inc(:http_total) inc(:http_total) - $redis.without_namespace.stubs(:incr).raises(Redis::CommandError.new("READONLY")) - $redis.without_namespace.stubs(:eval).raises(Redis::CommandError.new("READONLY")) + Discourse.redis.without_namespace.stubs(:incr).raises(Redis::CommandError.new("READONLY")) + Discourse.redis.without_namespace.stubs(:eval).raises(Redis::CommandError.new("READONLY")) # flush will be deferred no error raised inc(:http_total, autoflush: 3) ApplicationRequest.write_cache! - $redis.without_namespace.unstub(:incr) - $redis.without_namespace.unstub(:eval) + Discourse.redis.without_namespace.unstub(:incr) + Discourse.redis.without_namespace.unstub(:eval) inc(:http_total, autoflush: 3) expect(ApplicationRequest.http_total.first.count).to eq(3) diff --git a/spec/models/global_setting_spec.rb b/spec/models/global_setting_spec.rb index 1a8d58b2de..d923d6e31d 100644 --- a/spec/models/global_setting_spec.rb +++ b/spec/models/global_setting_spec.rb @@ -35,18 +35,18 @@ describe GlobalSetting do freeze_time Time.now token = GlobalSetting.safe_secret_key_base - $redis.without_namespace.del(GlobalSetting::REDIS_SECRET_KEY) + Discourse.redis.without_namespace.del(GlobalSetting::REDIS_SECRET_KEY) freeze_time Time.now + 20 GlobalSetting.safe_secret_key_base - new_token = $redis.without_namespace.get(GlobalSetting::REDIS_SECRET_KEY) + new_token = Discourse.redis.without_namespace.get(GlobalSetting::REDIS_SECRET_KEY) expect(new_token).to eq(nil) freeze_time Time.now + 11 GlobalSetting.safe_secret_key_base - new_token = $redis.without_namespace.get(GlobalSetting::REDIS_SECRET_KEY) + new_token = Discourse.redis.without_namespace.get(GlobalSetting::REDIS_SECRET_KEY) expect(new_token).to eq(token) end diff --git a/spec/models/search_log_spec.rb b/spec/models/search_log_spec.rb index 598e273b6b..b11074baae 100644 --- a/spec/models/search_log_spec.rb +++ b/spec/models/search_log_spec.rb @@ -128,7 +128,7 @@ RSpec.describe SearchLog, type: :model do expect(action).to eq(:created) freeze_time(10.minutes.from_now) - $redis.del(SearchLog.redis_key(ip_address: '192.168.0.1', user_id: user.id)) + Discourse.redis.del(SearchLog.redis_key(ip_address: '192.168.0.1', user_id: user.id)) action, _ = SearchLog.log( term: 'hello', diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb index 7674cc6fe9..e393212795 100644 --- a/spec/models/topic_spec.rb +++ b/spec/models/topic_spec.rb @@ -33,7 +33,7 @@ describe Topic do describe 'censored words' do after do - $redis.flushall + Discourse.redis.flushall end describe 'when title contains censored words' do diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 7815fa778f..59e219e875 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -979,7 +979,7 @@ describe User do end after do - $redis.flushall + Discourse.redis.flushall end it "updates last_seen_at" do diff --git a/spec/models/user_stat_spec.rb b/spec/models/user_stat_spec.rb index ed41be84d9..296bb4bc3b 100644 --- a/spec/models/user_stat_spec.rb +++ b/spec/models/user_stat_spec.rb @@ -98,13 +98,13 @@ describe UserStat do # this tests implementation which is not 100% ideal # that said, redis key leaks are not good stat.update_time_read! - ttl = $redis.ttl(UserStat.last_seen_key(user.id)) + ttl = Discourse.redis.ttl(UserStat.last_seen_key(user.id)) expect(ttl).to be > 0 expect(ttl).to be <= UserStat::MAX_TIME_READ_DIFF end it 'makes no changes if nothing is cached' do - $redis.del(UserStat.last_seen_key(user.id)) + Discourse.redis.del(UserStat.last_seen_key(user.id)) stat.update_time_read! stat.reload expect(stat.time_read).to eq(0) diff --git a/spec/models/web_crawler_request_spec.rb b/spec/models/web_crawler_request_spec.rb index c77a7be152..6e025e500a 100644 --- a/spec/models/web_crawler_request_spec.rb +++ b/spec/models/web_crawler_request_spec.rb @@ -31,14 +31,14 @@ describe WebCrawlerRequest do inc('Googlebot') inc('Googlebot') - $redis.without_namespace.stubs(:incr).raises(Redis::CommandError.new("READONLY")) - $redis.without_namespace.stubs(:eval).raises(Redis::CommandError.new("READONLY")) + Discourse.redis.without_namespace.stubs(:incr).raises(Redis::CommandError.new("READONLY")) + Discourse.redis.without_namespace.stubs(:eval).raises(Redis::CommandError.new("READONLY")) inc('Googlebot', autoflush: 3) WebCrawlerRequest.write_cache! - $redis.without_namespace.unstub(:incr) - $redis.without_namespace.unstub(:eval) + Discourse.redis.without_namespace.unstub(:incr) + Discourse.redis.without_namespace.unstub(:eval) inc('Googlebot', autoflush: 3) expect(web_crawler_request('Googlebot').count).to eq(3) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 53136f48b4..0b58a5ca48 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -93,7 +93,7 @@ module TestSetup # # perf benefit seems low (shaves 20 secs off a 4 minute test suite) # - # $redis = DiscourseMockRedis.new + # Discourse.redis = DiscourseMockRedis.new RateLimiter.disable PostActionNotifier.disable diff --git a/spec/requests/admin/backups_controller_spec.rb b/spec/requests/admin/backups_controller_spec.rb index 400dbd307e..406898e028 100644 --- a/spec/requests/admin/backups_controller_spec.rb +++ b/spec/requests/admin/backups_controller_spec.rb @@ -35,7 +35,7 @@ RSpec.describe Admin::BackupsController do end after do - $redis.flushall + Discourse.redis.flushall @paths&.each { |path| File.delete(path) if File.exists?(path) } @paths = nil diff --git a/spec/requests/admin/users_controller_spec.rb b/spec/requests/admin/users_controller_spec.rb index f3deeaad8c..e39ddde055 100644 --- a/spec/requests/admin/users_controller_spec.rb +++ b/spec/requests/admin/users_controller_spec.rb @@ -296,7 +296,7 @@ RSpec.describe Admin::UsersController do fab!(:another_user) { Fabricate(:coding_horror) } after do - $redis.flushall + Discourse.redis.flushall end it "raises an error when the user doesn't have permission" do diff --git a/spec/requests/application_controller_spec.rb b/spec/requests/application_controller_spec.rb index bfc4c44066..00ac570a1a 100644 --- a/spec/requests/application_controller_spec.rb +++ b/spec/requests/application_controller_spec.rb @@ -302,7 +302,7 @@ RSpec.describe ApplicationController do it 'should handle 404 to a css file' do - $redis.del("page_not_found_topics") + Discourse.redis.del("page_not_found_topics") topic1 = Fabricate(:topic) get '/stylesheets/mobile_1_4cd559272273fe6d3c7db620c617d596a5fdf240.css', headers: { 'HTTP_ACCEPT' => 'text/css,*/*,q=0.1' } @@ -323,7 +323,7 @@ RSpec.describe ApplicationController do end it 'should cache results' do - $redis.del("page_not_found_topics") + Discourse.redis.del("page_not_found_topics") topic1 = Fabricate(:topic) get '/t/nope-nope/99999999' diff --git a/spec/requests/search_controller_spec.rb b/spec/requests/search_controller_spec.rb index 41664a3d17..822ede7a0d 100644 --- a/spec/requests/search_controller_spec.rb +++ b/spec/requests/search_controller_spec.rb @@ -26,11 +26,11 @@ describe SearchController do before do # TODO be a bit more strategic here instead of junking # all of redis - $redis.flushall + Discourse.redis.flushall end after do - $redis.flushall + Discourse.redis.flushall end context "when overloaded" do diff --git a/spec/requests/session_controller_spec.rb b/spec/requests/session_controller_spec.rb index 4d75c201f4..a815d4bd34 100644 --- a/spec/requests/session_controller_spec.rb +++ b/spec/requests/session_controller_spec.rb @@ -1415,7 +1415,7 @@ RSpec.describe SessionController do context 'when token is valid' do it "should display the form for GET" do token = SecureRandom.hex - $redis.setex "otp_#{token}", 10.minutes, user.username + Discourse.redis.setex "otp_#{token}", 10.minutes, user.username get "/session/otp/#{token}" @@ -1423,7 +1423,7 @@ RSpec.describe SessionController do expect(response.body).to include( I18n.t("user_api_key.otp_confirmation.logging_in_as", username: user.username) ) - expect($redis.get("otp_#{token}")).to eq(user.username) + expect(Discourse.redis.get("otp_#{token}")).to eq(user.username) expect(session[:current_user_id]).to eq(nil) end @@ -1431,12 +1431,12 @@ RSpec.describe SessionController do it "should redirect on GET if already logged in" do sign_in(user) token = SecureRandom.hex - $redis.setex "otp_#{token}", 10.minutes, user.username + Discourse.redis.setex "otp_#{token}", 10.minutes, user.username get "/session/otp/#{token}" expect(response.status).to eq(302) - expect($redis.get("otp_#{token}")).to eq(nil) + expect(Discourse.redis.get("otp_#{token}")).to eq(nil) expect(session[:current_user_id]).to eq(user.id) end @@ -1447,13 +1447,13 @@ RSpec.describe SessionController do expect(response.status).to eq(404) token = SecureRandom.hex - $redis.setex "otp_#{token}", 10.minutes, user.username + Discourse.redis.setex "otp_#{token}", 10.minutes, user.username post "/session/otp/#{token}" expect(response.status).to eq(302) expect(response).to redirect_to("/") - expect($redis.get("otp_#{token}")).to eq(nil) + expect(Discourse.redis.get("otp_#{token}")).to eq(nil) get "/session/current.json" expect(response.status).to eq(200) diff --git a/spec/requests/user_api_keys_controller_spec.rb b/spec/requests/user_api_keys_controller_spec.rb index 43aac9e83f..92e2420ab5 100644 --- a/spec/requests/user_api_keys_controller_spec.rb +++ b/spec/requests/user_api_keys_controller_spec.rb @@ -213,7 +213,7 @@ describe UserApiKeysController do parsed_otp = key.private_decrypt(encrypted_otp) redis_key = "otp_#{parsed_otp}" - expect($redis.get(redis_key)).to eq(user.username) + expect(Discourse.redis.get(redis_key)).to eq(user.username) end it "will just show the payload if no redirect" do @@ -349,7 +349,7 @@ describe UserApiKeysController do parsed = key.private_decrypt(encrypted) - expect($redis.get("otp_#{parsed}")).to eq(user.username) + expect(Discourse.redis.get("otp_#{parsed}")).to eq(user.username) end end end diff --git a/spec/requests/webhooks_controller_spec.rb b/spec/requests/webhooks_controller_spec.rb index 269a255a1b..41c2d9c58e 100644 --- a/spec/requests/webhooks_controller_spec.rb +++ b/spec/requests/webhooks_controller_spec.rb @@ -3,7 +3,7 @@ require "rails_helper" describe WebhooksController do - before { $redis.flushall } + before { Discourse.redis.flushall } let(:email) { "em@il.com" } let(:message_id) { "12345@il.com" } diff --git a/spec/services/group_message_spec.rb b/spec/services/group_message_spec.rb index b999e711d6..32e7365f44 100644 --- a/spec/services/group_message_spec.rb +++ b/spec/services/group_message_spec.rb @@ -84,36 +84,36 @@ describe GroupMessage do describe 'sent_recently?' do it 'returns true if redis says so' do - $redis.stubs(:get).with(group_message.sent_recently_key).returns('1') + Discourse.redis.stubs(:get).with(group_message.sent_recently_key).returns('1') expect(group_message.sent_recently?).to be_truthy end it 'returns false if redis returns nil' do - $redis.stubs(:get).with(group_message.sent_recently_key).returns(nil) + Discourse.redis.stubs(:get).with(group_message.sent_recently_key).returns(nil) expect(group_message.sent_recently?).to be_falsey end it 'always returns false if limit_once_per is false' do gm = GroupMessage.new(moderators_group, :user_automatically_silenced, user: user, limit_once_per: false) gm.stubs(:sent_recently_key).returns('the_key') - $redis.stubs(:get).with(gm.sent_recently_key).returns('1') + Discourse.redis.stubs(:get).with(gm.sent_recently_key).returns('1') expect(gm.sent_recently?).to be_falsey end end describe 'remember_message_sent' do it 'stores a key in redis that expires after 24 hours' do - $redis.expects(:setex).with(group_message.sent_recently_key, 24 * 60 * 60, anything).returns('OK') + Discourse.redis.expects(:setex).with(group_message.sent_recently_key, 24 * 60 * 60, anything).returns('OK') group_message.remember_message_sent end it 'can use a given expiry time' do - $redis.expects(:setex).with(anything, 30 * 60, anything).returns('OK') + Discourse.redis.expects(:setex).with(anything, 30 * 60, anything).returns('OK') GroupMessage.new(moderators_group, :user_automatically_silenced, user: user, limit_once_per: 30.minutes).remember_message_sent end it 'can be disabled' do - $redis.expects(:setex).never + Discourse.redis.expects(:setex).never GroupMessage.new(moderators_group, :user_automatically_silenced, user: user, limit_once_per: false).remember_message_sent end end diff --git a/spec/services/random_topic_selector_spec.rb b/spec/services/random_topic_selector_spec.rb index 4f4fe5a94b..08f50e126c 100644 --- a/spec/services/random_topic_selector_spec.rb +++ b/spec/services/random_topic_selector_spec.rb @@ -7,18 +7,18 @@ describe RandomTopicSelector do it 'can correctly use cache' do key = RandomTopicSelector.cache_key - $redis.del key + Discourse.redis.del key 4.times do |t| - $redis.rpush key, t + Discourse.redis.rpush key, t end expect(RandomTopicSelector.next(0)).to eq([]) expect(RandomTopicSelector.next(2)).to eq([0, 1]) - $redis.expects(:multi).returns(Discourse.received_redis_readonly!) + Discourse.redis.expects(:multi).returns(Discourse.received_redis_readonly!) expect(RandomTopicSelector.next(2)).to eq([2, 3]) - $redis.unstub(:multi) + Discourse.redis.unstub(:multi) expect(RandomTopicSelector.next(2)).to eq([2, 3]) expect(RandomTopicSelector.next(2)).to eq([]) diff --git a/spec/services/topic_timestamp_changer_spec.rb b/spec/services/topic_timestamp_changer_spec.rb index cc86e22122..887aa71bfe 100644 --- a/spec/services/topic_timestamp_changer_spec.rb +++ b/spec/services/topic_timestamp_changer_spec.rb @@ -64,13 +64,13 @@ describe TopicTimestampChanger do end it 'deletes the stats cache' do - $redis.set AdminDashboardData.stats_cache_key, "X" - $redis.set About.stats_cache_key, "X" + Discourse.redis.set AdminDashboardData.stats_cache_key, "X" + Discourse.redis.set About.stats_cache_key, "X" TopicTimestampChanger.new(topic: topic, timestamp: Time.zone.now.to_f).change! - expect($redis.get(AdminDashboardData.stats_cache_key)).to eq(nil) - expect($redis.get(About.stats_cache_key)).to eq(nil) + expect(Discourse.redis.get(AdminDashboardData.stats_cache_key)).to eq(nil) + expect(Discourse.redis.get(About.stats_cache_key)).to eq(nil) end end end diff --git a/spec/services/word_watcher_spec.rb b/spec/services/word_watcher_spec.rb index 034911ec66..0f6a2b7bb3 100644 --- a/spec/services/word_watcher_spec.rb +++ b/spec/services/word_watcher_spec.rb @@ -7,7 +7,7 @@ describe WordWatcher do let(:raw) { "Do you like liquorice?\n\nI really like them. One could even say that I am *addicted* to liquorice. Anf if\nyou can mix it up with some anise, then I'm in heaven ;)" } after do - $redis.flushall + Discourse.redis.flushall end describe '.word_matcher_regexp' do diff --git a/spec/support/shared_examples_for_stats_cacheable.rb b/spec/support/shared_examples_for_stats_cacheable.rb index 430adb1349..a2d77e47bc 100644 --- a/spec/support/shared_examples_for_stats_cacheable.rb +++ b/spec/support/shared_examples_for_stats_cacheable.rb @@ -3,19 +3,19 @@ shared_examples_for 'stats cachable' do describe 'fetch_cached_stats' do after do - $redis.del(described_class.stats_cache_key) + Discourse.redis.del(described_class.stats_cache_key) end it 'returns the cached stats' do stats = described_class.fetch_stats.to_json - $redis.set(described_class.stats_cache_key, stats) + Discourse.redis.set(described_class.stats_cache_key, stats) expect(described_class.fetch_cached_stats).to eq(JSON.parse(stats)) end it 'returns fetches the stats if stats has not been cached' do freeze_time - $redis.del(described_class.stats_cache_key) + Discourse.redis.del(described_class.stats_cache_key) expect(described_class.fetch_cached_stats).to eq(JSON.parse(described_class.fetch_stats.to_json)) end end diff --git a/spec/tasks/redis_spec.rb b/spec/tasks/redis_spec.rb index a949ba7cda..dd9a20f65c 100644 --- a/spec/tasks/redis_spec.rb +++ b/spec/tasks/redis_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe "Redis rake tasks" do - let(:redis) { $redis.without_namespace } + let(:redis) { Discourse.redis.without_namespace } before do @multisite = Rails.configuration.multisite From e4f05a0d15dcf562045443b8d9d252b86899cfd4 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Tue, 3 Dec 2019 14:16:06 +0200 Subject: [PATCH 366/408] FIX: Call the right method --- app/controllers/admin/backups_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admin/backups_controller.rb b/app/controllers/admin/backups_controller.rb index 2e4762c05f..9d52e669b5 100644 --- a/app/controllers/admin/backups_controller.rb +++ b/app/controllers/admin/backups_controller.rb @@ -204,7 +204,7 @@ class Admin::BackupsController < Admin::AdminController begin upload_url = store.generate_upload_url(filename) rescue BackupRestore::BackupStore::BackupFileExists - return render_json_error(I18n("backup.file_exists")) + return render_json_error(I18n.t("backup.file_exists")) rescue BackupRestore::BackupStore::StorageError => e return render_json_error(e) end From c86ca3609e6182c53390385595eddff26ad102c3 Mon Sep 17 00:00:00 2001 From: romanrizzi Date: Tue, 3 Dec 2019 10:49:25 -0300 Subject: [PATCH 367/408] FIX: Filter readers avatars correctly when the post is a whisper --- app/controllers/post_readers_controller.rb | 5 +---- spec/requests/post_readers_controller_spec.rb | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/controllers/post_readers_controller.rb b/app/controllers/post_readers_controller.rb index 2a7fc34388..9f624c65cc 100644 --- a/app/controllers/post_readers_controller.rb +++ b/app/controllers/post_readers_controller.rb @@ -15,10 +15,7 @@ class PostReadersController < ApplicationController .where.not(topic_users: { last_read_post_number: nil }) .where('topic_users.topic_id = ? AND topic_users.last_read_post_number >= ?', post.topic_id, post.post_number) - if post.whisper? - non_group_members = post.topic.topic_allowed_users.map(&:user_id) - readers = readers.where.not(id: non_group_members) - end + readers = readers.where('admin = true OR moderator = true') if post.whisper? readers = readers.map do |r| { diff --git a/spec/requests/post_readers_controller_spec.rb b/spec/requests/post_readers_controller_spec.rb index 223d0f95e0..0c56966bc3 100644 --- a/spec/requests/post_readers_controller_spec.rb +++ b/spec/requests/post_readers_controller_spec.rb @@ -77,11 +77,10 @@ describe PostReadersController do expect(readers).to be_empty end - it "doesn't include non-members when the post is a whisper" do + it "doesn't include non-staff users when the post is a whisper" do @post.update(post_type: Post.types[:whisper]) - non_member_reader = Fabricate(:user) - @group_message.allowed_users << non_member_reader - TopicUser.create!(user: non_member_reader, topic: @group_message, last_read_post_number: 4) + non_staff_user = Fabricate(:user) + TopicUser.create!(user: non_staff_user, topic: @group_message, last_read_post_number: 4) get '/post_readers.json', params: { id: @post.id } readers = JSON.parse(response.body)['post_readers'] @@ -89,6 +88,17 @@ describe PostReadersController do expect(readers).to be_empty end + it "includes staff users when the post is a whisper" do + @post.update(post_type: Post.types[:whisper]) + admin = Fabricate(:admin) + TopicUser.create!(user: admin, topic: @group_message, last_read_post_number: 4) + + get '/post_readers.json', params: { id: @post.id } + reader_data = JSON.parse(response.body)['post_readers'].first + + assert_reader_is_correctly_serialized(reader_data, admin, @post) + end + it "doesn't include bots" do TopicUser.create!(user: Discourse.system_user, topic: @group_message, last_read_post_number: 4) From 98b600f1e107dad2006de4da442ec4f9c632497e Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 3 Dec 2019 22:28:03 +0800 Subject: [PATCH 368/408] UX: Adjusts wizard step margins (#8452) --- app/assets/stylesheets/wizard.scss | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/wizard.scss b/app/assets/stylesheets/wizard.scss index ae333551f3..2fd2067bd7 100644 --- a/app/assets/stylesheets/wizard.scss +++ b/app/assets/stylesheets/wizard.scss @@ -130,7 +130,6 @@ body.wizard { .wizard-step-colors { max-height: 465px; - margin-bottom: 20px; overflow-y: auto; .grid { box-sizing: border-box; @@ -189,6 +188,7 @@ body.wizard { .wizard-step-contents { height: 550px; + margin-bottom: 2em; a { text-decoration: none; color: #6699ff; @@ -516,7 +516,7 @@ body.wizard { } .radio-field-choice { - margin-bottom: 1.5em; + margin-bottom: 1.25em; input { outline: 0; @@ -602,9 +602,6 @@ body.wizard { .wizard-footer { display: none !important; } - .wizard-field { - margin-bottom: 1em !important; - } .wizard-step-description { margin-bottom: 1em !important; } From d0bb6314c656564c0c3f40a2c5a6ad2fbf0a81c9 Mon Sep 17 00:00:00 2001 From: romanrizzi Date: Tue, 3 Dec 2019 11:31:58 -0300 Subject: [PATCH 369/408] DEV: '= true' is not necessary --- app/controllers/post_readers_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/post_readers_controller.rb b/app/controllers/post_readers_controller.rb index 9f624c65cc..bc9c3a197b 100644 --- a/app/controllers/post_readers_controller.rb +++ b/app/controllers/post_readers_controller.rb @@ -15,7 +15,7 @@ class PostReadersController < ApplicationController .where.not(topic_users: { last_read_post_number: nil }) .where('topic_users.topic_id = ? AND topic_users.last_read_post_number >= ?', post.topic_id, post.post_number) - readers = readers.where('admin = true OR moderator = true') if post.whisper? + readers = readers.where('admin OR moderator') if post.whisper? readers = readers.map do |r| { From af5bcb25d52b6b87b0fec23ef75831ed355c5eb5 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Tue, 3 Dec 2019 12:31:57 +0000 Subject: [PATCH 370/408] DEV: Make bread-crumb component work with sub-sub-categories --- .../discourse/components/bread-crumbs.js.es6 | 71 +++++++++++++++++-- .../discourse/models/category.js.es6 | 5 ++ .../templates/components/bread-crumbs.hbs | 23 +++--- 3 files changed, 82 insertions(+), 17 deletions(-) diff --git a/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 b/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 index c1e013cac9..9556aceff4 100644 --- a/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 +++ b/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 @@ -1,15 +1,64 @@ import { alias, filter, or } from "@ember/object/computed"; import Component from "@ember/component"; import { default as discourseComputed } from "discourse-common/utils/decorators"; +import deprecated from "discourse-common/lib/deprecated"; // A breadcrumb including category drop downs export default Component.extend({ classNameBindings: ["hidden:hidden", ":category-breadcrumb"], tagName: "ol", - parentCategory: alias("category.parentCategory"), + @discourseComputed("categories") + filteredCategories(categories) { + return categories.filter( + category => + this.siteSettings.allow_uncategorized_topics || + category.id !== this.site.uncategorized_category_id + ); + }, + + @discourseComputed( + "category.ancestors", + "filteredCategories", + "noSubcategories" + ) + categoryBreadcrumbs(categoryAncestors, filteredCategories, noSubcategories) { + categoryAncestors = categoryAncestors || []; + const parentCategories = [undefined, ...categoryAncestors]; + const categories = [...categoryAncestors, undefined]; + const zipped = parentCategories.map((x, i) => [x, categories[i]]); + + return zipped.map(record => { + const [parentCategory, category] = record; + + const options = filteredCategories.filter( + c => + c.get("parentCategory.id") === (parentCategory && parentCategory.id) + ); + + return { + category, + parentCategory, + options, + isSubcategory: !!parentCategory, + noSubcategories: !category && noSubcategories, + hasOptions: options.length !== 0 + }; + }); + }, + + @discourseComputed("category") + parentCategory(category) { + deprecated( + "The parentCategory property of the bread-crumbs component is deprecated" + ); + return category && category.parentCategory; + }, parentCategories: filter("categories", function(c) { + deprecated( + "The parentCategories property of the bread-crumbs component is deprecated" + ); if ( c.id === this.site.get("uncategorized_category_id") && !this.siteSettings.allow_uncategorized_topics @@ -23,6 +72,9 @@ export default Component.extend({ @discourseComputed("parentCategories") parentCategoriesSorted(parentCategories) { + deprecated( + "The parentCategoriesSorted property of the bread-crumbs component is deprecated" + ); if (this.siteSettings.fixed_category_positions) { return parentCategories; } @@ -35,16 +87,27 @@ export default Component.extend({ return this.site.mobileView && !category; }, - firstCategory: or("{parentCategory,category}"), + @discourseComputed("category", "parentCategory") + firstCategory(category, parentCategory) { + deprecated( + "The firstCategory property of the bread-crumbs component is deprecated" + ); + return parentCategory || category; + }, @discourseComputed("category", "parentCategory") secondCategory(category, parentCategory) { - if (parentCategory) return category; - return null; + deprecated( + "The secondCategory property of the bread-crumbs component is deprecated" + ); + return parentCategory && category; }, @discourseComputed("firstCategory", "hideSubcategories") childCategories(firstCategory, hideSubcategories) { + deprecated( + "The childCategories property of the bread-crumbs component is deprecated" + ); if (hideSubcategories) { return []; } diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 57d8f2dcc6..82084aada3 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -55,6 +55,11 @@ const Category = RestModel.extend({ return { type: "category", id, category: this }; }, + @discourseComputed("parentCategory.ancestors") + ancestors(parentAncestors) { + return [...(parentAncestors || []), this]; + }, + @discourseComputed("notification_level") isMuted(notificationLevel) { return notificationLevel === NotificationLevels.MUTED; diff --git a/app/assets/javascripts/discourse/templates/components/bread-crumbs.hbs b/app/assets/javascripts/discourse/templates/components/bread-crumbs.hbs index e15d265a6b..c7bfe57aaf 100644 --- a/app/assets/javascripts/discourse/templates/components/bread-crumbs.hbs +++ b/app/assets/javascripts/discourse/templates/components/bread-crumbs.hbs @@ -1,16 +1,13 @@ -{{category-drop - category=firstCategory - categories=parentCategoriesSorted - countSubcategories=true}} - -{{#if childCategories}} - {{category-drop - category=secondCategory - parentCategory=firstCategory - categories=childCategories - subCategory=true - noSubcategories=noSubcategories}} -{{/if}} +{{#each categoryBreadcrumbs as |breadcrumb|}} + {{#if breadcrumb.hasOptions}} + {{category-drop + category=breadcrumb.category + parentCategory=breadcrumb.parentCategory + categories=breadcrumb.options + subCategory=breadcrumb.isSubcategory + noSubcategories=breadcrumb.noSubcategories}} + {{/if}} +{{/each}} {{#if siteSettings.tagging_enabled}} {{tag-drop From ee2473d7d5f0bb5376ba8df500bae2bd9c132c6a Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Tue, 3 Dec 2019 16:07:55 +0000 Subject: [PATCH 371/408] FIX: linting --- app/assets/javascripts/discourse/components/bread-crumbs.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 b/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 index 9556aceff4..9d00a25272 100644 --- a/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 +++ b/app/assets/javascripts/discourse/components/bread-crumbs.js.es6 @@ -1,4 +1,4 @@ -import { alias, filter, or } from "@ember/object/computed"; +import { filter } from "@ember/object/computed"; import Component from "@ember/component"; import { default as discourseComputed } from "discourse-common/utils/decorators"; import deprecated from "discourse-common/lib/deprecated"; From e7c3c108297bf5d4accd47d8e3ade98f0bcd1760 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Mon, 2 Dec 2019 17:31:05 +0100 Subject: [PATCH 372/408] FIX: Prepends whitespace when inserting via emoji picker --- .../discourse/components/d-editor.js.es6 | 6 +++- .../acceptance/emoji-picker-test.js.es6 | 32 ++++++++++++++++++- .../components/d-editor-test.js.es6 | 3 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 index e668828ccb..f223071d73 100644 --- a/app/assets/javascripts/discourse/components/d-editor.js.es6 +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -912,7 +912,11 @@ export default Component.extend({ const captures = selected.pre.match(/\B:(\w*)$/); if (_.isEmpty(captures)) { - this._addText(selected, `:${code}:`); + if (selected.pre.match(/\S$/)) { + this._addText(selected, ` :${code}:`); + } else { + this._addText(selected, `:${code}:`); + } } else { let numOfRemovedChars = selected.pre.length - captures[1].length; selected.pre = selected.pre.slice( diff --git a/test/javascripts/acceptance/emoji-picker-test.js.es6 b/test/javascripts/acceptance/emoji-picker-test.js.es6 index f6b4046eaa..449838135c 100644 --- a/test/javascripts/acceptance/emoji-picker-test.js.es6 +++ b/test/javascripts/acceptance/emoji-picker-test.js.es6 @@ -4,7 +4,7 @@ import { IMAGE_VERSION as v } from "pretty-text/emoji/version"; acceptance("EmojiPicker", { loggedIn: true, beforeEach() { - const store = Discourse.__container__.lookup("service:emojis-store"); + const store = Discourse.__container__.lookup("service:emoji-store"); store.reset(); } }); @@ -60,6 +60,36 @@ QUnit.skip("emoji picker triggers event when picking emoji", async assert => { ); }); +QUnit.test( + "emoji picker adds leading whitespace before emoji", + async assert => { + await visit("/t/internationalization-localization/280"); + await click("#topic-footer-buttons .btn.create"); + + // Whitespace should be added on text + await fillIn(".d-editor-input", "This is a test input"); + await click("button.emoji.btn"); + await click(".emoji-picker button[title='grinning']"); + assert.equal( + find(".d-editor-input").val(), + "This is a test input :grinning:", + "it adds the emoji code and a leading whitespace when there is text" + ); + await click("button.emoji.btn"); + + // Whitespace should not be added on whitespace + await fillIn(".d-editor-input", "This is a test input "); + await click("button.emoji.btn"); + await click(".emoji-picker button[title='grinning']"); + assert.equal( + find(".d-editor-input").val(), + "This is a test input :grinning:", + "it adds the emoji code and no leading whitespace when user already entered whitespace" + ); + await click("button.emoji.btn"); + } +); + QUnit.skip("emoji picker has a list of recently used emojis", async assert => { await visit("/t/internationalization-localization/280"); await click("#topic-footer-buttons .btn.create"); diff --git a/test/javascripts/components/d-editor-test.js.es6 b/test/javascripts/components/d-editor-test.js.es6 index 8c6d936e89..131de74e68 100644 --- a/test/javascripts/components/d-editor-test.js.es6 +++ b/test/javascripts/components/d-editor-test.js.es6 @@ -618,7 +618,6 @@ testCase(`doesn't jump to bottom with long text`, async function( }); componentTest("emoji", { - skip: true, template: "{{d-editor value=value}}", beforeEach() { // Test adding a custom button @@ -641,7 +640,7 @@ componentTest("emoji", { await click( '.emoji-picker .section[data-section="smileys_&_emotion"] button.emoji[title="grinning"]' ); - assert.equal(this.value, "hello world.:grinning:"); + assert.equal(this.value, "hello world. :grinning:"); } }); From 86b81b5f63b9ca99cdd8de7fa38eabd12ae52980 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Mon, 2 Dec 2019 17:35:20 +0100 Subject: [PATCH 373/408] DEV: Reenable Emoji Picker tests --- .../acceptance/emoji-picker-test.js.es6 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/javascripts/acceptance/emoji-picker-test.js.es6 b/test/javascripts/acceptance/emoji-picker-test.js.es6 index 449838135c..1b90106d4d 100644 --- a/test/javascripts/acceptance/emoji-picker-test.js.es6 +++ b/test/javascripts/acceptance/emoji-picker-test.js.es6 @@ -9,7 +9,7 @@ acceptance("EmojiPicker", { } }); -QUnit.skip("emoji picker can be opened/closed", async assert => { +QUnit.test("emoji picker can be opened/closed", async assert => { await visit("/t/internationalization-localization/280"); await click("#topic-footer-buttons .btn.create"); @@ -32,7 +32,7 @@ QUnit.skip("emoji picker can be opened/closed", async assert => { ); }); -QUnit.skip("emojis can be hovered to display info", async assert => { +QUnit.test("emojis can be hovered to display info", async assert => { await visit("/t/internationalization-localization/280"); await click("#topic-footer-buttons .btn.create"); @@ -47,7 +47,7 @@ QUnit.skip("emojis can be hovered to display info", async assert => { ); }); -QUnit.skip("emoji picker triggers event when picking emoji", async assert => { +QUnit.test("emoji picker triggers event when picking emoji", async assert => { await visit("/t/internationalization-localization/280"); await click("#topic-footer-buttons .btn.create"); await click("button.emoji.btn"); @@ -90,7 +90,7 @@ QUnit.test( } ); -QUnit.skip("emoji picker has a list of recently used emojis", async assert => { +QUnit.test("emoji picker has a list of recently used emojis", async assert => { await visit("/t/internationalization-localization/280"); await click("#topic-footer-buttons .btn.create"); await click("button.emoji.btn"); @@ -136,7 +136,7 @@ QUnit.skip("emoji picker has a list of recently used emojis", async assert => { ); }); -QUnit.skip( +QUnit.test( "emoji picker correctly orders recently used emojis", async assert => { await visit("/t/internationalization-localization/280"); @@ -164,7 +164,7 @@ QUnit.skip( } ); -QUnit.skip("emoji picker lazy loads emojis", async assert => { +QUnit.test("emoji picker lazy loads emojis", async assert => { await visit("/t/internationalization-localization/280"); await click("#topic-footer-buttons .btn.create"); @@ -177,7 +177,7 @@ QUnit.skip("emoji picker lazy loads emojis", async assert => { ); }); -QUnit.skip("emoji picker persists state", async assert => { +QUnit.test("emoji picker persists state", async assert => { await visit("/t/internationalization-localization/280"); await click("#topic-footer-buttons .btn.create"); From 9ebb69e8ebfdb9beaf8682939932cc70fcb46fa8 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Tue, 3 Dec 2019 17:32:33 +0100 Subject: [PATCH 374/408] FIX: Respect `enable_inline_emoji_translation` setting in titles --- .../javascripts/discourse/lib/text.js.es6 | 3 +- .../javascripts/pretty-text/emoji.js.es6 | 73 +++++++++++++++---- .../engines/discourse-markdown/quotes.js.es6 | 4 +- lib/pretty_text.rb | 9 ++- spec/models/topic_spec.rb | 11 +++ test/javascripts/acceptance/topic-test.js.es6 | 21 ++++++ test/javascripts/helpers/site-settings.js | 2 + test/javascripts/lib/emoji-test.js.es6 | 35 +++++++++ 8 files changed, 141 insertions(+), 17 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/text.js.es6 b/app/assets/javascripts/discourse/lib/text.js.es6 index 2767426c09..7862ce53e0 100644 --- a/app/assets/javascripts/discourse/lib/text.js.es6 +++ b/app/assets/javascripts/discourse/lib/text.js.es6 @@ -68,7 +68,8 @@ function emojiOptions() { return { getURL: Discourse.getURLWithCDN, emojiSet: Discourse.SiteSettings.emoji_set, - enableEmojiShortcuts: Discourse.SiteSettings.enable_emoji_shortcuts + enableEmojiShortcuts: Discourse.SiteSettings.enable_emoji_shortcuts, + inlineEmoji: Discourse.SiteSettings.enable_inline_emoji_translation }; } diff --git a/app/assets/javascripts/pretty-text/emoji.js.es6 b/app/assets/javascripts/pretty-text/emoji.js.es6 index 2089902c3b..fec9b725c4 100644 --- a/app/assets/javascripts/pretty-text/emoji.js.es6 +++ b/app/assets/javascripts/pretty-text/emoji.js.es6 @@ -42,10 +42,31 @@ export function buildReplacementsList(emojiReplacements) { .join("|"); } -const unicodeRegexp = new RegExp( - buildReplacementsList(replacements) + "|\\B:[^\\s:]+(?::t\\d)?:?\\B", - "g" -); +let replacementListCache; +const unicodeRegexpCache = {}; + +function replacementList() { + if (replacementListCache === undefined) { + replacementListCache = buildReplacementsList(replacements); + } + + return replacementListCache; +} + +function unicodeRegexp(inlineEmoji) { + if (unicodeRegexpCache[inlineEmoji] === undefined) { + const emojiExpression = inlineEmoji + ? "|:[^\\s:]+(?::t\\d)?:?" + : "|\\B:[^\\s:]+(?::t\\d)?:?\\B"; + + unicodeRegexpCache[inlineEmoji] = new RegExp( + replacementList() + emojiExpression, + "g" + ); + } + + return unicodeRegexpCache[inlineEmoji]; +} // add all default emojis emojis.forEach(code => (emojiHash[code] = true)); @@ -56,12 +77,29 @@ Object.keys(aliases).forEach(name => { aliases[name].forEach(alias => (aliasHash[alias] = name)); }); +function isReplacableInlineEmoji(string, index, inlineEmoji) { + if (inlineEmoji) return true; + + // index depends on regex; when `inlineEmoji` is false, the regex starts + // with a `\B` character, so there's no need to subtract from the index + const beforeEmoji = string.slice(0, index - (inlineEmoji ? 1 : 0)); + + return ( + beforeEmoji.length === 0 || + /(?:\s|[>.,\/#!$%^&*;:{}=\-_`~()])$/.test(beforeEmoji) || + new RegExp(`(?:${replacementList()})$`).test(beforeEmoji) + ); +} + export function performEmojiUnescape(string, opts) { if (!string) { return; } - return string.replace(unicodeRegexp, m => { + const inlineEmoji = opts.inlineEmoji; + const regexp = unicodeRegexp(inlineEmoji); + + return string.replace(regexp, (m, index) => { const isEmoticon = opts.enableEmojiShortcuts && !!translations[m]; const isUnicodeEmoticon = !!replacements[m]; let emojiVal; @@ -78,7 +116,11 @@ export function performEmojiUnescape(string, opts) { ? "emoji emoji-custom" : "emoji"; - return url && (isEmoticon || hasEndingColon || isUnicodeEmoticon) + const isReplacable = + (isEmoticon || hasEndingColon || isUnicodeEmoticon) && + isReplacableInlineEmoji(string, index, inlineEmoji); + + return url && isReplacable ? `${emojiVal}` @@ -89,14 +131,19 @@ export function performEmojiUnescape(string, opts) { } export function performEmojiEscape(string, opts) { - return string.replace(unicodeRegexp, m => { - if (!!translations[m]) { - return opts.emojiShortcuts ? `:${translations[m]}:` : m; - } else if (!!replacements[m]) { - return `:${replacements[m]}:`; - } else { - return m; + const inlineEmoji = opts.inlineEmoji; + const regexp = unicodeRegexp(inlineEmoji); + + return string.replace(regexp, (m, index) => { + if (isReplacableInlineEmoji(string, index, inlineEmoji)) { + if (!!translations[m]) { + return opts.emojiShortcuts ? `:${translations[m]}:` : m; + } else if (!!replacements[m]) { + return `:${replacements[m]}:`; + } } + + return m; }); return string; diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown/quotes.js.es6 b/app/assets/javascripts/pretty-text/engines/discourse-markdown/quotes.js.es6 index e1c9a31bf0..6c2860577a 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown/quotes.js.es6 +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown/quotes.js.es6 @@ -120,7 +120,8 @@ const rule = { title = performEmojiUnescape(topicInfo.title, { getURL: options.getURL, emojiSet: options.emojiSet, - enableEmojiShortcuts: options.enableEmojiShortcuts + enableEmojiShortcuts: options.enableEmojiShortcuts, + inlineEmoji: options.inlineEmoji }); } @@ -156,6 +157,7 @@ export function setup(helper) { opts.enableEmoji = siteSettings.enable_emoji; opts.emojiSet = siteSettings.emoji_set; opts.enableEmojiShortcuts = siteSettings.enable_emoji_shortcuts; + opts.inlineEmoji = siteSettings.enable_inline_emoji_translation; }); helper.registerPlugin(md => { diff --git a/lib/pretty_text.rb b/lib/pretty_text.rb index 761432b26b..b01117733a 100644 --- a/lib/pretty_text.rb +++ b/lib/pretty_text.rb @@ -218,6 +218,7 @@ module PrettyText set = SiteSetting.emoji_set.inspect custom = Emoji.custom.map { |e| [e.name, e.url] }.to_h.to_json + protect do v8.eval(<<~JS) __paths = #{paths_json}; @@ -225,7 +226,8 @@ module PrettyText getURL: __getURL, emojiSet: #{set}, customEmoji: #{custom}, - enableEmojiShortcuts: #{SiteSetting.enable_emoji_shortcuts} + enableEmojiShortcuts: #{SiteSetting.enable_emoji_shortcuts}, + inlineEmoji: #{SiteSetting.enable_inline_emoji_translation} }); JS end @@ -238,7 +240,10 @@ module PrettyText protect do v8.eval(<<~JS) - __performEmojiEscape(#{title.inspect}, { emojiShortcuts: #{replace_emoji_shortcuts} }); + __performEmojiEscape(#{title.inspect}, { + emojiShortcuts: #{replace_emoji_shortcuts}, + inlineEmoji: #{SiteSetting.enable_inline_emoji_translation} + }); JS end end diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb index e393212795..26e2563cd8 100644 --- a/spec/models/topic_spec.rb +++ b/spec/models/topic_spec.rb @@ -308,6 +308,7 @@ describe Topic do let(:topic_emoji) { build_topic_with_title("I 💖 candy alot") } let(:topic_modifier_emoji) { build_topic_with_title("I 👨‍🌾 candy alot") } let(:topic_shortcut_emoji) { build_topic_with_title("I love candy :)") } + let(:topic_inline_emoji) { build_topic_with_title("Hello😊World") } it "escapes script contents" do expect(topic_script.fancy_title).to eq("Topic with <script>alert(‘title’)</script> script in its title") @@ -359,6 +360,16 @@ describe Topic do expect(topic_shortcut_emoji.fancy_title).to eq("I love candy :)") end end + + it "keeps inline emojis if inline emoji setting disabled" do + SiteSetting.enable_inline_emoji_translation = false + expect(topic_inline_emoji.fancy_title).to eq("Hello😊World") + end + + it "expands inline emojis if inline emoji setting enabled" do + SiteSetting.enable_inline_emoji_translation = true + expect(topic_inline_emoji.fancy_title).to eq("Hello:blush:World") + end end context 'fancy title' do diff --git a/test/javascripts/acceptance/topic-test.js.es6 b/test/javascripts/acceptance/topic-test.js.es6 index d856cc9eb1..0e293e20f7 100644 --- a/test/javascripts/acceptance/topic-test.js.es6 +++ b/test/javascripts/acceptance/topic-test.js.es6 @@ -186,6 +186,27 @@ QUnit.test("Updating the topic title with unicode emojis", async assert => { ); }); +QUnit.test( + "Updating the topic title with unicode emojis without whitespaces", + async assert => { + Discourse.SiteSettings.enable_inline_emoji_translation = true; + await visit("/t/internationalization-localization/280"); + await click("#topic-title .d-icon-pencil-alt"); + + await fillIn("#edit-title", "Test🙂Title"); + + await click("#topic-title .submit-edit"); + + assert.equal( + find(".fancy-title") + .html() + .trim(), + `Testslightly_smiling_faceTitle`, + "it displays the new title with escaped unicode emojis" + ); + } +); + acceptance("Topic featured links", { loggedIn: true, settings: { diff --git a/test/javascripts/helpers/site-settings.js b/test/javascripts/helpers/site-settings.js index 5ca4cbb867..25568eda89 100644 --- a/test/javascripts/helpers/site-settings.js +++ b/test/javascripts/helpers/site-settings.js @@ -93,6 +93,8 @@ Discourse.SiteSettingsOriginal = { enable_emoji: true, enable_emoji_shortcuts: true, emoji_set: "emoji_one", + enable_emoji_shortcuts: true, + enable_inline_emoji_translation: false, desktop_category_page_style: "categories_and_latest_topics", enable_mentions: true, enable_personal_messages: true, diff --git a/test/javascripts/lib/emoji-test.js.es6 b/test/javascripts/lib/emoji-test.js.es6 index 69244d06c4..ca06ce0756 100644 --- a/test/javascripts/lib/emoji-test.js.es6 +++ b/test/javascripts/lib/emoji-test.js.es6 @@ -92,6 +92,41 @@ QUnit.test("emojiUnescape", assert => { "no emoticons when emoji shortcuts are disabled", { enable_emoji_shortcuts: false } ); + testUnescape( + "Hello 😊 World", + `Hello blush World`, + "emoji from Unicode emoji" + ); + testUnescape( + "Hello😊World", + "Hello😊World", + "keeps Unicode emoji when inline translation disabled", + { + enable_inline_emoji_translation: false + } + ); + testUnescape( + "Hello😊World", + `HelloblushWorld`, + "emoji from Unicode emoji when inline translation enabled", + { + enable_inline_emoji_translation: true + } + ); + testUnescape( + "hi:smile:", + "hi:smile:", + "no emojis when inline translation disabled", + { + enable_inline_emoji_translation: false + } + ); + testUnescape( + "hi:smile:", + `hismile`, + "emoji when inline translation enabled", + { enable_inline_emoji_translation: true } + ); }); QUnit.test("Emoji search", assert => { From 6fe27b9e97c7f25dcdccefd7aedcaf431b52db89 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Tue, 3 Dec 2019 13:57:07 -0600 Subject: [PATCH 375/408] FEATURE: Plugin outlet adjacent to new topic btn (#8443) --- .../discourse/templates/components/d-navigation.hbs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/assets/javascripts/discourse/templates/components/d-navigation.hbs b/app/assets/javascripts/discourse/templates/components/d-navigation.hbs index 5cf53f5a20..a97af68cbc 100644 --- a/app/assets/javascripts/discourse/templates/components/d-navigation.hbs +++ b/app/assets/javascripts/discourse/templates/components/d-navigation.hbs @@ -12,6 +12,13 @@ {{category-notifications-button value=category.notification_level category=category}} {{/if}} +{{plugin-outlet name="before-create-topic-button" + args=(hash + canCreateTopic=canCreateTopic + createTopicDisabled=createTopicDisabled + createTopicLabel=createTopicLabel) +}} + {{create-topic-button canCreateTopic=canCreateTopic action=createTopic From 2cca14d510e7ed8472f7b061cd7c5eb4563032a9 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Tue, 3 Dec 2019 20:57:46 +0100 Subject: [PATCH 376/408] FEATURE: Add hidden setting to allow `unsafe-eval` in CSP This new setting defaults to `true` for now, until we make sure that all official plugins and theme components work without `unsafe-eval` in the CSP. --- config/site_settings.yml | 3 +++ lib/content_security_policy/default.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/config/site_settings.yml b/config/site_settings.yml index 6db2c67468..103194d78a 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -1389,6 +1389,9 @@ security: content_security_policy_script_src: type: list default: "" + content_security_policy_allow_unsafe_eval: + default: true + hidden: true invalidate_inactive_admin_email_after_days: default: 365 min: 0 diff --git a/lib/content_security_policy/default.rb b/lib/content_security_policy/default.rb index 1e056f78bb..b326ee57f9 100644 --- a/lib/content_security_policy/default.rb +++ b/lib/content_security_policy/default.rb @@ -45,13 +45,13 @@ class ContentSecurityPolicy def script_src [ - :unsafe_eval, :report_sample, "#{base_url}/logs/", "#{base_url}/sidekiq/", "#{base_url}/mini-profiler-resources/", *script_assets ].tap do |sources| + sources << :unsafe_eval if SiteSetting.content_security_policy_allow_unsafe_eval sources << 'https://www.google-analytics.com/analytics.js' if SiteSetting.ga_universal_tracking_code.present? sources << 'https://www.googletagmanager.com/gtm.js' if SiteSetting.gtm_container_id.present? end From 57bb553499354e8c89c3f63d7878e89ae0cad6d9 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 4 Dec 2019 10:30:04 +1100 Subject: [PATCH 377/408] DEV: nav-item should not fail when no top menu items exist This can be called from themes where anonymous_top_menu_items is not set cause the site requires login Bail out cleanly if that is the case --- .../javascripts/discourse/models/nav-item.js.es6 | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/discourse/models/nav-item.js.es6 b/app/assets/javascripts/discourse/models/nav-item.js.es6 index 943f11fd89..83330778e0 100644 --- a/app/assets/javascripts/discourse/models/nav-item.js.es6 +++ b/app/assets/javascripts/discourse/models/nav-item.js.es6 @@ -150,11 +150,12 @@ NavItem.reopenClass({ opts = opts || {}; - if ( - anonymous && - !Site.currentProp("anonymous_top_menu_items").includes(filterType) - ) - return null; + if (anonymous) { + const topMenuItems = Site.currentProp("anonymous_top_menu_items"); + if (!topMenuItems || !topMenuItems.includes(filterType)) { + return null; + } + } if (!Category.list() && filterType === "categories") return null; if (!Site.currentProp("top_menu_items").includes(filterType)) return null; From 80f4b9e2279856eb34349636a50a3cc3967ffaf3 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Tue, 3 Dec 2019 17:19:52 -0700 Subject: [PATCH 378/408] DEV: Remove buffered rendering from watched words This is another refactoring in the multi-step process to remove all uses of our custom Render Buffer. Previous commit: bb31e7f5b6150e7d30461cdeef9b537f43f3caee in the series. This commit affects the display of the Webhooks Deliver Status column. It is just a refactor and does not change any functionality. --- .../components/admin-web-hook-status.js.es6 | 48 +++++++++---------- .../components/admin-web-hook-status.hbs | 1 + .../javascripts/admin/templates/web-hooks.hbs | 1 - 3 files changed, 24 insertions(+), 26 deletions(-) create mode 100644 app/assets/javascripts/admin/templates/components/admin-web-hook-status.hbs diff --git a/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 b/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 index b023a330c7..30c2b9157e 100644 --- a/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 +++ b/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 @@ -1,33 +1,31 @@ import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { iconHTML } from "discourse-common/lib/icon-library"; -import { bufferedRender } from "discourse-common/lib/buffered-render"; -export default Component.extend( - bufferedRender({ - classes: ["text-muted", "text-danger", "text-successful", "text-muted"], - icons: ["far-circle", "times-circle", "circle", "circle"], +export default Component.extend({ + classes: ["text-muted", "text-danger", "text-successful", "text-muted"], + icons: ["far-circle", "times-circle", "circle", "circle"], + circleIcon: null, + deliveryStatus: null, - @discourseComputed("deliveryStatuses", "model.last_delivery_status") - status(deliveryStatuses, lastDeliveryStatus) { - return deliveryStatuses.find(s => s.id === lastDeliveryStatus); - }, + @discourseComputed("deliveryStatuses", "model.last_delivery_status") + status(deliveryStatuses, lastDeliveryStatus) { + return deliveryStatuses.find(s => s.id === lastDeliveryStatus); + }, - @discourseComputed("status.id", "icons") - icon(statusId, icons) { - return icons[statusId - 1]; - }, + @discourseComputed("status.id", "icons") + icon(statusId, icons) { + return icons[statusId - 1]; + }, - @discourseComputed("status.id", "classes") - class(statusId, classes) { - return classes[statusId - 1]; - }, + @discourseComputed("status.id", "classes") + class(statusId, classes) { + return classes[statusId - 1]; + }, - buildBuffer(buffer) { - buffer.push(iconHTML(this.icon, { class: this.class })); - buffer.push( - I18n.t(`admin.web_hooks.delivery_status.${this.get("status.name")}`) - ); - } - }) -); + didReceiveAttrs() { + this._super(...arguments); + this.set("circleIcon", iconHTML(this.icon, { class: this.class }).htmlSafe()); + this.set("deliveryStatus", I18n.t(`admin.web_hooks.delivery_status.${this.get("status.name")}`)); + } +}); diff --git a/app/assets/javascripts/admin/templates/components/admin-web-hook-status.hbs b/app/assets/javascripts/admin/templates/components/admin-web-hook-status.hbs new file mode 100644 index 0000000000..7aa2d1455f --- /dev/null +++ b/app/assets/javascripts/admin/templates/components/admin-web-hook-status.hbs @@ -0,0 +1 @@ +{{circleIcon}} {{deliveryStatus}} diff --git a/app/assets/javascripts/admin/templates/web-hooks.hbs b/app/assets/javascripts/admin/templates/web-hooks.hbs index 389f7d4815..e63dac0828 100644 --- a/app/assets/javascripts/admin/templates/web-hooks.hbs +++ b/app/assets/javascripts/admin/templates/web-hooks.hbs @@ -1,4 +1,3 @@ -

    {{i18n 'admin.web_hooks.instruction'}}

    From 8f708bd6e17753a28afceaf33210c8f503f5b660 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Tue, 3 Dec 2019 17:39:39 -0700 Subject: [PATCH 379/408] DEV: Run prettier Follow up to: 80f4b9e2279856eb34349636a50a3cc3967ffaf3 --- .../admin/components/admin-web-hook-status.js.es6 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 b/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 index 30c2b9157e..0c24edc9d6 100644 --- a/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 +++ b/app/assets/javascripts/admin/components/admin-web-hook-status.js.es6 @@ -25,7 +25,13 @@ export default Component.extend({ didReceiveAttrs() { this._super(...arguments); - this.set("circleIcon", iconHTML(this.icon, { class: this.class }).htmlSafe()); - this.set("deliveryStatus", I18n.t(`admin.web_hooks.delivery_status.${this.get("status.name")}`)); + this.set( + "circleIcon", + iconHTML(this.icon, { class: this.class }).htmlSafe() + ); + this.set( + "deliveryStatus", + I18n.t(`admin.web_hooks.delivery_status.${this.get("status.name")}`) + ); } }); From 226fc07a1763732c113e83aff98d2195ea395d95 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Wed, 4 Dec 2019 01:22:29 +0000 Subject: [PATCH 380/408] FIX: Don't allow category slugs to be entirely digits --- lib/slug.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/slug.rb b/lib/slug.rb index f50492bddf..25f2325b0f 100644 --- a/lib/slug.rb +++ b/lib/slug.rb @@ -19,8 +19,6 @@ module Slug when :encoded then self.encoded_generator(string) when :none then self.none_generator(string) end - # Reject slugs that only contain numbers, because they would be indistinguishable from id's. - slug = (slug =~ /[^\d]/ ? slug : '') slug = self.prettify_slug(slug, max_length: max_length) slug.blank? ? default : slug end @@ -33,6 +31,9 @@ module Slug private def self.prettify_slug(slug, max_length:) + # Reject slugs that only contain numbers, because they would be indistinguishable from id's. + slug = (slug =~ /[^\d]/ ? slug : '') + slug .tr("_", "-") .truncate(max_length, omission: '') From 5e134400e25c2b1f79999be1ad23e4d9248bb629 Mon Sep 17 00:00:00 2001 From: Joe Date: Wed, 4 Dec 2019 11:40:59 +0800 Subject: [PATCH 381/408] UX: prevent scrollbars on initial panel load (#8456) --- app/assets/stylesheets/common/base/menu-panel.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/common/base/menu-panel.scss b/app/assets/stylesheets/common/base/menu-panel.scss index d03cb2cb99..c0693508f6 100644 --- a/app/assets/stylesheets/common/base/menu-panel.scss +++ b/app/assets/stylesheets/common/base/menu-panel.scss @@ -221,8 +221,8 @@ .none { padding-top: 5px; } - .spinner-container.visible { - min-height: 30px; + .spinner-container { + min-height: 2em; } .spinner { width: 20px; From 46fc45de993bc339c1d8498e097341b9f88ca002 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Wed, 4 Dec 2019 17:13:20 +1100 Subject: [PATCH 382/408] FIX: inbound link when the only slug available (#8457) Problem mentioned in [meta](https://meta.discourse.org/t/inbound-links-dont-show-up-when-topic-id-is-not-included/100551) When there is an internal link without ID, only slug, we should still try to create reflection link. --- app/models/topic_link.rb | 51 +++++++++++++++++----------------- spec/models/topic_link_spec.rb | 21 ++++++++++++++ 2 files changed, 46 insertions(+), 26 deletions(-) diff --git a/app/models/topic_link.rb b/app/models/topic_link.rb index 1544e9548b..ed0633ecd7 100644 --- a/app/models/topic_link.rb +++ b/app/models/topic_link.rb @@ -172,6 +172,7 @@ class TopicLink < ActiveRecord::Base internal = false topic_id = nil post_number = nil + topic = nil if upload = Upload.get_from_url(url) internal = Discourse.store.internal? @@ -185,9 +186,11 @@ class TopicLink < ActiveRecord::Base topic_id = route[:topic_id].to_i post_number = route[:post_number] || 1 + topic_slug = route[:id] # Store the canonical URL topic = Topic.find_by(id: topic_id) + topic ||= Topic.find_by(slug: topic_slug) if topic_slug topic_id = nil unless topic if topic.present? @@ -197,11 +200,11 @@ class TopicLink < ActiveRecord::Base end # Skip linking to ourselves - return nil if topic_id == post.topic_id + return nil if topic&.id == post.topic_id reflected_post = nil - if post_number && topic_id - reflected_post = Post.find_by(topic_id: topic_id, post_number: post_number.to_i) + if post_number && topic + reflected_post = Post.find_by(topic_id: topic.id, post_number: post_number.to_i) end url = url[0...TopicLink.max_url_length] @@ -216,7 +219,7 @@ class TopicLink < ActiveRecord::Base url: url, domain: parsed.host || Discourse.current_hostname, internal: internal, - link_topic_id: topic_id, + link_topic_id: topic&.id, link_post_id: reflected_post.try(:id), quote: link.is_quote, extension: file_extension) @@ -228,31 +231,27 @@ class TopicLink < ActiveRecord::Base reflected_id = nil # Create the reflection if we can - if topic_id.present? - topic = Topic.find_by(id: topic_id) + if topic && post.topic && topic.archetype != 'private_message' && post.topic.archetype != 'private_message' && post.topic.visible? + prefix = Discourse.base_url_no_prefix + reflected_url = "#{prefix}#{post.topic.relative_url(post.post_number)}" + tl = TopicLink.find_by(topic_id: topic&.id, + post_id: reflected_post&.id, + url: reflected_url) - if topic && post.topic && topic.archetype != 'private_message' && post.topic.archetype != 'private_message' && post.topic.visible? - prefix = Discourse.base_url_no_prefix - reflected_url = "#{prefix}#{post.topic.relative_url(post.post_number)}" - tl = TopicLink.find_by(topic_id: topic_id, - post_id: reflected_post.try(:id), - url: reflected_url) + unless tl + tl = TopicLink.create(user_id: post.user_id, + topic_id: topic&.id, + post_id: reflected_post&.id, + url: reflected_url, + domain: Discourse.current_hostname, + reflection: true, + internal: true, + link_topic_id: post.topic_id, + link_post_id: post.id) - unless tl - tl = TopicLink.create(user_id: post.user_id, - topic_id: topic_id, - post_id: reflected_post.try(:id), - url: reflected_url, - domain: Discourse.current_hostname, - reflection: true, - internal: true, - link_topic_id: post.topic_id, - link_post_id: post.id) - - end - - reflected_id = tl.id if tl.persisted? end + + reflected_id = tl.id if tl.persisted? end [url, reflected_id] diff --git a/spec/models/topic_link_spec.rb b/spec/models/topic_link_spec.rb index 5ed450bbd1..2f8a0bec33 100644 --- a/spec/models/topic_link_spec.rb +++ b/spec/models/topic_link_spec.rb @@ -144,6 +144,27 @@ describe TopicLink do linked_post.revise(post.user, raw: "no more linkies https://eviltrout.com") expect(other_topic.reload.topic_links.where(link_post_id: linked_post.id)).to be_blank end + + it 'works without id' do + post + url = "http://#{test_uri.host}/t/#{other_topic.slug}" + topic.posts.create(user: user, raw: 'initial post') + linked_post = topic.posts.create(user: user, raw: "Link to another topic: #{url}") + + TopicLink.extract_from(linked_post) + link = topic.topic_links.first + + reflection = other_topic.topic_links.first + + expect(reflection).to be_present + expect(reflection).to be_reflection + expect(reflection.post_id).to be_present + expect(reflection.domain).to eq(test_uri.host) + expect(reflection.url).to eq("http://#{test_uri.host}/t/unique-topic-name/#{topic.id}/#{linked_post.post_number}") + expect(reflection.link_topic_id).to eq(topic.id) + expect(reflection.link_post_id).to eq(linked_post.id) + expect(reflection.user_id).to eq(link.user_id) + end end context "link to a user on discourse" do From bb69e8942e9d4f4dfc9679697a4f1585abbde9d3 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Wed, 4 Dec 2019 17:13:41 +1100 Subject: [PATCH 383/408] FEATURE: ability to add all active components to theme (#8447) * FEATURE: ability to add all active components to theme * FIX: add a component to all themes takes only active ones * FIX: move select components/themes to top * FIX: improve defaultIsAvailable * FIX: Add filter(Boolean) and remove btn class --- .../admin-customize-themes-show.js.es6 | 28 +++- .../admin/mixins/setting-component.js.es6 | 30 +++- .../javascripts/admin/models/theme.js.es6 | 1 + .../templates/components/site-setting.hbs | 2 +- .../admin/templates/customize-themes-show.hbs | 132 ++++++++---------- .../stylesheets/common/admin/customize.scss | 4 +- config/locales/client.en.yml | 2 + 7 files changed, 118 insertions(+), 81 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 index a7308865ce..b9712761e5 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-themes-show.js.es6 @@ -23,7 +23,13 @@ export default Controller.extend({ editRouteName: "adminCustomizeThemes.edit", parentThemesNames: mapBy("model.parentThemes", "name"), availableParentThemes: filterBy("allThemes", "component", false), + availableActiveParentThemes: filterBy("availableParentThemes", "isActive"), availableThemesNames: mapBy("availableParentThemes", "name"), + availableActiveThemesNames: mapBy("availableActiveParentThemes", "name"), + availableActiveChildThemes: filterBy("availableChildThemes", "hasParents"), + availableComponentsNames: mapBy("availableChildThemes", "name"), + availableActiveComponentsNames: mapBy("availableActiveChildThemes", "name"), + childThemesNames: mapBy("model.childThemes", "name"), @discourseComputed("model.editedFields") editedFieldsFormatted() { @@ -60,7 +66,7 @@ export default Controller.extend({ }, @discourseComputed("model.parentThemes.[]") - relativesSelectorSettings() { + relativesSelectorSettingsForComponent() { return Ember.Object.create({ list_type: "compact", type: "list", @@ -71,12 +77,30 @@ export default Controller.extend({ choices: this.availableThemesNames, default: this.parentThemesNames.join("|"), value: this.parentThemesNames.join("|"), - defaultValues: this.availableThemesNames.join("|"), + defaultValues: this.availableActiveThemesNames.join("|"), allThemes: this.allThemes, setDefaultValuesLabel: I18n.t("admin.customize.theme.add_all_themes") }); }, + @discourseComputed("model.parentThemes.[]") + relativesSelectorSettingsForTheme() { + return Ember.Object.create({ + list_type: "compact", + type: "list", + preview: null, + anyValue: false, + setting: "child_theme_ids", + label: I18n.t("admin.customize.theme.included_components"), + choices: this.availableComponentsNames, + default: this.childThemesNames.join("|"), + value: this.childThemesNames.join("|"), + defaultValues: this.availableActiveComponentsNames.join("|"), + allThemes: this.allThemes, + setDefaultValuesLabel: I18n.t("admin.customize.theme.add_all") + }); + }, + @discourseComputed("allThemes", "model.component", "model") availableChildThemes(allThemes) { if (!this.get("model.component")) { diff --git a/app/assets/javascripts/admin/mixins/setting-component.js.es6 b/app/assets/javascripts/admin/mixins/setting-component.js.es6 index 9cec819404..63fa9bcf4b 100644 --- a/app/assets/javascripts/admin/mixins/setting-component.js.es6 +++ b/app/assets/javascripts/admin/mixins/setting-component.js.es6 @@ -100,6 +100,28 @@ export default Mixin.create({ return settingDefault !== bufferedValue; }, + @discourseComputed("buffered.value") + bufferedValues(bufferedValuesString) { + return ( + bufferedValuesString && bufferedValuesString.split("|").filter(Boolean) + ); + }, + + @discourseComputed("setting.defaultValues") + defaultValues(defaultValuesString) { + return ( + defaultValuesString && defaultValuesString.split("|").filter(Boolean) + ); + }, + + @discourseComputed("defaultValues", "bufferedValues") + defaultIsAvailable(defaultValues, bufferedValues) { + return ( + defaultValues && + !defaultValues.every(value => bufferedValues.includes(value)) + ); + }, + _watchEnterKey: on("didInsertElement", function() { $(this.element).on("keydown.setting-enter", ".input-setting-string", e => { if (e.keyCode === 13) { @@ -216,7 +238,13 @@ export default Mixin.create({ }, setDefaultValues() { - this.set("buffered.value", this.get("setting.defaultValues")); + this.set( + "buffered.value", + this.bufferedValues + .concat(this.defaultValues) + .uniq() + .join("|") + ); } } }); diff --git a/app/assets/javascripts/admin/models/theme.js.es6 b/app/assets/javascripts/admin/models/theme.js.es6 index fb00497c25..d1528bcd06 100644 --- a/app/assets/javascripts/admin/models/theme.js.es6 +++ b/app/assets/javascripts/admin/models/theme.js.es6 @@ -19,6 +19,7 @@ const Theme = RestModel.extend({ isActive: or("default", "user_selectable"), isPendingUpdates: gt("remote_theme.commits_behind", 0), hasEditedFields: gt("editedFields.length", 0), + hasParents: gt("parent_themes.length", 0), @discourseComputed("theme_fields.[]") targets() { diff --git a/app/assets/javascripts/admin/templates/components/site-setting.hbs b/app/assets/javascripts/admin/templates/components/site-setting.hbs index 888a132a26..e67af55751 100644 --- a/app/assets/javascripts/admin/templates/components/site-setting.hbs +++ b/app/assets/javascripts/admin/templates/components/site-setting.hbs @@ -1,6 +1,6 @@

    {{unbound settingName}}

    - {{#if setting.defaultValues }} + {{#if defaultIsAvailable}} {{setting.setDefaultValuesLabel}} {{/if}}
    diff --git a/app/assets/javascripts/admin/templates/customize-themes-show.hbs b/app/assets/javascripts/admin/templates/customize-themes-show.hbs index c90e73e7a5..b203985056 100644 --- a/app/assets/javascripts/admin/templates/customize-themes-show.hbs +++ b/app/assets/javascripts/admin/templates/customize-themes-show.hbs @@ -99,23 +99,23 @@ {{/if}} - {{#if updatingRemote}} - {{i18n 'admin.customize.theme.updating'}} - {{else}} - {{#if model.remote_theme.commits_behind}} - {{i18n 'admin.customize.theme.commits_behind' count=model.remote_theme.commits_behind}} - {{#if model.remote_theme.github_diff_link}} - - {{i18n 'admin.customize.theme.compare_commits'}} - - {{/if}} - {{else}} - {{#unless showRemoteError}} - {{i18n 'admin.customize.theme.up_to_date'}} {{format-date model.remote_theme.updated_at leaveAgo="true"}} - {{/unless}} + {{#if updatingRemote}} + {{i18n 'admin.customize.theme.updating'}} + {{else}} + {{#if model.remote_theme.commits_behind}} + {{i18n 'admin.customize.theme.commits_behind' count=model.remote_theme.commits_behind}} + {{#if model.remote_theme.github_diff_link}} + + {{i18n 'admin.customize.theme.compare_commits'}} + {{/if}} + {{else}} + {{#unless showRemoteError}} + {{i18n 'admin.customize.theme.up_to_date'}} {{format-date model.remote_theme.updated_at leaveAgo="true"}} + {{/unless}} {{/if}} - + {{/if}} + {{else}} {{d-icon "info-circle"}} {{i18n "admin.customize.theme.imported_from_archive"}} @@ -125,24 +125,29 @@ {{/if}} {{#unless model.component}} -
    -
    {{i18n "admin.customize.theme.color_scheme"}}
    -
    {{i18n "admin.customize.theme.color_scheme_select"}}
    -
    - {{color-palettes - content=colorSchemes - filterable=true - forceEscape=true - value=colorSchemeId - icon="paint-brush"}} + {{#d-section class="form-horizontal theme settings"}} +
    +
    + {{i18n "admin.customize.theme.color_scheme"}} +
    +
    + {{color-palettes + content=colorSchemes + filterable=true + forceEscape=true + value=colorSchemeId + icon="paint-brush"}} - {{#if colorSchemeChanged}} - {{d-button action=(action "changeScheme") class="btn-primary submit-edit" icon="check"}} - {{d-button action=(action "cancelChangeScheme") class="btn-default cancel-edit" icon="times"}} - {{/if}} +
    {{i18n "admin.customize.theme.color_scheme_select"}}
    +
    +
    + {{#if colorSchemeChanged}} + {{d-button action=(action "changeScheme") class="ok submit-edit" icon="check"}} + {{d-button action=(action "cancelChangeScheme") class="cancel cancel-edit" icon="times"}} + {{/if}} +
    - {{#link-to 'adminCustomize.colors' class="btn btn-default edit"}}{{i18n 'admin.customize.colors.edit'}}{{/link-to}} -
    + {{/d-section}} {{/unless}} {{#if parentThemes}} @@ -156,15 +161,18 @@
    {{/if}} - {{#if model.component }} -
    -
    {{i18n "admin.customize.theme.title"}}
    - {{#d-section class="form-horizontal theme settings"}} -
    - {{theme-setting-relatives-selector setting=relativesSelectorSettings model=model class="theme-setting"}} -
    - {{/d-section}} -
    + {{#if model.component}} + {{#d-section class="form-horizontal theme settings"}} +
    + {{theme-setting-relatives-selector setting=relativesSelectorSettingsForComponent model=model class="theme-setting"}} +
    + {{/d-section}} + {{else}} + {{#d-section class="form-horizontal theme settings"}} +
    + {{theme-setting-relatives-selector setting=relativesSelectorSettingsForTheme model=model class="theme-setting"}} +
    + {{/d-section}} {{/if}}
    @@ -193,12 +201,12 @@ {{#if model.uploads}}
      {{#each model.uploads as |upload|}} -
    • - ${{upload.name}}: {{upload.filename}} - - {{d-button action=(action "removeUpload") actionParam=upload class="second btn-default btn-default cancel-edit" icon="times"}} - -
    • +
    • + ${{upload.name}}: {{upload.filename}} + + {{d-button action=(action "removeUpload") actionParam=upload class="second btn-default btn-default cancel-edit" icon="times"}} + +
    • {{/each}}
    {{else}} @@ -229,34 +237,6 @@
    {{/if}} - {{#if availableChildThemes}} -
    -
    - {{d-icon "puzzle-piece"}} - {{i18n "admin.customize.theme.theme_components"}} -
    - {{#if model.childThemes.length}} -
      - {{#each model.childThemes as |child|}} -
    • - {{#link-to 'adminCustomizeThemes.show' child replace=true class='col child-link'}} - {{child.name}} - {{/link-to}} - - {{d-button action=(action "removeChildTheme") actionParam=child class="btn-default cancel-edit col" icon="times"}} -
    • - {{/each}} -
    - {{/if}} - {{#if selectableChildThemes}} -
    - {{combo-box forceEscape=true filterable=true content=selectableChildThemes value=selectedChildThemeId none="admin.customize.theme.select_component"}} - {{#d-button action=(action "addChildTheme") icon="plus" disabled=addButtonDisabled class="btn-default add-component-button"}}{{i18n "admin.customize.theme.add"}}{{/d-button}} -
    - {{/if}} -
    - {{/if}} - {{d-icon 'desktop'}}{{i18n 'admin.customize.theme.preview'}} {{d-icon "download"}} {{i18n 'admin.export_json.button_text'}} @@ -275,8 +255,8 @@ action=(action "enableComponent") icon="check" label="admin.customize.theme.enable"}} + {{/if}} {{/if}} - {{/if}} - {{d-button action=(action "destroy") label="admin.customize.delete" icon="trash-alt" class="btn-danger"}} + {{d-button action=(action "destroy") label="admin.customize.delete" icon="trash-alt" class="btn-danger"}}
    diff --git a/app/assets/stylesheets/common/admin/customize.scss b/app/assets/stylesheets/common/admin/customize.scss index d626ba2c8b..e96f6cf903 100644 --- a/app/assets/stylesheets/common/admin/customize.scss +++ b/app/assets/stylesheets/common/admin/customize.scss @@ -319,7 +319,9 @@ } .theme.settings { - .theme-setting, + .theme-setting { + min-height: 35px; + } .theme-translation { padding-bottom: 0; margin-top: 18px; diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 477d7c86c9..a7ce0e80b9 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -3624,6 +3624,8 @@ en: edit_css_html_help: "You have not edited any CSS or HTML" delete_upload_confirm: "Delete this upload? (Theme CSS may stop working!)" component_on_themes: "Include component on these themes" + included_components: "Included components" + add_all: "Add all" import_web_tip: "Repository containing theme" import_web_advanced: "Advanced..." import_file_tip: ".tar.gz, .zip, or .dcstyle.json file containing theme" From 6e5fedb31281fb40e672ffb87e767afcffd35e38 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Wed, 4 Dec 2019 09:12:45 +0000 Subject: [PATCH 384/408] DEV: Use category ids in more URLs preferentially This is a followup to 374534f0 --- .../javascripts/discourse/controllers/edit-category.js.es6 | 2 +- app/assets/javascripts/discourse/helpers/category-link.js.es6 | 2 +- app/assets/javascripts/discourse/models/category.js.es6 | 2 +- test/javascripts/acceptance/category-edit-test.js.es6 | 2 +- test/javascripts/helpers/create-pretender.js.es6 | 1 + 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 index a529f05e87..36c961c7e1 100644 --- a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 +++ b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 @@ -107,7 +107,7 @@ export default Controller.extend(ModalFunctionality, { slug: result.category.slug, id: result.category.id }); - DiscourseURL.redirectTo("/c/" + Category.slugFor(model)); + DiscourseURL.redirectTo(`/c/${Category.slugFor(model)}/${model.id}`); }) .catch(error => { this.flash(extractError(error), "error"); diff --git a/app/assets/javascripts/discourse/helpers/category-link.js.es6 b/app/assets/javascripts/discourse/helpers/category-link.js.es6 index 4e11a911b2..b8a6198797 100644 --- a/app/assets/javascripts/discourse/helpers/category-link.js.es6 +++ b/app/assets/javascripts/discourse/helpers/category-link.js.es6 @@ -79,7 +79,7 @@ function defaultCategoryLinkRenderer(category, opts) { let restricted = get(category, "read_restricted"); let url = opts.url ? opts.url - : Discourse.getURL("/c/") + Category.slugFor(category); + : Discourse.getURL(`/c/${Category.slugFor(category)}/${category.id}`); let href = opts.link === false ? "" : url; let tagName = opts.link === false || opts.link === "false" ? "span" : "a"; let extraClasses = opts.extraClasses ? " " + opts.extraClasses : ""; diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 82084aada3..1b442db7c5 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -67,7 +67,7 @@ const Category = RestModel.extend({ @discourseComputed("name") url() { - return Discourse.getURL("/c/") + Category.slugFor(this); + return Discourse.getURL(`/c/${Category.slugFor(this)}/${this.id}`); }, @discourseComputed diff --git a/test/javascripts/acceptance/category-edit-test.js.es6 b/test/javascripts/acceptance/category-edit-test.js.es6 index fed9c84531..efdf73d90d 100644 --- a/test/javascripts/acceptance/category-edit-test.js.es6 +++ b/test/javascripts/acceptance/category-edit-test.js.es6 @@ -36,7 +36,7 @@ QUnit.test("Editing the category", async assert => { assert.ok(!visible(".d-modal"), "it closes the modal"); assert.equal( DiscourseURL.redirectedTo, - "/c/bug", + "/c/bug/1", "it does one of the rare full page redirects" ); }); diff --git a/test/javascripts/helpers/create-pretender.js.es6 b/test/javascripts/helpers/create-pretender.js.es6 index 9beff0a169..95a63b0e09 100644 --- a/test/javascripts/helpers/create-pretender.js.es6 +++ b/test/javascripts/helpers/create-pretender.js.es6 @@ -265,6 +265,7 @@ export default function() { this.put("/categories/:category_id", request => { const category = parsePostData(request.requestBody); + category.id = parseInt(request.params.category_id, 10); if (category.email_in === "duplicate@example.com") { return response(422, { errors: ["duplicate email"] }); From 2f5adbe1f49c9ea240626cc966317117a7db3af4 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Wed, 4 Dec 2019 12:05:41 +0000 Subject: [PATCH 385/408] DEV: Allow the creation of sub-sub-categories This commits adds a new site setting (max_category_nesting), that determines whether sub-sub-categories are allowable. --- .../discourse/components/edit-category-general.js.es6 | 2 +- app/assets/javascripts/discourse/models/category.js.es6 | 5 +++++ .../templates/components/edit-category-general.hbs | 2 +- app/models/category.rb | 7 +++---- config/site_settings.yml | 6 ++++++ 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/discourse/components/edit-category-general.js.es6 b/app/assets/javascripts/discourse/components/edit-category-general.js.es6 index bdcdf440dc..9d3e548a20 100644 --- a/app/assets/javascripts/discourse/components/edit-category-general.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-general.js.es6 @@ -61,7 +61,7 @@ export default buildCategoryPanel("general", { parentCategories() { return this.site .get("categoriesList") - .filter(c => !c.get("parentCategory")); + .filter(c => c.level + 1 < Discourse.SiteSettings.max_category_nesting); }, @discourseComputed( diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 1b442db7c5..9bb56c276e 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -60,6 +60,11 @@ const Category = RestModel.extend({ return [...(parentAncestors || []), this]; }, + @discourseComputed("parentCategory.level") + level(parentLevel) { + return (parentLevel || -1) + 1; + }, + @discourseComputed("notification_level") isMuted(notificationLevel) { return notificationLevel === NotificationLevels.MUTED; diff --git a/app/assets/javascripts/discourse/templates/components/edit-category-general.hbs b/app/assets/javascripts/discourse/templates/components/edit-category-general.hbs index 5f0720e838..1c30b0c762 100644 --- a/app/assets/javascripts/discourse/templates/components/edit-category-general.hbs +++ b/app/assets/javascripts/discourse/templates/components/edit-category-general.hbs @@ -22,7 +22,7 @@ value=category.parent_category_id excludeCategoryId=category.id categories=parentCategories - allowSubCategories=false + allowSubCategories=true allowUncategorized=false}} {{/if}} diff --git a/app/models/category.rb b/app/models/category.rb index 25aeff75fc..5af5eabac3 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -13,7 +13,6 @@ class Category < ActiveRecord::Base include AnonCacheInvalidator include HasDestroyedWebHook - MAX_NESTING = 2 # category + subcategory REQUIRE_TOPIC_APPROVAL = 'require_topic_approval' REQUIRE_REPLY_APPROVAL = 'require_reply_approval' NUM_AUTO_BUMP_DAILY = 'num_auto_bump_daily' @@ -329,7 +328,7 @@ class Category < ActiveRecord::Base # This is used in a validation so has to produce accurate results before the # record has been saved - def height_of_ancestors(max_height = MAX_NESTING) + def height_of_ancestors(max_height = SiteSetting.max_category_nesting) parent_id = self.parent_category_id return max_height if parent_id == id @@ -357,7 +356,7 @@ class Category < ActiveRecord::Base # This is used in a validation so has to produce accurate results before the # record has been saved - def depth_of_descendants(max_depth = MAX_NESTING) + def depth_of_descendants(max_depth = SiteSetting.max_category_nesting) parent_id = self.parent_category_id return max_depth if parent_id == id @@ -390,7 +389,7 @@ class Category < ActiveRecord::Base errors.add(:base, I18n.t("category.errors.self_parent")) if parent_category_id == id total_depth = height_of_ancestors + 1 + depth_of_descendants - errors.add(:base, I18n.t("category.errors.depth")) if total_depth > MAX_NESTING + errors.add(:base, I18n.t("category.errors.depth")) if total_depth > SiteSetting.max_category_nesting end end diff --git a/config/site_settings.yml b/config/site_settings.yml index 103194d78a..9d1f045f0c 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -240,6 +240,12 @@ basic: - box - bullet - none + max_category_nesting: + client: true + default: 2 + min: 2 + max: 3 + hidden: true enable_mobile_theme: client: true default: true From be1510b09d5341a97d8921adddefe138f6c1b524 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 4 Dec 2019 12:52:24 +0000 Subject: [PATCH 386/408] FIX: Use filtered posts when determining the next page This bug was causing some unusual behavior when the last post is filtered (e.g. from an ignored user). In some situations this would cause suggested topics to be omitted from the payload. The next_page specs have been updated to remove most of the stubs --- lib/topic_view.rb | 2 +- spec/components/topic_view_spec.rb | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/topic_view.rb b/lib/topic_view.rb index 0f26832202..b95254d14a 100644 --- a/lib/topic_view.rb +++ b/lib/topic_view.rb @@ -152,7 +152,7 @@ class TopicView def next_page @next_page ||= begin - if last_post && (@topic.highest_post_number > last_post.post_number) + if last_post && highest_post_number && (highest_post_number > last_post.post_number) @page + 1 end end diff --git a/spec/components/topic_view_spec.rb b/spec/components/topic_view_spec.rb index ce1f0e844a..2d6948c6b8 100644 --- a/spec/components/topic_view_spec.rb +++ b/spec/components/topic_view_spec.rb @@ -48,6 +48,11 @@ describe TopicView do expect(tv.filtered_post_ids).to eq([post.id, post2.id]) end + it "returns nil for next_page" do + tv = TopicView.new(topic.id, evil_trout) + expect(tv.next_page).to eq(nil) + end + describe "when an ignored user made the original post" do let!(:post) { Fabricate(:post, topic: topic, user: user) } @@ -245,22 +250,16 @@ describe TopicView do end describe "#next_page" do - let(:p2) { stub(post_number: 2) } - let(:topic) do - topic = create_topic - topic.stubs(:highest_post_number).returns(5) - topic - end + let!(:post) { Fabricate(:post, topic: topic, user: user) } + let!(:post2) { Fabricate(:post, topic: topic, user: user) } + let!(:post3) { Fabricate(:post, topic: topic, user: user) } before do - TopicView.any_instance.expects(:find_topic).with(1234).returns(topic) - TopicView.any_instance.stubs(:filter_posts) - TopicView.any_instance.stubs(:last_post).returns(p2) TopicView.stubs(:chunk_size).returns(2) end it "should return the next page" do - expect(TopicView.new(1234, user).next_page).to eql(2) + expect(TopicView.new(topic.id, user).next_page).to eql(2) end end From b74679f231d7e0917dcace108130b24d71c72e78 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 4 Dec 2019 14:12:50 +0100 Subject: [PATCH 387/408] FIX: ensures the element is on the page before scroll with lockon (#8458) --- .../javascripts/discourse/lib/lock-on.js.es6 | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/lock-on.js.es6 b/app/assets/javascripts/discourse/lib/lock-on.js.es6 index 41f578ab29..a2ea547ea3 100644 --- a/app/assets/javascripts/discourse/lib/lock-on.js.es6 +++ b/app/assets/javascripts/discourse/lib/lock-on.js.es6 @@ -35,7 +35,7 @@ export default class LockOn { elementTop() { const $selected = $(this.selector); - if ($selected && $selected.offset && $selected.offset()) { + if ($selected.length && $selected.offset && $selected.offset()) { return $selected.offset().top - minimumOffset(); } } @@ -49,22 +49,25 @@ export default class LockOn { } lock() { - let previousTop = this.elementTop(); const startedAt = new Date().getTime(); - - $(window).scrollTop(previousTop); + let previousTop = this.elementTop(); const interval = setInterval(() => { - const top = Math.max(0, this.elementTop()); - const scrollTop = $(window).scrollTop(); + if (!previousTop) { + previousTop = this.elementTop(); + previousTop && $(window).scrollTop(previousTop); + } else { + const top = Math.max(0, this.elementTop()); + const scrollTop = $(window).scrollTop(); - if (typeof top === "undefined" || isNaN(top)) { - return this.clearLock(interval); - } + if (typeof top === "undefined" || isNaN(top)) { + return this.clearLock(interval); + } - if (!within(4, top, previousTop) || !within(4, scrollTop, top)) { - $(window).scrollTop(top); - previousTop = top; + if (!within(4, top, previousTop) || !within(4, scrollTop, top)) { + $(window).scrollTop(top); + previousTop = top; + } } // Commit suicide after a little while From 46d8fd383104832646964019903d4e363ce2e0a7 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 4 Dec 2019 15:13:39 +0000 Subject: [PATCH 388/408] FIX: Allow for nil upload record when migrating to S3 --- lib/tasks/uploads.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/uploads.rake b/lib/tasks/uploads.rake index 0761c4712a..5cfb1b8785 100644 --- a/lib/tasks/uploads.rake +++ b/lib/tasks/uploads.rake @@ -428,7 +428,7 @@ def migrate_to_s3 %Q{attachment; filename="#{upload.original_filename}"} end - if upload.secure + if upload&.secure options[:acl] = "private" end end From c5140ef3fb3146eb5a580beda254ae2bf4b6002c Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 4 Dec 2019 16:45:23 +0100 Subject: [PATCH 389/408] FIX: prevents multiple jumps to happen with LockOn (#8460) --- .../javascripts/discourse/lib/lock-on.js.es6 | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/lock-on.js.es6 b/app/assets/javascripts/discourse/lib/lock-on.js.es6 index a2ea547ea3..13720bfeec 100644 --- a/app/assets/javascripts/discourse/lib/lock-on.js.es6 +++ b/app/assets/javascripts/discourse/lib/lock-on.js.es6 @@ -51,23 +51,25 @@ export default class LockOn { lock() { const startedAt = new Date().getTime(); let previousTop = this.elementTop(); + previousTop && $(window).scrollTop(previousTop); const interval = setInterval(() => { - if (!previousTop) { - previousTop = this.elementTop(); - previousTop && $(window).scrollTop(previousTop); - } else { - const top = Math.max(0, this.elementTop()); - const scrollTop = $(window).scrollTop(); + const elementTop = this.elementTop(); + if (!previousTop && !elementTop) { + // we can't find the element yet, wait a little bit more + return; + } - if (typeof top === "undefined" || isNaN(top)) { - return this.clearLock(interval); - } + const top = Math.max(0, elementTop); + const scrollTop = $(window).scrollTop(); - if (!within(4, top, previousTop) || !within(4, scrollTop, top)) { - $(window).scrollTop(top); - previousTop = top; - } + if (typeof top === "undefined" || isNaN(top)) { + return this.clearLock(interval); + } + + if (!within(4, top, previousTop) || !within(4, scrollTop, top)) { + $(window).scrollTop(top); + previousTop = top; } // Commit suicide after a little while From 400f79cffcb8819400884b83685bcac2b3057833 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Wed, 4 Dec 2019 22:52:44 +0530 Subject: [PATCH 390/408] FEATURE: add `topic_filtered_posts_count` attribute to web hook post serializer. --- app/serializers/web_hook_post_serializer.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/serializers/web_hook_post_serializer.rb b/app/serializers/web_hook_post_serializer.rb index 030b55203b..2099a17c4c 100644 --- a/app/serializers/web_hook_post_serializer.rb +++ b/app/serializers/web_hook_post_serializer.rb @@ -3,6 +3,7 @@ class WebHookPostSerializer < PostSerializer attributes :topic_posts_count, + :topic_filtered_posts_count, :topic_archetype, :category_slug @@ -34,6 +35,10 @@ class WebHookPostSerializer < PostSerializer object.topic ? object.topic.posts_count : 0 end + def topic_filtered_posts_count + object.topic ? object.topic.posts.where(post_type: Post.types[:regular]).count : 0 + end + def topic_archetype object.topic ? object.topic.archetype : '' end From 888d56774a6dc0cea7d26bc5cac1b6bb6d5b4f20 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 4 Dec 2019 12:26:23 -0500 Subject: [PATCH 391/408] DEV: HTML Builders should respect if a plugin is enabled or not (#8454) Previously they would return the HTML regardless of whether the plugin was enabled or not. --- lib/plugin/instance.rb | 5 ++++- spec/components/plugin/instance_spec.rb | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb index 19024de7a1..9256916f9e 100644 --- a/lib/plugin/instance.rb +++ b/lib/plugin/instance.rb @@ -418,7 +418,10 @@ class Plugin::Instance end def register_html_builder(name, &block) - DiscoursePluginRegistry.register_html_builder(name, &block) + plugin = self + DiscoursePluginRegistry.register_html_builder(name) do |*args| + block.call(*args) if plugin.enabled? + end end def register_asset(file, opts = nil) diff --git a/spec/components/plugin/instance_spec.rb b/spec/components/plugin/instance_spec.rb index 7286f5cc0a..50064c3ad8 100644 --- a/spec/components/plugin/instance_spec.rb +++ b/spec/components/plugin/instance_spec.rb @@ -32,7 +32,10 @@ describe Plugin::Instance do context "with a plugin that extends things" do - class Trout; end + class Trout + attr_accessor :data + end + class TroutSerializer < ApplicationSerializer attribute :name @@ -90,7 +93,6 @@ describe Plugin::Instance do end it "checks enabled/disabled functionality for extensions" do - # with an enabled plugin @plugin.enabled = true expect(@trout.status?).to eq("evil") @@ -114,6 +116,17 @@ describe Plugin::Instance do expect(@child_serializer.include_scales?).to eq(false) expect(@child_serializer.name).to eq("a trout jr") end + + it "only returns HTML if enabled" do + ctx = Trout.new + ctx.data = "hello" + + @plugin.register_html_builder('test:html') { |c| "
    #{c.data}
    " } + @plugin.enabled = false + expect(DiscoursePluginRegistry.build_html('test:html', ctx)).to eq("") + @plugin.enabled = true + expect(DiscoursePluginRegistry.build_html('test:html', ctx)).to eq("
    hello
    ") + end end end From 15c2755b7b2be01c18fe405543a7e772315d9329 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Wed, 4 Dec 2019 23:27:51 +0530 Subject: [PATCH 392/408] Fix the `WebHookPostSerializer` spec. 400f79cffcb8819400884b83685bcac2b3057833 --- spec/serializers/web_hook_post_serializer_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/serializers/web_hook_post_serializer_spec.rb b/spec/serializers/web_hook_post_serializer_spec.rb index c844fda4b7..790a13269b 100644 --- a/spec/serializers/web_hook_post_serializer_spec.rb +++ b/spec/serializers/web_hook_post_serializer_spec.rb @@ -12,7 +12,7 @@ RSpec.describe WebHookPostSerializer do it 'should only include the required keys' do count = serialized_for_user(admin).keys.count - difference = count - 38 + difference = count - 39 expect(difference).to eq(0), lambda { message = +"" From 875f0d8fd86be84e3ef54381108480d8592bc528 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Wed, 4 Dec 2019 13:33:51 -0500 Subject: [PATCH 393/408] FEATURE: Tag synonyms This feature adds the ability to define synonyms for tags, and the ability to merge one tag into another while keeping it as a synonym. For example, tags named "js" and "java-script" can be synonyms of "javascript". When searching and creating topics using synonyms, they will be mapped to the base tag. Along with this change is a new UI found on each tag's page (for example, `/tags/javascript`) where more information about the tag can be shown. It will list the synonyms, which categories it's restricted to (if any), and which tag groups it belongs to (if tag group names are public on the `/tags` page by enabling the "tags listed by group" setting). Staff users will be able to manage tags in this UI, merge tags, and add/remove synonyms. --- .../admin/templates/web-hooks-show.hbs | 2 +- .../discourse/adapters/tag-info.js.es6 | 7 + .../discourse/components/tag-info.js.es6 | 133 +++++++++++ .../discourse/controllers/tags-show.js.es6 | 23 +- .../discourse/lib/render-tag.js.es6 | 3 + .../discourse/routes/tags-show.js.es6 | 5 +- .../components/edit-category-tags.hbs | 3 +- .../templates/components/tag-groups-form.hbs | 4 +- .../templates/components/tag-info.hbs | 73 ++++++ .../templates/components/tag-list.hbs | 1 - .../discourse/templates/tags/show.hbs | 11 +- .../components/single-select.js.es6 | 6 +- .../select-kit/components/tag-chooser.js.es6 | 4 + .../select-kit/components/tag-drop.js.es6 | 15 +- .../stylesheets/common/base/tagging.scss | 63 ++++-- app/controllers/tags_controller.rb | 96 ++++++-- app/models/tag.rb | 31 ++- app/models/tag_user.rb | 18 +- app/serializers/detailed_tag_serializer.rb | 28 +++ app/serializers/tag_group_serializer.rb | 2 +- app/services/search_indexer.rb | 7 +- config/locales/client.en.yml | 19 ++ config/locales/server.en.yml | 4 + config/routes.rb | 3 + ...0191113193141_add_target_tag_id_to_tags.rb | 7 + lib/discourse_tagging.rb | 40 +++- lib/topic_query.rb | 26 +-- spec/components/discourse_tagging_spec.rb | 128 ++++++++++- spec/components/search_spec.rb | 15 +- spec/components/topic_query_spec.rb | 21 ++ spec/integration/category_tag_spec.rb | 8 - spec/models/tag_group_spec.rb | 31 +++ spec/models/tag_spec.rb | 59 +++++ spec/models/tag_user_spec.rb | 46 ++++ spec/requests/tags_controller_spec.rb | 210 +++++++++++++++++- spec/requests/users_controller_spec.rb | 4 +- spec/serializers/tag_group_serializer_spec.rb | 8 + spec/support/helpers.rb | 8 + test/javascripts/acceptance/tags-test.js.es6 | 137 ++++++++++++ .../components/tag-drop-test.js.es6 | 42 +++- 40 files changed, 1246 insertions(+), 105 deletions(-) create mode 100644 app/assets/javascripts/discourse/adapters/tag-info.js.es6 create mode 100644 app/assets/javascripts/discourse/components/tag-info.js.es6 create mode 100644 app/assets/javascripts/discourse/templates/components/tag-info.hbs create mode 100644 app/serializers/detailed_tag_serializer.rb create mode 100644 db/migrate/20191113193141_add_target_tag_id_to_tags.rb diff --git a/app/assets/javascripts/admin/templates/web-hooks-show.hbs b/app/assets/javascripts/admin/templates/web-hooks-show.hbs index 3cd6db8c0d..cc49f3ac58 100644 --- a/app/assets/javascripts/admin/templates/web-hooks-show.hbs +++ b/app/assets/javascripts/admin/templates/web-hooks-show.hbs @@ -54,7 +54,7 @@ {{#if showTagsFilter}}
    - {{tag-chooser tags=model.tag_names everyTag=true}} + {{tag-chooser tags=model.tag_names everyTag=true excludeSynonyms=true}}
    {{i18n 'admin.web_hooks.tags_filter_instructions'}}
    {{/if}} diff --git a/app/assets/javascripts/discourse/adapters/tag-info.js.es6 b/app/assets/javascripts/discourse/adapters/tag-info.js.es6 new file mode 100644 index 0000000000..ca04b6d212 --- /dev/null +++ b/app/assets/javascripts/discourse/adapters/tag-info.js.es6 @@ -0,0 +1,7 @@ +import RESTAdapter from "discourse/adapters/rest"; + +export default RESTAdapter.extend({ + pathFor(store, type, id) { + return "/tags/" + id + "/info"; + } +}); diff --git a/app/assets/javascripts/discourse/components/tag-info.js.es6 b/app/assets/javascripts/discourse/components/tag-info.js.es6 new file mode 100644 index 0000000000..bb143c5b0c --- /dev/null +++ b/app/assets/javascripts/discourse/components/tag-info.js.es6 @@ -0,0 +1,133 @@ +import { ajax } from "discourse/lib/ajax"; +import { popupAjaxError } from "discourse/lib/ajax-error"; +import showModal from "discourse/lib/show-modal"; +import { + default as discourseComputed, + observes +} from "discourse-common/utils/decorators"; +import Component from "@ember/component"; +import { reads, and } from "@ember/object/computed"; +import { isEmpty } from "@ember/utils"; +import Category from "discourse/models/category"; + +export default Component.extend({ + tagName: "", + loading: false, + tagInfo: null, + newSynonyms: null, + showEditControls: false, + canAdminTag: reads("currentUser.staff"), + editSynonymsMode: and("canAdminTag", "showEditControls"), + + @discourseComputed("tagInfo.tag_group_names") + tagGroupsInfo(tagGroupNames) { + return I18n.t("tagging.tag_groups_info", { + count: tagGroupNames.length, + tag_groups: tagGroupNames.join(", ") + }); + }, + + @discourseComputed("tagInfo.categories") + categoriesInfo(categories) { + return I18n.t("tagging.category_restrictions", { + count: categories.length + }); + }, + + @discourseComputed( + "tagInfo.tag_group_names", + "tagInfo.categories", + "tagInfo.synonyms" + ) + nothingToShow(tagGroupNames, categories, synonyms) { + return isEmpty(tagGroupNames) && isEmpty(categories) && isEmpty(synonyms); + }, + + @observes("expanded") + toggleExpanded() { + if (this.expanded && !this.tagInfo) { + this.loadTagInfo(); + } + }, + + loadTagInfo() { + if (this.loading) { + return; + } + this.set("loading", true); + return this.store + .find("tag-info", this.tag.id) + .then(result => { + this.set("tagInfo", result); + this.set( + "tagInfo.synonyms", + result.synonyms.map(s => this.store.createRecord("tag", s)) + ); + this.set( + "tagInfo.categories", + result.category_ids.map(id => Category.findById(id)) + ); + }) + .finally(() => this.set("loading", false)); + }, + + actions: { + toggleEditControls() { + this.toggleProperty("showEditControls"); + }, + + renameTag() { + showModal("rename-tag", { model: this.tag }); + }, + + deleteTag() { + this.sendAction("deleteAction", this.tagInfo); + }, + + unlinkSynonym(tag) { + ajax(`/tags/${this.tagInfo.name}/synonyms/${tag.id}`, { + type: "DELETE" + }) + .then(() => this.tagInfo.synonyms.removeObject(tag)) + .catch(() => bootbox.alert(I18n.t("generic_error"))); + }, + + deleteSynonym(tag) { + bootbox.confirm( + I18n.t("tagging.delete_synonym_confirm", { tag_name: tag.text }), + result => { + if (!result) return; + + tag + .destroyRecord() + .then(() => this.tagInfo.synonyms.removeObject(tag)) + .catch(() => bootbox.alert(I18n.t("generic_error"))); + } + ); + }, + + addSynonyms() { + ajax(`/tags/${this.tagInfo.name}/synonyms`, { + type: "POST", + data: { + synonyms: this.newSynonyms + } + }) + .then(result => { + if (result.success) { + this.set("newSynonyms", null); + this.loadTagInfo(); + } else if (result.failed_tags) { + bootbox.alert( + I18n.t("tagging.add_synonyms_failed", { + tag_names: Object.keys(result.failed_tags).join(", ") + }) + ); + } else { + bootbox.alert(I18n.t("generic_error")); + } + }) + .catch(popupAjaxError); + } + } +}); diff --git a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 index 34aa673c96..a34a368a1a 100644 --- a/app/assets/javascripts/discourse/controllers/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/tags-show.js.es6 @@ -26,6 +26,7 @@ export default Controller.extend(BulkTopicSelection, FilterModeMixin, { search: null, max_posts: null, q: null, + showInfo: false, categories: alias("site.categoriesList"), @@ -79,9 +80,9 @@ export default Controller.extend(BulkTopicSelection, FilterModeMixin, { return Discourse.SiteSettings.show_filter_by_tag; }, - @discourseComputed("additionalTags", "canAdminTag", "category") - showAdminControls(additionalTags, canAdminTag, category) { - return !additionalTags && canAdminTag && !category; + @discourseComputed("additionalTags", "category", "tag.id") + showToggleInfo(additionalTags, category, tagId) { + return !additionalTags && !category && tagId !== "none"; }, loadMoreTopics() { @@ -121,6 +122,10 @@ export default Controller.extend(BulkTopicSelection, FilterModeMixin, { this.send("invalidateModel"); }, + toggleInfo() { + this.toggleProperty("showInfo"); + }, + refresh() { // TODO: this probably doesn't work anymore return this.store @@ -131,15 +136,23 @@ export default Controller.extend(BulkTopicSelection, FilterModeMixin, { }); }, - deleteTag() { + deleteTag(tagInfo) { const numTopics = this.get("list.topic_list.tags.firstObject.topic_count") || 0; - const confirmText = + let confirmText = numTopics === 0 ? I18n.t("tagging.delete_confirm_no_topics") : I18n.t("tagging.delete_confirm", { count: numTopics }); + if (tagInfo.synonyms.length > 0) { + confirmText += + " " + + I18n.t("tagging.delete_confirm_synonyms", { + count: tagInfo.synonyms.length + }); + } + bootbox.confirm(confirmText, result => { if (!result) return; diff --git a/app/assets/javascripts/discourse/lib/render-tag.js.es6 b/app/assets/javascripts/discourse/lib/render-tag.js.es6 index 7a83678608..5206e2c900 100644 --- a/app/assets/javascripts/discourse/lib/render-tag.js.es6 +++ b/app/assets/javascripts/discourse/lib/render-tag.js.es6 @@ -28,6 +28,9 @@ function defaultRenderTag(tag, params) { if (Discourse.SiteSettings.tag_style || params.style) { classes.push(params.style || Discourse.SiteSettings.tag_style); } + if (params.size) { + classes.push(params.size); + } let val = "<" + diff --git a/app/assets/javascripts/discourse/routes/tags-show.js.es6 b/app/assets/javascripts/discourse/routes/tags-show.js.es6 index ccbb0292cb..44b6bc6e1d 100644 --- a/app/assets/javascripts/discourse/routes/tags-show.js.es6 +++ b/app/assets/javascripts/discourse/routes/tags-show.js.es6 @@ -56,7 +56,10 @@ export default DiscourseRoute.extend(FilterModeMixin, { afterModel(tag, transition) { const controller = this.controllerFor("tags.show"); - controller.set("loading", true); + controller.setProperties({ + loading: true, + showInfo: false + }); const params = filterQueryParams(transition.to.queryParams, {}); const category = this.categorySlugPathWithID diff --git a/app/assets/javascripts/discourse/templates/components/edit-category-tags.hbs b/app/assets/javascripts/discourse/templates/components/edit-category-tags.hbs index 4d27d0c101..681e5e24dc 100644 --- a/app/assets/javascripts/discourse/templates/components/edit-category-tags.hbs +++ b/app/assets/javascripts/discourse/templates/components/edit-category-tags.hbs @@ -5,8 +5,9 @@ filterPlaceholder="category.tags_placeholder" tags=category.allowed_tags everyTag=true + excludeSynonyms=true unlimitedTagCount=true}} - +
    diff --git a/app/assets/javascripts/discourse/templates/components/tag-groups-form.hbs b/app/assets/javascripts/discourse/templates/components/tag-groups-form.hbs index 7436a829f6..512f9c0df5 100644 --- a/app/assets/javascripts/discourse/templates/components/tag-groups-form.hbs +++ b/app/assets/javascripts/discourse/templates/components/tag-groups-form.hbs @@ -9,7 +9,8 @@ everyTag=true allowCreate=true filterPlaceholder="tagging.groups.tags_placeholder" - unlimitedTagCount=true}} + unlimitedTagCount=true + excludeSynonyms=true}}
    @@ -19,6 +20,7 @@ everyTag=true maximum=1 allowCreate=true + excludeSynonyms=true filterPlaceholder="tagging.groups.parent_tag_placeholder"}} {{i18n 'tagging.groups.parent_tag_description'}}
    diff --git a/app/assets/javascripts/discourse/templates/components/tag-info.hbs b/app/assets/javascripts/discourse/templates/components/tag-info.hbs new file mode 100644 index 0000000000..0fe9b38596 --- /dev/null +++ b/app/assets/javascripts/discourse/templates/components/tag-info.hbs @@ -0,0 +1,73 @@ +{{#if expanded}} +
    + {{#if tagInfo}} +
    + {{discourse-tag tagInfo.name tagName="div" size="large"}} + {{#if canAdminTag}} + {{d-button class="btn-default" action=(action "renameTag") icon="pencil-alt" label="tagging.rename_tag" id="rename-tag"}} + {{d-button class="btn-default" action=(action "toggleEditControls") icon="cog" label="tagging.edit_synonyms" id="edit-synonyms"}} + {{#if deleteAction}} + {{d-button class="btn-danger delete-tag" action=(action "deleteTag") icon="far-trash-alt" label="tagging.delete_tag" id="delete-tag"}} + {{/if}} + {{/if}} +
    +
    + {{#if tagInfo.tag_group_names}} + {{tagGroupsInfo}} + {{/if}} + {{#if tagInfo.categories}} + {{categoriesInfo}} +
    + {{#each tagInfo.categories as |category|}} + {{category-link category}} + {{/each}} + {{/if}} + {{#if nothingToShow}} + {{i18n "tagging.default_info"}} + {{/if}} +
    + {{#if tagInfo.synonyms}} +
    +

    {{i18n "tagging.synonyms"}}

    +
    {{{i18n "tagging.synonyms_description" base_tag_name=tagInfo.name}}}
    +
    + {{#each tagInfo.synonyms as |tag|}} +
    + {{discourse-tag tag.id pmOnly=tag.pmOnly tagName="div"}} + {{#if editSynonymsMode}} + + {{d-icon "unlink" title="tagging.remove_synonym"}} + + + {{d-icon "far-trash-alt" title="tagging.delete_tag"}} + + {{/if}} +
    + {{/each}} +
    +
    +
    + {{/if}} + {{#if editSynonymsMode}} +
    + + {{tag-chooser + id="add-synonyms" + tags=newSynonyms + everyTag=true + excludeSynonyms=true + excludeHasSynonyms=true + unlimitedTagCount=true}} +
    + {{d-button + class="btn-default" + action=(action "addSynonyms") + disabled=addSynonymsDisabled + label="tagging.add_synonyms"}} + {{/if}} + {{/if}} + {{#if loading}} +
    {{i18n 'loading'}}
    + {{/if}} +
    +{{/if}} diff --git a/app/assets/javascripts/discourse/templates/components/tag-list.hbs b/app/assets/javascripts/discourse/templates/components/tag-list.hbs index dcbb0035e4..96ef2cd78c 100644 --- a/app/assets/javascripts/discourse/templates/components/tag-list.hbs +++ b/app/assets/javascripts/discourse/templates/components/tag-list.hbs @@ -13,4 +13,3 @@
    {{/each}}
    -
    diff --git a/app/assets/javascripts/discourse/templates/tags/show.hbs b/app/assets/javascripts/discourse/templates/tags/show.hbs index d63e7b7cb6..d7f98ea87b 100644 --- a/app/assets/javascripts/discourse/templates/tags/show.hbs +++ b/app/assets/javascripts/discourse/templates/tags/show.hbs @@ -39,14 +39,17 @@ label=createTopicLabel action=(route-action "createTopic")}} - {{#if showAdminControls}} - {{d-button action=(route-action "renameTag") actionParam=tag icon="pencil-alt" class="admin-tag"}} - {{d-button action=(action "deleteTag") icon="far-trash-alt" class="admin-tag btn-danger"}} - {{/if}} + {{#if showToggleInfo}} + {{d-button icon="tag" label="tagging.info" action=(action "toggleInfo") id="show-tag-info"}} + {{/if}}
    +{{#if showToggleInfo}} + {{tag-info tag=tag expanded=showInfo list=list deleteAction=(action "deleteTag")}} +{{/if}} + {{plugin-outlet name="discovery-list-container-top"}}
    diff --git a/app/assets/javascripts/select-kit/components/single-select.js.es6 b/app/assets/javascripts/select-kit/components/single-select.js.es6 index 92c86cc4c5..14047fbb03 100644 --- a/app/assets/javascripts/select-kit/components/single-select.js.es6 +++ b/app/assets/javascripts/select-kit/components/single-select.js.es6 @@ -285,7 +285,11 @@ export default SelectKitComponent.extend({ this ); - this._boundaryActionHandler("onSelect", computedContentItem.value); + this._boundaryActionHandler( + "onSelect", + computedContentItem.value, + computedContentItem.originalContent + ); this._boundaryActionHandler("onSelectAny", computedContentItem); this.autoHighlight(); diff --git a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 index 0d49d97176..103a294060 100644 --- a/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-chooser.js.es6 @@ -17,6 +17,8 @@ export default MultiSelectComponent.extend(TagsMixin, { attributeBindings: ["categoryId"], allowCreate: null, allowAny: alias("allowCreate"), + excludeSynonyms: false, + excludeHasSynonyms: false, init() { this._super(...arguments); @@ -118,6 +120,8 @@ export default MultiSelectComponent.extend(TagsMixin, { } if (!this.everyTag) data.filterForInput = true; + if (this.excludeSynonyms) data.excludeSynonyms = true; + if (this.excludeHasSynonyms) data.excludeHasSynonyms = true; this.searchTags("/tags/filter/search", data, this._transformJson); }, diff --git a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 index 601398eb40..5de47f178b 100644 --- a/app/assets/javascripts/select-kit/components/tag-drop.js.es6 +++ b/app/assets/javascripts/select-kit/components/tag-drop.js.es6 @@ -168,12 +168,16 @@ export default ComboBoxComponent.extend(TagsMixin, { results = results.sort((a, b) => a.id > b.id); return results.map(r => { - return { id: r.id, name: r.text }; + return { + id: r.id, + name: r.text, + targetTagId: r.target_tag || r.id + }; }); }, actions: { - onSelect(tagId) { + onSelect(tagId, tag) { let url; if (tagId === "all-tags") { @@ -189,7 +193,12 @@ export default ComboBoxComponent.extend(TagsMixin, { }`; } - url = Discourse.getURL(`${url}/${tagId.toLowerCase()}`); + if (tag && tag.targetTagId) { + url += `/${tag.targetTagId.toLowerCase()}`; + } else { + url += `/${tagId.toLowerCase()}`; + } + url = Discourse.getURL(url); } DiscourseURL.routeTo(url); diff --git a/app/assets/stylesheets/common/base/tagging.scss b/app/assets/stylesheets/common/base/tagging.scss index 0502b68717..ee88625578 100644 --- a/app/assets/stylesheets/common/base/tagging.scss +++ b/app/assets/stylesheets/common/base/tagging.scss @@ -5,6 +5,8 @@ .tag-list { margin-top: 2em; + padding-bottom: 1em; + border-bottom: 1px solid $primary-low; } #list-area .tag-list h3 { @@ -88,6 +90,10 @@ $tag-color: $primary-medium; color: $header-primary_high !important; } + &.large { + font-size: $font-up-2; + } + &.box { background-color: $primary-low; color: $primary-high; @@ -104,6 +110,25 @@ $tag-color: $primary-medium; margin-right: 0; color: $primary-high; } + + &.bullet { + margin-right: 0.5em; + display: inline-flex; + align-items: center; + &:before { + background: $primary-low-mid; + margin-right: 5px; + position: relative; + width: 9px; + height: 9px; + display: inline-block; + content: ""; + } + &.large:before { + width: 13px; + height: 13px; + } + } } .discourse-tags, @@ -152,21 +177,6 @@ $tag-color: $primary-medium; } } -.discourse-tag.bullet { - margin-right: 0.5em; - display: inline-flex; - align-items: center; - &:before { - background: $primary-low-mid; - margin-right: 5px; - position: relative; - width: 9px; - height: 9px; - display: inline-block; - content: ""; - } -} - header .discourse-tag { color: $tag-color; } @@ -258,3 +268,26 @@ header .discourse-tag { } } } + +.tag-info { + margin-top: 1em; + margin-bottom: 1em; + + .delete-tag { + float: right; + } + .synonyms-list, + .add-synonyms, + .tag-associations { + margin-top: 1em; + } + .tag-list { + border: none; + .d-icon { + color: $primary-medium; + } + } + .field { + margin-bottom: 5px; + } +} diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index e2aee6abe6..55ec294cdf 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -5,6 +5,7 @@ class TagsController < ::ApplicationController include TopicQueryParams before_action :ensure_tags_enabled + before_action :ensure_visible, only: [:show, :info] requires_login except: [ :index, @@ -12,13 +13,16 @@ class TagsController < ::ApplicationController :tag_feed, :search, :check_hashtag, + :info, Discourse.anonymous_filters.map { |f| :"show_#{f}" } ].flatten skip_before_action :check_xhr, only: [:tag_feed, :show, :index] before_action :set_category_from_params, except: [:index, :update, :destroy, - :tag_feed, :search, :notifications, :update_notifications, :personal_messages] + :tag_feed, :search, :notifications, :update_notifications, :personal_messages, :info] + + before_action :fetch_tag, only: [:info, :create_synonyms, :destroy_synonym] def index @description_meta = I18n.t("tags.title") @@ -31,21 +35,21 @@ class TagsController < ::ApplicationController ungrouped_tags = ungrouped_tags.where("tags.topic_count > 0") unless show_all_tags grouped_tag_counts = TagGroup.visible(guardian).order('name ASC').includes(:tags).map do |tag_group| - { id: tag_group.id, name: tag_group.name, tags: self.class.tag_counts_json(tag_group.tags) } + { id: tag_group.id, name: tag_group.name, tags: self.class.tag_counts_json(tag_group.tags.where(target_tag_id: nil)) } end @tags = self.class.tag_counts_json(ungrouped_tags) @extras = { tag_groups: grouped_tag_counts } else tags = show_all_tags ? Tag.all : Tag.where("tags.topic_count > 0") - unrestricted_tags = DiscourseTagging.filter_visible(tags, guardian) + unrestricted_tags = DiscourseTagging.filter_visible(tags.where(target_tag_id: nil), guardian) categories = Category.where("id IN (SELECT category_id FROM category_tags)") .where("id IN (?)", guardian.allowed_category_ids) .includes(:tags) category_tag_counts = categories.map do |c| - { id: c.id, tags: self.class.tag_counts_json(c.tags) } + { id: c.id, tags: self.class.tag_counts_json(c.tags.where(target_tag_id: nil)) } end @tags = self.class.tag_counts_json(unrestricted_tags) @@ -98,11 +102,13 @@ class TagsController < ::ApplicationController end def show - raise Discourse::NotFound if DiscourseTagging.hidden_tag_names(guardian).include?(params[:tag_id]) - show_latest end + def info + render_serialized(@tag, DetailedTagSerializer, root: :tag_info) + end + def update guardian.ensure_can_admin_tags! @@ -196,7 +202,9 @@ class TagsController < ::ApplicationController filter_params = { for_input: params[:filterForInput], selected_tags: params[:selected_tags], - limit: params[:limit] + limit: params[:limit], + exclude_synonyms: params[:excludeSynonyms], + exclude_has_synonyms: params[:excludeHasSynonyms] } if params[:categoryId] @@ -224,19 +232,25 @@ class TagsController < ::ApplicationController # filter_allowed_tags determined that the tag entered is not allowed json_response[:forbidden] = params[:q] - category_names = tag.categories.where(id: guardian.allowed_category_ids).pluck(:name) - category_names += Category.joins(tag_groups: :tags).where(id: guardian.allowed_category_ids, "tags.id": tag.id).pluck(:name) - - if category_names.present? - category_names.uniq! - json_response[:forbidden_message] = I18n.t( - "tags.forbidden.restricted_to", - count: category_names.count, - tag_name: tag.name, - category_names: category_names.join(", ") - ) + if filter_params[:exclude_synonyms] && tag.synonym? + json_response[:forbidden_message] = I18n.t("tags.forbidden.synonym", tag_name: tag.target_tag.name) + elsif filter_params[:exclude_has_synonyms] && tag.synonyms.exists? + json_response[:forbidden_message] = I18n.t("tags.forbidden.has_synonyms", tag_name: tag.name) else - json_response[:forbidden_message] = I18n.t("tags.forbidden.in_this_category", tag_name: tag.name) + category_names = tag.categories.where(id: guardian.allowed_category_ids).pluck(:name) + category_names += Category.joins(tag_groups: :tags).where(id: guardian.allowed_category_ids, "tags.id": tag.id).pluck(:name) + + if category_names.present? + category_names.uniq! + json_response[:forbidden_message] = I18n.t( + "tags.forbidden.restricted_to", + count: category_names.count, + tag_name: tag.name, + category_names: category_names.join(", ") + ) + else + json_response[:forbidden_message] = I18n.t("tags.forbidden.in_this_category", tag_name: tag.name) + end end end @@ -276,14 +290,56 @@ class TagsController < ::ApplicationController render json: { tags: pm_tags } end + def create_synonyms + guardian.ensure_can_admin_tags! + value = DiscourseTagging.add_or_create_synonyms_by_name(@tag, params[:synonyms]) + if value.is_a?(Array) + render json: failed_json.merge( + failed_tags: value.inject({}) { |h, t| h[t.name] = t.errors.full_messages.first; h } + ) + else + render json: success_json + end + end + + def destroy_synonym + guardian.ensure_can_admin_tags! + synonym = Tag.where_name(params[:synonym_id]).first + raise Discourse::NotFound unless synonym + if synonym.target_tag == @tag + synonym.update!(target_tag: nil) + render json: success_json + else + render json: failed_json, status: 400 + end + end + private + def fetch_tag + @tag = Tag.find_by_name(params[:tag_id].force_encoding("UTF-8")) + raise Discourse::NotFound unless @tag + end + def ensure_tags_enabled raise Discourse::NotFound unless SiteSetting.tagging_enabled? end + def ensure_visible + raise Discourse::NotFound if DiscourseTagging.hidden_tag_names(guardian).include?(params[:tag_id]) + end + def self.tag_counts_json(tags) - tags.map { |t| { id: t.name, text: t.name, count: t.topic_count, pm_count: t.pm_topic_count } } + target_tags = Tag.where(id: tags.map(&:target_tag_id).compact.uniq).select(:id, :name) + tags.map do |t| + { + id: t.name, + text: t.name, + count: t.topic_count, + pm_count: t.pm_topic_count, + target_tag: t.target_tag_id ? target_tags.find { |x| x.id == t.target_tag_id }&.name : nil + } + end end def set_category_from_params diff --git a/app/models/tag.rb b/app/models/tag.rb index 375832614d..30b86b38cf 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -5,15 +5,17 @@ class Tag < ActiveRecord::Base include HasDestroyedWebHook validates :name, presence: true, uniqueness: { case_sensitive: false } + validate :target_tag_validator, if: Proc.new { |t| t.new_record? || t.will_save_change_to_target_tag_id? } scope :where_name, ->(name) do name = Array(name).map(&:downcase) - where("lower(name) IN (?)", name) + where("lower(tags.name) IN (?)", name) end scope :unused, -> { where(topic_count: 0, pm_topic_count: 0) } + scope :base_tags, -> { where(target_tag_id: nil) } - has_many :tag_users # notification settings + has_many :tag_users, dependent: :destroy # notification settings has_many :topic_tags, dependent: :destroy has_many :topics, through: :topic_tags @@ -21,10 +23,14 @@ class Tag < ActiveRecord::Base has_many :category_tags, dependent: :destroy has_many :categories, through: :category_tags - has_many :tag_group_memberships + has_many :tag_group_memberships, dependent: :destroy has_many :tag_groups, through: :tag_group_memberships + belongs_to :target_tag, class_name: "Tag", optional: true + has_many :synonyms, class_name: "Tag", foreign_key: "target_tag_id", dependent: :destroy + after_save :index_search + after_save :update_synonym_associations after_commit :trigger_tag_created_event, on: :create after_commit :trigger_tag_updated_event, on: :update @@ -137,6 +143,25 @@ class Tag < ActiveRecord::Base SearchIndexer.index(self) end + def synonym? + !self.target_tag_id.nil? + end + + def target_tag_validator + if synonyms.exists? + errors.add(:target_tag_id, I18n.t("tags.synonyms_exist")) + elsif target_tag&.synonym? + errors.add(:target_tag_id, I18n.t("tags.invalid_target_tag")) + end + end + + def update_synonym_associations + if target_tag_id && saved_change_to_target_tag_id? + target_tag.tag_groups.each { |tag_group| tag_group.tags << self unless tag_group.tags.include?(self) } + target_tag.categories.each { |category| category.tags << self unless category.tags.include?(self) } + end + end + %i{ tag_created tag_updated diff --git a/app/models/tag_user.rb b/app/models/tag_user.rb index 820d750b66..b4bc5d9f17 100644 --- a/app/models/tag_user.rb +++ b/app/models/tag_user.rb @@ -21,6 +21,12 @@ class TagUser < ActiveRecord::Base tag_ids = tags.empty? ? [] : Tag.where_name(tags).pluck(:id) + Tag.where_name(tags).joins(:target_tag).each do |tag| + tag_ids[tag_ids.index(tag.id)] = tag.target_tag_id + end + + tag_ids.uniq! + remove = (old_ids - tag_ids) if remove.present? records.where('tag_id in (?)', remove).destroy_all @@ -41,7 +47,17 @@ class TagUser < ActiveRecord::Base end def self.change(user_id, tag_id, level) - tag_id = tag_id.id if tag_id.is_a?(::Tag) + if tag_id.is_a?(::Tag) + tag = tag_id + tag_id = tag.id + else + tag = Tag.find_by_id(tag_id) + end + + if tag.synonym? + tag_id = tag.target_tag_id + end + user_id = user_id.id if user_id.is_a?(::User) tag_id = tag_id.to_i diff --git a/app/serializers/detailed_tag_serializer.rb b/app/serializers/detailed_tag_serializer.rb new file mode 100644 index 0000000000..25b0c555c9 --- /dev/null +++ b/app/serializers/detailed_tag_serializer.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class DetailedTagSerializer < TagSerializer + attributes :synonyms, :tag_group_names + + has_many :categories, serializer: BasicCategorySerializer + + def synonyms + TagsController.tag_counts_json(object.synonyms) + end + + def categories + Category.secured(scope).where( + id: object.categories.pluck(:id) + + object.tag_groups.includes(:categories).map do |tg| + tg.categories.map(&:id) + end.flatten + ) + end + + def include_tag_group_names? + scope.is_admin? || SiteSetting.tags_listed_by_group == true + end + + def tag_group_names + object.tag_groups.map(&:name) + end +end diff --git a/app/serializers/tag_group_serializer.rb b/app/serializers/tag_group_serializer.rb index 3fa051bfa9..db61936fce 100644 --- a/app/serializers/tag_group_serializer.rb +++ b/app/serializers/tag_group_serializer.rb @@ -4,7 +4,7 @@ class TagGroupSerializer < ApplicationSerializer attributes :id, :name, :tag_names, :parent_tag_name, :one_per_topic, :permissions def tag_names - object.tags.map(&:name).sort + object.tags.base_tags.map(&:name).sort end def parent_tag_name diff --git a/app/services/search_indexer.rb b/app/services/search_indexer.rb index 8b3c84944b..17817c4c09 100644 --- a/app/services/search_indexer.rb +++ b/app/services/search_indexer.rb @@ -137,7 +137,12 @@ class SearchIndexer end category_name = topic.category&.name if topic - tag_names = topic.tags.pluck(:name).join(' ') if topic + if topic + tags = topic.tags.select(:id, :name) + unless tags.empty? + tag_names = (tags.map(&:name) + Tag.where(target_tag_id: tags.map(&:id)).pluck(:name)).join(' ') + end + end if Post === obj && obj.raw.present? && ( diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index a7ce0e80b9..8174e4aa63 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -3043,11 +3043,30 @@ en: changed: "tags changed:" tags: "Tags" choose_for_topic: "optional tags" + info: "Info" + default_info: "This tag isn't restricted to any categories, and has no synonyms." + synonyms: "Synonyms" + synonyms_description: "When the following tags are used, they will be replaced with %{base_tag_name}." + tag_groups_info: + one: 'This tag belongs to the group "{{tag_groups}}".' + other: "This tag belongs to these groups: {{tag_groups}}." + category_restrictions: + one: "It can only be used in this category:" + other: "It can only be used in these categories:" + edit_synonyms: "Manage Synonyms" + add_synonyms_label: "Add synonyms:" + add_synonyms: "Add" + add_synonyms_failed: "The following tags couldn't be added as synonyms: %{tag_names}. Ensure they don't have synonyms and aren't synonyms of another tag." + remove_synonym: "Remove Synonym" + delete_synonym_confirm: 'Are you sure you want to delete the synonym "%{tag_name}"?' delete_tag: "Delete Tag" delete_confirm: one: "Are you sure you want to delete this tag and remove it from %{count} topic it is assigned to?" other: "Are you sure you want to delete this tag and remove it from {{count}} topics it is assigned to?" delete_confirm_no_topics: "Are you sure you want to delete this tag?" + delete_confirm_synonyms: + one: "Its synonym will also be deleted." + other: "Its {{count}} synonyms will also be deleted." rename_tag: "Rename Tag" rename_instructions: "Choose a new name for the tag:" sort_by: "Sort by:" diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index bb82cba5b6..85dc523957 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -4378,9 +4378,13 @@ en: restricted_to: one: '"%{tag_name}" is restricted to the "%{category_names}" category' other: '"%{tag_name}" is restricted to the following categories: %{category_names}' + synonym: 'Synonyms are not allowed. Use "%{tag_name}" instead.' + has_synonyms: '"%{tag_name}" cannot be used because it has synonyms.' required_tags_from_group: one: "You must include at least %{count} %{tag_group_name} tag." other: "You must include at least %{count} %{tag_group_name} tags." + invalid_target_tag: "cannot be a synonym of a synonym" + synonyms_exist: "is not allowed while synonyms exist" rss_by_tag: "Topics tagged %{tag}" finish_installation: diff --git a/config/routes.rb b/config/routes.rb index 7fd6e9cef8..0c32e16ec8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -862,10 +862,13 @@ Discourse::Application.routes.draw do get '/:tag_id.rss' => 'tags#tag_feed' get '/:tag_id' => 'tags#show', as: 'tag_show' get '/intersection/:tag_id/*additional_tag_ids' => 'tags#show', as: 'tag_intersection' + get '/:tag_id/info' => 'tags#info' get '/:tag_id/notifications' => 'tags#notifications' put '/:tag_id/notifications' => 'tags#update_notifications' put '/:tag_id' => 'tags#update' delete '/:tag_id' => 'tags#destroy' + post '/:tag_id/synonyms' => 'tags#create_synonyms' + delete '/:tag_id/synonyms/:synonym_id' => 'tags#destroy_synonym' Discourse.filters.each do |filter| get "/:tag_id/l/#{filter}" => "tags#show_#{filter}", as: "tag_show_#{filter}" diff --git a/db/migrate/20191113193141_add_target_tag_id_to_tags.rb b/db/migrate/20191113193141_add_target_tag_id_to_tags.rb new file mode 100644 index 0000000000..75d19e272b --- /dev/null +++ b/db/migrate/20191113193141_add_target_tag_id_to_tags.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddTargetTagIdToTags < ActiveRecord::Migration[6.0] + def change + add_column :tags, :target_tag_id, :integer + end +end diff --git a/lib/discourse_tagging.rb b/lib/discourse_tagging.rb index 5b7996a946..50faf123a7 100644 --- a/lib/discourse_tagging.rb +++ b/lib/discourse_tagging.rb @@ -17,6 +17,12 @@ module DiscourseTagging if guardian.can_tag?(topic) tag_names = DiscourseTagging.tags_for_saving(tag_names_arg, guardian) || [] + if !tag_names.empty? + Tag.where_name(tag_names).joins(:target_tag).includes(:target_tag).each do |tag| + tag_names[tag_names.index(tag.name)] = tag.target_tag.name + end + end + old_tag_names = topic.tags.pluck(:name) || [] new_tag_names = tag_names - old_tag_names removed_tag_names = old_tag_names - tag_names @@ -190,6 +196,7 @@ module DiscourseTagging # for_topic: results are for tagging a topic # selected_tags: an array of tag names that are in the current selection # only_tag_names: limit results to tags with these names + # exclude_synonyms: exclude synonyms from results def self.filter_allowed_tags(guardian, opts = {}) selected_tag_ids = opts[:selected_tags] ? Tag.where_name(opts[:selected_tags]).pluck(:id) : [] category = opts[:category] @@ -215,7 +222,7 @@ module DiscourseTagging sql << <<~SQL SELECT t.id, t.name, t.topic_count, t.pm_topic_count, tgr.tgm_id as tgm_id, tgr.tag_group_id as tag_group_id, tgr.parent_tag_id as parent_tag_id, - tgr.one_per_topic as one_per_topic + tgr.one_per_topic as one_per_topic, t.target_tag_id FROM tags t INNER JOIN tag_group_restrictions tgr ON tgr.tag_id = t.id #{outer_join ? "LEFT OUTER" : "INNER"} @@ -307,6 +314,14 @@ module DiscourseTagging end end + if opts[:exclude_synonyms] + builder.where("target_tag_id IS NULL") + end + + if opts[:exclude_has_synonyms] + builder.where("id NOT IN (SELECT target_tag_id FROM tags WHERE target_tag_id IS NOT NULL)") + end + builder.limit(opts[:limit]) if opts[:limit] if opts[:order] builder.order_by(opts[:order]) @@ -383,15 +398,28 @@ module DiscourseTagging tag_names = DiscourseTagging.tags_for_saving(tag_names_arg, Guardian.new(Discourse.system_user), opts) || [] if taggable.tags.pluck(:name).sort != tag_names.sort taggable.tags = Tag.where_name(tag_names).all - if taggable.tags.size < tag_names.size - new_tag_names = tag_names - taggable.tags.map(&:name) - new_tag_names.each do |name| - taggable.tags << Tag.create(name: name) - end + new_tag_names = taggable.tags.size < tag_names.size ? tag_names - taggable.tags.map(&:name) : [] + taggable.tags << Tag.where(target_tag_id: taggable.tags.map(&:id)).all + new_tag_names.each do |name| + taggable.tags << Tag.create(name: name) end end end + # Returns true if all were added successfully, or an Array of the + # tags that failed to be added, with errors on each Tag. + def self.add_or_create_synonyms_by_name(target_tag, synonym_names) + tag_names = DiscourseTagging.tags_for_saving(synonym_names, Guardian.new(Discourse.system_user)) || [] + existing = Tag.where_name(tag_names).all + target_tag.synonyms << existing + (tag_names - target_tag.synonyms.map(&:name)).each do |name| + target_tag.synonyms << Tag.create(name: name) + end + successful = existing.select { |t| !t.errors.present? } + TopicTag.where(tag_id: successful.map(&:id)).update_all(tag_id: target_tag.id) + (existing - successful).presence || true + end + def self.muted_tags(user) return [] unless user TagUser.lookup(user, :muted).joins(:tag).pluck('tags.name') diff --git a/lib/topic_query.rb b/lib/topic_query.rb index de789eadb1..7e63bb024a 100644 --- a/lib/topic_query.rb +++ b/lib/topic_query.rb @@ -699,18 +699,15 @@ class TopicQuery end end - # ALL TAGS: something like this? - # Topic.joins(:tags).where('tags.name in (?)', @options[:tags]).group('topic_id').having('count(*)=?', @options[:tags].size).select('topic_id') - if SiteSetting.tagging_enabled result = result.preload(:tags) - tags = @options[:tags] + tags_arg = @options[:tags] - if tags && tags.size > 0 - tags = tags.split if String === tags + if tags_arg && tags_arg.size > 0 + tags_arg = tags_arg.split if String === tags_arg - tags = tags.map do |t| + tags_arg = tags_arg.map do |t| if String === t t.downcase else @@ -718,12 +715,12 @@ class TopicQuery end end + tags_query = tags_arg[0].is_a?(String) ? Tag.where_name(tags_arg) : Tag.where(id: tags_arg) + tags = tags_query.select(:id, :target_tag_id).map { |t| t.target_tag_id || t.id }.uniq + if @options[:match_all_tags] # ALL of the given tags: - tags_count = tags.length - tags = Tag.where_name(tags).pluck(:id) unless Integer === tags[0] - - if tags_count == tags.length + if tags_arg.length == tags.length tags.each_with_index do |tag, index| sql_alias = ['t', index].join result = result.joins("INNER JOIN topic_tags #{sql_alias} ON #{sql_alias}.topic_id = topics.id AND #{sql_alias}.tag_id = #{tag}") @@ -733,12 +730,7 @@ class TopicQuery end else # ANY of the given tags: - result = result.joins(:tags) - if Integer === tags[0] - result = result.where("tags.id in (?)", tags) - else - result = result.where("lower(tags.name) in (?)", tags) - end + result = result.joins(:tags).where("tags.id in (?)", tags) end # TODO: this is very side-effecty and should be changed diff --git a/spec/components/discourse_tagging_spec.rb b/spec/components/discourse_tagging_spec.rb index 0b0bd1ad1c..dcd0f7f1c3 100644 --- a/spec/components/discourse_tagging_spec.rb +++ b/spec/components/discourse_tagging_spec.rb @@ -8,10 +8,6 @@ require 'discourse_tagging' describe DiscourseTagging do - def sorted_tag_names(tag_records) - tag_records.map(&:name).sort - end - fab!(:admin) { Fabricate(:admin) } fab!(:user) { Fabricate(:user) } let(:guardian) { Guardian.new(user) } @@ -132,6 +128,46 @@ describe DiscourseTagging do expect(sorted_tag_names(tags)).to eq(sorted_tag_names([tag1, tag2, tag3])) end end + + context 'tag synonyms' do + fab!(:base_tag) { Fabricate(:tag, name: 'discourse') } + fab!(:synonym) { Fabricate(:tag, name: 'discource', target_tag: base_tag) } + + it 'returns synonyms by default' do + tags = DiscourseTagging.filter_allowed_tags(Guardian.new(user), + for_input: true, + term: 'disc' + ).map(&:name) + expect(tags).to contain_exactly(base_tag.name, synonym.name) + end + + it 'excludes synonyms with exclude_synonyms param' do + tags = DiscourseTagging.filter_allowed_tags(Guardian.new(user), + for_input: true, + exclude_synonyms: true, + term: 'disc' + ).map(&:name) + expect(tags).to contain_exactly(base_tag.name) + end + + it 'excludes tags with synonyms with exclude_has_synonyms params' do + tags = DiscourseTagging.filter_allowed_tags(Guardian.new(user), + for_input: true, + exclude_has_synonyms: true, + term: 'disc' + ).map(&:name) + expect(tags).to contain_exactly(synonym.name) + end + + it 'can exclude synonyms and tags with synonyms' do + expect(DiscourseTagging.filter_allowed_tags(Guardian.new(user), + for_input: true, + exclude_has_synonyms: true, + exclude_synonyms: true, + term: 'disc' + )).to be_empty + end + end end end @@ -357,6 +393,27 @@ describe DiscourseTagging do expect(valid).to eq(true) end end + + context 'tag synonyms' do + fab!(:topic) { Fabricate(:topic) } + + fab!(:syn1) { Fabricate(:tag, name: 'synonym1', target_tag: tag1) } + fab!(:syn2) { Fabricate(:tag, name: 'synonym2', target_tag: tag1) } + + it "uses the base tag when a synonym is given" do + valid = DiscourseTagging.tag_topic_by_names(topic, Guardian.new(user), [syn1.name]) + expect(valid).to eq(true) + expect(topic.errors[:base]).to be_empty + expect_same_tag_names(topic.reload.tags, [tag1]) + end + + it "handles multiple synonyms for the same tag" do + valid = DiscourseTagging.tag_topic_by_names(topic, Guardian.new(user), [tag1.name, syn1.name, syn2.name]) + expect(valid).to eq(true) + expect(topic.errors[:base]).to be_empty + expect_same_tag_names(topic.reload.tags, [tag1]) + end + end end describe '#tags_for_saving' do @@ -440,4 +497,67 @@ describe DiscourseTagging do expect(DiscourseTagging.staff_tag_names).to contain_exactly(other_staff_tag.name) end end + + describe '#add_or_create_synonyms_by_name' do + it "can add an existing tag" do + expect { + expect(DiscourseTagging.add_or_create_synonyms_by_name(tag1, [tag2.name])).to eq(true) + }.to_not change { Tag.count } + expect_same_tag_names(tag1.reload.synonyms, [tag2]) + expect(tag2.reload.target_tag).to eq(tag1) + end + + it "can add existing tag with wrong case" do + expect { + expect(DiscourseTagging.add_or_create_synonyms_by_name(tag1, [tag2.name.upcase])).to eq(true) + }.to_not change { Tag.count } + expect_same_tag_names(tag1.reload.synonyms, [tag2]) + expect(tag2.reload.target_tag).to eq(tag1) + end + + it "can create new tags" do + expect { + expect(DiscourseTagging.add_or_create_synonyms_by_name(tag1, ['synonym1'])).to eq(true) + }.to change { Tag.count }.by(1) + s = Tag.where_name('synonym1').first + expect_same_tag_names(tag1.reload.synonyms, [s]) + expect(s.target_tag).to eq(tag1) + end + + it "can add existing and new tags" do + expect { + expect(DiscourseTagging.add_or_create_synonyms_by_name(tag1, [tag2.name, 'synonym1'])).to eq(true) + }.to change { Tag.count }.by(1) + s = Tag.where_name('synonym1').first + expect_same_tag_names(tag1.reload.synonyms, [tag2, s]) + expect(s.target_tag).to eq(tag1) + expect(tag2.reload.target_tag).to eq(tag1) + end + + it "can change a synonym's target tag" do + synonym = Fabricate(:tag, name: 'synonym1', target_tag: tag1) + expect { + expect(DiscourseTagging.add_or_create_synonyms_by_name(tag2, [synonym.name])).to eq(true) + }.to_not change { Tag.count } + expect_same_tag_names(tag2.reload.synonyms, [synonym]) + expect(tag1.reload.synonyms.count).to eq(0) + expect(synonym.reload.target_tag).to eq(tag2) + end + + it "doesn't allow tags that have synonyms to become synonyms" do + tag2.synonyms << Fabricate(:tag) + value = DiscourseTagging.add_or_create_synonyms_by_name(tag1, [tag2.name]) + expect(value).to be_a(Array) + expect(value.size).to eq(1) + expect(value.first.errors[:target_tag_id]).to be_present + expect(tag1.reload.synonyms.count).to eq(0) + expect(tag2.reload.synonyms.count).to eq(1) + end + + it "changes tag of topics" do + topic = Fabricate(:topic, tags: [tag2]) + expect(DiscourseTagging.add_or_create_synonyms_by_name(tag1, [tag2.name])).to eq(true) + expect_same_tag_names(topic.reload.tags, [tag1]) + end + end end diff --git a/spec/components/search_spec.rb b/spec/components/search_spec.rb index 122a2e67b8..d094403797 100644 --- a/spec/components/search_spec.rb +++ b/spec/components/search_spec.rb @@ -669,13 +669,15 @@ describe Search do let(:category) { Fabricate(:category_with_definition) } context 'post searching' do - it 'can find posts with tags' do + before do SiteSetting.tagging_enabled = true - - post = Fabricate(:post, raw: 'I am special post') DiscourseTagging.tag_topic_by_names(post.topic, Guardian.new(Fabricate.build(:admin)), [tag.name, uppercase_tag.name]) post.topic.save + end + let(:post) { Fabricate(:post, raw: 'I am special post') } + + it 'can find posts with tags' do # we got to make this index (it is deferred) Jobs::ReindexSearch.new.rebuild_problem_posts @@ -690,6 +692,13 @@ describe Search do result = Search.execute(tag.name) expect(result.posts.length).to eq(0) end + + it 'can find posts with tag synonyms' do + synonym = Fabricate(:tag, name: 'synonym', target_tag: tag) + Jobs::ReindexSearch.new.rebuild_problem_posts + result = Search.execute(synonym.name) + expect(result.posts.length).to eq(1) + end end context 'tagging is disabled' do diff --git a/spec/components/topic_query_spec.rb b/spec/components/topic_query_spec.rb index 7e1530abed..558d417546 100644 --- a/spec/components/topic_query_spec.rb +++ b/spec/components/topic_query_spec.rb @@ -178,6 +178,7 @@ describe TopicQuery do fab!(:tagged_topic3) { Fabricate(:topic, tags: [tag, other_tag]) } fab!(:tagged_topic4) { Fabricate(:topic, tags: [uppercase_tag]) } fab!(:no_tags_topic) { Fabricate(:topic) } + let(:synonym) { Fabricate(:tag, target_tag: tag, name: 'synonym') } it "returns topics with the tag when filtered to it" do expect(TopicQuery.new(moderator, tags: tag.name).list_latest.topics) @@ -210,6 +211,26 @@ describe TopicQuery do it "can return topics with no tags" do expect(TopicQuery.new(moderator, no_tags: true).list_latest.topics.map(&:id)).to eq([no_tags_topic.id]) end + + it "can filter using a synonym" do + expect(TopicQuery.new(moderator, tags: synonym.name).list_latest.topics) + .to contain_exactly(tagged_topic1, tagged_topic3) + + expect(TopicQuery.new(moderator, tags: [synonym.id]).list_latest.topics) + .to contain_exactly(tagged_topic1, tagged_topic3) + + expect(TopicQuery.new( + moderator, tags: [synonym.name, other_tag.name] + ).list_latest.topics).to contain_exactly( + tagged_topic1, tagged_topic2, tagged_topic3 + ) + + expect(TopicQuery.new(moderator, tags: [synonym.id, other_tag.id]).list_latest.topics) + .to contain_exactly(tagged_topic1, tagged_topic2, tagged_topic3) + + expect(TopicQuery.new(moderator, tags: ["SYnonYM"]).list_latest.topics) + .to contain_exactly(tagged_topic1, tagged_topic3) + end end context "and categories too" do diff --git a/spec/integration/category_tag_spec.rb b/spec/integration/category_tag_spec.rb index c917ca661f..521a389723 100644 --- a/spec/integration/category_tag_spec.rb +++ b/spec/integration/category_tag_spec.rb @@ -5,14 +5,6 @@ require 'rails_helper' describe "category tag restrictions" do - def sorted_tag_names(tag_records) - tag_records.map { |t| t.is_a?(String) ? t : t.name }.sort - end - - def expect_same_tag_names(a, b) - expect(sorted_tag_names(a)).to eq(sorted_tag_names(b)) - end - def filter_allowed_tags(opts = {}) DiscourseTagging.filter_allowed_tags(Guardian.new(user), opts) end diff --git a/spec/models/tag_group_spec.rb b/spec/models/tag_group_spec.rb index ef00c45e1c..f126194379 100644 --- a/spec/models/tag_group_spec.rb +++ b/spec/models/tag_group_spec.rb @@ -87,4 +87,35 @@ describe TagGroup do include_examples "correct visible tag groups" end end + + describe 'tag_names=' do + let(:tag_group) { Fabricate(:tag_group) } + fab!(:tag) { Fabricate(:tag) } + + before { SiteSetting.tagging_enabled = true } + + it "can use existing tags and create new ones" do + expect { + tag_group.tag_names = [tag.name, 'new-tag'] + }.to change { Tag.count }.by(1) + expect_same_tag_names(tag_group.reload.tags, [tag, 'new-tag']) + end + + context 'with synonyms' do + fab!(:synonym) { Fabricate(:tag, name: 'synonym', target_tag: tag) } + + it "adds synonyms from base tags too" do + expect { + tag_group.tag_names = [tag.name, 'new-tag'] + }.to change { Tag.count }.by(1) + expect_same_tag_names(tag_group.reload.tags, [tag, 'new-tag', synonym]) + end + + it "removes tags correctly" do + tag_group.update!(tag_names: [tag.name]) + tag_group.tag_names = ['new-tag'] + expect_same_tag_names(tag_group.reload.tags, ['new-tag']) + end + end + end end diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb index 88ac08ded5..441bb734ac 100644 --- a/spec/models/tag_spec.rb +++ b/spec/models/tag_spec.rb @@ -13,6 +13,7 @@ describe Tag do end let(:tag) { Fabricate(:tag) } + let(:tag2) { Fabricate(:tag) } let(:topic) { Fabricate(:topic, tags: [tag]) } before do @@ -46,6 +47,12 @@ describe Tag do expect(event[:event_name]).to eq(:tag_destroyed) expect(event[:params].first).to eq(subject) end + + it 'removes it from its tag group' do + tag_group = Fabricate(:tag_group, tags: [tag]) + expect { tag.destroy }.to change { TagGroupMembership.count }.by(-1) + expect(tag_group.reload.tags).to be_empty + end end it "can delete tags on deleted topics" do @@ -188,4 +195,56 @@ describe Tag do expect(Tag.unused.pluck(:name)).to contain_exactly("unused1", "unused2") end end + + context "synonyms" do + let(:synonym) { Fabricate(:tag, target_tag: tag) } + + it "can be a synonym for another tag" do + expect(synonym).to be_synonym + expect(synonym.target_tag).to eq(tag) + end + + it "cannot have a synonym of a synonym" do + synonym2 = Fabricate.build(:tag, target_tag: synonym) + expect(synonym2).to_not be_valid + expect(synonym2.errors[:target_tag_id]).to be_present + end + + it "a tag with synonyms cannot become a synonym" do + synonym + tag.target_tag = Fabricate(:tag) + expect(tag).to_not be_valid + expect(tag.errors[:target_tag_id]).to be_present + end + + it "can be added to a tag group" do + tag_group = Fabricate(:tag_group, tags: [tag]) + synonym + expect(tag_group.reload.tags).to include(synonym) + end + + it "can be added to a category" do + category = Fabricate(:category, tags: [tag]) + synonym + expect(category.reload.tags).to include(synonym) + end + + it "destroying a tag destroys its synonyms" do + synonym + expect { tag.destroy }.to change { Tag.count }.by(-2) + expect(Tag.find_by_id(synonym.id)).to be_nil + end + + it "can add a tag from the same tag group as a synonym" do + tag_group = Fabricate(:tag_group, tags: [tag, tag2]) + tag2.update!(target_tag: tag) + expect(tag_group.reload.tags).to include(tag2) + end + + it "can add a tag restricted to the same category as a synonym" do + category = Fabricate(:category, tags: [tag, tag2]) + tag2.update!(target_tag: tag) + expect(category.reload.tags).to include(tag2) + end + end end diff --git a/spec/models/tag_user_spec.rb b/spec/models/tag_user_spec.rb index 258aa19f66..23a679ca5a 100644 --- a/spec/models/tag_user_spec.rb +++ b/spec/models/tag_user_spec.rb @@ -40,6 +40,28 @@ describe TagUser do TagUser.change(user.id, tag.id, regular) expect(TopicUser.get(topic, user).notification_level).to eq tracking end + + it "watches or tracks on change using a synonym" do + user = Fabricate(:user) + tag = Fabricate(:tag) + synonym = Fabricate(:tag, target_tag: tag) + post = create_post(tags: [tag.name]) + topic = post.topic + + TopicUser.change(user.id, topic.id, total_msecs_viewed: 1) + + TagUser.change(user.id, synonym.id, tracking) + expect(TopicUser.get(topic, user).notification_level).to eq tracking + + TagUser.change(user.id, synonym.id, watching) + expect(TopicUser.get(topic, user).notification_level).to eq watching + + TagUser.change(user.id, synonym.id, regular) + expect(TopicUser.get(topic, user).notification_level).to eq tracking + + expect(TagUser.where(user_id: user.id, tag_id: synonym.id).first).to be_nil + expect(TagUser.where(user_id: user.id, tag_id: tag.id).first).to be_present + end end context "batch_set" do @@ -65,6 +87,30 @@ describe TagUser do expect(TopicUser.get(topic, user).notification_level).to eq tracking end + + it "watches and unwatches tags correctly using tag synonym" do + + user = Fabricate(:user) + tag = Fabricate(:tag) + synonym = Fabricate(:tag, target_tag: tag) + post = create_post(tags: [tag.name]) + topic = post.topic + + # we need topic user record to ensure watch picks up other wise it is implicit + TopicUser.change(user.id, topic.id, total_msecs_viewed: 1) + + TagUser.batch_set(user, :tracking, [synonym.name]) + + expect(TopicUser.get(topic, user).notification_level).to eq tracking + + TagUser.batch_set(user, :watching, [synonym.name]) + + expect(TopicUser.get(topic, user).notification_level).to eq watching + + TagUser.batch_set(user, :watching, []) + + expect(TopicUser.get(topic, user).notification_level).to eq tracking + end end context "integration" do diff --git a/spec/requests/tags_controller_spec.rb b/spec/requests/tags_controller_spec.rb index 500988cf19..934812ad9c 100644 --- a/spec/requests/tags_controller_spec.rb +++ b/spec/requests/tags_controller_spec.rb @@ -23,10 +23,9 @@ describe TagsController do describe '#index' do - before do - Fabricate(:tag, name: 'test') - Fabricate(:tag, name: 'topic-test', topic_count: 1) - end + fab!(:test_tag) { Fabricate(:tag, name: 'test') } + fab!(:topic_tag) { Fabricate(:tag, name: 'topic-test', topic_count: 1) } + fab!(:synonym) { Fabricate(:tag, name: 'synonym', target_tag: topic_tag) } shared_examples "successfully retrieve tags with topic_count > 0" do it "should return the right response" do @@ -43,6 +42,19 @@ describe TagsController do context "with tags_listed_by_group enabled" do before { SiteSetting.tags_listed_by_group = true } include_examples "successfully retrieve tags with topic_count > 0" + + it "works for tags in groups" do + tag_group = Fabricate(:tag_group, tags: [test_tag, topic_tag, synonym]) + get "/tags.json" + expect(response.status).to eq(200) + + tags = json["tags"] + expect(tags.length).to eq(0) + group = json.dig('extras', 'tag_groups')&.first + expect(group).to be_present + expect(group['tags'].length).to eq(2) + expect(group['tags'].map { |t| t['id'] }).to contain_exactly(test_tag.name, topic_tag.name) + end end context "with tags_listed_by_group disabled" do @@ -79,6 +91,12 @@ describe TagsController do expect(response.status).to eq(404) end + it "should handle synonyms" do + synonym = Fabricate(:tag, target_tag: tag) + get "/tags/#{synonym.name}" + expect(response.status).to eq(200) + end + it "does not show staff-only tags" do tag_group = Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: ["test"]) @@ -158,6 +176,79 @@ describe TagsController do end end + describe '#info' do + fab!(:tag) { Fabricate(:tag, name: 'test') } + let(:synonym) { Fabricate(:tag, name: 'synonym', target_tag: tag) } + + it "returns 404 if tag not found" do + get "/tags/nope/info.json" + expect(response.status).to eq(404) + end + + it "can handle tag with no synonyms" do + get "/tags/#{tag.name}/info.json" + expect(response.status).to eq(200) + expect(json.dig('tag_info', 'name')).to eq(tag.name) + expect(json.dig('tag_info', 'synonyms')).to be_empty + expect(json.dig('tag_info', 'category_ids')).to be_empty + end + + it "can handle a synonym" do + get "/tags/#{synonym.name}/info.json" + expect(response.status).to eq(200) + expect(json.dig('tag_info', 'name')).to eq(synonym.name) + expect(json.dig('tag_info', 'synonyms')).to be_empty + expect(json.dig('tag_info', 'category_ids')).to be_empty + end + + it "can return a tag's synonyms" do + synonym + get "/tags/#{tag.name}/info.json" + expect(response.status).to eq(200) + expect(json.dig('tag_info', 'synonyms').map { |t| t['text'] }).to eq([synonym.name]) + end + + it "returns 404 if tag is staff-only" do + tag_group = Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: ["test"]) + get "/tags/test/info.json" + expect(response.status).to eq(404) + end + + it "staff-only tags can be retrieved for staff user" do + sign_in(admin) + tag_group = Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: ["test"]) + get "/tags/test/info.json" + expect(response.status).to eq(200) + end + + it "can return category restrictions" do + category.update!(tags: [tag]) + category2 = Fabricate(:category) + tag_group = Fabricate(:tag_group, tags: [tag]) + category2.update!(tag_groups: [tag_group]) + staff_category = Fabricate(:private_category, group: Fabricate(:group), tags: [tag]) + get "/tags/#{tag.name}/info.json" + expect(json.dig('tag_info', 'category_ids')).to contain_exactly(category.id, category2.id) + expect(json['categories']).to be_present + end + + context 'tag belongs to a tag group' do + fab!(:tag_group) { Fabricate(:tag_group, tags: [tag]) } + + it "returns tag groups if tag groups are visible" do + SiteSetting.tags_listed_by_group = true + get "/tags/#{tag.name}/info.json" + expect(json.dig('tag_info', 'tag_group_names')).to eq([tag_group.name]) + end + + it "doesn't return tag groups if tag groups aren't visible" do + SiteSetting.tags_listed_by_group = false + get "/tags/#{tag.name}/info.json" + expect(json['tag_info'].has_key?('tag_group_names')).to eq(false) + end + end + end + describe '#check_hashtag' do fab!(:tag) { Fabricate(:tag) } @@ -472,6 +563,31 @@ describe TagsController do end end + context 'with synonyms' do + fab!(:tag) { Fabricate(:tag, name: 'plant') } + fab!(:synonym) { Fabricate(:tag, name: 'plants', target_tag: tag) } + + it "can return synonyms" do + get "/tags/filter/search.json", params: { q: 'plant' } + expect(response.status).to eq(200) + expect(json['results'].map { |j| j['id'] }).to contain_exactly('plant', 'plants') + end + + it "can omit synonyms" do + get "/tags/filter/search.json", params: { q: 'plant', excludeSynonyms: 'true' } + expect(response.status).to eq(200) + expect(json['results'].map { |j| j['id'] }).to contain_exactly('plant') + end + + it "can return a message about synonyms not being allowed" do + get "/tags/filter/search.json", params: { q: 'plants', excludeSynonyms: 'true' } + expect(response.status).to eq(200) + expect(json["results"].map { |j| j["id"] }.sort).to eq([]) + expect(json["forbidden"]).to be_present + expect(json["forbidden_message"]).to eq(I18n.t("tags.forbidden.synonym", tag_name: tag.name)) + end + end + it "matches tags after sanitizing input" do yup, nope = Fabricate(:tag, name: 'yup'), Fabricate(:tag, name: 'nope') get "/tags/filter/search.json", params: { q: 'N/ope' } @@ -612,4 +728,90 @@ describe TagsController do end end end + + describe '#create_synonyms' do + fab!(:tag) { Fabricate(:tag) } + + it 'fails if not logged in' do + post "/tags/#{tag.name}/synonyms.json", params: { synonyms: ['synonym1'] } + expect(response.status).to eq(403) + end + + it 'fails if not staff user' do + sign_in(user) + post "/tags/#{tag.name}/synonyms.json", params: { synonyms: ['synonym1'] } + expect(response.status).to eq(403) + end + + context 'signed in as admin' do + before { sign_in(admin) } + + it 'can make a tag a synonym of another tag' do + tag2 = Fabricate(:tag) + expect { + post "/tags/#{tag.name}/synonyms.json", params: { synonyms: [tag2.name] } + }.to_not change { Tag.count } + expect(response.status).to eq(200) + expect(tag2.reload.target_tag).to eq(tag) + end + + it 'can create new tags at the same time' do + expect { + post "/tags/#{tag.name}/synonyms.json", params: { synonyms: ['synonym'] } + }.to change { Tag.count }.by(1) + expect(response.status).to eq(200) + expect(Tag.find_by_name('synonym')&.target_tag).to eq(tag) + end + + it 'can return errors' do + tag2 = Fabricate(:tag, target_tag: tag) + tag3 = Fabricate(:tag) + post "/tags/#{tag3.name}/synonyms.json", params: { synonyms: [tag.name] } + expect(response.status).to eq(200) + json = JSON.parse(response.body) + expect(json['failed']).to be_present + expect(json.dig('failed_tags', tag.name)).to be_present + end + end + end + + describe '#destroy_synonym' do + fab!(:tag) { Fabricate(:tag) } + fab!(:synonym) { Fabricate(:tag, target_tag: tag, name: 'synonym') } + subject { delete("/tags/#{tag.name}/synonyms/#{synonym.name}.json") } + + it 'fails if not logged in' do + subject + expect(response.status).to eq(403) + end + + it 'fails if not staff user' do + sign_in(user) + subject + expect(response.status).to eq(403) + end + + context 'signed in as admin' do + before { sign_in(admin) } + + it "can remove a synonym from a tag" do + synonym2 = Fabricate(:tag, target_tag: tag, name: 'synonym2') + expect { subject }.to_not change { Tag.count } + expect_same_tag_names(tag.reload.synonyms, [synonym2]) + expect(synonym.reload).to_not be_synonym + end + + it "returns error if tag isn't a synonym" do + delete "/tags/#{Fabricate(:tag).name}/synonyms/#{synonym.name}.json" + expect(response.status).to eq(400) + expect_same_tag_names(tag.reload.synonyms, [synonym]) + end + + it "returns error if synonym not found" do + delete "/tags/#{Fabricate(:tag).name}/synonyms/nope.json" + expect(response.status).to eq(404) + expect_same_tag_names(tag.reload.synonyms, [synonym]) + end + end + end end diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index 9a7323a1b4..c0f54163f8 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -1701,14 +1701,16 @@ describe UsersController do let!(:user) { sign_in(Fabricate(:user)) } it 'allows the update' do + SiteSetting.tagging_enabled = true user2 = Fabricate(:user) user3 = Fabricate(:user) tags = [Fabricate(:tag), Fabricate(:tag)] + tag_synonym = Fabricate(:tag, target_tag: tags[1]) put "/u/#{user.username}.json", params: { name: 'Jim Tom', muted_usernames: "#{user2.username},#{user3.username}", - watched_tags: "#{tags[0].name},#{tags[1].name}", + watched_tags: "#{tags[0].name},#{tag_synonym.name}", card_background_upload_url: upload.url, profile_background_upload_url: upload.url } diff --git a/spec/serializers/tag_group_serializer_spec.rb b/spec/serializers/tag_group_serializer_spec.rb index b9adf22187..92cdf76c15 100644 --- a/spec/serializers/tag_group_serializer_spec.rb +++ b/spec/serializers/tag_group_serializer_spec.rb @@ -20,4 +20,12 @@ describe TagGroupSerializer do expect(serialized[:permissions].keys).to contain_exactly("staff") end + it "doesn't return tag synonyms" do + tag = Fabricate(:tag) + synonym = Fabricate(:tag, target_tag: tag) + tag_group = Fabricate(:tag_group, tags: [tag, synonym]) + serialized = TagGroupSerializer.new(tag_group, root: false).as_json + expect(serialized[:tag_names]).to eq([tag.name]) + end + end diff --git a/spec/support/helpers.rb b/spec/support/helpers.rb index c08edfefed..efffb42785 100644 --- a/spec/support/helpers.rb +++ b/spec/support/helpers.rb @@ -120,6 +120,14 @@ module Helpers end end + def sorted_tag_names(tag_records) + tag_records.map { |t| t.is_a?(String) ? t : t.name }.sort + end + + def expect_same_tag_names(a, b) + expect(sorted_tag_names(a)).to eq(sorted_tag_names(b)) + end + def capture_stdout old_stdout = $stdout io = StringIO.new diff --git a/test/javascripts/acceptance/tags-test.js.es6 b/test/javascripts/acceptance/tags-test.js.es6 index 7dad65494c..bf18d97ed8 100644 --- a/test/javascripts/acceptance/tags-test.js.es6 +++ b/test/javascripts/acceptance/tags-test.js.es6 @@ -180,3 +180,140 @@ test("new topic button is not available for staff-only tags", async assert => { await visit("/tags/staff-only-tag"); assert.ok(find("#create-topic:disabled").length === 0); }); + +acceptance("Tag info", { + loggedIn: true, + settings: { + tags_listed_by_group: true + }, + pretend(server, helper) { + server.get("/tags/planters/notifications", () => { + return helper.response({ + tag_notification: { id: "planters", notification_level: 1 } + }); + }); + + server.get("/tags/planters/l/latest.json", () => { + return helper.response({ + users: [], + primary_groups: [], + topic_list: { + can_create_topic: true, + draft: null, + draft_key: "new_topic", + draft_sequence: 1, + per_page: 30, + tags: [ + { + id: 1, + name: "planters", + topic_count: 1 + } + ], + topics: [] + } + }); + }); + + server.get("/tags/planters/info", () => { + return helper.response({ + tag_info: { + id: 12, + name: "planters", + topic_count: 1, + staff: false, + synonyms: [ + { + id: "containers", + text: "containers" + }, + { + id: "planter", + text: "planter" + } + ], + tag_group_names: ["Gardening"], + category_ids: [7] + }, + categories: [ + { + id: 7, + name: "Outdoors", + color: "000", + text_color: "FFFFFF", + slug: "outdoors", + topic_count: 701, + post_count: 5320, + description: "Talk about the outdoors.", + description_text: "Talk about the outdoors.", + topic_url: "/t/category-definition-for-outdoors/1026", + read_restricted: false, + permission: null, + notification_level: null + } + ] + }); + }); + } +}); + +test("tag info can show synonyms", async assert => { + updateCurrentUser({ moderator: false, admin: false }); + + await visit("/tags/planters"); + assert.ok(find("#show-tag-info").length === 1); + + await click("#show-tag-info"); + assert.ok(exists(".tag-info .tag-name"), "show tag"); + assert.ok( + find(".tag-info .tag-associations") + .text() + .indexOf("Gardening") >= 0, + "show tag group names" + ); + assert.ok( + find(".tag-info .synonyms-list .tag-box").length === 2, + "shows the synonyms" + ); + assert.ok( + find(".tag-info .badge-category").length === 1, + "show the category" + ); + assert.ok(!exists("#rename-tag"), "can't rename tag"); + assert.ok(!exists("#edit-synonyms"), "can't edit synonyms"); + assert.ok(!exists("#delete-tag"), "can't delete tag"); +}); + +test("admin can manage tags", async assert => { + server.delete("/tags/planters/synonyms/containers", () => [ + 200, + { "Content-Type": "application/json" }, + { success: true } + ]); + + updateCurrentUser({ moderator: false, admin: true }); + + await visit("/tags/planters"); + assert.ok(find("#show-tag-info").length === 1); + + await click("#show-tag-info"); + assert.ok(exists("#rename-tag"), "can rename tag"); + assert.ok(exists("#edit-synonyms"), "can edit synonyms"); + assert.ok(exists("#delete-tag"), "can delete tag"); + + await click("#edit-synonyms"); + assert.ok( + find(".unlink-synonym:visible").length === 2, + "unlink UI is visible" + ); + assert.ok( + find(".delete-synonym:visible").length === 2, + "delete UI is visible" + ); + + await click(".unlink-synonym:first"); + assert.ok( + find(".tag-info .synonyms-list .tag-box").length === 1, + "removed a synonym" + ); +}); diff --git a/test/javascripts/components/tag-drop-test.js.es6 b/test/javascripts/components/tag-drop-test.js.es6 index 2cfab99b48..c457ec71f4 100644 --- a/test/javascripts/components/tag-drop-test.js.es6 +++ b/test/javascripts/components/tag-drop-test.js.es6 @@ -25,13 +25,13 @@ componentTest("default", { if (params.queryParams.q === "rég") { return response({ "results": [ - { "id": "régis", "text": "régis", "count": 2, "pm_count": 0 } + { "id": "régis", "text": "régis", "count": 2, "pm_count": 0, target_tag: null } ] }); - }else if (params.queryParams.q === "dav") { + } else if (params.queryParams.q === "dav") { return response({ "results": [ - { "id": "David", "text": "David", "count": 2, "pm_count": 0 } + { "id": "David", "text": "David", "count": 2, "pm_count": 0, target_tag: null } ] }); } @@ -77,6 +77,42 @@ componentTest("default", { } }); +componentTest("synonym", { + template: "{{tag-drop}}", + + beforeEach() { + this.site.set("can_create_tag", true); + this.set("site.top_tags", ["jeff", "neil", "arpit", "régis"]); + + const response = object => { + return [200, { "Content-Type": "application/json" }, object]; + }; + + // prettier-ignore + server.get("/tags/filter/search", (params) => { //eslint-disable-line + if (params.queryParams.q === "robin") { + return response({ + "results": [ + { "id": "Robin", "text": "Robin", "count": 2, "pm_count": 0, target_tag: 'EvilTrout' } + ] + }); + } + }); + }, + + async test(assert) { + await this.subject.expand(); + + sandbox.stub(DiscourseURL, "routeTo"); + await this.subject.fillInFilter("robin"); + await this.subject.keyboard("enter"); + assert.ok( + DiscourseURL.routeTo.calledWith("/tags/eviltrout"), + "it routes to the target tag" + ); + } +}); + componentTest("no tags", { template: "{{tag-drop}}", From b13f42745063859168e6da9e39ec5089fe158e80 Mon Sep 17 00:00:00 2001 From: romanrizzi Date: Wed, 4 Dec 2019 15:52:50 -0300 Subject: [PATCH 394/408] DEV: Drop uglifyJS V2 support --- lib/tasks/assets.rake | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index 7625fece58..a1c7397781 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -78,15 +78,9 @@ def compress_node(from, to) source_map_root = assets + ((d = File.dirname(from)) == "." ? "" : "/#{d}") source_map_url = cdn_path "/assets/#{to}.map" - cmd = if `uglifyjs -V`.match?(/2(.\d*){2}/) - <<~EOS - uglifyjs '#{assets_path}/#{from}' -p relative -m -c -o '#{to_path}' --source-map-root '#{source_map_root}' --source-map '#{assets_path}/#{to}.map' --source-map-url '#{source_map_url}' - EOS - else - <<~EOS + cmd = <<~EOS uglifyjs '#{assets_path}/#{from}' -m -c -o '#{to_path}' --source-map "root='#{source_map_root}',url='#{source_map_url}'" --output '#{to_path}' - EOS - end + EOS STDERR.puts cmd result = `#{cmd} 2>&1` From a54aaeeb79fb8875e499d71d8c95dcec88f87fb4 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Wed, 4 Dec 2019 14:13:31 -0600 Subject: [PATCH 395/408] REFACTOR: post_destroyer destroy method (#8462) --- lib/post_destroyer.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/post_destroyer.rb b/lib/post_destroyer.rb index 2b74d83791..4e09ed8f88 100644 --- a/lib/post_destroyer.rb +++ b/lib/post_destroyer.rb @@ -56,8 +56,9 @@ class PostDestroyer def destroy payload = WebHook.generate_payload(:post, @post) if WebHook.active_web_hooks(:post).exists? topic = @post.topic + is_first_post = @post.is_first_post? && topic - if @post.is_first_post? && topic + if is_first_post topic_view = TopicView.new(topic.id, Discourse.system_user) topic_payload = WebHook.generate_payload(:topic, topic_view, WebHookTopicViewSerializer) if WebHook.active_web_hooks(:topic).exists? end @@ -75,10 +76,10 @@ class PostDestroyer DiscourseEvent.trigger(:post_destroyed, @post, @opts, @user) WebHook.enqueue_post_hooks(:post_destroyed, @post, payload) - if @post.is_first_post? && @post.topic - UserActionManager.topic_destroyed(@post.topic) - DiscourseEvent.trigger(:topic_destroyed, @post.topic, @user) - WebHook.enqueue_topic_hooks(:topic_destroyed, @post.topic, topic_payload) + if is_first_post + UserActionManager.topic_destroyed(topic) + DiscourseEvent.trigger(:topic_destroyed, topic, @user) + WebHook.enqueue_topic_hooks(:topic_destroyed, topic, topic_payload) end end From fa52ed3b168dd42762b8e27c7eca4e003d8bc720 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Thu, 5 Dec 2019 08:25:49 +1100 Subject: [PATCH 396/408] FIX: bufferedValuesString.split is not a function (#8463) Fix an error `bufferedValuesString.split is not a function`. It is happening when bufferedValue is a positive boolean (checkbox value) --- .../admin/mixins/setting-component.js.es6 | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/admin/mixins/setting-component.js.es6 b/app/assets/javascripts/admin/mixins/setting-component.js.es6 index 63fa9bcf4b..4d7ea03c34 100644 --- a/app/assets/javascripts/admin/mixins/setting-component.js.es6 +++ b/app/assets/javascripts/admin/mixins/setting-component.js.es6 @@ -26,6 +26,14 @@ const CUSTOM_TYPES = [ const AUTO_REFRESH_ON_SAVE = ["logo", "logo_small", "large_icon"]; +function splitPipes(str) { + if (typeof str === "string") { + return str.split("|").filter(Boolean); + } else { + return []; + } +} + export default Mixin.create({ classNameBindings: [":row", ":setting", "overridden", "typeClass"], content: alias("setting"), @@ -101,23 +109,16 @@ export default Mixin.create({ }, @discourseComputed("buffered.value") - bufferedValues(bufferedValuesString) { - return ( - bufferedValuesString && bufferedValuesString.split("|").filter(Boolean) - ); - }, + bufferedValues: splitPipes, @discourseComputed("setting.defaultValues") - defaultValues(defaultValuesString) { - return ( - defaultValuesString && defaultValuesString.split("|").filter(Boolean) - ); - }, + defaultValues: splitPipes, @discourseComputed("defaultValues", "bufferedValues") defaultIsAvailable(defaultValues, bufferedValues) { return ( defaultValues && + defaultValues.length > 0 && !defaultValues.every(value => bufferedValues.includes(value)) ); }, From 2290ec9e87ab005fcb6666c1448bdbe4e7b92bd6 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Wed, 4 Dec 2019 15:34:54 -0700 Subject: [PATCH 397/408] DEV: Remove buffered rendering from i18n count This is another refactoring in the multi-step process to remove all uses of our custom Render Buffer. Previous commit: 80f4b9e2279856eb34349636a50a3cc3967ffaf3 in this series. This commit affects the display of translated counts that is used in multiple places like showing how many posts are selected using the select posts feature on a topic. It is just a refactor and does not change any functionality. --- .../discourse/components/count-i18n.js.es6 | 26 +++++++++---------- .../templates/components/count-i18n.hbs | 1 + 2 files changed, 13 insertions(+), 14 deletions(-) create mode 100644 app/assets/javascripts/discourse/templates/components/count-i18n.hbs diff --git a/app/assets/javascripts/discourse/components/count-i18n.js.es6 b/app/assets/javascripts/discourse/components/count-i18n.js.es6 index 9bdb715dc5..d0fd9bdccb 100644 --- a/app/assets/javascripts/discourse/components/count-i18n.js.es6 +++ b/app/assets/javascripts/discourse/components/count-i18n.js.es6 @@ -1,17 +1,15 @@ import Component from "@ember/component"; -import { bufferedRender } from "discourse-common/lib/buffered-render"; -export default Component.extend( - bufferedRender({ - tagName: "span", - rerenderTriggers: ["count", "suffix"], +export default Component.extend({ + tagName: "span", + rerenderTriggers: ["count", "suffix"], + i18nCount: null, - buildBuffer(buffer) { - buffer.push( - I18n.t(this.key + (this.suffix || ""), { - count: this.count - }) - ); - } - }) -); + didReceiveAttrs() { + this._super(...arguments); + this.set( + "i18nCount", + I18n.t(this.key + (this.suffix || ""), { count: this.count }).htmlSafe() + ); + } +}); diff --git a/app/assets/javascripts/discourse/templates/components/count-i18n.hbs b/app/assets/javascripts/discourse/templates/components/count-i18n.hbs new file mode 100644 index 0000000000..f7a5927a07 --- /dev/null +++ b/app/assets/javascripts/discourse/templates/components/count-i18n.hbs @@ -0,0 +1 @@ +{{i18nCount}} From d07f03946816490ee0e74eda1caf351e6b768c61 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Thu, 5 Dec 2019 00:13:09 +0100 Subject: [PATCH 398/408] FIX: Secure Upload URLs in lightbox (#8451) This fixes the following issues: * The link element on the lightbox which pops open the lightbox was linking to the S3 URL with a private ACL instead of the secure media URL for the image * Change to use `@post.with_secure_media?` in `CookedPostProcessor` for URL cooking, as in some cases, like when a post is edited and an upload is added, `upload.secure?` can be false which resulted in `srcset` URLs not being cooked correctly to secure media upload urls. --- lib/cooked_post_processor.rb | 10 ++-- spec/components/cooked_post_processor_spec.rb | 50 ++++++++++++++++--- 2 files changed, 49 insertions(+), 11 deletions(-) diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index 82e2646840..3c0f2c1aa1 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -375,6 +375,7 @@ class CookedPostProcessor def optimize_image!(img, upload, cropped: false) w, h = img["width"].to_i, img["height"].to_i + # note: optimize_urls cooks the src and data-small-upload further after this thumbnail = upload.thumbnail(w, h) if thumbnail && thumbnail.filesize.to_i < upload.filesize img["src"] = thumbnail.url @@ -386,14 +387,14 @@ class CookedPostProcessor resized_h = (h * ratio).to_i if !cropped && upload.width && resized_w > upload.width - cooked_url = UrlHelper.cook_url(upload.url, secure: upload.secure?) + cooked_url = UrlHelper.cook_url(upload.url, secure: @post.with_secure_media?) srcset << ", #{cooked_url} #{ratio.to_s.sub(/\.0$/, "")}x" elsif t = upload.thumbnail(resized_w, resized_h) - cooked_url = UrlHelper.cook_url(t.url, secure: upload.secure?) + cooked_url = UrlHelper.cook_url(t.url, secure: @post.with_secure_media?) srcset << ", #{cooked_url} #{ratio.to_s.sub(/\.0$/, "")}x" end - img["srcset"] = "#{UrlHelper.cook_url(img["src"], secure: upload.secure?)}#{srcset}" if srcset.present? + img["srcset"] = "#{UrlHelper.cook_url(img["src"], secure: @post.with_secure_media?)}#{srcset}" if srcset.present? end else img["src"] = upload.url @@ -411,7 +412,8 @@ class CookedPostProcessor lightbox.add_child(img) # then, the link to our larger image - a = create_link_node("lightbox", img["src"]) + src = UrlHelper.cook_url(img["src"], secure: @post.with_secure_media?) + a = create_link_node("lightbox", src) img.add_next_sibling(a) if upload diff --git a/spec/components/cooked_post_processor_spec.rb b/spec/components/cooked_post_processor_spec.rb index c2ca2d0b23..eec42c7c2b 100644 --- a/spec/components/cooked_post_processor_spec.rb +++ b/spec/components/cooked_post_processor_spec.rb @@ -4,6 +4,17 @@ require "rails_helper" require "cooked_post_processor" require "file_store/s3_store" +def s3_setup + Rails.configuration.action_controller.stubs(:asset_host).returns("https://local.cdn.com") + + SiteSetting.s3_upload_bucket = "some-bucket-on-s3" + SiteSetting.s3_access_key_id = "s3-access-key-id" + SiteSetting.s3_secret_access_key = "s3-secret-access-key" + SiteSetting.s3_cdn_url = "https://s3.cdn.com" + SiteSetting.enable_s3_uploads = true + SiteSetting.authorized_extensions = "png|jpg|gif|mov|ogg|" +end + describe CookedPostProcessor do fab!(:upload) { Fabricate(:upload) } @@ -491,6 +502,37 @@ describe CookedPostProcessor do end end + context "s3_uploads" do + before do + s3_setup + stored_path = Discourse.store.get_path_for_upload(upload) + upload.update_column(:url, "#{SiteSetting.Upload.absolute_base_url}/#{stored_path}") + + stub_request(:any, /some-bucket-on-s3\.s3\.amazonaws\.com/) + + OptimizedImage.expects(:resize).returns(true) + FileStore::BaseStore.any_instance.expects(:get_depth_for).returns(0) + Discourse.store.class.any_instance.expects(:has_been_uploaded?).at_least_once.returns(true) + + SiteSetting.login_required = true + SiteSetting.secure_media = true + upload.update_column(:secure, true) + end + + let(:post) do + Fabricate(:post, raw: "![large.png|600x500](#{upload.short_url})") + end + + it "handles secure images with the correct lightbox link href" do + cpp.post_process + + expect(cpp.html).to match_html <<~HTML +

    + HTML + end + end end context "with tall images" do @@ -1140,14 +1182,8 @@ describe CookedPostProcessor do context "s3_uploads" do before do - Rails.configuration.action_controller.stubs(:asset_host).returns("https://local.cdn.com") + s3_setup - SiteSetting.s3_upload_bucket = "some-bucket-on-s3" - SiteSetting.s3_access_key_id = "s3-access-key-id" - SiteSetting.s3_secret_access_key = "s3-secret-access-key" - SiteSetting.s3_cdn_url = "https://s3.cdn.com" - SiteSetting.enable_s3_uploads = true - SiteSetting.authorized_extensions = "png|jpg|gif|mov|ogg|" uploaded_file = file_from_fixtures("smallest.png") upload_sha1 = Digest::SHA1.hexdigest(File.read(uploaded_file)) From fe9293b8b554ab79636faa61a4756d5ff514a233 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Wed, 4 Dec 2019 18:11:00 -0700 Subject: [PATCH 399/408] DEV: Remove buffered rendering from input tips This is another refactoring in the multi-step process to remove all uses of our custom Render Buffer. Previous commit: 2290ec9e87ab005fcb6666c1448bdbe4e7b92bd6 in this series. This commit affects the display of input tips. It is just a refactor and does not change any functionality. --- .../discourse/components/input-tip.js.es6 | 37 ++++++++++++------- .../templates/components/input-tip.hbs | 1 + 2 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 app/assets/javascripts/discourse/templates/components/input-tip.hbs diff --git a/app/assets/javascripts/discourse/components/input-tip.js.es6 b/app/assets/javascripts/discourse/components/input-tip.js.es6 index 28e73eb0a2..1a12d8ebc0 100644 --- a/app/assets/javascripts/discourse/components/input-tip.js.es6 +++ b/app/assets/javascripts/discourse/components/input-tip.js.es6 @@ -1,21 +1,30 @@ import { alias, not } from "@ember/object/computed"; import Component from "@ember/component"; -import { bufferedRender } from "discourse-common/lib/buffered-render"; import { iconHTML } from "discourse-common/lib/icon-library"; -export default Component.extend( - bufferedRender({ - classNameBindings: [":tip", "good", "bad"], - rerenderTriggers: ["validation"], +export default Component.extend({ + classNameBindings: [":tip", "good", "bad"], + rerenderTriggers: ["validation"], + tipIcon: null, + tipReason: null, - bad: alias("validation.failed"), - good: not("bad"), + bad: alias("validation.failed"), + good: not("bad"), - buildBuffer(buffer) { - const reason = this.get("validation.reason"); - if (reason) { - buffer.push(iconHTML(this.good ? "check" : "times") + " " + reason); - } + tipIconHTML() { + let icon = iconHTML(this.good ? "check" : "times"); + return `${icon}`.htmlSafe(); + }, + + didReceiveAttrs() { + this._super(...arguments); + let reason = this.get("validation.reason"); + if (reason) { + this.set("tipIcon", this.tipIconHTML()); + this.set("tipReason", reason); + } else { + this.set("tipIcon", null); + this.set("tipReason", null); } - }) -); + } +}); diff --git a/app/assets/javascripts/discourse/templates/components/input-tip.hbs b/app/assets/javascripts/discourse/templates/components/input-tip.hbs new file mode 100644 index 0000000000..ade54357b5 --- /dev/null +++ b/app/assets/javascripts/discourse/templates/components/input-tip.hbs @@ -0,0 +1 @@ +{{tipIcon}} {{tipReason}} From e6dfcda0bcd40b5fa459eec3e3b11c5a37d8b67c Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 5 Dec 2019 14:36:06 +0530 Subject: [PATCH 400/408] DEV: handle all notification consolidations in new 'NotificationConsolidator' class. 481c8314f0b79253578c0f7facbe91f792301411 --- app/models/notification.rb | 90 ++++-------------- app/services/notification_consolidator.rb | 88 +++++++++++++++++ app/services/post_alerter.rb | 111 +++------------------- config/locales/server.en.yml | 4 +- config/site_settings.yml | 2 +- spec/models/notification_spec.rb | 16 ++-- spec/models/post_action_spec.rb | 8 +- 7 files changed, 135 insertions(+), 184 deletions(-) create mode 100644 app/services/notification_consolidator.rb diff --git a/app/models/notification.rb b/app/models/notification.rb index 4c0419f9e7..fc0e60805b 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -5,7 +5,6 @@ class Notification < ActiveRecord::Base belongs_to :topic MEMBERSHIP_REQUEST_CONSOLIDATION_WINDOW_HOURS = 24 - MEMBERSHIP_REQUEST_CONSOLIDATION_THRESHOLD = 3 validates_presence_of :data validates_presence_of :notification_type @@ -15,10 +14,25 @@ class Notification < ActiveRecord::Base scope :visible , lambda { joins('LEFT JOIN topics ON notifications.topic_id = topics.id') .where('topics.id IS NULL OR topics.deleted_at IS NULL') } - scope :filter_by_display_username_and_type, ->(username, notification_type) { - where("data::json ->> 'display_username' = ?", username) - .where(notification_type: notification_type) - .order(created_at: :desc) + scope :filter_by_consolidation_data, ->(notification_type, data) { + notifications = where(notification_type: notification_type) + + case notification_type + when types[:liked], types[:liked_consolidated] + key = "display_username" + consolidation_window = SiteSetting.likes_notification_consolidation_window_mins.minutes.ago + when types[:private_message] + key = "topic_title" + consolidation_window = MEMBERSHIP_REQUEST_CONSOLIDATION_WINDOW_HOURS.hours.ago + when types[:membership_request_consolidated] + key = "group_name" + consolidation_window = MEMBERSHIP_REQUEST_CONSOLIDATION_WINDOW_HOURS.hours.ago + end + + notifications = notifications.where("created_at > ? AND data::json ->> '#{key}' = ?", consolidation_window, data[key.to_sym]) if data[key&.to_sym].present? + notifications = notifications.where("data::json ->> 'username2' IS NULL") if notification_type == types[:liked] + + notifications } attr_accessor :skip_send_email @@ -27,7 +41,7 @@ class Notification < ActiveRecord::Base after_commit(on: :create) do DiscourseEvent.trigger(:notification_created, self) - send_email unless consolidate_membership_requests + send_email unless NotificationConsolidator.new(self).consolidate! end def self.ensure_consistency! @@ -230,70 +244,6 @@ class Notification < ActiveRecord::Base NotificationEmailer.process_notification(self) if !skip_send_email end - private - - def consolidate_membership_requests - return unless unread_pm? - - post_id = data_hash[:original_post_id] - return if post_id.blank? - - custom_field = PostCustomField.select(:value).find_by(post_id: post_id, name: "requested_group_id") - return if custom_field.blank? - - group_id = custom_field.value.to_i - group_name = Group.select(:name).find_by(id: group_id)&.name - return if group_name.blank? - - consolidation_window = MEMBERSHIP_REQUEST_CONSOLIDATION_WINDOW_HOURS.hours.ago - timestamp = Time.zone.now - unread = user.notifications.unread - - consolidated_notification = unread - .where("created_at > ? AND data::json ->> 'group_name' = ?", consolidation_window, group_name) - .find_by(notification_type: Notification.types[:membership_request_consolidated]) - - if consolidated_notification.present? - data = consolidated_notification.data_hash - data["count"] += 1 - - Notification.transaction do - consolidated_notification.update!( - data: data.to_json, - read: false, - updated_at: timestamp - ) - - destroy! - end - - return true - end - - notifications = unread - .where(notification_type: Notification.types[:private_message]) - .where("created_at > ? AND data::json ->> 'topic_title' = ?", consolidation_window, data_hash[:topic_title]) - - return if notifications.count < MEMBERSHIP_REQUEST_CONSOLIDATION_THRESHOLD - - Notification.transaction do - Notification.create!( - notification_type: Notification.types[:membership_request_consolidated], - user_id: user_id, - data: { - group_name: group_name, - count: notifications.count - }.to_json, - updated_at: timestamp, - created_at: timestamp - ) - - notifications.destroy_all - end - - true - end - end # == Schema Information diff --git a/app/services/notification_consolidator.rb b/app/services/notification_consolidator.rb new file mode 100644 index 0000000000..9ba3dc0ba4 --- /dev/null +++ b/app/services/notification_consolidator.rb @@ -0,0 +1,88 @@ +# frozen_string_literal: true + +class NotificationConsolidator + attr_reader :notification, :notification_type, :consolidation_type, :data + + def initialize(notification) + @notification = notification + @notification_type = notification.notification_type + @data = notification.data_hash + + if notification_type == Notification.types[:liked] + @consolidation_type = Notification.types[:liked_consolidated] + @data[:username] = @data[:display_username] + elsif notification_type == Notification.types[:private_message] + post_id = @data[:original_post_id] + return if post_id.blank? + + custom_field = PostCustomField.select(:value).find_by(post_id: post_id, name: "requested_group_id") + return if custom_field.blank? + + group_id = custom_field.value.to_i + group_name = Group.select(:name).find_by(id: group_id)&.name + return if group_name.blank? + + @consolidation_type = Notification.types[:membership_request_consolidated] + @data[:group_name] = group_name + end + end + + def consolidate! + return if SiteSetting.notification_consolidation_threshold.zero? || consolidation_type.blank? + + update_consolidated_notification! || create_consolidated_notification! + end + + def update_consolidated_notification! + consolidated_notification = user_notifications.filter_by_consolidation_data(consolidation_type, data).first + return if consolidated_notification.blank? + + data_hash = consolidated_notification.data_hash + data_hash["count"] += 1 + + Notification.transaction do + consolidated_notification.update!( + data: data_hash.to_json, + read: false, + updated_at: timestamp + ) + notification.destroy! + end + + consolidated_notification + end + + def create_consolidated_notification! + notifications = user_notifications.unread.filter_by_consolidation_data(notification_type, data) + return if notifications.count <= SiteSetting.notification_consolidation_threshold + + consolidated_notification = nil + + Notification.transaction do + timestamp = notifications.last.created_at + data[:count] = notifications.count + + consolidated_notification = Notification.create!( + notification_type: consolidation_type, + user_id: notification.user_id, + data: data.to_json, + updated_at: timestamp, + created_at: timestamp + ) + + notifications.destroy_all + end + + consolidated_notification + end + + private + + def user_notifications + notification.user.notifications + end + + def timestamp + @timestamp ||= Time.zone.now + end +end diff --git a/app/services/post_alerter.rb b/app/services/post_alerter.rb index 7194e0ec69..f769649e53 100644 --- a/app/services/post_alerter.rb +++ b/app/services/post_alerter.rb @@ -331,28 +331,19 @@ class PostAlerter notification_data = {} - if is_liked - if existing_notification_of_same_type && - existing_notification_of_same_type.created_at > 1.day.ago && - ( - user.user_option.like_notification_frequency == - UserOption.like_notification_frequency_type[:always] - ) + if is_liked && + existing_notification_of_same_type && + existing_notification_of_same_type.created_at > 1.day.ago && + ( + user.user_option.like_notification_frequency == + UserOption.like_notification_frequency_type[:always] + ) - data = existing_notification_of_same_type.data_hash - notification_data["username2"] = data["display_username"] - notification_data["count"] = (data["count"] || 1).to_i + 1 - # don't use destroy so we don't trigger a notification count refresh - Notification.where(id: existing_notification_of_same_type.id).destroy_all - elsif !SiteSetting.likes_notification_consolidation_threshold.zero? - notification = consolidate_liked_notifications( - user, - post, - opts[:display_username] - ) - - return notification if notification - end + data = existing_notification_of_same_type.data_hash + notification_data["username2"] = data["display_username"] + notification_data["count"] = (data["count"] || 1).to_i + 1 + # don't use destroy so we don't trigger a notification count refresh + Notification.where(id: existing_notification_of_same_type.id).destroy_all end collapsed = false @@ -625,82 +616,4 @@ class PostAlerter def warn_if_not_sidekiq Rails.logger.warn("PostAlerter.#{caller_locations(1, 1)[0].label} was called outside of sidekiq") unless Sidekiq.server? end - - private - - def consolidate_liked_notifications(user, post, username) - user_notifications = user.notifications - - consolidation_window = - SiteSetting.likes_notification_consolidation_window_mins.minutes.ago - - liked_by_user_notifications = - user_notifications - .filter_by_display_username_and_type( - username, Notification.types[:liked] - ) - .where( - "created_at > ? AND data::json ->> 'username2' IS NULL", - consolidation_window - ) - - user_liked_consolidated_notification = - user_notifications - .filter_by_display_username_and_type( - username, Notification.types[:liked_consolidated] - ) - .where("created_at > ?", consolidation_window) - .first - - if user_liked_consolidated_notification - return update_consolidated_liked_notification_count!( - user_liked_consolidated_notification - ) - elsif ( - liked_by_user_notifications.count >= - SiteSetting.likes_notification_consolidation_threshold - ) - return create_consolidated_liked_notification!( - liked_by_user_notifications, - post, - username - ) - end - end - - def update_consolidated_liked_notification_count!(notification) - data = notification.data_hash - data["count"] += 1 - - notification.update!( - data: data.to_json, - read: false - ) - - notification - end - - def create_consolidated_liked_notification!(notifications, post, username) - notification = nil - - Notification.transaction do - timestamp = notifications.last.created_at - - notification = Notification.create!( - notification_type: Notification.types[:liked_consolidated], - user_id: post.user_id, - data: { - username: username, - display_username: username, - count: notifications.count + 1 - }.to_json, - updated_at: timestamp, - created_at: timestamp - ) - - notifications.each(&:destroy!) - end - - notification - end end diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 85dc523957..1a89507cd5 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1988,9 +1988,9 @@ en: disable_system_edit_notifications: "Disables edit notifications by the system user when 'download_remote_images_to_local' is active." - likes_notification_consolidation_threshold: "Number of liked notifications received before the notifications are consolidated into a single one. Set to 0 to disable. The window can be configured via `SiteSetting.likes_notification_consolidation_window_mins`." + notification_consolidation_threshold: "Number of liked or membership request notifications received before the notifications are consolidated into a single one. Set to 0 to disable." - likes_notification_consolidation_window_mins: "Duration in minutes where liked notifications are consolidated into a single notification once the threshold has been reached. The threshold can be configured via `SiteSetting.likes_notification_consolidation_threshold`." + likes_notification_consolidation_window_mins: "Duration in minutes where liked notifications are consolidated into a single notification once the threshold has been reached. The threshold can be configured via `SiteSetting.notification_consolidation_threshold`." automatically_unpin_topics: "Automatically unpin topics when the user reaches the bottom." diff --git a/config/site_settings.yml b/config/site_settings.yml index 9d1f045f0c..b4ef1349cb 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -1857,7 +1857,7 @@ uncategorized: disable_system_edit_notifications: true - likes_notification_consolidation_threshold: + notification_consolidation_threshold: default: 3 min: 0 diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb index a78d6e8ed6..eabbbc68b5 100644 --- a/spec/models/notification_spec.rb +++ b/spec/models/notification_spec.rb @@ -258,7 +258,7 @@ describe Notification do end end - describe '.filter_by_display_username_and_type' do + describe '.filter_by_consolidation_data' do let(:post) { Fabricate(:post) } fab!(:user) { Fabricate(:user) } @@ -267,8 +267,8 @@ describe Notification do end it 'should return the right notifications' do - expect(Notification.filter_by_display_username_and_type( - user.username_lower, Notification.types[:liked] + expect(Notification.filter_by_consolidation_data( + Notification.types[:liked], display_username: user.username_lower )).to eq([]) expect do @@ -280,8 +280,8 @@ describe Notification do PostActionCreator.like(user, post) end.to change { Notification.count }.by(2) - expect(Notification.filter_by_display_username_and_type( - user.username_lower, Notification.types[:liked] + expect(Notification.filter_by_consolidation_data( + Notification.types[:liked], display_username: user.username_lower )).to contain_exactly( Notification.find_by(notification_type: Notification.types[:liked]) ) @@ -376,7 +376,7 @@ describe Notification do before do PostCustomField.create!(post_id: post.id, name: "requested_group_id", value: group.id) - create_membership_request_notification + 2.times { create_membership_request_notification } end it 'should consolidate membership requests to a new notification' do @@ -391,12 +391,12 @@ describe Notification do data = notification.data_hash expect(data[:group_name]).to eq(group.name) - expect(data[:count]).to eq(3) + expect(data[:count]).to eq(4) notification = create_membership_request_notification expect { notification.reload }.to raise_error(ActiveRecord::RecordNotFound) - expect(Notification.last.data_hash[:count]).to eq(4) + expect(Notification.last.data_hash[:count]).to eq(5) end end end diff --git a/spec/models/post_action_spec.rb b/spec/models/post_action_spec.rb index 3413cb273a..c4c85d985f 100644 --- a/spec/models/post_action_spec.rb +++ b/spec/models/post_action_spec.rb @@ -263,13 +263,13 @@ describe PostAction do fab!(:likee) { Fabricate(:user) } it "can be disabled" do - SiteSetting.likes_notification_consolidation_threshold = 0 + SiteSetting.notification_consolidation_threshold = 0 expect do PostActionCreator.like(liker, Fabricate(:post, user: likee)) end.to change { likee.reload.notifications.count }.by(1) - SiteSetting.likes_notification_consolidation_threshold = 1 + SiteSetting.notification_consolidation_threshold = 1 expect do PostActionCreator.like(liker, Fabricate(:post, user: likee)) @@ -285,7 +285,7 @@ describe PostAction do end it 'should consolidate likes notification when the threshold is reached' do - SiteSetting.likes_notification_consolidation_threshold = 2 + SiteSetting.notification_consolidation_threshold = 2 expect do 3.times do @@ -353,7 +353,7 @@ describe PostAction do end it 'should consolidate liked notifications when threshold is reached' do - SiteSetting.likes_notification_consolidation_threshold = 2 + SiteSetting.notification_consolidation_threshold = 2 post = Fabricate(:post, user: likee) From b0e3062fdf2de62b25f8426ae75683fab2b284f1 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 5 Dec 2019 19:09:50 +0530 Subject: [PATCH 401/408] Fix the 'PostMover' spec. --- app/models/notification.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/models/notification.rb b/app/models/notification.rb index fc0e60805b..9b907bc347 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -232,6 +232,11 @@ class Notification < ActiveRecord::Base Post.where(topic: topic_id, post_number: post_number).pluck_first(:id) end + def reload(options = nil) + super + @data_hash = nil + end + protected def refresh_notification_count From 754e1238b02a8035ce7c450a28c002d7127d968b Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 5 Dec 2019 19:36:52 +0530 Subject: [PATCH 402/408] Fix the build - take 2. b0e3062fdf2de62b25f8426ae75683fab2b284f1 --- app/models/notification.rb | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/app/models/notification.rb b/app/models/notification.rb index 9b907bc347..bf52ccdcfd 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -147,14 +147,12 @@ class Notification < ActiveRecord::Base # Be wary of calling this frequently. O(n) JSON parsing can suck. def data_hash - @data_hash ||= begin - return {} if data.blank? + return {} if data.blank? - parsed = JSON.parse(data) - return {} if parsed.blank? + parsed = JSON.parse(data) + return {} if parsed.blank? - parsed.with_indifferent_access - end + parsed.with_indifferent_access end def url @@ -232,11 +230,6 @@ class Notification < ActiveRecord::Base Post.where(topic: topic_id, post_number: post_number).pluck_first(:id) end - def reload(options = nil) - super - @data_hash = nil - end - protected def refresh_notification_count From 11c4d5eda7d85bfe5a49ae80d7bb59be76739275 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 5 Dec 2019 20:35:39 +0530 Subject: [PATCH 403/408] Fix the build - take 3. 754e1238b02a8035ce7c450a28c002d7127d968b --- app/models/notification.rb | 10 ++++++---- spec/models/post_mover_spec.rb | 10 +++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/models/notification.rb b/app/models/notification.rb index bf52ccdcfd..fc0e60805b 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -147,12 +147,14 @@ class Notification < ActiveRecord::Base # Be wary of calling this frequently. O(n) JSON parsing can suck. def data_hash - return {} if data.blank? + @data_hash ||= begin + return {} if data.blank? - parsed = JSON.parse(data) - return {} if parsed.blank? + parsed = JSON.parse(data) + return {} if parsed.blank? - parsed.with_indifferent_access + parsed.with_indifferent_access + end end def url diff --git a/spec/models/post_mover_spec.rb b/spec/models/post_mover_spec.rb index 42cf45098c..99ea605ba1 100644 --- a/spec/models/post_mover_spec.rb +++ b/spec/models/post_mover_spec.rb @@ -334,12 +334,12 @@ describe PostMover do new_topic = topic.move_posts(user, [p3.id], title: "new testing topic name") - n3.reload + n3 = Notification.find(n3.id) expect(n3.topic_id).to eq(new_topic.id) expect(n3.post_number).to eq(1) expect(n3.data_hash[:topic_title]).to eq(new_topic.title) - n4.reload + n4 = Notification.find(n4.id) expect(n4.topic_id).to eq(topic.id) expect(n4.post_number).to eq(4) end @@ -349,7 +349,7 @@ describe PostMover do topic.move_posts(user, [p1.id], title: "new testing topic name") - n1.reload + n1 = Notification.find(n1.id) expect(n1.topic_id).to eq(topic.id) expect(n1.data_hash[:topic_title]).to eq(topic.title) expect(n1.post_number).to eq(1) @@ -575,12 +575,12 @@ describe PostMover do moved_to = topic.move_posts(user, [p3.id], destination_topic_id: destination_topic.id) - n3.reload + n3 = Notification.find(n3.id) expect(n3.topic_id).to eq(moved_to.id) expect(n3.post_number).to eq(2) expect(n3.data_hash[:topic_title]).to eq(moved_to.title) - n4.reload + n4 = Notification.find(n4.id) expect(n4.topic_id).to eq(topic.id) expect(n4.post_number).to eq(4) end From aa5d4e9f6ee179a554d186aaab30da367f95557a Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Thu, 5 Dec 2019 21:18:00 +0530 Subject: [PATCH 404/408] FIX: keep `ruby` & `rt` tags in html to markdown conversion. --- app/assets/javascripts/discourse/lib/to-markdown.js.es6 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/javascripts/discourse/lib/to-markdown.js.es6 b/app/assets/javascripts/discourse/lib/to-markdown.js.es6 index 7cd6a8ca49..c7ba652984 100644 --- a/app/assets/javascripts/discourse/lib/to-markdown.js.es6 +++ b/app/assets/javascripts/discourse/lib/to-markdown.js.es6 @@ -489,6 +489,8 @@ function tags() { Tag.keep("small"), Tag.keep("big"), Tag.keep("kbd"), + Tag.keep("ruby"), + Tag.keep("rt"), Tag.li(), Tag.link(), Tag.image(), From 50b98a47ac395360e4cab8968125f848bb8e83d1 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Thu, 5 Dec 2019 11:20:52 -0500 Subject: [PATCH 405/408] Update translations --- config/locales/client.ar.yml | 2 + config/locales/client.be.yml | 1 + config/locales/client.bg.yml | 1 + config/locales/client.bs_BA.yml | 2 +- config/locales/client.ca.yml | 21 +- config/locales/client.cs.yml | 2 +- config/locales/client.da.yml | 3 +- config/locales/client.de.yml | 69 ++++- config/locales/client.el.yml | 1 + config/locales/client.es.yml | 15 +- config/locales/client.et.yml | 1 + config/locales/client.fa_IR.yml | 2 +- config/locales/client.fi.yml | 14 +- config/locales/client.fr.yml | 38 ++- config/locales/client.gl.yml | 1 + config/locales/client.he.yml | 36 ++- config/locales/client.hu.yml | 1 + config/locales/client.hy.yml | 2 +- config/locales/client.id.yml | 1 + config/locales/client.it.yml | 3 +- config/locales/client.ja.yml | 21 ++ config/locales/client.ko.yml | 2 + config/locales/client.lt.yml | 1 + config/locales/client.lv.yml | 32 +++ config/locales/client.nb_NO.yml | 2 +- config/locales/client.nl.yml | 21 +- config/locales/client.pl_PL.yml | 252 +++++++++++++++++- config/locales/client.pt.yml | 2 + config/locales/client.pt_BR.yml | 3 +- config/locales/client.ro.yml | 1 + config/locales/client.ru.yml | 36 ++- config/locales/client.sk.yml | 1 + config/locales/client.sl.yml | 3 +- config/locales/client.sq.yml | 1 + config/locales/client.sr.yml | 1 + config/locales/client.sv.yml | 1 + config/locales/client.sw.yml | 2 +- config/locales/client.te.yml | 1 + config/locales/client.th.yml | 1 + config/locales/client.tr_TR.yml | 187 ++++++++++++- config/locales/client.uk.yml | 4 +- config/locales/client.ur.yml | 3 +- config/locales/client.vi.yml | 30 +++ config/locales/client.zh_CN.yml | 55 +++- config/locales/client.zh_TW.yml | 2 +- config/locales/server.ar.yml | 15 -- config/locales/server.be.yml | 9 - config/locales/server.bg.yml | 2 - config/locales/server.ca.yml | 55 +++- config/locales/server.da.yml | 3 - config/locales/server.de.yml | 19 +- config/locales/server.el.yml | 19 -- config/locales/server.es.yml | 46 +++- config/locales/server.et.yml | 3 - config/locales/server.fa_IR.yml | 16 -- config/locales/server.fi.yml | 51 ++-- config/locales/server.fr.yml | 18 +- config/locales/server.he.yml | 47 +++- config/locales/server.hu.yml | 2 - config/locales/server.hy.yml | 16 -- config/locales/server.id.yml | 3 - config/locales/server.it.yml | 17 -- config/locales/server.ja.yml | 7 - config/locales/server.ko.yml | 3 - config/locales/server.lv.yml | 5 + config/locales/server.nb_NO.yml | 3 - config/locales/server.nl.yml | 94 ++++--- config/locales/server.pl_PL.yml | 68 ++++- config/locales/server.pt.yml | 17 +- config/locales/server.pt_BR.yml | 10 - config/locales/server.ro.yml | 3 - config/locales/server.ru.yml | 18 +- config/locales/server.sl.yml | 13 - config/locales/server.sq.yml | 7 - config/locales/server.sr.yml | 3 - config/locales/server.sv.yml | 3 - config/locales/server.sw.yml | 15 -- config/locales/server.tr_TR.yml | 15 +- config/locales/server.uk.yml | 10 - config/locales/server.ur.yml | 17 -- config/locales/server.vi.yml | 62 ++++- config/locales/server.zh_CN.yml | 23 +- config/locales/server.zh_TW.yml | 16 -- .../config/locales/client.lv.yml | 1 + .../config/locales/client.tr_TR.yml | 1 + .../config/locales/client.nl.yml | 4 +- .../config/locales/server.ca.yml | 2 + .../config/locales/server.de.yml | 2 + .../config/locales/server.es.yml | 8 + .../config/locales/server.nl.yml | 12 +- .../config/locales/server.pl_PL.yml | 8 + .../config/locales/server.vi.yml | 9 + plugins/poll/config/locales/client.ar.yml | 3 +- plugins/poll/config/locales/client.be.yml | 2 + plugins/poll/config/locales/client.bg.yml | 3 +- plugins/poll/config/locales/client.bs_BA.yml | 3 +- plugins/poll/config/locales/client.ca.yml | 12 +- plugins/poll/config/locales/client.cs.yml | 3 +- plugins/poll/config/locales/client.da.yml | 3 +- plugins/poll/config/locales/client.de.yml | 3 +- plugins/poll/config/locales/client.el.yml | 3 +- plugins/poll/config/locales/client.es.yml | 14 +- plugins/poll/config/locales/client.et.yml | 3 +- plugins/poll/config/locales/client.fa_IR.yml | 3 +- plugins/poll/config/locales/client.fi.yml | 3 +- plugins/poll/config/locales/client.fr.yml | 3 +- plugins/poll/config/locales/client.gl.yml | 3 +- plugins/poll/config/locales/client.he.yml | 14 +- plugins/poll/config/locales/client.hu.yml | 3 +- plugins/poll/config/locales/client.hy.yml | 3 +- plugins/poll/config/locales/client.id.yml | 1 - plugins/poll/config/locales/client.it.yml | 3 +- plugins/poll/config/locales/client.ja.yml | 3 +- plugins/poll/config/locales/client.ko.yml | 3 +- plugins/poll/config/locales/client.lt.yml | 3 +- plugins/poll/config/locales/client.lv.yml | 3 +- plugins/poll/config/locales/client.nb_NO.yml | 3 +- plugins/poll/config/locales/client.nl.yml | 14 +- plugins/poll/config/locales/client.pl_PL.yml | 14 +- plugins/poll/config/locales/client.pt.yml | 16 +- plugins/poll/config/locales/client.pt_BR.yml | 3 +- plugins/poll/config/locales/client.ro.yml | 3 +- plugins/poll/config/locales/client.ru.yml | 3 +- plugins/poll/config/locales/client.sk.yml | 3 +- plugins/poll/config/locales/client.sl.yml | 3 +- plugins/poll/config/locales/client.sq.yml | 3 +- plugins/poll/config/locales/client.sr.yml | 2 + plugins/poll/config/locales/client.sv.yml | 3 +- plugins/poll/config/locales/client.sw.yml | 3 +- plugins/poll/config/locales/client.te.yml | 2 + plugins/poll/config/locales/client.th.yml | 3 +- plugins/poll/config/locales/client.tr_TR.yml | 3 +- plugins/poll/config/locales/client.uk.yml | 3 +- plugins/poll/config/locales/client.ur.yml | 3 +- plugins/poll/config/locales/client.vi.yml | 3 +- plugins/poll/config/locales/client.zh_CN.yml | 3 +- plugins/poll/config/locales/client.zh_TW.yml | 3 +- plugins/poll/config/locales/server.ca.yml | 3 + plugins/poll/config/locales/server.es.yml | 4 + plugins/poll/config/locales/server.he.yml | 4 + plugins/poll/config/locales/server.nl.yml | 4 + plugins/poll/config/locales/server.pl_PL.yml | 4 + plugins/poll/config/locales/server.pt.yml | 6 +- public/500.pt.html | 2 +- 144 files changed, 1395 insertions(+), 509 deletions(-) diff --git a/config/locales/client.ar.yml b/config/locales/client.ar.yml index 59a048b1ad..92a458dece 100644 --- a/config/locales/client.ar.yml +++ b/config/locales/client.ar.yml @@ -643,6 +643,7 @@ ar: collapse_profile: "إخفاء" bookmarks: "العلامات المرجعية" bio: "معلومات عنّي" + timezone: "المنطقة الزمنية" invited_by: "مدعو بواسطة" trust_level: "مستوى الثقة" notifications: "الإشعارات" @@ -2460,6 +2461,7 @@ ar: changed: "الأوسمة المعدلة:" tags: "الأوسمة" choose_for_topic: "الأوسمة الإختيارية" + add_synonyms: "اضافة" delete_tag: "احذف الوسم" delete_confirm: zero: "هل أنت متاكد انك تريد حذف هذا الوسم و إذالتة من {{count}} موضوع؟" diff --git a/config/locales/client.be.yml b/config/locales/client.be.yml index 175b09655f..9461351fca 100644 --- a/config/locales/client.be.yml +++ b/config/locales/client.be.yml @@ -1220,6 +1220,7 @@ be: tagging: tags: "тэгі" choose_for_topic: "дадатковыя тэгі" + add_synonyms: "дадаць" sort_by: "Сартаваць па:" sort_by_name: "Імя" cancel_delete_unused: "адмяніць" diff --git a/config/locales/client.bg.yml b/config/locales/client.bg.yml index 96723449e1..3aeb4c0b3b 100644 --- a/config/locales/client.bg.yml +++ b/config/locales/client.bg.yml @@ -1955,6 +1955,7 @@ bg: changed: "променени тагове:" tags: "Тагове" choose_for_topic: "етикети по желание" + add_synonyms: "Добави" delete_tag: "Изтрийте таг" manage_groups_description: "Дефинирай групи за организране на етикетите" cancel_delete_unused: "Отмени" diff --git a/config/locales/client.bs_BA.yml b/config/locales/client.bs_BA.yml index 5c9a25707e..505708d4d1 100644 --- a/config/locales/client.bs_BA.yml +++ b/config/locales/client.bs_BA.yml @@ -2437,7 +2437,6 @@ bs_BA: email_in_disabled: "Posting new topics via email is disabled in the Site Settings. To enable posting new topics via email, " email_in_disabled_click: 'enable the "email in" setting.' mailinglist_mirror: "Kategorija odražava mailing listu" - suppress_from_latest: "Suzite kategoriju od najnovijih tema." show_subcategory_list: "Prikaži listu podkategorija iznad tema u ovoj kategoriji." subcategory_num_featured_topics: "Broj istaknutih tema na stranici roditeljske kategorije:" all_topics_wiki: "Podrazumevano postavite nove teme" @@ -2812,6 +2811,7 @@ bs_BA: changed: "oznake promijenjene:" tags: "Oznake" choose_for_topic: "izborne oznake" + add_synonyms: "Dodaj" delete_tag: "Izbriši oznaku" delete_confirm: one: "Jeste li sigurni da želite izbrisati ovu oznaku i ukloniti je iz teme %{count} kojoj je dodijeljen?" diff --git a/config/locales/client.ca.yml b/config/locales/client.ca.yml index 495c6402d8..50f092f871 100644 --- a/config/locales/client.ca.yml +++ b/config/locales/client.ca.yml @@ -747,6 +747,7 @@ ca: collapse_profile: "Redueix" bookmarks: "Preferits" bio: "Quant a mi" + timezone: "Zona horària" invited_by: "Convidat per" trust_level: "Nivell de confiança" notifications: "Notificacions" @@ -950,6 +951,9 @@ ca: uploaded_avatar_empty: "Afegeix una foto personalitzada" upload_title: "Carrega la foto" image_is_not_a_square: "Atenció: hem retallat la vostra imatge; l'amplada i l'alçada no eren iguals." + change_profile_background: + title: "Capçalera de perfil" + instructions: "Les capçaleres de perfil estaran centrades i tindran una amplada predeterminada de 1110px." change_card_background: title: "Fons de la targeta d'usuari" instructions: "Les imatges de fons se centraran i tindran una amplada per defecte de 590px." @@ -1332,7 +1336,7 @@ ca: second_factor_backup_description: "Introduïu un dels vostres codis de còpia de seguretat:" second_factor: "Inici de sessió amb l’aplicació Authenticator" security_key_description: "Quan tingueu preparada la vostra clau de seguretat física, premeu el botó Autentica amb clau de seguretat." - security_key_alternative: "¿No podeu trobar la vostra clau de seguretat o voleu utilitzar un altre mètode?" + security_key_alternative: "Proveu d’una altra manera" security_key_authenticate: "Autenticació amb clau de seguretat" security_key_not_allowed_error: "El procés d'autenticació de claus de seguretat ha arribat al límit de temps o s'ha cancel·lat. " security_key_no_matching_credential_error: "No s'ha trobat cap credencial coincident amb la clau de seguretat proporcionada." @@ -1710,6 +1714,7 @@ ca: context: user: "Cerca publicacions de @{{username}}" category: "Cerca en la categoria #{{category}} " + tag: "Cerca l'etiqueta #{{tag}}" topic: "Cerca en aquest tema" private_messages: "Cerca missatges" advanced: @@ -2382,6 +2387,9 @@ ca: manage_tag_groups_link: "Gestioneu els grups d'etiquetes aquí." allow_global_tags_label: "Permet també altres etiquetes" tag_group_selector_placeholder: "(Opcional) Grup d’etiquetes" + required_tag_group_description: "Requereix que els temes nous tinguin etiquetes d’un grup d’etiquetes:" + min_tags_from_required_group_label: "Etiquetes num.:" + required_tag_group_label: "Grup d'etiquetes:" topic_featured_link_allowed: "Permet enllaços destacats dins aquesta categoria" delete: "Suprimeix categoria" create: "Nova categoria" @@ -2418,7 +2426,6 @@ ca: email_in_disabled: "Les publicacions des del correu electrònic estan desactivades en les preferències del lloc web. Per a activar les publicacions des del correu electrònic, " email_in_disabled_click: 'activa l''opció "email in".' mailinglist_mirror: "Una categoria reflecteix una llista de correu" - suppress_from_latest: "Suprimeix la categoria dels temes més recents." show_subcategory_list: "Mostra la llista de subcategories de temes en aquesta categoria. " num_featured_topics: "Nombre de temes mostrats en la pàgina de categories:" subcategory_num_featured_topics: "Nombre de temes destacats en la pàgina de la categoria primària:" @@ -2790,6 +2797,7 @@ ca: changed: "etiquetes canviades:" tags: "Etiquetes" choose_for_topic: "etiquetes opcionals" + add_synonyms: "Afegeix" delete_tag: "Suprimeix l'etiqueta" delete_confirm: one: "Esteu segur que voleu suprimir aquesta etiqueta i eliminar-la del tema %{count} al qual és assignada?" @@ -2847,6 +2855,7 @@ ca: parent_tag_description: "Les etiquetes d'aquest grup no es poden fer servir si no hi és l'etiqueta primària." one_per_topic_label: "Limita a una etiqueta per cada tema d'aquest grup" new_name: "Nou grup d'etiquetes" + name_placeholder: "Nom del grup d’etiquetes" save: "Desa" delete: "Suprimeix" confirm_delete: "Esteu segur que voleu suprimir aquest grup d'etiquetes?" @@ -3047,6 +3056,7 @@ ca: none: "No hi ha claus API actives ara mateix" user: "Usuari" title: "API" + key: "Clau" created: Creat updated: Actualitzat last_used: Darrer utilitzat @@ -3055,11 +3065,15 @@ ca: undo_revoke: "Desfés revocar" revoke: "Revoca" all_users: "Tots els usuaris" + active_keys: "Claus actives de l'API" show_details: Detalls description: Descripció no_description: (sense descripció) all_api_keys: Totes les claus de l'API user_mode: Nivell d’usuari + impersonate_all_users: Suplanta qualsevol usuari + single_user: "Usuari únic" + user_placeholder: Introduïu el nom d'usuari description_placeholder: "Per a què es farà servir aquesta clau?" save: Desa new_key: Nova clau d’API @@ -3646,6 +3660,9 @@ ca: change_theme_setting: "canvia la configuració de l'aparença" disable_theme_component: "inhabilita el component d'aparença" enable_theme_component: "habilita el component d'aparença" + revoke_title: "revoca el títol" + change_title: "canvia el títol" + api_key_create: "crea la clau API" screened_emails: title: "Correus sota supervisió" description: "Quan es prova de crear un compte nou, es revisaran les següents adreces i es blocarà el registre o es durà a terme alguna altra acció." diff --git a/config/locales/client.cs.yml b/config/locales/client.cs.yml index b826bb19a3..0508ffe7c8 100644 --- a/config/locales/client.cs.yml +++ b/config/locales/client.cs.yml @@ -2197,7 +2197,6 @@ cs: email_in_disabled: "Přidávání nových témat před email je zakázáno v Nastavení fóra. K povolení nových témat přes email," email_in_disabled_click: 'povolit nastavení "email in"' mailinglist_mirror: "Kategorie kopíruje mailing list" - suppress_from_latest: "Potlač tuto kategorii na nejnovějších tématech." show_subcategory_list: "Ukázat seznam podkategorií nad tématy v této kategorii." num_featured_topics: "Počet témat, která se zobrazují na stránce kategorie " subcategory_num_featured_topics: "Počet zobrazených témat na stránce nadřazené kategorie:" @@ -2582,6 +2581,7 @@ cs: changed: "změněné štítky:" tags: "Štítky" choose_for_topic: "volitelné štítky" + add_synonyms: "Přidat" delete_tag: "Smaž štítek" delete_confirm: one: "Jsi si jist, že chceš smazat tento štítek a odstranit ho z tématu, kterému je přiřazen?" diff --git a/config/locales/client.da.yml b/config/locales/client.da.yml index b50640f9a7..cf68664385 100644 --- a/config/locales/client.da.yml +++ b/config/locales/client.da.yml @@ -745,6 +745,7 @@ da: collapse_profile: "Fald sammen" bookmarks: "Bogmærker" bio: "Om mig" + timezone: "Tidszone" invited_by: "Inviteret af" trust_level: "Tillidsniveau" notifications: "Underretninger" @@ -2384,7 +2385,6 @@ da: email_in_disabled: "Nye emner via email er deaktiveret i Site opsætning. For at aktivere oprettelse af nye emner via email," email_in_disabled_click: 'aktiver "email ind" indstilligen.' mailinglist_mirror: "Kategori spejler en mailing liste" - suppress_from_latest: "Undertryk kategori fra de seneste emner." show_subcategory_list: "Vis oversigt med subkategorier ovenover emner i denne kategori." num_featured_topics: "Antal emner som skal vises på siden med kategorier:" subcategory_num_featured_topics: "Antal af fremhævede emner på siden for den overordnede kategori:" @@ -2756,6 +2756,7 @@ da: changed: "tags skiftet:" tags: "Tags" choose_for_topic: "valgfri tags" + add_synonyms: "Tilføj" delete_tag: "Slet tag" delete_confirm: one: "Er du sikker på, at du vil slette dette tag og fjerne det fra et emne %{count}, der er tildelt det?" diff --git a/config/locales/client.de.yml b/config/locales/client.de.yml index 0201dc9fae..c04933ffed 100644 --- a/config/locales/client.de.yml +++ b/config/locales/client.de.yml @@ -747,6 +747,7 @@ de: collapse_profile: "Zuklappen" bookmarks: "Lesezeichen" bio: "Über mich" + timezone: "Zeitzone" invited_by: "Eingeladen von" trust_level: "Vertrauensstufe" notifications: "Benachrichtigungen" @@ -950,6 +951,9 @@ de: uploaded_avatar_empty: "Eigenes Bild hinzufügen" upload_title: "Lade dein Bild hoch" image_is_not_a_square: "Achtung: Wir haben dein Bild zugeschnitten, weil Höhe und Breite nicht übereingestimmt haben." + change_profile_background: + title: "Profil Kopfzeile" + instructions: "Profil Kopfzeilen werden zentriert und haben eine Standardbreite von 1110px." change_card_background: title: "Benutzerkarten-Hintergrund" instructions: "Hintergrundbilder werden zentriert und haben eine Standardbreite von 590px." @@ -1332,7 +1336,7 @@ de: second_factor_backup_description: "Bitte gib einen deiner Wiederherstellungs-Codes ein:" second_factor: "Anmeldung mit einer Authentifizierungs-App" security_key_description: "Wenn Du Deinen physischen Sicherheitsschlüssel vorbereitet hast, klicke unten auf die Schaltfläche \"Mit Sicherheitsschlüssel authentifizieren\"." - security_key_alternative: "Du kannst Deinen Sicherheitsschlüssel nicht finden oder möchtest eine andere Methode verwenden?" + security_key_alternative: "Versuche einen anderen Weg" security_key_authenticate: "Mit Sicherheitsschlüssel authentifizieren" security_key_not_allowed_error: "Der Authentifizierungsprozess für den Sicherheitsschlüssel ist abgelaufen oder wurde abgebrochen." security_key_no_matching_credential_error: "Im angegebenen Sicherheitsschlüssel wurden keine übereinstimmenden Anmeldeinformationen gefunden." @@ -1540,6 +1544,7 @@ de: link_description: "gib hier eine Link-Beschreibung ein" link_dialog_title: "Link einfügen" link_optional_text: "Optionaler Titel" + link_url_placeholder: "Füge eine URL ein oder tippe, um die Themen zu durchsuchen" quote_title: "Zitat" quote_text: "Zitat" code_title: "Vorformatierter Text" @@ -1629,6 +1634,7 @@ de: topic_reminder: "{{username}} {{description}}" watching_first_post: "New Topic {{description}}" membership_request_accepted: "Mitgliedschaft akzeptiert in '{{group_name}}' " + membership_request_consolidated: "{{count}} offene Gruppenmitgliedschaftsanfrage/n für die Gruppe '{{group_name}}'" group_message_summary: one: "{{count}} Nachricht in deinem {{group_name}} Posteingang" other: "{{count}} Nachrichten in deinem {{group_name}} Posteingang" @@ -1664,6 +1670,7 @@ de: topic_reminder: "Themen-Erinnerung" liked_consolidated: "neue „Gefällt mir“-Angaben" post_approved: "Beitrag genehmigt" + membership_request_consolidated: "Neue Gruppenmitgliedschaftsanfragen" upload_selector: title: "Ein Bild hinzufügen" title_with_attachments: "Ein Bild oder eine Datei hinzufügen" @@ -1709,6 +1716,7 @@ de: context: user: "Beiträge von @{{username}} durchsuchen" category: "Kategorie #{{category}} durchsuchen" + tag: "Den #{{tag}} tag suchen" topic: "Dieses Thema durchsuchen" private_messages: "Nachrichten durchsuchen" advanced: @@ -2231,8 +2239,10 @@ de: attachment_upload_not_allowed_for_new_user: "Entschuldige, neue Benutzer dürfen keine Dateien hochladen." attachment_download_requires_login: "Entschuldige, du musst angemeldet sein, um Dateien herunterladen zu können." abandon_edit: + confirm: "Sollen die Änderungen verworfen werden?" no_value: "Nein, behalten" no_save_draft: "Nein, speichere den Entwurf" + yes_value: "Ja, Änderungen verwerfen" abandon: confirm: "Möchtest du deinen Beitrag wirklich verwerfen?" no_value: "Nein, beibehalten" @@ -2375,9 +2385,14 @@ de: tags_allowed_tags: "Schlagwörter auf diese Kategorie einschränken:" tags_allowed_tag_groups: "Schlagwortgruppen auf diese Kategorie einschränken:" tags_placeholder: "(Optional) Liste erlaubter Schlagwörter" + tags_tab_description: "Die oben spezifizierten Tags und Tag-Gruppen werden nur in dieser Kategorie und anderen Kategorien, für die sie ebenfalls spezifiziert sind, verfügbar sein. Darüber hinaus werden sie nicht in weiteren Kategorien verwendbar sein." tag_groups_placeholder: "(Optional) Liste erlaubter Schlagwort-Gruppen" manage_tag_groups_link: "Verwalte hier die Schlagwort-Gruppen." allow_global_tags_label: "Erlaube auch andere Schlagwörter." + tag_group_selector_placeholder: "(Optional) Tag Gruppe" + required_tag_group_description: "Neue Themen müssen Tags von einer Tag Gruppe haben:" + min_tags_from_required_group_label: "Num Tags:" + required_tag_group_label: "Tag Gruppe:" topic_featured_link_allowed: "Erlaube hervorgehobene Links in dieser Kategorie" delete: "Kategorie löschen" create: "Neue Kategorie" @@ -2414,7 +2429,6 @@ de: email_in_disabled: "Das Erstellen von neuen Themen per E-Mail ist in den Website-Einstellungen deaktiviert. Um das Erstellen von neuen Themen per E-Mail zu erlauben," email_in_disabled_click: 'aktiviere die Einstellung „email in“.' mailinglist_mirror: "Kategorie spiegelt eine Mailingliste" - suppress_from_latest: "Unterdrücke die Kategorie bei den aktuellen Themen" show_subcategory_list: "Zeige Liste von Unterkategorien oberhalb von Themen in dieser Kategorie" num_featured_topics: "Anzahl der Themen, die auf der Kategorien-Seite angezeigt werden" subcategory_num_featured_topics: "Anzahl beworbener Themen, die auf der Seite der übergeordneten Kategorie angezeigt werden:" @@ -2782,11 +2796,30 @@ de: changed: "Geänderte Schlagwörter:" tags: "Schlagwörter" choose_for_topic: "optionale Schlagwörter" + info: "Info" + default_info: "Dieses Schlagwort ist nicht auf Kategorien beschränkt und hat keine Synonyme." + synonyms: "Synonyme" + synonyms_description: "Wenn die folgenden Schlagwörter verwendet werden, werden sie durch %{base_tag_name} ersetzt." + tag_groups_info: + one: 'Dieser Tag gehört zur Gruppe "{{tag_groups}}".' + other: "Dieses Schlagwort gehört zu diesen Gruppen: {{tag_groups}}." + category_restrictions: + one: "Es kann nur in dieser Kategorie verwendet werden:" + other: "Es kann nur in folgenden Kategorien verwendet werden:" + edit_synonyms: "Synonyme Verwalten" + add_synonyms_label: "Synonyme hinzufügen:" + add_synonyms: "Hinzufügen" + add_synonyms_failed: "Die folgenden Schlagwörter konnten nicht als Synonyme hinzugefügt werden: %{tag_names} . Stellen Sie sicher, dass sie keine Synonyme und keine Synonyme eines anderen Schlagwortes bereits haben." + remove_synonym: "Synonym entfernen" + delete_synonym_confirm: 'Bist du dir sicher das du das folgende Synonym entfernen möchtest "%{tag_name}" ?' delete_tag: "Schlagwört löschen" delete_confirm: one: "Bist du sicher, dass du dieses Schlagwort löschen und von einem zugeordneten Thema entfernen möchtest?" other: "Bist du sicher, dass du dieses Schlagwort löschen und von {{count}} zugeordneten Themen entfernen möchtest?" delete_confirm_no_topics: "Bist du sicher, dass du dieses Schlagwort löschen möchtest?" + delete_confirm_synonyms: + one: "Das Synonym wird ebenfalls gelöscht." + other: "Es werden {{count}} weitere Synonyme ebenfalls gelöscht." rename_tag: "Schlagwort umbenennen" rename_instructions: "Neuen Namen für das Schlagwort wählen:" sort_by: "Sortieren nach:" @@ -2839,6 +2872,7 @@ de: parent_tag_description: "Schlagwörter aus dieser Gruppe können nur verwendet werden, wenn das übergeordnete Schlagwort zugeordnet ist." one_per_topic_label: "Beschränke diese Gruppe auf ein Schlagwort pro Thema" new_name: "Neue Schlagwort-Gruppe" + name_placeholder: "Name der Tag Gruppe" save: "Speichern" delete: "Löschen" confirm_delete: "Möchtest du wirklich diese Schlagwort-Gruppe löschen?" @@ -3008,6 +3042,7 @@ de: membership: automatic: Automatisch trust_levels_title: "Vertrauensstufe, die neuen Mitgliedern automatisch verliehen wird:" + effects: Effekte trust_levels_none: "Keine" automatic_membership_email_domains: "Benutzer, deren E-Mail-Domain mit einem der folgenden Listeneinträge genau übereinstimmt, werden automatisch zu dieser Gruppe hinzugefügt:" automatic_membership_retroactive: "Diese Regel auch auf existierende Benutzer anwenden, um diese zur Gruppe hinzuzufügen." @@ -3038,14 +3073,30 @@ de: none: "Es gibt momentan keine aktiven API-Keys" user: "Benutzer" title: "API" + key: "Schlüssel" created: Erstellt updated: Aktualisiert + last_used: Zuletzt verwendet + never_used: (nie) generate: "Erzeugen" + undo_revoke: "Widerrufen zurückziehen" revoke: "Widerrufen" all_users: "Alle Benutzer" + active_keys: "Aktive API Schlüssel" + manage_keys: Schlüssel verwalten show_details: Details description: Beschreibung + no_description: (keine Beschreibung) + all_api_keys: Alle API Schlüssel + user_mode: Benutzerrang + impersonate_all_users: Als jeder Benutzer ausgeben + single_user: "Einzelbenutzer" + user_placeholder: Benutzernamen eingeben + description_placeholder: "Wofür wird dieser Schlüssel verwendet werden?" save: Speichern + new_key: Neuer API Schlüssel + revoked: Widerrufen + delete: Endgültig gelöscht web_hooks: title: "Webhooks" none: "Aktuell gibt es keine Webhooks." @@ -3288,6 +3339,7 @@ de: color_scheme_select: "Wähle Farben für dieses Theme" custom_sections: "Benutzerdefinierte Abschnitte:" theme_components: "Theme-Komponenten" + add_all_themes: "Alle Themen hinzufügen" convert: "Umwandeln" convert_component_alert: "Bist Du sicher, dass du diese Komponente in ein Theme umwandeln möchtest? Sie wird als Komponente entfernt von %{relatives}." convert_component_tooltip: "Wandle diese Komponente in ein Theme um" @@ -3320,6 +3372,9 @@ de: edit_css_html: "Bearbeite CSS/HTML" edit_css_html_help: "Du hast kein CSS oder HTML bearbeitet" delete_upload_confirm: "Upload löschen? (Theme-CSS funktioniert eventuell nicht mehr!)" + component_on_themes: "Komponente zu diesen Themen hinzufügen" + included_components: "Enthaltene Komponente" + add_all: "Alle hinzufügen" import_web_tip: "Repository mit dem Theme" import_web_advanced: "Erweitert..." import_file_tip: ".tar.gz, .zip, oder .dcstyle.json Datei, die ein Theme enthält" @@ -3628,6 +3683,12 @@ de: change_theme_setting: "Theme Einstellung ändern" disable_theme_component: "Theme-Komponente deaktivieren" enable_theme_component: "Theme-Komponente aktivieren" + revoke_title: "Titel widerrufen" + change_title: "Titel ändern" + api_key_create: "Api Schlüssel erstellen" + api_key_update: "Api Schlüssel aktualisieren" + api_key_destroy: "Api Schlüssel zerstören" + override_upload_secure_status: "Hochladesicherheitsstatus überschreiben" screened_emails: title: "Gefilterte E-Mails" description: "Wenn jemand ein Konto erstellt, werden die folgenden E-Mail-Adressen überprüft und es wird die Anmeldung blockiert oder eine andere Aktion ausgeführt." @@ -3825,7 +3886,7 @@ de: flags_given_count: Gemachte Meldungen flags_received_count: Erhaltene Meldungen warnings_received_count: Warnungen erhalten - flags_given_received_count: "Erhaltene / gemachte Meldungen" + flags_given_received_count: "Gemachte / erhaltene Meldungen" approve: "Genehmigen" approved_by: "genehmigt von" approve_success: "Benutzer wurde genehmigt und eine E-Mail mit Anweisungen zur Aktivierung wurde gesendet." @@ -4018,7 +4079,9 @@ de: secret_list: invalid_input: "Eingabefelder können nicht leer sein oder vertikale Balkenzeichen enthalten." default_categories: + modal_description: "Soll diese Änderung rückwirkend gelten? Das ändert die Voreinstellungen für %{count} bestehende Benutzer." modal_yes: "Ja" + modal_no: "Nein, die Änderung soll sich nur zukünftig auswirken" badges: title: Abzeichen new_badge: Neues Abzeichen diff --git a/config/locales/client.el.yml b/config/locales/client.el.yml index 52e060bde6..f4d9a2e657 100644 --- a/config/locales/client.el.yml +++ b/config/locales/client.el.yml @@ -2144,6 +2144,7 @@ el: selector_no_tags: "καμία ετικέτα" changed: "αλλαγμένες ετικέτες:" tags: "Ετικέτες" + add_synonyms: "Προσθήκη" delete_tag: "Αφαίρεση Ετικέτας" delete_confirm: one: "Είσαι βέβαιος πως θέλεις να διαγράψεις αυτήν την ετικέτα και να την αφαιρέσεις από το %{count} νήμα στο οποίο είναι προσαρτημένη;" diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml index 089a296291..3c492577cc 100644 --- a/config/locales/client.es.yml +++ b/config/locales/client.es.yml @@ -747,6 +747,7 @@ es: collapse_profile: "Contraer" bookmarks: "Marcadores" bio: "Acerca de mí" + timezone: "Zona horaria" invited_by: "Invitado por" trust_level: "Nivel de confianza" notifications: "Notificaciones" @@ -1335,7 +1336,7 @@ es: second_factor_backup_description: "Por favor, ingresa uno de los códigos de respaldo:" second_factor: "Iniciar sesión utilizando la app Authenticator" security_key_description: "Cuando tengas tu clave de seguridad física preparada, presiona el botón de autenticar con clave de seguridad que se encuentra debajo." - security_key_alternative: "¿No encuentras tu clave de seguridad o quieres utilizar otro método?" + security_key_alternative: "Intenta de otra manera" security_key_authenticate: "Autenticar con clave de seguridad" security_key_not_allowed_error: "La autenticación de la clave de seguridad fue cancelada o se agotó el tiempo." security_key_no_matching_credential_error: "No se encontraron credenciales que coincidan en la clave de seguridad provista." @@ -1633,6 +1634,7 @@ es: topic_reminder: "{{username}} {{description}}" watching_first_post: "Nuevo tema {{description}}" membership_request_accepted: "Membresía aceptada en «{{group_name}}»" + membership_request_consolidated: "{{count}} solicitudes de membresía abiertas para '{{group_name}}'" group_message_summary: one: "{{count}} mensaje en tu bandeja de {{group_name}}" other: "{{count}} mensajes en tu bandeja de {{group_name}} " @@ -1668,6 +1670,7 @@ es: topic_reminder: "recordatorio de tema" liked_consolidated: "nuevos me gusta" post_approved: "publicación aprobada" + membership_request_consolidated: "nuevas solicitudes de membresía" upload_selector: title: "Agregar imagen" title_with_attachments: "Agregar una imagen o archivo" @@ -1713,6 +1716,7 @@ es: context: user: "Buscar publicaciones de @{{username}}" category: "Buscar la categoría #{{category}}" + tag: "Buscar la etiqueta #{{tag}} " topic: "Buscar en este tema" private_messages: "Buscar en mensajes" advanced: @@ -2425,7 +2429,6 @@ es: email_in_disabled: "La posibilidad de publicar temas nuevos por correo electrónico está deshabilitada en los ajustes del sitio. Para habilitar la publicación de temas nuevos por correo electrónico," email_in_disabled_click: 'activa la opción «correo electrónico»' mailinglist_mirror: "La categoría es el reflejo de una lista de correo" - suppress_from_latest: "Ocultar la categoría de la lista de últimos temas." show_subcategory_list: "Mostrar la lista de subcategorías arriba de la lista de temas en esta categoría." num_featured_topics: "Número de temas que se muestran en la página de categorías:" subcategory_num_featured_topics: "Número de temas destacados a mostrar en la página principal de categorías:" @@ -2797,6 +2800,7 @@ es: changed: "etiquetas cambiadas:" tags: "Etiquetas" choose_for_topic: "etiquetas opcionales" + add_synonyms: "Agregar" delete_tag: "Eliminar etiqueta" delete_confirm: one: "¿Estás seguro de querer borrar esta etiqueta y eliminarla de %{count} tema asignado?" @@ -3071,8 +3075,8 @@ es: no_description: (sin descripción) all_api_keys: Todas las claves de API user_mode: Nivel de usuario - impersonate_all_users: Suplantar cualquier usuari - single_user: "Un usuari" + impersonate_all_users: Suplantar cualquier usuario + single_user: "Un usuario" user_placeholder: Introducir nombre de usuario description_placeholder: "¿Para qué se usará esta clave?" save: Guardar @@ -3321,6 +3325,7 @@ es: color_scheme_select: "Selecciona colores para usar en el tema" custom_sections: "Secciones personalizadas:" theme_components: "Componentes del tema" + add_all_themes: "Agregar todos los temas" convert: "Convertir" convert_component_alert: "¿Estás seguro de que quieres convertir este componente en tema? Se eliminará como componente en %{relatives}." convert_component_tooltip: "Convertir este componente en tema" @@ -3353,6 +3358,7 @@ es: edit_css_html: "Editar CSS/HTML" edit_css_html_help: "No has editado ningún CSS o HTML" delete_upload_confirm: "¿Eliminar este archivo? (¡El tema CSS puede dejar de funcionar!)" + component_on_themes: "Incluir componentes en estos temas" import_web_tip: "Repositorio que contiene el tema" import_web_advanced: "Avanzado..." import_file_tip: "archivo .tar.gz, .zip o .dcstyle.json que contiene un tema" @@ -3666,6 +3672,7 @@ es: api_key_create: "crear clave API" api_key_update: "actualizar clave API" api_key_destroy: "destruir clave API" + override_upload_secure_status: "sobrescribir estado seguro de la subida" screened_emails: title: "Correos bloqueados" description: "Cuando alguien trate de crear una cuenta nueva, los siguientes correos se revisarán y el registro se bloqueará, o se realizará alguna otra acción." diff --git a/config/locales/client.et.yml b/config/locales/client.et.yml index 1592b412d5..7eff5cf5c8 100644 --- a/config/locales/client.et.yml +++ b/config/locales/client.et.yml @@ -2208,6 +2208,7 @@ et: changed: "muudetud sildid:" tags: "Sildid" choose_for_topic: "valikulised sildid" + add_synonyms: "Lisa" delete_tag: "Kustuta silt" rename_tag: "Nimeta silt ümber" rename_instructions: "Vali sildile uus nimi:" diff --git a/config/locales/client.fa_IR.yml b/config/locales/client.fa_IR.yml index 436857e761..8ca02b06fe 100644 --- a/config/locales/client.fa_IR.yml +++ b/config/locales/client.fa_IR.yml @@ -1310,7 +1310,6 @@ fa_IR: second_factor_backup: "ورود با استفاده از یک کد پشتیبان" second_factor_backup_title: "پشتیبان دو عامله" second_factor_backup_description: "لطفا یکی از کدهای پشتیبان را وارد کنید:" - security_key_alternative: "نمی توانید کلید امنیتی خود را پیدا کنید یا می خواهید از روش دیگری استفاده کنید؟" security_key_authenticate: "تأیید اعتبار با کلید امنیتی" security_key_not_allowed_error: "روند تأیید اعتبار کلید امنیتی به پایان رسیده است یا لغو شده است." email_placeholder: "ایمیل یا نام‌کاربری" @@ -2705,6 +2704,7 @@ fa_IR: changed: "برچسب‌های تغییر یافته:" tags: "برچسب‌ها" choose_for_topic: "برچسب‌های اختیاری" + add_synonyms: "افزودن" delete_tag: "حذف برچسب" delete_confirm_no_topics: "ایا از حذف این برچسب مطمعن هستید؟" rename_tag: "تغییر نام برچسب" diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml index 652db0b8d8..fa665dfbaf 100644 --- a/config/locales/client.fi.yml +++ b/config/locales/client.fi.yml @@ -747,6 +747,7 @@ fi: collapse_profile: "Supista" bookmarks: "Kirjanmerkit" bio: "Tietoa minusta" + timezone: "Aikavyöhyke" invited_by: "Kutsuja" trust_level: "Luottamustaso" notifications: "Ilmoitukset" @@ -1334,7 +1335,7 @@ fi: second_factor_backup_description: "Syötä yksi varakoodeistasi:" second_factor: "Kirjaudu tunnistautumissovelluksella" security_key_description: "Kun fyysinen tunnistautumislaite on kätesi ulottuvilla, klikkaa alla olevaa \"Tunnistaudu tunnistautumislaitteella\" -painiketta." - security_key_alternative: "Et löydä tunnistautumislaitetta tai haluat käyttää muuta tapaa?" + security_key_alternative: "Kokeile muuta tapaa" security_key_authenticate: "Tunnistaudu tunnistautumislaitteen avulla" security_key_not_allowed_error: "Tunnistaumislaitteella tunnistautumisprosessi joko vanheni tai peruutettiin." security_key_no_matching_credential_error: "Tunnistautumislaitteelta ei löytynyt kelpaavia pääsytietoja." @@ -1712,6 +1713,7 @@ fi: context: user: "Etsi @{{username}} viestejä" category: "Etsi alueelta #{{category}}" + tag: "Hae tunnistetta #{{tag}}" topic: "Etsi tästä ketjusta" private_messages: "Etsi viesteistä" advanced: @@ -2127,10 +2129,10 @@ fi: one: "Valitse ketju, johon haluat siirtää valitun viestin." other: "Valitse ketju, johon haluat siirtää valitut {{count}} viestiä." move_to_new_message: - title: "Siirrä uuteen keskusteluun" - action: "siirrä uuteen keskusteluun" + title: "Siirrä uuteen yksityiskeskusteluun" + action: "siirrä uuteen yksityiskeskusteluun" message_title: "Uuden keskustelun otsikko" - radio_label: "Uusi keskustelu" + radio_label: "Uusi yksityiskeskustelu" participants: "Osallistujat" instructions: one: "Olet luomassa uutta keskustelua, jossa olisi viesti, jonka olet valinnut." @@ -2424,7 +2426,6 @@ fi: email_in_disabled: "Uusien ketjujen aloittaminen sähköpostitse on otettu pois käytöstä sivuston asetuksissa. Salliaksesi uusien ketjujen luomisen sähköpostilla, " email_in_disabled_click: 'ota käyttöön "email in" asetus.' mailinglist_mirror: "Alue jäljittelee postituslistaa" - suppress_from_latest: "Älä näytä alueen ketjuja Tuoreimmat-näkymässä" show_subcategory_list: "Näytä lista tytäralueista ketjujen yläpuolella tällä alueella." num_featured_topics: "Kuinka monta ketjua näytetään Keskustelualueet-sivulla:" subcategory_num_featured_topics: "Kuinka monta ketjua näytetään emoalueen sivulla:" @@ -2796,6 +2797,7 @@ fi: changed: "muutetut tunnisteet" tags: "Tunnisteet" choose_for_topic: "ei-pakolliset tunnisteet" + add_synonyms: "Lisää" delete_tag: "Poista tunniste" delete_confirm: one: "Haluatko varmasti poistaa tunnisteen, mikä poistaa sen myös yhdeltä ketjulta, jolla tunniste on?" @@ -3658,6 +3660,8 @@ fi: change_theme_setting: "muutti teema-asetusta" disable_theme_component: "otti teemakomponentin käytöstä" enable_theme_component: "otti teemakomponentin käyttöön" + revoke_title: "peru titteli" + change_title: "muuta titteliä" api_key_create: "loi rajapinta-avaimen" api_key_update: "päivitti rajapinta-avainta" api_key_destroy: "tuhosi rajapinta-avaimen" diff --git a/config/locales/client.fr.yml b/config/locales/client.fr.yml index 88a3d76ef8..f7308bae64 100644 --- a/config/locales/client.fr.yml +++ b/config/locales/client.fr.yml @@ -321,9 +321,21 @@ fr: order_by: "Trier par" in_reply_to: "en réponse à" explain: + why: "expliquer pourquoi cet élément s'est retrouvé dans la file d'attente" + title: "Notation révisable" + formula: "Formule" + subtotal: "Sous-total" total: "Total" + min_score_visibility: "Score minimum pour la visibilité" + score_to_hide: "Score pour cacher le message" + take_action_bonus: + name: "intervenu" + title: "Lorsqu'un membre du personnel choisit d'agir, l'indicateur reçoit un bonus." + user_accuracy_bonus: + name: "précision de l’utilisateur" trust_level_bonus: name: "niveau de confiance" + title: "Les éléments révisables créés par les utilisateurs ayant un niveau de confiance plus élevé ont un score plus élevé." claim_help: optional: "Vous pouvez réserver cet élément pour empêcher d'autres de le vérifier." required: "Vous devez réserver des éléments avant des les vérifier." @@ -731,6 +743,7 @@ fr: collapse_profile: "Réduire" bookmarks: "Signets" bio: "À propos de moi" + timezone: "Fuseau horaire" invited_by: "Invité par" trust_level: "Niveau de confiance" notifications: "Notifications" @@ -1217,6 +1230,9 @@ fr: enabled: "Le site est en mode lecture seule. Vous pouvez continer à naviguer, mais les réponses, J'aime et autre interactions sont désactivées pour l'instant." login_disabled: "La connexion est désactivée quand le site est en lecture seule." logout_disabled: "La déconnexion est désactivée quand le site est en lecture seule." + too_few_topics_and_posts_notice: "Commençons la discussion! Il y a / %{currentTopics} sujets et %{currentPosts} messages. Les visiteurs ont besoin de plus à consulter et répondre – %{requiredTopics} sujets et %{requiredPosts} messages sont recommandés. Seul le personnel peut voir ce message." + too_few_topics_notice: "Commençons la discussion! Il y a / %{currentTopics} sujets. Les visiteurs ont besoin de plus à consulter et répondre – %{requiredTopics} sujets sont recommandés. Seul le personnel peut voir ce message." + too_few_posts_notice: "Commençons la discussion! Il y a / %{currentPosts} messages. Les visiteurs ont besoin de plus à consulter et répondre – %{requiredPosts} messages sont recommandés. Seul le personnel peut voir ce message." logs_error_rate_notice: reached_hour_MF: "{relativeAge} – {rate, plural, one {# erreur/heure} other {# erreurs/heure}} arrive à la limite paramétrée de {limit, plural, one {# erreur/heure} other {# erreurs/heure}}." reached_minute_MF: "{relativeAge} – {rate, plural, one {# erreur/minute} other {# erreurs/minute}} arrive à la limite paramétrée de {limit, plural, one {# erreur/minute} other {# erreurs/minute}}." @@ -1317,7 +1333,6 @@ fr: second_factor_backup_description: "Veuillez entrer un de vos codes de secours :" second_factor: "Se connecter avec une application" security_key_description: "Dès que votre clé de sécurité physique est prête, appuyer sur le bouton S'authentifier avec une clé de sécurité ci-dessous." - security_key_alternative: "Vous ne trouvez pas votre clé de sécurité ou voulez utiliser une autre méthode ?" security_key_authenticate: "S'authentifier avec une clé de sécurité" security_key_not_allowed_error: "La procédure d'authentification de la clé de sécurité a expiré ou a été annulée." security_key_no_matching_credential_error: "Aucun identifiant correspondant n'a pu être trouvé dans la clé de sécurité donnée." @@ -1695,6 +1710,7 @@ fr: context: user: "Chercher dans les messages de @{{username}}" category: "Rechercher dans la catégorie #{{category}}" + tag: "Rechercher l'étiquette #{{tag}}" topic: "Rechercher dans ce sujet" private_messages: "Rechercher des messages directs" advanced: @@ -2368,6 +2384,7 @@ fr: manage_tag_groups_link: "Gérer les groupes d'étiquettes ici." allow_global_tags_label: "Permettre aussi d'autres étiquettes" tag_group_selector_placeholder: "(Facultatif) Groupe d'étiquettes" + required_tag_group_description: "Exiger que les nouveaux sujets aient des étiquette à partir d'un groupe d’étiquettes :" min_tags_from_required_group_label: "Nombre d'étiquettes :" required_tag_group_label: "Groupe d'étiquettes :" topic_featured_link_allowed: "Autoriser les liens à la une dans cette catégorie" @@ -2406,7 +2423,6 @@ fr: email_in_disabled: "La possibilité de créer des nouveaux sujets via courriel est désactivé dans les Paramètres. Pour l'activer," email_in_disabled_click: 'activer le paramètre « email in ».' mailinglist_mirror: "La catégorie reflète une liste de diffusion" - suppress_from_latest: "Retirer cette catégorie des sujets récents." show_subcategory_list: "Afficher la liste des sous-catégories au dessus des sujets dans cette catégorie." num_featured_topics: "Nombre de sujets affichés sur la page des catégories :" subcategory_num_featured_topics: "Nombre de sujets à la une sur la page de la catégorie parente :" @@ -2791,6 +2807,7 @@ fr: changed: "étiquettes modifiées :" tags: "Étiquettes" choose_for_topic: "étiquettes optionnelles" + add_synonyms: "Ajouter" delete_tag: "Supprimer l'étiquette" delete_confirm: one: "Êtes-vous sûr de vouloir supprimer cette étiquettes et l'enlever de %{count} sujet auquel elle est assignée ?" @@ -3018,6 +3035,7 @@ fr: membership: automatic: Automatique trust_levels_title: "Niveau de confiance automatiquement attribué lorsque les membres sont ajoutés :" + effects: Effets trust_levels_none: "Aucun" automatic_membership_email_domains: "Les utilisateurs qui s'enregistrent avec un domaine courriel qui correspond exactement à un élément de cette liste seront automatiquement ajoutés à ce groupe :" automatic_membership_retroactive: "Appliquer la même règle de domaine courriel pour les utilisateurs existants" @@ -3056,9 +3074,20 @@ fr: generate: "Générer" revoke: "Révoquer" all_users: "Tous les utilisateurs" + active_keys: "Activer une clé pour l’API" + manage_keys: Gérer les clés show_details: Détails description: Description + all_api_keys: Toutes les clés pour l’API + user_mode: Niveau de l’utilisateur + impersonate_all_users: Usurper l’identité d'un utilisateur + single_user: "Utilisateur unique" + user_placeholder: Saisir un pseudo + description_placeholder: "À quoi servira cette clé ?" save: Sauvegarder + new_key: Nouvelle clé pour l’API + revoked: Révoquée + delete: Supprimer de façon permanente web_hooks: title: "Webhooks" none: "Il n'y a aucun Webhook actuellement." @@ -3641,6 +3670,11 @@ fr: change_theme_setting: "changer le réglage du thème" disable_theme_component: "désactiver le composant de thème" enable_theme_component: "activer le composant de thème" + revoke_title: "révoquer le titre" + change_title: "modifier le titre" + api_key_create: "créer une clé pour l’API" + api_key_update: "mettre à jour une clé pour l’API" + api_key_destroy: "détruire une clé pour l’API" screened_emails: title: "Courriels sous surveillance" description: "Lorsque quelqu'un essaye de créer un nouveau compte, les adresses de courriel suivantes seront vérifiées et l'inscription sera bloquée, ou une autre action sera réalisée." diff --git a/config/locales/client.gl.yml b/config/locales/client.gl.yml index 195b1188ee..1d7ec924f3 100644 --- a/config/locales/client.gl.yml +++ b/config/locales/client.gl.yml @@ -1654,6 +1654,7 @@ gl:

    tagging: + add_synonyms: "Engadir" cancel_delete_unused: "Cancelar" notifications: watching: diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml index 9957b72697..1a3edc2a30 100644 --- a/config/locales/client.he.yml +++ b/config/locales/client.he.yml @@ -827,6 +827,7 @@ he: collapse_profile: "הקטן" bookmarks: "סימניות" bio: "אודותיי" + timezone: "אזור זמן" invited_by: "הוזמנו על ידי" trust_level: "דרגת אמון" notifications: "התראות" @@ -1437,7 +1438,7 @@ he: second_factor_backup_description: "נא להקליד אחד מהקודים לגיבוי שלך:" second_factor: "כניסה עם יישומון אימות" security_key_description: "כשמפתח האבטחה הפיזי שלך מוכן יש ללחוץ על כפתור האימות עם מפתח האבטחה שלהלן." - security_key_alternative: "לא הצלחת למצוא את מפתח האבטחה או שברצונך לנסות שיטה אחרת?" + security_key_alternative: "לנסות דרך אחרת" security_key_authenticate: "אימות עם מפתח אבטחה" security_key_not_allowed_error: "זמן תהליך אימות מפתח האבטחה פג או שבוטל." security_key_no_matching_credential_error: "לא ניתן למצוא פרטי גישה במפתח האבטחה שסופק." @@ -1749,6 +1750,7 @@ he: topic_reminder: "{{username}} {{description}}" watching_first_post: "נושא חדש {{description}}" membership_request_accepted: "התקבלת לחברות בקבוצה ‚{{group_name}}’" + membership_request_consolidated: "{{count}} בקשות חברות פתוחות מול ‚{{group_name}}’" group_message_summary: one: "הודעה {{count}} בתיבת ה{{group_name}} שלך" two: "{{count}} הודעות בתיבת ה{{group_name}} שלך" @@ -1786,6 +1788,7 @@ he: topic_reminder: "תזכורת נושא" liked_consolidated: "לייקים חדשים" post_approved: "פוסט אושר" + membership_request_consolidated: "בקשות חברות חדשות" upload_selector: title: "הוספת תמונה" title_with_attachments: "הוספת תמונה או קובץ" @@ -2608,7 +2611,6 @@ he: email_in_disabled: "אפשרות הפרסום של נושאים חדשים דרך דוא\"ל נוטרלה בהגדרות האתר. כדי לאפשר פרסום באמצעות משלוח דוא\"ל," email_in_disabled_click: 'אפשרו את את ההגדרה "דוא"ל נכנס"' mailinglist_mirror: "קטגוריה שמשקפת רשימת תפוצה" - suppress_from_latest: "הדחקת הקטגוריה מהנושאים האחרונים." show_subcategory_list: "הצגת רשימת קטגוריות משנה מעל נושאים בקטגוריה זו." num_featured_topics: "מספר הנושאים המוצגים בדף הקטגוריות:" subcategory_num_featured_topics: "מספר הנושאים המומלצים בדף קטגוריית ההורה:" @@ -3018,6 +3020,26 @@ he: changed: "תגיות ששונו:" tags: "תגיות" choose_for_topic: "תגיות רשות" + info: "פרטים" + default_info: "תגית זו אינה מוגבלת לקטגוריות כלשהן ואין לה מילים נרדפות." + synonyms: "מילים נרדפות" + synonyms_description: "תגיות אלו תוחלפנה בתגית %{base_tag_name}." + tag_groups_info: + one: 'תגית זו שייכת לקבוצה הזאת: {{tag_groups}}' + two: "תגית זו שייכת לקבוצות האלו: {{tag_groups}}" + many: "תגית זו שייכת לקבוצות האלו: {{tag_groups}}" + other: "תגית זו שייכת לקבוצות האלו: {{tag_groups}}" + category_restrictions: + one: "ניתן להשתמש בה בקטגוריה זו בלבד:" + two: "ניתן להשתמש בה בקטגוריות אלו בלבד:" + many: "ניתן להשתמש בה בקטגוריות אלו בלבד:" + other: "ניתן להשתמש בה בקטגוריות אלו בלבד:" + edit_synonyms: "ניהול מילים נרדפות" + add_synonyms_label: "הוספת מילים נרדפות:" + add_synonyms: "הוספה" + add_synonyms_failed: "לא ניתן להוסיף את התגיות הבאות בתור מילים נרדפות: %{tag_names}. נא לוודא שאין להן מילים נרדפות ושאינן כבר מילים נרדפות של תגית אחרת." + remove_synonym: "הסרת מילה נרדפת" + delete_synonym_confirm: 'למחוק את המילה הנרדפת „%{tag_name}”?' delete_tag: "מחק תגית" delete_confirm: one: "למחוק את התגית הזו ולהסיר אותה מהנושא אליו היא מוקצית?" @@ -3025,6 +3047,11 @@ he: many: "למחוק את התגית הזו ולהסיר אותה מכל {{count}} הנושאים אליהן היא מוקצית?" other: "למחוק את התגית הזו ולהסיר אותה מכל {{count}} הנושאים אליהן היא מוקצית?" delete_confirm_no_topics: "למחוק את התגית הזו?" + delete_confirm_synonyms: + one: "המילה הנרדפת שקשורה אליה תימחקנה גם כן." + two: "{{count}} המילים הנרדפות שקשורות אליה תימחקנה גם כן." + many: "{{count}} המילים הנרדפות שקשורות אליה תימחקנה גם כן." + other: "{{count}} המילים הנרדפות שקשורות אליה תימחקנה גם כן." rename_tag: "שינוי שם לתגית" rename_instructions: "בחרו שם חדש לתגית:" sort_by: "סידור לפי:" @@ -3554,6 +3581,7 @@ he: color_scheme_select: "בחירת צבעים לשימושה של ערכת העיצוב" custom_sections: "אזורים מותאמים אישית:" theme_components: "רכיבי ערכת העיצוב" + add_all_themes: "הוספת כל ערכות העיצוב" convert: "המרה" convert_component_alert: "להמיר את הרכיב הזה לערכת עיצוב? הוא יוסר כרכיב מתוך %{relatives}." convert_component_tooltip: "המרת הרכיב הזה לערכת עיצוב" @@ -3586,6 +3614,9 @@ he: edit_css_html: "עריכת CSS/HTML" edit_css_html_help: "לא ערכתם אף CSS או HTML" delete_upload_confirm: "להסיר העלאה זו? (ערכת נושא CSS עלולה להפסיק לעבוד!)" + component_on_themes: "לכלול רכיבים בערכות הנושא האלו" + included_components: "רכיבים כלולים" + add_all: "להוסיף הכול" import_web_tip: "מאגר שמכיל ערכת עיצוב" import_web_advanced: "מתקדם…" import_file_tip: "קובץ ‎.tar.gz,‏ ‎.zip,‏ או ‎.dcstyle.json שמכיל ערכת עיצוב" @@ -3901,6 +3932,7 @@ he: api_key_create: "נוצר מפתח api" api_key_update: "עודכן מפתח api" api_key_destroy: "הושמד מפתח api" + override_upload_secure_status: "דריסת מצב העלאה בטוח" screened_emails: title: "הודעות דואר מסוננות" description: "כשמישהו מנסה ליצור חשבון חדש, כתובות הדואר האלקטרוני הבאות ייבדקו וההרשמה תחסם או שיבוצו פעולות אחרות." diff --git a/config/locales/client.hu.yml b/config/locales/client.hu.yml index 64fb35ad9a..659867f6c4 100644 --- a/config/locales/client.hu.yml +++ b/config/locales/client.hu.yml @@ -2280,6 +2280,7 @@ hu: selector_no_tags: "címke nélküli" tags: "Címkék" choose_for_topic: "Megadható címke" + add_synonyms: "Hozzáadás" delete_tag: "Címke törlése" delete_confirm_no_topics: "Biztos vagy benne hogy elakarod távolítani ezt a címkét?" rename_tag: "Címke átnevezése" diff --git a/config/locales/client.hy.yml b/config/locales/client.hy.yml index 177e1608ab..1a1b6539d3 100644 --- a/config/locales/client.hy.yml +++ b/config/locales/client.hy.yml @@ -2175,7 +2175,6 @@ hy: email_in_disabled: "Էլ. փոստի միջոցով նոր թեմաների հրապարակումը անջատված է Կայքի Կարգավորումներում: Էլ. փոստի միջոցով նոր թեմաների հրապարակումը միացնելու համար, " email_in_disabled_click: 'միացրեք "email in" կարգավորումը:' mailinglist_mirror: "Կատեգորիան արտապատճենում է փոստային ցուցակ" - suppress_from_latest: "Թաքցնել կատեգորիան վերջին թեմաներից:" show_subcategory_list: "Այս կատեգորիայում ցուցադրել ենթակատեգորիաների ցանկը թեմաների վերևում:" num_featured_topics: "Կատեգորիաների էջում ցուցադրվող թեմաների քանակը՝" subcategory_num_featured_topics: "Մայր կատեգորիայի էջում հանրահայտ թեմաների քանակը" @@ -2529,6 +2528,7 @@ hy: changed: "փոփոխված թեգերը՝ " tags: "Թեգեր" choose_for_topic: "ընտրովի թեգեր" + add_synonyms: "Ավելացնել" delete_tag: "Ջնջել Թեգը" delete_confirm: one: "Դուք համոզվա՞ծ եք, որ ցանկանում եք ջնջել այս թեգը և հեռացնել այն %{count} թեմայից, որին այն վերագրված է:" diff --git a/config/locales/client.id.yml b/config/locales/client.id.yml index 924724e0b8..23270c767d 100644 --- a/config/locales/client.id.yml +++ b/config/locales/client.id.yml @@ -1095,6 +1095,7 @@ id:

    tagging: + add_synonyms: "Menambahkan" sort_by_name: "nama" cancel_delete_unused: "Batal" notifications: diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml index 55261501d3..27108b25dc 100644 --- a/config/locales/client.it.yml +++ b/config/locales/client.it.yml @@ -747,6 +747,7 @@ it: collapse_profile: "Raggruppa" bookmarks: "Segnalibri" bio: "Su di me" + timezone: "Fuso orario" invited_by: "Invitato Da" trust_level: "Livello Esperienza" notifications: "Notifiche" @@ -2405,7 +2406,6 @@ it: email_in_disabled: "Le Impostazioni Sito non permettono di creare nuovi argomenti via email. Per abilitare la creazione di argomenti via email," email_in_disabled_click: 'abilita l''impostazione "email entrante".' mailinglist_mirror: "La categoria si comporta come una mailing list" - suppress_from_latest: "Nascondi la categoria dagli argomenti recenti." show_subcategory_list: "Mostra la lista delle sottocategorie sopra agli argomenti in questa categoria." num_featured_topics: "Numero degli argomenti mostrati nella pagina categorie:" subcategory_num_featured_topics: "Numero degli argomenti in evidenza nella pagina della categoria superiore" @@ -2770,6 +2770,7 @@ it: changed: "etichette cambiate:" tags: "Etichette" choose_for_topic: "etichette facoltative" + add_synonyms: "Aggiungi" delete_tag: "Cancella Etichetta" delete_confirm: one: "Sei sicuro di voler eliminare questa etichetta e rimuoverla da %{count} argomento a cui è assegnata?" diff --git a/config/locales/client.ja.yml b/config/locales/client.ja.yml index dfa1fcd9a7..dfd1a99f4b 100644 --- a/config/locales/client.ja.yml +++ b/config/locales/client.ja.yml @@ -168,6 +168,7 @@ ja: submit: "送信" generic_error: "申し訳ありません、エラーが発生しました。" generic_error_with_reason: "エラーが発生しました: %{error}" + go_ahead: "どうぞ" sign_up: "アカウントを作成" log_in: "ログイン" age: "経過" @@ -184,6 +185,7 @@ ja: privacy: "プライバシー" tos: "利用規約" rules: "ルール" + conduct: "行動範囲" mobile_view: "モバイル表示" desktop_view: "デスクトップ表示" you: "あなた" @@ -292,8 +294,13 @@ ja: order_by: "順" in_reply_to: "こちらへの回答" explain: + why: "このアイテムが、キューに入れられた理由を教えて下さい" + title: "レビュー可能な得点" + formula: "式" subtotal: "小計" total: "合計" + min_score_visibility: "表示の最小スコア" + score_to_hide: "投稿を非表示にするスコア" trust_level_bonus: name: "トラストレベル" claim: @@ -344,6 +351,7 @@ ja: edit: "編集" save: "保存" cancel: "キャンセル" + new_topic: "このアイテムを承認すると新しいトピックが作成されます" filters: all_categories: "(すべてのカテゴリ)" type: @@ -355,8 +363,10 @@ ja: category: "カテゴリ" orders: priority: "優先度" + priority_asc: "優先度(逆順)" created_at: "作られた" priority: + title: "最小の優先度" medium: "普通" high: "高い" conversation: @@ -366,6 +376,8 @@ ja: date: "日付" type: "タイプ" status: "ステータス" + submitted_by: "投稿者:" + reviewed_by: "レビューアー:" statuses: pending: title: "保留中" @@ -466,6 +478,7 @@ ja: empty: posts: "このグループのメンバーによる投稿はありません。" members: "このグループにはメンバーがいません。" + requests: "このグループへのメンバーシップリクエストはありません" mentions: "このグループに対するメンションはありません。" messages: "このグループへのメッセージはありません。" topics: "このグループのメンバーによるトピックはありません。" @@ -520,6 +533,7 @@ ja: remove_owner: "オーナーから削除" remove_owner_description: "%{username} をこのグループから削除します" owner: "オーナー" + forbidden: "メンバーの閲覧は許可されていません" topics: "トピック" posts: "投稿" mentions: "メンション" @@ -532,6 +546,7 @@ ja: only_admins: "管理者のみ" mods_and_admins: "管理者とモデレータのみ" members_mods_and_admins: "管理者、モデレータ、グループメンバーのみ" + owners_mods_and_admins: "管理者、モデレータ、グループメンバーのみ" everyone: "だれでも" notifications: watching: @@ -629,6 +644,7 @@ ja: private_messages: "メッセージ" user_notifications: ignore_duration_username: "ユーザー名" + ignore_duration_when: "期間:" ignore_duration_save: "無視する" ignore_no_users: "無視するユーザーはいません。" ignore_option: "無視する" @@ -641,6 +657,7 @@ ja: collapse_profile: "折りたたむ" bookmarks: "ブックマーク" bio: "自己紹介" + timezone: "タイムゾーン" invited_by: "招待した人: " trust_level: "トラストレベル" notifications: "お知らせ" @@ -659,6 +676,7 @@ ja: dismiss_notifications: "すべて既読にする" dismiss_notifications_tooltip: "全ての未読の通知を既読にします" first_notification: "最初の通知です! 始めるために選択してください。" + dynamic_favicon: "ブラウザのアイコンに件数を表示する" theme_default_on_all_devices: "これをすべてのデバイスのデフォルトテーマにする" text_size_default_on_all_devices: "これをすべての端末のデフォルトのテキストサイズにする" allow_private_messages: "他のユーザーが私にパーソナルメッセージを送信できるようにする" @@ -703,6 +721,7 @@ ja: watched_first_post_tags_instructions: "これらのタグの新規トピック内の新規投稿は通知されます。" muted_categories: "通知しない" muted_categories_instructions: "これらのカテゴリの新しいトピックについては通知されず、カテゴリや最新のページにも表示されません。" + muted_categories_instructions_dont_hide: "グループ内の新規トピックについては何も通知されません。" no_category_access: "モデレータとしてカテゴリーへのアクセスが制限されたので、保存できませんでした。" delete_account: "アカウントを削除する" delete_account_confirm: "アカウントを削除してもよろしいですか?削除されたアカウントは復元できません。" @@ -770,6 +789,7 @@ ja: copied_to_clipboard: "クリップボードにコピーしました" copy_to_clipboard_error: "クリップボードにコピーする際にエラーが発生しました" remaining_codes: "{{count}} 個のバックアップコードが残っています。" + use: "バックアップコードを使用" codes: title: "バックアップコードが作られました" second_factor: @@ -2281,6 +2301,7 @@ ja: changed: "タグを変更しました:" tags: "タグ" choose_for_topic: "タグ(オプション)" + add_synonyms: "追加" delete_tag: "タグを削除" rename_tag: "タグの名前を変更" rename_instructions: "このタグの新しい名前を選択:" diff --git a/config/locales/client.ko.yml b/config/locales/client.ko.yml index 3518156931..0cce98c131 100644 --- a/config/locales/client.ko.yml +++ b/config/locales/client.ko.yml @@ -605,6 +605,7 @@ ko: expand_profile: "확장" bookmarks: "북마크" bio: "내 소개" + timezone: "시간대" invited_by: "(이)가 초대했습니다." trust_level: "신뢰도" notifications: "알림" @@ -2248,6 +2249,7 @@ ko: changed: "바뀐 태그:" tags: "태그" choose_for_topic: "선택적 태그" + add_synonyms: "추가" delete_tag: "태그 삭제" delete_confirm: other: "정말로 이 태그를 삭제하고 이 태그가 붙은 {{count}} 개의 토픽에서 태그를 제거할까요?" diff --git a/config/locales/client.lt.yml b/config/locales/client.lt.yml index d1ab576108..a1f7eb0bf0 100644 --- a/config/locales/client.lt.yml +++ b/config/locales/client.lt.yml @@ -2251,6 +2251,7 @@ lt: selector_all_tags: "visos žymos" selector_no_tags: "nėra žymų" tags: "Žymos" + add_synonyms: "Pridėti" delete_tag: "Ištrinti žymą" rename_tag: "Pervadinti žymą" sort_by: "Rūšiuoti pagal:" diff --git a/config/locales/client.lv.yml b/config/locales/client.lv.yml index aa86cbf88b..1fd2cb6b69 100644 --- a/config/locales/client.lv.yml +++ b/config/locales/client.lv.yml @@ -124,6 +124,9 @@ lv: topic_html: 'Temats: %{topicTitle}' post: "ieraksts #%{postNumber}" close: "aizvērt" + twitter: "Dalīties ar šo saiti Twitter" + facebook: "Dalīties ar šo saiti Facebook" + email: "Nosūtīt šo saiti e-pastā" action_codes: public_topic: "padarīja tēmu publisku %{when}" split_topic: "sadalīja šo tēmu %{when}" @@ -211,6 +214,8 @@ lv: every_hour: "katru stundu" daily: "katru dienu" weekly: "katru nedēļu" + every_month: "katru mēnesi" + every_six_months: "katrus sešus mēnešus" max_of_count: "ne vairāk kā {{count}}" alternation: "vai" character_count: @@ -278,13 +283,17 @@ lv: placeholder: "ierakstiet tēmas nosaukumu šeit" review: order_by: "Kārtot pēc" + explain: + total: "Kopā" delete: "Dzēst" settings: saved: "Saglabāts" save_changes: "Saglabāt izmaiņas" title: "Iestatījumi" + view_all: "Skatīt visus" topic: "Tēma:" filtered_user: "Lietotājs" + show_all_topics: "rādīt visas tēmas" deleted_post: "(ieraksts dzēsts)" deleted_user: "(lietotājs dzēsts)" user: @@ -307,6 +316,7 @@ lv: orders: priority: "Prioritāte" scores: + date: "Datums" status: "Statuss" statuses: pending: @@ -403,12 +413,14 @@ lv: allow_membership_requests: "Ļauj lietotājiem sūtīt dalības pieprasījumus grupu īpašniekiem" membership: "Piederība" name: "Vārds" + group_name: "Grupas nosaukums" user_count: "Lietotāji" bio: "Par grupu" selector_placeholder: "ievadi lietotājvārdu" owner: "īpašnieks" index: title: "Grupas" + all: "Visas grupas" empty: "Nav redzamu grupu." automatic: "Automātiski" closed: "Slēgts" @@ -532,6 +544,7 @@ lv: activity_stream: "Aktivitāte" preferences: "Iestatījumi" expand_profile: "Paplašināt" + collapse_profile: "Sakļaut" bookmarks: "Grāmatzīmes" bio: "Par mani" invited_by: "Uzaicināja" @@ -647,6 +660,7 @@ lv: copy_to_clipboard_error: "Radās kļūda, kopējot uz starpliktuvi (clipboard)" second_factor: name: "Vārds" + label: "Kods" edit: "Labot" security_key: delete: "Dzēst" @@ -724,7 +738,11 @@ lv: website: "Tīmekļa vietne" email_settings: "E-pasts" text_size: + title: "Teksta izmērs" + smaller: "Mazāks" normal: "Normāls" + larger: "Lielāks" + largest: "Lielākais" like_notification_frequency: title: "Paziņot, ja saņemta atzinība" always: "Vienmēr" @@ -741,6 +759,8 @@ lv: every_hour: "katru stundu" daily: "katru dienu" weekly: "katru nedēļu" + every_month: "katru mēnesi" + every_six_months: "katrus sešus mēnešus" email_level: title: "Sūtīt man e-pastu, kad kāds citē mani, atbild manam ierakstam, piemin manu @lietotājvārdu vai ielūdz mani kādā tēmā" always: "vienmēr" @@ -943,6 +963,7 @@ lv: disable: "Rādīt dzēstos ierakstus" private_message_info: title: "Ziņa" + edit: "Pievienot vai noņemt..." remove_allowed_user: "Vai jūs tiešām gribat dzēst {{name}} no šīs ziņas?" remove_allowed_group: "Vai jūs tiešām gribat dzēst {{name}} no šīs ziņas?" email: "E-pasts" @@ -1009,11 +1030,17 @@ lv: name: "Twitter" title: "ar Twitter" instagram: + name: "Instagram" title: "ar Instagram" facebook: + name: "Facebook" title: "ar Facebook" github: + name: "GitHub" title: "ar GitHub" + discord: + name: "Discord" + title: "ar Discord" invites: accept_title: "Ielūgums" welcome_to: "Laipni lūdzam %{site_name}!" @@ -1050,6 +1077,7 @@ lv: emoji_picker: filter_placeholder: Meklēt emoji objects: Priekšmeti + symbols: Simboli flags: Sūdzības custom: Lietotāja emoji recent: Nesen izmantotie @@ -1619,6 +1647,8 @@ lv: zero: "apslēpt {{count}} slēptās atbildes" one: "aplūjot %{count} slēpto atbildi" other: "aplūkot {{count}} slēptās atbildes" + notice: + new_user: "Šis ir pirmais {{user}} ieraksts — sagaidīsim viņu mūsu kopienā!" unread: "Ieraksts nav lasīts" has_replies: zero: "{{count}} atbildes" @@ -2116,6 +2146,7 @@ lv: selector_no_tags: "bez tagiem" changed: "mainītie tagi:" tags: "Tagi" + add_synonyms: "Pievienot" delete_tag: "Dzēst tagu" rename_tag: "Pārsaukt tagu" rename_instructions: "Izvēlēties jaunu nosaukumu tagam:" @@ -2455,6 +2486,7 @@ lv: color_scheme_select: "Izvēlieties krāsas, kuras lietos šis dizains" custom_sections: "Specifiskas sadaļas:" theme_components: "Dizaina komponenti" + collapse: Sakļaut uploads: "Augšupielādes" no_uploads: "Jūs varat augšupielādēt resursus, kas ir saistīti ar jūsu dizainu, piemēram, fontus un attēlus" add_upload: "Pievienot augšupielādējamu resursu" diff --git a/config/locales/client.nb_NO.yml b/config/locales/client.nb_NO.yml index ba31f8401f..ebfaf94fab 100644 --- a/config/locales/client.nb_NO.yml +++ b/config/locales/client.nb_NO.yml @@ -2069,7 +2069,6 @@ nb_NO: email_in_disabled: "Publisering av nye emner via e-post er deaktivert i innstillingene for nettstedet. For å aktivere publisering av nye emner via e-post," email_in_disabled_click: 'aktiver innstillingen "e-post inn".' mailinglist_mirror: "Kategorien gjenspeiler en e-postliste" - suppress_from_latest: "Utelat denne kategorien fra siste emner." show_subcategory_list: "Plasser listen over underkategorien i toppen av emner i denne kategorien." num_featured_topics: "Antall emner som skal vises på kategori-siden:" subcategory_num_featured_topics: "Antall fremhevede emner på hovedkategoriens side:" @@ -2415,6 +2414,7 @@ nb_NO: changed: "stikkord endret:" tags: "Stikkord" choose_for_topic: "valgfrie stikkord" + add_synonyms: "Legg til" delete_tag: "Slett stikkord" delete_confirm: one: "Er du sikker på at du ønsker å slette dette stikkordet og fjerne det fra emnet det er tilknyttet?" diff --git a/config/locales/client.nl.yml b/config/locales/client.nl.yml index 520aa7020a..7c52cd95d2 100644 --- a/config/locales/client.nl.yml +++ b/config/locales/client.nl.yml @@ -265,7 +265,7 @@ nl: remove: "Bladwijzer verwijderen" confirm_clear: "Weet u zeker dat u alle bladwijzers van dit topic wilt verwijderen?" drafts: - resume: "Doorgaan" + resume: "Hervatten" remove: "Verwijderen" new_topic: "Nieuw-topicconcept" new_private_message: "Nieuw-privéberichtconcept" @@ -747,6 +747,7 @@ nl: collapse_profile: "Samenvouwen" bookmarks: "Favorieten" bio: "Over mij" + timezone: "Tijdzone" invited_by: "Uitgenodigd door" trust_level: "Vertrouwensniveau" notifications: "Meldingen" @@ -975,7 +976,7 @@ nl: connect: "Verbinden" revoke: "Intrekken" cancel: "Annuleren" - not_connected: "(niet verbonden)" + not_connected: "(niet gekoppeld)" confirm_modal_title: "%{provider}-account koppelen" confirm_description: account_specific: "Uw %{provider}-account '%{account_description}' wordt voor authenticatie gebruikt." @@ -1314,7 +1315,7 @@ nl: button_help: "Help" email_login: link_label: "Een koppeling voor aanmelding e-mailen" - button_label: "Met e-mail" + button_label: "via e-mail" complete_username: "Als een account overeenkomt met de gebruikersnaam %{username}, zou u spoedig een e-mail met een koppeling voor aanmelding moeten ontvangen." complete_email: "Als een account overeenkomt met %{email}, zou u spoedig een e-mail met een koppeling voor aanmelding moeten ontvangen." complete_username_found: "We hebben een account gevonden die overeenkomt met de gebruikersnaam %{username}. U zou spoedig een e-mail met een koppeling voor aanmelding moeten ontvangen." @@ -1335,7 +1336,7 @@ nl: second_factor_backup_description: "Voer een van uw back-upcodes in:" second_factor: "Aanmelden met authenticator-app" security_key_description: "Houd uw fysieke beveiligingssleutel gereed en klik op de onderstaande knop Authenticeren met beveiligingssleutel." - security_key_alternative: "Uw beveiligingssleutel niet gevonden of een andere methode gebruiken?" + security_key_alternative: "Andere manier proberen" security_key_authenticate: "Authenticeren met beveiligingssleutel" security_key_not_allowed_error: "Het authenticatieproces van de beveiligingssleutel had een time-out of is geannuleerd." security_key_no_matching_credential_error: "Geen referenties gevonden in de opgegeven beveiligingssleutel." @@ -1416,8 +1417,8 @@ nl: categories_with_featured_topics: "Categorieën met aanbevolen topics" categories_and_latest_topics: "Categorieën en nieuwste topics" categories_and_top_topics: "Categorieën en toptopics" - categories_boxes: "Boxjes met subcategorieën" - categories_boxes_with_topics: "Boxjes met aanbevolen topics" + categories_boxes: "Vakken met subcategorieën" + categories_boxes_with_topics: "Vakken met aanbevolen topics" shortcut_modifier_key: shift: "Shift" ctrl: "Ctrl" @@ -1633,6 +1634,7 @@ nl: topic_reminder: "{{username}} {{description}}" watching_first_post: "Nieuw Topic {{description}}" membership_request_accepted: "Lidmaatschap geaccepteerd in '{{group_name}}'" + membership_request_consolidated: "{{count}} open lidmaatschapsaanvragen voor '{{group_name}}'" group_message_summary: one: "{{count}} bericht in uw Postvak IN voor {{group_name}}" other: "{{count}} berichten in uw Postvak IN voor {{group_name}}" @@ -1668,6 +1670,7 @@ nl: topic_reminder: "topic-herinnering" liked_consolidated: "nieuwe likes" post_approved: "bericht goedgekeurd" + membership_request_consolidated: "nieuwe lidmaatschapsaanvragen" upload_selector: title: "Een afbeelding toevoegen" title_with_attachments: "Een afbeelding of bestand toevoegen" @@ -1713,6 +1716,7 @@ nl: context: user: "Berichten van @{{username}} doorzoeken" category: "De categorie #{{category}} doorzoeken" + tag: "De tag #{{tag}} doorzoeken" topic: "Dit topic doorzoeken" private_messages: "Berichten doorzoeken" advanced: @@ -2425,7 +2429,6 @@ nl: email_in_disabled: "Het plaatsen van nieuwe topics via e-mail is uitgeschakeld in de webite-instellingen. Om het plaatsen van nieuwe topics via e-mail mogelijk te maken, " email_in_disabled_click: 'schakelt u de instelling ''e-mail in'' in.' mailinglist_mirror: "Categorie weerspiegelt een mailinglijst" - suppress_from_latest: "Categorie bij nieuwste topics onderdrukken" show_subcategory_list: "Subcategorielijsten boven topics tonen in deze categorie" num_featured_topics: "Aantal getoonde topics op de categoriepagina:" subcategory_num_featured_topics: "Aantal aanbevolen topics op pagina van bovenliggende categorie:" @@ -2797,6 +2800,7 @@ nl: changed: "gewijzigde tags:" tags: "Tags" choose_for_topic: "optionele tags" + add_synonyms: "Toevoegen" delete_tag: "Tag verwijderen" delete_confirm: one: "Weet u zeker dat u deze tag wilt verwijderen en loskoppelen van %{count} topic waaraan deze is toegewezen?" @@ -3321,6 +3325,7 @@ nl: color_scheme_select: "Kleuren die door thema worden gebruikt selecteren" custom_sections: "Aangepaste secties:" theme_components: "Themaonderdelen" + add_all_themes: "Alle thema's toevoegen" convert: "Converteren" convert_component_alert: "Weet u zeker dat u dit onderdeel naar een thema wilt converteren? Het wordt als onderdeel van %{relatives} verwijderd." convert_component_tooltip: "Dit onderdeel naar een thema converteren" @@ -3353,6 +3358,7 @@ nl: edit_css_html: "CSS/HTML bewerken" edit_css_html_help: "U hebt geen CSS of HTML bewerkt" delete_upload_confirm: "Deze upload verwijderen? (Thema-CSS zou kunnen stoppen met werken!)" + component_on_themes: "Onderdeel voor deze thema's bijvoegen" import_web_tip: "Repository die thema bevat" import_web_advanced: "Geavanceerd..." import_file_tip: ".tar.gz-, .zip- of .dcstyle.json-bestand dat thema bevat" @@ -3666,6 +3672,7 @@ nl: api_key_create: "api-sleutel maken" api_key_update: "api-sleutel bijwerken" api_key_destroy: "api-sleutel verwijderen" + override_upload_secure_status: "status beveiligd uploaden negeren" screened_emails: title: "Gecontroleerde e-mails" description: "Als iemand een nieuwe account probeert aan te maken, worden de volgende e-mailadressen gecontroleerd en de registratie geblokkeerd, of een andere actie uitgevoerd." diff --git a/config/locales/client.pl_PL.yml b/config/locales/client.pl_PL.yml index f3a79167a3..c16b3eb05d 100644 --- a/config/locales/client.pl_PL.yml +++ b/config/locales/client.pl_PL.yml @@ -816,6 +816,7 @@ pl_PL: collapse_profile: "Zwiń" bookmarks: "Zakładki" bio: "O mnie" + timezone: "Strefa czasowa" invited_by: "Zaproszono przez" trust_level: "Poziom zaufania" notifications: "Powiadomienia" @@ -1005,6 +1006,8 @@ pl_PL: uploaded_avatar_empty: "Dodaj zwyczajny obrazek" upload_title: "Wyślij swoją grafikę" image_is_not_a_square: "Uwaga: grafika została przycięta ponieważ jej wysokość i szerokość nie były równe. " + change_profile_background: + title: "Nagłówek profilu" change_card_background: title: "Tło karty użytkownika" instructions: "Tło karty użytkownika est wycentrowane i posiada domyślną szerokość 590px." @@ -1401,7 +1404,7 @@ pl_PL: second_factor_backup_title: "Kod zapasowy weryfikacji dwuskładnikowej" second_factor_backup_description: "Proszę wprowadź jeden ze swoich zapasowych kodów:" second_factor: "Zaloguj się przy użyciu aplikacji Authenticator" - security_key_alternative: "Nie możesz znaleźć swojego klucza bezpieczeństwa lub chcesz użyć innej metody?" + security_key_alternative: "Spróbuj w inny sposób" security_key_authenticate: "Uwierzytelnij się za pomocą klucza bezpieczeństwa" security_key_not_allowed_error: "Upłynął limit czasu procesu uwierzytelniania klucza bezpieczeństwa lub został on anulowany." email_placeholder: "adres email lub nazwa użytkownika" @@ -2040,8 +2043,8 @@ pl_PL: "2_4": "Widzisz ilość nowych odpowiedzi, ponieważ wypowiedziałeś się w tym wątku." "2_2": "Widzisz ilość nowych odpowiedzi, ponieważ śledzisz ten wątek." "2": 'Widzisz ilość nowych odpowiedzi, ponieważ przeczytałeś ten wątek.' - "1_2": "Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." - "1": "Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." + "1_2": "Otrzymasz powiadomienie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." + "1": "Otrzymasz powiadomienie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." "0_7": "Ignorujesz wszystkie powiadomienia z tej kategorii." "0_2": "Ignorujesz wszystkie powiadomienia w tym temacie." "0": "Ignorujesz wszystkie powiadomienia w tym temacie." @@ -2053,16 +2056,16 @@ pl_PL: description: "Dostaniesz powiadomienie o każdym nowym wpisie w tym temacie. Liczba nowych wpisów pojawi się obok jego tytułu na liście wiadomości." tracking_pm: title: "Śledzenie" - description: "Licznik nowych wpisów pojawi się obok tej dyskusji. Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." + description: "Licznik nowych odpowiedzi zostanie pokazany dla tej wiadomości. Otrzymasz powiadomienie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." tracking: title: "Śledzenie" - description: "Licznik nowych odpowiedzi pojawi się obok tytułu tego tematu. Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." + description: "Licznik nowych odpowiedzi zostanie pokazany dla tego tematu. Otrzymasz powiadomienie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." regular: title: "Normalny" - description: "Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." + description: "Otrzymasz powiadomienie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." regular_pm: title: "Normalny" - description: "Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." + description: "Otrzymasz powiadomienie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." muted_pm: title: "Wyciszono" description: "Nie będziesz otrzymywać powiadomień dotyczących tej dyskusji." @@ -2295,7 +2298,7 @@ pl_PL: many: "pokaż {{count}} ukrytych odpowiedzi" other: "pokaż {{count}} ukrytych odpowiedzi" notice: - new_user: "To pierwszy raz gdy {{user}}coś opublikował - witamy go w naszej społeczności!" + new_user: "{{user}} opublikował(a) coś po raz pierwszy - powitajmy tę osobę w naszej społeczności!" returning_user: "Minęło trochę czasu, odkąd widzieliśmy {{user}} - jego ostatni post był {{time}}." unread: "Nieprzeczytany wpis" has_replies: @@ -2411,6 +2414,12 @@ pl_PL: notify_user: "Wysłano wiadomość do tego użytkownika" bookmark: "Dodano zakładkę w tym wpisie" like: "Lajkujesz ten wpis" + delete: + confirm: + one: "Czy na pewno chcesz usunąć ten post?" + few: "Czy na pewno chcesz usunąć te {{count}} posty?" + many: "Czy na pewno chcesz usunąć te {{count}} postów? " + other: "Czy na pewno chcesz usunąć te {{count}} postów?" merge: confirm: one: "Czy na pewno chcesz połączyć te posty?" @@ -2453,14 +2462,19 @@ pl_PL: can: "może… " none: "(brak kategorii)" all: "Wszystkie kategorie" + choose: "kategoria…" edit: "Edytuj" + edit_dialog_title: "Edytuj: %{categoryName}" view: "Pokaż Tematy w Kategorii" general: "Ogólne" settings: "Ustawienia" topic_template: "Szablon tematu" tags: "Tagi" + tags_allowed_tags: "Zabroń następujących tagów w tej kategorii: " + tags_allowed_tag_groups: "Zabroń następujących grup tagów w tej kategorii:" tags_placeholder: "(Opcjonalnie) lista dozwolonych tagów" tag_groups_placeholder: "(Opcjonalnie) lista dozwolonych grup tagów" + allow_global_tags_label: "Zezwól dodatkowo na inne tagi" topic_featured_link_allowed: "Zezwól na wybrane linki w tej kategorii" delete: "Usuń kategorię" create: "Nowa kategoria" @@ -2521,7 +2535,7 @@ pl_PL: description: "Będziesz automatycznie śledzić wszystkie nowe tematy w tych kategoriach. Dostaniesz powiadomienie, gdy ktoś ci odpowie lub wspomni twoją @nazwę. Zobaczysz również liczbę odpowiedzi." regular: title: "Normalny" - description: "Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." + description: "Otrzymasz powiadomienie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." muted: title: "Wyciszone" description: "Nie otrzymasz powiadomień o nowych tematach w tych kategoriach. Nie pojawią się na liście nieprzeczytanych." @@ -2531,6 +2545,7 @@ pl_PL: ignore: "Ignoruj" low: "Niski" high: "Wysoki" + very_high: "Bardzo wysoki" sort_options: default: "domyślny" likes: "Polubienia" @@ -2550,6 +2565,7 @@ pl_PL: boxes_with_featured_topics: "Ramki z wybranymi tematami" settings_sections: general: "Ogólne" + moderation: "Moderacja" email: "Email" flagging: title: "Dziękujemy za pomoc w utrzymaniu porządku w naszej społeczności!" @@ -2760,7 +2776,13 @@ pl_PL: readonly: "przeglądać" lightbox: download: "pobierz" + close: "Zamknij (Esc)" keyboard_shortcuts_help: + shortcut_key_delimiter_comma: "," + shortcut_key_delimiter_plus: "+" + shortcut_delimiter_or: "%{shortcut1} lub %{shortcut2}" + shortcut_delimiter_slash: "%{shortcut1}/%{shortcut2}" + shortcut_delimiter_space: "%{shortcut1}%{shortcut2}" title: "Skróty klawiszowe" jump_to: title: "Skocz do" @@ -2773,6 +2795,7 @@ pl_PL: bookmarks: "%{shortcut} Zakładki" profile: "%{shortcut} Profil" messages: "%{shortcut} Wiadomości" + drafts: "%{shortcut} szkice" navigation: title: "Nawigacja" jump: "%{shortcut} idź do postu #" @@ -2780,6 +2803,7 @@ pl_PL: up_down: "%{shortcut} Przesuń zaznaczenie ↑ ↓" open: "%{shortcut} Otwórz wybrany temat" next_prev: "%{shortcut} Następna/poprzednia sekcja" + go_to_unread_post: "%{shortcut} Idź do pierwszego nieprzeczytanego wpisu" application: title: "Aplikacja" create: "%{shortcut} utwórz nowy temat" @@ -2792,6 +2816,10 @@ pl_PL: dismiss_new_posts: "%{shortcut} wyczyść listę wpisów" dismiss_topics: "%{shortcut} wyczyść listę tematów" log_out: "%{shortcut} Wyloguj" + composing: + title: "Komponowanie" + return: "%{shortcut} Powróć do kompozytora" + fullscreen: "%{shortcut} Pełnoekranowy kompozytor" actions: title: "Akcje" bookmark_topic: "%{shortcut} dodaj/usuń zakładkę na temat" @@ -2812,6 +2840,7 @@ pl_PL: mark_tracking: "%{shortcut} śledź temat" mark_watching: "%{shortcut} Obserwuj wątek" print: "%{shortcut} Drukuj temat" + defer: "%{shortcut} Odrocz wątek" badges: earned_n_times: one: "Otrzymano tą odznakę %{count} raz" @@ -2840,6 +2869,7 @@ pl_PL: other: "%{count} przyznanych" select_badge_for_title: Wybierz odznakę do użycia jako twój tytuł none: "(brak)" + successfully_granted: "Przyznano %{badge} użytkownikowi %{username}" badge_grouping: getting_started: name: Pierwsze kroki @@ -2862,12 +2892,20 @@ pl_PL:

    tagging: all_tags: "Wszystkie tagi" + other_tags: "Inne tagi" selector_all_tags: "wszystkie tagi" selector_no_tags: "brak tagów" changed: "zmienione tagi:" tags: "Tagi" choose_for_topic: "tagi opcjonalne" + add_synonyms: "Dodaj" delete_tag: "Usuń Tag" + delete_confirm: + one: "Czy na pewno chcesz usunąć ten tag i usunąć go z %{count} wątku, do którego jest przypisany?" + few: "Czy na pewno chcesz usunąć ten tag i usunąć go z {{count}} wątków, do których jest przypisany?" + many: "Czy na pewno chcesz usunąć ten tag i usunąć go z {{count}} wątków, do których jest przypisany?" + other: "Czy na pewno chcesz usunąć ten tag i usunąć go z {{count}} wątków, do których jest przypisany?" + delete_confirm_no_topics: "Czy na pewno chcesz usunąć ten tag?" rename_tag: "Zmień nazwę taga" rename_instructions: "Wybierz nową nazwę dla tego taga:" sort_by: "Sortuj po:" @@ -2875,6 +2913,22 @@ pl_PL: sort_by_name: "nazwa" manage_groups: "Zarządzaj grupą tagów" manage_groups_description: "Definiowanie grup do organizowania tagów" + upload: "Wgraj tagi" + upload_description: "Wczytaj plik .csv, by utworzyć wiele tagów naraz" + upload_instructions: "Jeden na linię, opcjonalnie z grupą tagu, w formacie \"nazwa_tagu,grupa_tagu\"." + upload_successful: "Tagi wgrane " + delete_unused_confirmation: + one: "%{count} tag zostanie usunięty: %{tags}" + few: "%{count} tagi zostaną usunięte: %{tags}" + many: "%{count} tagów zostanie usuniętych: %{tags}" + other: "%{count} tagów zostanie usuniętych: %{tags}" + delete_unused_confirmation_more_tags: + one: "%{tags} i %{count} więcej" + few: "%{tags} i %{count} więcej" + many: "%{tags} i %{count} więcej" + other: "%{tags} i %{count} więcej" + delete_unused: "Usuń nieużywane tagi" + delete_unused_description: "Usuń wszystkie tagi, które nie są dołączone do żadnych wątków ani wiadomości." cancel_delete_unused: "Anuluj" filters: without_category: "%{filter} %{tag} tematy" @@ -2898,11 +2952,13 @@ pl_PL: about: "Dodaj etykiety do grup aby zarządzać nimi łatwiej." new: "Nowa Grupa" tags_label: "Tagi w tej grupie:" + tags_placeholder: "tagi" parent_tag_label: "Nadrzędny tag:" parent_tag_placeholder: "Opcjonalnie" parent_tag_description: "Tagi z tej grupy nie mogą być wykorzystane, chyba że główny tag jest obecny." one_per_topic_label: "Ogranicz jeden tag na temat z tej grupy" new_name: "Nowa grupa tagów" + name_placeholder: "Nazwa grupy tagów" save: "Zapisz" delete: "Usuń" confirm_delete: "Czy na pewno chcesz usunąć ten tag grupy?" @@ -2940,9 +2996,14 @@ pl_PL: tags: remove_muted_tags_from_latest: always: "zawsze" + only_muted: "kiedy używany odrębnie lub z innymi wyciszonymi tagami" never: "nigdy" + reports: + title: "Lista dostępnych zgłoszeń" dashboard: title: "Raporty" + last_updated: "Zaktualizowano panel kontrolny:" + discourse_last_updated: "Zaktualizowano Discourse:" version: "Wersja" up_to_date: "Wersja Aktualna!" critical_available: "Ważna aktualizacja jest dostępna." @@ -2953,30 +3014,48 @@ pl_PL: version_check_pending: "Wygląda na to że ostatnio była wykonana aktualizacja. Fantastycznie!" installed_version: "Zainstalowana" latest_version: "Najnowsza" + problems_found: "Porada bazująca na twoich aktualnych ustawieniach" last_checked: "Ostatnio sprawdzana" refresh_problems: "Odśwież" no_problems: "Nie znaleziono problemów." moderators: "Moderatorzy:" admins: "Adminstratorzy:" + silenced: "Wyciszeni:" suspended: "Zawieszeni:" private_messages_short: "Wiad." private_messages_title: "Wiadomości" mobile_title: "Mobile" + space_used: "%{usedSize} użyty" + space_used_and_free: "%{usedSize}(%{freeSize} wolne)" uploads: "Pliki" backups: "Kopie zapasowe" + backup_count: + one: "%{count} kopia zapasowa w %{location}" + few: "%{count} kopie zapasowe w %{location}" + many: "%{count} kopii zapasowych w %{location}" + other: "%{count} kopii zapasowych w %{location}" + lastest_backup: "Ostatnie: %{date}" traffic_short: "Ruch" traffic: "Zapytania do aplikacji" page_views: "Wyświetlenia strony" page_views_short: "Wyświetlenia strony" show_traffic_report: "Pokaż szczegółowy raport ruchu" + community_health: Zdrowie społeczności + moderators_activity: Aktywność moderatorów + whats_new_in_discourse: "Co nowego w Discourse?" activity_metrics: Metryka aktywności + all_reports: "Wszystkie zgłoszenia" general_tab: "Ogólne" + moderation_tab: "Moderacja" security_tab: "Bezpieczeństwo" reports_tab: "Zgłoszenia" report_filter_any: "każdy" disabled: Wyłączony + timeout_error: "Przepraszamy, to wykonanie tego zapytania trwa za długo, wybierz proszę krótszy interwał" + exception_error: "Przepraszamy, podczas wykonywania zapytania pojawił się błąd" too_many_requests: "Wykonałeś tę akcję zbyt wiele razy. Poczekaj, zanim spróbujesz ponownie." not_found_error: "Przepraszamy, ten raport nie istnieje." + filter_reports: Filtruj zgłoszenia reports: today: "Dzisiaj" yesterday: "Wczoraj" @@ -2989,9 +3068,19 @@ pl_PL: view_table: "tabela" view_graph: "wykres" refresh_report: "Odśwież raport" + start_date: "Data startowa (UTC)" + end_date: "Data końcowa (UTC)" groups: "Wszystkie grupy" disabled: "Ten raport jest nieaktywny" + totals_for_sample: "Całkowite na próbkowanie" + average_for_sample: "Średnio na próbkowanie" + total: "Całkowity czas" + no_data: "Brak danych do wyświetlenia." + trending_search: + more: 'Logi wyszukiwania' filters: + file-extension: + label: Rozszerzenie pliku group: label: Grupa category: @@ -3006,6 +3095,7 @@ pl_PL: name: too_short: "Nazwa grupy jest zbyt krótka" too_long: "Nazwa grupy jest zbyt długa" + checking: "Sprawdzanie dostępności nazwy grupy..." available: "Nazwa grupy jest dostępna" not_available: "Nazwa grupy jest niedostępna" blank: "Nazwa grupy nie może być pusta" @@ -3013,6 +3103,8 @@ pl_PL: title: "Dodaj więcej do grupy" complete_users_not_added: "Podani użytkownicy nie mogą zostać dodani (Sprawdź, czy stworzyli konto):" paste: "Podaj listę nazw użytkowników lub adresów e-mail, każdy w oddzielnej linii:" + add_members: + as_owner: "Ustaw użytkownika/ów jako właściciel/i tej grupy" manage: interaction: email: Email @@ -3022,10 +3114,19 @@ pl_PL: visibility_levels: title: "Kto może widzieć tę grupę?" public: "Wszyscy" + logged_on_users: "Zalogowani użytkownicy" + members: "Właściciele grupy, członkowie" staff: "Właściciele grupy i zespół" + owners: "Właściciele grupy" + description: "Administratorzy mogą widzieć wszystkie grupy." + members_visibility_levels: + title: "Kto może widzieć członków grupy?" + description: "Administratorzy mogą widzieć członków wszystkich grup." + publish_read_state: "Wyświetlaj status przeczytania w grupowych wiadomościach" membership: automatic: Automatyczne trust_levels_title: "Domyślny poziom zaufania przyznawany dodawanym użytkownikom:" + effects: Efekty trust_levels_none: "Brak" automatic_membership_email_domains: "Użytkownicy rejestrujący się przy pomocy adresu z tej listy zostaną automatycznie przypisani do tej grupy." automatic_membership_retroactive: "Zastosuj tę regułę domenową do już istniejących użytkowników." @@ -3045,6 +3146,8 @@ pl_PL: add: "Dodaj" custom: "Niestandardowe" automatic: "Automatyczne" + default_title: "Domyślny tytuł" + default_title_description: "zostanie zastosowany dla wszystkich członków tej grupy" group_owners: Właściciele add_owners: Dodaj właścicieli none_selected: "Wybierz grupę, aby rozpocząć" @@ -3054,13 +3157,30 @@ pl_PL: none: "Nie ma teraz aktywnych kluczy API." user: "Użytkownik" title: "API" + key: "Klucz" created: Utworzono + updated: Zaktualizowane + last_used: Ostatnio używane + never_used: (nigdy) generate: "Generuj" + undo_revoke: "Cofnij unieważnienie" revoke: "Unieważnij" all_users: "Wszyscy użytkownicy" + active_keys: "Aktywuj klucze API" + manage_keys: Zarządzaj kluczami show_details: Detale description: Opis + no_description: (brak opisu) + all_api_keys: Wszystkie klucze API + user_mode: Poziom użytkownika + impersonate_all_users: "Podszyj się pod dowolnego użytkownika " + single_user: "Pojedynczy użytkownik" + user_placeholder: Wprowadź nazwę użytkownika + description_placeholder: "Do czego będzie używany ten klucz?" save: Zapisz + new_key: Nowy klucz API + revoked: Unieważniono + delete: Permanentnie usuń web_hooks: title: "Webhooks" none: "Brak webhooks" @@ -3090,6 +3210,8 @@ pl_PL: active_notice: "Dostarczymy detale wydarzenia, kiedy się ono odbędzie." categories_filter_instructions: "Istotne webhook'i będą uruchamiane tylko wtedy, gdy zdarzenie jest związane z określonymi kategoriami. Pozostaw puste, aby wywołać webhook'i dla wszystkich kategorii." categories_filter: "Wywołane kategorie" + tags_filter_instructions: "Istotne webhooki będą wywoływane tylko wtedy, gdy zdarzenie jest związane z określonymi tagami. Zostaw to miejsce puste, by wywoływać webhooki dla wszystkich tagów." + tags_filter: "Wywoływane tagi" groups_filter_instructions: "Istotne webhook'i będą uruchamiane tylko wtedy, gdy zdarzenie jest związane z określonymi grupami. Pozostaw puste, aby wywołać webhook'i dla wszystkich grup." groups_filter: "Wywołane grupy" delete_confirm: "Usunąć ten webhook?" @@ -3101,6 +3223,28 @@ pl_PL: details: "Kiedy pojawia się nowa odpowiedź, edytuj, usuń lub odzyskaj." user_event: name: "Wydarzenie użytkownika" + details: "Kiedy użytkownik się loguje, wylogowuje, jest tworzony, zatwierdzany lub aktualizowany." + group_event: + name: "Zdarzenie grupowe" + details: "Kiedy grupa jest tworzona, aktualizowana lub niszczona. " + category_event: + name: "Zdarzenie kategorii" + details: "Kiedy kategoria jest tworzona, aktualizowana lub niszczona." + tag_event: + name: "Zdarzenie tagu" + details: "Kiedy tag jest tworzony, aktualizowany lub niszczony." + flag_event: + name: "Zdarzenie flagi" + details: "Kiedy flaga jest tworzona, zatwierdzana, odrzucana lub ignorowana." + queued_post_event: + name: "Zdarzenie zatwierdzania wpisu" + details: "Kiedy wpis w kolejce jest tworzony, zatwierdzany lub odrzucany." + reviewable_event: + name: "Zdarzenie przeglądania" + details: "Kiedy nowy element jest gotowy do przejrzenia lub kiedy jego status jest aktualizowany." + notification_event: + name: "Zdarzenie powiadomienia" + details: "Kiedy użytkownik otrzymuje powiadomienie." delivery_status: title: "Status dostarczenia" inactive: "Nieaktywny" @@ -3204,6 +3348,8 @@ pl_PL: confirm: "Czy jesteś pewien, że chcesz przywrócić bazę danych do ostatniej działającej wersji ?" location: local: "Lokalne miejsce" + s3: "S3" + backup_storage_error: "Nie można uzyskać dostępu do miejsca zapisywania kopii zapasowej: %{error_message}" export_csv: success: "Rozpoczęto eksport: otrzymasz wiadomość, gdy proces zostanie zakończony." failed: "Eksport zakończył się niepowodzeniem. Sprawdź logi." @@ -3229,6 +3375,7 @@ pl_PL: new_style: "Nowy styl" install: "zainstalować" delete: "Usuń" + delete_confirm: 'Czy na pewno chcesz usunąć "%{theme_name}"?' color: "Kolor" opacity: "Widoczność" copy: "Kopiuj" @@ -3246,6 +3393,13 @@ pl_PL: revert_confirm: "Czy na pewno chcesz wycofać swoje zmiany?" theme: theme: "Motyw" + component: "Składnik" + components: "Składniki" + theme_name: "Nazwa motywu" + component_name: "Nazwa komponentu" + themes_intro: "Wybierz istniejący motyw lub zainstaluj nowy, by rozpocząć" + beginners_guide_title: "Poradnik początkującego użytkownika motywów Discourse" + developers_guide_title: "Poradnik kreatora motywów Discourse" browse_themes: "Przeglądaj motywy społeczności" customize_desc: "Personalizacja:" title: "Motywy" @@ -3255,12 +3409,14 @@ pl_PL: long_title: "Zmodyfikuj kolory, kod CSS i kod HTML zawartości Twojej strony" edit: "Edytuj" edit_confirm: "To jest zdalny styl. Jeśli edytujesz CSS/HTML, twoje zmiany zostaną usunięte po ponownej aktualizacji motywu." + update_confirm: "Te zmiany zostaną usunięte przez aktualizację. Czy na pewno chcesz kontynuować? " update_confirm_yes: "Tak, kontynuuj aktualizację" common: "Częste" desktop: "Komputer" mobile: "Mobilnie" settings: "Ustawienia" translations: "Tłumaczenia" + extra_scss: "Dodatkowy SCSS" preview: "Podgląd" show_advanced: "Pokaż pola zaawansowane" hide_advanced: "Ukryj pola zaawansowane" @@ -3272,9 +3428,13 @@ pl_PL: custom_sections: "Spersonalizowane sekcje:" theme_components: "Komponenty motywu" convert: "Konwertować" + convert_component_alert: "Czy na pewno chcesz konwertować ten składnik na motyw? Zostanie usunięty jako składnik z %{relatives}." convert_component_tooltip: "Konwertuj ten składnik na motyw" + convert_theme_alert: "Czy na pewno chcesz konwertować ten motyw na składnik. Zostanie usunięty jako rodzic z %{relatives}." + convert_theme_tooltip: "Konwertuj ten motyw na składnik" inactive_themes: "Nieaktywne motywy:" inactive_components: "Nieużywane komponenty:" + broken_theme_tooltip: "Ten motyw ma błędy w CSS, HTML lub YAML" disabled_component_tooltip: "Ten komponent został wyłączony" default_theme_tooltip: "Ten motyw jest domyślnym motywem witryny" updates_available_tooltip: "Dostępne są aktualizacje dla tego motywu" @@ -3285,9 +3445,13 @@ pl_PL: add_upload: "Dodaj plik" upload_file_tip: "Wybierz plik do wysłania (png, woff2, itp.)" variable_name: "Nazwa zmiennej SCSS:" + variable_name_invalid: "Niewłaściwa nazwa zmiennej. Dozwolone tylko nazwy alfanumeryczne. Musi zaczynać się od litery. Musi być unikatowa." variable_name_error: + invalid_syntax: "Niewłaściwa nazwa zmiennej. Dozwolone tylko nazwy alfanumeryczne. Musi zaczynać się od litery." + no_overwrite: "Niewłaściwa nazwa zmiennej. Nie może nadpisywać istniejącej zmiennej." must_be_unique: "Niepoprawna nazwa zmiennej. Musi być unikalna." upload: "Plik" + select_component: "Wybierz składnik..." unsaved_changes_alert: "Nie zapisałeś jeszcze zmian, czy chcesz je odrzucić i przejść dalej?" discard: "Odrzuć" stay: "Zostań" @@ -3296,7 +3460,11 @@ pl_PL: edit_css_html_help: "Nie modyfikowałeś CSS ani HTML" delete_upload_confirm: "Czy usunąć ten plik? (CSS motywu może przestać działać!)" import_web_tip: "Repozytorium zawierające motyw" + import_web_advanced: "Zaawansowane..." + import_file_tip: "plik .tar.gz, .zip, lub .dcstyle.json zawierający motyw" + is_private: "Motyw jest w prywatnym repozytorium git" remote_branch: "Nazwa oddziału (opcjonalnie)" + public_key: "Podaj następujący klucz publiczny pozwalający na dostęp do repozytorium:" install: "zainstalować" installed: "Zainstalowana" install_popular: "Popularne" @@ -3314,6 +3482,8 @@ pl_PL: disabled_by: "Ten komponent został wyłączony przez" required_version: error: "Ten motyw został automatycznie wyłączony, ponieważ nie jest kompatybilny z tą wersją Discourse." + minimum: "Wymaga wersji {{version}} Discourse'a lub wyższej." + maximum: "Wymaga wersji {{version}} Discourse'a lub niższej." component_of: "Składnik:" update_to_latest: "Aktualizuj do najnowszego" check_for_updates: "Sprawdź dostępność aktualizacji" @@ -3329,7 +3499,9 @@ pl_PL: few: "Motyw jest {{count}} aktualizacji w tyle!" many: "Motyw jest {{count}} aktualizacji w tyle!" other: "Motyw jest {{count}} aktualizacji w tyle!" + compare_commits: "(Sprawdź nowe commity)" repo_unreachable: "Nie można skontaktować się z repozytorium Git tego motywu. Komunikat o błędzie:" + imported_from_archive: "Motyw został zaimportowany z pliku .zip" scss: text: "CSS" title: "Wstaw własny CSS, przyjmujemy wszystkie prawidłowe style CSS i SCSS" @@ -3353,6 +3525,7 @@ pl_PL: title: "HTML, który zostanie umieszczony przed tagiem " yaml: text: "YAML" + title: "Zdefiniuj ustawienia motywu w formacie YAML" colors: select_base: title: "Wybierz podstawową paletę kolorów" @@ -3367,6 +3540,7 @@ pl_PL: undo: "cofnij" undo_title: "Cofnij zmiany tego koloru od ostatniego zapisu" revert: "przywróć" + revert_title: "Zresetuj ten kolor do domyślnej wartości palety Discourse." primary: name: "podstawowy" description: "Większość tekstu, ikon oraz krawędzi." @@ -3397,17 +3571,28 @@ pl_PL: love: name: "polubienie" description: "Kolor przycisku lajkuj" + robots: + title: "Nadpisz plik robots.txt swojej witryny:" + warning: "To ustawienie permanentnie nadpisze wszystkie powiązane ustawienia witryny." + overridden: Domyślny plik robots.txt twojej witryny został nadpisany email_style: + title: "Styl e-maili" + heading: "Zmień styl e-maili" + html: "Szablon HTML" css: "CSS" reset: "Przywróć ustawienia domyślne" + save_error_with_reason: "Twoje zmiany nie zostały zapisane. %{error}" email: title: "Emaile" settings: "Ustawienia" templates: "Szablony" preview_digest: "Pokaż zestawienie aktywności" advanced_test: + title: "Zaawansowany test" email: " Oryginalna wiadomość" run: "Przeprowadź Test" + text: "Wybrane body tekstu" + elided: "Pominięty tekst" sending_test: "Wysyłanie testowego emaila…" error: "BŁAD - %{server_error}" test_error: "Wystąpił problem podczas wysyłania testowego maila. Sprawdź ustawienia poczty, sprawdź czy Twój serwer nie blokuje połączeń pocztowych i spróbuj ponownie." @@ -3474,6 +3659,7 @@ pl_PL: silence_user: "Użytkownik wyciszony" delete_post: "Wpis usunięty" delete_topic: "Temat usunięty" + post_approved: "Wpis zatwierdzony" logs: title: "Logi" action: "Działanie" @@ -3518,10 +3704,13 @@ pl_PL: change_site_text: "zmiana tekstu serwisu" suspend_user: "zawieszenie użytkownika" unsuspend_user: "odwieszenie użytkownika" + removed_suspend_user: "zawieś użytkownika (usunięte)" + removed_unsuspend_user: "cofnij zawieszenie użytkownika (usunięte)" grant_badge: "przyznanie odznaki" revoke_badge: "odebranie odznaki" check_email: "sprawdzenie poczty" delete_topic: "usunięcie tematu" + recover_topic: "przywróć wątek" delete_post: "usunięcie wpisu" impersonate: "udawanie użytkownika" anonymize_user: "anonimizuj użytkownika" @@ -3531,12 +3720,15 @@ pl_PL: create_category: "Dodaj nową kategorię" silence_user: "wycisz użytkownika" unsilence_user: "cofnij wyciszenie użytkownika" + removed_silence_user: "wycisz użytkownika (usunięte)" + removed_unsilence_user: "cofnij wyciszenie użytkownika (usunięte)" grant_admin: "nadaj prawa admina" revoke_admin: "odbierz prawa admina" grant_moderation: "Przyznaj status moderatora" revoke_moderation: "cofnąć moderację" backup_create: "Wykonaj kopię zapasową" deleted_tag: "usunięty tag" + deleted_unused_tags: "usunięto nieużywane tagi" renamed_tag: "zmieniona nazwa tag'u" revoke_email: "cofnąć e-mail" lock_trust_level: "Zablokuj poziom zaufania" @@ -3548,9 +3740,34 @@ pl_PL: backup_destroy: "Zniszcz kopię zapasową " reviewed_post: "przejrzane posty" custom_staff: "spersonalizowana akcja wtyczki" + post_locked: "wpis zablokowany" + post_edit: "edycja wpisu" + post_unlocked: "wpis odblokowany" + check_personal_message: "sprawdź wiadomości prywatne" + disabled_second_factor: "wyłącz dwuskładnikowe uwierzytelnienie" + topic_published: "wątek opublikowany" post_approved: "post zatwierdzony" post_rejected: "wpis odrzucony" + create_badge: "stwórz odznakę" + change_badge: "zmień odznakę" + delete_badge: "usuń odznakę" + merge_user: "połącz użytkownika" + entity_export: "eksportuj jednostkę" change_name: "zmień nazwe" + topic_timestamps_changed: "zmieniono znaczniki czasowe wątku" + approve_user: "zatwierdzony użytkownik" + web_hook_create: "utwórz webhooka" + web_hook_update: "zaktualizuj webhooka" + web_hook_destroy: "zniszcz webhooka" + web_hook_deactivate: "deaktywuj webhooka" + change_theme_setting: "zmień ustawienia motywu" + disable_theme_component: "dezaktywuj składnik motywu" + enable_theme_component: "aktywuj składnik motywu" + revoke_title: "odbierz tytuł" + change_title: "zmień tytuł" + api_key_create: "utwórz klucz api" + api_key_update: "zaktualizuj klucz api" + api_key_destroy: "zniszcz klucz api" screened_emails: title: "Ekranowane emaile" description: "Kiedy ktoś próbuje założyć nowe konto, jego adres email zostaje sprawdzony i rejestracja zostaje zablokowana, lub inna akcja jest podejmowana." @@ -3590,6 +3807,8 @@ pl_PL: all_search_types: "Wszystkie typy wyszukiwania" header: "Nagłówek" full_page: "Pełna strona" + click_through_only: "wszystkie (tylko przeklikiwanie)" + header_search_results: "Wyniki wyszukiwania w nagłówku" logster: title: "Logi błędów" watched_words: @@ -3600,6 +3819,8 @@ pl_PL: one_word_per_line: "Jedno słowo w wierszu" download: Pobierz clear_all: Wyczyść wszystko + clear_all_confirm_block: "Czy na pewno chcesz wyczyścić wszystkie obserwowane słowa dla akcji Blokuj?" + clear_all_confirm_censor: "Czy na pewno chcesz wyczyścić wszystkie obserwowane słowa dla akcji Cenzuruj?" word_count: one: "%{count} słowo" few: "%{count} słówa" @@ -3627,6 +3848,7 @@ pl_PL: test: button_label: "Sprawdź" description: "Wpisz tekst poniżej, aby sprawdzić dopasowania z obserwowanymi słowami" + found_matches: "Znalezione wyniki:" no_matches: "Nie znaleziono dopasowań" impersonate: title: "Zaloguj się na to konto" @@ -3666,6 +3888,7 @@ pl_PL: silenced: "Wyciszeni użytkownicy" suspended: "Zawieszone konta" suspect: "Podejrzani użytkownicy" + staged: "Wystawieni użytkownicy" not_verified: "Niezweryfikowany" check_email: title: "Wyświetl adres email tego użytkownika" @@ -3724,6 +3947,8 @@ pl_PL: grant_moderation: "Przyznaj status moderatora" unsuspend: "Odwieś" suspend: "Zawieś" + show_flags_received: "Pokaż otrzymane flagi" + flags_received_by: "Flagi otrzymane przez %{username}" flags_received_none: "Ten użytkownik nie otrzymał żadnych flag." reputation: Reputacja permissions: Uprawnienia @@ -3825,6 +4050,8 @@ pl_PL: likes_received: "Lajki otrzymane" likes_received_days: "Lajki otrzymane: unikalne dni" likes_received_users: "Lajki otrzymane: unikalni użytkownicy" + suspended: "Zawieszony (ostatnie 6 miesięcy)" + silenced: "Uciszony (ostatnie 6 miesięcy)" qualifies: "Kwalifikuje się do 3 poziomu zaufania." does_not_qualify: "Nie kwalifikuje się do 3 poziomu zaufania." will_be_promoted: "Zostanie awansowany wkrótce." @@ -3934,7 +4161,9 @@ pl_PL: groups: "Grupy" dashboard: "Raporty" default_categories: + modal_description: "Czy chciałbyś wprowadzić tę zmianę wstecz? Zmieni to ustawienia %{count} istniejących użytkowników." modal_yes: "Tak" + modal_no: "Nie, wprowadź zmianę odtąd, na przyszłość" badges: title: Odznaki new_badge: Nowa odznaka @@ -3971,6 +4200,7 @@ pl_PL: enabled: Włącz odznakę icon: Ikona image: Grafika + icon_help: "Wprowadź nazwę ikony Font Awesome (użyj prefiksu \"far-\" dla zwykłych ikon i \"fab-\" dla ikon marek)" image_help: "Wprowadź adres URL obrazu (zastępuje pole ikony, jeśli oba są ustawione)" query: "Zapytanie odznaki (SQL) " target_posts: Wpisy powiązane z odznaką @@ -4008,6 +4238,7 @@ pl_PL: badge_intro: title: "Wybierz istniejącą odznakę lub utwórz nową, aby rozpocząć" what_are_badges_title: "Czym są odznaki?" + badge_query_examples_title: "Przykład wykonania zapytania odznaki" emoji: title: "Emoji" help: "Dodawanie nowych emoji. (PROTIP: przeciągnij i upuść wiele plików)" @@ -4039,6 +4270,7 @@ pl_PL: save: "Zapisz" permalink: title: "Permalinki" + description: "Zwróć uwagę na to, że to ustawienie zastosowane zostanie wyłącznie do zewnętrznych źródeł, linki umieszczone na forum nie ulegną przekierowaniu." url: "URL" topic_id: "ID tematu" topic_title: "Temat" @@ -4055,8 +4287,10 @@ pl_PL: reseed: action: label: "Zamień tekst…" + title: "Zamień tekst kategorii i wątków tłumaczeniami" modal: title: "Zamień tekst" + subtitle: "Zamień tekst systemowo generowanych kategorii i wątków ostatnimi tłumaczeniami" categories: "Kategorie" topics: "Tematy" replace: "Zamień" diff --git a/config/locales/client.pt.yml b/config/locales/client.pt.yml index 1658cf4dcf..fc3fe4b76c 100644 --- a/config/locales/client.pt.yml +++ b/config/locales/client.pt.yml @@ -1114,6 +1114,7 @@ pt: trust_level: "Nível de Confiança" search_hint: "nome de utilizador, e-mail ou endereço de IP" create_account: + disclaimer: "Ao registar-se, concorda com a política de privacidade e os termos do serviço." title: "Criar Nova Conta" failed: "Ocorreu algo de errado, este e-mail já pode estar registado. Tente utilizar a hiperligação \"Esqueci-me da Palavra-passe\"." forgot_password: @@ -2419,6 +2420,7 @@ pt: selector_no_tags: "sem etiquetas" changed: "etiquetas modificadas:" tags: "Etiquetas" + add_synonyms: "Adicionar" delete_tag: "Remover Etiqueta" rename_tag: "Renomear Etiqueta" rename_instructions: "Escolha o novo nome para a etiqueta:" diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml index 5ef95a365b..f0397188cf 100644 --- a/config/locales/client.pt_BR.yml +++ b/config/locales/client.pt_BR.yml @@ -720,6 +720,7 @@ pt_BR: collapse_profile: "Recolher" bookmarks: "Favoritos" bio: "Sobre mim" + timezone: "Fuso Horário" invited_by: "Convidado Por" trust_level: "Nível de Confiança" notifications: "Notificações" @@ -2357,7 +2358,6 @@ pt_BR: email_in_disabled: "Postar novos tópicos via e-mail está desabilitado nas Configurações do Site. Para habilitar respostas em novos tópicos via e-mail," email_in_disabled_click: 'habilitar a configuração de "e-mail em".' mailinglist_mirror: "Categoria espelha uma lista de discussão" - suppress_from_latest: "Suprimir categoria dos tópicos mais recentes." show_subcategory_list: "Exibir lista de subcategorias acima dos tópicos nesta categoria." num_featured_topics: "Número de tópicos exibidos na página de Categorias:" subcategory_num_featured_topics: "Número de tópicos em destaque na página da categoria pai:" @@ -2729,6 +2729,7 @@ pt_BR: changed: "etiquetas alteradas:" tags: "Etiquetas" choose_for_topic: "etiquetas opcionais" + add_synonyms: "Adicionar" delete_tag: "Apagar marcação" delete_confirm: one: "Tem certeza de que deseja excluir esta tag e removê-la de um tópico para o qual ela está atribuída?" diff --git a/config/locales/client.ro.yml b/config/locales/client.ro.yml index 7bf751203a..d7653bd9aa 100644 --- a/config/locales/client.ro.yml +++ b/config/locales/client.ro.yml @@ -2298,6 +2298,7 @@ ro: changed: "etichete schimbate:" tags: "Etichete" choose_for_topic: "etichete opționale" + add_synonyms: "Adaugă" delete_tag: "Șterge etichetă" delete_confirm: one: "Ești sigur că vrei să ștergi această etichetă și să o scoți dintr-un subiect care o folosește?" diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index db6f49c64a..1830504bf9 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -827,6 +827,7 @@ ru: collapse_profile: "Свернуть" bookmarks: "Закладки" bio: "Обо мне" + timezone: "Часовой пояс" invited_by: "Пригласил" trust_level: "Уровень" notifications: "Уведомления" @@ -1437,7 +1438,7 @@ ru: second_factor_backup_description: "Введите запасной код:" second_factor: "Войти с помощью программы аутентификации" security_key_description: "Когда вы подготовите свой физический ключ безопасности, нажмите кнопку Аутентификация с ключом безопасности ниже." - security_key_alternative: "Не удается найти ключ безопасности или хотите использовать другой метод?" + security_key_alternative: "Попробуйте другой способ" security_key_authenticate: "Аутентификация с Ключом Безопасности." security_key_not_allowed_error: "Время проверки подлинности ключа безопасности истекло или было отменено." security_key_no_matching_credential_error: "В указанном ключе безопасности не найдено подходящих учетных данных." @@ -1749,6 +1750,7 @@ ru: topic_reminder: "{{username}} {{description}}" watching_first_post: "Новая тема {{description}}" membership_request_accepted: "Запрос на вступление принят '{{group_name}}'" + membership_request_consolidated: "{{count}} открытые запросы на вступления для '{{group_name}}'" group_message_summary: one: "{{count}} сообщение в вашей группе: {{group_name}} " few: "{{count}} сообщений в вашей группе: {{group_name}} " @@ -1786,6 +1788,7 @@ ru: topic_reminder: "напоминание о теме" liked_consolidated: "новые симпатии" post_approved: "сообщение утверждено" + membership_request_consolidated: "новые запросы на вступление" upload_selector: title: "Add an image" title_with_attachments: "Добавить изображение или файл" @@ -2606,7 +2609,6 @@ ru: email_in_disabled: "Создание новых тем через электронную почту отключено в настройках сайта. Чтобы разрешить создание новых тем через электронную почту," email_in_disabled_click: 'активируйте настройку "email in".' mailinglist_mirror: "Категория отражает список рассылки" - suppress_from_latest: "Скрыть категорию из последних тем." show_subcategory_list: "Показывать список подразделов над списком тем в этом разделе." num_featured_topics: "Количество тем на странице разделов" subcategory_num_featured_topics: "Количество избранных тем на странице родительской категории:" @@ -3016,6 +3018,26 @@ ru: changed: "Теги изменены:" tags: "Теги" choose_for_topic: "Выберите теги для этой темы (опционально)" + info: "Информация" + default_info: "Этот тег не ограничен никакими категориями и не имеет синонимов." + synonyms: "Синонимы" + synonyms_description: "При использовании следующих тегов они будут заменены на %{base_tag_name}." + tag_groups_info: + one: 'Этот тег принадлежит группе "{{tag_groups}}".' + few: "Этот тег принадлежит к этим группам: {{tag_groups}}." + many: "Этот тег принадлежит к этим группам: {{tag_groups}}." + other: "Этот тег принадлежит к этим группам: {{tag_groups}}." + category_restrictions: + one: "Его можно использовать только в этой категории:" + few: "Их можно использовать только в этой категории:" + many: "Их можно использовать только в этой категории:" + other: "Их можно использовать только в этой категории:" + edit_synonyms: "Управление Синонимами" + add_synonyms_label: "Добавить синонимы:" + add_synonyms: "Добавить" + add_synonyms_failed: "Следующие теги не могут быть добавлены в качестве синонимов: %{tag_names}. Убедитесь, что они не имеют синонимов и не являются синонимами другого тега." + remove_synonym: "Удалить Синоним" + delete_synonym_confirm: 'Вы уверены, что хотите удалить синоним "%{tag_name}"?' delete_tag: "Удалить тег" delete_confirm: one: "Вы действительно хотите удалить этот тэг и удалить его из %{count} топика, которому он присвоен?" @@ -3023,6 +3045,11 @@ ru: many: "Вы действительно хотите удалить этот тэг и удалить его из {{count}} топиков, которым он присвоен?" other: "Вы действительно хотите удалить этот тэг и удалить его из {{count}} топиков, которым он присвоен?" delete_confirm_no_topics: "Вы действительно хотите удалить этот тэг?" + delete_confirm_synonyms: + one: "Его синоним также будет удален." + few: "Его {{count}} синонимы также будут удалены." + many: "Его {{count}} синонимы также будут удалены." + other: "Его {{count}} синонимы также будут удалены." rename_tag: "Редактировать тег" rename_instructions: "Выберите новое название тега:" sort_by: "Сортировка:" @@ -3552,6 +3579,7 @@ ru: color_scheme_select: "Выберите цвета для стиля" custom_sections: "Настройка секций:" theme_components: "Компоненты стиля" + add_all_themes: "Добавить все темы" convert: "Конвертировать" convert_component_alert: "Вы уверены, что хотите преобразовать этот компонент в тему? Он будет удален как компонент из %{relatives}." convert_component_tooltip: "Преобразовать этот компонент в тему" @@ -3584,6 +3612,9 @@ ru: edit_css_html: "Редактировать CSS/HTML" edit_css_html_help: "Вы не внесли никаких изменений в CSS или HTML" delete_upload_confirm: "Удалить этот файл? CSS стиля может перестать функционировать!" + component_on_themes: "Включить компонент по этим темам" + included_components: "Включенные компоненты" + add_all: "Добавить все" import_web_tip: "Репозиторий стиля" import_web_advanced: "Дополнительно..." import_file_tip: ".tar.gz, .zip, или .dcstyle.json файл, содержащий тему" @@ -3899,6 +3930,7 @@ ru: api_key_create: "создать api ключ" api_key_update: "обновление api ключа" api_key_destroy: "уничтожить api ключ" + override_upload_secure_status: "перезаписать защищенный статус загрузки" screened_emails: title: "Почтовые адреса" description: "Когда кто-то создаёт новую учётную запись, проверяется данный почтовый адрес и регистрация блокируется или производятся другие дополнительные действия." diff --git a/config/locales/client.sk.yml b/config/locales/client.sk.yml index 4b111e623d..b93686aaa0 100644 --- a/config/locales/client.sk.yml +++ b/config/locales/client.sk.yml @@ -2212,6 +2212,7 @@ sk: selector_no_tags: "žiadne štítky" changed: "zmenené štítky:" tags: "Štítky" + add_synonyms: "Pridať" delete_tag: "Zmazať štítok" rename_tag: "Premenovať štítok" rename_instructions: "Vyberte nové meno pre štítok:" diff --git a/config/locales/client.sl.yml b/config/locales/client.sl.yml index 209e36ac1e..4bf703ed07 100644 --- a/config/locales/client.sl.yml +++ b/config/locales/client.sl.yml @@ -764,6 +764,7 @@ sl: collapse_profile: "Skrči" bookmarks: "Zaznamki" bio: "O meni" + timezone: "Časovni pas" invited_by: "Povabilo od" trust_level: "Nivo zaupanja" notifications: "Obvestila" @@ -2485,7 +2486,6 @@ sl: email_in_disabled: "Objavljanje novih tem preko e-sporočila je onemogočeno v Nastavitvah strani. Za omogočanje objave novih tem preko e-sporočila, " email_in_disabled_click: 'vključite "email in" nastavitev.' mailinglist_mirror: "Kategorija zrcali poštni seznam" - suppress_from_latest: "Ne prikaži to kategorijo med najnovejšimi temami." show_subcategory_list: "Prikaži seznam podkategorij nad temami za to kategorijo." num_featured_topics: "Število tem prikazanih na seznamu kategorij:" subcategory_num_featured_topics: "Število osrednjih tem na strani nadrejene kategorije:" @@ -2895,6 +2895,7 @@ sl: changed: "spremenjene oznake:" tags: "Oznake" choose_for_topic: "neobvezne oznake" + add_synonyms: "Dodaj" delete_tag: "Izbriši oznako" delete_confirm: one: "Ali ste prepričani, da želite izbrisati to oznako in jo umaknili iz {{count}} teme s to oznako?" diff --git a/config/locales/client.sq.yml b/config/locales/client.sq.yml index a90b959f54..29ffdd9e02 100644 --- a/config/locales/client.sq.yml +++ b/config/locales/client.sq.yml @@ -1872,6 +1872,7 @@ sq: selector_no_tags: "asnjë etiketë" changed: "etiketat e ndryshuara:" tags: "Etiketat" + add_synonyms: "Shto" delete_tag: "Fshi etiketën" rename_tag: "Riemëro etiketën" rename_instructions: "Zgjidhni një emër të ri për këtë etiketë" diff --git a/config/locales/client.sr.yml b/config/locales/client.sr.yml index f274670118..0ad26ab967 100644 --- a/config/locales/client.sr.yml +++ b/config/locales/client.sr.yml @@ -1546,6 +1546,7 @@ sr: posting: name: Poruke tagging: + add_synonyms: "Dodaj" cancel_delete_unused: "Odustani" notifications: watching: diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml index 1704b8ad7d..52caaf536e 100644 --- a/config/locales/client.sv.yml +++ b/config/locales/client.sv.yml @@ -2012,6 +2012,7 @@ sv: selector_no_tags: "inga taggar" changed: "taggar ändrade:" tags: "Taggar" + add_synonyms: "Lägg till" delete_tag: "Radera tag" rename_tag: "Döp om taggen" rename_instructions: "Välj ett nytt namn för taggen:" diff --git a/config/locales/client.sw.yml b/config/locales/client.sw.yml index 8c672d4bf9..fd5feedca2 100644 --- a/config/locales/client.sw.yml +++ b/config/locales/client.sw.yml @@ -1951,7 +1951,6 @@ sw: email_in_allow_strangers: "Pokea barua pepe kutoka kwa watumiaji wasiojulikana ambao hawana akaunti" email_in_disabled: "Uchapishaji wa mada mpya kupitia barua pepe umesitishwa kwenye Mipangilio ya Tovuti. Kuruhusu uchapishaji wa mada mpya kupitia barua pepe," email_in_disabled_click: 'ruhusu mpangilio wa "barua pepe ndani"' - suppress_from_latest: "Husuru kategoria hizi kutokea kwenye mada za hivi karibuni." num_featured_topics: "Idadi ya mada zitakazo onyeshwa ndani ya ukurasa wa kategoria:" all_topics_wiki: "Hifadhi mada mpya kama chaguo msingi" sort_order: "Orodha ya Maneno Imepangwa Kulingana Na:" @@ -2240,6 +2239,7 @@ sw: changed: "lebo zilizobadilishwa:" tags: "Lebo" choose_for_topic: "lebo zisizo muhimu" + add_synonyms: "Ongeza" delete_tag: "futa lebo" delete_confirm_no_topics: "Una uhakika unataka kufuta lebo hii?" rename_tag: "Badili jina la lebo" diff --git a/config/locales/client.te.yml b/config/locales/client.te.yml index 4354bc07a8..7be0f4608c 100644 --- a/config/locales/client.te.yml +++ b/config/locales/client.te.yml @@ -1287,6 +1287,7 @@ te: name: రాస్తున్నారు tagging: tags: "ట్యాగులు" + add_synonyms: "కలుపు" cancel_delete_unused: "రద్దుచేయి" notifications: watching: diff --git a/config/locales/client.th.yml b/config/locales/client.th.yml index bd05e9c732..2c04218720 100644 --- a/config/locales/client.th.yml +++ b/config/locales/client.th.yml @@ -1471,6 +1471,7 @@ th: selector_all_tags: "แท็กทั้งหมด" changed: "เปลี่ยนแท็ก:" tags: "ป้าย" + add_synonyms: "เพิ่ม" delete_tag: "ลบแท็ก" rename_tag: "เปลี่ยนชื่อแท็ก" rename_instructions: "เลือกชื่อใหม่สำหรับแท็ก:" diff --git a/config/locales/client.tr_TR.yml b/config/locales/client.tr_TR.yml index d3c74c8c75..6383602c99 100644 --- a/config/locales/client.tr_TR.yml +++ b/config/locales/client.tr_TR.yml @@ -95,6 +95,12 @@ tr_TR: x_days: one: "%{count} gün önce" other: "%{count} gün önce" + x_months: + one: "%{count} ay önce" + other: "%{count} ay önce" + x_years: + one: "%{count} yıl önce" + other: "%{count} yıl önce" later: x_days: one: "%{count} gün sonra" @@ -315,9 +321,25 @@ tr_TR: order_by: "Sırala" in_reply_to: "cevap olarak" explain: + why: "bu makalenin neden sıraya girdiğini açıkla" + title: "Gözden geçirilebilir Puanlama" + formula: "Formül" + subtotal: "ara toplam" total: "Toplam" + min_score_visibility: "Görünürlük için Minimum Puan" + score_to_hide: "Gönderiyi Gizlemek için Puan" + take_action_bonus: + name: "harekete geçti" + title: "Bir personel harekete geçmeyi seçtiğinde bayrağa bonus verilir." + user_accuracy_bonus: + name: "kullanıcı doğruluğu" + title: "Bayrakları tarihsel olarak kararlaştırılmış olanlara bonus verilir." trust_level_bonus: name: "güven seviyesi" + title: "Güven düzeyi yüksek kullanıcılar tarafından oluşturulan, incelenebilir öğeler daha yüksek bir puana sahiptir." + type_bonus: + name: "tür bonusu" + title: "Bazı gözden geçirilebilir türlere daha yüksek öncelikli olmaları için personel tarafından bir bonus tahsis edilebilir." claim_help: optional: "Başkalarının incelemesini engellemek için bu öğeyi talep edebilirsiniz." required: "Öğeleri inceleyebilmeniz için önce hak talebinde bulunmalısınız." @@ -725,6 +747,7 @@ tr_TR: collapse_profile: "Daralt" bookmarks: "İşaretlenenler" bio: "Hakkımda" + timezone: "Saat dilimi" invited_by: "Tarafından Davet Edildi" trust_level: "Güven Seviyesi" notifications: "Bildirimler" @@ -856,6 +879,7 @@ tr_TR: copied_to_clipboard: "Panoya kopyalandı" copy_to_clipboard_error: "Panoya kopyalanırken hata oluştu" remaining_codes: "{{count}} yedek kodun kaldı " + use: "Bir yedekleme kodu kullanın" enable_prerequisites: "Yedek kodları oluşturmadan önce birincil ikinci faktörü etkinleştirmelisiniz." codes: title: "Yedek kod oluşturuldu" @@ -863,6 +887,7 @@ tr_TR: second_factor: title: "İki Faktörlü Kimlik Doğrulama" enable: "İki Adımlı Kimlik Doğrulamayı Düzenle" + forgot_password: "Şifrenizi mi unuttunuz?" confirm_password_description: "Devam etmek için lütfen şifrenizi onaylayın" name: "İsim" label: "Kod" @@ -876,6 +901,7 @@ tr_TR: extended_description: | İki faktörlü kimlik doğrulama, şifrenize ek olarak bir kerelik bir belirteç gerektirerek hesabınıza ekstra güvenlik sağlar. Tokenler Android ve iOS cihazlarda yaratılabilir. oauth_enabled_warning: "Hesabınızda iki faktörlü kimlik doğrulaması etkinleştirildikten sonra sosyal girişlerin devre dışı bırakılacağını lütfen unutmayın." + use: "Authenticator uygulamasını kullan" enforced_notice: "Bu siteye erişmeden önce iki faktörlü kimlik doğrulamasını etkinleştirmeniz gerekir." disable: "devre dışı bırak" disable_title: "İkinci Faktör İnaktif" @@ -883,12 +909,20 @@ tr_TR: edit: "Düzenle" edit_title: "İkinci Faktörü Düzenle" edit_description: "İkinci Faktör Adı" + enable_security_key_description: "Fiziksel güvenlik anahtarınızı hazırladığınızda, aşağıdaki Kayıt düğmesine basın." totp: title: "Token Tabanlı Doğrulayıcılar" add: "Yeni Doğrulayıcı" default_name: "Benim Doğrulayıcım" security_key: register: "Kayıt Ol" + title: "Güvenlik Sözcükleri" + add: "Güvenlik Anahtarını Kaydedin" + default_name: "Ana Güvenlik Anahtarı" + not_allowed_error: "Güvenlik anahtarı kayıt işlemi zaman aşımına uğradı veya iptal edildi." + already_added_error: "Bu güvenlik anahtarın daha önce kaydettiğiniz için tekrar kaydetmeniz gerekmez." + edit: "Güvenlik Anahtarını Düzenle" + edit_description: "Güvenlik Anahtarı Adı" delete: "Sil" change_about: title: "\"Hakkımda\"yı Değiştir" @@ -915,6 +949,9 @@ tr_TR: uploaded_avatar_empty: "Kişisel bir resim ekle" upload_title: "Resmini yükle" image_is_not_a_square: "Uyarı: Genişliği ve yüksekliği eşit olmadığı için görseli kesmek durumunda kaldık." + change_profile_background: + title: "Profil Başlığı" + instructions: "Profil başlıkları ortalanacak ve varsayılan olarak 1110 piksel boyutunda olacaktır." change_card_background: title: "Kullanıcı Kartı Arkaplanı" instructions: "Profil arkaplanları ortalanacak ve genişliği 590px olacak. " @@ -1283,8 +1320,16 @@ tr_TR: password: "Şifre" second_factor_title: "İki Faktörlü Kimlik Doğrulama" second_factor_description: "Lütfen uygulamadan \"Kimlik Doğrulama Kodu\"nu gir:" + second_factor_backup: "Bir yedekleme kodu kullanarak giriş yapın" second_factor_backup_title: "İki Faktörlü Yedekleme" second_factor_backup_description: "Lütfen yedek kodlarından birini gir:" + second_factor: "Authenticator uygulamasını kullanarak giriş yapın" + security_key_description: "Fiziksel güvenlik anahtarınızı hazırladığınızda, aşağıdaki Güvenlik Anahtarıyla Kimlik Doğrula düğmesine basın." + security_key_alternative: "Başka bir yol dene" + security_key_authenticate: "Güvenlik Anahtarı ile Kimlik Doğrulama" + security_key_not_allowed_error: "Güvenlik anahtarı kimlik doğrulama işlemi zaman aşımına uğradı veya iptal edildi." + security_key_no_matching_credential_error: "Sağlanan güvenlik anahtarında eşleşen kimlik bilgisi bulunamadı." + security_key_support_missing_error: "Geçerli cihazınız veya tarayıcınız güvenlik tuşlarının kullanımını desteklemiyor. Lütfen farklı bir yöntem kullanın." email_placeholder: "e-posta veya kullanıcı adı" caps_lock_warning: "Caps Lock açık" error: "Bilinmeyen hata" @@ -1332,6 +1377,9 @@ tr_TR: discord: name: "Discord" title: "Discord ile" + second_factor_toggle: + totp: "Bunun yerine bir doğrulama uygulaması kullanın" + backup_code: "Bunun yerine bir yedekleme kodu kullanın" invites: accept_title: "Davet" welcome_to: "%{site_name} hoş geldin!" @@ -1349,6 +1397,7 @@ tr_TR: apple_international: "Apple/Uluslararası" google: "Google" twitter: "Twitter" + emoji_one: "JoyPixels (eski adıyla EmojiOne)" win10: "Win10" google_classic: "Google Classic" facebook_messenger: "Facebook Messenger" @@ -1433,14 +1482,17 @@ tr_TR: cannot_see_mention: category: "{{username}} adlı kullanıcıdan bahsettin fakat bildirim gönderilmeyecek çünkü kullanıcının bu kategoriye ulaşma izni yok. Kullanıcının bildirimi görebilmesi için onu bu gruba eklemen gerekiyor. " private: "{{username}} adlı kullanıcıdan bahsettin fakat bildirim gönderilmeyecek çünkü kullanıcının bu kişisel mesaja ulaşma izni yok. Kişisel mesaja ulaşabilmesi için kullanıcıyı PM'ye eklemen gerekiyor. " + reference_topic_title: "RE: {{title}}" error: title_missing: "Başlık gerekli" title_too_short: "Başlık en az {{min}} karakter olmalı" title_too_long: "Başlık {{max}} karakterden daha uzun olamaz" + post_missing: "Gönderi boş olamaz" post_length: "Gönderi en az {{min}} karakter olmalı" try_like: "{{heart}} düğmesini denediniz mi?" category_missing: "Bir kategori seçmelisin" tags_missing: "En azından {{count}} etiket seçmelisin" + topic_template_not_modified: "Lütfen konu şablonunu düzenleyerek daha fazla ayrıntı ekleyin." save_edit: "Değişikliği Kaydet" overwrite_edit: "Üzerine Yaz" reply_original: "Asıl konu üzerinden cevap ver" @@ -1480,6 +1532,7 @@ tr_TR: link_description: "buraya bağlantı açıklamasını gir" link_dialog_title: "Hyperlink ekle" link_optional_text: "isteğe bağlı başlık" + link_url_placeholder: "Arama konularına bir URL yapıştırın veya yazın" quote_title: "Blok-alıntı" quote_text: "Blok-alıntı" code_title: "Önceden biçimlendirilmiş yazı" @@ -1528,6 +1581,7 @@ tr_TR: label: "Paylaşılan Taslak" desc: "Sadece görevli tarafından görülebilecek bir konu tasarla" toggle_topic_bump: + label: "Konu detaylarını değiştir" desc: "Son cevap tarihini değiştirmeden yanıtla" notifications: tooltip: @@ -1553,6 +1607,9 @@ tr_TR: liked_many: one: "{{username}}, {{username2}} ve {{count}} diğer {{description}}" other: "{{username}}, {{username2}} ve {{count}} diğer {{description}}" + liked_consolidated_description: + one: "gönderilerinizden {{count}} tanesi beğenildi" + other: "gönderilerinizden {{count}} tanesi beğenildi" liked_consolidated: "{{username}} {{description}}" private_message: "{{username}} {{description}}" invited_to_private_message: "

    {{username}} {{description}}" @@ -1563,6 +1620,11 @@ tr_TR: granted_badge: "'{{description}}' kazandı" topic_reminder: "{{username}} {{description}}" watching_first_post: "Yeni Konu {{description}}" + membership_request_accepted: "'{{group_name}}' üyeliğine kabul edildi" + membership_request_consolidated: "{{count}} '{{group_name}}' için açık üyelik talepleri" + group_message_summary: + one: "{{group_name}} gelen kutunuzdaki {{count}} mesaj var" + other: "{{group_name}} gelen kutunuzda {{count}} mesajları" popup: mentioned: '{{username}}, "{{topic}}" başlıklı konuda sizden bahsetti - {{site_title}}' group_mentioned: '{{username}} sizden bahsetti "{{topic}}" - {{site_title}}' @@ -1592,6 +1654,7 @@ tr_TR: topic_reminder: "konu hatırlatıcısı" liked_consolidated: "yeni beğeniler" post_approved: "gönderi onaylandı" + membership_request_consolidated: "Yeni üyelik talepleri" upload_selector: title: "Resim ekle" title_with_attachments: "Resim ya da dosya ekle" @@ -1637,6 +1700,7 @@ tr_TR: context: user: "@{{username}} kullancısına ait gönderilerde ara" category: "#{{category}} kategorisini ara" + tag: "# {{tag}} etiketini arayın" topic: "Bu konuyu ara" private_messages: "Mesajlarda ara" advanced: @@ -2137,8 +2201,10 @@ tr_TR: attachment_upload_not_allowed_for_new_user: "Üzgünüz, yeni kullanıcılar dosya yükleyemez." attachment_download_requires_login: "Üzgünüz, eklentileri indirebilmek için giriş yapman gerekiyor." abandon_edit: + confirm: "Değişikliklerinizi silmek istediğinizden emin misiniz?" no_value: "Hayır, kalsın" no_save_draft: "Hayır, taslağı kaydet" + yes_value: "Evet, düzenlemeyi iptal et" abandon: confirm: "Gönderinden vazgeçtiğine emin misin?" no_value: "Hayır, kalsın" @@ -2281,6 +2347,9 @@ tr_TR: tag_groups_placeholder: "(Seçmeli) izin verilen etiket gruplarının listesi" manage_tag_groups_link: "Etiket gruplarını burada yönetin." allow_global_tags_label: "Diğer etiketlere de izin ver" + tag_group_selector_placeholder: "(Opsiyonel) Etiket grubu" + min_tags_from_required_group_label: "Etiketler:" + required_tag_group_label: "Etiket grubu:" topic_featured_link_allowed: "Bu kategoride özellikli bağlantılara izin ver" delete: "Kategoriyi Sil" create: "Yeni Kategori" @@ -2316,7 +2385,6 @@ tr_TR: email_in_disabled: "E-posta üzerinden yeni konu oluşturma özelliği Site Ayarları'nda devre dışı bırakılmış. E-posta üzerinden yeni konu oluşturma özelliğini etkinleştirmek için," email_in_disabled_click: '"e-posta" ayarını etkinleştir' mailinglist_mirror: "Kategori bir e-posta listesini yansıtır" - suppress_from_latest: "Kategoriyi son konulardan gizle" show_subcategory_list: "Bu kategorideki alt kategori listesini üst başlıklarda göster" num_featured_topics: "Kategoriler sayfasında gösterilen konu sayısı:" subcategory_num_featured_topics: "Üst kategori sayfasındaki öne çıkan konuların sayısı:" @@ -2575,6 +2643,9 @@ tr_TR: keyboard_shortcuts_help: shortcut_key_delimiter_comma: "," shortcut_key_delimiter_plus: "+" + shortcut_delimiter_or: "%{shortcut1} veya %{shortcut2}" + shortcut_delimiter_slash: "%{shortcut1}/%{shortcut2}" + shortcut_delimiter_space: "%{shortcut1} %{shortcut2}" title: "Klavye Kısayolları" jump_to: title: "Şuraya git" @@ -2679,6 +2750,7 @@ tr_TR: changed: "değişen etiketler:" tags: "Etiketler" choose_for_topic: "opsiyonel etiketler" + add_synonyms: "Ekle" delete_tag: "Etiketi Sil" delete_confirm_no_topics: "Bu etiketi silmek istediğinize emin misiniz?" rename_tag: "Etiketi Yeniden Adlandır" @@ -2726,6 +2798,7 @@ tr_TR: parent_tag_description: "Bu gruptaki etiketler üst etiket olduğu sürece kullanılamaz." one_per_topic_label: "Bu etiket grubundan her konu için bir etiket ile sınır koy" new_name: "Yeni Etiket Grubu" + name_placeholder: "Etiket Grubu Adı" save: "Kaydet" delete: "Sil" confirm_delete: "Bu etiket grubunu silmek istediğine emin misin?" @@ -2764,6 +2837,7 @@ tr_TR: tags: remove_muted_tags_from_latest: always: "her zaman" + only_muted: "tek başına veya diğer sessize alınmış etiketlerle kullanıldığında" never: "asla" reports: title: "Mevcut raporlar listesi" @@ -2888,6 +2962,7 @@ tr_TR: membership: automatic: Otomatik trust_levels_title: "Güven seviyesi, üyelere -eklendiklerinde- otomatik olarak verilir:" + effects: Etkileri trust_levels_none: "Hiçbiri" automatic_membership_email_domains: "Listede, e-posta alan adıyla tam olarak eşleşen kayıtlı kullanıcılar, otomatik olarak bu gruba eklenir:" automatic_membership_retroactive: "Mevcut kayıtlı kullanıcıları eklemek için aynı e-posta alanı kuralını uygula" @@ -2918,13 +2993,30 @@ tr_TR: none: "Şu an etkin API anahtarı bulunmuyor." user: "Kullanıcı" title: "API" + key: "anahtar" created: Oluşturuldu + updated: Güncellenmiş + last_used: Son kullanılan + never_used: (asla) generate: "Oluştur" + undo_revoke: "İptal Etmeyi Geri Al" revoke: "İptal Et" all_users: "Tüm Kullanıcılar" + active_keys: "Aktif API Anahtarları" + manage_keys: Anahtarları Yönet show_details: Detaylar description: Açıklama + no_description: (açıklama yok) + all_api_keys: Tüm API Anahtarları + user_mode: Kullanıcı Seviyesi + impersonate_all_users: Herhangi bir kullanıcı rolüne gir + single_user: "Tekil kullanıcı" + user_placeholder: Kullanıcı adı girin + description_placeholder: "Bu anahtar ne için kullanılacak?" save: Kaydet + new_key: Yeni API Anahtarı + revoked: İptal edilmiş + delete: Kalıcı Sil web_hooks: title: "Web Kancaları" none: "Şu anda bir web kancası yok." @@ -2982,6 +3074,11 @@ tr_TR: queued_post_event: name: "Etkinlik Onayı Gönderisi" details: "Yeni bir kuyruklu posta oluşturulduğunda, onaylanan veya reddedilen." + reviewable_event: + name: "Görüntülenebilen Etkinlik" + notification_event: + name: "Bildirim etkinliği" + details: "Bir kullanıcı yayınında bir bildirim aldığında." delivery_status: title: "Teslim Durumu" inactive: "Aktif Değil" @@ -3080,6 +3177,7 @@ tr_TR: confirm: "Veritabanını çalışan son haline döndürmek istediğine emin misin?" location: local: "Yerel Depolama" + s3: "S3" export_csv: success: "Dışa aktarma işlemi başlatıldı. İşlem tamamlandığında mesajla bilgilendirileceksin." failed: "Dışa aktarımda bir hata oluştu. Lütfen kayıtları kontrol et." @@ -3122,6 +3220,13 @@ tr_TR: revert_confirm: "Değişiklikleri geri almak istediğine emin misin?" theme: theme: "Tema" + component: "Bileşen" + components: "Bileşenler" + theme_name: "Tema adı" + component_name: "Bileşen Adı" + themes_intro: "Başlamak için mevcut bir tema seçin veya yeni bir tema\n yükleyin" + beginners_guide_title: "Başlangıç Temalarını Kullanma Kılavuzu" + developers_guide_title: "Forum Temaları için Geliştirici kılavuzu" browse_themes: "Topluluk temalarına göz atın" customize_desc: "Kişiselleştir:" title: "Temalar" @@ -3131,19 +3236,35 @@ tr_TR: long_title: "Sitenin renklerini, CSS ve HTML içeriğini değiştir" edit: "Düzenle" edit_confirm: "Bu, uzak bir temadır. Eğer CSS / HTML'yi düzenlersen, temayı güncellediğinde değişiklikler silinir." + update_confirm: "Bu yerel değişiklikler güncelleme ile silinecektir. Devam etmek istediğine emin misin?" + update_confirm_yes: "Evet, güncellemeye devam et" common: "Ortak" desktop: "Masaüstü" mobile: "Mobil" settings: "Ayarlar" translations: "Çeviriler" + extra_scss: "Ekstra SCSS" preview: "Önizleme" + show_advanced: "Gelişmiş klasörleri göster" + hide_advanced: "Gelişmiş klasörleri gizle" + hide_unused_fields: "Kullanılmayan alanları gizle" is_default: "Tema varsayılan olarak etkinleştirildi" user_selectable: "Tema kullanıcılar tarafından seçilebilir" color_scheme: "Renk Paleti" color_scheme_select: "Temada kullanılacak renkleri seç" custom_sections: "İsteğe uyarlanmış bölümler:" theme_components: "Tema Öğeleri" + add_all_themes: "Tüm temaları ekle" convert: "Dönüştür" + convert_component_tooltip: "Bu bileşeni temaya dönüştür" + convert_theme_tooltip: "Bu temayı bileşene dönüştür" + inactive_themes: "Etkin olmayan temalar:" + inactive_components: "Kullanılmayan bileşenler:" + broken_theme_tooltip: "Bu temanın CSS, HTML veya YAML kodlarında hata var" + disabled_component_tooltip: "Bu bileşen inaktif" + default_theme_tooltip: "Bu tema sitenin varsayılan temasıdır" + updates_available_tooltip: "Bu tema için güncellemeler var" + and_x_more: "ve {{count}} tane daha." collapse: Daralt uploads: "Yüklemeler" no_uploads: "Fontlar ve resimler gibi temayla ilişkili varlıkları yükleyebilirsin" @@ -3156,27 +3277,40 @@ tr_TR: no_overwrite: "Geçersiz değişken adı. Mevcut bir değişkenin üzerine yazılmamalıdır." must_be_unique: "Geçersiz değişken adı. Benzersiz olmalıdır." upload: "Yükle" + select_component: "Bir bileşen seçin..." + unsaved_changes_alert: "Değişikliklerinizi henüz kaydetmediniz, Silmek ve devam etmek istediğinize emin misiniz?" discard: "At" stay: "Kalmak" css_html: "İsteğe uyarlanmış CSS/HTML" edit_css_html: "CSS/HTML Düzenle" edit_css_html_help: "Herhangi bir CSS veya HTML düzenlemedin" delete_upload_confirm: "Yükleme silinsin mi?(Tema CSS çalışmayı durdurabilir!)" + component_on_themes: "Bu temalara bileşen ekle" import_web_tip: "Veri havuzu içeren tema" import_web_advanced: "Gelişmiş..." + import_file_tip: "tema içeren .tar.gz, .zip veya .dcstyle.json dosyası" is_private: "Tema özel bir git veri havuzunda" remote_branch: "Şube adı (isteğe bağlı)" public_key: "Repo'ya aşağıdaki genel anahtar erişimini ver:" install: "Yükle" installed: "Yüklendi" install_popular: "Gözde" + install_upload: "Cihazınızdan" + install_git_repo: "Git deposundan" install_create: "Yeni oluştur" about_theme: "Hakkında" license: "Lisans" version: "Versiyon:" + authors: "Yazan:" source_url: "Kaynak" enable: "Etkinleştir" disable: "Devre dışı bırak" + disabled: "Bu bileşen devre dışı bırakıldı." + disabled_by: "Bu bileşeni devre dışı bırakan kişi" + required_version: + error: "Bu tema otomatik olarak devre dışı bırakıldı çünkü forum bu sürüm ile uyumlu değil." + minimum: "Forum sürümü {{version}} veya üstünü gerektirir." + maximum: "Forum sürümü {{version}} veya daha düşük gerektirir." component_of: "Bileşen:" update_to_latest: "Sona Doğru Güncelle" check_for_updates: "Güncellemeleri kontrol et" @@ -3185,6 +3319,14 @@ tr_TR: add: "Ekle" theme_settings: "Tema Ayarları" no_settings: "Bu temada ayarlar mevcut değil." + theme_translations: "Tema Çevirileri" + empty: "Öğe yok" + commits_behind: + one: "%{count} temalar geride kaldı!" + other: "{{count}} tema geride kaldı!" + compare_commits: "(Yeni yorumlara bakınız)" + repo_unreachable: "Bu temanın Git deposuyla bağlantı kurulamadı. Hata mesajı:" + imported_from_archive: "Bu tema bir .zip dosyasından içe aktarıldı" scss: text: "CSS" title: "İsteğe uyarlanmış CSS'yi gir. Tüm geçerli CSS ve SCSS tiplerini kabul ediyoruz. " @@ -3210,11 +3352,20 @@ tr_TR: text: "YAML" title: "Tema ayarlarını YAML formatında tanımla" colors: + select_base: + title: "Temel renk paletini seç" + description: "Temel palet:" title: "Renkler" + edit: "Renk Paletlerini Düzenle" + long_title: "Renk Paletleri" + about: "Temalarında kullandığın renkleri değiştir. Başlamak için yeni bir renk paleti oluştur." + new_name: "Yeni Renk Paleti" copy_name_prefix: "Kopyası" + delete_confirm: "Bu renk paletini sil?" undo: "geri al" undo_title: " Son kayıt esnasında yapılan bu renkteki değişiklikleri geri al." revert: "eski haline getir" + revert_title: "Bu rengi Discourse'un varsayılan renk paletine sıfırla." primary: name: "Ana" description: "Çoğu yazı, ikonlar ve kenarlar" @@ -3245,13 +3396,20 @@ tr_TR: love: name: "sevgi" description: "Beğen düğmesinin rengi." + robots: + title: "Sitenizin robots.txt dosyasını geçersiz kılın:" + warning: "Bu, ilgili tüm site ayarlarını kalıcı olarak geçersiz kılar." email_style: css: "CSS" + reset: "Varsayılana sıfırla" + save_error_with_reason: "Değişiklikleriniz kaydedilmedi. %{error}" email: title: "E-postalar" settings: "Ayarlar" templates: "Şablonlar" preview_digest: "Özeti Önizle" + advanced_test: + email: "Orjinal ileti" sending_test: "Test e-postası gönderiliyor..." error: "HATA - %{server_error}" test_error: "Test e-postasının gönderilmesinde sorun yaşandı. Lütfen e-posta ayarlarını tekrar kontrol et, yer sağlayıcının e-posta bağlantılarını engellemediğinden emin ol ve tekrar dene." @@ -3318,6 +3476,7 @@ tr_TR: silence_user: "Kullanıcı Susturuldu" delete_post: "Gönderi Silindi" delete_topic: "Konu Silindi" + post_approved: "Gönderi Onaylandı" logs: title: "Kayıtlar" action: "Eylem" @@ -3409,6 +3568,17 @@ tr_TR: change_badge: "rozet değiştir" delete_badge: "rozet sil" merge_user: "kullanıcıyı birleştir" + change_name: "isim değiştir" + approve_user: "onaylanmış kullanıcı" + web_hook_create: "webhook oluştur" + web_hook_update: "webhook'u güncelle" + web_hook_destroy: "webhook'u yok et" + web_hook_deactivate: "webhook'u devre dışı bırak" + change_title: "başlığı değiştir" + api_key_create: "api anahtarı oluştur" + api_key_update: "api anahtarını güncelleştir" + api_key_destroy: "api anahtarını yok et" + override_upload_secure_status: "yükleme güvenlik durumunu geçersiz kıl" screened_emails: title: "Taranmış E-postalar" description: "Biri yeni bir hesap oluşturmaya çalıştığında aşağıdaki e-posta adresleri kontrol edilecek ve kayıt önlenecek ya da başka bir eylem gerçekleşecek." @@ -3456,6 +3626,7 @@ tr_TR: search: "ara" clear_filter: "Temizle" show_words: "kelimeleri göster" + one_word_per_line: "Satır başına bir kelime" download: İndir clear_all: Tümünü Temizle word_count: @@ -3478,6 +3649,7 @@ tr_TR: add: "Ekle" success: "Başarılı" exists: "Zaten mevcut" + upload: "Dosyadan ekle" upload_successful: "Yükleme başarılı oldu. Kelimeler eklendi." test: button_label: "Deneme" @@ -3493,7 +3665,9 @@ tr_TR: last_emailed: "Son E-posta Gönderimi" not_found: "Üzgünüz, bu kullanıcı adı sistemimizde bulunmuyor. " id_not_found: "Üzgünüz, bu kullanıcı kimliği sistemimizde bulunmuyor." + active: "Etkinleştirildi" show_emails: "E-postaları Göster" + hide_emails: "E-postaları gizle" nav: new: "Yeni" active: "Aktif" @@ -3545,8 +3719,11 @@ tr_TR: suspended_until: "(%{until} a kadar)" cant_suspend: "Bu kullanıcı askıya alınamaz." delete_all_posts: "Tüm gönderileri sil" + delete_posts_progress: "Gönderiler siliniyor..." + delete_posts_failed: "Gönderiler silinirken bir sorun oluştu." penalty_post_actions: "İlişkili gönderi ile ne yapmak istiyorsun? " penalty_post_delete: "Gönderiyi sil" + penalty_post_delete_replies: "Bu gönderi ve bütün cevapları sil" penalty_post_edit: "Gönderiyi düzenle" penalty_post_none: "Hiçbir şey yapma" penalty_count: "Ceza Sayımı" @@ -3669,6 +3846,8 @@ tr_TR: likes_received: "Alınan Beğeniler" likes_received_days: "Alınan beğeniler: Benzersiz günlerde" likes_received_users: "Alınan beğeniler: Benzersiz kullanıcılar" + suspended: "Askıya alındı (6 ay)" + silenced: "Susturuldu (6 ay)" qualifies: "Güven seviyesi 3 için hak kazanan" does_not_qualify: "Güven seviyesi 3 için yeterli değil." will_be_promoted: "Yakında yükseltilecek." @@ -3738,6 +3917,7 @@ tr_TR: clear_filter: "Temizle" add_url: "URL ekle" add_host: "sunucu ekle" + add_group: "grup ekle" uploaded_image_list: label: "Listeyi düzenle" empty: "Henüz hiç resim yok. Lütfen bir tane yükle." @@ -3774,6 +3954,8 @@ tr_TR: search: "Arama" groups: "Gruplar" dashboard: "Gösterge Paneli" + secret_list: + invalid_input: "Giriş alanları boş olamaz veya özel karakter içeremez." default_categories: modal_yes: "Evet" badges: @@ -3889,7 +4071,10 @@ tr_TR: add: "Ekle" filter: "Ara (URL veya Harici URL)" reseed: + action: + label: "Metni Değiştir…" modal: + title: "Metni Değiştir" categories: "Kategoriler" topics: "Konular" replace: "Değiştir" diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml index b5c66d5387..c31bc7415e 100644 --- a/config/locales/client.uk.yml +++ b/config/locales/client.uk.yml @@ -827,6 +827,7 @@ uk: collapse_profile: "Згорнути" bookmarks: "Закладки" bio: "Про мене" + timezone: "Часовий пояс" invited_by: "Запрошений(а)" trust_level: "Рівень довіри" notifications: "Сповіщення" @@ -1437,7 +1438,6 @@ uk: second_factor_backup_description: "Введіть запасний код:" second_factor: "Увійти за допомогою програми аутентифікації" security_key_description: "Коли ви підготуєте свій фізичний ключ безпеки, натисніть кнопку Аутентификация з ключем безпеки нижче." - security_key_alternative: "Неможливо знайти ключ безпеки або хочете використовувати інший метод?" security_key_authenticate: "Аутентифікація з Ключем Безпеки." security_key_not_allowed_error: "Час перевірки автентичності ключа безпеки минув або було скасовано." security_key_no_matching_credential_error: "У зазначеному ключі безпеки не знайдено відповідних облікових даних." @@ -2605,7 +2605,6 @@ uk: email_in_disabled: "Створення нових тем через електронну пошту відключено в налаштуваннях сайту. Щоб дозволити створення нових тем через електронну пошту," email_in_disabled_click: 'активуйте налаштування "email in".' mailinglist_mirror: "Категорія відображає список розсилки" - suppress_from_latest: "Приховати категорію з останніх тем." show_subcategory_list: "Показувати список підрозділів над списком тем в цьому розділі." num_featured_topics: "Кількість тем на сторінці розділів" subcategory_num_featured_topics: "Кількість обраних тем на сторінці батьківської категорії:" @@ -3015,6 +3014,7 @@ uk: changed: "мітки змінилися:" tags: "Мітки" choose_for_topic: "необов'язкові мітки" + add_synonyms: "Додати" delete_tag: "Вилучити мітку" delete_confirm: one: "Ви впевнені, що хочете вилучити цю мітку і прибрати її з %{count} теми, де вона використана?" diff --git a/config/locales/client.ur.yml b/config/locales/client.ur.yml index 8e4bbc06d1..e39cf8ba28 100644 --- a/config/locales/client.ur.yml +++ b/config/locales/client.ur.yml @@ -747,6 +747,7 @@ ur: collapse_profile: "بند کریں" bookmarks: "بُکمارکس" bio: "سائٹ کے بارے میں" + timezone: "ٹائم زون" invited_by: "کی طرف سے مدعو کیا گیا:" trust_level: "ٹرسٹ لَیول" notifications: "اطلاعات" @@ -2389,7 +2390,6 @@ ur: email_in_disabled: "ویب سائٹ کی سیٹِنگ میں اِیمیل کے ذریعے نئے ٹاپک پوسٹ کرنا غیر فعال کیا ہوا ہے۔ اِیمیل کے ذریعے نئے ٹاپک شائع کرنے کو چالو کرنے کے لئے،" email_in_disabled_click: 'سیٹِنگ میں "اِیمیل اِن" فعال کریں۔' mailinglist_mirror: "زُمرہ میلنگ فہرست کا عکس ہے" - suppress_from_latest: "تازہ ترین ٹاپکس سے زُمرہ کو دبائیں۔" show_subcategory_list: "اس زمرہ میں ذیلی زمرہ جات کی فہرست ٹاپکس سے مندرجہ بالا دکھائیں۔" num_featured_topics: "زمرہ کے صفحے پر دکھائے گئے ٹاپکس کی تعداد:" subcategory_num_featured_topics: "بالائی زمرہ کے صفحے پر دکھائے گئے نمایاں ٹاپکس کی تعداد:" @@ -2761,6 +2761,7 @@ ur: changed: "تبدیل کیے گئے ٹیگ:" tags: "ٹیگز" choose_for_topic: "اختیاری ٹیگز" + add_synonyms: "شامل کریں" delete_tag: "ٹیگ حذف کریں" delete_confirm: one: "کیا آپ واقعی اس ٹیگ کو حذف اور %{count} ٹاپک، جس کو یہ آسائین ہواوا ہے، سے ہٹا دینا چاہتے ہیں؟" diff --git a/config/locales/client.vi.yml b/config/locales/client.vi.yml index c8444adb61..4c853c59fc 100644 --- a/config/locales/client.vi.yml +++ b/config/locales/client.vi.yml @@ -782,6 +782,7 @@ vi: title: "Xác minh hai bước" name: "Tên" show_key_description: "Nhập thủ công" + oauth_enabled_warning: "Xin lưu ý rằng thông tin đăng nhập xã hội sẽ bị vô hiệu hóa khi xác thực hai yếu tố đã được bật trên tài khoản của bạn." edit: "Sửa" security_key: delete: "Xóa" @@ -1102,6 +1103,7 @@ vi: trust_level: "Độ tin tưởng" search_hint: "username, email or IP address" create_account: + disclaimer: "Bằng cách đăng ký, bạn đồng ý với chính sách bảo mậtđiều khoản dịch vụ." title: "Tạo tài khoản mới" failed: "Có gì đó không đúng, có thể email này đã được đăng ký, thử liên kết quên mật khẩu" forgot_password: @@ -1120,6 +1122,10 @@ vi: email_login: link_label: "Gửi liên kết đăng nhập qua email" button_label: "với email" + complete_username: "Nếu một tài khoản khớp với tên người dùng %{username}, bạn sẽ sớm nhận được email có liên kết đăng nhập." + complete_email: "Nếu một tài khoản phù hợp với %{email}, bạn sẽ sớm nhận được email có liên kết đăng nhập." + complete_username_found: "Chúng tôi đã tìm thấy một tài khoản phù hợp với tên người dùng %{username}, bạn sẽ sớm nhận được email có liên kết đăng nhập." + complete_email_found: "Chúng tôi đã tìm thấy một tài khoản phù hợp với %{email}, bạn sẽ sớm nhận được email có liên kết đăng nhập." complete_username_not_found: "Không có tài khoản phù hợp với tên thành viên %{username} " complete_email_not_found: "Không tìm thấy tài khoản nào tương ứng với %{email}" confirm_title: "Tiếp tục tới %{site_name}" @@ -1174,6 +1180,7 @@ vi: accept_title: "Lời mời" welcome_to: "Chào mừng bạn đến với %{site_name}!" invited_by: "Bạn đã được mời bởi:" + social_login_available: "Bạn cũng có thể đăng nhập bằng bất kỳ thông tin đăng nhập xã hội nào bằng email đó." your_email: "Địa chỉ email của bạn là %{email}." accept_invite: "Chấp nhận lời mời" name_label: "T" @@ -1295,6 +1302,7 @@ vi: post_approved: "Bài đăng của bạn đã được phê duyệt" liked_consolidated_description: other: "đã thích {{count}} bài viết của bạn" + invited_to_private_message: "

    {{username}}{{description}}" invitee_accepted: "{{username}} đã chấp nhận lời mời của bạn" moved_post: "{{username}} đã chuyển {{description}}" popup: @@ -1331,11 +1339,14 @@ vi: select_all: "Chọn tất cả" clear_all: "Xóa tất cả" too_short: "Từ khoá tìm kiếm của bạn quá ngắn." + result_count: + other: "Hơn {{count}}{{plus}} kết quả cho{{term}}" title: "tìm kiếm chủ đề, bài viết, tài khoản hoặc các danh mục" no_results: "Không tìm thấy kết quả." no_more_results: "Không tìm thấy kết quả" searching: "Đang tìm ..." post_format: "#{{post_number}} bởi {{username}}" + results_page: "Kết quả tìm kiếm cho '{{term}}'" search_google_button: "G" search_google_title: "Tìm trong trang n" context: @@ -2125,6 +2136,7 @@ vi: selector_no_tags: "không có thẻ" changed: "thẻ đã đổi:" tags: "Thẻ" + add_synonyms: "Thêm" delete_tag: "Xoá thẻ" rename_tag: "Đổi tên thẻ" rename_instructions: "Chọn tên mới cho thẻ:" @@ -2201,9 +2213,14 @@ vi: private_messages_title: "Tin nhắn" mobile_title: "Điện thoại" backups: "Sao lưu" + backup_count: + other: "%{count} bản sao lưu trên %{location}" traffic_short: "Băng thông" traffic: "Application web requests" + page_views: "Số lượt xem" + page_views_short: "Số lượt xem" show_traffic_report: "Xem chi tiết Báo cáo Lưu lượng" + moderators_activity: Người điều hành hoạt động general_tab: "Chung" security_tab: "Bảo mật" report_filter_any: "bất kì" @@ -2395,12 +2412,18 @@ vi: mobile: "Điện thoại" settings: "Xác lập" upload: "Tải lên" + import_web_tip: "Kho chứa chủ đề" + is_private: "Theme nằm trong kho git riêng" installed: "Đã cài đặt" install_popular: "Phổ biến" + install_git_repo: "Từ kho git" about_theme: "Giới thiệu" enable: "Kích hoạt" disable: "Vô hiệu hóa" + update_to_latest: "Cập nhật lên mới nhất" + up_to_date: "Chủ đề được cập nhật, kiểm tra lần cuối:" add: "Thêm" + repo_unreachable: "Không thể liên hệ với kho Git chứa chủ đề này. Thông báo lỗi:" scss: text: "CSS" header: @@ -2510,6 +2533,9 @@ vi: address_placeholder: "name@example.com" type_placeholder: "tập san, đăng ký..." reply_key_placeholder: "key phản hồi" + moderation_history: + actions: + suspend_user: "Thành viên đã tạm ngưng" logs: title: "Log" action: "Hành động" @@ -2566,6 +2592,7 @@ vi: revoke_admin: "hủy bỏ quản trị" grant_moderation: "cấp điều hành" revoke_moderation: "hủy bỏ điều hành" + activate_user: "kích hoạt thành viên" screened_emails: title: "Screened Emails" description: "Khi ai đó cố gắng tạo tài khoản mới, các địa chỉ email sau sẽ được kiểm tra và đăng ký sẽ bị chặn, hoặc một số hành động khác được thực hiện." @@ -2597,6 +2624,8 @@ vi: text: "Cuộn lên" title: "Tạo mạng con mới các entry cấm nếu có ít nhất 'min_ban_entries_for_roll_up' entry." search_logs: + term: "Thuật ngữ" + searches: "Số lần tìm kiếm" types: header: "Header" logster: @@ -2657,6 +2686,7 @@ vi: suspend_reason: "Lý do" suspended_by: "Tạm khóa bởi" silence_reason: "Lý do" + cant_suspend: "Thành viên này không thể bị tạm ngưng" delete_all_posts: "Xóa tất cả bài viết" moderator: "Mod?" admin: "Quản trị?" diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml index efaf77a281..75ec32e6c7 100644 --- a/config/locales/client.zh_CN.yml +++ b/config/locales/client.zh_CN.yml @@ -312,6 +312,7 @@ zh_CN: title: "待审阅项目由较高信任级别且具有较高分数的用户创建的。" type_bonus: name: "奖励类型" + title: "某些可审核的类型可以由管理人员加权,以使其具有更高的优先级。" claim_help: optional: "你可以认领此条目以防止他人审核。" required: "在你审核之前你必须认领此条目。" @@ -706,6 +707,7 @@ zh_CN: collapse_profile: "折叠" bookmarks: "收藏" bio: "我是谁" + timezone: "时区" invited_by: "邀请人" trust_level: "信任等级" notifications: "通知" @@ -839,6 +841,7 @@ zh_CN: copied_to_clipboard: "已复制到剪贴板" copy_to_clipboard_error: "复制到剪贴板时出错" remaining_codes: "你有{{count}}个备份码" + use: "使用备份码" enable_prerequisites: "你必须在生成备份代码之前启用主要第二因素。" codes: title: "备份码生成" @@ -846,6 +849,7 @@ zh_CN: second_factor: title: "双重验证" enable: "管理两步验证" + forgot_password: "忘记密码?" confirm_password_description: "确认密码以继续" name: "名称" label: "编码" @@ -859,6 +863,7 @@ zh_CN: extended_description: | 双重身份验证除了你的密码之外还需要一次性令牌,从而为你的帐户增加了额外的安全性。 可以在AndroidiOS设备。 oauth_enabled_warning: "请注意,一旦你的帐户启用了双重身份验证,系统就会停用社交登录。" + use: "使用身份验证器app" enforced_notice: "在访问此站点之前,你需要启用双重身份验证。" disable: "停用" disable_title: "禁用次要身份验证器" @@ -866,12 +871,20 @@ zh_CN: edit: "编辑" edit_title: "编辑次要身份验证器" edit_description: "次要身份验证器名称" + enable_security_key_description: "当你准备好物理安全密钥后,请按下面的“注册”按钮。" totp: title: "基于凭证的身份验证器" add: "新增身份验证器" default_name: "我的身份验证器" security_key: register: "注册" + title: "安全密钥" + add: "注册安全密钥" + default_name: "主要安全密钥" + not_allowed_error: "安全密钥注册过程已超时或被取消。" + already_added_error: "你已注册此安全密钥,无需再次注册。" + edit: "编辑安全密钥" + edit_description: "安全密钥名称" delete: "删除" change_about: title: "更改个人信息" @@ -900,6 +913,7 @@ zh_CN: image_is_not_a_square: "注意:图片不是正方形的,我们裁剪了部分图像。" change_profile_background: title: "个人档头部" + instructions: "个人资料的页头会被居中显示且默认宽度为1110px。" change_card_background: title: "用户卡背景" instructions: "显示在用户卡片中,上传的图片将被居中且默认宽度为 590px。" @@ -1170,6 +1184,7 @@ zh_CN: login_disabled: "只读模式下不允许登录。" logout_disabled: "站点在只读模式下无法登出。" too_few_topics_notice: "让我们开始讨论吧!现在有%{currentTopics}个主题。 用户需要进行更多阅读与回复 – 我们推荐至少%{requiredTopics} 个主题。 此消息仅管理员可见。" + too_few_posts_notice: "让我们开始讨论吧!现在有%{currentPosts}个主题。 用户需要进行更多的阅读或回复 – 我们推荐至少%{requiredPosts} 个主题。 此消息仅管理人员可见。" logs_error_rate_notice: reached_hour_MF: "{relativeAge}{rate, plural, one {# error/hour} other {# errors/hour}}达到了站点设置中的限制{limit, plural, one {# error/hour} other {# errors/hour}}。" reached_minute_MF: "{relativeAge}1 – {rate, plural, one {# error/minute} other {# errors/minute}}已经达到站点设置限制 {limit, plural, one {# error/minute} other {# errors/minute}}。" @@ -1264,12 +1279,16 @@ zh_CN: password: "密码" second_factor_title: "双重验证" second_factor_description: "请输入来自 app 的验证码:" + second_factor_backup: "使用备用码登录" second_factor_backup_title: "两步验证备份" second_factor_backup_description: "请输入你的备份码:" - security_key_alternative: "找不到您的安全密钥,是否要使用其他方法?" + second_factor: "使用身份验证器app登录" + security_key_description: "当你准备好物理安全密钥后,请按下面的“使用安全密钥进行身份验证”按钮。" + security_key_alternative: "尝试另一种方式" security_key_authenticate: "使用安全密钥进行身份验证" security_key_not_allowed_error: "安全密钥验证超时或被取消。" security_key_no_matching_credential_error: "在提供的安全密钥中找不到匹配的凭据。" + security_key_support_missing_error: "您当前的设备或浏览器不支持使用安全密钥。请使用其他方法。" email_placeholder: "电子邮件或者用户名" caps_lock_warning: "大写锁定开启" error: "未知错误" @@ -1633,6 +1652,7 @@ zh_CN: context: user: "搜索 @{{username}} 的帖子" category: "搜索 #{{category}} 分类" + tag: "搜索#{{tag}}标签" topic: "搜索本主题" private_messages: "搜索私信" advanced: @@ -2131,8 +2151,10 @@ zh_CN: attachment_upload_not_allowed_for_new_user: "抱歉,新用户无法上传附件。" attachment_download_requires_login: "抱歉,你需要登录后才能下载附件。" abandon_edit: + confirm: "您确定要放弃所做的更改吗?" no_value: "不,保持" no_save_draft: "不,保存草稿" + yes_value: "是的,忽略编辑" abandon: confirm: "确定要放弃编辑帖子吗?" no_value: "否" @@ -2272,6 +2294,9 @@ zh_CN: tag_groups_placeholder: "(可选)允许使用的标签组列表" manage_tag_groups_link: "管理这里的标签组。" allow_global_tags_label: "总是允许其它标题" + tag_group_selector_placeholder: "(可选)标签组" + required_tag_group_description: "要求新主题包含标签组中的标签:" + required_tag_group_label: "标签组:" topic_featured_link_allowed: "允许在该分类中发布特色链接标题" delete: "删除分类" create: "新分类" @@ -2308,7 +2333,6 @@ zh_CN: email_in_disabled: "站点设置中已经禁用通过邮件发表新主题。欲启用通过邮件发表新主题," email_in_disabled_click: '启用“邮件发表”设置。' mailinglist_mirror: "分类镜像了一个邮件列表" - suppress_from_latest: "从最新主题列表中剔除该分类" show_subcategory_list: "在这个分类中把子分类列表显示在主题的上面" num_featured_topics: "分类页面上显示的主题数量:" subcategory_num_featured_topics: "父分类页面上的推荐主题数量:" @@ -2661,6 +2685,7 @@ zh_CN: changed: "标签被修改:" tags: "标签" choose_for_topic: "可选标签" + add_synonyms: "新增" delete_tag: "删除标签" delete_confirm: other: "你确定你想要删除这个标签以及撤销在{{count}}个主题中的关联么?" @@ -2715,6 +2740,7 @@ zh_CN: parent_tag_description: "未设置上级标签前群组内标签无法使用。" one_per_topic_label: "只可给主题设置一个该组内的标签" new_name: "新建标签组" + name_placeholder: "标签组名称" save: "保存" delete: "删除" confirm_delete: "确定要删除此标签组吗?" @@ -2879,6 +2905,7 @@ zh_CN: members_visibility_levels: title: "谁可以看见这个群组的成员?" description: "管理员可以查看所有群组的成员。" + publish_read_state: "在群组消息中发布群组阅读状态" membership: automatic: 自动 trust_levels_title: "这些用户加入时,将自动赋予信任等级:" @@ -2912,14 +2939,30 @@ zh_CN: none: "当前没有可用的 API 密钥。" user: "用户" title: "API" + key: "密钥" created: 创建时间 + updated: 已更新 + last_used: 最后使用 + never_used: (从不) generate: "生成" + undo_revoke: "取消撤销" revoke: "撤销" all_users: "所有用户" + active_keys: "激活API密钥" + manage_keys: 管理密钥 show_details: 详情 description: 描述 + no_description: (没有描述) + all_api_keys: 所有API密钥 + user_mode: 用户等级 + impersonate_all_users: 模拟任意用户 + single_user: "单个用户" + user_placeholder: 输入用户名 + description_placeholder: 此密钥将被如何使用? save: 保存 + new_key: 新建API密钥 revoked: 已撤销 + delete: 永久删除 web_hooks: title: "Webhooks" none: "当前没有 Webhooks。" @@ -3231,6 +3274,7 @@ zh_CN: other: "主题落后了 {{count}} 个变更!" compare_commits: "(查看新提交)" repo_unreachable: "无法联系此主题的Git存储库。错误信息:" + imported_from_archive: "此主题是从一个.zip文件导入的" scss: text: "CSS" title: "输入自定义 CSS,我们接受所有有效的 CSS 和 SCSS 样式" @@ -3498,6 +3542,11 @@ zh_CN: change_theme_setting: "更改主题设置" disable_theme_component: "停用主题组件" enable_theme_component: "启用主题组件" + revoke_title: "撤销头衔" + change_title: "修改头衔" + api_key_create: "创建api密钥" + api_key_update: "更新api密钥" + api_key_destroy: "销毁api密钥" screened_emails: title: "被屏蔽的邮件地址" description: "当有人试图用以下邮件地址注册时,将受到阻止或其它系统操作。" @@ -3883,7 +3932,9 @@ zh_CN: secret_list: invalid_input: "输入字段不能为空或包含竖线字符。" default_categories: + modal_description: "你想在已存在的设置上应用此更改吗?这将更改%{count}位现有用户的首选项。" modal_yes: "是" + modal_no: "不,仅应用以后的更改" badges: title: 徽章 new_badge: 新徽章 diff --git a/config/locales/client.zh_TW.yml b/config/locales/client.zh_TW.yml index 6c876ea1ec..b2ac44fd20 100644 --- a/config/locales/client.zh_TW.yml +++ b/config/locales/client.zh_TW.yml @@ -2195,7 +2195,6 @@ zh_TW: email_in_disabled: "\"用電子郵件張貼新的話題\"功能已被關閉。若要使用此功能," email_in_disabled_click: '請啟用"email in"功能' mailinglist_mirror: "以類別來區分郵件列表" - suppress_from_latest: "從最新話題中不顯示此分類" show_subcategory_list: "在此分類中,將子分類顯示在話題上方。" num_featured_topics: "分類頁面中顯示的話題數量:" subcategory_num_featured_topics: "類別頁上的精選話題數量:" @@ -2539,6 +2538,7 @@ zh_TW: changed: "標籤被修改:" tags: "標籤" choose_for_topic: "可選標籤" + add_synonyms: "新增" delete_tag: "刪除標籤" delete_confirm: other: "您確定要刪除此標籤並將它從{{count}}個話題中移除嗎?" diff --git a/config/locales/server.ar.yml b/config/locales/server.ar.yml index ac62eb1e1d..d503fe12ec 100644 --- a/config/locales/server.ar.yml +++ b/config/locales/server.ar.yml @@ -574,9 +574,6 @@ ar: error: "حدث خطأ في تغيير عنوان بريدك الإلكتروني. لربما يكون العنوان مستخدما بالفعل." error_staged: "حدث خطأ في تغيير عنوان بريدك الإلكتروني. العنوان الذى ادخلته مستخدم من قبل مشترك عبر البريد الالكترونى." already_done: "نأسف عنوان التاكيد هدا لم يعد صالحا بعد الان. ربما تم تغيير بريدك بالفعل؟" - authorizing_old: - title: "شكرا لك لتاكيدك عنوان بريدك الحالي." - description: "نحن الان نقوم بمراسله عنوانك الجديد للتأكيد." activation: action: "انقر هنا لتنشيط حسابك." already_done: "آسفون، لم يعد رابط تأكيد الحساب صالحا. لربما يكون الحساب نشطا بالفعل." @@ -1453,20 +1450,8 @@ ar: subject_template: "حسابك الجديد [%{email_prefix}]" confirm_new_email: subject_template: "أكّد عنوان بريد الإلكتروني الجديد %{email_prefix}" - text_body_template: | - أكد عنوان بريدك الإلكتروني لـ %{site_name} بالضغط على الرابط التالي : - - %{email_token}/u/confirm-new-email/%{base_url} confirm_old_email: subject_template: "أكّد عنوان بريد الإلكتروني الحالي %{email_prefix}" - text_body_template: | - قبل أن نُغيّر عنوان بريد الإلكتروني ، نحتاجك إلى تأكيد تحكمك - بالبريد الالكتروني الحالي للحساب ، بعد إكمال هذه الخطوة ، سوف نؤكد لك - عنوان البريد الإلكتروني الجديد . - - أكّد عنوان بريدك الإلكتروني الحالي لـ %{site_name} بالضغط على الرابط التالي : - - %{email_token}/u/confirm-old-email/%{base_url} notify_old_email: subject_template: "عنوان بريد الإلكتروني تم تغييرة %{email_prefix}" signup_after_approval: diff --git a/config/locales/server.be.yml b/config/locales/server.be.yml index 7a9b317c5f..978ccf24f0 100644 --- a/config/locales/server.be.yml +++ b/config/locales/server.be.yml @@ -449,9 +449,6 @@ be: error: "Была памылка змены вашага адрасу электроннай пошты. Магчыма, адрас ужо выкарыстоўваецца?" error_staged: "Была памылка змены вашага адрасу электроннай пошты. Адрас ужо выкарыстоўваецца паэтапным карыстальнікам." already_done: "Ня На жаль, гэтая спасылка для пацверджання ужо не дзейнічае. Можа быць, ваша электронная пошта ўжо змянілася?" - authorizing_old: - title: "Дзякуй за пацверджанне Вашага бягучага адрасы электроннай пошты" - description: "Цяпер мы па электроннай пошце свой новы адрас для пацверджання." associated_accounts: revoke_failed: "Не атрымалася адмяніць свой рахунак з %{provider_name}." activation: @@ -1273,8 +1270,6 @@ be: header_dropdown_category_count: "Колькі катэгорый могуць быць адлюстраваны ў меню загалоўка спісу." global_notice: "Дысплей настойлівая, EMERGENCY, неотстранимый глабальны банэр апавяшчэння для ўсіх наведвальнікаў, каб змяніць поле пустым, каб схаваць яго (HTML дазволена)." disable_system_edit_notifications: "Адключае рэдагаваць апавяшчэння карыстальніка сістэмы, калі «download_remote_images_to_local» актыўна." - likes_notification_consolidation_threshold: "Колькасць ўпадабаных апавяшчэнняў, атрыманых да апавяшчэнняў аб'яднаны ў адну. Усталюйце 0, каб адключыць. Акно можа быць сканфігураваны з дапамогай `SiteSetting.likes_notification_consolidation_window_mins`." - likes_notification_consolidation_window_mins: "Працягласць ў хвілінах, дзе упадабаныя апавяшчэння аб'яднаны ў адно апавяшчэнне, як толькі парог дасягнуты. Парог можа быць сканфігураваны з дапамогай `SiteSetting.likes_notification_consolidation_threshold`." automatically_unpin_topics: "Аўтаматычна распушчае мацаваньне тэмы, калі карыстальнік дасягае дна." read_time_word_count: "Колькасць слоў у хвіліну для разліку разліковага часу чытання." native_app_install_banner_ios: "Адлюстроўвае DiscourseHub прыкладанне банэр на IOS прылад для звычайных карыстальнікаў (мэтавай ўзровень 1 і вышэй)." @@ -1875,13 +1870,9 @@ be: confirm_new_email: title: "Пацвердзіце новы Email" subject_template: "[% {Email_prefix}] Пацвердзіце свой новы адрас электроннай пошты" - text_body_template: |- - Пацвердзіце свой новы адрас электроннай пошты для% {site_name}, націснуўшы на наступную спасылку:% {Base_url} confirm_old_email: title: "Пацвердзіце стары адрас электроннай пошты" subject_template: "[% {Email_prefix}] Пацвердзіце свой бягучы адрас электроннай пошты" - text_body_template: |- - Перш чым мы можам змяніць свой адрас электроннай пошты, мы павінны пацвердзіць, што вы кантралюецебягучы рахунак па электроннай пошце. Пасля завяршэння гэтага кроку, мы будзем мець вас пацвердзіцьновы адрас электроннай пошты.Пацвердзіце свой бягучы адрас электроннай пошты для% {site_name}, націснуўшы на наступную спасылку:% {Base_url} notify_old_email: title: "Апавяшчаць Стары e-mail" subject_template: "[% {Email_prefix}] Ваш электронны адрас быў зменены" diff --git a/config/locales/server.bg.yml b/config/locales/server.bg.yml index 0cb619c736..72f2fd93ad 100644 --- a/config/locales/server.bg.yml +++ b/config/locales/server.bg.yml @@ -375,8 +375,6 @@ bg: confirmed: "Вашият имейл беше актуализиран." please_continue: "Продължете към %{site_name}" error: "Възникна грешка при промяната на вашия имейл адрес. Може би адресът вече се използва?" - authorizing_old: - title: "Благодаря че потвърдихте имейл адреса си" activation: action: "Кликнете тук, за да активирате вашия профил" already_done: "Съжаляваме, този линк за потвърждаване на акаунта вече е невалиден. Може би вашият акаунт е вече активен?" diff --git a/config/locales/server.ca.yml b/config/locales/server.ca.yml index b33c23a523..bfbb3e3b10 100644 --- a/config/locales/server.ca.yml +++ b/config/locales/server.ca.yml @@ -92,6 +92,7 @@ ca: from_reply_by_address_error: "Passa quan la capçalera del remitent coincideix amb l'adreça de correu de resposta." inactive_user_error: "Passa quan l'emissor no és actiu." silenced_user_error: "Passa quan el remitent ha estat silenciat." + bad_destination_address: "Passa quan cap de les adreces electròniques dels camps A/Cc no coincideix amb una adreça de correu entrant configurada." strangers_not_allowed_error: "Passa quan un usuari ha provat de crear un tema nou en una categoria de la qual no és membre." insufficient_trust_level_error: "Passa quan un usuari ha provat de crear un tema nou en una categoria per a la qual no té el nivell de confiança necessari." reply_user_not_matching_error: "Passa quan una resposta arriba des d'una adreça de correu diferent d'aquella a la qual s'ha enviat la notificació." @@ -123,6 +124,7 @@ ca: inclusion: no és inclòs en la llista invalid: no és vàlid is_invalid: "no sembla clar. És una frase sencera?" + invalid_timezone: "'%{tz}' no és una zona horària vàlida" contains_censored_words: "conté les següents paraules censurades: %{censored_words}" less_than: "ha de ser menys de %{count}" less_than_or_equal_to: "ha de ser igual o menor que %{count}" @@ -246,6 +248,7 @@ ca: other: "%{count} 'm'agrada'" last_reply: "Darrera resposta" created: "Creat" + new_topic: "Crea un tema nou" no_mentions_allowed: "No podeu mencionar altres usuaris" too_many_mentions: one: "Només podeu mencionar un usuari en una publicació." @@ -711,14 +714,23 @@ ca: windows: "Microsoft Windows" unknown: "sistema operatiu desconegut" change_email: + wrong_account_error: "Heu iniciat sessió amb un compte equivocat. Tanqueu la sessió i torneu-ho a provar." confirmed: "El vostre correu electrònic ha estat actualitzat." please_continue: "Continua a %{site_name}" error: "Hi ha hagut un error en canviar la vostra adreça de correu. Potser l'adreça ja està en ús." error_staged: "Hi ha hagut un error en canviar la vostra adreça electrònica. L'adreça ja està en ús per un usuari fictici." already_done: "Aquest enllaç de confirmació ja no és vàlid. Potser s'ha canviat el vostre correu electrònic." + confirm: "Confirma" + authorizing_new: + title: "Confirmeu la vostra nova adreça electrònica" + description: "Confirmeu que voleu canviar la vostra nova adreça de correu electrònic a:" authorizing_old: - title: "Gràcies per confirmar la vostra adreça actual de correu." - description: "Us enviem ara per correu la vostra adreça per a confirmar-la." + title: "Canvieu la vostra adreça de correu electrònic" + description: "Confirmeu el canvi d’adreça electrònica" + old_email: "Adreça electrònica antiga: %{email}" + new_email: "Adreça electrònica nova: %{email}" + almost_done_title: "Confirmant la nova adreça electrònica" + almost_done_description: "Hem enviat un correu electrònic a la vostra nova adreça electrònica per a confirmar el canvi." associated_accounts: revoke_failed: "No s'ha pogut revocar el vostre compte amb %{provider_name}." connected: "(connectat)" @@ -733,6 +745,7 @@ ca: activated: "Aquest compte ja ha estat activat." admin_confirm: title: "Confirma el compte d'administrador" + description: "Esteu segur que voleu que %{target_username}(%{target_email}) sigui administrador?" grant: "Atorga accés d'administrador" complete: "%{target_username} és ara administrador." back_to: "Torna a %{title}" @@ -781,6 +794,10 @@ ca: description: "M'agrada aquesta publicació" short_description: "M'agrada aquesta publicació" long_form: "ha fet 'M'agrada'" + draft: + sequence_conflict_error: + title: "error d'esborrany" + description: "L’esborrany s’està editant en una altra finestra. Torneu a carregar aquesta pàgina." draft_backup: pm_title: "Esborranys de còpia de seguretat de temes en curs" pm_body: "Tema que conté esborranys de còpia de seguretat" @@ -1668,6 +1685,9 @@ ca: private_email: "No incloguis contingut de publicacions o temes en el títol o el cos del correu electrònic. NOTA: també desactiva els correus electrònics de resum." email_total_attachment_size_limit_kb: "Mida total màxima dels fitxers adjuntats als correus sortints. 0 per a inhabilitar l’enviament d'adjunts." post_excerpts_in_emails: "En els correus de notificació, envia sempre fragments en lloc de publicacions completes." + raw_email_max_length: "Quants caràcters s’han d’emmagatzemar per al correu electrònic entrant." + raw_rejected_email_max_length: "Quants caràcters s’han d’emmagatzemar per al correu electrònic entrant rebutjat." + delete_rejected_email_after_days: "Suprimeix els correus electrònics rebutjats amb més de (n) dies." manual_polling_enabled: "Envia correus (push) fent servir l'API per a respostes de correu." pop3_polling_enabled: "Consulta via POP3 les respostes de correu" pop3_polling_ssl: "Fes servir SSL en connectar amb el servidor POP3 (recomanat)." @@ -1726,6 +1746,7 @@ ca: ignored_users_count_message_threshold: "Notifica als moderadors si un usuari determinat és ignorat per molts altres usuaris." ignored_users_message_gap_days: "Quant de temps haureu d'esperar abans de notificar de nou als moderadors sobre un usuari ignorat per molts altres." clean_up_inactive_users_after_days: "Nombre de dies abans d'eliminar un usuari inactiu (nivell de confiança 0 sense publicacions). Per a desactivar la neteja, poseu 0." + user_selected_primary_groups: "Permet als usuaris configurar el seu propi grup principal" user_website_domains_whitelist: "El lloc web de l'usuari serà verificat contra aquests dominis. Llista delimitada amb barres verticals." allow_profile_backgrounds: "Permet que els usuaris carreguin fons de perfil." sequential_replies_threshold: "Nombre de publicacions seguides que un usuari ha de fer en un tema abans de ser advertit de fer massa respostes seqüencials." @@ -1738,8 +1759,6 @@ ca: permalink_normalizations: "Aplica la següent expressió regular abans de cercar enllaços permanents coincidents. Per exemple: /(topic.*)\\?.*/\\1 eliminarà les cadenes de consulta de les rutes dels temes. El format és regex+string; utilitzeu \\1 \\2... per a accedir a captures." global_notice: "Mostra un bàner d'avís global d'EMERGÈNCIA URGENT, no descartable, a tots els visitants. Canvieu a blanc per a amagar-lo. (Es permet HTML.)" disable_system_edit_notifications: "Inhabilita les notificacions d'edició per l'usuari del sistema quan 'download_remote_images_to_local' és actiu." - likes_notification_consolidation_threshold: "Nombre de notificacions amb 'M'agrada' rebudes abans de consolidar les notificacions en una de sola. 0 per desactivar. La finestra es pot configurar mitjançant `SiteSetting.likes_notification_consolidation_window_mins`." - likes_notification_consolidation_window_mins: "Durada en minuts en què les notificacions amb 'M'agrada' es consoliden en una única notificació una vegada s'ha assolit el llindar. El llindar es pot configurar mitjançant `SiteSetting.likes_notification_consolidation_threshold`." automatically_unpin_topics: "Desafixa temes automàticament quan l'usuari arribi al capdavall." read_time_word_count: "Recompte de paraules per minut per a calcular el temps estimat de lectura." topic_page_title_includes_category: "L'etiqueta del títol de la pàgina del tema inclou el nom de la categoria." @@ -1815,10 +1834,15 @@ ca: default_categories_tracking: "Llista de categories seguides per defecte." default_categories_muted: "Llista de categories silenciades per defecte." default_categories_watching_first_post: "La llista de categories en què per defecte es vigilarà la primera publicació en cada tema nou. " + default_tags_watching: "Llista d’etiquetes que són vigilades per defecte." + default_tags_tracking: "Llista d’etiquetes que són seguides per defecte." + default_tags_muted: "Llista d'etiquetes que són silenciades per defecte." + default_tags_watching_first_post: "Llista d'etiquetes en les quals la primera publicació en cada tema nou serà vigilada per defecte." default_text_size: "Mida del text seleccionada per defecte" default_title_count_mode: "Mode predeterminat per al comptador de títols de la pàgina" retain_web_hook_events_period_days: "Nombre de dies per a conservar els registres d'esdeveniments webhook." retry_web_hook_events: "Reintenta automàticament quatre vegades els esdeveniments webhook fallits. Els intervals de temps entre els reintents són 1, 5, 25 i 125 minuts." + revoke_api_keys_days: "Nombre de dies abans que una clau d’API no utilitzada sigui revocada automàticament (0 per a mai)" allow_user_api_keys: "Permet la generació de claus API d'usuari" allow_user_api_key_scopes: "Llista d'àmbits permesos per a les claus d'API d'usuari" max_api_keys_per_user: "Nombre màxim de claus API personals per usuari" @@ -1907,6 +1931,8 @@ ca: topic: "Resultats" user: "Usuaris" results_page: "Resultats de la cerca per a '%{term}'" + audio: "[àudio]" + video: "[vídeo]" sso: login_error: "Error d'inici de sessió" not_found: "No s'ha trobat el vostre compte. Contacteu amb l'administrador del lloc web." @@ -1993,7 +2019,7 @@ ca: auto_deleted_by_timer: "S'ha suprimit automàticament per temporitzador." login: security_key_description: "Quan tingueu preparada la vostra clau de seguretat física, premeu el botó Autentica amb clau de seguretat." - security_key_alternative: "¿No podeu trobar la vostra clau de seguretat o voleu utilitzar un altre mètode?" + security_key_alternative: "Proveu d’una altra manera" security_key_authenticate: "Autenticació amb clau de seguretat" security_key_not_allowed_error: "El procés d'autenticació de claus de seguretat ha arribat al límit de temps o s'ha cancel·lat. " security_key_no_matching_credential_error: "No s'ha trobat cap credencial coincident amb la clau de seguretat proporcionada." @@ -2120,6 +2146,10 @@ ca: admin_confirmation_mailer: title: "Confirmació d'administració" subject_template: "[%{email_prefix}] Confirmeu un nou compte d'administració" + text_body_template: | + Confirmeu que voleu afegir **%{target_username} (%{target_email}) ** com a administrador del fòrum. + + [Confirma el compte d’administrador](%{admin_confirm_url}) test_mailer: title: "Test" subject_template: "[%{email_prefix}] Test de lliurament de correu electrònic" @@ -2211,6 +2241,7 @@ ca: Estem molt contents que passeu temps amb nosaltres, i ens agradaria conèixer-vos més bé. Dediqueu un moment a [omplir el vostre perfil](%{base_url}/my/preferences/profile), o bé podeu [començar un tema nou](%{base_url}/categories). welcome_staff: title: "Benvingut membre de l'equip responsable" + subject_template: "Enhorabona, se us ha concedit estatus de: %{role}!" welcome_invite: title: "Benvingut convidat" subject_template: "Benvingut a %{site_name}!" @@ -2743,20 +2774,13 @@ ca: title: "Confirmeu l'adreça de correu nova" subject_template: "[%{email_prefix}] Confirmeu la vostra nova adreça de correu" text_body_template: | - Confirmeu la vostra nova adreça de correu per a %{site_name} fent clic en l'enllaç següent: + Confirmeu la vostra nova adreça electrònica per a %{site_name} fent clic en l'enllaç següent: %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Confirmeu l'adreça de correu antiga" subject_template: "[%{email_prefix}] Confirmeu la vostra adreça de correu actual" - text_body_template: | - Abans de poder canviar la vostra adreça de correu, cal que confirmeu que controleu - el compte de correu actual. Una vegada completat aquest pas, us farem confirmar - la nova adreça de correu. - - Confirmeu la vostra adreça actual per a %{site_name} fent clic en l'enllaç següent: - - %{base_url}/u/confirm-old-email/%{email_token} + text_body_template: "Abans de canviar la vostra adreça electrònica, necessitem que confirmeu que controleu\nel compte de correu electrònic actual. Després de completar aquest pas, us haurem de confirmar \nla nova adreça electrònica. \n\nConfirmeu la vostra adreça electrònica actual per a %{site_name} fent clic en l'enllaç següent:\n\n%{base_url}/u/confirm-old-email/%{email_token}\n" notify_old_email: title: "Notifica l'adreça de correu antiga" subject_template: "[%{email_prefix}] La vostra adreça de correu ha canviat" @@ -3139,6 +3163,9 @@ ca: restricted_to: one: '"%{tag_name}" està restringit a la categoria "%{category_names}"' other: '"%{tag_name}" és restringit a les següents categories: %{category_names}' + required_tags_from_group: + one: "Heu d’incloure almenys %{count} etiqueta %{tag_group_name}." + other: "Heu d’incloure com a mínim %{count} etiquetes %{tag_group_name}." rss_by_tag: "Temes etiquetats amb %{tag}" finish_installation: congratulations: "Enhorabona, heu instal·lat Discourse!" diff --git a/config/locales/server.da.yml b/config/locales/server.da.yml index 34882881b5..56b77c67c9 100644 --- a/config/locales/server.da.yml +++ b/config/locales/server.da.yml @@ -573,9 +573,6 @@ da: error: "Der opstod en fejl under opdateringen af din e-mail-adresse. Måske er adressen allerede i brug?" error_staged: "Der opstod en fejl under opdateringen af din e-mail-adresse. Måske er adressen allerede i brug?" already_done: "Beklager, linket er ikke længere gyldigt - har du ændret din emal adresse?" - authorizing_old: - title: "Tak fordi du bekræftede din email adresse!" - description: "Vi sender nu en ny email der skal verificeres." activation: action: "Klik her for at aktivere din konto" already_done: "Beklager, dette bekræftelses-link er ikke længere gyldigt. Måske er din konto allerede aktiv?" diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index 13f4b63a4a..c3d59de2a3 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -696,9 +696,6 @@ de: error: "Es gab einen Fehler beim Ändern deiner E-Mail-Adresse. Wird vielleicht diese Adresse bereits verwendet?" error_staged: "Es gab einen Fehler beim Ändern deiner E-Mail-Adresse. Die Adresse wird bereits von einem vorbereiteten Benutzer verwendet." already_done: "Entschuldige, dieser Bestätigungs-Link ist nicht mehr gültig. Wurde vielleicht die E-Mail-Adresse bereits geändert?" - authorizing_old: - title: "Vielen Dank für die Bestätigung deiner aktuellen E-Mail-Adresse" - description: "Wir senden dir jetzt zur Bestätigung eine E-Mail an deine neue Adresse." associated_accounts: revoke_failed: "Das Widerrufen deines Kontos bei %{provider_name} ist fehlgeschlagen." connected: "(verbunden)" @@ -1699,8 +1696,6 @@ de: permalink_normalizations: "Diesen regulären Ausdruck anwenden, bevor Permalinks verarbeitet werden; Beispiel: /(topic.*)\\?.*/\\1 wird Query-Strings von Themen-Routen entfernen. Format: regulärer Ausdruck + String, benutze \\1 usw. um Teilausdrücke zu verwenden" global_notice: "Zeigt allen Besuchern eine DRINGENDE NOTFALL-Meldung in Form eines nicht ausblendbaren, global sichtbaren Banners an. Leere den Inhalt, um sie wieder auszublenden (HTML ist erlaubt)." disable_system_edit_notifications: "Unterdrückt Bearbeitungshinweise durch den System-Benutzer, wenn die 'download_remote_images_to_local' Einstellung aktiviert ist." - likes_notification_consolidation_threshold: "Anzahl der Like-Benachrichtigungen, bevor die Benachrichtigungen in eine einzelne zusammengeführt werden. Ein Wert von 0 deaktiviert die Funktion. Das Zeitfenster kann via ``SiteSetting.likes_notification_consolidation_window_mins` eingestellt werden." - likes_notification_consolidation_window_mins: "Zeitfenster in Minuten, in dem mehrere Like-Benachrichtigungen in eine einzelne Benachrichtigung zusammengeführt werden, sobald der Schwellenwert erreicht wird. Der Schwellenwert kann via `SiteSetting.likes_notification_consolidation_threshold` eingestellt werden." automatically_unpin_topics: "Themen automatisch loslösen, wenn ein Benutzer das Ende erreicht." read_time_word_count: "Wörter pro Minute für die Berechnung der geschätzten Lesezeit." topic_page_title_includes_category: "Themen-Seite title tag enthält einen Kategorienamen." @@ -1954,7 +1949,7 @@ de: auto_deleted_by_timer: "Automatisch gelöscht durch Timer." login: security_key_description: "Wenn Du Deinen physischen Sicherheitsschlüssel vorbereitet hast, klicke unten auf die Schaltfläche \"Mit Sicherheitsschlüssel authentifizieren\"." - security_key_alternative: "Du kannst Deinen Sicherheitsschlüssel nicht finden oder möchtest eine andere Methode verwenden?" + security_key_alternative: "Versuche einen anderen Weg" security_key_authenticate: "Mit Sicherheitsschlüssel authentifizieren" security_key_not_allowed_error: "Der Authentifizierungsprozess für den Sicherheitsschlüssel ist abgelaufen oder wurde abgebrochen." security_key_no_matching_credential_error: "Im angegebenen Sicherheitsschlüssel wurden keine übereinstimmenden Anmeldeinformationen gefunden." @@ -3016,19 +3011,9 @@ de: confirm_new_email: title: "E-Mail-Adresse bestätigen (an neue)" subject_template: "[%{email_prefix}] Bestätige deine neue E-Mail-Adresse" - text_body_template: | - Bestätige deine neue E-Mail-Adresse für %{site_name}, indem du dem diesem Link folgst: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "E-Mail-Adresse bestätigen (an alte)" subject_template: "[%{email_prefix}] Bestätige deine aktuelle E-Mail-Adresse" - text_body_template: | - Bevor wir deine E-Mail-Adresse ändern können, ist es nötig, dass du die Kontrolle über deine aktuelle E-Mail-Adresse bestätigst. Wenn du diesen Schritt erledigst, werden wir dich bitten, deine neue E-Mail-Adresse zu bestätigen. - - Bestätige deine aktuelle E-Mail-Adresse für %{site_name}, indem du diesem Link folgst: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Benachrichtigung an alte E-Mail-Adresse" subject_template: "[%{email_prefix}] Deine E-Mail-Adresse wurde geändert" @@ -3981,6 +3966,8 @@ de: user_merged: "%{username} wurde mit diesem Konto zusammengeführt" user_delete_self: "Selbst gelöscht von %{url}" webhook_deactivation_reason: "Dein Webhook wurde automatisch deaktiviert. Wir bekommen zahlreiche '%{status}' fehlgeschlagene HTTP Status Antworten." + api_key: + revoked: Widerrufen reviewables: priorities: low: "Niedrig" diff --git a/config/locales/server.el.yml b/config/locales/server.el.yml index 7c18fa0069..1c9be5dd3b 100644 --- a/config/locales/server.el.yml +++ b/config/locales/server.el.yml @@ -490,9 +490,6 @@ el: error: "Υπήρξε ένα σφάλμα κατά την αλλαγή της διεύθυνσης email σου. Ίσως αυτή η διεύθυνση είναι ήδη σε χρήση;" error_staged: "Υπήρξε ένα σφάλμα κατά την αλλαγή της διεύθυνσης email σου. Η δεύθυνση αυτή χρησιμοποιείται ήδη από αλλό χρήστη. " already_done: "Λυπούμαστε, αυτός ο σύνδεσμος επιβεβαίωσης του λογαριασμού σας δεν είναι πλέον έγκυρος. Ίσως η διεύθυνση email σας να έχει αλλάξει ήδη." - authorizing_old: - title: "Ευχαριστούμε για την επιβεβαίωση της τρέχουσας διεύθυνσης email" - description: "Σας στέλνουμε τώρα email για την επιβεβαίωση της νέας σας διέυθυνσης." activation: action: "Πατήστε εδώ για να ενεργοποιήσετε το λογαριασμό σας." already_done: "Συγνώμη, αυτός ο σύνδεσμος επιβεβαίωσης του λογαριασμού σας δεν είναι πλέον έγκυρος. Ίσως ο λογαριασμός σας είναι ήδη ενεργός;" @@ -2080,25 +2077,9 @@ el: confirm_new_email: title: "Επιβεβαίωση νέας διεύθυνσης email" subject_template: "[%{email_prefix}] Επικυρώστε την νέα σας διεύθυνση email" - text_body_template: |2 - - Επικυρώστε την νέα σας διεύθυνση email στην %{site_name} κάνοντας κλικ στον παρακάτω σύνδεσμο: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Επιβεβαίωση παλιάς διεύθυνσης email" subject_template: "[%{email_prefix}] Επικυρώστε την νέα σας διεύθυνση email" - text_body_template: |2 - - Προτού αλλάξουμε την διεύθυνση email σας, θα πρέπει να επιβεβαιώσουμε ότι σας ανήκει - - η τρέχουσα διεύθυνση email. Αφού ολοκληρώσετε αυτό το βήμα, θα σας ζητήσουμε να - - επιβεβαιώσετε την νέα σας διεύθυνση email. - - Επιβεβαιώστε την τρέχουσα διεύθυνση email στην%{site_name} κάνοντας κλικ στον παρακάτω σύνδεσμο: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Ειδοποίηση παλιάς διεύθυνσης email" subject_template: "[%{email_prefix}] Η διεύθυνση email σας έχει αλλαχθεί" diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml index 7c2ed25033..39efdd0a92 100644 --- a/config/locales/server.es.yml +++ b/config/locales/server.es.yml @@ -56,6 +56,7 @@ es: component_no_default: "Los componentes del tema no pueden ser tema predeterminado" component_no_color_scheme: "Los componentes del tema no pueden tener paletas de colores" no_multilevels_components: "Los temas con temas secundarios no pueden ser temas secundarios en sí mismos." + optimized_link: Los enlaces de imagen optimizados son efímeros y no deben incluirse en el código fuente del tema. settings_errors: invalid_yaml: "El YAML provisto es inválido." data_type_not_a_number: "El tipo de ajuste «%{name}» no está soportado. Los tipos soportados son: «integer», «bool», «list» y «enum»" @@ -103,6 +104,7 @@ es: unsubscribe_not_allowed: "Sucede cuando no se le permite a este usuario anular la subscripción por correo electrónico." email_not_allowed: "Sucede cuando la dirección de correo electrónico no está en la lista blanca o está en la lista negra." unrecognized_error: "Error no identificado" + secure_media_placeholder: "Redactado: este sitio tiene medios seguros habilitados. Visita el tema para ver las imágenes/audio/video adjuntas." errors: &errors format: "%{attribute} %{message}" format_with_full_message: "%{attribute}: %{message}" @@ -124,6 +126,7 @@ es: inclusion: no está incluido en la lista invalid: es inválido is_invalid: "parece poco claro, ¿es una oración completa?" + invalid_timezone: "'%{tz}' no es una zona horaria" contains_censored_words: "contiene las siguientes palabras censuradas: %{censored_words}" less_than: "debe ser menor que %{count}" less_than_or_equal_to: "debe ser menor o igual que %{count}" @@ -166,6 +169,10 @@ es: enable_s3_uploads_is_required: "No puedes activar el inventario en S3 a menos que se haya habilitado las subidas en S3." s3_backup_requires_s3_settings: "No puedes usar S3 como método de respaldo salvo que hayas rellenado «%{setting_name}»." s3_bucket_reused: "No puedes usar el mismo bucket para «s3_upload_bucket» y «s3_backup_bucket». Por favor, selecciona otro bucket o usa una ruta diferente para cada bucket." + secure_media_requirements: "Se debe habilitar la subida de S3 antes de habilitar medios seguros." + second_factor_cannot_be_enforced_with_disabled_local_login: "No puede aplicar 2FA si los inicios de sesión locales están deshabilitados." + local_login_cannot_be_disabled_if_second_factor_enforced: "No puede deshabilitar el inicio de sesión local si se aplica 2FA. Deshabilite 2FA antes de deshabilitar los inicios de sesión locales." + cannot_enable_s3_uploads_when_s3_enabled_globally: "No puedes habilitar las cargas S3 porque las cargas S3 ya están habilitadas globalmente, y habilitar este nivel de sitio podría causar problemas críticos con las cargas." conflicting_google_user_id: 'El ID de la cuenta Google para esta cuenta ha cambiado; el staff debe intervenir por razones de seguridad. Por favor, ponte en contacto con el staff y envía esta referencia
    https://meta.discourse.org/t/76575' activemodel: errors: @@ -280,6 +287,7 @@ es: max_pm_recepients: "Lo sentimos, puedes enviar un mensaje a un máximo de %{recipients_limit} destinatarios." pm_reached_recipients_limit: "Lo sentimos, no puedes tener más de %{recipients_limit} destinatarios en un mensaje." removed_direct_reply_full_quotes: "Cita de toda la publicación anterior eliminada automáticamente." + secure_upload_not_allowed_in_public_topic: "Lo sentimos, la(s) siguiente(s) subida(s) no se pueden utilizar en un tema público: %{upload_filenames}." just_posted_that: "es demasiado parecido a lo que has publicado recientemente" invalid_characters: "contiene caracteres inválidos" is_invalid: "parece poco claro, ¿es una oración completa?" @@ -714,14 +722,23 @@ es: windows: "Microsoft Windows" unknown: "sistema operativo desconocido" change_email: + wrong_account_error: "Iniciaste sesión en la cuenta equivocada. Por favor, cierra sesión e intenta nuevamente." confirmed: "Se actualizó tu correo electrónico." please_continue: "Continuar a %{site_name}" error: "Hubo un problema al cambiar tu dirección de correo electrónico. ¿Quizás la dirección ya está en uso?" error_staged: "Se produjo un error al cambiar tu correo electrónico. La dirección ya está en uso por un usuario temporal." already_done: "Lo sentimos, este enlace de confirmación ya no es válido. ¿Quizá tu correo electrónico ya fue cambiado?" + confirm: "Confirmar" + authorizing_new: + title: "Confirmar tu nuevo correo electrónico" + description: "Por favor, confirma que quisieras cambiar tu correo electrónico por el nuevo: " authorizing_old: - title: "Gracias por confirmar tu dirección de correo electrónico actual" - description: "Te enviaremos un correo electrónico a tu nueva dirección para confirmar." + title: "Cambiar tu dirección de correo electrónico" + description: "Por favor, confirma el cambio de tu dirección de correo electrónico" + old_email: "Correo electrónico antiguo: %{email}" + new_email: "Correo electrónico nuevo: %{email}" + almost_done_title: "Confirmando la nueva dirección de correo electrónico" + almost_done_description: "¡Enviamos un correo a tu nueva dirección de correo electrónico para confirmar el cambio!" associated_accounts: revoke_failed: "No pudo revocar la conexión con %{provider_name}." connected: "(conectados)" @@ -857,6 +874,8 @@ es: description: "las preferencias de correo electrónico para %{email} han sido actualizadas. Para cambiar tus configuraciones de correo electrónico, visita tus preferencias de usuario." topic_description: "Para volver a suscribirte a %{link}, cambia los ajustes de notificación en la parte inferior o en la parte derecha del tema." private_topic_description: "Para volver a suscribirte, cambia los ajustes de notificación en la parte inferior o en la parte derecha del tema." + uploads: + marked_insecure_from_theme_component_reason: "subida usada en componente de tema" unsubscribe: title: "Cancelar suscripción" stop_watching_topic: "Dejar de vigilar este tema, %{link}" @@ -1240,8 +1259,8 @@ es: other: "El polling por correo electrónico ha generado %{count} errores en las últimas 24 horas. Revisa los registros para más detalles." missing_mailgun_api_key: "El servidor está configurado para enviar correos electrónicos a través de Mailgun pero no has proporcionado una clave API que se utiliza para verificar los mensajes de webhook." bad_favicon_url: "El favicon está produciendo errores en el proceso de carga. Revisa la opción favicon en los ajustes del sitio." - deprecated_api_usage: "Hemos detectado una solicitud a la API usando un método de autentificación deprecado. Por favor, actualízalo para usar autentificación basada en encabezados." - update_mail_receiver: "Hemos detectado una versión antigua de mail-receiver. Por favor, conéctate con SSH al servidor y ejecuta `/var/discourse/launcher rebuild mail-receiver`." + deprecated_api_usage: "Detectamos una solicitud de API utilizando un método de autenticación obsoleto. Actualicelo para usar la autenticación basada en un encabezado. Después de actualizar, este mensaje puede tardar 24 horas en desaparecer." + update_mail_receiver: "Detectamos una versión desactualizada del receptor de correo. Clic aquí para instrucciones de actualización. Después de actualizar, este mensaje puede tardar 24 horas en desaparecer." poll_pop3_timeout: "La conexión al servidor POP3 está superando el tiempo de espera. No se pudieron recuperar los correos electrónicos entrantes. Por favor, revisa los ajustes de POP3 y tu proveedor de servicio." poll_pop3_auth_error: "La conexión al servidor POP3 está fallando debido a un error de autenticación. Por favor, revisa los ajustes POP3." force_https_warning: "Tu sitio web está usando SSL. Pero «force_https» no está habilitado todavía en la configuración de tu sitio." @@ -1385,6 +1404,7 @@ es: content_security_policy: "Activar la política de seguridad de contenido (CSP)" content_security_policy_report_only: "Activar solo el informe de la política de seguridad de contenido (CPS)" content_security_policy_collect_reports: "Habilitar la recolección de reportes de violación de CSP en /csp_reports" + content_security_policy_script_src: "Fuentes de script adicionales en la lista blanca. El host actual y CDN se incluyen por defecto. Leer Mitigate XSS Attacks with Content Security Policy." invalidate_inactive_admin_email_after_days: "Las cuentas administrativas que no hayan visitado la página en este número de días deberán validar de nuevo su dirección de correo electrónico antes de iniciar sesión. Establecer a 0 para desactivar." top_menu: "Determinar los elementos que aparecen en el menú de navegación de la página de inicio y su orden. Ejemplo últimos|nuevos|no leídos|categorías|destacados|leídos|publicados|marcadores" post_menu: "Determinar los elementos que aparecen en el menú de publicación y su orden. Ejemplo: me gusta|editar|reportar|eliminar|compartir|guardar en marcadores|responder" @@ -1694,6 +1714,7 @@ es: log_mail_processing_failures: "Registra todos los fallos de procesamiento de /registros" email_in: 'Permitir a los usuarios crear nuevos temas por correo electrónico (requiere el polling manual o pop3). Configura las direcciones en la pestaña «ajustes» de cada categoría.' email_in_min_trust: "El nivel de confianza mínimo requerido para poder publicar temas nuevos por correo electrónico." + email_in_authserv_id: "El identificador del servicio realizando revisiones de autenticación en correos electrónicos entrantes. Ver: https://meta.discourse.org/t/134358 para obtener instrucciones sobre cómo configurar esto." email_in_spam_header: "El encabezado del correo electrónico para detectar spam." email_prefix: "La [etiqueta] utilizada en el asunto de los correos electrónicos. Si no está configurado, será por defecto el «título»." email_site_title: "El título del sitio utilizado como remitente de los correos electrónicos desde el sitio. Si no está configurado, será por defecto «título». Si tu «título» contiene caracteres que no están permitidos en las cadenas del remitente del correo electrónico, usa esta opción." @@ -1752,8 +1773,6 @@ es: permalink_normalizations: "Aplicar la siguiente expresión regular antes de hacer coincidir los permalinks, por ejemplo: /(topic.*)\\?.*/\\1 despojará las cadenas de consulta de las rutas de los temas. El formato es regex+string usa \\1 etc. para acceder a capturas" global_notice: "Mostrar un anuncio global de URGENCIA o EMERGENCIA que no se pueda ocultar para todos los visitantes. Deja este campo en blanco para ocultarlo (se permite HTML)." disable_system_edit_notifications: "Inhabilitar editar notificaciones por el usuario del sistema cuando «download_remote_images_to_local» este activo." - likes_notification_consolidation_threshold: "Número de notificaciones de me gusta recibidas antes de que las notificaciones se consoliden en una sola. Establece el valor en 0 para deshabilitar. La ventana se puede configurar a través de `SiteSetting.likes_notification_consolidation_window_mins`." - likes_notification_consolidation_window_mins: "Duración en minutos tras los que se consolidan las notificaciones de me gusta en una sola notificación una vez que se ha alcanzado el umbral. El umbral se puede configurar a través de `SiteSetting.likes_notification_consolidation_threshold`." automatically_unpin_topics: "Quitar destacado automáticamente cuando el usuario llega al final del tema." read_time_word_count: "Número de palabras por minuto para calcular el tiempo de lectura estimado." topic_page_title_includes_category: "La etiqueta del título de la página del tema incluye el nombre de la categoría." @@ -1787,6 +1806,7 @@ es: delete_drafts_older_than_n_days: "Eliminar borradores de más de (n) días de antigüedad." bootstrap_mode_min_users: "Número mínimo de usuarios requerido para desactivar el modo bootstrap (establece en 0 para desactivar esta opción)" prevent_anons_from_downloading_files: "Impedir que los usuarios anónimos descarguen archivos. ADVERTENCIA: Esto impedirá que funcione cualquier recurso del sitio publicado como adjunto que no sea una imagen." + secure_media: 'Limita el acceso a los medios subidos (imágenes, video, audio). Si está habilitado «inicio de sesión requerido», solo los usuarios que hayan iniciado sesión pueden acceder a los medios subidos. En caso contrario, se limitará el acceso únicamente a los medios subidos en mensajes privados. Nota: se deben habilitar las subidas S3 antes de poder habilitar esta configuración.' slug_generation_method: "Elegir un método de generación de slug. «encoded» generará cadenas con código porcentual. «none» deshabilitará completamente el slug." enable_emoji: "Habilitar emoji" enable_emoji_shortcuts: "Texto común de emoticones como :) :p :( se convertirán a emojis" @@ -1829,6 +1849,7 @@ es: default_categories_tracking: "Lista de categorías que están seguidas por defecto" default_categories_muted: "Lista de categorías que están silenciadas por defecto." default_categories_watching_first_post: "Lista de categorías en las que el primer mensaje de cada tema nuevo se vigilará por defecto." + mute_all_categories_by_default: "Establezca el nivel de notificación predeterminado de todas las categorías en silenciado. Solicite a los usuarios que opten por las categorías para que aparezcan en las páginas de 'latest' y 'categories'. Si desea modificar los valores predeterminados para usuarios anónimos, establezca la configuración en 'default_categories_'." default_tags_watching: "Lista de etiquetas vigiladas por defecto." default_tags_tracking: "Lista de etiquetas seguidas por defecto." default_tags_muted: "Lista de etiquetas silenciadas por defecto." @@ -2014,7 +2035,7 @@ es: auto_deleted_by_timer: "Eliminado automáticamente por el temporizador." login: security_key_description: "Cuando tengas tu clave de seguridad física preparada, presiona el botón de autenticar con clave de seguridad que se encuentra debajo." - security_key_alternative: "¿No encuentras tu clave de seguridad o quieres utilizar otro método?" + security_key_alternative: "Intenta de otra manera" security_key_authenticate: "Autenticar con clave de seguridad" security_key_not_allowed_error: "La autenticación de la clave de seguridad fue cancelada o se agotó el tiempo." security_key_no_matching_credential_error: "No se encontraron credenciales que coincidan en la clave de seguridad provista." @@ -3144,18 +3165,17 @@ es: text_body_template: | Confirma tu nueva dirección de correo electrónico para %{site_name} haciendo clic en el siguiente enlace: - %{base_url}/u/confirm-new-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} confirm_old_email: title: "Confirmar correo electrónico antiguo" subject_template: "[%{email_prefix}] Confirma tu dirección actual de correo electrónico" text_body_template: | - Antes de cambiar tu dirección de correo electrónico, necesitamos que confirmes que controlas - el correo actual. Después de completar este paso, podrás confirmar - la nueva dirección de correo electrónico. + Antes de que podamos cambiar tu dirección de correo electrónico, es necesario que confirmes + que la cuenta de correo electrónica actual está bajo tu control. Tras completar este paso, deberemos confirmar también la nueva dirección. - Confirma tu correo electrónico actual para %{site_name} haciendo clic en el siguiente enlace: + Confirma tu dirección de correo electrónico actual para %{site_name} haciendo clic en el siguiente enlace: - %{base_url}/u/confirm-new-email/%{email_token} + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Antiguo correo electrónico de notificaciones" subject_template: "[%{email_prefix}] Tu dirección de correo electrónico ha sido cambiada" diff --git a/config/locales/server.et.yml b/config/locales/server.et.yml index 4a1b073d68..2f0ae45d26 100644 --- a/config/locales/server.et.yml +++ b/config/locales/server.et.yml @@ -452,9 +452,6 @@ et: error: "Sinu meiliaadressi muutmisel esines tõrge. Äkki on see juba kasutuses?" error_staged: "Sinu meiliaadressi muutmisel esines tõrge. Ettevalmistamisel olev kasutaja juba kasutab seda." already_done: "Vabandust, see kinnitamise link ei kehti enam. Äkki on teie meiliaadress juba muudetud?" - authorizing_old: - title: "Täname, et oma kehtiva meiliaadressi kinnitasid" - description: "Saadame nüüd kinnituse Teie uuele meiliaadressile." activation: action: "Oma konto aktiveerimiseks kliki siia" already_done: "Vabandust, see konto kinnitamise link ei kehti enam. Äkki on Teie konto juba aktiveeritud?" diff --git a/config/locales/server.fa_IR.yml b/config/locales/server.fa_IR.yml index 354e22fed2..020bc0bf58 100644 --- a/config/locales/server.fa_IR.yml +++ b/config/locales/server.fa_IR.yml @@ -488,9 +488,6 @@ fa_IR: error: "در تغییر ایمیلتان خطایی روی داد. شاید قبلا در سایت استفاده شده است؟" error_staged: "خطایی در تغییر ایمیل رخ داده است. این ایمیل در حال حاضر در یک حساب‌کاربری خودکار استفاده می‌شود." already_done: "با عرض پوزش، پیوند تایید نامعتبر است. شاید ایمیل شما تغییر کرده؟" - authorizing_old: - title: "با تشکر از شما بابت اینکه ایمیل خود را تایید کردید." - description: "در حال ارسال ایمیل تایید به شما هستیم." activation: action: "برای فعال کردن حساب‌کاربری خود اینجا کلیک کنید" already_done: "متاسفیم، این پیوند تاییدیه حساب کاربری دیگر معتبر نیست. شاید حساب‌کاربری شما در حال حاضر فعال است." @@ -1333,7 +1330,6 @@ fa_IR: autoclosed_disabled_lastpost: "این موضوع در حال حاضر باز است. پاسخ‌های جدید اجازه‌ی ثبت دارند." auto_deleted_by_timer: "به صورت خودکار توسط زمان‌سنج حذف شده." login: - security_key_alternative: "نمی توانید کلید امنیتی خود را پیدا کنید یا می خواهید از روش دیگری استفاده کنید؟" security_key_authenticate: "تأیید اعتبار با کلید امنیتی" security_key_not_allowed_error: "مراحل تأیید اعتبار کلید امنیتی به پایان رسیده است یا لغو شده است." not_approved: "حساب کاربری شما هنوز تایید نشده است. وقتی شما آماده ورود به سیستم شوید به شما اطلاع داده می شود." @@ -1893,21 +1889,9 @@ fa_IR: confirm_new_email: title: "تایید ایمیل" subject_template: "[%{email_prefix}] ایمیل جدیدتان را تایید کنید" - text_body_template: | - ایمیل جدید خود را برای %{site_name} با کلیک روی لینک زیر تایید کنید: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "تایید ایمیل قبلی" subject_template: "[%{email_prefix}] ایمیل فعلی خود را تایید کنید" - text_body_template: | - قبل از تغییر ایمیل شما، باید تایید کنیم که ایمیل تحت کنترل شما است. - برای ایمیل فعلی بعد از تکمیل این گام، ایمیل تایید ارسال خواهد شد - ایمیل جدید. - - ایمیل فعلی خود در سایت %{site_name} را با کلیکل روی لینک زیر تعیید کنید: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "اعلام ایمیل قبلی" subject_template: "[%{email_prefix}] ایمیل شما تغییر کرده است" diff --git a/config/locales/server.fi.yml b/config/locales/server.fi.yml index 5d202e566d..7d81527c5c 100644 --- a/config/locales/server.fi.yml +++ b/config/locales/server.fi.yml @@ -103,6 +103,7 @@ fi: unsubscribe_not_allowed: "Näin käy, kun tämä käyttäjä ei voi perua tilausta sähköpostitse." email_not_allowed: "Näin käy, kun sähköpostiosoite ei ole sallittujen listalla tai on kiellettyjen listalla." unrecognized_error: "Tuntematon virhe" + secure_media_placeholder: "Salattu: sivustolla medialataukset on salattuja; vieraile ketjussa niin näet liitetyt kuvat, äänet ja videot." errors: &errors format: "%{attribute} %{message}" format_with_full_message: "%{attribute}: %{message}" @@ -124,6 +125,7 @@ fi: inclusion: ei ole listalla invalid: ei kelpaa is_invalid: "vaikuttaa epäselvältä, olihan se kokonainen virke?" + invalid_timezone: "'%{tz}' ei ole käypä aikavyöhyke" contains_censored_words: "sisältää nämä sensuroidut sanat: %{censored_words}" less_than: "täytyy olla vähemmän kuin %{count}" less_than_or_equal_to: "täytyy olla yhtä suuri tai pienempi kuin %{count}" @@ -166,6 +168,9 @@ fi: enable_s3_uploads_is_required: "Et voi ottaa S3-inventorya käyttöön, jollei S3-lataukset ole käytössä." s3_backup_requires_s3_settings: "Et voi käyttää S3:a varmuuskopiosijaintina, jos %{setting_name} ei ole määritetty." s3_bucket_reused: "Sama säiliö ei voi olla sekä 's3_upload_bucket' että 's3_backup_bucket'. Valitse eri säiliö tai määritä eri polku jokaiselle säiliölle." + secure_media_requirements: "S3-lataukset täytyy ottaa käyttöön, jotta voi ottaa käyttöön suojatut medialataukset." + second_factor_cannot_be_enforced_with_disabled_local_login: "Et voi pakottaa kaksivaiheista tunnistautumista, jos paikallinen kirjautuminen on pois käytöstä." + local_login_cannot_be_disabled_if_second_factor_enforced: "Et voi ottaa paikallista kirjautumista käytöstä, jos kaksivaiheinen tunnistautuminen on pakollinen. Kun otat kaksivaiheisen tunnistautumisen pakollisuuden käytöstä, voit ottaa käytöstä paikallisen kirjautumisen." conflicting_google_user_id: 'Tämän käyttäjätilin Google Account ID on muuttunut. Henkilökunnan toimenpiteet ovat tarpeen tietoturvasyistä. Ota yhteyttä henkilökuntaan ja ohjaa heidät osoitteeseen
    https://meta.discourse.org/t/76575' activemodel: errors: @@ -280,6 +285,7 @@ fi: max_pm_recepients: "Pahoittelut, voit lähettää viestin enintään %{recipients_limit} vastaanottajalle." pm_reached_recipients_limit: "Pahoittelut, yksityisviestillä ei voi olla yli %{recipients_limit} vastaanottajaa." removed_direct_reply_full_quotes: "Jos edellinen viesti lainataan kokonaan, poista lainaus automaattisesti." + secure_upload_not_allowed_in_public_topic: "Pahoittelut, näitä suojattuja latauksia ei voi käyttää julkisessa ketjussa: %{upload_filenames}" just_posted_that: "on liian samanlainen kuin aiempi viestisi" invalid_characters: "sisältää epäkelpoja merkkejä" is_invalid: "vaikuttaa epäselvältä, olihan se kokonainen virke?" @@ -714,14 +720,23 @@ fi: windows: "Microsoft Windows" unknown: "tuntematon käyttöjärjestelmä" change_email: + wrong_account_error: "Olet kirjautuneena väärällä käyttäjätilillä. Kirjaudu ulos ja yritä uudelleen." confirmed: "Sähköpostiosoite päivitetty." please_continue: "Jatka sivustolle %{site_name}" error: "Sähköpostiosoitteen vaihdossa tapahtui virhe. Ehkäpä tämä sähköpostiosoite on jo käytössä?" error_staged: "Sähköpostiosoitetta muutettaessa tapahtui virhe. Osoite on automaattisesti luodun esikäyttäjän käytössä." already_done: "Pahoittelut, tämä varmennuslinnkki ei ole enää voimassa. Ehkäpä sähköpostiosoitteesi on jo vaihdettu?" + confirm: "Vahvista" + authorizing_new: + title: "Vahvista uusi sähköpostiosoite" + description: "Vahvista, että haluat vaihtaa uudeksi sähköpostiosoitteeksesi:" authorizing_old: - title: "Kiitos sähköpostiosoitteesi varmentamisesta" - description: "Lähetämme sinulle sähköpostin varmennusta varten." + title: "Vaihda sähköpostiosoitettasi" + description: "Vahvista sähköpostiosoitteesi vaihdos" + old_email: "Vanha sähköposti: %{email}" + new_email: "Uusi sähköposti: %{email}" + almost_done_title: "Vahvista uusi sähköpostiosoite" + almost_done_description: "Lähetimme sinulle sähköpostin uuteen osoitteeseesi, jotta voit vahvistaa vaihdoksen!" associated_accounts: revoke_failed: "Tunnustasi palveluntarjoajalla %{provider_name} ei onnistuttu perumaan." connected: "(yhdistetty)" @@ -1230,6 +1245,7 @@ fi: other: "Sähköpostin pollaus aiheutti %{count} virhettä edellisen 24 tunnin aikana. Tarkastele lokeja saadaksesi lisätietoja." missing_mailgun_api_key: "Palvelin on määritelty lähettämään sähköpostit Mailgunin avulla, muttet ole määritellyt rajapinta-avainta, jolla varmistetaan webhook-viestien aitous." bad_favicon_url: "Favicon ei lataudu. Tarkista favicon-asetus sivuston asetuksissa." + update_mail_receiver: "Huomasimme, että sähköpostipalvelin (mail-receiver) on vanhentunut. Klikkaa tästä päivitysohjeet. Kun olet päivittänyt, voi mennä 24 tuntia ennen kuin tämä viesti katoaa." poll_pop3_timeout: "Yhteyttä POP3-palvelimelle aikakatkaistaan ja saapuvaa sähköpostia ei voitu hakea. Tarkista POP3-asetukset ja palveluntarjoaja." poll_pop3_auth_error: "Yhteys POP3-palvelimelle epäonnistuu autentikaatiovirheen vuoksi. Tarkista POP3-asetukset." force_https_warning: "Sivusto käyttää SSL-salausta, mutta `force_https` ei ole valittuna asetuksissa." @@ -1418,6 +1434,9 @@ fi: sso_overrides_email: "Ohittaa paikallisen sähköpostiosoitteen SSO:n kautta saatavalla ulkopuolisella osoitteella ja estää paikalliset muutokset (VAROITUS: eroavuuksia saattaa syntyä johtuen paikallisten sähköpostiosoitteiden normalisoinnista)" sso_overrides_username: "Ohittaa paikallisen käyttäjänimen SSO:n kautta saatavalla ulkopuolisella nimellä ja estää paikalliset muutokset (VAROITUS: eroavuuksia saattaa syntyä johtuen erilaisista vaatimuksista ja pituudesta)" sso_overrides_name: "Ohittaa paikallisen koko nimen SSO:n kautta saatavalla ulkopuolisella nimellä jokaisella kirjautumiskerralla ja estää paikalliset muutokset" + sso_overrides_avatar: "Syrjäyttää käyttäjän avatarin ulkoisella kertakirjautumisen kautta haetulla avatarilla. Jos tämä on käytössä, käyttäjä ei voi ladata avataria Discourseen." + sso_overrides_profile_background: "Syrjäyttää käyttäjän profiilin taustakuvan ulkoisella kertakirjautumisen kautta haetulla avatarilla." + sso_overrides_card_background: "Syrjäyttää käyttäjän käyttäjäkortin taustakuvan ulkopuolisella kertakirjautumisen kautta haetulla avatarilla." sso_not_approved_url: "Uudelleenohjaa hyväksymättömät SSO-tilit tähän osoitteeseen" sso_allows_all_return_paths: "Älä rajoita SSO:n antamien palautuspolkujen verkkotunnusta (oletuksena palautuspolun on oltava nykyisellä sivustolla)" enable_local_logins: "Salli kirjautuminen paikallisesti käyttäjänimen ja salasanan avulla. Tämä tulee olla päällä, jotta kutsuminen voi toimia. VAROITUS: jos ei ole käytössä, voi sinun olla mahdotonta kirjautua sisään, jollet ole aiemmin määritellyt ainakin yhtä muuta kirjautumistapaa." @@ -1440,6 +1459,9 @@ fi: enable_github_logins: "Ota käyttöön Facebook-tunnistautuminen, vaaditaan github_client_id ja github_client_secret. Katso Configuring GitHub login for Discourse." github_client_id: "GitHub-tunnistautumisen client id, joka rekisteröidään palvelussa https://github.com/settings/developers" github_client_secret: "GitHub-tunnistautumisen client secret, joka rekisteröidään palvelussa https://github.com/settings/developers" + enable_discord_logins: "Salli käyttäjien kirjautua Discordin avulla?" + discord_client_id: 'Discordin Client ID (Tarvitsetko? Käy Discordin kehittäjäportaalissa)' + discord_secret: "Discordin Secret Key" readonly_mode_during_backup: "Ota käyttöön vain luku -tila, kun otetaan varmuuskopiota" enable_backups: "Salli ylläpitäjien tehdä varmuuskopioita palstasta" allow_restore: "Salli palautus, joka korvaa KAIKEN sivuston datan! Jätä valitsematta, jos et aio palauttaa sivuston varmuuskopiota" @@ -1447,10 +1469,14 @@ fi: automatic_backups_enabled: "Tee automaattinen varmuuskopiointi, kuten tiheysasetus on määritelty" backup_frequency: "Kuinka monen päivän välein otetaan varmuuskopio." s3_backup_bucket: "Amazon S3 bucket johon varmuuskopiot ladataan. VAROITUS: Varmista, että se on yksityinen." + s3_endpoint: "Kohdeasemaksi voidaan vaihtaa muu S3-yhteensopiva palvelu kuten DigitalOcean Spaces tai Minio. VAROITUS: Jätä tyhjäksi, jos käytät AWS S3:a." + s3_configure_tombstone_policy: "Ota käyttöön tombstone-hakemiston automaattinen tyhjennys. TÄRKEÄÄ: Jos ei käytössä, tilaa ei vapaudu kun ladattuja tiedostoja poistetaan." s3_disable_cleanup: "Älä poista varmuuskopiota S3:sta, kun se poistetaan paikallisesti." backup_time_of_day: "UTC-kellonaika, jolloin varmuuskopio tehdään." backup_with_uploads: "Sisällytä lataukset ajastettuihin varmuuskopioihin. Jos tämä on pois käytöstä, vain tietokanta varmuuskopioidaan." backup_location: "SIjainti, jonne varmuuskopiot säilötään. TÄRKEÄÄ: S3 vaatii toimiakseen, että käyvät S3-käyttöoikeustiedot on syötetty Tiedostot-asetuksiin." + backup_gzip_compression_level_for_uploads: "Gzip-pakkausaste, jota käytetään kun pakataan ladattuja tiedostoja." + include_thumbnails_in_backups: "Sisällytä luodut esikatselukuvat varmuuskopioihin. Ottaminen pois käytöstä pienentää varmuuskopioita, mutta varmuuskopiopalautuksen yhteydessä kaikki viestit on rakennettava uudelleen." active_user_rate_limit_secs: "Kuinka usein 'last_seen_at' kenttä päivitetään, sekunneissa" verbose_localization: "Näytä laajennetut lokalisointitiedot käyttöliittymässä" previous_visit_timeout_hours: "Kuinka kauan vierailun on täytynyt kestää, jotta se lasketaan 'edelliseksi' vierailuksi, tunneissa" @@ -1481,6 +1507,7 @@ fi: suggested_topics: "Ehdotettujen ketjujen määrä ketjun alaosassa." limit_suggested_to_category: "Ehdota ketjuja vain nykyiseltä alueelta." suggested_topics_max_days_old: "Ehdotettujen ketjujen ei tulisi olla yli n päivää vanhoja." + suggested_topics_unread_max_days_old: "Ehdotusten lukemattomista ketjuista ei tule olla yli n päivää vanhoja." clean_up_uploads: "Poista orpoutuneet liitetiedostot, joita ei käytetä viesteissä, laittoman hostauksen estämiseksi. VAROITUS: kannattaa varmuuskopioida /uploads kansio ennen tämän asetuksen ottamista käyttöön." clean_orphan_uploads_grace_period_hours: "Varoaika (tunteina) kunnes orpoutuneet liitetiedostot poistetaan" purge_deleted_uploads_grace_period_days: "Varoaika (päivinä) kunnes poistettu liitetiedosto tuhotaan." @@ -1491,6 +1518,7 @@ fi: avatar_sizes: "Profiilikuvista automaattisesti luotavat koot." external_system_avatars_enabled: "Käytä ulkopuolista avatarpalvelua." external_system_avatars_url: "Ulkoisen avatarpalvelun URL. Sallitut vaihdokset ovat {username} {first_letter} {color} {size}" + restrict_letter_avatar_colors: "Luettelo kuusinumeroisista heksadesimaalisista väriarvoista, joita käytetään kirjainavatareja luotaessa." selectable_avatars_enabled: "Pakota käyttäjä valitsemaan avatarinsa listalta." selectable_avatars: "Avatarit, joista käyttäjä voi valita." allow_all_attachments_for_group_messages: "Salli kaikki sähköpostiliitteet ryhmäviesteissä." @@ -1568,6 +1596,7 @@ fi: max_similar_results: "Kuinka monta samankaltaista ketjua näytetään viestikentän päällä uutta ketjua aloitettaessa. Vertailu perustuu sekä otsikkoon että leipätekstiin." max_image_megapixels: "Kuvan enimmäiskoko megapikseleinä." title_prettify: "Estä yleiset kirjoitusvirheet otsikossa, kuten pelkät isot kirjaimet, pieni ensimmäinen kirjain, useat !- ja ?-merkit ym." + automatic_topic_heat_values: 'Päivitä "topic views heat" ja "topic post like heat" -asetuksia sivuston aktiivisuuden perusteella automaattisesti.' topic_views_heat_low: "Näin monen katselun jälkeen katselut-saraketta korostetaan hieman." topic_views_heat_medium: "Näin monen katselun jälkeen katselut-saraketta korostetaan kohtalaisesti." topic_views_heat_high: "Näin monen katselun jälkeen katselut-saraketta korostetaan voimakkaasti." @@ -1601,10 +1630,14 @@ fi: auto_silence_fast_typers_on_first_post: "Hiljennä automaattisesti käyttäjät, joiden ensimmäisen viestin kirjoittamiseen ei kulu min_first_post_typing_time" auto_silence_fast_typers_max_trust_level: "Enimmäisluottamustaso, jolla nopea kirjoittaja voidaan hiljentää automaattisesti" auto_silence_first_post_regex: "Isoista ja pienistä kirjaimista riippumaton säännöllinen lauseke, joka osuessaan aiheuttaa käyttäjän ensimmäisen viestin hiljennyksen ja viesti viedään arvioitavaksi. Esimerkki: hemmetti|a[bc]a aiheuttaa hiljennyksen, jos viesti sisältää sanan 'hemmetti', 'aba' tai 'aca'. Koskee vain käyttäjän ensimmäistä viestiä." + reviewable_claiming: "Tarvitseeko arvioitava sisältö omia ennen kuin sen voi käsitellä?" + reviewable_default_topics: "Oletuksena, näytä arvioitava sisältö ryhmiteltynä ketjuittain" + reviewable_default_visibility: "Älä näytä arvioitavia asioita jollei niiden prioriteetti ole vähintään tämän verran" reply_by_email_enabled: "Ota käyttöön vastaukset sähköpostin avulla." reply_by_email_address: "Saapuvien sähköpostivastausten sähköpostiosoitekaava, esimerkiksi: %%{reply_key}@reply.esimerkki.fi or replies+%%{reply_key}@esimerkki.fi" alternative_reply_by_email_addresses: "Lista vaihtoehtoisista saapuvien sähköpostivastausten sähköpostiosoitekaavoista, esimerkiksi: %%{reply_key}@reply.esimerkki.fi tai replies+%%{reply_key}@esimerkki.fi" incoming_email_prefer_html: "Käytä HTML:ää tekstin sijaan saapuvissa sähköposteissa." + strip_incoming_email_lines: "Poista saapuvien sähköpostien jokaisen rivin alusta ja lopusta tyhjämerkit." disable_emails: "Estä Discoursea lähettämästä minkäänlaisia sähköposteja. Ota pois sähköpostit kaikilta käyttäjiltä valitsemalla \"yes\" . \"Non-staff\" poistaa sähköpostit vain muilta kuin henkilökunnalta." strip_images_from_short_emails: "Poista kuvat sähköposteista, joiden koko on alle 2800 tavua" short_email_length: "Lyhyen sähköpostin pituus tavuissa" @@ -1689,8 +1722,6 @@ fi: permalink_normalizations: "Sovella tätä säännöllistä lauseketta ennen ikilinkkien sovittamista, esim. /(topic.*)\\?.*/\\1 riisuu hakulausekkeet ketjujen reiteistä. Muoto on regex+string, \\1 jne. avulla pääset käsiksi captureihin." global_notice: "Näytä kaikilla sivuilla kaikille käyttäjille KIIREELLISESTÄ HÄTÄTAPAUKSESTA kertova banneri, jota ei voi piilottaa. Vaihda tyhjäksi piilottaaksesi sen (HTML sallittu)." disable_system_edit_notifications: "Poista muokkausilmoitukset system-käyttäjältä, kun 'download_remote_images_to_local' on asetettu." - likes_notification_consolidation_threshold: "Kuinka monta tykkäysilmoitusta pitää saada, jotta ilmoitukset niputetaan yhdeksi. Aseta 0 poistaaksesi käytöstä. Aikaikkunan määrittää asetus `SiteSetting.likes_notification_consolidation_window_mins`." - likes_notification_consolidation_window_mins: "Kuinka monessa minuutissa tykkäysilmoitukset pitää saada, jotta ilmoitukset niputetaan yhdeksi, jos ilmoitusten yläraja on ylittymässä. Ylärajan määrittää asetus `SiteSetting.likes_notification_consolidation_threshold`." automatically_unpin_topics: "Poista ketjun kiinnitys automaattisesti, kun käyttäjä on sen lopussa." read_time_word_count: "Sanamäärä minuutissa, jota käytetään lukuajan arviointiin." share_anonymized_statistics: "Julkaise yksilöimättömät käyttötilastot." @@ -1907,7 +1938,7 @@ fi: auto_deleted_by_timer: "Poistettiin ajastetusti." login: security_key_description: "Kun fyysinen tunnistautumislaite on kätesi ulottuvilla, klikkaa alla olevaa \"Tunnistaudu tunnistautumislaitteella\" -painiketta." - security_key_alternative: "Et löydä tunnistautumislaitetta tai haluat käyttää muuta tapaa?" + security_key_alternative: "Kokeile muuta tapaa" security_key_authenticate: "Tunnistaudu tunnistautumislaitteen avulla" security_key_not_allowed_error: "Tunnistaumislaitteella tunnistautumisprosessi joko vanheni tai peruutettiin." security_key_no_matching_credential_error: "Tunnistautumislaitteelta ei löytynyt kelpaavia pääsytietoja." @@ -2876,19 +2907,9 @@ fi: confirm_new_email: title: "Vahvista uusi sähköpostiosoite" subject_template: "[%{email_prefix}] Vahvista uusi sähköpostiosoite" - text_body_template: | - Vahvista uusi sähköpostiosoitteesi sivustolla %{site_name} klikkaamalla linkkiä: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Vahvista vanha sähköpostiosoite" subject_template: "[%{email_prefix}] Vahvista nykyinen sähköpostiosoitteesi" - text_body_template: | - Ennen kuin vaihdamme sähköpostiosoitteesi täytyy varmistaa, että hallinnoit nykyistä sähköpostiosoitetta. Tämän jälkeen varmistamme vielä uudenkin sähköpostiosoitteen. - - Vahvista nykyinen sähköpostiosoitteesi sivustolla %{site_name} klikkaamalla linkkiä: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Ilmoita vanhaan sähköpostiosoitteeseen" subject_template: "[%{email_prefix}] Sähköpostiosoitteesi on vaihdettu" diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml index 5d2e352f73..b3d472acf9 100644 --- a/config/locales/server.fr.yml +++ b/config/locales/server.fr.yml @@ -711,9 +711,6 @@ fr: error: "Il y a eu une erreur lors de la modification de votre adresse de courriel. Elle est peut-être déjà utilisée ?" error_staged: "Une erreur est survenue lors de la modification de votre adresse courriel. Cette adresse est déjà utilisée par un utilisateur distant." already_done: "Désolé, ce lien de confirmation n'est plus valide. Votre adresse de courriel a peut-être déjà été changée ?" - authorizing_old: - title: "Merci d'avoir confirmé votre adresse de courriel" - description: "Nous envoyons un courriel sur votre nouvelle adresse pour confirmation." associated_accounts: revoke_failed: "Echec de révocation de votre compte avec %{provider_name}." connected: "(connecté)" @@ -1714,8 +1711,6 @@ fr: permalink_normalizations: "Appliquer l'expression régulière suivante avant de détecter les permaliens, par exemple /(\\/topic.*)\\?.*/\\1 supprimera les chaînes de requête des chemins de sujet. Le format est regex+string, utilisez \\1 etc. pour capturer des séquences" global_notice: "Afficher une bannière de notification globale, d'URGENCE, et qui ne peut pas être ignoré, à tous les visiteurs, vide pour cacher (HTML admis)." disable_system_edit_notifications: "Désactiver les notifications de modifications par l'utilisateur système lorsque l'option 'download_remote_images_to_local' est activée." - likes_notification_consolidation_threshold: "Nombre de notifications reçues et aimées avant que les notifications ne soient regroupées en une seule. Régler à 0 pour désactiver. La fenêtre peut être configurée via `SiteSetting.likes_notification_consolidation_window_mins`." - likes_notification_consolidation_window_mins: "Durée en minutes où les notifications aimées sont regroupées en une seule une fois le seuil atteint. Le seuil peut être configuré via `SiteSetting.likes_notification_consolidation_threshold`." automatically_unpin_topics: "Désépingler automatiquement le sujet lorsque l'utilisateur atteint la fin." read_time_word_count: "Nombre de mots par minute servant de base de calcul à l'estimation du temps de lecture." topic_page_title_includes_category: "La balise de titre de la page du sujet comprend le nom de la catégorie." @@ -1966,7 +1961,6 @@ fr: auto_deleted_by_timer: "Supprimé automatiquement par planification" login: security_key_description: "Dès que votre clé de sécurité physique est prête, appuyer sur le bouton S'authentifier avec une clé de sécurité ci-dessous." - security_key_alternative: "Vous ne trouvez pas votre clé de sécurité ou voulez utiliser une autre méthode ?" security_key_authenticate: "S'authentifier avec une clé de sécurité" security_key_not_allowed_error: "La procédure d'authentification de la clé de sécurité a expiré ou a été annulée." security_key_no_matching_credential_error: "Aucun identifiant correspondant n'a pu être trouvé dans la clé de sécurité donnée." @@ -3006,19 +3000,9 @@ fr: confirm_new_email: title: "Confirmer votre nouvelle adresse courriel" subject_template: "[%{email_prefix}] Confirmez votre nouvelle adresse email" - text_body_template: | - Confirmez votre nouvelle adresse email pour %{site_name} en cliquant sur le lien suivant : - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Confirmez votre ancienne adresse email" subject_template: "[%{email_prefix}] Confirmez votre adresse email actuelle" - text_body_template: | - Avant de modifier votre adresse email, nous devons confirmer votre adresse email actuelle. Ensuite, nous vous demanderons de vérifier votre nouvelle adresse email. - - Confirmez votre adresse email actuelle pour %{site_name} en cliquant sur le lien suivant : - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Notifier l'ancienne adresse courriel" subject_template: "[%{email_prefix}] Votre adresse email a été modifié" @@ -4007,6 +3991,8 @@ fr: user_merged: "%{username} a être fusionné avec ce compte" user_delete_self: "Supprimer par l'utilisateur depuis %{url}" webhook_deactivation_reason: "Votre compte Web a été désactivé automatiquement. Nous avons reçu plusieurs réponses d'échec d'état HTTP '%{status}'." + api_key: + revoked: Révoquée reviewables: priorities: low: "Faible" diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml index ac476139b7..488195ef01 100644 --- a/config/locales/server.he.yml +++ b/config/locales/server.he.yml @@ -104,6 +104,7 @@ he: unsubscribe_not_allowed: "מתרחש כאשר למשתמש אין הרשאה לבטל מינוי דרך דוא״ל." email_not_allowed: "מתרחש כאשר כתובת דוא״ל אינה ברשימות ההיתר או האיסור." unrecognized_error: "שגיאה לא מוכרת" + secure_media_placeholder: "חידוש: באתר זה מופעלת מדיה מאובטחת, יש לבקר בנושא כדי לצפות בתמונה/קטע שמע/סרטון שצורפו." errors: &errors format: "%{attribute} %{message}" format_with_full_message: "%{attribute}: %{message}" @@ -125,6 +126,7 @@ he: inclusion: לא נכלל ברשימה invalid: לא תקין is_invalid: "נראה לא ברור, האם זה משפט שלם?" + invalid_timezone: "‚%{tz}’ אינו אזור זמן תקף" contains_censored_words: "מכיל את המילים המצונזרות הבאות: %{censored_words}" less_than: "חייב להיות קטן מ־%{count}" less_than_or_equal_to: "חייב להיות קטן או שווה ל־%{count}" @@ -177,6 +179,10 @@ he: enable_s3_uploads_is_required: "אי אפשר להגדיר מאגר ל־S3 אלמלא הפעלת העלאות ל־S3." s3_backup_requires_s3_settings: "לא ניתן להשתמש ב־S3 כמיקום לגיבוי אלמלא סיפקת את ‚%{setting_name}’." s3_bucket_reused: "אין לך אפשרות להשתמש באותו הדלי עבור ‚s3_upload_bucket’ וגם ‚s3_backup_bucket’. נא לבחור בדלי שונה או להשתמש בנתיב שונה לכל דלי." + secure_media_requirements: "יש להפעיל העלאה ל־S3 בטרם הפעלת מדיה מאובטחת." + second_factor_cannot_be_enforced_with_disabled_local_login: "אי אפשר לאכוף אימות דו־שלבי אם כניסה מקומית מושבתת." + local_login_cannot_be_disabled_if_second_factor_enforced: "אי אפשר להשבית כניסה מקומית אם נאכף אימות דו־שלבי. יש להשבית את אכיפת האימות הדו־שלבי בטרם השבתת כניסה מקומית." + cannot_enable_s3_uploads_when_s3_enabled_globally: "לא ניתן להפעיל העלאות ל־S3 כיוון שהעלאות ל־S3 כבר פעילות באופן גלובלי והפעלת האפשרות הזאת ברמת האתר עשויה להוביל לתקלות חמורות בהעלאה." conflicting_google_user_id: 'מזהה חשבון ה־Google לחשבון זה השתנה, התערבות של חבר סגל נדרשת מטעמי אבטחה. נא ליצור קשר עם אחד מחברי הסגל ולהפנות אותו אל
    https://meta.discourse.org/t/76575' activemodel: errors: @@ -311,6 +317,7 @@ he: max_pm_recepients: "ניתן לשלוח הודעה ל־%{recipients_limit} נמענים לכל היותר, עמך הסליחה." pm_reached_recipients_limit: "להודעה לא יכולים להיות למעלה מ־%{recipients_limit} נמענים, עמך הסליחה." removed_direct_reply_full_quotes: "הוסר ציטוט של כל הפוסט הקודם אוטומטית." + secure_upload_not_allowed_in_public_topic: "לא ניתן להשתמש בהעלאות המאובטחות הבאות בנושא ציבורי: %{upload_filenames}, עמך הסליחה." just_posted_that: "דומה מדי למה שפרסמת לאחרונה" invalid_characters: "מכיל תווים לא תקניים" is_invalid: "נראה לא ברור, האם זה משפט שלם?" @@ -783,14 +790,23 @@ he: windows: "Windows מבית Microsoft" unknown: "מערכת הפעלה בלתי מוכרת" change_email: + wrong_account_error: "נכנסת לחשבון הלא נכון, נא לצאת ולנסות שוב." confirmed: "כתובת הדוא״ל שלך עודכנה." please_continue: "להמשיך אל %{site_name}" error: "הייתה שגיאה בעדכון כתובת הדוא״ל. אולי היא כבר בשימוש?" error_staged: "אירעה שגיאה בהחלפת כתובת הדוא״ל שלך. הכתובת כבר נמצאת בשימוש על ידי מועמדים לשימוש במערכת." already_done: "קישור אימות זה אינו תקף עוד, עמך הסליחה. אולי כתובת הדוא״ל שלך כבר הוחלפה?" + confirm: "אישור" + authorizing_new: + title: "אישור כתובת הדוא״ל החדשה שלך" + description: "נא לאשר את החלפת כתובת הדוא״ל שלך לכתובת:" authorizing_old: - title: "תודה על אישור כתובת הדוא״ל הנוכחית שלך" - description: "אנחנו שולחים כעת הודעה לכתובת הדוא״ל החדשה לאישור." + title: "החלפת כתובת הדוא״ל שלך" + description: "נא לאשר את החלפת כתובת הדוא״ל שלך" + old_email: "כתובת דוא״ל ישנה: %{email}" + new_email: "כתובת דוא״ל חדשה: %{email}" + almost_done_title: "אישור כתובת הדוא״ל החדשה" + almost_done_description: "שלחנו הודעה לכתובת הדוא״ל החדשה שלך כדי לאשר את השינוי!" associated_accounts: revoke_failed: "שלילת החשבון שלך מול %{provider_name} נכשלה." connected: "(מחובר)" @@ -926,6 +942,8 @@ he: description: "העדפות הדוא״ל עבור %{email} עודכנו. כדי לשנות את הגדרות הדוא״ל שךף יש לבקר בהעדפות המשתמש שלך." topic_description: "כדי להרשם מחדש ל %{link}, השתמשו בהגדרות ההתראות בתחתית או משמאל לנושא." private_topic_description: "כדי להירשם מחדש, יש להשתמש בבקרת ההתראות בתחתית הנושא או משמאל לו." + uploads: + marked_insecure_from_theme_component_reason: "ההעלאה בה נעשה שימוש ברכיב ערכת עיצוב" unsubscribe: title: "בטלו את המנוי" stop_watching_topic: "הפסיקו לצפות בנושא זה, %{link}" @@ -1311,8 +1329,8 @@ he: other: "ניסיונות שליחת מיילים יצרו %{count} תקלות ב 24 השעות האחרונות. צפו ביומנים לפרטים נוספים." missing_mailgun_api_key: "השרת מוגדר לשלוח דוא״ל דרך Mailgun אך לא סיפקת מפתח API שישמש לאימות ההודעות דרך ההתליה." bad_favicon_url: "טעינת סמל האתר נכשלה. נא לבדוק את הגדרות סמל האתר שלך תחת הגדרות האתר." - deprecated_api_usage: "זיהינו בקשת API שמשתמשת בשיטת אימות מיושנת. נא לעדכן אותה כדי שתשתמש באימות מבוסס כותרת." - update_mail_receiver: "זיהינו גרסה מיושנת של מנגנון קבלת דוא״ל (mail-receiver). נא להתחבר לשרת הזה ב־ssh ולהריץ את הפקודה `‎/var/discourse/launcher rebuild mail-receiver`." + deprecated_api_usage: "זיהינו בקשת API שהשתמשה בשיטת אימות ישנה. נא לעדכן את הלקוח להשתמש באימות בכותרת. לאחר העדכון ההודעה הזו תיעלם תוך 24 שעות." + update_mail_receiver: "זיהינו גרסה מיושנת של mail-receiver. יש ללחוץ כאן להנחיות על עדכון. לאחר העדכון ההודעה הזו תיעלם תוך 24 שעות." poll_pop3_timeout: "החיבור לשרת POP3 התנתק. דוא\"ל נכנס לא יכול להשלף ואינו מאוחזר. אנא בדקו את הגדרות ה-POP3 שלכם ואת ספק השירות." poll_pop3_auth_error: "החיבור לשרת POP3 נכשל בשל שגיאת הזדהות. אנא בדקו את הגדרות ה-POP3 שלכם." force_https_warning: "האתר שלך משתמש ב־SSL. אך `force_https` לא מופעל עדיין בהגדרות האתר שלך." @@ -1766,6 +1784,7 @@ he: log_mail_processing_failures: "לתעד את כל שגיאות עיבוד הדוא״ל אל ‎/logs" email_in: 'לאפשר למשתמשים לפרסם נושאים חדשים באמצעות דוא״ל (נדרש תשאול ידני או דרך pop3). יש להגדיר את הכתובות בלשונית ה„הגדרות” שבכל קטגוריה.' email_in_min_trust: "רמת האמון המינימלית הנדרשת למשתמשים כדי שיוכלו להעלות נושאים חדשים באמצעות הדוא\"ל." + email_in_authserv_id: "מזהה השירות מבצע בדיקות אימות על הודעות דוא״ל נכנסות. יש לעיין ב־https://meta.discourse.org/t/134358 לקבלת הנחיות כיצד להגדיר זאת." email_in_spam_header: "כותרת הודעת הדוא״ל לאיתור ספאם." email_prefix: "ה[תווית] שתשמש כנושא של מיילים. אם לא יוגדר, ברירת המחדל תכוון ל'כותרת' אם לא יוגדר אחרת." email_site_title: "הכותרת של האתר שתשמש כשם השולח של דוא\"ל מהאתר. במידה ולא יוגדר ערך, תכוון ברירת המחדל ל\"כותרת\". אם ה\"כותרת\" שלכם מכילה תוים שאינם מותרים לשימוש במחרוזות \"שם השולח\" בדוא\"ל, השתמשו בהגדרה זו." @@ -1824,8 +1843,8 @@ he: permalink_normalizations: "החילו את הביטויים הרגולריים האלו לפני שמתאימים קישורים-קבועים, למשל: /(topic.*)\\?.*/\\1 יסיר מחרוזות שאילתה מנתיבי נושאים. הפורמט הוא regex+string משתמש ב \\1 וכד׳ כדי לגשת להתאמות" global_notice: "הצגת מודעה גלובלית דחופה בגדר חירום לכל המבקרים, יש להחליף בתוכן ריק כדי להסתיר אותה (מותר HTML)." disable_system_edit_notifications: "ביטול התראות עריכה על ידי משתמש המערכת כאשר 'download_remote_images_to_local' פעיל." - likes_notification_consolidation_threshold: "מספר ההתראות שסומנו בלייק שהתקבלו לפני שההתראות קובצו להתראה אחת. יש להגדיר ל־0 כדי לנטרל. ניתן להגדיר את החלון `SiteSetting.likes_notification_consolidation_window_mins` (חלון קיבוץ התראות על לייקים בדקות)." - likes_notification_consolidation_window_mins: "משך הזמן בשניות בו התראות מקובצות להתראה אחת לאחר שהגיעו לסף הזה. ניתן להגדיר את הסף דרך `SiteSetting.likes_notification_consolidation_threshold` (סף קיבוץ התראות לייקים)." + notification_consolidation_threshold: "מספר ההתראות שסומנו בלייק או בקשות שהתקבלו לפני שההתראות קובצו להתראה אחת. יש להגדיר ל־0 כדי להשבית." + likes_notification_consolidation_window_mins: "משך הזמן בשניות בו התראות מקובצות להתראה אחת לאחר שהגיעו לסף הזה. ניתן להגדיר את הסף דרך `SiteSetting.notification_consolidation_threshold` (סף קיבוץ התראות)." automatically_unpin_topics: "הסרת נעיצה אוטומטית של נושאים כאשר המשתמשים מגיעים לתחתית." read_time_word_count: "מספר המילים לדקה כדי להעריך את זמן הקריאה." topic_page_title_includes_category: "תגית הכותרת (title) בעמוד הנושא מכילה את שם הקטגוריה." @@ -1859,6 +1878,7 @@ he: delete_drafts_older_than_n_days: "מחקו טיוטות בנות יותר מ (n) ימים." bootstrap_mode_min_users: "מספר משתמשים מינימלי שנדרש כדי לנטרל מצב איתחול (קבעו ל 0 כדי לנטרל)" prevent_anons_from_downloading_files: "מונע ממשתמשים אנונימיים להוריד צרופות (attachments). אזהרה: דבר זה ימנע מכל משאב שאינו תמונה ופורסם כצרופה לעבוד." + secure_media: 'הגבלת הגישה להעלאות מדיה (תמונות, סרטונים, קטעי שמע). אם מופעלת „דרישת כניסה”, רק למשתמשים שנכנסו לחשבון במערכת תהיה גישה למדיה שהועלתה. אחרת, הגישה תוגבל רק למדיה שנשלחה בהודעות פרטיות. לתשומת לבך: חובה להפעיל העלאות ל־S3 בטרם הפעלת הגדרה זו.' slug_generation_method: "בחרו צורת ייצור slug. צורה של 'encoded' תגרום למחרוזות עם קידוד אחוזים. 'none' ינטרל slug לחלוטין." enable_emoji: "הפעלת אמוג׳י" enable_emoji_shortcuts: "חייכנים נפוצים כגון ‎:) :p :(‎ יומרו לאמוג׳ים" @@ -2125,7 +2145,7 @@ he: auto_deleted_by_timer: "יימחק אוטומטית על ידי שעון." login: security_key_description: "כשמפתח האבטחה הפיזי שלך מוכן יש ללחוץ על כפתור האימות עם מפתח האבטחה שלהלן." - security_key_alternative: "לא הצלחת למצוא את מפתח האבטחה או שברצונך לנסות שיטה אחרת?" + security_key_alternative: "לנסות דרך אחרת" security_key_authenticate: "אימות עם מפתח אבטחה" security_key_not_allowed_error: "זמן תהליך אימות מפתח האבטחה פג או שבוטל." security_key_no_matching_credential_error: "לא ניתן למצוא פרטי גישה במפתח האבטחה שסופק." @@ -3257,17 +3277,18 @@ he: title: "אישור מייל חדש" subject_template: "[%{email_prefix}] אשרו את כתובת המייל החדשה שלכם" text_body_template: | - אשרו את כתובת המייל החדשה שלכם עבור %{site_name} על ידי לחיצה על הקישור הבא: + נא לאשר את כתובת הדוא״ל שתשמש אותך לגשת אל %{site_name} על ידי לחיצה על הקישור הבא: %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "אישור מייל ישן" subject_template: "[%{email_prefix}] אשרו את כתובת המייל הנוכחית שלכם" text_body_template: | - לפני שנוכל לשנות את כתובת המייל שלכם, אנחנו צריכים שתאשרו שאתם שולטים - בחשבון המייל הנוכחי. אחרי שתשלימו שלב זה, נבקש שתאשרו את כתובת המייל החדשה. + לפני שנוכל להחליף את כתובת הדוא״ל שלך, עלינו לאשר שיש לך שליטה + בחשבון הדוא״ל הנוכחי. לאחר השלמת השלב הזה, נבקש ממך לאשר + את כתובת הדוא״ל החדשה. - אשרו את כתובת המייל הנוכחית עבור %{site_name} על ידי לחיצה על הקישור הבא: + ניתן לאשר את כתובת הדוא״ל הנוכחית שלך לגישה לאתר %{site_name} בלחיצה על הקישור הבא: %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: @@ -3891,11 +3912,15 @@ he: two: '„%{tag_name}” מוגבלת לקטגוריות הבאות: %{category_names}' many: '„%{tag_name}” מוגבלת לקטגוריות הבאות: %{category_names}' other: '„%{tag_name}” מוגבלת לקטגוריות הבאות: %{category_names}' + synonym: 'אסור להשתמש במילים נרדפות. יש להשתמש ב־„%{tag_name}” במקום.' + has_synonyms: 'לא ניתן להשתמש ב־„%{tag_name}” כיוון שיש לו מילים נרדפות.' required_tags_from_group: one: "עליך לכלול תגית %{tag_group_name} %{count} לפחות" two: "עליך לכלול %{count} תגיות %{tag_group_name} לפחות" many: "עליך לכלול %{count} תגיות %{tag_group_name} לפחות" other: "עליך לכלול %{count} תגיות %{tag_group_name} לפחות" + invalid_target_tag: "לא יכול להיות מילה נרדפת של מילה נרדפת" + synonyms_exist: "אסור לשימוש כל עוד קיימות מילים נרדפות" rss_by_tag: "נושאים מתוייגים %{tag}" finish_installation: congratulations: "ברכותינו, התקנת את Discourse!" diff --git a/config/locales/server.hu.yml b/config/locales/server.hu.yml index 7e1033b216..777a53dd5d 100644 --- a/config/locales/server.hu.yml +++ b/config/locales/server.hu.yml @@ -451,8 +451,6 @@ hu: confirmed: "Az e-mail címe frissítve lett." please_continue: "Tovább a(z) %{site_name} oldalra" error: "Hiba történt az e-mail cím módosításakor. Lehet, hogy már használatban van?" - authorizing_old: - title: "Köszönjük, hogy megerősítette az e-mail címét" activation: action: "Kattintson ide a felhasználói fiókja aktiválásához" already_done: "Ez a fiók megerősítési hivatkozás már nem érvényes. Lehet, hogy a fiókja már aktiválva lett?" diff --git a/config/locales/server.hy.yml b/config/locales/server.hy.yml index 30db6aa4d0..af0c6cd501 100644 --- a/config/locales/server.hy.yml +++ b/config/locales/server.hy.yml @@ -622,9 +622,6 @@ hy: error: "Ձեր էլ. հասցեն փոփոխելիս տեղի է ունեցել սխալ: Միգուցե հասցեն արդեն օգտագործվո՞ւմ է:" error_staged: "Ձեր էլ. հասցեն փոփոխելիս տեղի է ունեցել սխալ: Հասցեն արդեն օգտագործվում է աստիճանավորված օգտատիրոջ կողմից:" already_done: "Ներողություն, այս հաստատման հղումը այլևս վավեր չէ: Միգուցե Ձեր էլ. հասցեն արդեն փոխվե՞լ է:" - authorizing_old: - title: "Շնորհակալ ենք Ձեր ընթացիկ էլ. հասցեն հաստատելու համար" - description: "Մենք այժմ նամակ ենք գրում Ձեր հասցեին հաստատման համար:" associated_accounts: revoke_failed: "Չհաջողվեց ետ կանչել Ձեր հաշիվը %{provider_name} -ով:" activation: @@ -1565,8 +1562,6 @@ hy: permalink_normalizations: "Կիրառել հետևյալ կարգավորումը՝ մինչ մշտահղումները համապատասխանեցնելը, օրինակ՝ /(topic.*)\\?.*/\\1 -ը կառանձնացնի հարցման տողերը թեմայի ուղիներից: Ֆորմատը՝ regex+string , օգտագործեք \\1 և այլն՝ հասանելիության գրավման համար:" global_notice: "Ցուցադրել ՇՏԱՊ, ԱՆՀՐԱԺԵՇՏՈՒԹՅՈՒՆ, ոչ-չեղարկելի գլոբալ բանների նշումը բոլոր այցելուներին, փոխեք դատարկի՝ թաքցնելու համար (HTML -ը թույլատրված է):" disable_system_edit_notifications: "Անջատում է խմբագրման ծանուցումները համակարգի օգտատիրոջ կողմից, երբ 'download_remote_images_to_local' -ը ակտիվ է:" - likes_notification_consolidation_threshold: "Հավանումների մասին ստացված ծանուցումների քանակը, որից հետո ծանուցումները միավորվում են մեկի տակ: Սահմանեք 0՝ անջատելու համար: Պատուհանը կարող է կարգավորվել հետևյալի միջոցով՝ `SiteSetting.likes_notification_consolidation_window_mins`." - likes_notification_consolidation_window_mins: "Տևողությունը րոպեներով, երբ հավանումների ծանուցումները միավորվում են մեկի տակ, հենց որ հատվում է սահմանը: Սահմանը կարող է կարգավորվոել հետևյալի միջոցով՝ `SiteSetting.likes_notification_consolidation_threshold`." automatically_unpin_topics: "Ավտոմատ կերպով ապակցել թեմաները, երբ օգտատերը հասնում է ներքև:" read_time_word_count: "Յուրաքանչյուր րոպեում բառերի քանակը՝ կարդալու մոտավոր ժամանակը հաշվարկելու համար:" share_anonymized_statistics: "Կիսվել անանուն օգտագործումների վիճակագրությամբ:" @@ -2698,20 +2693,9 @@ hy: confirm_new_email: title: "Հաստատել Նոր Էլ. հասցեն" subject_template: "[%{email_prefix}] Հաստատեք Ձեր նոր էլ. հասցեն" - text_body_template: | - Հաստատեք Ձեր նոր էլ. հասցեն %{site_name} -ի համար՝ սեղմելով հետևյալ հղումը. - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Հաստատել Հին Էլ. Հասցեն" subject_template: "[%{email_prefix}] Հաստատել Ձեր ընթացիկ էլ. հասցեն" - text_body_template: | - Մինչ մենք կարող ենք փոփոխել Ձեր էլ. հասցեն, անհրաժեշտ է, որ Դուք հաստատեք, որ Դուք վերահսկում եք - ընթացիկ էլ. փոստի հաշիվը: Այս քայլը ավարտելուց հետո մենք կհաստատենք - նոր էլ. հասցեն: - - Հաստատեք Ձեր ընթացիկ էլ. հասցեն %{site_name} -ի համար՝ սեղմելով հետևյալ հղումը՝ - %{base_url}/u/նույնականացնել-հասցեն/%{email_token} notify_old_email: title: "Ծանուցել Հին Էլ. Նամակը" subject_template: "[%{email_prefix}] Ձեր էլ. հասցեն փոփոխվել է " diff --git a/config/locales/server.id.yml b/config/locales/server.id.yml index 68866d96a5..912ef4e9c4 100644 --- a/config/locales/server.id.yml +++ b/config/locales/server.id.yml @@ -275,9 +275,6 @@ id: error: "Ada kesalahan dalam merubah alamat email Anda. Mungkinkah alamat ini telah digunakan oleh pengguna lain?" error_staged: "Ada kesalahan dalam merubah alamat email Anda. Alamat ini telah digunakan oleh pengguna lain." already_done: "Maaf, tautan konfirmasi ini sudah tidak valid. Apakah anda telah mengubah surel anda?" - authorizing_old: - title: "Terima kasih telah mengkonfirmasi alamat email terkini Anda" - description: "Sekarang kami akan mengirimkan surel konfirmasi ke alamat email baru Anda." activation: action: "Klik disini untuk mengaktifkan akun anda" already_done: "Maaf, tautan konfirmasi ini sudah tidak valid. Apakah akun anda sudah aktif?" diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml index faf3d8a1b3..db56667c8c 100644 --- a/config/locales/server.it.yml +++ b/config/locales/server.it.yml @@ -694,9 +694,6 @@ it: error: "Si è verificato un errore durante la modifica del tuo indirizzo email. Forse l'indirizzo è già in uso?" error_staged: "Si è verificato un errore durante il cambio di indirizzo email. L'indirizzo è già stato usato da un utente temporaneo." already_done: "Spiacenti, il collegamento di conferma non è più valido. Hai forse già cambiato email?" - authorizing_old: - title: "Grazie per aver confermato il tuo attuale indirizzo email" - description: "Ti stiamo inviando una email al nuovo indirizzo per conferma." associated_accounts: revoke_failed: "Impossibile revocare il tuo account con %{provider_name}." connected: "(connesso)" @@ -1692,8 +1689,6 @@ it: permalink_normalizations: "Applicare il seguente regex prima di accedere ai permalink, ad esempio: /(topic.*)\\?.*/\\1 eliminerà le stringhe query dalla route degli argomenti. Il formato è regex+string use \\1 ecc. per accedere alle catture" global_notice: "Mostra un banner di avviso globale URGENTE, EMERGENZA, non eliminabile a tutti i visitatori, imposta a vuoto per nasconderlo (HTML consentito)." disable_system_edit_notifications: "Disabilita le notifiche di modifica dall'utente system quando 'download_remote_images_to_local' è attivo." - likes_notification_consolidation_threshold: "Numero di notifiche da ricevere oltre il quale saranno consolidate in una singola notifica. Impostare su 0 per disabilitare. Il valore può essere configurato tramite 'SiteSetting.likes_notification_consolidation_window_mins'." - likes_notification_consolidation_window_mins: "Tempo in minuti nel quale le notifiche preferite vengono consolidate in un'unica notifica una volta raggiunta una determinata soglia. La soglia può essere configurata tramite 'SiteSetting.likes_notification_consolidation_threshold'." automatically_unpin_topics: " Spunta automaticamente gli argomenti quando l'utente arriva in fondo. " read_time_word_count: "Conteggio di parole al minuto per calcolare il tempo stimato di lettura." topic_page_title_includes_category: "La pagina dell'argomento titolo etichetta include il nome della categoria." @@ -2859,21 +2854,9 @@ it: confirm_new_email: title: "Conferma Nuova Email" subject_template: "[%{email_prefix}] Conferma il tuo nuovo indizzo email" - text_body_template: | - Conferma il tuo nuovo indirizzo email su %{site_name} cliccando il seguente collegamento: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Conferma Vecchia Email" subject_template: "[%{email_prefix}] Conferma il tuo attuale indirizzo email" - text_body_template: | - Prima di poter cambiare il tuo indirizzo email abbiamo bisogno che tu confermi di controllare - l'indirizzo email attuale. Dopo aver completato questo passaggio, dovrai confermare - il nuovo indirizzo email. - - Conferma il tuo attuale indirizzo email su %{site_name} cliccando il seguente collegamento: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Notifica Vecchia Email" subject_template: "[%{email_prefix}] Il tuo indirizzo email è stato cambiato" diff --git a/config/locales/server.ja.yml b/config/locales/server.ja.yml index dc9ca9e287..3470fc6bd8 100644 --- a/config/locales/server.ja.yml +++ b/config/locales/server.ja.yml @@ -416,9 +416,6 @@ ja: error: "メールアドレスの変更中にエラーが発生しました。このアドレスはすでに使われている可能性があります。" error_staged: "メールアドレスの変更中にエラーが発生しました。このアドレスはすでに使われている可能性があります。" already_done: "申し訳ありませんが、この確認リンクは有効ではありません。既にあなたのメールは変更されていませんか?" - authorizing_old: - title: "メールアドレスを確認していただきありがとうございます!\U0001F609" - description: "登録されたメールアドレスに確認メールを送りました\U0001F606" activation: action: "クリックしてアカウントを認証する" already_done: "申し訳ありませんが、このアカウント認証リンクは無効です。既にアカウントがアクティブになっていませんか?" @@ -1297,10 +1294,6 @@ ja: confirm_new_email: title: "メールを確認してください" subject_template: "[%{email_prefix}]新しいメールアドレスを確認してください" - text_body_template: | - %{site_name}への新しいメールアドレスを下のリンクから確認してください。 - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "古いメールの確認" subject_template: "[%{email_prefix}]現在のメールアドレスの確認" diff --git a/config/locales/server.ko.yml b/config/locales/server.ko.yml index 9b6aeb0811..3a4fa3f764 100644 --- a/config/locales/server.ko.yml +++ b/config/locales/server.ko.yml @@ -514,9 +514,6 @@ ko: error: "이메일 주소를 변경하는데 문제가 있습니다. 주소가 이미 사용되고 있나요?" error_staged: "이메일 주소 변경중에 에러가 발생했습니다. 이 주소는 격리된 사용자가 이미 사용중입니다." already_done: "죄송합니다. 이 확인 링크는 더 이상 유효하지 않습니다. 이메일이 이미 변경되지는 않았나요?" - authorizing_old: - title: "이메일 주소를 확인해 주셔서 감사합니다." - description: "확인을 위하여 새로운 이메일 주소로 메일을 전송합니다." activation: action: "여기를 눌러 계정을 활성화하세요." already_done: "죄송합니다. 이 계정 확인 링크는 더 이상 유효하지 않습니다." diff --git a/config/locales/server.lv.yml b/config/locales/server.lv.yml index 4077eacf79..8cf6e85a6f 100644 --- a/config/locales/server.lv.yml +++ b/config/locales/server.lv.yml @@ -140,6 +140,8 @@ lv: every_hour: "katru stundu" daily: "katru dienu" weekly: "katru nedēļu" + every_month: "katru mēnesi" + every_six_months: "katrus sešus mēnešus" user_api_key: read: "izlasīts" otp_confirmation: @@ -151,6 +153,7 @@ lv: day: Diena post_edits: labels: + edited_at: Datums post: Ieraksts edit_reason: Iemesls user_flagging_ratio: @@ -255,11 +258,13 @@ lv: http_5xx_reqs: xaxis: "Diena" http_total_reqs: + title: "Kopā" xaxis: "Diena" time_to_first_response: xaxis: "Diena" topics_with_no_response: xaxis: "Diena" + yaxis: "Kopā" mobile_visits: xaxis: "Diena" web_crawlers: diff --git a/config/locales/server.nb_NO.yml b/config/locales/server.nb_NO.yml index 283ba4c69a..dcd7f75400 100644 --- a/config/locales/server.nb_NO.yml +++ b/config/locales/server.nb_NO.yml @@ -575,9 +575,6 @@ nb_NO: error: "Det oppsto en feil ved endring av din e-postadresse. Kanskje addressen allerede er i bruk?" error_staged: "En feil oppstod ved endring av e-postadressen din. Den nye adressen er allerede i bruk av en arrangert bruker." already_done: "Beklager, denne godkjenningslenken er ikke lenger gyldig. Kanskje e-postadressen din allerede er byttet?" - authorizing_old: - title: "Takk for at du bekreftet din nåværende e-postadresse" - description: "Vi sender deg en e-post til din nye adresse for bekreftelse." associated_accounts: revoke_failed: "Klarte ikke å oppheve kontotilknytningen til %{provider_name}." activation: diff --git a/config/locales/server.nl.yml b/config/locales/server.nl.yml index 8ef70544f9..882bd9e6d8 100644 --- a/config/locales/server.nl.yml +++ b/config/locales/server.nl.yml @@ -104,6 +104,7 @@ nl: unsubscribe_not_allowed: "Gebeurt wanneer uitschrijven via e-mail niet is toegestaan voor deze gebruiker." email_not_allowed: "Gebeurt wanneer het e-mailadres zich niet op de whitelist of wel op de blacklist bevindt." unrecognized_error: "Niet-herkende fout" + secure_media_placeholder: "Geredigeerd: deze website heeft beveiligde media ingeschakeld; bezoek het topic om de gekoppelde afbeelding/audio/video te zien." errors: &errors format: "%{attribute} %{message}" format_with_full_message: "%{attribute}: %{message}" @@ -125,6 +126,7 @@ nl: inclusion: komt niet voor in de lijst invalid: is ongeldig is_invalid: "lijkt onduidelijk, is het een volledige zin?" + invalid_timezone: "'%{tz}' is geen geldige tijdzone" contains_censored_words: "bevat de volgende gecensureerde woorden: %{censored_words}" less_than: "moet minder zijn dan %{count}" less_than_or_equal_to: "moet minder zijn dan of gelijk zijn aan %{count}" @@ -167,6 +169,10 @@ nl: enable_s3_uploads_is_required: "U kunt geen inventory naar S3 inschakelen voordat u de S3-uploads hebt ingeschakeld." s3_backup_requires_s3_settings: "U kunt S3 niet als back-uplocatie gebruiken voordat u de '%{setting_name}' hebt opgegeven." s3_bucket_reused: "U kunt niet dezelfde bucket voor 's3_upload_bucket' en 's3_backup_bucket' gebruiken. Kies een andere bucket of gebruik een ander pad voor elke bucket." + secure_media_requirements: "S3-uploads moeten zijn ingeschakeld voordat u beveiligde media inschakelt." + second_factor_cannot_be_enforced_with_disabled_local_login: "U kunt geen 2FA afdwingen als lokale aanmeldingen zijn uitgeschakeld." + local_login_cannot_be_disabled_if_second_factor_enforced: "U kunt geen lokale aanmelding uitschakelen als 2FA is afgedwongen. Schakel afgedwongen 2FA uit voordat u lokale aanmeldingen uitschakelt." + cannot_enable_s3_uploads_when_s3_enabled_globally: "U kunt geen S3-uploads inschakelen, omdat S3-uploads al globaal zijn ingeschakeld, en inschakelen hiervan op websiteniveau kan kritieke problemen met uploads veroorzaken" conflicting_google_user_id: 'De Google-account-ID voor deze account is gewijzigd; om beveiligingsredenen is stafinterventie vereist. Neem contact op met een staflid en wijs hem of haar op
    https://meta.discourse.org/t/76575' activemodel: errors: @@ -281,6 +287,7 @@ nl: max_pm_recepients: "Sorry, u kunt naar maximaal %{recipients_limit} ontvangers een bericht sturen." pm_reached_recipients_limit: "Sorry, u kunt niet meer dan %{recipients_limit} ontvangers in een bericht hebben." removed_direct_reply_full_quotes: "Citaat van hele voorgaande bericht is automatisch verwijderd." + secure_upload_not_allowed_in_public_topic: "Sorry, de volgende beveiligde upload(s) kan/kunnen niet in een publiek topic wordt gebruikt: %{upload_filenames}." just_posted_that: "lijkt te veel op wat u onlangs hebt geplaatst" invalid_characters: "bevat ongeldige tekens" is_invalid: "lijkt onduidelijk, is het een volledige zin?" @@ -715,14 +722,23 @@ nl: windows: "Microsoft Windows" unknown: "onbekend besturingssysteem" change_email: + wrong_account_error: "U bent bij de verkeerde account aangemeld; meld u af en probeer het opnieuw." confirmed: "Uw e-mailadres is bijgewerkt." please_continue: "Doorgaan naar %{site_name}" error: "Er is een fout opgetreden bij het wijzigen van uw e-mailadres. Misschien is het adres al in gebruik?" error_staged: "Er is een fout opgetreden bij het wijzigen van uw e-mailadres. Het adres is al in gebruik door een staged gebruiker." already_done: "Sorry, deze bevestigingskoppeling is niet meer geldig. Misschien is uw e-mailadres al gewijzigd?" + confirm: "Bevestigen" + authorizing_new: + title: "Bevestig uw nieuwe e-mailadres" + description: "Bevestig dat u uw nieuwe e-mailadres gewijzigd wilt zien naar:" authorizing_old: - title: "Bedankt voor het bevestigen van uw huidige e-mailadres" - description: "We sturen nu ter bevestiging een e-mail naar uw nieuwe adres." + title: "Uw e-mailadres wijzigen" + description: "Bevestig de wijziging van uw e-mailadres" + old_email: "Oude e-mailadres: %{email}" + new_email: "Nieuwe e-mailadres: %{email}" + almost_done_title: "Nieuwe e-mailadres bevestigen" + almost_done_description: "Er is een e-mail naar uw nieuwe e-mailadres verstuurd om de wijziging te bevestigen!" associated_accounts: revoke_failed: "Intrekken van uw account bij %{provider_name} is mislukt." connected: "(verbonden)" @@ -858,6 +874,8 @@ nl: description: "e-mailvoorkeuren voor %{email} zijn bijgewerkt. Bezoek uw gebruikersvoorkeuren om uw e-mailinstellingen te wijzigen." topic_description: "Gebruik de meldingsinstellingen onder of rechts van het topic om u opnieuw voor %{link} in te schrijven." private_topic_description: "Gebruik de meldingsinstellingen onder of rechts van het topic om u opnieuw in te schrijven." + uploads: + marked_insecure_from_theme_component_reason: "upload gebruikt in themaonderdeel" unsubscribe: title: "Uitschrijven" stop_watching_topic: "Dit topic niet meer in de gaten houden, %{link}" @@ -1214,12 +1232,12 @@ nl: filesize: Bestandsgrootte description: "Lijst van alle uploads op extensie, bestandsgrootte en maker." top_ignored_users: - title: "Meest Genegeerde / Gedempte Gebruikers" + title: "Meest genegeerde / gedempte gebruikers" labels: ignored_user: Genegeerde gebruiker ignores_count: Aantal genegeerd mutes_count: Aantal gedempt - description: "Gebruikers die gedempt en/of genegeerd worden door vele andere gebruikers." + description: "Gebruikers die door veel andere gebruikers zijn gedempt en/of genegeerd." dashboard: rails_env_warning: "Uw server werkt in de modus voor %{env}." host_names_warning: "Uw bestand config/database.yml gebruikt de standaardhostnaam localhost. Werk deze bij naar de hostnaam van uw website." @@ -1241,9 +1259,9 @@ nl: other: "E-mailpolling heeft de afgelopen 24 uur %{count} fouten gegenereerd. Bekijk de logboeken voor meer details." missing_mailgun_api_key: "De server is geconfigureerd om e-mails via Mailgun te verzenden, maar u hebt geen API-sleutel opgegeven voor verificatie van de webhookberichten." bad_favicon_url: "De favicon wordt niet geladen. Controleer uw favicon-instelling in de Website-instellingen." - deprecated_api_usage: "We hebben een API-aanvraag via een verouderde authenticatiemethode gedetecteerd. Werk deze bij zodat op koptekst gebaseerde authenticatie wordt gebruikt." - update_mail_receiver: "We hebben een verouderde versie van mail-receiver gedetecteerd. Meld u aan bij deze server via ssh en voer `/var/discourse/launcher rebuild mail-receiver` uit." - poll_pop3_timeout: "Time-out voor verbinding met de POP3-server. Binnenkomende e-mail kon niet worden opgehaald. Controleer uw POP3-instellingen en serviceprovider." + deprecated_api_usage: "We hebben een API-aanvraag via een verouderde authenticatiemethode gedetecteerd. Werk deze bij zodat op headers gebaseerde authenticatie wordt gebruikt. Na het bijwerken zou dit bericht pas na 24 uur kunnen verschijnen." + update_mail_receiver: "We hebben een verouderde versie van mail-receiver gedetecteerd. Klik hier voor update-instructies. Na het bijwerken zou dit bericht pas na 24 uur kunnen verschijnen." + poll_pop3_timeout: "Time-out voor verbinding met de POP3-server. Inkomende e-mail kon niet worden opgehaald. Controleer uw POP3-instellingen en serviceprovider." poll_pop3_auth_error: "Verbinding met de POP3-server is mislukt met een authenticatiefout. Controleer uw POP3-instellingen." force_https_warning: "Uw website gebruikt SSL, maar `force_https` is nog niet ingeschakeld in uw website-instellingen." out_of_date_themes: "Er zijn updates voor de volgende thema's beschikbaar:" @@ -1319,11 +1337,11 @@ nl: logo_small: "De kleine logoafbeelding links bovenaan op uw website, zichtbaar bij omlaag scrollen. Gebruik een vierkante afbeelding van 120 × 120. Bij leeg laten wordt een startpaginasymbool getoond." digest_logo: "De alternatieve logoafbeelding bovenaan de e-mailsamenvatting van uw website. Gebruik een brede rechthoekige afbeelding. Gebruik geen SVG-afbeelding. Bij leeg laten wordt de afbeelding van de instelling `logo` gebruikt." mobile_logo: "Het logo dat op de mobiele versie van uw website wordt gebruikt. Gebruik een brede rechthoekige afbeelding met een hoogte van 120 en een hoogte-breedteverhouding groter dan 3:1. Bij leeg laten wordt de afbeelding van de instelling `logo` gebruikt." - large_icon: "Afbeelding die als basis wordt gebruikt voor andere metadata iconen. Moet idealiter groter zijn dan 512 x 512. Als het leeg gelaten wordt, dan zal logo_small worden gebruikt." - manifest_icon: "Afbeelding gebruikt als logo/splash-afbeelding op Android. Zal vanzelf worden geschaald naar 512 x 512. Als het leeg gelaten wordt, dan zal large_icon gebruikt worden." - favicon: "Een favicon voor jouw website, zie https://en.wikipedia.org/wiki/Favicon. Om correct te werken via een CDN, moet dit een png zijn. Zal worden geschaald naar 32x32. Als het leeg gelaten wordt, dan zal large_icon gebruikt worden." - apple_touch_icon: "Icoon gebruikt voor Apple touch-apparaten. Zal geschaald worden naar 180x180. Als het leeg gelaten wordt, dan zal large_icon worden gebruikt." - opengraph_image: "Standaard opengraph-afbeelding, gebruikt wanneer de pagina geen andere afbeelding bevat. Als het leeg gelaten wordt, dan zal large_icon worden gebruikt" + large_icon: "Afbeelding die als basis voor andere metagegevenspictogrammen wordt gebruikt. Moet idealiter groter zijn dan 512 x 512. Bij leeg laten wordt logo_small gebruikt." + manifest_icon: "Afbeelding die als logo/splashafbeelding op Android wordt gebruikt. Wordt automatisch verkleind naar 512 x 512. Bij leeg laten wordt large_icon gebruikt." + favicon: "Een favicon voor uw website, zie https://nl.wikipedia.org/wiki/Favicon. Om goed via een CDN te werken, moet dit een png zijn. Wordt verkleind naar 32x32. Bij leeg laten wordt large_icon gebruikt." + apple_touch_icon: "Pictogram dat voor Apple touch-apparaten wordt gebruikt. Wordt automatisch verkleind naar 180x180. Bij leeg laten wordt large_icon gebruikt." + opengraph_image: "Standaard opengraph-afbeelding, gebruikt wanneer de pagina geen andere geschikte afbeelding bevat. Bij leeg laten wordt large_icon gebruikt." twitter_summary_large_image: "'summary large image' van Twitter-card (dient minstens 280 in breedte, en minstens 150 in hoogte te zijn). Bij leeg laten worden reguliere kaartmetagegevens gegenereerd via de opengraph_image." notification_email: "Het Van:-e-mailadres adres dat wordt gebruikt voor het verzenden van alle essentiële systeem-e-mails. Het hier opgegeven domein moet goed ingestelde SPF-, DKIM- en reverse-PTR-records hebben om e-mails te doen aankomen." email_custom_headers: "Een door een pipe (|) gescheiden lijst van aangepaste e-mailheaders" @@ -1652,7 +1670,7 @@ nl: reply_by_email_address: "Sjabloon voor adres voor inkomende e-mail bij antwoorden per e-mail, bijvoorbeeld: %%{reply_key}@reply.example.com of replies+%%{reply_key}@example.com" alternative_reply_by_email_addresses: "Lijst van alternatieve sjablonen voor adressen voor inkomende e-mail bij antwoorden per e-mail. Voorbeeld: %%{reply_key}@reply.example.com|replies+%%{reply_key}@example.com" incoming_email_prefer_html: "HTML in plaats van tekst gebruiken voor inkomende e-mail." - strip_incoming_email_lines: "Voorloop- en volgspaties uit elke regel van binnenkomende e-mails verwijderen." + strip_incoming_email_lines: "Voorloop- en volgspaties uit elke regel van inkomende e-mails verwijderen." disable_emails: "Voorkomen dat Discourse alle soorten e-mail verstuurt. Selecteer 'yes' om e-mails voor alle gebruikers uit te schakelen. Selecteer 'non-staff' om alleen e-mails voor stafleden uit te schakelen." strip_images_from_short_emails: "Afbeeldingen met grootte van minder dan 2800 bytes uit e-mails verwijderen" short_email_length: "Lengte van korte e-mail in bytes" @@ -1696,6 +1714,7 @@ nl: log_mail_processing_failures: "Alle fouten van e-mailverwerking opslaan in /logs" email_in: 'Gebruikers mogen nieuwe topics maken via e-mail (vereist handmatige of POP3-polling). Configureer de adressen in het tabblad ''Instellingen'' van elke categorie.' email_in_min_trust: "Het minimale vertrouwensniveau dat een gebruiker moet hebben om nieuwe topics te kunnen plaatsen via e-mail." + email_in_authserv_id: "De ID van de service die authenticatiecontroles op inkomende e-mails uitvoert. Zie https://meta.discourse.org/t/134358 voor instructies over het configureren hiervan." email_in_spam_header: "De e-mailheader voor het detecteren van spam." email_prefix: "Het [label] dat in het onderwerp van e-mails wordt gebruikt. Als niets is ingevuld, wordt 'title' gebruikt." email_site_title: "De titel van de website die als de afzender van e-mails van de website wordt gebruikt. Standaard wordt 'titel' gebruikt als niets is ingesteld. Gebruik deze instelling als uw 'titel' tekens bevat die niet in tekenreeksen van e-mailafzenders zijn toegestaan." @@ -1754,8 +1773,6 @@ nl: permalink_normalizations: "De volgende reguliere expressie toepassen voordat permalinks worden verwerkt. Voorbeeld: /(topic.*)\\?.*/\\1 verwijdert querystrings uit topicroutes. Notatie is regex+strings, gebruik \\1 etc. voor deeluitdrukkingen." global_notice: "Een algemene niet te verbergen DRINGEND, NOODGEVAL-bannermelding voor alle gebruikers weergeven. Laat leeg om deze te verbergen (HTML toegestaan)." disable_system_edit_notifications: "Schakelt bewerkingsmeldingen van de systeemgebruiker uit als 'download_remote_images_to_local' actief is." - likes_notification_consolidation_threshold: "Aantal ontvangen like-meldingen voordat de meldingen in een enkele worden samengevoegd. Stel dit in op 0 om uit te schakelen. Het venster kan worden geconfigureerd via `SiteSetting.likes_notification_consolidation_window_mins`." - likes_notification_consolidation_window_mins: "Tijdsduur in minuten waarin like-meldingen in een enkele melding worden samengevoegd zodra de drempel is bereikt. De drempel kan worden geconfigureerd via `SiteSetting.likes_notification_consolidation_threshold`." automatically_unpin_topics: "Topics automatisch losmaken wanneer de gebruiker de onderkant bereikt." read_time_word_count: "Aantal woorden per minuut voor het berekenen van geschatte leestijd." topic_page_title_includes_category: "Topicpagina titeltag bevat de categorienaam." @@ -1789,6 +1806,7 @@ nl: delete_drafts_older_than_n_days: "Concepten ouder dan (n) dagen verwijderen." bootstrap_mode_min_users: "Minimale aantal vereiste gebruikers om bootstrapmodus uit te schakelen (stel dit in op 0 om uit te schakelen)" prevent_anons_from_downloading_files: "Voorkomen dat anonieme gebruikers bijlagen downloaden. WAARSCHUWING: hierdoor zullen websiteonderdelen anders dan afbeeldingen die als bijlage zijn geplaatst niet werken." + secure_media: 'Beperkt toegang tot media-uploads (afbeeldingen, video, audio). Als ''aanmelding vereist'' is ingeschakeld, hebben alleen aangemelde gebruikers toegang tot media-uploads. Anders is toegang beperkt tot media-uploads in privéberichten. Opmerking: S3-uploads moeten zijn ingeschakeld voordat u deze instelling inschakelt.' slug_generation_method: "Kies een slug-generatiemodus. 'encoded' genereert een percentage-coderingsstring. 'none' schakelt de slug helemaal uit." enable_emoji: "Emoji inschakelen" enable_emoji_shortcuts: "Gebruikelijke smileyteksten zoals :) :p :( worden naar emoji geconverteerd" @@ -2017,7 +2035,7 @@ nl: auto_deleted_by_timer: "Automatisch verwijderd door timer." login: security_key_description: "Houd uw fysieke beveiligingssleutel gereed en klik op de onderstaande knop Authenticeren met beveiligingssleutel." - security_key_alternative: "Uw beveiligingssleutel niet gevonden of een andere methode gebruiken?" + security_key_alternative: "Andere manier proberen" security_key_authenticate: "Authenticeren met beveiligingssleutel" security_key_not_allowed_error: "Het authenticatieproces van de beveiligingssleutel had een time-out of is geannuleerd." security_key_no_matching_credential_error: "Geen referenties gevonden in de opgegeven beveiligingssleutel." @@ -2102,40 +2120,40 @@ nl: other: "%{count} items moeten beoordeeld worden" unsubscribe_mailer: title: "Mailer Uitschrijven" - subject_template: "Bevestig dat je niet langer email-updates wilt krijgen van %{site_title}" + subject_template: "Bevestig dat u geen e-mailupdates van %{site_title} meer wilt ontvangen" text_body_template: | - Iemand (mogelijk jij?) vroeg aan om niet langer email-updates te krijgen van %{site_domain_name} naar dit adres. - Als je dit wilt bevestigen, klik dan op de link: + Iemand (mogelijk u?) heeft gevraagd geen e-mailupdates van %{site_domain_name} meer naar dit adres te sturen. + Als u dit wilt bevestigen, klikt u op deze koppeling: %{confirm_unsubscribe_link} - Als je nogsteeds email-updates wilt krijgen, dan mag je deze mail negeren. + Als u e-mailupdates wilt blijven ontvangen, kunt u dit e-mailbericht negeren. invite_mailer: title: "Mailer Uitnodigen" - subject_template: "%{inviter_name} heeft jouw uitgenodigd in '%{topic_title}' op %{site_domain_name}" + subject_template: "%{inviter_name} heeft u uitgenodigd in '%{topic_title}' op %{site_domain_name}" text_body_template: | - %{inviter_name} heeft jouw uitgenodigd bij een discussie + %{inviter_name} heeft u uitgenodigd voor een discussie > **%{topic_title}** > > %{topic_excerpt} - bij + op > %{site_title} -- %{site_description} - Als je geïnteresseerd bent, klik dan op onderstaande link: + Als u geïnteresseerd bent, klik dan op de onderstaande koppeling: %{invite_link} custom_invite_mailer: - subject_template: "%{inviter_name} heeft jouw uitgenodigd in '%{topic_title}' op %{site_domain_name}" + subject_template: "%{inviter_name} heeft u uitgenodigd in '%{topic_title}' op %{site_domain_name}" invite_password_instructions: subject_template: "Stel het wachtwoord in voor uw %{site_name}-account" download_backup_mailer: no_token: | - Sorry, deze backup-downloadlink is al gebruikt of is verlopen. + Sorry, deze back-up-downloadkoppeling is al gebruikt of is verlopen. admin_confirmation_mailer: - subject_template: "[%{email_prefix}] Bevestig nieuw Admin-Account" + subject_template: "[%{email_prefix}] Bevestig nieuwe beheerdersaccount" flag_reasons: off_topic: "Uw bericht is gemarkeerd als **off-topic**: de gemeenschap vindt dat het niet goed bij het onderwerp past, zoals momenteel bepaald door de titel en het eerste bericht." inappropriate: "Uw bericht is gemarkeerd als **ongepast**: de gemeenschap vindt het bericht beledigend, grof, of een schending van [onze gemeenschapsrichtlijnen](%{base_path}/guidelines)." @@ -2150,13 +2168,13 @@ nl: system_messages: private_topic_title: "Topic #%{id}" post_hidden: - title: "Bericht Verborgen" + title: "Bericht verborgen" subject_template: "Bericht verborgen door gemeenschapsmarkeringen" flags_agreed_and_post_deleted: - title: "Gemarkeerd bericht verwijderd door personeel" - subject_template: "Gemarkeerd bericht verwijderd door personeel" + title: "Gemarkeerd bericht verwijderd door staflid" + subject_template: "Gemarkeerd bericht verwijderd door staflid" welcome_user: - title: "Welkom Gebruiker" + title: "Welkom gebruiker" subject_template: "Welkom bij %{site_name}!" text_body_template: | Fijn dat u lid bent geworden van %{site_name}, en welkom! @@ -2167,10 +2185,10 @@ nl: Geniet van uw verblijf! welcome_tl1_user: - title: "Welkom TL1 Gebruiker" - subject_template: "Bedankt dat je tijd met ons doorbrengt" + title: "Welkom TL1-gebruiker" + subject_template: "Bedankt voor de tijd die u met ons doorbrengt" welcome_invite: - title: "Welkom Uitnodiging" + title: "Welkomstuitnodiging" subject_template: "Welkom bij %{site_name}!" backup_succeeded: title: "Back-up geslaagd" @@ -2179,9 +2197,9 @@ nl: title: "Back-up mislukt" subject_template: "Back-up mislukt" text_body_template: | - De back-up heeft gefaald. + De back-up is mislukt. - Hier is de log: + Hier zijn de details: ``` text %{logs} @@ -2612,8 +2630,12 @@ nl: icons: title: "Pictogrammen" fields: + favicon: + label: "Browserpictogram" + description: "Pictogramafbeelding die uw website vertegenwoordigt in webbrowsers en er goed uitziet bij kleine afmetingen. Aanbevolen afbeeldingsextensies zijn PNG of JPG. Standaard wordt het vierkante logo gebruikt." large_icon: label: "Groot pictogram" + description: "Pictogramafbeelding die uw website vertegenwoordigt op moderne apparaten en er goed uitziet bij grotere afmetingen. Moet idealiter groter zijn dan 512 x 512. Standaard wordt het vierkante logo gebruikt." homepage: description: "Het tonen van de nieuwste topics op uw startpagina wordt aanbevolen, maar als u dat liever hebt, kunt u ook categorieën (groepen of topics) op de startpagina tonen." title: "Startpagina" diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml index 39c273adf2..b3980a8f05 100644 --- a/config/locales/server.pl_PL.yml +++ b/config/locales/server.pl_PL.yml @@ -241,7 +241,14 @@ pl_PL: few: "%{count}odpowiedzi" many: "%{count}odpowiedzi" other: "%{count}odpowiedzi" + likes: + one: "%{count} lajk" + few: "%{count} lajki" + many: "%{count} lajków" + other: "%{count} lajków" + last_reply: "Ostatnia odpowiedź" created: "Utworzono" + new_topic: "Utwórz nowy wątek" no_mentions_allowed: "Przepraszamy, nie możesz odwoływać się do innych użytkowników." too_many_mentions: one: "Przepraszamy, możesz wspomnieć tylko o jednym użytkowniku we wpisie." @@ -529,6 +536,11 @@ pl_PL: cannot_delete: uncategorized: "Ta kategoria ma specjalny charakter. Jest przeznaczona jako miejsce do przechowywania tematów nieprzypisanych do żadnej kategorii i jako taka nie może zostać usunięta." has_subcategories: "Nie można usunąć tej kategorii ponieważ posiada podkategorie. " + topic_exists: + one: "Nie można usunąć tej kategorii, bo zawiera %{count} wątek. Najstarszy wątek to %{topic_link}." + few: "Nie można usunąć tej kategorii, bo zawiera %{count} wątki. Najstarszy wątek to %{topic_link}." + many: "Nie można usunąć tej kategorii, bo zawiera %{count} wątków. Najstarszy wątek to %{topic_link}." + other: "Nie można usunąć tej kategorii, bo zawiera %{count} wątków. Najstarszy wątek to %{topic_link}." topic_exists_no_oldest: "Nie można usunąć tej kategorii z uwagi na liczbę tematów: %{count}." uncategorized_description: "Tematy które nie potrzebują kategorii, albo nie nadają się do żadnej innej." trust_levels: @@ -738,14 +750,23 @@ pl_PL: windows: "Microsoft Windows" unknown: "nieznany system operacyjny" change_email: + wrong_account_error: "Jesteś zalogowany ze złego konta, wyloguj się proszę i spróbuj ponownie." confirmed: "Twój email został zmieniony." please_continue: "Przejdź do %{site_name}" error: "Podczas próby zmiany Twojego adresu email wystąpił błąd. Być może ten adres jest już używany?" error_staged: "Podczas próby zmiany Twojego adresu email wystąpił błąd. Być może ten adres jest już używany?" already_done: "Przepraszamy, ten link aktywujący konto jest już nieważny. Być może Twój mail został zmieniony?" + confirm: "Potwierdź" + authorizing_new: + title: "Potwierdź swój nowy adres e-mail" + description: "Potwierdź zmianę adresu e-mail na:" authorizing_old: - title: "Dziękujemy za potwierdzenie twojego aktualnego adresu e-mail" - description: "Wysyłamy teraz twój nowy adres do potwierdzenia." + title: "Zmień swój adres e-mail" + description: "Potwierdź zmianę adresu e-mail" + old_email: "Stary adres e-mail: %{email}" + new_email: "Nowy adres e-mail: %{email}" + almost_done_title: "Potwierdzanie nowego adresu e-mail" + almost_done_description: "Wysłaliśmy e-maila na nowy adres, by potwierdzić tę zmianę!" associated_accounts: connected: "(połączony)" activation: @@ -1314,14 +1335,17 @@ pl_PL: enable_instagram_logins: "Włącz uwierzytelnienie za pomocą Instagramu, wymaga instagram_consumer_key i instagram_consumer_secret." instagram_consumer_key: "Klucz konsumenta dla uwierzytelnienia Instragram" instagram_consumer_secret: "Sekret konsumenta dla uwierzytelnienia Instragram" + discord_secret: "Sekretny klucz Discorda" readonly_mode_during_backup: "Włącz tryb tylko do odczytu podczas wykonywania kopii zapasowej" allow_restore: "Dopuść przywracanie, które może zamienić WSZYSTKIE dane strony! Zostaw fałsz, chyba że planujesz przywrócić kopię zapasową" maximum_backups: "Maksymalna liczba kopii zapasowych do przechowywania na dysku. Starsze kopie zapasowe zostaną automatycznie usunięte." automatic_backups_enabled: "Uruchom automatyczne kopie zapasowe zgodnie z ustawioną częstotliwością kopii" + backup_frequency: "Liczba dni pomiędzy tworzeniem kopii zapasowych." s3_backup_bucket: "Zdalne wiadro do przechowywania kopii zapasowych. UWAGA: Upewnij się, że jest to wiadro prywatne." s3_disable_cleanup: "Dezaktywuj usuwanie kopii zapasowych z S3 kiedy usunięte lokalnie." backup_time_of_day: "Godzina (UTC) wykonania kopii zapasowej." backup_with_uploads: "Uwzględniaj przesyły w zaplanowanych backupach. Wyłączenie tej opcji spowoduje backup jedynie bazy danych." + backup_gzip_compression_level_for_uploads: "Poziom kompresji gzip używany przy kompresowaniu wgranych plików." active_user_rate_limit_secs: "How frequently we update the 'last_seen_at' field, in seconds" verbose_localization: "Wyświetlaj dodatkowe identyfikatory tłumaczeń w treści etykiet" previous_visit_timeout_hours: "How long a visit lasts before we consider it the 'previous' visit, in hours" @@ -1329,6 +1353,7 @@ pl_PL: top_topics_formula_first_post_likes_multiplier: "wartość mnożnika polubień pierwszego posta (n) w tematach formuła: `log(views_count) * 2 + op_likes_count * (n) + LEAST(likes_count / posts_count, 3) + 10 + log(posts_count)`" top_topics_formula_least_likes_per_post_multiplier: "wartość mnożnika najmniejszej liczby polubień na post w (n) tematach formuła: `log(views_count) * 2 + op_likes_count * 0.5 + LEAST(likes_count / posts_count, (n)) + 10 + log(posts_count)`" rebake_old_posts_count: "Liczba starych postów, które są ponownie wypalane co 15 minut." + enable_safe_mode: "Zezwól użytkownikom na wchodzenie do trybu awaryjnego w celu debudowania wtyczek." rate_limit_create_topic: "Po otworzeniu tematu użytkownicy muszą odczekać (n) sekund, zanim otworzą inny temat." rate_limit_create_post: "Po napisaniu posta użytkownicy muszą odczekać (n) sekund, zanim napiszą inny post." rate_limit_new_user_create_topic: "Po otworzeniu tematu nowi użytkownicy muszą odczekać (n) sekund, zanim otworzą inny temat." @@ -1343,21 +1368,27 @@ pl_PL: max_topic_invitations_per_day: "Maksymalna dzienna liczba zaproszeń do tematu, jakie może wysłać użytkownik." max_logins_per_ip_per_hour: "Maksymalna liczba logowań dozwolona per adres IP na godzinę" max_logins_per_ip_per_minute: "Maksymalna liczba logowań dozwolona per adres IP na minutę" + max_post_deletions_per_minute: "Maksymalna liczba wpisów, które użytkownik może usunąć w minutę." + max_post_deletions_per_day: "Maksymalna liczba wpisów, które użytkownik może usunąć jednego dnia." alert_admins_if_errors_per_minute: "Liczba błędów na minutę do zaalarmowania admina. Wartość 0 wyłącza tę funkcjonalność. UWAGA: wymaga restartu." alert_admins_if_errors_per_hour: "Liczba błędów na godzinę do zaalarmowania admina. Wartość 0 wyłącza tę funkcjonalność. UWAGA: wymaga restartu." categories_topics: "Liczba wątków do wyświetlenia na stronie /categories." suggested_topics: "Liczba sugerowanych tematów widocznych na końcu aktualnego tematu." limit_suggested_to_category: "Sugeruj tematy jedynie z tej samej kategorii." suggested_topics_max_days_old: "Sugerowane tematy nie powinny być starsze niż n dni." + suggested_topics_unread_max_days_old: "Sugerowane nieprzeczytane tematy nie powinny być starsze niż n dni." clean_up_uploads: "Usuń osierocone pliki aby zapobiec wykorzystywaniu forum jako hosting. UWAGA: przed włączeniem tej opcji zaleca się wykonanie kopii katalogu /uploads." clean_orphan_uploads_grace_period_hours: "Okres karencji (w dniach) przed wysłaniem sierot zostanie skasowany." purge_deleted_uploads_grace_period_days: "Okres karencji (w dniach) przed usunięciem upload zostanie skasowany." + purge_unactivated_users_grace_period_days: "Okres karencji w dniach, po upływie którego nieaktywowane konto użytkownika zostaje usunięte. Ustaw 0, by nigdy nie usuwań nieaktywnych użytkowników." enable_s3_uploads: "Umieść przesyły w pamięci Amazon S3. Ważne: wymaga ważnych danych uwierzytelniających (zarówno klucza id i tajnego klucza dostępu)" s3_upload_bucket: "Nazwa koszyka Amazon S3, do którego zostaną przesłane pliki. Ostrzeżenie: bez wielkich liter, kropek czy podkreślenia." s3_cdn_url: "URL CDN używany dla wszystkich aktywów s3 (na przykład : https://cdn.somewhere.com). Ostrzeżenie: po zmianie tego ustawienia musisz ponownie przywrócić stare posty." avatar_sizes: "Lista automatycznie wygenerowanych rozmiarów awatarów." external_system_avatars_enabled: "Użyj zewnętrzny system awatarów." external_system_avatars_url: "Adres URL zewnętrznego dostawcy awatarów. Dozwolone podstawienia: {username} {first_letter} {color} {size}" + selectable_avatars_enabled: "Wymuś na użytkownikach wybieranie awatara z listy." + selectable_avatars: "Lista awatarów, z których mogą wybierać użytkownicy." allow_all_attachments_for_group_messages: "Zezwól na wszystkie załączniki email dla wiadomości grupowych." png_to_jpg_quality: "Jakość skonwertowanego pliku JPG (1 to najniższa jakość, 99 to najlepsza jakość, 100 aby dezaktywować)." allow_staff_to_upload_any_file_in_pm: "Pozwól personelowi przesyłać pliki w wiadomościach." @@ -1390,9 +1421,13 @@ pl_PL: tl3_requires_likes_received: "Minimalna liczba polubień, które użytkownik musi otrzymać w ostatnich (tl3 okres) dniach, aby zakwalifikować się do awansu na poziom zaufania 3." tl3_links_no_follow: "Nie usuwaj rel=nofollow z linków od użytkowników z trzecim poziomem zaufania." min_trust_to_create_topic: "The minimum trust level required to create a new topic." + allow_flagging_staff: "Jeżeli włączone, użytkownicy mogą flagować wpisy członków zespołu." min_trust_to_edit_wiki_post: "Minimalny poziom zaufania wymagany do edycji posta oznaczonego jako wiki." min_trust_to_edit_post: "Minimalny poziom zaufania potrzebny do edytowania postów." min_trust_to_allow_self_wiki: "Wymagany poziom zaufania, by post użytkownika uczynić wiki." + min_trust_to_send_messages: "Minimalny poziom zaufania wymagany do tworzenia wiadomości prywatnych." + min_trust_to_flag_posts: "Minimalny poziom zaufania potrzebny do flagowania postów" + min_trust_to_post_links: "Minimalny poziom zaufania potrzebny do umieszczania linków we wpisach" newuser_max_links: "Ile linków może dodać nowy użytkownik do posta." newuser_max_images: "Ile obrazów może dodać nowy użytkownik do posta." newuser_max_attachments: "Ile załączników może dodać nowy użytkownik do posta." @@ -1400,8 +1435,10 @@ pl_PL: newuser_max_replies_per_topic: "Maksymalna liczba odpowiedzi, jakie nowy użytkownik może dodać w pojedynczym temacie zanim ktoś odpowie." max_mentions_per_post: "Maksymalna liczba powiadomień poprzez @nazwę w jednym wpisie (dla wszystkich)." max_users_notified_per_group_mention: "Maksymalna liczba użytkowników, którzy mogą otrzymać powiadomienie jeśli ktoś wspomniał o grupie (jeśli próg został osiągnięty, nie będzie żadnych powiadomień)" + enable_mentions: "Zezwól użytkownikom na wzmianki innych użytkowników." create_thumbnails: "Stwórz miniatury i obrazy lightbox, które są za duże, aby pasować do postu." email_time_window_mins: "Odczekaj (n) minut przed wysłaniem maila z powiadomieniem, aby dać użytkownikom szansę na edytowanie i ukończenie postów." + personal_email_time_window_seconds: "Poczekaj (n) sekund przed wysłaniem powiadomienia na e-mail o prywatnej wiadomości, by użytkownicy mogli edytować i dokończyć swoje wiadomości." email_posts_context: "Jak wiele poprzednich wiadomości zawrzeć jako kontekst i emailu powiadamiającym." flush_timings_secs: "W sekundach, jak często wysyłamy dane czasowe na serwer." title_max_word_length: "Maksymalna dozwolona długość słowa, w znakach, jako tytuł tematu." @@ -1482,6 +1519,7 @@ pl_PL: pop3_polling_username: "Nazwa użytkownika dla konta POP3 do przeglądania cyklicznego emaila." pop3_polling_password: "Hasło dla konta POP3 do przeglądania cyklicznego maila." email_in_min_trust: "Minimalny poziom zaufania, który musi posiadać użytkownik, aby móc dodawać nowe posty w tematach poprzez email." + email_in_spam_header: "Nagłówek e-maila do wykrywania spamu." email_prefix: "Etykieta używana w temacie emaili. Domyślnie będzie ustawiana jako \"tytuł\", w przypadku braku ustawienia." email_site_title: "Tytuł strony używany jako nadawca emaili ze strony. Domyślnie ustawiony jako \"tytuł\", w przypadku braku ustawienia. Jeśli twój \"tytuł\" zawiera znaki, które nie są dozwolone przez ciągi znaków nadawcy emaila, użyj tego ustawienia." find_related_post_with_key: "Używaj \"klucza odpowiedzi\" tylko po to, aby znaleźć post, na który odpowiadasz. Ostrzeżenie: Wyłączenie tej funkcji, pozwoli na personifikację użytkownika na podstawie adresu email." @@ -1692,7 +1730,7 @@ pl_PL: autoclosed_disabled_lastpost: "Temat został otwarty. Pisanie odpowiedzi jest możliwe." auto_deleted_by_timer: "Automatycznie usunięte przez regulator czasowy." login: - security_key_alternative: "Nie możesz znaleźć swojego klucza bezpieczeństwa lub chcesz użyć innej metody?" + security_key_alternative: "Spróbuj w inny sposób" security_key_authenticate: "Uwierzytelnij się za pomocą klucza bezpieczeństwa" security_key_not_allowed_error: "Upłynął limit czasu procesu uwierzytelniania klucza bezpieczeństwa lub został on anulowany." not_approved: "Twoje konto nie zostało jeszcze aktywowane. Zostaniesz powiadomiony emailem gdy będziesz mógł się zalogować." @@ -1752,6 +1790,17 @@ pl_PL: max_new_accounts_per_registration_ip: "Z twojego adresu IP nowe rejestracje nie są możliwe (wyczerpany limit). Skonaktuj się z personelem." website: domain_not_allowed: "Błędny adres strony internetowej. Dozwolone domeny: %{domains}" + destroy_reasons: + unused_staged_user: "Nieużywany użytkownik wystawiony" + fixed_primary_email: "Ustalony główny adres e-mail wystawionego użytkownika" + same_ip_address: "Taki sam adres IP (%{ip_address}) jak inni użytkownicy" + inactive_user: "Nieaktywny użytkownik" + reviewables_reminder: + subject_template: + one: "%{count} wpis czeka na przejrzenie" + few: "%{count} wpisy czekają na przejrzenie" + many: "%{count} wpisów czeka na przejrzenie" + other: "%{count} wpisów czeka na przejrzenie" unsubscribe_mailer: title: "Przestań obserwować mailera" subject_template: "Potwierdź, że nie chcesz już otrzymywać powiadomień mailowych ze strony %{site_title}" @@ -2310,19 +2359,9 @@ pl_PL: confirm_new_email: title: "Potwierdź Nowy Email" subject_template: "[%{email_prefix}] Potwierdź swój nowy adres email" - text_body_template: | - Potwierdź swój nowy adres email dla %{site_name} poprzez kliknięcia na następujący link: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Potwierdź stary email" subject_template: "[%{site_name}] Potwierdź aktualny adres email" - text_body_template: | - Przed zmianą twojego adresu email, potrzebujemy, abyś potwierdził, że masz dostęp do tego adresu. Po zakończeniu tego kroku, poinformujemy cię o nowym adresie email. - - Potwierdź obecny adres email dla %{site_name}poprzez naciśnięcie na następujący link: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Powiadom Stary Email" subject_template: "[%{site_name}] Twój adres email został zmieniony" @@ -2934,6 +2973,9 @@ pl_PL: popup: confirm_title: "Powiadomienia włączone - %{site_title}" confirm_body: "Powodzenie! Powiadomienia zostały włączone." + staff_action_logs: + api_key: + revoked: Unieważniono reviewables: priorities: low: "Niski" diff --git a/config/locales/server.pt.yml b/config/locales/server.pt.yml index 2bd5e7075f..f8a9da6c72 100644 --- a/config/locales/server.pt.yml +++ b/config/locales/server.pt.yml @@ -496,9 +496,6 @@ pt: error: "Ocorreu um erro ao alterar o seu endereço de email. Talvez o endereço já esteja a ser utilizado?" error_staged: "Ocorreu um erro ao alterar o seu endereço de email. O endereço de email já está a ser utilizado por um utilizador temporário." already_done: "Pedimos desculpa, mas esta hiperligação de confirmação já não é valida. Talvez o seu email já tenha sido alterado?" - authorizing_old: - title: "Obrigado por confirmar o seu endereço de email actual." - description: "Estamos a enviar um email para o seu novo endereço para confirmação." activation: action: "Clique aqui para ativar a sua conta" already_done: "Pedimos desculpa, esta hiperligação de confirmação já não está válida. Talvez a sua conta já esteja ativa?" @@ -884,10 +881,10 @@ pt: summary_percent_filter: "Quando um utilizador clica em 'Resumir Este Tópico', mostrar as melhores % de mensagens" enable_personal_messages: "Permitir que utilizadores de nível de confiança 1 (configurável através do nível de confiança mínimo para enviar mensagens) criem mensagens e respostas a mensagens. Note que a equipa de apoio pode mandar mensagens de qualquer maneira." enable_long_polling: "O sistema de mensagens usado para notificações pode fazer solicitações longas" - long_polling_base_url: "URL base usada para solicitação ao servidor (quando um CDN serve conteúdo dinâmico, certifique-se de configurá-lo para a 'pull' original) ex: http://origem.sítio.com" + long_polling_base_url: "URL base utilizado para sondar o servidor (quando um CDN serve conteúdo dinâmico, certifique-se de definir isto para a \"pull\" original) por exemplo: http://origem.site.com" long_polling_interval: "Quantidade de tempo que um servidor deve esperar antes de notificar os clientes quando não há dados para serem enviados (apenas utilizadores ligados)" polling_interval: "Quando não está a ocorrer uma solicitação ao servidor, com que frequência devem os clientes ligados requerer uma atualização, em milissegundos" - anon_polling_interval: "Com que frequência os clientes não registados podem fazer solicitações ao servidor, em milisegundos" + anon_polling_interval: "Com que frequência os clientes anónimos podem sondar o servidor em milisegundos" background_polling_interval: "Com que frequência deverão os clientes solicitar o servidor, em milissegundos (quando a janela está em plano de fundo)" cooldown_minutes_after_hiding_posts: "Número de minutos que o utilizador deve esperar antes de poder editar uma mensagem oculta devido a sinalizações por parte da comunidade" max_topics_in_first_day: "O número máximo de tópicos que o utilizador pode criar no período de 24 horas após criar a sua primeira publicação" @@ -1101,10 +1098,10 @@ pt: pop3_polling_ssl: "Utilize SSL ao ligar a um servidor POP3. (Recomendado)" pop3_polling_openssl_verify: "Verificar o certificado de TLS do server. (Por defeito: activado)" pop3_polling_period_mins: "Período em minutos entre a verificação da conta POP3 para o email. NOTA: requer reinicialização." - pop3_polling_port: "Porto para resgatar uma conta POP3." + pop3_polling_port: "A porta para obter uma conta POP3." pop3_polling_host: "Servidor para solicitações de email via POP3." - pop3_polling_username: "Nome de utilizador para a conta POP3 para resgatar emails." - pop3_polling_password: "Palavra-passe para a conta POP3 solicitar emails ao servidor." + pop3_polling_username: "O nome de utilizador para a conta POP3 para obter e-mail." + pop3_polling_password: "A palavra-passe para a conta POP3 obter e-mail." email_in_min_trust: "Nível de Confiança mínimo que um utilizador necessita de ter para poder publicar novos tópicos por email." email_prefix: "A [etiqueta] usada no assunto dos emails. Se não estiver configurada, será 'Título' por defeito." email_site_title: "Título do sítio usado como remetente de emails. Se não for configurado, será 'título' por defeito. Se o seu 'título' contém caracteres que não são permitidos na string do remetente de email, utilize esta configuração." @@ -1219,8 +1216,8 @@ pt: invalid_string_max: "Não deve ser mais que %{max} caracteres." invalid_reply_by_email_address: "O valor deve conter '%{reply_key}' e ser diferente do email de notificação." invalid_alternative_reply_by_email_addresses: "Todos os valores devem conter '%{reply_key}' e ser diferentes do email de notificação." - pop3_polling_host_is_empty: "Deve configurar um 'pop3 polling host' antes de ativar o polling POP3." - pop3_polling_username_is_empty: "Deve configurar um 'nome de utilizador de polling pop3' antes de ativar o polling POP3." + pop3_polling_host_is_empty: "Deve definir um 'anfitrião de obtenção pop3' antes de ativar a obtenção POP3." + pop3_polling_username_is_empty: "Deve definir um 'nome de utilizador de sondagem pop3' antes de ativar a sondagem POP3." pop3_polling_password_is_empty: "Deve configurar uma 'palavra-passe de polling pop3' antes de ativar o polling POP3." pop3_polling_authentication_failed: "Autenticação POP3 falhada. Por favor verifique as suas credenciais pop3." reply_by_email_address_is_empty: "É necessário definir um email para 'resposta por endereço de email' antes de ligar a resposta por email." diff --git a/config/locales/server.pt_BR.yml b/config/locales/server.pt_BR.yml index d2bfcc8549..218119be28 100644 --- a/config/locales/server.pt_BR.yml +++ b/config/locales/server.pt_BR.yml @@ -699,9 +699,6 @@ pt_BR: error: "Houve um erro ao alterar o seu endereço de email. Talvez o endereço já esteja sendo utilizado?" error_staged: "Houve um erro ao alterar o seu endereço de email. O endereço já está usado por outro usuário que ainda não confirmou seu email." already_done: "Desculpe, este link de confirmação não está mais válido. Talvez o seu e-mail já foi alterado?" - authorizing_old: - title: "Obrigado por confirmar o seu endereço de e-mail atual." - description: "Estamos enviando um e-mail ao seu novo endereço para confirmação." associated_accounts: revoke_failed: "Falha ao revogar sua conta com %{provider_name}." connected: "(conectado)" @@ -1689,8 +1686,6 @@ pt_BR: permalink_normalizations: "Aplique o seguinte regex antes de combinar permalinks, por exemplo: /(topic.*)\\?.*/\\1 irá retirar as strings de consulta das rotas de tópicos. Formato é regex + string use \\ 1 etc. para acessar capturas" global_notice: "Exibir um aviso de banner global URGENTE, EMERGENCIAL e não descartável para todos os visitantes, deixe em branco para ocultá-lo (permitido por HTML)." disable_system_edit_notifications: "Desabilitar modificação de notificações pelo sistema quando 'download_remote_images_to_local' estiver ativado." - likes_notification_consolidation_threshold: "Número de notificações de curtidas recebidas antes que as notificações sejam consolidadas em uma única. Defina como 0 para desabilitar. A janela pode ser configurada via `SiteSetting.likes_notification_consolidation_window_mins`." - likes_notification_consolidation_window_mins: "Duração em minutos em que as notificações de curtidas são consolidadas em uma única notificação quando o limite é atingido. O limite pode ser configurado via `SiteSetting.likes_notification_consolidation_threshold`." automatically_unpin_topics: "Desafixar automaticamente os tópicos quando o usuário atinge o fundo." read_time_word_count: "Palavras por minuto para calcular o tempo estimado de leitura." native_app_install_banner_ios: "Exibir o banner do aplicativo DiscourseHub em dispositivos iOS para usuários regulares (nível de confiança 1 e superior)." @@ -2922,14 +2917,9 @@ pt_BR: confirm_new_email: title: "Confirmar novo e-mail" subject_template: "[%{email_prefix}] Confirme seu novo endereço de e-mail" - text_body_template: | - Confirme seu novo endereço de e-mail para %{site_name} clicando no seguinte link: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Confirmar Antigo e-mail" subject_template: "[%{email_prefix}] Confirme seu endereço de e-mail atual" - text_body_template: "Antes que possamos alterar seu endereço de e-mail, precisamos que você confirme que você controla a conta de e-mail atual. \nDepois de concluir esta etapa, você terá que confirmar\no novo endereço de e-mail.\n\nConfirme seu endereço de e-mail atual para %{site_name} clicando no seguinte link:\n\n%{base_url}/u/confirm-old-email/%{email_token}\n" notify_old_email: title: "Notificar e-mail antigo" subject_template: "[%{email_prefix}] Seu endereço de e-mail foi alterado" diff --git a/config/locales/server.ro.yml b/config/locales/server.ro.yml index 8f3ed1b9de..02260c5426 100644 --- a/config/locales/server.ro.yml +++ b/config/locales/server.ro.yml @@ -456,9 +456,6 @@ ro: error: "A apărut o eroare la schimbarea adresei de email. Poate adresa e deja folosită?" error_staged: "A apărut o eroare la schimbarea adresei tale de email. Adresa este deja folosită de un utilizator în așteptare." already_done: "Ne pare rău, dar acest link de confirmare nu mai este valid. Poate că emailul tău a fost deja schimbat?" - authorizing_old: - title: "Îți mulțumim că ne-ai confirmat noua ta adresă de email." - description: "Acum îți trimitem un email la noua ta adresă, pentru confirmare." activation: action: "Click aici pentru a-ți activa contul" already_done: "Ne pare rău, această adresă pentru confirmarea contului nu mai este valabilă. Poate contul tău este deja activ?" diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index ac71a20691..9e334c6129 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -749,9 +749,6 @@ ru: error: "При смене электронного адреса произошла ошибка. Возможно, этот адрес уже используется?" error_staged: "При смене электронного адреса произошла ошибка. Этот адрес уже используется другим пользователем." already_done: "Извините, ссылка для подтверждения устарела. Возможно, ваш email уже изменен?" - authorizing_old: - title: "Спасибо за подтверждение вашего email-адреса" - description: "Мы отправили сообщение с ссылкой для подтверждения вашего нового адреса." associated_accounts: revoke_failed: "Не удалось отозвать учетную запись %{provider_name}." connected: "(связанный)" @@ -1755,7 +1752,7 @@ ru: auto_deleted_by_timer: "Автоматически удалить по таймеру." login: security_key_description: "Когда вы подготовите свой физический ключ безопасности, нажмите кнопку Аутентификация с ключом безопасности ниже." - security_key_alternative: "Не удается найти ключ безопасности или хотите использовать другой метод?" + security_key_alternative: "Попробуйте другой способ" security_key_authenticate: "Аутентификация с Ключом Безопасности." security_key_not_allowed_error: "Время проверки подлинности ключа безопасности истекло или было отменено." security_key_no_matching_credential_error: "В указанном ключе безопасности не найдено подходящих учетных данных." @@ -2214,19 +2211,6 @@ ru: subject_template: "[%{email_prefix}] Ваш Новый Аккаунт" confirm_new_email: title: "Подтвердить Новый E-mail" - text_body_template: | - Подтвердите ваш новый адрес e-mail почты для %{site_name} нажав на следующую ссылку: - - %{base_url}/u/confirm-new-email/%{email_token} - confirm_old_email: - text_body_template: | - Прежде чем мы сможем изменить ваш адрес электронной почты, нам нужно, чтобы вы подтвердили, что вы контролируете - текущая учетная запись e-mail почты. После выполнения этого шага мы попросим вас подтвердить - новый адрес e-mail почты. - - Подтвердите свой текущий адрес e-mail почты для %{site_name} нажав на следующую ссылку: - - %{base_url}/u/confirm-old-email/%{email_token} signup_after_approval: title: "Регистрация После Утверждения" subject_template: "Ваша учетная запись на сайте %{site_name} одобрена!" diff --git a/config/locales/server.sl.yml b/config/locales/server.sl.yml index fe4a8618d2..5ac34f6343 100644 --- a/config/locales/server.sl.yml +++ b/config/locales/server.sl.yml @@ -508,9 +508,6 @@ sl: error: "Prišlo je do napake med spremembo vašega e-naslova. Mogoče je e-naslov že uporabljen?" error_staged: "Prišlo je do napake pri menjavi vašega e-naslova. E-naslov je že v uporabi s strani prirejenega uporabnika." already_done: "Oprostite, vendar povezava za potrditev ni več veljavna. Mogoče je bil vaš e-naslov že spremenjen?" - authorizing_old: - title: "Hvala za potrditev vašega trenutnega e-naslova" - description: "Na nov e-naslov smo vam poslali povezavo za potrditev." associated_accounts: revoke_failed: "Nismo uspeli razveljaviti vaš račun pri %{provider_name}." activation: @@ -1656,19 +1653,9 @@ sl: confirm_new_email: title: "Potrdite nov e-naslov" subject_template: "[%{email_prefix}] Potrdite vaš novi e-naslov" - text_body_template: | - Potrdite vaš nov e-naslov pri %{site_name} tako da sledite povezavi: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Potrdite star e-naslov" subject_template: "[%{email_prefix}] Potrdite vaš trenutni e-naslov" - text_body_template: | - Preden lahko spremenite vaš e-naslov, morate potrditi da imate nadzor nad vašim trenutnim e-naslovom. Po tem pa vam bomo omogočili potrditev novega e-naslova. - - Potrdite vaš trenutni e-naslov pri %{site_name} tako da sledite povezavi: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Obvesti stari e-naslov" subject_template: "[%{email_prefix}] Vaš e-naslov je bil spremenjen" diff --git a/config/locales/server.sq.yml b/config/locales/server.sq.yml index f93a1297a0..b7ee69b39d 100644 --- a/config/locales/server.sq.yml +++ b/config/locales/server.sq.yml @@ -328,9 +328,6 @@ sq: please_continue: "Vazhdo tek %{site_name}" error: "Hasëm një gabim gjatë ndryshimit të adresës email. Mos vallë është në përdorim nga një llogari tjetër në faqe?" already_done: "Na vjen keq, ky link nuk vlen më. Mbase adresa juaj email u ndryshua para pak kohësh?" - authorizing_old: - title: "Ju falënderojmë për konfirmimin e adresës tuaj email" - description: "Tani po ju dërgojmë një mesazh tek adresa e re e emailit për t'a konfirmuar." activation: action: "Klikoni këtu për të aktivizuar llogarinë tuaj" already_done: "Na vjen keq, ky link nuk vlen më. Mbase llogaria është që tani e aktivizuar?" @@ -1160,10 +1157,6 @@ sq: title: "Vendos Fjalëkalim" confirm_new_email: subject_template: "[%{email_prefix}] Konfirmoni adresën tuaj të re të emailit" - text_body_template: | - Konfirmoni adresën tuaj të re të emailit për "%{site_name}" duke klikuar linkun më poshtë: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: subject_template: "[%{email_prefix}] Konfirmoni adresën e tanishme të emailit " notify_old_email: diff --git a/config/locales/server.sr.yml b/config/locales/server.sr.yml index 0841a18caf..ce0eb68dff 100644 --- a/config/locales/server.sr.yml +++ b/config/locales/server.sr.yml @@ -124,9 +124,6 @@ sr: password_reset: save: "Postavi Šifru" title: "Resetujte Šifru" - change_email: - authorizing_old: - title: "Hvala što ste potvrdili svoju važeću email adresu" activation: welcome_to: "Dobrodošao na %{site_name}!" reviewable_score_types: diff --git a/config/locales/server.sv.yml b/config/locales/server.sv.yml index cb7156fc47..57185e581f 100644 --- a/config/locales/server.sv.yml +++ b/config/locales/server.sv.yml @@ -407,9 +407,6 @@ sv: error: "Det uppstod ett fel med ändringen av din e-postadress. Adressen kanske redan används?" error_staged: "Ett problem uppstod vid ändring av din e-postadress. Adressen används redan av en annan användare. " already_done: "Tyvärr har den här aktiveringslänken löpt ut. Kanske är din e-postadress redan ändrad? " - authorizing_old: - title: "Tack för att du bekräftar din nuvarande e-postadress" - description: "Vi skickar nu e-post för bekräftelse till din nya adress " activation: action: "Klicka här för att aktivera ditt konto" already_done: "Tyvärr, denna kontoaktiveringslänk är inte längre giltig. Kanske är ditt konto redan aktiverat?" diff --git a/config/locales/server.sw.yml b/config/locales/server.sw.yml index eda4995399..b7c324730e 100644 --- a/config/locales/server.sw.yml +++ b/config/locales/server.sw.yml @@ -409,9 +409,6 @@ sw: error: "Hitilafu imetokea wakati wa kubadilisha barua pepe yako. Labda barua pepe tayari inatumika?" error_staged: "Hitilafu imetokea wakati wa kubadilisha barua pepe yako. Barua pepe inatumika na mtumiaji aliyekuwa staged." already_done: "Samahani, kiungo cha uthibitisho cha akaunti ni batili. Labda barua pepe yako imeshabadilishwa??" - authorizing_old: - title: "Asante kwa kuthibitisha barua pepe yako" - description: "Tunakutumia barua pepe mpya ya kuthibitisha." activation: action: "Bonyeza hapa kuanzisha akkaunti yako" already_done: "Samahani, kiungo cha uthibitisho cha akaunti ni batili. Labda akaunti yako tayari ipo hewani?" @@ -1723,21 +1720,9 @@ sw: confirm_new_email: title: "Thibitisha Barua Pepe Mpya" subject_template: "[%{email_prefix}] Thibitisha barua pepe mpya" - text_body_template: | - Thibitisha barua pepe yako kwenye %{site_name} kwa kubofya kiungo kifuatacho: - - %{base_url}/u/authorize-baruapepe/%{email_token} confirm_old_email: title: "Thibitisha Barua pepe ya Zamani" subject_template: "[%{email_prefix}] Thibitisha barua pepe ya sasa" - text_body_template: | - Kabla hatujabadilisha barua pepe yako, tunahitaji kuthibitisha kuwa unamiliki - barua pepe yako ya sasa. Baada ya kumaliza hatua hii, tutathibitisha - barua pepe yako mpya. - - Thibitisha barua pepe yako ya sasa kwenye %{site_name} kwa kubonyeza kiungo kifuatacho: - - %{base_url}/u/authorize-barua pepe/%{email_token} notify_old_email: title: "Ijulishe Barua Pepe ya Zamani" subject_template: "[%{email_prefix}] Barua pepe yako imebadilishwa" diff --git a/config/locales/server.tr_TR.yml b/config/locales/server.tr_TR.yml index 8e1355ae12..d32a0e5c4e 100644 --- a/config/locales/server.tr_TR.yml +++ b/config/locales/server.tr_TR.yml @@ -386,9 +386,6 @@ tr_TR: error: "E-posta adresiniz değiştirilirken bir hata oluştu. Bu adres zaten kullanımda olabilir." error_staged: "E-posta adresiniz değiştirilirken bir hata oluştu. Bu adres zaten başka bir kullanıcı tarafından kullanımdadır." already_done: "Üzgünüz, bu doğrulama bağlantısı geçerli değil. E-posta adresiniz değiştirilmiş olabilir mi?" - authorizing_old: - title: "Geçerli e-posta adresi onayladığınız için teşekkür ederiz" - description: "Doğrulama için yeni adresine şimdi e-posta gönderiyoruz." activation: action: "Hesabınızı etkinleştirmek için buraya tıklayın" already_done: "Üzgünüz, hesap doğrulama bağlantısı artık geçerli değil. Hesabınız zaten etkin olabilir mi?" @@ -1073,6 +1070,12 @@ tr_TR: autoclosed_disabled: "Konu şimdi açıldı. Yeni cevaplara izin var." autoclosed_disabled_lastpost: "Konu şimdi açıldı. Yeni cevaplara izin var." login: + security_key_description: "Fiziksel güvenlik anahtarınızı hazırladığınızda, aşağıdaki Güvenlik Anahtarıyla Kimlik Doğrula düğmesine basın." + security_key_alternative: "Başka bir yol dene" + security_key_authenticate: "Güvenlik Anahtarı ile Kimlik Doğrulama" + security_key_not_allowed_error: "Güvenlik anahtarı kimlik doğrulama işlemi zaman aşımına uğradı veya iptal edildi." + security_key_no_matching_credential_error: "Sağlanan güvenlik anahtarında eşleşen kimlik bilgisi bulunamadı." + security_key_support_missing_error: "Geçerli cihazınız veya tarayıcınız güvenlik tuşlarının kullanımını desteklemiyor. Lütfen farklı bir yöntem kullanın." not_approved: "Hesabını henüz onaylanmadı. Giriş yapmak için hazır olduğunuzda e-posta ile bilgilendirileceksiniz." incorrect_username_email_or_password: "Yanlış kullanıcı adı, e-posta ya da parola" wait_approval: "Kayıt olduğunuz için teşekkürler. Hesabınız onaylandığında sizi haberdar edeceğiz." @@ -1094,6 +1097,9 @@ tr_TR: missing_user_field: "Kullanıcı alanlarının tamamını doldurmadınız" second_factor_title: "İki Faktörlü Kimlik Doğrulama" second_factor_backup_description: "Lütfen yedek kodlarından birini gir:" + second_factor_toggle: + totp: "Bunun yerine bir doğrulama uygulaması kullanın" + backup_code: "Bunun yerine bir yedekleme kodu kullanın" admin: email: sent_test: "gönderildi!" @@ -1695,6 +1701,9 @@ tr_TR: popup: confirm_title: "Bildirimler etkin - %{site_title}" confirm_body: "Başarılı! Bildirimler etkinleştirildi." + staff_action_logs: + api_key: + revoked: İptal edilmiş reviewables: priorities: low: "Düşük" diff --git a/config/locales/server.uk.yml b/config/locales/server.uk.yml index 12c4680b48..6e6a596d4c 100644 --- a/config/locales/server.uk.yml +++ b/config/locales/server.uk.yml @@ -767,9 +767,6 @@ uk: error: "Під час зміни адреси Вашої електронної скриньки трапилася помилка. Можливо, ця адреса вже використовується?" error_staged: "Під час зміни вашої електронної адреси сталася помилка. Адреса вже використовується іншим користувачем." already_done: "На жаль, це підтвердження більше не дійсне. Можливо, вашу електронну пошту вже змінено?" - authorizing_old: - title: "Дякую за підтвердження вашої email-адреси" - description: "Ми відправили повідомлення з посиланням для підтвердження вашої нової адреси." associated_accounts: revoke_failed: "Не вдалося від’єднати від облікового запису %{provider_name}." connected: "(пов’язаний)" @@ -1278,8 +1275,6 @@ uk: subfolder_ends_in_slash: "Неправильно налаштована ваша папка; DISCOURSE_RELATIVE_URL_ROOT закінчується косою рискою." missing_mailgun_api_key: "Сервер налаштований для надсилання електронної пошти через Mailgun, але ви не надали ключ API, який використовується для перевірки повідомлень webhook." bad_favicon_url: "Фавікон не завантажується. Перевірте налаштування Фавікон в налаштуваннях сайту." - deprecated_api_usage: "Ми виявили запит API, використовуючий застарілий метод аутентифікації. Оновіть його, щоб використовувати аутентифікацію на основі заголовка ." - update_mail_receiver: "Ми виявили застарілу версію поштового одержувача. Будь ласка, увійдіть через ssh на цьому сервері та запустіть `/var/discourse/launcher rebuild mail-receiver`." poll_pop3_timeout: "Час підключення до сервера POP3 закінчився. Не вдалося отримати електронну пошту. Перевірте свої налаштування POP3 та постачальника послуг." poll_pop3_auth_error: "Підключення до сервера POP3 не вдається з помилкою аутентифікації. Перевірте свої налаштування POP3 ." force_https_warning: "Ваш веб-сайт використовує SSL. Але `force_https` ще не ввімкнено в налаштуваннях вашого сайту." @@ -1954,7 +1949,6 @@ uk: auto_deleted_by_timer: "Автоматично видаляється за таймером." login: security_key_description: "Підготувавши свій фізичний ключ безпеки, натисніть кнопку 'Аутентифікація за допомогою ключа безпеки' нижче." - security_key_alternative: "Не можете знайти ключ безпеки, або хочете скористатися іншим методом?" security_key_authenticate: "Аутентифікувати за допомогою ключа безпеки" security_key_not_allowed_error: "Процес аутентифікації з ключем безпеки або вичерпано, або скасовано." security_key_no_matching_credential_error: "У наданому ключі безпеки не знайдено відповідних облікових даних." @@ -2431,10 +2425,6 @@ uk: confirm_new_email: title: "Підтвердіть нову електронну пошту" subject_template: "[%{email_prefix}] Підтвердіть свою нову електронну пошту" - text_body_template: | - Підтвердіть свою нову електронну адресу для %{site_name} натиснувши наступне посилання: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "Підтвердіть стару електронну пошту" subject_template: "[%{email_prefix}] Підтвердіть свою поточну адресу електроної пошти" diff --git a/config/locales/server.ur.yml b/config/locales/server.ur.yml index 9036cb9ed6..070cddb1c5 100644 --- a/config/locales/server.ur.yml +++ b/config/locales/server.ur.yml @@ -711,9 +711,6 @@ ur: error: "آپ کا اِی میل ایڈریس تبدیل کرنے میں ایک خرابی کا سامنا کرنا پڑا۔ شاید یہ ایڈریس پہلے سے استعمال میں ہے؟" error_staged: "آپ کا اِی میل تبدیل کرنے میں ایک خرابی کا سامنا کرنا پڑا۔ یہ ایڈریس پہلے سے ہی ایک سٹَیجڈ صارف کے استعمال میں ہے۔" already_done: "معذرت، یہ تصدیقی لِنک اب درست نہیں ہے۔ شاید آپ کا اِی میل پہلے ہی بدل چکا تھا؟" - authorizing_old: - title: "اپنے موجودہ اِی میل ایڈریس کی تصدیق کرنے کیلئے شکریہ" - description: "اب ہم تصدیق کیلئے آپ کے نئے ایڈریس پر اِی میل کر رہے ہیں۔" associated_accounts: revoke_failed: "%{provider_name} کے ساتھ آپ کے اکاؤنٹ کو منسوخ کرنے میں ناکامی۔" connected: "(کنَیکٹ شدہ)" @@ -1714,8 +1711,6 @@ ur: permalink_normalizations: "دائمی لِنکس میچ کرنے سے پہلے درج ذیل رَیج اَیکس کا اطلاق کریں، مثال کے طور پر: /(topic.*)\\?.*/\\1 ٹاپک روٹس میں سے قُوَیری سٹرِنگ کو نکال دے گا۔ فارمیٹ regex+string ہے، میچ کردہ کو ایکسَیس کرنے کیلئے \\1 وغیرہ کا استعمال کریں" global_notice: "تمام زائرین کو فوری،اَیمرجنسی ناقابلِ برطرف گلوبل بَینر نوٹِس دکھائیں، اِسے چھپانے کیلئے خالی جگہ میں تبدیل کریں (HTML کی اجازت)۔" disable_system_edit_notifications: "سِسٹم صارف کی طرف سے ترمیم اطلاعات کو غیر فعال کریں جب 'download_remote_images_to_local' فعال ہو۔" - likes_notification_consolidation_threshold: "لائیک اطلاعات کی تعداد جس سے پہلے اطلاعات ایک میں جمع کر دی جائیں۔ غیر فعال کرنے کیلئے 0 پر سَیٹ کریں۔ ونڈو بذریعہ `SiteSetting.likes_notification_consolidation_window_mins` ترتیب دی جا سکتی ہے۔" - likes_notification_consolidation_window_mins: "منٹوں میں مدت جہاں لائیک اطلاعات کو ایک میں جمع کر دیا جاتا ہے، جب حد تک پہنچ جایا جائے۔ حد کو بذریعہ `SiteSetting.likes_notification_consolidation_threshold` ترتیب دیا جا سکتا ہے۔" automatically_unpin_topics: "صارفین جب ٹاپک کے آخر تک پہنچ جائیں تو خود بخود ٹاپکس پر سے پِن ہٹا دیں۔" read_time_word_count: "متوقع پڑھنے کے وقت کا حساب لگانے کیلئے فی منٹ الفاظ کی تعداد۔" topic_page_title_includes_category: "ٹاپک صفحہ کے عنوان ٹَیگ میں زُمرہ کا نام شامل ہے۔" @@ -3030,21 +3025,9 @@ ur: confirm_new_email: title: "نئے ای میل کی تصدیق کریں" subject_template: "[%{email_prefix}] اپنے نئے ای میل ایڈریس کی تصدیق کریں" - text_body_template: | - %{site_name} پر اپنے نئے ای میل ایڈریس کی تصدیق کرنے کیلئے مندرجہ ذیل لِنک پر کلِک کریں: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "پرانی ای میل تصدیق" subject_template: "[%{email_prefix}] اپنا موجودہ ای میل ایڈریس تصدیق کریں" - text_body_template: | - اِس سے پہلے کہ ہم آپ کا ای میل ایڈریس تبدیل کر سکیں، ہمیں آپ کے اِس بات کی تصدیق کرنے کی ضرورت ہے کہ آپ کنٹرول کرتے ہیں - موجودہ ای میل اکاؤنٹ۔ آپ کا یہ قدم مکمل کرنے کے بعد، ہم آپ کی طرف سے تصدیق کروائئں گے - نئے ای میل ایڈریس کی۔ - - %{site_name} پر اپنے موجودہ ای میل ایڈریس کی تصدیق کرنے کیلئے مندرجہ ذیل لِنک پر کلک کریں: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "پرانا ای میل مطلع" subject_template: "[%{email_prefix}] آپ کا ای میل ایڈریس تبدیل ہوگیا ہے" diff --git a/config/locales/server.vi.yml b/config/locales/server.vi.yml index 8880a66aab..de8b79ea00 100644 --- a/config/locales/server.vi.yml +++ b/config/locales/server.vi.yml @@ -31,9 +31,13 @@ vi: submit: "Gửi đi" disable_remote_images_download_reason: "Không thể tải ảnh về máy chủ vì không dung lượng lưu trữ." anonymous: "Ẩn danh" + themes: + import_error: + git: "Lỗi nhân bản kho git, truy cập bị từ chối hoặc không tìm thấy kho lưu trữ" emails: incoming: show_trimmed_content: "Hiện nội dung đã ẩn" + maximum_staged_user_per_email_reached: "Đạt số lượng thành viên theo giai đoạn tối đa được tạo trên mỗi email." errors: empty_email_error: "Xảy ra khi hệ thống nhận được một thư rỗng." no_message_id_error: "Xảy ra khi thư không có phần 'Message-Id'." @@ -338,9 +342,6 @@ vi: error: "Có một lỗi khi thay đổi địa chỉ email của bạn. Có lẽ email này đã được sử dụng rồi?" error_staged: "Có lỗi khi thay đổi địa chỉ email của bạn, email đã được người khác sử dụng." already_done: "Xin lỗi, liên kết xác nhận này không còn giá trị. Có lẽ email của bạn đã được thay đổi?" - authorizing_old: - title: "Cám ơn bạn đã xác nhận địa chỉ email." - description: "Chúng tôi sẽ không gửi email tới địa chỉ mới của bạn để xác nhận." activation: action: "Nhấn vào đây để kích hoạt tài khoản của bạn" already_done: "Xin lỗi, liên kết để xác nhận tài khoản này không còn hợp lệ. Có thể tài khoản của bạn được kích hoạt?" @@ -423,36 +424,48 @@ vi: otp_confirmation: confirm_title: "Tiếp tục tới %{site_name}" confirm_button: Kết thúc đăng nhập + scopes: + one_time_password: "Tạo mã token đăng nhập một lần" reports: default: labels: count: Đếm day: Ngày post_edits: + title: "Sửa Bài Viết" labels: edited_at: ày post: Bài viết editor: Biên tập edit_reason: Lý do + description: "Số bài viết mới chỉnh sửa." user_flagging_ratio: + title: "Tỷ lệ gắn cờ người dùng" labels: user: Người dùng score: Điểm số moderators_activity: + title: "Hoạt động của người điều hành" labels: moderator: Điều hành + description: "Danh sách hoạt động của người điều hành bao gồm các cờ được xem xét, thời gian đọc, chủ đề được tạo, bài đăng được tạo, tin nhắn cá nhân được tạo và sửa đổi." flags_status: + title: "Tình trạng cờ" labels: flag: Loại + description: "Danh sách các trạng thái của cờ bao gồm loại cờ, người đăng, người gắn cờ và thời gian giải quyết." visits: title: "Các thành viên truy cập" xaxis: "Ngày" yaxis: "Số lần truy cập" + description: "Số lượt truy cập của người dùng." signups: xaxis: "Ngày" new_contributors: xaxis: "Ngày" + description: "Số thành viên thực hiện bài đăng đầu tiên của họ trong giai đoạn này." consolidated_page_views: + title: "Số lượt xem hợp nhất" yaxis: "Ngày" labels: post: Bài viết @@ -462,6 +475,7 @@ vi: xaxis: "Ngày" daily_engaged_users: xaxis: "Ngày" + description: "Số Thành viên đã thích hoặc đăng trong ngày cuối cùng" profile_views: title: "Xem hồ sơ người dùng" xaxis: "Ngày" @@ -487,10 +501,12 @@ vi: xaxis: "Ngày" yaxis: "Số đánh dấu mới" users_by_trust_level: - title: "Thành viên ở mõi bậc tin tưởng" + title: "Người dùng trên mỗi cấp độ tin cậy" xaxis: "Bậc tin tưởng" yaxis: "Số thành viên" + description: "Số lượng thành viên được nhóm theo mức độ tin cậy." users_by_type: + title: "Người dùng mỗi loại" xaxis: "Loại" yaxis: "Số thành viên" labels: @@ -499,6 +515,13 @@ vi: admin: Quản trị moderator: Điều hành suspended: Đã tạm khóa + description: "Số thành viên được nhóm bởi quản trị viên, điều hành viên, đã tạm ngưng và im lặng." + trending_search: + title: Xu hướng tìm kiếm + labels: + term: Thuật ngữ + searches: Số lần tìm kiếm + description: "Các thuật ngữ tìm kiếm phổ biến nhất với tỷ lệ nhấp chuột của họ." emails: title: "Email đã gửi" xaxis: "Ngày" @@ -525,6 +548,7 @@ vi: title: "Thông báo người dùng" xaxis: "Ngày" yaxis: "Số lượng tin nhắn" + description: "Số lần Thành viên đã được thông báo riêng bởi một lá cờ." top_referrers: title: "Giới thiệu hàng đầu" xaxis: "Người dùng" @@ -534,6 +558,7 @@ vi: user: "Người dùng" num_clicks: "Clicks" num_topics: "Chủ đề" + description: "Danh sách thành viên theo số lần nhấp vào liên kết họ đã chia sẻ." top_traffic_sources: title: "Nguồn truy cập" xaxis: "Tên miền" @@ -555,13 +580,16 @@ vi: page_view_logged_in_reqs: title: "Đã đăng nhập" xaxis: "Ngày" + description: "Số lượt xem trang mới từ Thành viên đã đăng nhập." page_view_crawler_reqs: xaxis: "Ngày" page_view_total_reqs: + title: "Số lượt xem" xaxis: "Ngày" yaxis: "Tổng lượt xem trang" page_view_logged_in_mobile_reqs: xaxis: "Ngày" + description: "Số lượt xem trang mới từ thành viên trên thiết bị di động và đăng nhập vào tài khoản." page_view_anon_mobile_reqs: xaxis: "Ngày" http_background_reqs: @@ -592,21 +620,32 @@ vi: title: "Thời gian để phản hồi lần đầu" xaxis: "Ngày" yaxis: "Thời gian trung bình (giờ)" + description: "Thời gian trung bình (tính bằng giờ) của phản hồi đầu tiên cho các chủ đề mới." topics_with_no_response: title: "Chủ đề không có phản hồi" xaxis: "Ngày" yaxis: "Tổng số" mobile_visits: + title: "Lượt truy cập của người dùng (di động)" xaxis: "Ngày" yaxis: "Số lần truy cập" + description: "Số Thành viên duy nhất đã truy cập bằng thiết bị di động." + web_crawlers: + labels: + page_views: "Số lượt xem" suspicious_logins: + title: "Đăng nhập đáng ngờ" labels: user: Người dùng location: Vị trí + description: "Chi tiết về thông tin đăng nhập mới khác biệt đáng ngờ với thông tin đăng nhập trước đó." staff_logins: + title: "Đăng nhập quản trị viên" labels: user: Người dùng location: Vị trí + login_at: Đăng nhập lúc + description: "Danh sách thời gian đăng nhập của quản trị viên với các địa điểm." top_uploads: labels: filename: Tên tập tin @@ -621,6 +660,7 @@ vi: other: "Email đã tạo %{count} lỗi trong 24 giờ qua, xem nhật ký để biết thêm chi tiết." poll_pop3_timeout: "Không thể kết nối với POP3 server, sẽ không nhận được email gửi đến. Bạn hãy kiểm tra thiết lập POP3 và nhà cung cấp dịch vụ." poll_pop3_auth_error: "Không thể kết nối với POP3 server do lỗi chứng thực. Bạn hãy kiểm tra thiết lập POP3." + unreachable_themes: "Chúng tôi không thể kiểm tra cập nhật về các chủ đề sau:" site_settings: censored_words: "Từ sẽ tự động thay thế bằng ■■■■" delete_old_hidden_posts: "Tự động ẩn bất kỳ bài viết ở ẩn hơn 30 ngày." @@ -657,6 +697,7 @@ vi: post_onebox_maxlength: "Số ký tự tối đa của một bài onebox Discourse." notification_email: "Địa chỉ email 'Từ:' được dùng để gửi các email thiết yếu của hệ thống. Các tên miền quy định ở đây phải có SPF, DKIM và bản ghi PTR phải được thiết lập chính xác cho email đến." email_custom_headers: "Danh sách xác định email header tùy chỉnh" + force_https: "Buộc trang web của bạn chỉ sử dụng HTTPS. CẢNH BÁO: KHÔNG kích hoạt tính năng này cho đến khi bạn xác minh HTTPS được thiết lập đầy đủ và hoạt động hoàn toàn ở mọi nơi! Bạn đã kiểm tra CDN của mình, tất cả thông tin đăng nhập xã hội và bất kỳ biểu trưng / phụ thuộc bên ngoài nào để đảm bảo tất cả chúng đều tương thích với HTTPS?" summary_score_threshold: "Số điểm tối thiểu yêu cầu cho một bài viết bao gồm 'Tóm tắt chủ đề này'" summary_posts_required: "Số bài viết tối thiểu trong một chủ đề trước khi 'Tóm tắt chủ đề này' được kích hoạt" summary_likes_required: "Số lượt thích trong một chủ đề trước khi 'Tóm tắt chủ đề này' được kích hoạt" @@ -788,6 +829,7 @@ vi: newuser_max_mentions_per_post: "Số tối đa thông báo @name mà thành viên mới có thể sử dụng trong bài viết." newuser_max_replies_per_topic: "Số lượng tối đa trả lời mà thành viên có thể thực hiện trong một chủ đề cho đến khi có ai đó gửi trả lời." max_mentions_per_post: "Số tối đa thông báo @name mà tất cả mọi người có thể sử dụng trong bài viết." + max_users_notified_per_group_mention: "Số thành viên tối đa có thể nhận được thông báo nếu một nhóm được đề cập (nếu đáp ứng ngưỡng sẽ không có thông báo nào được nêu ra)" create_thumbnails: "Tạo ảnh nhỏ và ảnh lightbox nếu quá lớn để vừa trong một bài đăng." email_time_window_mins: "Chờ (n) phút trước khi gửi bất kỳ một email thông báo nào, để cung cấp cho người dùng cơ hội để chỉnh sửa và hoàn tất bài viết của họ." email_posts_context: "Có bao nhiêu trả lời trước được kèm theo như là bối cảnh trong email thông báo." @@ -840,6 +882,7 @@ vi: delete_email_logs_after_days: "Xóa nhật ký email sau (N) ngày. 0 để giữ lại vĩnh viễn" max_emails_per_day_per_user: "Số lượng tối đa email thành viên được gửi mỗi ngày. 0 để không giới hạn" enable_staged_users: "Tự động tạo các giai đoạn người dùng khi xử lý các email gửi đến." + maximum_staged_users_per_email: "Số lượng tối đa thành viên theo giai đoạn được tạo khi xử lý email đến." manual_polling_enabled: "Push email bằng cách sử dụng API để trả lời email." pop3_polling_enabled: "Poll thông qua POP3 các email trả lời." pop3_polling_ssl: "Sử dụng SSL khi kết nối tới POP3 server. (Đề nghị sử dụng)" @@ -891,7 +934,9 @@ vi: embed_username_required: "Tên tài khoản để tạo chủ đề là bắt buộc." show_create_topics_notice: "Nếu trang có ít hơn 5 chủ đề công khai, hiển thị một thông báo yêu cầu quản trị tạo thêm các chủ đề mới" delete_drafts_older_than_n_days: "Xóa các bản nháp cũ hơn (n) ngày." + bootstrap_mode_min_users: "Số thành viên tối thiểu được yêu cầu để tắt chế độ bootstrap (đặt thành 0 để tắt)" prevent_anons_from_downloading_files: "Cấm khách truy cập tải các tập tin đính kèm. CẢNH BÁO: việc này sẽ chặn những hình ảnh không thuộc giao diện trang hoạt động" + secure_media: 'Giới hạn truy cập để tải lên phương tiện truyền thông (hình ảnh, video, âm thanh). Nếu "yêu cầu đăng nhập" được bật, chỉ Thành viên đã đăng nhập mới có thể truy cập tải lên phương tiện. Nếu không, quyền truy cập sẽ chỉ bị giới hạn đối với các phương tiện tải lên trong các tin nhắn riêng tư. Lưu ý: Tải lên S3 phải được bật trước khi bật cài đặt này.' slug_generation_method: "Chọn phương thức tạo slug. 'encoded' sẽ tạo ra phần trăm chuỗi mã hóa. 'none' sẽ tắt slug." enable_emoji: "Kích hoạt emoji" emoji_set: "Bạn thích dùng gói emoji nào?" @@ -940,6 +985,7 @@ vi: category: "Thư mục" topic: "Kết quả" user: "Thành viên" + results_page: "Search results for '%{term}'" sso: not_found: "Không tìm thấy tài khoản của bạn, xin hãy liên hệ với BQT." account_not_approved: "Tài khoản của bạn chưa được BQT chấp thuận, bạn sẽ nhận được email thông báo khi được chấp nhận." @@ -1101,6 +1147,9 @@ vi: download_remote_images_disabled: subject_template: "Download ảnh từ xa đã bị vô hiệu" text_body_template: "Thiết lập `download_remote_images_to_local` đã bị vô hiệu do khoảng trống ổ cứng `download_remote_images_threshold` đã đạt mức giới hạn." + new_user_of_the_month: + title: "Bạn là thành viên mới của tháng!" + subject_template: "Bạn là một thành viên mới của tháng!" subject_re: "Re:" subject_pm: "[PM]" user_notifications: @@ -1133,6 +1182,8 @@ vi: %{new_email} signup_after_approval: subject_template: "Bạn đã được kiểm duyệt ở %{site_name}!" + suspicious_login: + subject_template: "[%{site_name}] Đăng nhập mới từ %{location}" page_not_found: title: "Rất tiếc! Địa chỉ này không tồn tại hoặc riêng tư." popular_topics: "Phổ biến" @@ -1339,6 +1390,8 @@ vi: description: Sử dụng Emoji trong bài viết first_mention: name: Đề cập đầu tiên + new_user_of_the_month: + name: "Thành viên mới của tháng" admin_login: success: "Gửi mail lỗi" email_input: "Email quản trị" @@ -1370,6 +1423,7 @@ vi: placeholder: "name@example.com" corporate: title: "Công ty" + description: "Thông tin này sẽ được nhập vào Điều khoản dịch vụ của bạn, đây là một chủ đề bạn có thể chỉnh sửa trong danh mục Nhân viên. Nếu bạn không có một công ty, hãy bỏ qua bước này ngay bây giờ." colors: title: "Giao diện" homepage: diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml index 52c35fff8f..f1965be405 100644 --- a/config/locales/server.zh_CN.yml +++ b/config/locales/server.zh_CN.yml @@ -124,6 +124,7 @@ zh_CN: inclusion: 不包括在列表中 invalid: 无效 is_invalid: "似乎不清楚,这是一个完整的句子?" + invalid_timezone: "“%{tz}”不是一个有效的时区" contains_censored_words: "包含了以下敏感词:%{censored_words}" less_than: "必须小于 %{count}" less_than_or_equal_to: "必须小于等于 %{count}" @@ -161,6 +162,7 @@ zh_CN: enable_s3_uploads_is_required: "除非已启用S3上载,否则无法将库存启用到S3。" s3_backup_requires_s3_settings: "除非你提供了'%{setting_name}',否则无法将S3用作备份位置。" s3_bucket_reused: "您不可把同一个 bucket 既用作 ‘s3_upload_bucket’ 又用作 ‘s3_backup_bucket’。请选择不同的 bucket 或为每个 bucket 使用不同的路径。" + secure_media_requirements: "在启用安全媒体之前,必须先启用S3上传。" conflicting_google_user_id: '此帐户的Google帐户ID已更改; 出于安全原因,需要管理人员干预。请联系工作人员并将其指向https://meta.discourse.org/t/76575' activemodel: errors: @@ -675,9 +677,8 @@ zh_CN: error: "在修改你的电子邮箱地址时出现了错误,可能此邮箱已经在论坛中使用了?" error_staged: "在修改你的电子邮箱地址时出现了错误。这个邮箱已经被一个暂存用户占用了。" already_done: "抱歉,此激活链接已经失效。可能你已经修改了邮箱?" - authorizing_old: - title: "感谢你确认你目前的邮箱地址" - description: "我们正向你的新地址发送确认邮件。" + authorizing_new: + title: "确认您的新邮箱" associated_accounts: revoke_failed: "无法使用%{provider_name}撤消你的帐户。" connected: "(已连接)" @@ -1698,8 +1699,6 @@ zh_CN: permalink_normalizations: "在匹配永久链接之前应用如下正则表达式,例如:/(topic.*)\\?.*/\\1 将去掉所有主题路径的参数字符串。格式为使用正则表达式+使用 \\1 等字符串来访问捕获内容" global_notice: "为所有访客显示紧急的,不可取消的全局横幅通知,修改为空以隐藏(可使用HTML)。" disable_system_edit_notifications: "当 'download_remote_images_to_local' 启用时禁用系统编辑提醒。" - likes_notification_consolidation_threshold: "合并为单个提醒前接受的被赞提醒数量。设置为0以关闭。窗口可以通过`SiteSetting.likes_notification_consolidation_window_mins`配置。" - likes_notification_consolidation_window_mins: "当达到阈值时多个赞的提醒合并到单个的持续时间。阈值可通过`SiteSetting.likes_notification_consolidation_threshold`配置。" automatically_unpin_topics: "当用户到达底部时自动解除主题置顶。" read_time_word_count: "一分钟阅读的词的数量,用于估计阅读时间。" topic_page_title_includes_category: "主题页面标题标签包含分类名。" @@ -1935,10 +1934,12 @@ zh_CN: autoclosed_disabled_lastpost: "本主题现在开放了。可以添加新的回复。" auto_deleted_by_timer: "由计时器自动删除。" login: - security_key_alternative: "找不到您的安全密钥,是否要使用其他方法?" + security_key_description: "当你准备好物理安全密钥后,请按下面的“使用安全密钥进行身份验证”按钮。" + security_key_alternative: "尝试另一种方式" security_key_authenticate: "使用安全密钥进行身份验证" security_key_not_allowed_error: "安全密钥验证超时或被取消。" security_key_no_matching_credential_error: "在提供的安全密钥中找不到匹配的凭据。" + security_key_support_missing_error: "您当前的设备或浏览器不支持使用安全密钥。请使用其他方法。" security_key_invalid: "验证安全密钥时出错。" not_approved: "你的账户尚未获得批准。一旦你的账户获得批准,你会收到一封电子邮件。" incorrect_username_email_or_password: "用户名、电子邮箱或密码不正确" @@ -3010,19 +3011,9 @@ zh_CN: confirm_new_email: title: "确认新邮箱" subject_template: "[%{email_prefix}] 确认你的新电子邮箱地址" - text_body_template: | - 点击下面的链接来确认你在%{site_name}上的新电子邮箱地址: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "确认旧邮箱" subject_template: "[%{email_prefix}] 确认你现在的电子邮箱地址" - text_body_template: | - 在修改你的邮箱地址前,我们需要确认你现在的邮箱。在你完成这步之后,我们将确认你的新邮件地址。 - - 点击下面的链接来确认你在%{site_name}正使用的邮件: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "通知旧邮箱" subject_template: "[%{email_prefix}] 你的邮箱已经修改成功" diff --git a/config/locales/server.zh_TW.yml b/config/locales/server.zh_TW.yml index 27cada2b1c..c6ac6ebc43 100644 --- a/config/locales/server.zh_TW.yml +++ b/config/locales/server.zh_TW.yml @@ -649,9 +649,6 @@ zh_TW: error: "修改你的電郵位址時發生錯誤,可能此郵箱已有人使用了。" error_staged: "在修改你的電子郵箱地址時出現了錯誤。這個郵箱已經被一個暫存使用者占用了。" already_done: "抱歉,此激活連結已經失效。可能你已經修改了郵箱?" - authorizing_old: - title: "感謝你確認你目前的郵箱地址" - description: "我們正向你的新地址發送確認郵件。" associated_accounts: revoke_failed: "無法使用%{provider_name}刪除你的帳戶。" activation: @@ -1624,8 +1621,6 @@ zh_TW: permalink_normalizations: "在匹配永久連結之前應用如下正則表達式,例如:/(topic.*)\\?.*/\\1 將去掉所有主題路徑的參數字元串。格式為使用正則表達式+使用 \\1 等字元串來訪問捕獲內容" global_notice: "向所有訪客顯示緊急的、不可駁回的全版面橫幅通知,設定留空將會隱藏它(允許使用HTML)。" disable_system_edit_notifications: "當 'download_remote_images_to_local' 啟用時禁用系統編輯提醒。" - likes_notification_consolidation_threshold: "在將通知合併為單個通知之前收到的已通知數。 設定0為禁用。該視窗可以通過`SiteSetting.likes_notification_consolidation_window_mins`進行設定。" - likes_notification_consolidation_window_mins: "達到門檻值後,將受歡迎的通知合併為單個通知的持續時間(分鐘)。 可以通過`SiteSetting.likes_notification_consolidation_threshold`設定門檻值。" automatically_unpin_topics: "當使用者到達底部時自動解除主題置頂。" read_time_word_count: "一分鐘閲讀的詞的數量,用於估計閲讀時間。" native_app_install_banner_ios: "將iOS裝置上的DiscourseHub 橫幅主題顯示給一般使用者(信任等級1以上)。" @@ -2807,20 +2802,9 @@ zh_TW: confirm_new_email: title: "確認新郵件地址" subject_template: "[%{email_prefix}] 確認你的新郵件地址" - text_body_template: | - 點擊以下連結,確認你 %{site_name} 的新郵件地址: - - %{base_url}/u/confirm-new-email/%{email_token} confirm_old_email: title: "確認原郵件地址" subject_template: "[%{email_prefix}] 確認你的現行郵件地址" - text_body_template: | - 在我們修改你的郵件地址前,我們需要你確認你擁有當前的郵件帳號。 - 完成此步驟後,我們將請你確認新的郵件地址。 - - 點擊下面的連結,以確認你當前在 %{site_name} 的郵件地址: - - %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "通知原郵件地址" subject_template: "[%{email_prefix}] 已變更你的郵件地址" diff --git a/plugins/discourse-local-dates/config/locales/client.lv.yml b/plugins/discourse-local-dates/config/locales/client.lv.yml index cda5fe6581..216917a15e 100644 --- a/plugins/discourse-local-dates/config/locales/client.lv.yml +++ b/plugins/discourse-local-dates/config/locales/client.lv.yml @@ -10,4 +10,5 @@ lv: discourse_local_dates: create: form: + date_title: Datums time_title: Laiks diff --git a/plugins/discourse-local-dates/config/locales/client.tr_TR.yml b/plugins/discourse-local-dates/config/locales/client.tr_TR.yml index 4e1a086ede..216f1aefb9 100644 --- a/plugins/discourse-local-dates/config/locales/client.tr_TR.yml +++ b/plugins/discourse-local-dates/config/locales/client.tr_TR.yml @@ -12,3 +12,4 @@ tr_TR: form: date_title: Tarih time_title: Saat + timezone: Saat dilimi diff --git a/plugins/discourse-narrative-bot/config/locales/client.nl.yml b/plugins/discourse-narrative-bot/config/locales/client.nl.yml index 4ef46341ee..e534234bd3 100644 --- a/plugins/discourse-narrative-bot/config/locales/client.nl.yml +++ b/plugins/discourse-narrative-bot/config/locales/client.nl.yml @@ -9,5 +9,5 @@ nl: js: discourse_narrative_bot: welcome_post_type: - new_user_track: "Start de nieuwe gebruikerstutorial voor alle nieuwe gebruikers" - welcome_message: "Stuur een welkomstbericht met een snelle start handleiding naar alle nieuwe gebruikers" + new_user_track: "De handleiding voor nieuwe gebruikers starten voor alle nieuwe gebruikers" + welcome_message: "Een welkomstbericht met een snelstartgids naar alle nieuwe gebruikers sturen" diff --git a/plugins/discourse-narrative-bot/config/locales/server.ca.yml b/plugins/discourse-narrative-bot/config/locales/server.ca.yml index 8499bafac9..c1b8bbfb91 100644 --- a/plugins/discourse-narrative-bot/config/locales/server.ca.yml +++ b/plugins/discourse-narrative-bot/config/locales/server.ca.yml @@ -26,6 +26,8 @@ ca: Aquesta insígnia es concedeix després d'haver completat amb èxit el tutorial interactiu d'usuari avançat. Heu dominat les eines avançades de discussió, i ara teniu esteu completament acreditat! discourse_narrative_bot: bio: "Hola, no sóc una persona real, sóc un robot que us pot ensenyar coses sobre aquest lloc web. Per a interactuar amb mi, envieu-me un missatge o feu una menció a **%{discobot_username}** en qualsevol lloc. " + tl2_promotion_message: + subject_template: "Enhorabona per la vostra promoció de nivell de confiança!" timeout: message: |- Bon dia @%{username}, diff --git a/plugins/discourse-narrative-bot/config/locales/server.de.yml b/plugins/discourse-narrative-bot/config/locales/server.de.yml index 3c19805ba8..56aa5d27a6 100644 --- a/plugins/discourse-narrative-bot/config/locales/server.de.yml +++ b/plugins/discourse-narrative-bot/config/locales/server.de.yml @@ -26,6 +26,8 @@ de: Das Abzeichen wird verliehen, wenn das interaktive Tutorial für fortgeschrittene Benutzer erfolgreich abgeschlossen wurde. Du beherrscht die fortgeschrittenen Werkzeuge für Diskussionen erlernt und besitzt nun die Lizenz zum Diskutieren. discourse_narrative_bot: bio: "Hallo! Ich bin keine reale Person. Ich bin ein Bot, der dir etwas über diese Website beibringen kann. Schick mir eine Nachricht oder erwähne irgendwo **`@%{discobot_username}`**, um mit mir zu interagieren." + tl2_promotion_message: + subject_template: "Herzlichen Glückwunsch zur Beförderung ihrer Vertrauensstufe!" timeout: message: |- Hallo @%{username}! Ich wollte mich nur wieder einmal melden, weil ich schon länger nichts von dir gehört habe. diff --git a/plugins/discourse-narrative-bot/config/locales/server.es.yml b/plugins/discourse-narrative-bot/config/locales/server.es.yml index 203231e2ef..7bf6fcc14f 100644 --- a/plugins/discourse-narrative-bot/config/locales/server.es.yml +++ b/plugins/discourse-narrative-bot/config/locales/server.es.yml @@ -26,6 +26,14 @@ es: Esta medalla se otorga al completar con éxito el tutorial interactivo para usuarios avanzados. Has dominado las herramientas avanzadas de discusión y ¡ahora tienes licencia completa! discourse_narrative_bot: bio: "¡Hola! No soy una persona real, soy un bot que te puede enseñar acerca este sitio. Para interactuar conmigo, envíame un mensaje o menciona **`%{discobot_username}`** en cualquier lugar." + tl2_promotion_message: + subject_template: "¡Felicitaciones por tu promoción del nivel de confianza!" + text_body_template: | + ¡Ahora que has sido promovido, es tiempo de que aprendas sobre las características avanzadas! + + Responde a este mensaje con `@discobot start advanced tutorial` para saber más sobre lo que puedes hacer. + + Te invitamos a que sigas participando – disfrutamos tenerte cerca. timeout: message: |- Hey, @%{username}, te quería decir que estoy pendiente de ti porque no he tenido noticias tuyas en mucho tiempo. diff --git a/plugins/discourse-narrative-bot/config/locales/server.nl.yml b/plugins/discourse-narrative-bot/config/locales/server.nl.yml index 4c60b2996b..d7b4461f79 100644 --- a/plugins/discourse-narrative-bot/config/locales/server.nl.yml +++ b/plugins/discourse-narrative-bot/config/locales/server.nl.yml @@ -7,19 +7,19 @@ nl: site_settings: - disable_discourse_narrative_bot_welcome_post: "Discourse Narrative Bot welkomstbericht uitschakelen" + disable_discourse_narrative_bot_welcome_post: "Het Discourse Narrative Bot-welkomstbericht uitschakelen" discourse_narrative_bot_ignored_usernames: "Gebruikersnamen die de Discourse Narrative Bot moet negeren" discourse_narrative_bot_disable_public_replies: "Antwoorden door de Discourse Narrative Bot uitschakelen" - discourse_narrative_bot_welcome_post_type: "Wat voor soort welkomstbericht zou de Discourse Narrative Bot moeten uitsturen" - discourse_narrative_bot_welcome_post_delay: "Wacht (n) seconden voordat de Discourse Narrative Bot het welkomstbericht uitstuurd." + discourse_narrative_bot_welcome_post_type: "Type welkomstbericht dat de Discourse Narrative Bot zou moeten uitsturen" + discourse_narrative_bot_welcome_post_delay: "(n) seconden wachten voordat de Discourse Narrative Bot het welkomstbericht uitstuurt." badges: certified: name: Gecertificeerd description: "Doorloop onze tutorial voor nieuwe gebruikers" long_description: | - Deze badge wordt verleend wanneer de interactieve handleiding met succes is doorlopen. Je hebt het initiatief genomen om de basis hulpmiddelen voor discussie te leren en je bent nu gecertificeerd! + Deze badge wordt verleend wanneer de interactieve handleiding voor nieuwe gebruikers met succes is doorlopen. U hebt het initiatief genomen om de basishulpmiddelen voor discussie te leren, en u bent nu gecertificeerd! licensed: - description: "Onze geavanceerde gebruikers handleiding afgerond" + description: "Onze geavanceerde gebruikershandleiding afgerond" discourse_narrative_bot: bio: "Hallo, ik ben geen echt persoon. Ik ben een bot die jou uitleg geeft over deze website. Om met mij te communiceren, stuur me een bericht of vermeld mij **`@%{discobot_username}`** ergens." tl2_promotion_message: @@ -31,7 +31,7 @@ nl: U bent van harte uitgenodigd om mee te blijven werken – we genieten van uw aanwezigheid. dice: - trigger: "gooi" + trigger: "gooien" invalid: |- Sorry, het is wiskundig onmogelijk om die combinatie te gooien. :confounded: results: |- diff --git a/plugins/discourse-narrative-bot/config/locales/server.pl_PL.yml b/plugins/discourse-narrative-bot/config/locales/server.pl_PL.yml index 4cbc4d5650..95974e1967 100644 --- a/plugins/discourse-narrative-bot/config/locales/server.pl_PL.yml +++ b/plugins/discourse-narrative-bot/config/locales/server.pl_PL.yml @@ -26,6 +26,14 @@ pl_PL: Odznaka została nadana za ukończenie interaktywnego tutorialu dla zaawansowanych użytkowników. Poznałeś zaawansowane narzędzia dyskusji i jesteś teraz w pełni licencjonowany! discourse_narrative_bot: bio: "Witaj, nie jestem prawdziwą osobą. Jestem botem, który może nauczyć Cię korzystania z tej witryny. Aby skomunikować się ze mną, wyślij do mnie wiadomość lub oznacz **`@%{discobot_username}`** w dowolnym miejscu." + tl2_promotion_message: + subject_template: "Gratuluję zdobycia nowego poziomu zaufania!" + text_body_template: | + Jako że wszedłeś na wyższy poziom zaufania, czas nauczyć się czegoś o zaawansowanych funkcjach! + + Odpisz na tę wiadomość tekstem "@discobot start advanced tutorial", aby dowiedzieć się, co możesz zrobić. + + Zapraszamy do bycia zaangażowanym - cieszymy się, że jesteś z nami. timeout: message: |- Witaj @%{username}, przypominam o sobie bo od dawna do mnie nie zaglądałeś. diff --git a/plugins/discourse-narrative-bot/config/locales/server.vi.yml b/plugins/discourse-narrative-bot/config/locales/server.vi.yml index 5c7e3d659c..b9cf411ebb 100644 --- a/plugins/discourse-narrative-bot/config/locales/server.vi.yml +++ b/plugins/discourse-narrative-bot/config/locales/server.vi.yml @@ -42,6 +42,15 @@ vi: bookmark: instructions: |- Nếu bạn muốn tìm hiểu thêm, hãy chọn nút bên dưới và chọn để **đánh dấu tin nhắn cá nhân này**. Nếu bạn làm như vậy, bạn có thể có một :gift: trong tương lai! + search: + reply: |- + Bạn có thể tìm thấy nó :tada: + + - Để tìm kiếm chi tiết hơn, hãy đến [trang tìm kiếm đầy đủ](%{search_url}). + + - Để nhảy đến bất cứ nơi nào trong một cuộc thảo luận dài, hãy thử các điều khiển dòng thời gian của chủ đề ở bên phải (và dưới cùng, trên thiết bị di động). + + - Nếu bạn có :keyboard: vật lý, nhấn ? để xem các phím tắt tiện dụng của chúng tôi. certificate: alt: "Giấy chứng nhận thành tích" advanced_user_narrative: diff --git a/plugins/poll/config/locales/client.ar.yml b/plugins/poll/config/locales/client.ar.yml index c7d0951835..488c069564 100644 --- a/plugins/poll/config/locales/client.ar.yml +++ b/plugins/poll/config/locales/client.ar.yml @@ -55,7 +55,8 @@ ar: label: "أظهر النتائج" hide-results: title: "ارجع إلى أصواتك" - label: "أخفِ النتائج" + export-results: + label: "تصدير" open: title: "افتح التّصويت" label: "افتح" diff --git a/plugins/poll/config/locales/client.be.yml b/plugins/poll/config/locales/client.be.yml index 9d904a5ccf..d50105fd44 100644 --- a/plugins/poll/config/locales/client.be.yml +++ b/plugins/poll/config/locales/client.be.yml @@ -31,6 +31,8 @@ be: few: "Абярыце ня больш за %{count} варыянтаў адказаў" many: "Абярыце ня больш за %{count} варыянтаў адказаў" other: "Абярыце ня больш за %{count} варыянтаў адказаў" + export-results: + label: "экспарт" close: label: "зачыніць" ui_builder: diff --git a/plugins/poll/config/locales/client.bg.yml b/plugins/poll/config/locales/client.bg.yml index 3a39ec30d6..d9c519023d 100644 --- a/plugins/poll/config/locales/client.bg.yml +++ b/plugins/poll/config/locales/client.bg.yml @@ -29,7 +29,8 @@ bg: label: "Покажи резултатите" hide-results: title: "Обратно към вашите гласове" - label: "Скрий резултатите" + export-results: + label: "Експорт " open: title: "Отвори гласуването" label: "Отвори" diff --git a/plugins/poll/config/locales/client.bs_BA.yml b/plugins/poll/config/locales/client.bs_BA.yml index 6af3a93a40..5568cd0e12 100644 --- a/plugins/poll/config/locales/client.bs_BA.yml +++ b/plugins/poll/config/locales/client.bs_BA.yml @@ -40,7 +40,8 @@ bs_BA: label: "Prikaži rezultate" hide-results: title: "Nazad na glasove" - label: "Sakrij rezultate" + export-results: + label: "Izvoz" open: title: "Otvori anketu" label: "Otvori" diff --git a/plugins/poll/config/locales/client.ca.yml b/plugins/poll/config/locales/client.ca.yml index 0965c0b3c9..c6491dd99b 100644 --- a/plugins/poll/config/locales/client.ca.yml +++ b/plugins/poll/config/locales/client.ca.yml @@ -44,7 +44,14 @@ ca: label: "Mostra els resultats" hide-results: title: "Torna als vots" - label: "Amaga resultats" + label: "Mostra el vot" + group-results: + title: "Agrupa els vots per camp d'usuari" + ungroup-results: + title: "Combina tots els vots" + export-results: + title: "Exporta els resultats de la votació" + label: "Exporta" open: title: "Obre l'enquesta" label: "Obre" @@ -59,6 +66,7 @@ ca: error_while_toggling_status: "Ho sentim. S'ha produït un error en canviar l'estat d'aquesta enquesta." error_while_casting_votes: "Ho sentim. S'ha produït un error en l'emissió dels vostres vots." error_while_fetching_voters: "Hi ha hagut un error en mostrar els votants." + error_while_exporting_results: "S'ha produït un error en exportar els resultats de la votació." ui_builder: title: Crea una enquesta insert: Insereix una enquesta @@ -77,6 +85,8 @@ ca: vote: En votació closed: Quan estigui tancada staff: Només l'equip responsable + poll_chart_type: + label: Tipus de gràfic poll_config: max: Màxim min: Mínim diff --git a/plugins/poll/config/locales/client.cs.yml b/plugins/poll/config/locales/client.cs.yml index 23081eb67c..d30ee31c25 100644 --- a/plugins/poll/config/locales/client.cs.yml +++ b/plugins/poll/config/locales/client.cs.yml @@ -45,7 +45,8 @@ cs: label: "Ukaž výsledky" hide-results: title: "Zpět k hlasování" - label: "Skrýt výsledky" + export-results: + label: "Export" open: title: "Otevřít hlasování" label: "Otevřít" diff --git a/plugins/poll/config/locales/client.da.yml b/plugins/poll/config/locales/client.da.yml index e7e35d81e8..765a655283 100644 --- a/plugins/poll/config/locales/client.da.yml +++ b/plugins/poll/config/locales/client.da.yml @@ -35,7 +35,8 @@ da: label: "Vis resultat" hide-results: title: "Tilbage til dine stemmer" - label: "Skjul resultat" + export-results: + label: "Eksporter" open: title: "Åbn afstemningen" label: "Åbn" diff --git a/plugins/poll/config/locales/client.de.yml b/plugins/poll/config/locales/client.de.yml index c263357011..6cb7b2a39f 100644 --- a/plugins/poll/config/locales/client.de.yml +++ b/plugins/poll/config/locales/client.de.yml @@ -44,7 +44,8 @@ de: label: "Ergebnisse anzeigen" hide-results: title: "Zurück zur Umfrage" - label: "Ergebnisse ausblenden" + export-results: + label: "Exportieren" open: title: "Umfrage starten" label: "Starten" diff --git a/plugins/poll/config/locales/client.el.yml b/plugins/poll/config/locales/client.el.yml index d6e0442fd0..5fd8565012 100644 --- a/plugins/poll/config/locales/client.el.yml +++ b/plugins/poll/config/locales/client.el.yml @@ -35,7 +35,8 @@ el: label: "Εμφάνισε τα αποτελέσματα" hide-results: title: "Πίσω στην ψηφοφορία" - label: "Κρύψε τα αποτελέσματα" + export-results: + label: "Εξαγωγή" open: title: "Να ξεκινήσει η ψηφοφορία" label: "Ξεκίνημα" diff --git a/plugins/poll/config/locales/client.es.yml b/plugins/poll/config/locales/client.es.yml index d442bdb70e..75ce8dff62 100644 --- a/plugins/poll/config/locales/client.es.yml +++ b/plugins/poll/config/locales/client.es.yml @@ -44,7 +44,16 @@ es: label: "Mostrar resultados" hide-results: title: "Volver a tus votos" - label: "Ocultar resultados" + label: "Mostrar votos" + group-results: + title: "Agrupar votos por campo de usuario" + label: "Mostrar desglose" + ungroup-results: + title: "Combinar todos los votos" + label: "Esconder desglose" + export-results: + title: "Exportar los resultados de la encuesta" + label: "Exportar" open: title: "Abrir la encuesta" label: "Abrir" @@ -59,6 +68,7 @@ es: error_while_toggling_status: "Lo sentimos, se produjo un error al cambiar el estado de esta encuesta." error_while_casting_votes: "Lo sentimos, se produjo un error al emitir tus votos." error_while_fetching_voters: "Lo sentimos, se produjo un error al mostrar los votantes." + error_while_exporting_results: "Lo sentimos, hubo un error al exportar los resultados de la encuesta." ui_builder: title: Crear encuesta insert: Insertar encuesta @@ -77,6 +87,8 @@ es: vote: En votación closed: Cuando esté cerrada staff: Solo staff + poll_chart_type: + label: Tipo de gráfico poll_config: max: Máximo min: Mínimo diff --git a/plugins/poll/config/locales/client.et.yml b/plugins/poll/config/locales/client.et.yml index 42147796b8..b99bb77e81 100644 --- a/plugins/poll/config/locales/client.et.yml +++ b/plugins/poll/config/locales/client.et.yml @@ -35,7 +35,8 @@ et: label: "Kuva tulemused" hide-results: title: "Tagasi sinu vastuse juurde" - label: "Peida tulemused" + export-results: + label: "Ekspordi" open: title: "Ava hääletus" label: "Ava" diff --git a/plugins/poll/config/locales/client.fa_IR.yml b/plugins/poll/config/locales/client.fa_IR.yml index 795850afbf..f38e3c4929 100644 --- a/plugins/poll/config/locales/client.fa_IR.yml +++ b/plugins/poll/config/locales/client.fa_IR.yml @@ -37,7 +37,8 @@ fa_IR: label: "نتایج را نشان بده" hide-results: title: "برگشتن به رای گیری " - label: "نتایج را مخفی کن " + export-results: + label: "خروجی گرفتن" open: title: "نظرسنجی را باز کن " label: "باز" diff --git a/plugins/poll/config/locales/client.fi.yml b/plugins/poll/config/locales/client.fi.yml index 855429b38e..a9552cb451 100644 --- a/plugins/poll/config/locales/client.fi.yml +++ b/plugins/poll/config/locales/client.fi.yml @@ -44,7 +44,8 @@ fi: label: "Näytä tulos" hide-results: title: "Palaa äänestysvalintaasi" - label: "Piilota tulos" + export-results: + label: "Vie" open: title: "Avaa äänestys" label: "Avaa" diff --git a/plugins/poll/config/locales/client.fr.yml b/plugins/poll/config/locales/client.fr.yml index ec074526a8..e588370177 100644 --- a/plugins/poll/config/locales/client.fr.yml +++ b/plugins/poll/config/locales/client.fr.yml @@ -44,7 +44,8 @@ fr: label: "Afficher les résultats" hide-results: title: "Retourner au vote" - label: "Masquer les résultats" + export-results: + label: "Exporter" open: title: "Ouvrir le sondage" label: "Ouvrir" diff --git a/plugins/poll/config/locales/client.gl.yml b/plugins/poll/config/locales/client.gl.yml index 274281a64e..0918e71233 100644 --- a/plugins/poll/config/locales/client.gl.yml +++ b/plugins/poll/config/locales/client.gl.yml @@ -23,7 +23,8 @@ gl: label: "Mostrar os resultados" hide-results: title: "Volver aos teus votos" - label: "Ocultar os resultados" + export-results: + label: "Exportar" open: title: "Abrir a enquisa" label: "Abrir" diff --git a/plugins/poll/config/locales/client.he.yml b/plugins/poll/config/locales/client.he.yml index d7c320f926..839153a047 100644 --- a/plugins/poll/config/locales/client.he.yml +++ b/plugins/poll/config/locales/client.he.yml @@ -54,7 +54,16 @@ he: label: "הצגת תוצאות" hide-results: title: "חזרה להצבעות שלך" - label: "הסתרת תוצאות" + label: "הצגת הצבעה" + group-results: + title: "קיבוץ הצבעות לפי משתמש" + label: "הצגת פילוח" + ungroup-results: + title: "שקלול כל ההצבעות" + label: "הסתרת הפילוח" + export-results: + title: "ייצוא תוצאות הסקר" + label: "ייצוא" open: title: "פתיחת הסקר" label: "פתיחה" @@ -69,6 +78,7 @@ he: error_while_toggling_status: " חלה שגיאה בשינוי המצב של סקר זה, עמך הסליחה." error_while_casting_votes: "חלה שגיאה בהצבעתך, עמך הסליחה." error_while_fetching_voters: "חלה שגיאה בהצגת המצביעים, עמך הסליחה." + error_while_exporting_results: "אירעה שגיאה בייצוא תוצאות הסקר." ui_builder: title: בניית סקר insert: הכנסת סקר @@ -87,6 +97,8 @@ he: vote: בהליכי הצבעה closed: כאשר סגור staff: סגל בלבד + poll_chart_type: + label: סוג תרשים poll_config: max: מרבי min: מזערי diff --git a/plugins/poll/config/locales/client.hu.yml b/plugins/poll/config/locales/client.hu.yml index 87f94233d8..aec073fa1a 100644 --- a/plugins/poll/config/locales/client.hu.yml +++ b/plugins/poll/config/locales/client.hu.yml @@ -31,7 +31,8 @@ hu: label: "Eredmények mutatása" hide-results: title: "Vissza a szavazataidhoz" - label: "Eredmények elrejtése" + export-results: + label: "Exportálás" open: title: "A szavazás megnyitása" label: "Megnyitás" diff --git a/plugins/poll/config/locales/client.hy.yml b/plugins/poll/config/locales/client.hy.yml index 7cc38a1976..34fe420982 100644 --- a/plugins/poll/config/locales/client.hy.yml +++ b/plugins/poll/config/locales/client.hy.yml @@ -42,7 +42,8 @@ hy: label: "Ցուցադրել արդյունքները" hide-results: title: "Վերադառնալ դեպի Ձեր քվեները" - label: "Թաքցնել արդյունքները" + export-results: + label: "Արտահանել" open: title: "Բացել հարցումը" label: "Բացել" diff --git a/plugins/poll/config/locales/client.id.yml b/plugins/poll/config/locales/client.id.yml index 72800e7dd0..31998802b0 100644 --- a/plugins/poll/config/locales/client.id.yml +++ b/plugins/poll/config/locales/client.id.yml @@ -30,7 +30,6 @@ id: label: "Lihat hasil" hide-results: title: "Kembali ke suaramu" - label: "Sembunyikan hasil" open: title: "Buka Polling" label: "Buka" diff --git a/plugins/poll/config/locales/client.it.yml b/plugins/poll/config/locales/client.it.yml index 249ea05fd0..3be7bb9bd4 100644 --- a/plugins/poll/config/locales/client.it.yml +++ b/plugins/poll/config/locales/client.it.yml @@ -44,7 +44,8 @@ it: label: "Mostra i risultati" hide-results: title: "Torna ai tuoi voti" - label: "Nascondi i risultati" + export-results: + label: "Esportare" open: title: "Apri il sondaggio" label: "Apri" diff --git a/plugins/poll/config/locales/client.ja.yml b/plugins/poll/config/locales/client.ja.yml index c0a0255d06..e54b75c6f4 100644 --- a/plugins/poll/config/locales/client.ja.yml +++ b/plugins/poll/config/locales/client.ja.yml @@ -37,7 +37,8 @@ ja: label: "結果を表示" hide-results: title: "投票に戻る" - label: "結果を非表示にする" + export-results: + label: "エクスポート" open: title: "投票をオープンする" label: "オープン" diff --git a/plugins/poll/config/locales/client.ko.yml b/plugins/poll/config/locales/client.ko.yml index 76f2939744..3f82005744 100644 --- a/plugins/poll/config/locales/client.ko.yml +++ b/plugins/poll/config/locales/client.ko.yml @@ -30,7 +30,8 @@ ko: label: "결과 보기" hide-results: title: "투표로 돌아가기" - label: "결과 숨기기" + export-results: + label: "내보내기" open: title: "투표 열기" label: "열기" diff --git a/plugins/poll/config/locales/client.lt.yml b/plugins/poll/config/locales/client.lt.yml index 79c7bef4bd..5dc06fd591 100644 --- a/plugins/poll/config/locales/client.lt.yml +++ b/plugins/poll/config/locales/client.lt.yml @@ -27,7 +27,8 @@ lt: label: "Rodyti rezultatus" hide-results: title: "Grįžti į balsavimus" - label: "Slėpti rezultatus" + export-results: + label: "Eksportuoti" open: title: "Atidaryti balsavimą" label: "Atidaryti" diff --git a/plugins/poll/config/locales/client.lv.yml b/plugins/poll/config/locales/client.lv.yml index 2d91916153..1732553a3d 100644 --- a/plugins/poll/config/locales/client.lv.yml +++ b/plugins/poll/config/locales/client.lv.yml @@ -15,7 +15,8 @@ lv: label: "Rādīt rezultātus" hide-results: title: "Atpakaļ pie balsojumiem" - label: "Paslēpt rezultātus" + export-results: + label: "Eksportēt" open: title: "Atvērt aptauju" label: "Atvērt" diff --git a/plugins/poll/config/locales/client.nb_NO.yml b/plugins/poll/config/locales/client.nb_NO.yml index 749c39f7d2..97dac79cc6 100644 --- a/plugins/poll/config/locales/client.nb_NO.yml +++ b/plugins/poll/config/locales/client.nb_NO.yml @@ -35,7 +35,8 @@ nb_NO: label: "Vis resultat" hide-results: title: "Tilbake til dine stemmer" - label: "Skjul resultater" + export-results: + label: "Eksporter" open: title: "Åpne avstemning" label: "Åpne" diff --git a/plugins/poll/config/locales/client.nl.yml b/plugins/poll/config/locales/client.nl.yml index a8b01735ec..e12b86c18f 100644 --- a/plugins/poll/config/locales/client.nl.yml +++ b/plugins/poll/config/locales/client.nl.yml @@ -44,7 +44,16 @@ nl: label: "Resultaten tonen" hide-results: title: "Terug naar uw stemmen" - label: "Resultaten verbergen" + label: "Stem tonen" + group-results: + title: "Stemmen groeperen op gebruikersveld" + label: "Verdeling tonen" + ungroup-results: + title: "Alle stemmen combineren" + label: "Verdeling verbergen" + export-results: + title: "De pollresultaten exporteren" + label: "Exporteren" open: title: "De poll openen" label: "Openen" @@ -59,6 +68,7 @@ nl: error_while_toggling_status: "Sorry, er is een fout opgetreden bij het omschakelen van de status van deze poll." error_while_casting_votes: "Sorry, er is een fout opgetreden bij het uitbrengen van uw stemmen." error_while_fetching_voters: "Sorry, er is een fout opgetreden bij het weergeven van de stemmers." + error_while_exporting_results: "Sorry, er is een fout opgetreden bij het exporteren van pollresultaten." ui_builder: title: Poll aanmaken insert: Poll invoegen @@ -77,6 +87,8 @@ nl: vote: Bij stemmen closed: Wanneer gesloten staff: Alleen stafleden + poll_chart_type: + label: Diagramtype poll_config: max: Max min: Min diff --git a/plugins/poll/config/locales/client.pl_PL.yml b/plugins/poll/config/locales/client.pl_PL.yml index 645c7b0a86..22e25fa93b 100644 --- a/plugins/poll/config/locales/client.pl_PL.yml +++ b/plugins/poll/config/locales/client.pl_PL.yml @@ -54,7 +54,16 @@ pl_PL: label: "Pokaż wyniki" hide-results: title: "Wróć do oddanych głosów" - label: "Ukryj wyniki" + label: "Pokaż głos" + group-results: + title: "Grupuj głosy polami użytkownika" + label: "Pokaż podsumowanie" + ungroup-results: + title: "Połącz wszystkie głosy" + label: "Ukryj podsumowanie" + export-results: + title: "Eksportuj wyniki ankiety" + label: "Eksport" open: title: "Otwórz ankietę" label: "Otwórz" @@ -69,6 +78,7 @@ pl_PL: error_while_toggling_status: "Przepraszamy, wystąpił błąd podczas przełączania statusu w tej ankiecie." error_while_casting_votes: "Przepraszamy, wystąpił błąd podczas oddawania głosów." error_while_fetching_voters: "Przepraszamy, wystąpił błąd podczas wyświetlania głosujących." + error_while_exporting_results: "Przepraszamy, wystąpił błąd poczas eksportowania wyników ankiety." ui_builder: title: Utwórz ankietę insert: Wstaw ankietę @@ -87,6 +97,8 @@ pl_PL: vote: Po zagłosowaniu closed: Po zamknięciu staff: Wyłącznie dla zespołu + poll_chart_type: + label: Typ wykresu poll_config: max: Max min: Min diff --git a/plugins/poll/config/locales/client.pt.yml b/plugins/poll/config/locales/client.pt.yml index 8463912143..1ec4100a99 100644 --- a/plugins/poll/config/locales/client.pt.yml +++ b/plugins/poll/config/locales/client.pt.yml @@ -15,6 +15,8 @@ pt: one: "total da votação" other: "total de votos" average_rating: "Classificação média: %{average}." + public: + title: "Os votos são públicos." multiple: help: at_least_min_options: @@ -31,11 +33,17 @@ pt: title: "Votar" label: "Vote agora!" show-results: - title: "Exibir resultados da sondagem" + title: "Exibir os resultados da sondagem" label: "Mostrar resultados" hide-results: title: "Voltar aos meus votos" - label: "Ocultar resultados" + label: "Mostrar voto" + group-results: + title: "Agrupar votos por campo de utilizador" + ungroup-results: + title: "Combinar todos os votos" + export-results: + label: "Exportar" open: title: "Abrir a sondagem" label: "Abrir" @@ -43,13 +51,13 @@ pt: close: title: "Fechar a sondagem" label: "Fechar" - confirm: "Tem a certeza que deseja fechar esta sondagem?" + confirm: "Tem a certeza que deseja encerrar esta sondagem?" error_while_toggling_status: "Desculpe, ocorreu um erro ao alternar o estado desta sondagem." error_while_casting_votes: "Desculpe, ocorreu um erro ao submeter os seus votos." error_while_fetching_voters: "Pedimos desculpa, ocorreu um erro ao apresentar os eleitores." ui_builder: title: Criar Sondagem - insert: Inserir sondagem + insert: Inserir Sondagem help: options_count: Insira pelo menos 2 opções invalid_values: O valor mínimo deve ser menor que o valor máximo. diff --git a/plugins/poll/config/locales/client.pt_BR.yml b/plugins/poll/config/locales/client.pt_BR.yml index 99af70b95e..3cd012ebf9 100644 --- a/plugins/poll/config/locales/client.pt_BR.yml +++ b/plugins/poll/config/locales/client.pt_BR.yml @@ -42,7 +42,8 @@ pt_BR: label: "Mostrar resultados" hide-results: title: "Voltar para os seus votos" - label: "Ocultar resultados" + export-results: + label: "Exportar" open: title: "Abrir a votação" label: "Abrir" diff --git a/plugins/poll/config/locales/client.ro.yml b/plugins/poll/config/locales/client.ro.yml index 3841800ca8..2a11fd6ac1 100644 --- a/plugins/poll/config/locales/client.ro.yml +++ b/plugins/poll/config/locales/client.ro.yml @@ -40,7 +40,8 @@ ro: label: "Afișează rezultate" hide-results: title: "Înapoi la voturile tale" - label: "Ascunde rezultate" + export-results: + label: "Exportă" open: title: "Deschide sondajul" label: "Deschide sondajul" diff --git a/plugins/poll/config/locales/client.ru.yml b/plugins/poll/config/locales/client.ru.yml index 0983dbe1ad..abdbd1ac1b 100644 --- a/plugins/poll/config/locales/client.ru.yml +++ b/plugins/poll/config/locales/client.ru.yml @@ -52,7 +52,8 @@ ru: label: "Показать результаты" hide-results: title: "Вернуться к опросу" - label: "Скрыть результаты" + export-results: + label: "Экспорт" open: title: "Снова начать принимать новые голоса" label: "Открыть" diff --git a/plugins/poll/config/locales/client.sk.yml b/plugins/poll/config/locales/client.sk.yml index cbf9f1a728..15402b1df3 100644 --- a/plugins/poll/config/locales/client.sk.yml +++ b/plugins/poll/config/locales/client.sk.yml @@ -45,7 +45,8 @@ sk: label: "Zobraz výsledky" hide-results: title: "Návrat na odovzdané hlasy" - label: "Skryť výsledky" + export-results: + label: "Export" open: title: "Zahájiť hlasovanie" label: "Zahájiť" diff --git a/plugins/poll/config/locales/client.sl.yml b/plugins/poll/config/locales/client.sl.yml index af3896c1f1..6ff01b5cd3 100644 --- a/plugins/poll/config/locales/client.sl.yml +++ b/plugins/poll/config/locales/client.sl.yml @@ -52,7 +52,8 @@ sl: label: "Prikaži rezultate" hide-results: title: "Nazaj na vašo glasovnico" - label: "Skrij rezultate" + export-results: + label: "Izvozi" open: title: "Odpri anketo" label: "Odpri" diff --git a/plugins/poll/config/locales/client.sq.yml b/plugins/poll/config/locales/client.sq.yml index b87256d7c4..6a705abc47 100644 --- a/plugins/poll/config/locales/client.sq.yml +++ b/plugins/poll/config/locales/client.sq.yml @@ -35,7 +35,8 @@ sq: label: "Shfaq rezultatet" hide-results: title: "Back to your votes" - label: "Fshihni rezultatet" + export-results: + label: "Eksporto" open: title: "Fillo një Sondazh" label: "Fillo" diff --git a/plugins/poll/config/locales/client.sr.yml b/plugins/poll/config/locales/client.sr.yml index d3bf66ef16..e3c6716b7d 100644 --- a/plugins/poll/config/locales/client.sr.yml +++ b/plugins/poll/config/locales/client.sr.yml @@ -9,5 +9,7 @@ sr: js: poll: average_rating: "Prosečan rejting: %{average}." + export-results: + label: "Izvoz" close: label: "Zatvori" diff --git a/plugins/poll/config/locales/client.sv.yml b/plugins/poll/config/locales/client.sv.yml index 312c7627ff..c9a0989536 100644 --- a/plugins/poll/config/locales/client.sv.yml +++ b/plugins/poll/config/locales/client.sv.yml @@ -35,7 +35,8 @@ sv: label: "Visa resultat" hide-results: title: "Tillbaka till dina röster" - label: "Göm resultat" + export-results: + label: "Exportera" open: title: "Öppna omröstningen" label: "Öppna" diff --git a/plugins/poll/config/locales/client.sw.yml b/plugins/poll/config/locales/client.sw.yml index 386c97b4a0..b848be9fd4 100644 --- a/plugins/poll/config/locales/client.sw.yml +++ b/plugins/poll/config/locales/client.sw.yml @@ -37,7 +37,8 @@ sw: label: "Onyesha matokeo" hide-results: title: "Rudi kwenye kura zako" - label: "Ficha matokeo" + export-results: + label: "Hamisha" open: title: "Fungua uchaguzi" label: "Fungua" diff --git a/plugins/poll/config/locales/client.te.yml b/plugins/poll/config/locales/client.te.yml index f8fe2fe0f2..04371a51d0 100644 --- a/plugins/poll/config/locales/client.te.yml +++ b/plugins/poll/config/locales/client.te.yml @@ -8,6 +8,8 @@ te: js: poll: + export-results: + label: "ఎగుమతి" close: label: "మూసివేయి" ui_builder: diff --git a/plugins/poll/config/locales/client.th.yml b/plugins/poll/config/locales/client.th.yml index 444d4bd410..4fe9c9c367 100644 --- a/plugins/poll/config/locales/client.th.yml +++ b/plugins/poll/config/locales/client.th.yml @@ -30,7 +30,8 @@ th: label: "แสดงผล" hide-results: title: "กลับสู่การโหวต" - label: "ซ่อนผล" + export-results: + label: "ส่งออก" open: title: "เปิดโพล" label: "เปิด" diff --git a/plugins/poll/config/locales/client.tr_TR.yml b/plugins/poll/config/locales/client.tr_TR.yml index 15a4f4a9f3..f0f83140a9 100644 --- a/plugins/poll/config/locales/client.tr_TR.yml +++ b/plugins/poll/config/locales/client.tr_TR.yml @@ -42,7 +42,8 @@ tr_TR: label: "Sonuçları göster" hide-results: title: "Oylarınıza dönün" - label: "Sonuçları gizle" + export-results: + label: "Dışa Aktar" open: title: "Anketi başlat" label: "Başlat" diff --git a/plugins/poll/config/locales/client.uk.yml b/plugins/poll/config/locales/client.uk.yml index 6addef6c35..eb1d46aa57 100644 --- a/plugins/poll/config/locales/client.uk.yml +++ b/plugins/poll/config/locales/client.uk.yml @@ -54,7 +54,8 @@ uk: label: "Показати результати" hide-results: title: "Назад до своїх голосів" - label: "Приховати результати" + export-results: + label: "Експорт" open: title: "Відкрити опитування" label: "Відкрити" diff --git a/plugins/poll/config/locales/client.ur.yml b/plugins/poll/config/locales/client.ur.yml index 10ba45bc75..c5f2445c9c 100644 --- a/plugins/poll/config/locales/client.ur.yml +++ b/plugins/poll/config/locales/client.ur.yml @@ -44,7 +44,8 @@ ur: label: "نتائج دکھائیں" hide-results: title: "وآپس اپنے ووٹس پر" - label: "نتائج چھپائیں" + export-results: + label: "ایکسپورٹ" open: title: "پول کھولیں" label: "کھولیں" diff --git a/plugins/poll/config/locales/client.vi.yml b/plugins/poll/config/locales/client.vi.yml index 0028c9567f..ff20daf54f 100644 --- a/plugins/poll/config/locales/client.vi.yml +++ b/plugins/poll/config/locales/client.vi.yml @@ -32,7 +32,8 @@ vi: label: "Hiện kết quả" hide-results: title: "Trở lại bình chọn của bạn" - label: "Ẩn kết quả" + export-results: + label: "Xuất" open: title: "Mở thăm dò" label: "Mở" diff --git a/plugins/poll/config/locales/client.zh_CN.yml b/plugins/poll/config/locales/client.zh_CN.yml index 416a6a7c6d..414bc8b415 100644 --- a/plugins/poll/config/locales/client.zh_CN.yml +++ b/plugins/poll/config/locales/client.zh_CN.yml @@ -39,7 +39,8 @@ zh_CN: label: "显示结果" hide-results: title: "返回到你的投票" - label: "隐藏结果" + export-results: + label: "导出" open: title: "开启投票" label: "开启" diff --git a/plugins/poll/config/locales/client.zh_TW.yml b/plugins/poll/config/locales/client.zh_TW.yml index 68e00b074c..02f7b48520 100644 --- a/plugins/poll/config/locales/client.zh_TW.yml +++ b/plugins/poll/config/locales/client.zh_TW.yml @@ -30,7 +30,8 @@ zh_TW: label: "顯示結果" hide-results: title: "返回到你的投票" - label: "隱藏結果" + export-results: + label: "匯出" open: title: "開啟投票" label: "開啟" diff --git a/plugins/poll/config/locales/server.ca.yml b/plugins/poll/config/locales/server.ca.yml index efae80584d..a897fe8a77 100644 --- a/plugins/poll/config/locales/server.ca.yml +++ b/plugins/poll/config/locales/server.ca.yml @@ -11,6 +11,7 @@ ca: poll_maximum_options: "Nombre màxim d'opcions permeses en una enquesta." poll_edit_window_mins: "Nombre de minuts després de la creació de la publicació durant els quals poden editar-se les enquestes." poll_minimum_trust_level_to_create: "Definiu el nivell de confiança mínim necessari per a crear enquestes." + poll_groupable_user_fields: "Conjunt de noms de camp d’usuari que es poden utilitzar per a agrupar i filtrar els resultats de la votació." poll: poll: "enquesta" invalid_argument: "El valor '%{value}' no és vàlid per a l'argument '%{argument}'." @@ -42,3 +43,5 @@ ca: insufficient_rights_to_create: "No teniu permís per a crear enquestes." email: link_to_poll: "Feu clic per a veure l'enquesta" + user_field: + no_data: "No hi ha dades" diff --git a/plugins/poll/config/locales/server.es.yml b/plugins/poll/config/locales/server.es.yml index ab67e2429d..3a8eb5fe3b 100644 --- a/plugins/poll/config/locales/server.es.yml +++ b/plugins/poll/config/locales/server.es.yml @@ -11,6 +11,8 @@ es: poll_maximum_options: "Número máximo de opciones permitidas en una encuesta." poll_edit_window_mins: "Número de minutos tras la creación de la publicación durante los cuales las encuestas pueden ser editadas." poll_minimum_trust_level_to_create: "Definir el nivel de confianza mínimo requerido para crear encuestas." + poll_groupable_user_fields: "Un grupo de nombres de campos de usuario que se pueden usar para agrupar y filtrar los resultados de la encuesta." + poll_export_data_explorer_query_id: "ID de la consulta del explorador de datos que se usa para exportar los resultados de la encuesta (0 para deshabilitar)." poll: poll: "encuesta" invalid_argument: "Valor inválido «%{value}» para el argumento «%{argument}»." @@ -42,3 +44,5 @@ es: insufficient_rights_to_create: "No tienes permitido crear encuestas." email: link_to_poll: "Haz clic para ver la encuesta." + user_field: + no_data: "No hay datos" diff --git a/plugins/poll/config/locales/server.he.yml b/plugins/poll/config/locales/server.he.yml index 859407858c..ec14634ce8 100644 --- a/plugins/poll/config/locales/server.he.yml +++ b/plugins/poll/config/locales/server.he.yml @@ -11,6 +11,8 @@ he: poll_maximum_options: "מספר האפשרויות המירבי המותר בסקר" poll_edit_window_mins: "מספר דקות אחרי יצירת פוסט במהלכן ניתן לערוך סקרים." poll_minimum_trust_level_to_create: "הגדרת רמת המהימנות המזערית הנדרשת ליצירת סקרים." + poll_groupable_user_fields: "רשימה של שמות משדה המשתמש שניתן להשתמש בהם לקיבוץ ולסינון תוצאות סקרים." + poll_export_data_explorer_query_id: "מזהה שאילתת חוקר הנתונים לשימוש לטובת ייצוא תוצאות הסקר (0 כדי להשבית)." poll: poll: "סקר" invalid_argument: "ערך שגוי ‚%{value}’ למשתנה ‚%{argument}’." @@ -46,3 +48,5 @@ he: insufficient_rights_to_create: "אין לך רשות ליצור סקרים." email: link_to_poll: "לחצו כדי לצפות בסקר." + user_field: + no_data: "אין נתונים" diff --git a/plugins/poll/config/locales/server.nl.yml b/plugins/poll/config/locales/server.nl.yml index 806d17ac66..67eab62603 100644 --- a/plugins/poll/config/locales/server.nl.yml +++ b/plugins/poll/config/locales/server.nl.yml @@ -11,6 +11,8 @@ nl: poll_maximum_options: "Maximale aantal toegestane opties in een poll." poll_edit_window_mins: "Aantal minuten na het aanmaken van een bericht waarin polls kunnen worden bewerkt." poll_minimum_trust_level_to_create: "Het minimale vertrouwensniveau dat nodig is om polls aan te maken." + poll_groupable_user_fields: "Een aantal gebruikersveldnamen die voor het groeperen en filteren van pollresultaten kunnen worden gebruikt." + poll_export_data_explorer_query_id: "ID van de te gebruiken gegevensverkennerquery voor het exporteren van pollresultaten (0 voor uitschakelen)." poll: poll: "poll" invalid_argument: "Ongeldige waarde '%{value}' voor argument '%{argument}'." @@ -42,3 +44,5 @@ nl: insufficient_rights_to_create: "U mag geen polls maken." email: link_to_poll: "Klik om de poll te bekijken." + user_field: + no_data: "Geen gegevens" diff --git a/plugins/poll/config/locales/server.pl_PL.yml b/plugins/poll/config/locales/server.pl_PL.yml index a31b3f5be0..27e33f9794 100644 --- a/plugins/poll/config/locales/server.pl_PL.yml +++ b/plugins/poll/config/locales/server.pl_PL.yml @@ -11,6 +11,8 @@ pl_PL: poll_maximum_options: "Maksymalna ilość dozwolonych opcji w ankiecie." poll_edit_window_mins: "Liczba minut po utworzeniu postu, podczas którego można edytować ankietę." poll_minimum_trust_level_to_create: "Minimalny poziom zaufania potrzebny do stworzenia ankiety." + poll_groupable_user_fields: "Zestaw nazw pól użytkownika, który może zostać użyty do grupowania i filtrowania wyników ankiet." + poll_export_data_explorer_query_id: "ID zapytania Data Explorera do używania w trakcie eksportowania wyników ankiet (0, by wyłączyć)." poll: poll: "ankieta" invalid_argument: "Nieprawidłowa wartość '%{value}' dla argumentu '%{argument}'." @@ -46,3 +48,5 @@ pl_PL: insufficient_rights_to_create: "Nie masz zezwolenia na tworzenie ankiet." email: link_to_poll: "Kliknij, aby zobaczyć ankietę." + user_field: + no_data: "Brak danych" diff --git a/plugins/poll/config/locales/server.pt.yml b/plugins/poll/config/locales/server.pt.yml index 7c622c3470..a16d9b4c9f 100644 --- a/plugins/poll/config/locales/server.pt.yml +++ b/plugins/poll/config/locales/server.pt.yml @@ -24,14 +24,14 @@ pt: other: "A sondagem com o nome %{name} deve ter menos que %{count} opções." default_poll_must_have_different_options: "A sondagem deve ter opções diferentes." named_poll_must_have_different_options: "A sondagem com o nome %{name} deve ter opções diferentes." - default_poll_with_multiple_choices_has_invalid_parameters: "Sondagem com escolha múltipla tem parâmetros inválidos." - named_poll_with_multiple_choices_has_invalid_parameters: "Sondagem com o nome %{name} com escolha múltipla tem parâmetros inválidos." + default_poll_with_multiple_choices_has_invalid_parameters: "A sondagem com escolhas múltiplas tem parâmetros inválidos." + named_poll_with_multiple_choices_has_invalid_parameters: "A sondagem com o nome %{name} com escolha múltipla tem parâmetros inválidos." requires_at_least_1_valid_option: "Deve selecionar pelo menos 1 opção válida." no_poll_with_this_name: "Nenhuma sondagem com o nome %{name} está associada a esta publicação." post_is_deleted: "Não é possível realizar ações em publicações eliminadas." user_cant_post_in_topic: "Não pode votar porque não pode publicar neste tópico." topic_must_be_open_to_vote: "O tópico tem que estar aberto para votar." - poll_must_be_open_to_vote: "A sondagem tem que estar aberta para votar." + poll_must_be_open_to_vote: "A votação deve estar aberta para votação." topic_must_be_open_to_toggle_status: "O tópico tem que estar aberto para alternar o estado." only_staff_or_op_can_toggle_status: "Apenas um membro da equipa de apoio ou o autor original pode alternar o estado da sondagem." insufficient_rights_to_create: "Não está autorizado para criar sondagens." diff --git a/public/500.pt.html b/public/500.pt.html index 277f7a8747..e4f7981f33 100644 --- a/public/500.pt.html +++ b/public/500.pt.html @@ -6,7 +6,7 @@

    Oops

    -

    O software que sustenta este fórum de discussão encontrou um problema inesperado. Pedimos desculpa pelo inconveniente.

    +

    O software que sustenta este fórum de discussão encontrou um problema inesperado. Nós pedimos desculpa pelo inconveniente.

    A informação detalhada sobre o erro foi registada, e foi gerada uma notificação automática. Nós iremos verificar o mesmo.

    Nenhuma ação adicional é necessária. No entanto, se a condição de erro persistir, pode fornecer detalhes adicionais, incluindo as etapas para reproduzir o erro, publicando um tópico de discussão na categoria de retorno do sítio.

    From 891b71bdf5acfb279520ddbc83bde5a1bd506cc6 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Thu, 5 Dec 2019 11:53:10 -0500 Subject: [PATCH 406/408] Fix release notes rake task It breaks when a commit message is "FIX:" --- lib/tasks/release_note.rake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/tasks/release_note.rake b/lib/tasks/release_note.rake index ba5cc88247..e39a6dcec2 100644 --- a/lib/tasks/release_note.rake +++ b/lib/tasks/release_note.rake @@ -47,8 +47,12 @@ def better(line) line = remove_prefix(line) line = escape_brackets(line) line[0] = '\#' if line[0] == '#' - line[0] = line[0].capitalize - "- " + line + if line[0] + line[0] = line[0].capitalize + "- " + line + else + nil + end end def remove_prefix(line) From f269e45978a108b964c64ca76550d730c8634d97 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Thu, 5 Dec 2019 10:59:36 -0700 Subject: [PATCH 407/408] DEV: Remove buffered rendering from popup-input-tips This is another refactoring in the multi-step process to remove all uses of our custom Render Buffer. Previous commit: fe9293b8b554ab79636faa61a4756d5ff514a233 in this series. This commit affects the display of popup input tips, like in the composer when the title is too short or too long. It is just a refactor and does not change any functionality. --- .../components/popup-input-tip.js.es6 | 115 +++++++++--------- .../templates/components/popup-input-tip.hbs | 1 + 2 files changed, 57 insertions(+), 59 deletions(-) create mode 100644 app/assets/javascripts/discourse/templates/components/popup-input-tip.hbs diff --git a/app/assets/javascripts/discourse/components/popup-input-tip.js.es6 b/app/assets/javascripts/discourse/components/popup-input-tip.js.es6 index 3f3c3d514b..6254fe2f1e 100644 --- a/app/assets/javascripts/discourse/components/popup-input-tip.js.es6 +++ b/app/assets/javascripts/discourse/components/popup-input-tip.js.es6 @@ -5,70 +5,67 @@ import { default as discourseComputed, observes } from "discourse-common/utils/decorators"; -import { bufferedRender } from "discourse-common/lib/buffered-render"; -export default Component.extend( - bufferedRender({ - classNameBindings: [":popup-tip", "good", "bad", "lastShownAt::hide"], - animateAttribute: null, - bouncePixels: 6, - bounceDelay: 100, - rerenderTriggers: ["validation.reason"], +export default Component.extend({ + classNameBindings: [":popup-tip", "good", "bad", "lastShownAt::hide"], + animateAttribute: null, + bouncePixels: 6, + bounceDelay: 100, + rerenderTriggers: ["validation.reason"], + closeIcon: `${iconHTML("times-circle")}`.htmlSafe(), + tipReason: null, - click() { - this.set("shownAt", null); - this.set("validation.lastShownAt", null); - }, + click() { + this.set("shownAt", null); + this.set("validation.lastShownAt", null); + }, - bad: alias("validation.failed"), - good: not("bad"), + bad: alias("validation.failed"), + good: not("bad"), - @discourseComputed("shownAt", "validation.lastShownAt") - lastShownAt(shownAt, lastShownAt) { - return shownAt || lastShownAt; - }, + @discourseComputed("shownAt", "validation.lastShownAt") + lastShownAt(shownAt, lastShownAt) { + return shownAt || lastShownAt; + }, - @observes("lastShownAt") - bounce() { - if (this.lastShownAt) { - var $elem = $(this.element); - if (!this.animateAttribute) { - this.animateAttribute = - $elem.css("left") === "auto" ? "right" : "left"; - } - if (this.animateAttribute === "left") { - this.bounceLeft($elem); - } else { - this.bounceRight($elem); - } + @observes("lastShownAt") + bounce() { + if (this.lastShownAt) { + var $elem = $(this.element); + if (!this.animateAttribute) { + this.animateAttribute = $elem.css("left") === "auto" ? "right" : "left"; } - }, - - buildBuffer(buffer) { - const reason = this.get("validation.reason"); - if (!reason) { - return; - } - - buffer.push( - `${iconHTML("times-circle")}${reason}` - ); - }, - - bounceLeft($elem) { - for (var i = 0; i < 5; i++) { - $elem - .animate({ left: "+=" + this.bouncePixels }, this.bounceDelay) - .animate({ left: "-=" + this.bouncePixels }, this.bounceDelay); - } - }, - - bounceRight($elem) { - for (var i = 0; i < 5; i++) { - $elem - .animate({ right: "-=" + this.bouncePixels }, this.bounceDelay) - .animate({ right: "+=" + this.bouncePixels }, this.bounceDelay); + if (this.animateAttribute === "left") { + this.bounceLeft($elem); + } else { + this.bounceRight($elem); } } - }) -); + }, + + didReceiveAttrs() { + this._super(...arguments); + let reason = this.get("validation.reason"); + if (reason) { + this.set("tipReason", `${reason}`.htmlSafe()); + } else { + this.set("tipReason", null); + } + }, + + bounceLeft($elem) { + for (var i = 0; i < 5; i++) { + $elem + .animate({ left: "+=" + this.bouncePixels }, this.bounceDelay) + .animate({ left: "-=" + this.bouncePixels }, this.bounceDelay); + } + }, + + bounceRight($elem) { + for (var i = 0; i < 5; i++) { + $elem + .animate({ right: "-=" + this.bouncePixels }, this.bounceDelay) + .animate({ right: "+=" + this.bouncePixels }, this.bounceDelay); + } + } +}); diff --git a/app/assets/javascripts/discourse/templates/components/popup-input-tip.hbs b/app/assets/javascripts/discourse/templates/components/popup-input-tip.hbs new file mode 100644 index 0000000000..ded803482f --- /dev/null +++ b/app/assets/javascripts/discourse/templates/components/popup-input-tip.hbs @@ -0,0 +1 @@ +{{closeIcon}}{{tipReason}} From 2987a46f48c6f135aee512febedc522514d7d51a Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Thu, 5 Dec 2019 13:50:33 -0500 Subject: [PATCH 408/408] Version bump to v2.4.0.beta8 --- lib/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/version.rb b/lib/version.rb index 748dd2f438..61eeb63112 100644 --- a/lib/version.rb +++ b/lib/version.rb @@ -9,7 +9,7 @@ module Discourse MAJOR = 2 MINOR = 4 TINY = 0 - PRE = 'beta7' + PRE = 'beta8' STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.') end