diff --git a/app/Jobs/StatusPipeline/StatusEntityLexer.php b/app/Jobs/StatusPipeline/StatusEntityLexer.php
index a64ca7602..1c5b172b6 100644
--- a/app/Jobs/StatusPipeline/StatusEntityLexer.php
+++ b/app/Jobs/StatusPipeline/StatusEntityLexer.php
@@ -107,9 +107,13 @@ class StatusEntityLexer implements ShouldQueue
}
DB::transaction(function () use ($status, $tag) {
$slug = str_slug($tag, '-', false);
- $hashtag = Hashtag::firstOrCreate(
- ['name' => $tag, 'slug' => $slug]
- );
+ $hashtag = Hashtag::where('slug', $slug)->first();
+ if (!$hashtag) {
+ $hashtag = Hashtag::create(
+ ['name' => $tag, 'slug' => $slug]
+ );
+ }
+
StatusHashtag::firstOrCreate(
[
'status_id' => $status->id,
diff --git a/app/Util/Media/Image.php b/app/Util/Media/Image.php
index cbc1efe67..9048fbc31 100644
--- a/app/Util/Media/Image.php
+++ b/app/Util/Media/Image.php
@@ -72,6 +72,8 @@ class Image
return [
'dimensions' => $this->orientations()[$orientation],
'orientation' => $orientation,
+ 'width_original' => $width,
+ 'height_original' => $height,
];
}
@@ -157,9 +159,14 @@ class Image
$media->metadata = json_encode($meta);
}
- $img->resize($aspect['width'], $aspect['height'], function ($constraint) {
- $constraint->aspectRatio();
- });
+ if (
+ ($ratio['width_original'] > $aspect['width'])
+ || ($ratio['height_original'] > $aspect['height'])
+ ) {
+ $img->resize($aspect['width'], $aspect['height'], function ($constraint) {
+ $constraint->aspectRatio();
+ });
+ }
}
$converted = $this->setBaseName($path, $thumbnail, $img->extension);
$newPath = storage_path('app/'.$converted['path']);
diff --git a/public/_lang/ar.json b/public/_lang/ar.json
index dee919301..d88d5693b 100644
--- a/public/_lang/ar.json
+++ b/public/_lang/ar.json
@@ -42,7 +42,7 @@
"drive": "\u0648\u0650\u062d\u062f\u064e\u0629\u064f \u0627\u0644\u062a\u0651\u064e\u062e\u0632\u064a\u0646",
"settings": "\u0627\u0644\u0625\u0639\u062f\u064e\u0627\u062f\u064e\u0627\u062a",
"compose": "\u0625\u0646\u0634\u0627\u0621\u064f \u062c\u064e\u062f\u064a\u062f",
- "logout": "Logout",
+ "logout": "\u062a\u064e\u0633\u062c\u064a\u0644\u064f \u0627\u0644\u062e\u064f\u0631\u064f\u0648\u062c",
"about": "\u062d\u064e\u0648\u0644",
"help": "\u0627\u0644\u0645\u064f\u0633\u0627\u0639\u064e\u062f\u064e\u0629",
"language": "\u0627\u0644\u0644\u0651\u064f\u063a\u064e\u0629",
diff --git a/public/_lang/bs.json b/public/_lang/bs.json
new file mode 100644
index 000000000..1acb08636
--- /dev/null
+++ b/public/_lang/bs.json
@@ -0,0 +1,150 @@
+{
+ "common": {
+ "comment": "Comment",
+ "commented": "Commented",
+ "comments": "Comments",
+ "like": "Like",
+ "liked": "Liked",
+ "likes": "Likes",
+ "share": "Share",
+ "shared": "Shared",
+ "shares": "Shares",
+ "unshare": "Unshare",
+ "cancel": "Cancel",
+ "copyLink": "Copy Link",
+ "delete": "Delete",
+ "error": "Error",
+ "errorMsg": "Something went wrong. Please try again later.",
+ "oops": "Oops!",
+ "other": "Other",
+ "readMore": "Read more",
+ "success": "Success",
+ "sensitive": "Sensitive",
+ "sensitiveContent": "Sensitive Content",
+ "sensitiveContentWarning": "This post may contain sensitive content"
+ },
+ "site": {
+ "terms": "Terms of Use",
+ "privacy": "Privacy Policy"
+ },
+ "navmenu": {
+ "search": "Search",
+ "admin": "Admin Dashboard",
+ "homeFeed": "Home Feed",
+ "localFeed": "Local Feed",
+ "globalFeed": "Global Feed",
+ "discover": "Discover",
+ "directMessages": "Direct Messages",
+ "notifications": "Notifications",
+ "groups": "Groups",
+ "stories": "Stories",
+ "profile": "Profile",
+ "drive": "Drive",
+ "settings": "Settings",
+ "compose": "Create New",
+ "logout": "Logout",
+ "about": "About",
+ "help": "Help",
+ "language": "Language",
+ "privacy": "Privacy",
+ "terms": "Terms",
+ "backToPreviousDesign": "Go back to previous design"
+ },
+ "directMessages": {
+ "inbox": "Inbox",
+ "sent": "Sent",
+ "requests": "Requests"
+ },
+ "notifications": {
+ "liked": "liked your",
+ "commented": "commented on your",
+ "reacted": "reacted to your",
+ "shared": "shared your",
+ "tagged": "tagged you in a",
+ "updatedA": "updated a",
+ "sentA": "sent a",
+ "followed": "followed",
+ "mentioned": "mentioned",
+ "you": "you",
+ "yourApplication": "Your application to join",
+ "applicationApproved": "was approved!",
+ "applicationRejected": "was rejected. You can re-apply to join in 6 months.",
+ "dm": "dm",
+ "groupPost": "group post",
+ "modlog": "modlog",
+ "post": "post",
+ "story": "story"
+ },
+ "post": {
+ "shareToFollowers": "Share to followers",
+ "shareToOther": "Share to other",
+ "noLikes": "No likes yet",
+ "uploading": "Uploading"
+ },
+ "profile": {
+ "posts": "Posts",
+ "followers": "Followers",
+ "following": "Following",
+ "admin": "Admin",
+ "collections": "Collections",
+ "follow": "Follow",
+ "unfollow": "Unfollow",
+ "editProfile": "Edit Profile",
+ "followRequested": "Follow Requested",
+ "joined": "Joined",
+ "emptyCollections": "We can't seem to find any collections",
+ "emptyPosts": "We can't seem to find any posts"
+ },
+ "menu": {
+ "viewPost": "View Post",
+ "viewProfile": "View Profile",
+ "moderationTools": "Moderation Tools",
+ "report": "Report",
+ "archive": "Archive",
+ "unarchive": "Unarchive",
+ "embed": "Embed",
+ "selectOneOption": "Select one of the following options",
+ "unlistFromTimelines": "Unlist from Timelines",
+ "addCW": "Add Content Warning",
+ "removeCW": "Remove Content Warning",
+ "markAsSpammer": "Mark as Spammer",
+ "markAsSpammerText": "Unlist + CW existing and future posts",
+ "spam": "Spam",
+ "sensitive": "Sensitive Content",
+ "abusive": "Abusive or Harmful",
+ "underageAccount": "Underage Account",
+ "copyrightInfringement": "Copyright Infringement",
+ "impersonation": "Impersonation",
+ "scamOrFraud": "Scam or Fraud",
+ "confirmReport": "Confirm Report",
+ "confirmReportText": "Are you sure you want to report this post?",
+ "reportSent": "Report Sent!",
+ "reportSentText": "We have successfully received your report.",
+ "reportSentError": "There was an issue reporting this post.",
+ "modAddCWConfirm": "Are you sure you want to add a content warning to this post?",
+ "modCWSuccess": "Successfully added content warning",
+ "modRemoveCWConfirm": "Are you sure you want to remove the content warning on this post?",
+ "modRemoveCWSuccess": "Successfully removed content warning",
+ "modUnlistConfirm": "Are you sure you want to unlist this post?",
+ "modUnlistSuccess": "Successfully unlisted post",
+ "modMarkAsSpammerConfirm": "Are you sure you want to mark this user as a spammer? All existing and future posts will be unlisted on timelines and a content warning will be applied.",
+ "modMarkAsSpammerSuccess": "Successfully marked account as spammer",
+ "toFollowers": "to Followers",
+ "showCaption": "Show Caption",
+ "showLikes": "Show Likes",
+ "compactMode": "Compact Mode",
+ "embedConfirmText": "By using this embed, you agree to our",
+ "deletePostConfirm": "Are you sure you want to delete this post?",
+ "archivePostConfirm": "Are you sure you want to archive this post?",
+ "unarchivePostConfirm": "Are you sure you want to unarchive this post?"
+ },
+ "story": {
+ "add": "Add Story"
+ },
+ "timeline": {
+ "peopleYouMayKnow": "People you may know"
+ },
+ "hashtags": {
+ "emptyFeed": "We can't seem to find any posts for this hashtag"
+ }
+}
\ No newline at end of file
diff --git a/public/_lang/cs.json b/public/_lang/cs.json
index f82925752..fcf926ddf 100644
--- a/public/_lang/cs.json
+++ b/public/_lang/cs.json
@@ -42,7 +42,7 @@
"drive": "\u00dalo\u017ei\u0161t\u011b",
"settings": "Nastaven\u00ed",
"compose": "Vytvo\u0159it nov\u00fd",
- "logout": "Logout",
+ "logout": "Odhl\u00e1sit se",
"about": "O aplikaci",
"help": "N\u00e1pov\u011bda",
"language": "Jazyk",
@@ -91,9 +91,9 @@
"unfollow": "P\u0159estat sledovat",
"editProfile": "Upravit profil",
"followRequested": "Sledov\u00e1n\u00ed vy\u017e\u00e1d\u00e1no",
- "joined": "Joined",
- "emptyCollections": "We can't seem to find any collections",
- "emptyPosts": "We can't seem to find any posts"
+ "joined": "P\u0159ipojen/a",
+ "emptyCollections": "Zd\u00e1 se, \u017ee nelze naj\u00edt \u017e\u00e1dn\u00e9 kolekce",
+ "emptyPosts": "Zd\u00e1 se, \u017ee nelze naj\u00edt \u017e\u00e1dn\u00e9 p\u0159\u00edsp\u011bvky"
},
"menu": {
"viewPost": "Zobrazit p\u0159\u00edsp\u011bvek",
@@ -114,7 +114,7 @@
"abusive": "Ur\u00e1\u017eliv\u00e9 nebo \u0161kodliv\u00e9",
"underageAccount": "\u00da\u010det nezletil\u00fdch",
"copyrightInfringement": "Poru\u0161en\u00ed autorsk\u00fdch pr\u00e1v",
- "impersonation": "Impersonation",
+ "impersonation": "P\u0159edst\u00edr\u00e1n\u00ed identity",
"scamOrFraud": "Podvod",
"confirmReport": "Potvrdit hl\u00e1\u0161en\u00ed",
"confirmReportText": "Jste si jisti, \u017ee chcete nahl\u00e1sit tento p\u0159\u00edsp\u011bvek?",
@@ -129,7 +129,7 @@
"modUnlistSuccess": "P\u0159\u00edsp\u011bvek byl odebr\u00e1n z \u010dasov\u00e9 osy",
"modMarkAsSpammerConfirm": "Jste si jisti, \u017ee chcete tohoto u\u017eivatele ozna\u010dit jako spammer? V\u0161echny existuj\u00edc\u00ed a budouc\u00ed p\u0159\u00edsp\u011bvky budou vy\u0159azeny z \u010dasov\u00fdch os a bude na n\u011b aplikov\u00e1no varov\u00e1n\u00ed o obsahu.",
"modMarkAsSpammerSuccess": "\u00da\u010det byl ozna\u010den jako spammer",
- "toFollowers": "to Followers",
+ "toFollowers": "sleduj\u00edc\u00edm",
"showCaption": "Uk\u00e1zat popisek",
"showLikes": "Zobrazit To se mi l\u00edb\u00ed",
"compactMode": "Kompaktn\u00ed re\u017eim",
diff --git a/public/_lang/de.json b/public/_lang/de.json
index 41874694d..653f352dc 100644
--- a/public/_lang/de.json
+++ b/public/_lang/de.json
@@ -42,7 +42,7 @@
"drive": "Festplatte",
"settings": "Einstellungen",
"compose": "Neu erstellen",
- "logout": "Logout",
+ "logout": "Ausloggen",
"about": "\u00dcber uns",
"help": "Hilfe",
"language": "Sprache",
diff --git a/public/_lang/eu.json b/public/_lang/eu.json
index 8bbc9b955..4561c0e7f 100644
--- a/public/_lang/eu.json
+++ b/public/_lang/eu.json
@@ -42,7 +42,7 @@
"drive": "Unitatea",
"settings": "Ezarpenak",
"compose": "Sortu berria",
- "logout": "Logout",
+ "logout": "Saioa itxi",
"about": "Honi buruz",
"help": "Laguntza",
"language": "Hizkuntza",
@@ -104,11 +104,11 @@
"unarchive": "Desartxibatu",
"embed": "Kapsulatu",
"selectOneOption": "Hautatu aukera hauetako bat",
- "unlistFromTimelines": "Unlist from Timelines",
+ "unlistFromTimelines": "Denbora-lerroetatik ezkutatu",
"addCW": "Gehitu edukiaren abisua",
"removeCW": "Kendu edukiaren abisua",
"markAsSpammer": "Markatu zabor-bidaltzaile gisa",
- "markAsSpammerText": "Unlist + CW existing and future posts",
+ "markAsSpammerText": "Ezkutatu + edukiaren abisua jarri etorkizuneko bidalketei",
"spam": "Zaborra",
"sensitive": "Eduki hunkigarria",
"abusive": "Bortxazko edo Mingarria",
@@ -125,15 +125,15 @@
"modCWSuccess": "Edukiaren abisua ondo gehitu da",
"modRemoveCWConfirm": "Ziur al zaude edukiaren abisua kendu nahi duzula bidalketa honetarako?",
"modRemoveCWSuccess": "Edukiaren abisua ondo kendu da",
- "modUnlistConfirm": "Are you sure you want to unlist this post?",
- "modUnlistSuccess": "Successfully unlisted post",
- "modMarkAsSpammerConfirm": "Are you sure you want to mark this user as a spammer? All existing and future posts will be unlisted on timelines and a content warning will be applied.",
+ "modUnlistConfirm": "Ziur al zaude bidalketa hau ezkutatu nahi duzula?",
+ "modUnlistSuccess": "Bidalketa ondo ezkutatu da",
+ "modMarkAsSpammerConfirm": "Ziur al zaude erabiltzaile hau zabor-bidaltzaile bezala markatu nahi duzula? Dagoeneko bidali dituen eta etorkizunean bidaliko dituen bidalketak denbora-lerroetatik ezkutatuko dira eta edukiaren abisua ezarriko zaie.",
"modMarkAsSpammerSuccess": "Kontua zabor-bidaltzaile gisa ondo markatu da",
"toFollowers": "jarraitzaileei",
"showCaption": "Irudiaren azalpena erakutsi",
"showLikes": "Erakutsi atsegiteak",
"compactMode": "Modu trinkoa",
- "embedConfirmText": "By using this embed, you agree to our",
+ "embedConfirmText": "Kapsulatze hau erabiliz, onartzen dituzu gure",
"deletePostConfirm": "Ziur al zaude bidalketa hau ezabatu nahi duzula?",
"archivePostConfirm": "Ziur al zaude bidalketa hau artxibatu nahi duzula?",
"unarchivePostConfirm": "Ziur bidalketa hau desartxibatu nahi duzula?"
diff --git a/public/_lang/fa.json b/public/_lang/fa.json
index ad2a6dbbb..8033bad73 100644
--- a/public/_lang/fa.json
+++ b/public/_lang/fa.json
@@ -92,8 +92,8 @@
"editProfile": "\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0647",
"followRequested": "\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0634\u062f",
"joined": "\u067e\u06cc\u0648\u0633\u062a",
- "emptyCollections": "We can't seem to find any collections",
- "emptyPosts": "We can't seem to find any posts"
+ "emptyCollections": "\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u06cc\u0686 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645",
+ "emptyPosts": "\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u06cc\u0686 \u0641\u0631\u0633\u062a\u0647\u200c\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645"
},
"menu": {
"viewPost": "\u0646\u0645\u0627\u06cc\u0634 \u0641\u0631\u0633\u062a\u0647",
@@ -112,7 +112,7 @@
"spam": "\u0647\u0631\u0632\u0646\u0627\u0645\u0647",
"sensitive": "\u0645\u062d\u062a\u0648\u0627\u06cc \u062d\u0633\u0627\u0633",
"abusive": "\u062a\u0648\u0647\u06cc\u0646\u200c\u0622\u0645\u06cc\u0632 \u0648 \u0645\u0636\u0631",
- "underageAccount": "Underage Account",
+ "underageAccount": "\u062d\u0633\u0627\u0628 \u0632\u06cc\u0631 \u0633\u0646 \u0642\u0627\u0646\u0648\u0646\u06cc",
"copyrightInfringement": "\u0646\u0642\u0636 \u0642\u0648\u0627\u0646\u06cc\u0646 \u062d\u0642 \u062a\u06a9\u062b\u06cc\u0631",
"impersonation": "\u062c\u0639\u0644 \u0647\u0648\u06cc\u062a",
"scamOrFraud": "Scam or Fraud",
@@ -145,6 +145,6 @@
"peopleYouMayKnow": "\u0627\u0641\u0631\u0627\u062f\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0634\u0646\u0627\u0633\u06cc\u062f"
},
"hashtags": {
- "emptyFeed": "We can't seem to find any posts for this hashtag"
+ "emptyFeed": "\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0686\u06cc\u0632\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0647\u0634\u062a\u06af \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645"
}
}
\ No newline at end of file
diff --git a/public/_lang/hi.json b/public/_lang/hi.json
new file mode 100644
index 000000000..1acb08636
--- /dev/null
+++ b/public/_lang/hi.json
@@ -0,0 +1,150 @@
+{
+ "common": {
+ "comment": "Comment",
+ "commented": "Commented",
+ "comments": "Comments",
+ "like": "Like",
+ "liked": "Liked",
+ "likes": "Likes",
+ "share": "Share",
+ "shared": "Shared",
+ "shares": "Shares",
+ "unshare": "Unshare",
+ "cancel": "Cancel",
+ "copyLink": "Copy Link",
+ "delete": "Delete",
+ "error": "Error",
+ "errorMsg": "Something went wrong. Please try again later.",
+ "oops": "Oops!",
+ "other": "Other",
+ "readMore": "Read more",
+ "success": "Success",
+ "sensitive": "Sensitive",
+ "sensitiveContent": "Sensitive Content",
+ "sensitiveContentWarning": "This post may contain sensitive content"
+ },
+ "site": {
+ "terms": "Terms of Use",
+ "privacy": "Privacy Policy"
+ },
+ "navmenu": {
+ "search": "Search",
+ "admin": "Admin Dashboard",
+ "homeFeed": "Home Feed",
+ "localFeed": "Local Feed",
+ "globalFeed": "Global Feed",
+ "discover": "Discover",
+ "directMessages": "Direct Messages",
+ "notifications": "Notifications",
+ "groups": "Groups",
+ "stories": "Stories",
+ "profile": "Profile",
+ "drive": "Drive",
+ "settings": "Settings",
+ "compose": "Create New",
+ "logout": "Logout",
+ "about": "About",
+ "help": "Help",
+ "language": "Language",
+ "privacy": "Privacy",
+ "terms": "Terms",
+ "backToPreviousDesign": "Go back to previous design"
+ },
+ "directMessages": {
+ "inbox": "Inbox",
+ "sent": "Sent",
+ "requests": "Requests"
+ },
+ "notifications": {
+ "liked": "liked your",
+ "commented": "commented on your",
+ "reacted": "reacted to your",
+ "shared": "shared your",
+ "tagged": "tagged you in a",
+ "updatedA": "updated a",
+ "sentA": "sent a",
+ "followed": "followed",
+ "mentioned": "mentioned",
+ "you": "you",
+ "yourApplication": "Your application to join",
+ "applicationApproved": "was approved!",
+ "applicationRejected": "was rejected. You can re-apply to join in 6 months.",
+ "dm": "dm",
+ "groupPost": "group post",
+ "modlog": "modlog",
+ "post": "post",
+ "story": "story"
+ },
+ "post": {
+ "shareToFollowers": "Share to followers",
+ "shareToOther": "Share to other",
+ "noLikes": "No likes yet",
+ "uploading": "Uploading"
+ },
+ "profile": {
+ "posts": "Posts",
+ "followers": "Followers",
+ "following": "Following",
+ "admin": "Admin",
+ "collections": "Collections",
+ "follow": "Follow",
+ "unfollow": "Unfollow",
+ "editProfile": "Edit Profile",
+ "followRequested": "Follow Requested",
+ "joined": "Joined",
+ "emptyCollections": "We can't seem to find any collections",
+ "emptyPosts": "We can't seem to find any posts"
+ },
+ "menu": {
+ "viewPost": "View Post",
+ "viewProfile": "View Profile",
+ "moderationTools": "Moderation Tools",
+ "report": "Report",
+ "archive": "Archive",
+ "unarchive": "Unarchive",
+ "embed": "Embed",
+ "selectOneOption": "Select one of the following options",
+ "unlistFromTimelines": "Unlist from Timelines",
+ "addCW": "Add Content Warning",
+ "removeCW": "Remove Content Warning",
+ "markAsSpammer": "Mark as Spammer",
+ "markAsSpammerText": "Unlist + CW existing and future posts",
+ "spam": "Spam",
+ "sensitive": "Sensitive Content",
+ "abusive": "Abusive or Harmful",
+ "underageAccount": "Underage Account",
+ "copyrightInfringement": "Copyright Infringement",
+ "impersonation": "Impersonation",
+ "scamOrFraud": "Scam or Fraud",
+ "confirmReport": "Confirm Report",
+ "confirmReportText": "Are you sure you want to report this post?",
+ "reportSent": "Report Sent!",
+ "reportSentText": "We have successfully received your report.",
+ "reportSentError": "There was an issue reporting this post.",
+ "modAddCWConfirm": "Are you sure you want to add a content warning to this post?",
+ "modCWSuccess": "Successfully added content warning",
+ "modRemoveCWConfirm": "Are you sure you want to remove the content warning on this post?",
+ "modRemoveCWSuccess": "Successfully removed content warning",
+ "modUnlistConfirm": "Are you sure you want to unlist this post?",
+ "modUnlistSuccess": "Successfully unlisted post",
+ "modMarkAsSpammerConfirm": "Are you sure you want to mark this user as a spammer? All existing and future posts will be unlisted on timelines and a content warning will be applied.",
+ "modMarkAsSpammerSuccess": "Successfully marked account as spammer",
+ "toFollowers": "to Followers",
+ "showCaption": "Show Caption",
+ "showLikes": "Show Likes",
+ "compactMode": "Compact Mode",
+ "embedConfirmText": "By using this embed, you agree to our",
+ "deletePostConfirm": "Are you sure you want to delete this post?",
+ "archivePostConfirm": "Are you sure you want to archive this post?",
+ "unarchivePostConfirm": "Are you sure you want to unarchive this post?"
+ },
+ "story": {
+ "add": "Add Story"
+ },
+ "timeline": {
+ "peopleYouMayKnow": "People you may know"
+ },
+ "hashtags": {
+ "emptyFeed": "We can't seem to find any posts for this hashtag"
+ }
+}
\ No newline at end of file
diff --git a/public/_lang/hr.json b/public/_lang/hr.json
new file mode 100644
index 000000000..1acb08636
--- /dev/null
+++ b/public/_lang/hr.json
@@ -0,0 +1,150 @@
+{
+ "common": {
+ "comment": "Comment",
+ "commented": "Commented",
+ "comments": "Comments",
+ "like": "Like",
+ "liked": "Liked",
+ "likes": "Likes",
+ "share": "Share",
+ "shared": "Shared",
+ "shares": "Shares",
+ "unshare": "Unshare",
+ "cancel": "Cancel",
+ "copyLink": "Copy Link",
+ "delete": "Delete",
+ "error": "Error",
+ "errorMsg": "Something went wrong. Please try again later.",
+ "oops": "Oops!",
+ "other": "Other",
+ "readMore": "Read more",
+ "success": "Success",
+ "sensitive": "Sensitive",
+ "sensitiveContent": "Sensitive Content",
+ "sensitiveContentWarning": "This post may contain sensitive content"
+ },
+ "site": {
+ "terms": "Terms of Use",
+ "privacy": "Privacy Policy"
+ },
+ "navmenu": {
+ "search": "Search",
+ "admin": "Admin Dashboard",
+ "homeFeed": "Home Feed",
+ "localFeed": "Local Feed",
+ "globalFeed": "Global Feed",
+ "discover": "Discover",
+ "directMessages": "Direct Messages",
+ "notifications": "Notifications",
+ "groups": "Groups",
+ "stories": "Stories",
+ "profile": "Profile",
+ "drive": "Drive",
+ "settings": "Settings",
+ "compose": "Create New",
+ "logout": "Logout",
+ "about": "About",
+ "help": "Help",
+ "language": "Language",
+ "privacy": "Privacy",
+ "terms": "Terms",
+ "backToPreviousDesign": "Go back to previous design"
+ },
+ "directMessages": {
+ "inbox": "Inbox",
+ "sent": "Sent",
+ "requests": "Requests"
+ },
+ "notifications": {
+ "liked": "liked your",
+ "commented": "commented on your",
+ "reacted": "reacted to your",
+ "shared": "shared your",
+ "tagged": "tagged you in a",
+ "updatedA": "updated a",
+ "sentA": "sent a",
+ "followed": "followed",
+ "mentioned": "mentioned",
+ "you": "you",
+ "yourApplication": "Your application to join",
+ "applicationApproved": "was approved!",
+ "applicationRejected": "was rejected. You can re-apply to join in 6 months.",
+ "dm": "dm",
+ "groupPost": "group post",
+ "modlog": "modlog",
+ "post": "post",
+ "story": "story"
+ },
+ "post": {
+ "shareToFollowers": "Share to followers",
+ "shareToOther": "Share to other",
+ "noLikes": "No likes yet",
+ "uploading": "Uploading"
+ },
+ "profile": {
+ "posts": "Posts",
+ "followers": "Followers",
+ "following": "Following",
+ "admin": "Admin",
+ "collections": "Collections",
+ "follow": "Follow",
+ "unfollow": "Unfollow",
+ "editProfile": "Edit Profile",
+ "followRequested": "Follow Requested",
+ "joined": "Joined",
+ "emptyCollections": "We can't seem to find any collections",
+ "emptyPosts": "We can't seem to find any posts"
+ },
+ "menu": {
+ "viewPost": "View Post",
+ "viewProfile": "View Profile",
+ "moderationTools": "Moderation Tools",
+ "report": "Report",
+ "archive": "Archive",
+ "unarchive": "Unarchive",
+ "embed": "Embed",
+ "selectOneOption": "Select one of the following options",
+ "unlistFromTimelines": "Unlist from Timelines",
+ "addCW": "Add Content Warning",
+ "removeCW": "Remove Content Warning",
+ "markAsSpammer": "Mark as Spammer",
+ "markAsSpammerText": "Unlist + CW existing and future posts",
+ "spam": "Spam",
+ "sensitive": "Sensitive Content",
+ "abusive": "Abusive or Harmful",
+ "underageAccount": "Underage Account",
+ "copyrightInfringement": "Copyright Infringement",
+ "impersonation": "Impersonation",
+ "scamOrFraud": "Scam or Fraud",
+ "confirmReport": "Confirm Report",
+ "confirmReportText": "Are you sure you want to report this post?",
+ "reportSent": "Report Sent!",
+ "reportSentText": "We have successfully received your report.",
+ "reportSentError": "There was an issue reporting this post.",
+ "modAddCWConfirm": "Are you sure you want to add a content warning to this post?",
+ "modCWSuccess": "Successfully added content warning",
+ "modRemoveCWConfirm": "Are you sure you want to remove the content warning on this post?",
+ "modRemoveCWSuccess": "Successfully removed content warning",
+ "modUnlistConfirm": "Are you sure you want to unlist this post?",
+ "modUnlistSuccess": "Successfully unlisted post",
+ "modMarkAsSpammerConfirm": "Are you sure you want to mark this user as a spammer? All existing and future posts will be unlisted on timelines and a content warning will be applied.",
+ "modMarkAsSpammerSuccess": "Successfully marked account as spammer",
+ "toFollowers": "to Followers",
+ "showCaption": "Show Caption",
+ "showLikes": "Show Likes",
+ "compactMode": "Compact Mode",
+ "embedConfirmText": "By using this embed, you agree to our",
+ "deletePostConfirm": "Are you sure you want to delete this post?",
+ "archivePostConfirm": "Are you sure you want to archive this post?",
+ "unarchivePostConfirm": "Are you sure you want to unarchive this post?"
+ },
+ "story": {
+ "add": "Add Story"
+ },
+ "timeline": {
+ "peopleYouMayKnow": "People you may know"
+ },
+ "hashtags": {
+ "emptyFeed": "We can't seem to find any posts for this hashtag"
+ }
+}
\ No newline at end of file
diff --git a/public/_lang/it.json b/public/_lang/it.json
index afdbb811b..5e30d2e69 100644
--- a/public/_lang/it.json
+++ b/public/_lang/it.json
@@ -3,7 +3,7 @@
"comment": "Commenta",
"commented": "Commentato",
"comments": "Commenti",
- "like": "Mi piace",
+ "like": "Like",
"liked": "Like aggiunto",
"likes": "Tutti i Like",
"share": "Condividi",
@@ -25,7 +25,7 @@
},
"site": {
"terms": "Termini di Utilizzo",
- "privacy": "Informativa sulla Privacy"
+ "privacy": "Informativa Privacy"
},
"navmenu": {
"search": "Cerca",
@@ -42,9 +42,9 @@
"drive": "Drive",
"settings": "Impostazioni",
"compose": "Crea Nuovo",
- "logout": "Logout",
+ "logout": "Esci",
"about": "Info",
- "help": "Aiuto",
+ "help": "Supporto",
"language": "Lingua",
"privacy": "Privacy",
"terms": "Condizioni",
@@ -92,8 +92,8 @@
"editProfile": "Modifica profilo",
"followRequested": "Richiesta in attesa",
"joined": "Iscritto",
- "emptyCollections": "We can't seem to find any collections",
- "emptyPosts": "We can't seem to find any posts"
+ "emptyCollections": "Non riusciamo a trovare alcuna collezione",
+ "emptyPosts": "Non riusciamo a trovare alcun post"
},
"menu": {
"viewPost": "Mostra Post",
@@ -145,6 +145,6 @@
"peopleYouMayKnow": "Persone che potresti conoscere"
},
"hashtags": {
- "emptyFeed": "We can't seem to find any posts for this hashtag"
+ "emptyFeed": "Non riusciamo a trovare alcun post con questo hashtag"
}
}
\ No newline at end of file
diff --git a/public/_lang/me.json b/public/_lang/me.json
new file mode 100644
index 000000000..1acb08636
--- /dev/null
+++ b/public/_lang/me.json
@@ -0,0 +1,150 @@
+{
+ "common": {
+ "comment": "Comment",
+ "commented": "Commented",
+ "comments": "Comments",
+ "like": "Like",
+ "liked": "Liked",
+ "likes": "Likes",
+ "share": "Share",
+ "shared": "Shared",
+ "shares": "Shares",
+ "unshare": "Unshare",
+ "cancel": "Cancel",
+ "copyLink": "Copy Link",
+ "delete": "Delete",
+ "error": "Error",
+ "errorMsg": "Something went wrong. Please try again later.",
+ "oops": "Oops!",
+ "other": "Other",
+ "readMore": "Read more",
+ "success": "Success",
+ "sensitive": "Sensitive",
+ "sensitiveContent": "Sensitive Content",
+ "sensitiveContentWarning": "This post may contain sensitive content"
+ },
+ "site": {
+ "terms": "Terms of Use",
+ "privacy": "Privacy Policy"
+ },
+ "navmenu": {
+ "search": "Search",
+ "admin": "Admin Dashboard",
+ "homeFeed": "Home Feed",
+ "localFeed": "Local Feed",
+ "globalFeed": "Global Feed",
+ "discover": "Discover",
+ "directMessages": "Direct Messages",
+ "notifications": "Notifications",
+ "groups": "Groups",
+ "stories": "Stories",
+ "profile": "Profile",
+ "drive": "Drive",
+ "settings": "Settings",
+ "compose": "Create New",
+ "logout": "Logout",
+ "about": "About",
+ "help": "Help",
+ "language": "Language",
+ "privacy": "Privacy",
+ "terms": "Terms",
+ "backToPreviousDesign": "Go back to previous design"
+ },
+ "directMessages": {
+ "inbox": "Inbox",
+ "sent": "Sent",
+ "requests": "Requests"
+ },
+ "notifications": {
+ "liked": "liked your",
+ "commented": "commented on your",
+ "reacted": "reacted to your",
+ "shared": "shared your",
+ "tagged": "tagged you in a",
+ "updatedA": "updated a",
+ "sentA": "sent a",
+ "followed": "followed",
+ "mentioned": "mentioned",
+ "you": "you",
+ "yourApplication": "Your application to join",
+ "applicationApproved": "was approved!",
+ "applicationRejected": "was rejected. You can re-apply to join in 6 months.",
+ "dm": "dm",
+ "groupPost": "group post",
+ "modlog": "modlog",
+ "post": "post",
+ "story": "story"
+ },
+ "post": {
+ "shareToFollowers": "Share to followers",
+ "shareToOther": "Share to other",
+ "noLikes": "No likes yet",
+ "uploading": "Uploading"
+ },
+ "profile": {
+ "posts": "Posts",
+ "followers": "Followers",
+ "following": "Following",
+ "admin": "Admin",
+ "collections": "Collections",
+ "follow": "Follow",
+ "unfollow": "Unfollow",
+ "editProfile": "Edit Profile",
+ "followRequested": "Follow Requested",
+ "joined": "Joined",
+ "emptyCollections": "We can't seem to find any collections",
+ "emptyPosts": "We can't seem to find any posts"
+ },
+ "menu": {
+ "viewPost": "View Post",
+ "viewProfile": "View Profile",
+ "moderationTools": "Moderation Tools",
+ "report": "Report",
+ "archive": "Archive",
+ "unarchive": "Unarchive",
+ "embed": "Embed",
+ "selectOneOption": "Select one of the following options",
+ "unlistFromTimelines": "Unlist from Timelines",
+ "addCW": "Add Content Warning",
+ "removeCW": "Remove Content Warning",
+ "markAsSpammer": "Mark as Spammer",
+ "markAsSpammerText": "Unlist + CW existing and future posts",
+ "spam": "Spam",
+ "sensitive": "Sensitive Content",
+ "abusive": "Abusive or Harmful",
+ "underageAccount": "Underage Account",
+ "copyrightInfringement": "Copyright Infringement",
+ "impersonation": "Impersonation",
+ "scamOrFraud": "Scam or Fraud",
+ "confirmReport": "Confirm Report",
+ "confirmReportText": "Are you sure you want to report this post?",
+ "reportSent": "Report Sent!",
+ "reportSentText": "We have successfully received your report.",
+ "reportSentError": "There was an issue reporting this post.",
+ "modAddCWConfirm": "Are you sure you want to add a content warning to this post?",
+ "modCWSuccess": "Successfully added content warning",
+ "modRemoveCWConfirm": "Are you sure you want to remove the content warning on this post?",
+ "modRemoveCWSuccess": "Successfully removed content warning",
+ "modUnlistConfirm": "Are you sure you want to unlist this post?",
+ "modUnlistSuccess": "Successfully unlisted post",
+ "modMarkAsSpammerConfirm": "Are you sure you want to mark this user as a spammer? All existing and future posts will be unlisted on timelines and a content warning will be applied.",
+ "modMarkAsSpammerSuccess": "Successfully marked account as spammer",
+ "toFollowers": "to Followers",
+ "showCaption": "Show Caption",
+ "showLikes": "Show Likes",
+ "compactMode": "Compact Mode",
+ "embedConfirmText": "By using this embed, you agree to our",
+ "deletePostConfirm": "Are you sure you want to delete this post?",
+ "archivePostConfirm": "Are you sure you want to archive this post?",
+ "unarchivePostConfirm": "Are you sure you want to unarchive this post?"
+ },
+ "story": {
+ "add": "Add Story"
+ },
+ "timeline": {
+ "peopleYouMayKnow": "People you may know"
+ },
+ "hashtags": {
+ "emptyFeed": "We can't seem to find any posts for this hashtag"
+ }
+}
\ No newline at end of file
diff --git a/public/_lang/mk.json b/public/_lang/mk.json
new file mode 100644
index 000000000..1acb08636
--- /dev/null
+++ b/public/_lang/mk.json
@@ -0,0 +1,150 @@
+{
+ "common": {
+ "comment": "Comment",
+ "commented": "Commented",
+ "comments": "Comments",
+ "like": "Like",
+ "liked": "Liked",
+ "likes": "Likes",
+ "share": "Share",
+ "shared": "Shared",
+ "shares": "Shares",
+ "unshare": "Unshare",
+ "cancel": "Cancel",
+ "copyLink": "Copy Link",
+ "delete": "Delete",
+ "error": "Error",
+ "errorMsg": "Something went wrong. Please try again later.",
+ "oops": "Oops!",
+ "other": "Other",
+ "readMore": "Read more",
+ "success": "Success",
+ "sensitive": "Sensitive",
+ "sensitiveContent": "Sensitive Content",
+ "sensitiveContentWarning": "This post may contain sensitive content"
+ },
+ "site": {
+ "terms": "Terms of Use",
+ "privacy": "Privacy Policy"
+ },
+ "navmenu": {
+ "search": "Search",
+ "admin": "Admin Dashboard",
+ "homeFeed": "Home Feed",
+ "localFeed": "Local Feed",
+ "globalFeed": "Global Feed",
+ "discover": "Discover",
+ "directMessages": "Direct Messages",
+ "notifications": "Notifications",
+ "groups": "Groups",
+ "stories": "Stories",
+ "profile": "Profile",
+ "drive": "Drive",
+ "settings": "Settings",
+ "compose": "Create New",
+ "logout": "Logout",
+ "about": "About",
+ "help": "Help",
+ "language": "Language",
+ "privacy": "Privacy",
+ "terms": "Terms",
+ "backToPreviousDesign": "Go back to previous design"
+ },
+ "directMessages": {
+ "inbox": "Inbox",
+ "sent": "Sent",
+ "requests": "Requests"
+ },
+ "notifications": {
+ "liked": "liked your",
+ "commented": "commented on your",
+ "reacted": "reacted to your",
+ "shared": "shared your",
+ "tagged": "tagged you in a",
+ "updatedA": "updated a",
+ "sentA": "sent a",
+ "followed": "followed",
+ "mentioned": "mentioned",
+ "you": "you",
+ "yourApplication": "Your application to join",
+ "applicationApproved": "was approved!",
+ "applicationRejected": "was rejected. You can re-apply to join in 6 months.",
+ "dm": "dm",
+ "groupPost": "group post",
+ "modlog": "modlog",
+ "post": "post",
+ "story": "story"
+ },
+ "post": {
+ "shareToFollowers": "Share to followers",
+ "shareToOther": "Share to other",
+ "noLikes": "No likes yet",
+ "uploading": "Uploading"
+ },
+ "profile": {
+ "posts": "Posts",
+ "followers": "Followers",
+ "following": "Following",
+ "admin": "Admin",
+ "collections": "Collections",
+ "follow": "Follow",
+ "unfollow": "Unfollow",
+ "editProfile": "Edit Profile",
+ "followRequested": "Follow Requested",
+ "joined": "Joined",
+ "emptyCollections": "We can't seem to find any collections",
+ "emptyPosts": "We can't seem to find any posts"
+ },
+ "menu": {
+ "viewPost": "View Post",
+ "viewProfile": "View Profile",
+ "moderationTools": "Moderation Tools",
+ "report": "Report",
+ "archive": "Archive",
+ "unarchive": "Unarchive",
+ "embed": "Embed",
+ "selectOneOption": "Select one of the following options",
+ "unlistFromTimelines": "Unlist from Timelines",
+ "addCW": "Add Content Warning",
+ "removeCW": "Remove Content Warning",
+ "markAsSpammer": "Mark as Spammer",
+ "markAsSpammerText": "Unlist + CW existing and future posts",
+ "spam": "Spam",
+ "sensitive": "Sensitive Content",
+ "abusive": "Abusive or Harmful",
+ "underageAccount": "Underage Account",
+ "copyrightInfringement": "Copyright Infringement",
+ "impersonation": "Impersonation",
+ "scamOrFraud": "Scam or Fraud",
+ "confirmReport": "Confirm Report",
+ "confirmReportText": "Are you sure you want to report this post?",
+ "reportSent": "Report Sent!",
+ "reportSentText": "We have successfully received your report.",
+ "reportSentError": "There was an issue reporting this post.",
+ "modAddCWConfirm": "Are you sure you want to add a content warning to this post?",
+ "modCWSuccess": "Successfully added content warning",
+ "modRemoveCWConfirm": "Are you sure you want to remove the content warning on this post?",
+ "modRemoveCWSuccess": "Successfully removed content warning",
+ "modUnlistConfirm": "Are you sure you want to unlist this post?",
+ "modUnlistSuccess": "Successfully unlisted post",
+ "modMarkAsSpammerConfirm": "Are you sure you want to mark this user as a spammer? All existing and future posts will be unlisted on timelines and a content warning will be applied.",
+ "modMarkAsSpammerSuccess": "Successfully marked account as spammer",
+ "toFollowers": "to Followers",
+ "showCaption": "Show Caption",
+ "showLikes": "Show Likes",
+ "compactMode": "Compact Mode",
+ "embedConfirmText": "By using this embed, you agree to our",
+ "deletePostConfirm": "Are you sure you want to delete this post?",
+ "archivePostConfirm": "Are you sure you want to archive this post?",
+ "unarchivePostConfirm": "Are you sure you want to unarchive this post?"
+ },
+ "story": {
+ "add": "Add Story"
+ },
+ "timeline": {
+ "peopleYouMayKnow": "People you may know"
+ },
+ "hashtags": {
+ "emptyFeed": "We can't seem to find any posts for this hashtag"
+ }
+}
\ No newline at end of file
diff --git a/public/_lang/pt.json b/public/_lang/pt.json
index 6f014a495..b98b0a5d1 100644
--- a/public/_lang/pt.json
+++ b/public/_lang/pt.json
@@ -37,12 +37,12 @@
"directMessages": "Mensagens privadas",
"notifications": "Notifica\u00e7\u00f5es",
"groups": "Grupos",
- "stories": "Stories",
+ "stories": "Hist\u00f3rias",
"profile": "Perfil",
- "drive": "Drive",
+ "drive": "M\u00eddias",
"settings": "Configura\u00e7\u00f5es",
"compose": "Criar novo",
- "logout": "Logout",
+ "logout": "Sair",
"about": "Sobre",
"help": "Ajuda",
"language": "Idioma",
diff --git a/public/_lang/sk.json b/public/_lang/sk.json
index 5da2463c2..31f53469d 100644
--- a/public/_lang/sk.json
+++ b/public/_lang/sk.json
@@ -1,7 +1,7 @@
{
"common": {
"comment": "Komentova\u0165",
- "commented": "Commented",
+ "commented": "Komentoval",
"comments": "Koment\u00e1re",
"like": "P\u00e1\u010di sa mi",
"liked": "P\u00e1\u010di sa mi",
@@ -42,7 +42,7 @@
"drive": "\u00dalo\u017eisko",
"settings": "Nastavenia",
"compose": "Vytvori\u0165 nov\u00fd",
- "logout": "Logout",
+ "logout": "Odhl\u00e1si\u0165 sa",
"about": "O aplik\u00e1cii",
"help": "Pomocn\u00edk",
"language": "Jazyk",
@@ -91,7 +91,7 @@
"unfollow": "Presta\u0165 sledova\u0165",
"editProfile": "Upravi\u0165 Profil",
"followRequested": "\u017diados\u0165 o sledovanie bola odoslan\u00e1",
- "joined": "Joined",
+ "joined": "Pripojen\u00e9",
"emptyCollections": "Zd\u00e1 sa, \u017ee nem\u00f4\u017eeme n\u00e1js\u0165 \u017eiadne kolekcie",
"emptyPosts": "Zd\u00e1 sa, \u017ee nem\u00f4\u017eeme n\u00e1js\u0165 \u017eiadne pr\u00edspevky"
},
@@ -104,11 +104,11 @@
"unarchive": "Odarchivova\u0165",
"embed": "Vlo\u017ei\u0165",
"selectOneOption": "Pros\u00edm, vyberte jednu z nasleduj\u00facich mo\u017enost\u00ed",
- "unlistFromTimelines": "Unlist from Timelines",
+ "unlistFromTimelines": "Odstr\u00e1ni\u0165 z Timelines",
"addCW": "Prida\u0165 upozornenie o obsahu",
"removeCW": "Odstr\u00e1ni\u0165 upozornenie o obsahu",
"markAsSpammer": "Ozna\u010di\u0165 ako Spammer",
- "markAsSpammerText": "Unlist + CW existing and future posts",
+ "markAsSpammerText": "Odstr\u00e1ni\u0165 zo zoznamu + upozornenie o obsahu existuj\u00face a bud\u00face pr\u00edspevky",
"spam": "Spam",
"sensitive": "Citliv\u00fd obsah",
"abusive": "Zneu\u017e\u00edvaj\u00faci alebo \u0160kodliv\u00fd",
@@ -125,10 +125,10 @@
"modCWSuccess": "Upozornenie o obsahu bolo \u00faspe\u0161ne pridan\u00e9",
"modRemoveCWConfirm": "Naozaj chcete odstr\u00e1ni\u0165 upozornenie o obsahu z tohto pr\u00edspevku?",
"modRemoveCWSuccess": "Upozornenie o obsahu bolo \u00faspe\u0161ne odstr\u00e1nen\u00e9",
- "modUnlistConfirm": "Are you sure you want to unlist this post?",
- "modUnlistSuccess": "Successfully unlisted post",
- "modMarkAsSpammerConfirm": "Are you sure you want to mark this user as a spammer? All existing and future posts will be unlisted on timelines and a content warning will be applied.",
- "modMarkAsSpammerSuccess": "\u00da\u010det bol \u00faspe\u0161ne ozna\u010den\u00fd ako spammer",
+ "modUnlistConfirm": "Naozaj chcete odstr\u00e1ni\u0165 zo zoznamu tento pr\u00edspevok?",
+ "modUnlistSuccess": "Pr\u00edspevok bol \u00faspe\u0161ne odstr\u00e1nen\u00fd zo zoznamu",
+ "modMarkAsSpammerConfirm": "Naozaj chcete ozna\u010di\u0165 tohto pou\u017e\u00edvate\u013ea ako odosielate\u013ea spamu? V\u0161etky existuj\u00face a bud\u00face pr\u00edspevky bud\u00fa odstr\u00e1nen\u00e9 z timelines a bude pridan\u00e9 upozornenie o obsahu.",
+ "modMarkAsSpammerSuccess": "\u00da\u010det bol \u00faspe\u0161ne ozna\u010den\u00fd ako odosielate\u013ea spamu",
"toFollowers": "pre Sleduj\u00facich",
"showCaption": "Zobrazi\u0165 Titulok",
"showLikes": "Zobrazi\u0165 P\u00e1\u010di sa mi",
diff --git a/public/_lang/vi.json b/public/_lang/vi.json
index 021e9c513..3f76b862f 100644
--- a/public/_lang/vi.json
+++ b/public/_lang/vi.json
@@ -42,7 +42,7 @@
"drive": "L\u01b0u tr\u1eef",
"settings": "Thi\u1ebft l\u1eadp",
"compose": "\u1ea2nh m\u1edbi",
- "logout": "Logout",
+ "logout": "\u0110\u0103ng xu\u1ea5t",
"about": "Gi\u1edbi thi\u1ec7u",
"help": "Tr\u1ee3 gi\u00fap",
"language": "Ng\u00f4n ng\u1eef",
diff --git a/public/js/spa.js b/public/js/spa.js
index 690610439..ce96e4bd6 100644
--- a/public/js/spa.js
+++ b/public/js/spa.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{"+/TA":function(t,e,n){"use strict";n("eKim")},"+3PN":function(t,e,n){var i=n("eWeD");"string"==typeof i&&(i=[[t.i,i,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(i,o);i.locals&&(t.exports=i.locals)},"+VHp":function(t,e,n){"use strict";n("V8Te")},"+uhv":function(t,e,n){"use strict";n("M24V")},"/RaH":function(t,e,n){var i=n("iTP3");"string"==typeof i&&(i=[[t.i,i,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(i,o);i.locals&&(t.exports=i.locals)},"/Y1X":function(t,e,n){"use strict";n("KOWi")},"/jad":function(t,e,n){"use strict";var i=n("1gDp"),o=n("ngXG"),a={props:{status:{type:Object},recommended:{type:Boolean,default:!1},reactionBar:{type:Boolean,default:!0},hasTopBorder:{type:Boolean,default:!1},size:{type:String,validator:function(t){return["regular","small"].includes(t)},default:"regular"}},components:{"context-menu":i.a,"poll-card":o.a},data:function(){return{config:window.App.config,profile:{},loading:!0,replies:[],replyId:null,lightboxMedia:!1,showSuggestions:!0,showReadMore:!0,replyStatus:{},replyText:"",replyNsfw:!1,emoji:window.App.util.emoji}},mounted:function(){this.profile=window._sharedData.curUser},methods:{formatCount:function(t){return App.util.format.count(t)},statusUrl:function(t){return 1==t.local?t.url:"/i/web/post/_/"+t.account.id+"/"+t.id},profileUrl:function(t){return 1==t.local?t.account.url:"/i/web/profile/_/"+t.account.id},timestampFormat:function(t){var e=new Date(t);return e.toDateString()+" "+e.toLocaleTimeString()},shortTimestamp:function(t){return window.App.util.format.timeAgo(t)},statusCardUsernameFormat:function(t){if(1==t.account.local)return t.account.username;var e=window.App.config.username.remote.format,n=window.App.config.username.remote.custom,i=t.account.username,o=document.createElement("a");switch(o.href=t.account.url,o=o.hostname,e){case"@":return i+'@'+o+"";case"from":return i+' from '+o+"";case"custom":return i+' '+n+" "+o+"";default:return i+'@'+o+""}},lightbox:function(t){window.location.href=t.media_attachments[0].url},labelRedirect:function(t){var e="/i/redirect?url="+encodeURI(this.config.features.label.covid.url);window.location.href=e},likeStatus:function(t,e){if(0!=$("body").hasClass("loggedIn")){var n=t.favourites_count;t.favourited=!t.favourited,axios.post("/i/like",{item:t.id}).then((function(e){t.favourites_count=e.data.count,t.favourited=!!t.favourited})).catch((function(e){t.favourited=!!t.favourited,t.favourites_count=n,swal("Error","Something went wrong, please try again later.","error")})),window.navigator.vibrate(200),t.favourited&&setTimeout((function(){e.target.classList.add("animate__animated","animate__bounce")}),100)}},commentFocus:function(t,e){this.$emit("comment-focus",t)},commentSubmit:function(t,e){var n=this;this.replySending=!0;var i=t.id,o=this.replyText,a=this.config.uploader.max_caption_length;if(o.length>a)return this.replySending=!1,void swal("Comment Too Long","Please make sure your comment is "+a+" characters or less.","error");axios.post("/i/comment",{item:i,comment:o,sensitive:this.replyNsfw}).then((function(t){n.replyText="",n.replies.push(t.data.entity),n.$refs.replyModal.hide()})),this.replySending=!1},owner:function(t){return this.profile.id===t.account.id},admin:function(){return 1==this.profile.is_admin},ownerOrAdmin:function(t){return this.owner(t)||this.admin()},ctxMenu:function(){this.$refs.contextMenu.open()},timeAgo:function(t){return App.util.format.timeAgo(t)},statusDeleted:function(t){this.$emit("status-delete",t)},canFollow:function(t){return!!t.hasOwnProperty("relationship")&&(!(!t.hasOwnProperty("account")||!t.account.hasOwnProperty("id"))&&(t.account.id!=this.profile.id&&!t.relationship.following))},follow:function(t){var e=this;event.currentTarget.blur(),axios.post("/i/follow",{item:t}).then((function(n){e.status.relationship.following=!0,e.$emit("followed",t)})).catch((function(t){t.response.data.message&&swal("Error",t.response.data.message,"error")}))},unfollow:function(t){var e=this;event.currentTarget.blur(),axios.post("/i/follow",{item:t}).then((function(n){e.status.relationship.following=!1,e.$emit("unfollowed",t)})).catch((function(t){t.response.data.message&&swal("Error",t.response.data.message,"error")}))}}},r=(n("RePV"),n("KHd+")),s=Object(r.a)(a,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"status-card-component",class:{"status-card-sm":"small"===t.size}},["text"===t.status.pf_type?n("div",{staticClass:"card shadow-none border rounded-0",class:{"border-top-0":!t.hasTopBorder}},[n("div",{staticClass:"card-body"},[n("div",{staticClass:"media"},[n("img",{staticClass:"rounded-circle box-shadow mr-2",attrs:{src:t.status.account.avatar,width:"32px",height:"32px",onerror:"this.onerror=null;this.src='/storage/avatars/default.png?v=2'",alt:"avatar"}}),t._v(" "),n("div",{staticClass:"media-body"},[n("div",{staticClass:"pl-2 d-flex align-items-top"},[n("a",{staticClass:"username font-weight-bold text-dark text-decoration-none text-break",attrs:{href:t.profileUrl(t.status)},domProps:{innerHTML:t._s(t.statusCardUsernameFormat(t.status))}},[t._v("\n\t\t\t\t\t\t\tLoading...\n\t\t\t\t\t\t")]),t._v(" "),n("span",{staticClass:"px-1 text-lighter"},[t._v("\n\t\t\t\t\t\t\t·\n\t\t\t\t\t\t")]),t._v(" "),n("a",{staticClass:"font-weight-bold text-lighter",attrs:{href:t.statusUrl(t.status)}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.shortTimestamp(t.status.created_at))+"\n\t\t\t\t\t\t")]),t._v(" "),n("span",{staticClass:"text-right",staticStyle:{"flex-grow":"1"}},[n("button",{staticClass:"btn btn-link text-dark py-0",attrs:{type:"button"},on:{click:function(e){return t.ctxMenu()}}},[n("span",{staticClass:"fas fa-ellipsis-h text-lighter"}),t._v(" "),n("span",{staticClass:"sr-only"},[t._v("Post Menu")])])])]),t._v(" "),n("div",{staticClass:"pl-2"},[t.status.sensitive?n("details",[n("summary",{staticClass:"mb-2 font-weight-bold text-muted"},[t._v("Content Warning")]),t._v(" "),n("p",{staticClass:"pt-2 text-break status-content",domProps:{innerHTML:t._s(t.status.content)}})]):n("p",{staticClass:"pt-2 text-break status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),n("p",{staticClass:"mb-0"},[n("i",{staticClass:"fa-heart fa-lg cursor-pointer mr-3",class:{"far text-muted":!t.status.favourited,"fas text-danger":t.status.favourited},on:{click:function(e){return t.likeStatus(t.status,e)}}}),t._v(" "),n("i",{staticClass:"far fa-comment cursor-pointer text-muted fa-lg mr-3",on:{click:function(e){return t.commentFocus(t.status,e)}}})])])])])])]):"poll"===t.status.pf_type?n("div",[n("poll-card",{attrs:{status:t.status,profile:t.profile},on:{"status-delete":t.statusDeleted}})],1):n("div",{staticClass:"card rounded-0 border-top-0 status-card card-md-rounded-0 shadow-none border"},[t.status?n("div",{staticClass:"card-header d-inline-flex align-items-center bg-white"},[n("div",[n("img",{staticClass:"rounded-circle box-shadow",attrs:{src:t.status.account.avatar,width:"32px",height:"32px",onerror:"this.onerror=null;this.src='/storage/avatars/default.png?v=2'",alt:"avatar"}})]),t._v(" "),n("div",{staticClass:"pl-2"},[n("a",{staticClass:"username font-weight-bold text-dark text-decoration-none text-break",attrs:{href:t.profileUrl(t.status)},domProps:{innerHTML:t._s(t.statusCardUsernameFormat(t.status))}},[t._v("\n\t\t\t\t\tLoading...\n\t\t\t\t")]),t._v(" "),t.status.account.is_admin?n("span",{staticClass:"fa-stack",staticStyle:{height:"1em","line-height":"1em","max-width":"19px"},attrs:{title:"Admin Account","data-toggle":"tooltip"}},[n("i",{staticClass:"fas fa-certificate text-danger fa-stack-1x"}),t._v(" "),n("i",{staticClass:"fas fa-crown text-white fa-sm fa-stack-1x",staticStyle:{"font-size":"7px"}})]):t._e(),t._v(" "),n("div",{staticClass:"d-flex align-items-center"},[t.status.place?n("a",{staticClass:"small text-decoration-none text-muted",attrs:{href:"/discover/places/"+t.status.place.id+"/"+t.status.place.slug,title:"Location","data-toggle":"tooltip"}},[n("i",{staticClass:"fas fa-map-marked-alt"}),t._v(" "+t._s(t.status.place.name)+", "+t._s(t.status.place.country))]):t._e()])]),t._v(" "),t.canFollow(t.status)?n("div",[n("span",{staticClass:"px-2"}),t._v(" "),n("button",{staticClass:"btn btn-primary btn-sm font-weight-bold py-1 px-3 rounded-lg",on:{click:function(e){return t.follow(t.status.account.id)}}},[n("i",{staticClass:"far fa-user-plus mr-1"}),t._v(" Follow")])]):t._e(),t._v(" "),t.status.hasOwnProperty("relationship")&&t.status.relationship.hasOwnProperty("following")&&t.status.relationship.following?n("div",[n("span",{staticClass:"px-2"}),t._v(" "),n("button",{staticClass:"btn btn-outline-primary btn-sm font-weight-bold py-1 px-3 rounded-lg",on:{click:function(e){return t.unfollow(t.status.account.id)}}},[n("i",{staticClass:"far fa-user-check mr-1"}),t._v(" Following")])]):t._e(),t._v(" "),n("div",{staticClass:"text-right",staticStyle:{"flex-grow":"1"}},[n("button",{staticClass:"btn btn-link text-dark py-0",attrs:{type:"button"},on:{click:function(e){return t.ctxMenu()}}},[n("span",{staticClass:"fas fa-ellipsis-h text-lighter"}),t._v(" "),n("span",{staticClass:"sr-only"},[t._v("Post Menu")])])])]):t._e(),t._v(" "),n("div",{staticClass:"postPresenterContainer",staticStyle:{background:"#000"}},["photo"===t.status.pf_type?n("div",{staticClass:"w-100"},[n("photo-presenter",{attrs:{status:t.status},on:{lightbox:t.lightbox,togglecw:function(e){t.status.sensitive=!1}}})],1):"video"===t.status.pf_type?n("div",{staticClass:"w-100"},[n("video-presenter",{attrs:{status:t.status},on:{togglecw:function(e){t.status.sensitive=!1}}})],1):"photo:album"===t.status.pf_type?n("div",{staticClass:"w-100"},[n("photo-album-presenter",{attrs:{status:t.status},on:{lightbox:t.lightbox,togglecw:function(e){t.status.sensitive=!1}}})],1):"video:album"===t.status.pf_type?n("div",{staticClass:"w-100"},[n("video-album-presenter",{attrs:{status:t.status},on:{togglecw:function(e){t.status.sensitive=!1}}})],1):"photo:video:album"===t.status.pf_type?n("div",{staticClass:"w-100"},[n("mixed-album-presenter",{attrs:{status:t.status},on:{lightbox:t.lightbox,togglecw:function(e){t.status.sensitive=!1}}})],1):n("div",{staticClass:"w-100"},[n("p",{staticClass:"text-center p-0 font-weight-bold text-white"},[t._v("Error: Problem rendering preview.")])])]),t._v(" "),t.config.features.label.covid.enabled&&t.status.label&&1==t.status.label.covid?n("div",{staticClass:"card-body border-top border-bottom py-2 cursor-pointer pr-2",on:{click:function(e){return t.labelRedirect()}}},[n("p",{staticClass:"font-weight-bold d-flex justify-content-between align-items-center mb-0"},[n("span",[n("i",{staticClass:"fas fa-info-circle mr-2"}),t._v("\n\t\t\t\t\tFor information about COVID-19, "+t._s(t.config.features.label.covid.org)+"\n\t\t\t\t")]),t._v(" "),t._m(0)])]):t._e(),t._v(" "),n("div",{staticClass:"card-body"},[t.reactionBar?n("div",{staticClass:"reactions my-1 pb-2"},[t.status.favourited?n("h3",{staticClass:"fas fa-heart text-danger pr-3 m-0 cursor-pointer",attrs:{title:"Like"},on:{click:function(e){return t.likeStatus(t.status,e)}}}):n("h3",{staticClass:"fal fa-heart pr-3 m-0 like-btn text-dark cursor-pointer",attrs:{title:"Like"},on:{click:function(e){return t.likeStatus(t.status,e)}}}),t._v(" "),t.status.comments_disabled?t._e():n("h3",{staticClass:"fal fa-comment text-dark pr-3 m-0 cursor-pointer",attrs:{title:"Comment"},on:{click:function(e){return t.commentFocus(t.status,e)}}}),t._v(" "),t.status.taggedPeople.length?n("span",{staticClass:"float-right"},[n("span",{staticClass:"font-weight-light small",staticStyle:{color:"#718096"}},[n("i",{staticClass:"far fa-user",attrs:{"data-toggle":"tooltip",title:"Tagged People"}}),t._v(" "),t._l(t.status.taggedPeople,(function(t,e){return n("span",{staticClass:"mr-n2"},[n("a",{attrs:{href:"/"+t.username}},[n("img",{staticClass:"border rounded-circle",attrs:{src:t.avatar,width:"20px",height:"20px","data-toggle":"tooltip",title:"@"+t.username,alt:"Avatar"}})])])}))],2)]):t._e()]):t._e(),t._v(" "),t.status.liked_by.username&&t.status.liked_by.username!==t.profile.username?n("div",{staticClass:"likes mb-1"},[n("span",{staticClass:"like-count"},[t._v("Liked by\n\t\t\t\t\t"),n("a",{staticClass:"font-weight-bold text-dark",attrs:{href:t.status.liked_by.url}},[t._v(t._s(t.status.liked_by.username))]),t._v(" "),1==t.status.liked_by.others?n("span",[t._v("\n\t\t\t\t\t\tand "),t.status.liked_by.total_count_pretty?n("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.status.liked_by.total_count_pretty))]):t._e(),t._v(" "),n("span",{staticClass:"font-weight-bold"},[t._v("others")])]):t._e()])]):t._e(),t._v(" "),"text"!=t.status.pf_type?n("div",{staticClass:"caption"},[t.status.sensitive?t._e():n("p",{staticClass:"mb-2 read-more",staticStyle:{overflow:"hidden"}},[n("span",{staticClass:"username font-weight-bold"},[n("bdi",[n("a",{staticClass:"text-dark",attrs:{href:t.profileUrl(t.status)}},[t._v(t._s(t.status.account.username))])])]),t._v(" "),n("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}})])]):t._e(),t._v(" "),n("div",{staticClass:"timestamp mt-2"},[n("p",{staticClass:"small mb-0"},["archived"!=t.status.visibility?n("a",{staticClass:"text-muted text-uppercase",attrs:{href:t.statusUrl(t.status)}},[n("timeago",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",modifiers:{hover:!0,bottom:!0}}],attrs:{datetime:t.status.created_at,"auto-update":60,"converter-options":{includeSeconds:!0},title:t.timestampFormat(t.status.created_at)}})],1):n("span",{staticClass:"text-muted text-uppercase"},[t._v("\n\t\t\t\t\t\tPosted "),n("timeago",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",modifiers:{hover:!0,bottom:!0}}],attrs:{datetime:t.status.created_at,"auto-update":60,"converter-options":{includeSeconds:!0},title:t.timestampFormat(t.status.created_at)}})],1),t._v(" "),t.recommended?n("span",[n("span",{staticClass:"px-1"},[t._v("·")]),t._v(" "),n("span",{staticClass:"text-muted"},[t._v("Based on popular and trending content")])]):t._e()])])])]),t._v(" "),n("context-menu",{ref:"contextMenu",attrs:{status:t.status,profile:t.profile},on:{"status-delete":t.statusDeleted}})],1)}),[function(){var t=this.$createElement,e=this._self._c||t;return e("span",[e("i",{staticClass:"fas fa-chevron-right text-lighter"})])}],!1,null,null,null);e.a=s.exports},"0SFe":function(t,e,n){"use strict";n("SZ2H")},"0Z5r":function(t,e,n){var i=n("UudS");"string"==typeof i&&(i=[[t.i,i,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(i,o);i.locals&&(t.exports=i.locals)},"0dhX":function(t,e,n){(t.exports=n("I1BE")(!1)).push([t.i,".account-bookmarks-component .form-check[data-v-25a4c79a] {\n margin-left: 1rem;\n}\n.account-bookmarks-component .form-check .media-body[data-v-25a4c79a] {\n margin-left: 1rem;\n}\n.account-bookmarks-component .media-image-placeholder[data-v-25a4c79a] {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 50px;\n height: 50px;\n background-color: #f8f9fa !important;\n border-radius: 5px;\n margin-right: 1rem;\n}",""])},"0ox+":function(t,e,n){(t.exports=n("I1BE")(!1)).push([t.i,'.autocomplete-input{border:1px solid #eee;border-radius:8px;width:100%;padding:12px 12px 12px 48px;box-sizing:border-box;position:relative;font-size:16px;line-height:1.5;flex:1;background-color:#eee;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjY2IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iOCIvPjxwYXRoIGQ9Ik0yMSAyMWwtNC00Ii8+PC9zdmc+");background-repeat:no-repeat;background-position:12px}.autocomplete-input:focus,.autocomplete-input[aria-expanded=true]{border-color:rgba(0,0,0,.12);background-color:#fff;outline:none;box-shadow:0 2px 2px rgba(0,0,0,.16)}[data-position=below] .autocomplete-input[aria-expanded=true]{border-bottom-color:transparent;border-radius:8px 8px 0 0}[data-position=above] .autocomplete-input[aria-expanded=true]{border-top-color:transparent;border-radius:0 0 8px 8px;z-index:2}.autocomplete[data-loading=true]:after{content:"";border:3px solid rgba(0,0,0,.12);border-right-color:rgba(0,0,0,.48);border-radius:100%;width:20px;height:20px;position:absolute;right:12px;top:50%;transform:translateY(-50%);-webkit-animation:rotate 1s linear infinite;animation:rotate 1s linear infinite}.autocomplete-result-list{margin:0;border:1px solid rgba(0,0,0,.12);padding:0;box-sizing:border-box;max-height:296px;overflow-y:auto;background:#fff;list-style:none;box-shadow:0 2px 2px rgba(0,0,0,.16)}[data-position=below] .autocomplete-result-list{margin-top:-1px;border-top-color:transparent;border-radius:0 0 8px 8px;padding-bottom:8px}[data-position=above] .autocomplete-result-list{margin-bottom:-1px;border-bottom-color:transparent;border-radius:8px 8px 0 0;padding-top:8px}.autocomplete-result{cursor:default;padding:12px 12px 12px 48px;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjY2NjIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iOCIvPjxwYXRoIGQ9Ik0yMSAyMWwtNC00Ii8+PC9zdmc+");background-repeat:no-repeat;background-position:12px}.autocomplete-result:hover,.autocomplete-result[aria-selected=true]{background-color:rgba(0,0,0,.06)}@-webkit-keyframes rotate{0%{transform:translateY(-50%) rotate(0deg)}to{transform:translateY(-50%) rotate(359deg)}}@keyframes rotate{0%{transform:translateY(-50%) rotate(0deg)}to{transform:translateY(-50%) rotate(359deg)}}',""])},"1PLf":function(t,e,n){t.exports=function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"00ee":function(t,e,n){var i={};i[n("b622")("toStringTag")]="z",t.exports="[object z]"===String(i)},"0366":function(t,e,n){var i=n("1c0b");t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,o){return t.call(e,n,i,o)}}return function(){return t.apply(e,arguments)}}},"0538":function(t,e,n){"use strict";var i=n("1c0b"),o=n("861d"),a=[].slice,r={},s=function(t,e,n){if(!(e in r)){for(var i=[],o=0;o0;(a>>>=1)&&(e+=e))1&a&&(n+=e);return n}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1be4":function(t,e,n){var i=n("d066");t.exports=i("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var i=n("b622")("iterator"),o=!1;try{var a=0,r={next:function(){return{done:!!a++}},return:function(){o=!0}};r[i]=function(){return this},Array.from(r,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var a={};a[i]=function(){return{next:function(){return{done:n=!0}}}},t(a)}catch(t){}return n}},"1cdc":function(t,e,n){var i=n("342f");t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(i)},"1d80":function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},2266:function(t,e,n){var i=n("825a"),o=n("e95a"),a=n("50c4"),r=n("0366"),s=n("35a1"),l=n("9bdd"),c=function(t,e){this.stopped=t,this.result=e};(t.exports=function(t,e,n,u,d){var p,h,f,m,v,g,b,y=r(e,n,u?2:1);if(d)p=t;else{if("function"!=typeof(h=s(t)))throw TypeError("Target is not iterable");if(o(h)){for(f=0,m=a(t.length);m>f;f++)if((v=u?y(i(b=t[f])[0],b[1]):y(t[f]))&&v instanceof c)return v;return new c(!1)}p=h.call(t)}for(g=p.next;!(b=g.call(p)).done;)if("object"==typeof(v=l(p,y,b.value,u))&&v&&v instanceof c)return v;return new c(!1)}).stop=function(t){return new c(!0,t)}},"23cb":function(t,e,n){var i=n("a691"),o=Math.max,a=Math.min;t.exports=function(t,e){var n=i(t);return n<0?o(n+e,0):a(n,e)}},"23e7":function(t,e,n){var i=n("da84"),o=n("06cf").f,a=n("9112"),r=n("6eeb"),s=n("ce4e"),l=n("e893"),c=n("94ca");t.exports=function(t,e){var n,u,d,p,h,f=t.target,m=t.global,v=t.stat;if(n=m?i:v?i[f]||s(f,{}):(i[f]||{}).prototype)for(u in e){if(p=e[u],d=t.noTargetGet?(h=o(n,u))&&h.value:n[u],!c(m?u:f+(v?".":"#")+u,t.forced)&&void 0!==d){if(typeof p==typeof d)continue;l(p,d)}(t.sham||d&&d.sham)&&a(p,"sham",!0),r(n,u,p,t)}}},"241c":function(t,e,n){var i=n("ca84"),o=n("7839").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return i(t,o)}},"25f0":function(t,e,n){"use strict";var i=n("6eeb"),o=n("825a"),a=n("d039"),r=n("ad6d"),s=RegExp.prototype,l=s.toString,c=a((function(){return"/a/b"!=l.call({source:"a",flags:"b"})})),u="toString"!=l.name;(c||u)&&i(RegExp.prototype,"toString",(function(){var t=o(this),e=String(t.source),n=t.flags;return"/"+e+"/"+String(void 0===n&&t instanceof RegExp&&!("flags"in s)?r.call(t):n)}),{unsafe:!0})},2626:function(t,e,n){"use strict";var i=n("d066"),o=n("9bf2"),a=n("b622"),r=n("83ab"),s=a("species");t.exports=function(t){var e=i(t),n=o.f;r&&e&&!e[s]&&n(e,s,{configurable:!0,get:function(){return this}})}},2994:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n("49d8"),o=n("3054"),a=n("aacc");e.default=function(t,e,n,r,s){if(r<1||r>9||s<1||s>9)throw new a.ValidationError("BlurHash must have between 1 and 9 components");if(e*n*4!==t.length)throw new a.ValidationError("Width and height must match the pixels array");for(var l=[],c=function(i){for(var a=function(a){var r=0==a&&0==i?1:2,s=function(t,e,n,i){for(var a=0,r=0,s=0,l=4*e,c=0;c0){var g=Math.max.apply(Math,f.map((function(t){return Math.max.apply(Math,t)}))),b=Math.floor(Math.max(0,Math.min(82,Math.floor(166*g-.5))));d=(b+1)/166,m+=i.encode83(b,1)}else d=1,m+=i.encode83(0,1);return m+=i.encode83((p=h,(o.linearTosRGB(p[0])<<16)+(o.linearTosRGB(p[1])<<8)+o.linearTosRGB(p[2])),4),f.forEach((function(t){m+=i.encode83(function(t,e){return 19*Math.floor(Math.max(0,Math.min(18,Math.floor(9*o.signPow(t[0]/e,.5)+9.5))))*19+19*Math.floor(Math.max(0,Math.min(18,Math.floor(9*o.signPow(t[1]/e,.5)+9.5))))+Math.floor(Math.max(0,Math.min(18,Math.floor(9*o.signPow(t[2]/e,.5)+9.5))))}(t,d),2)})),m}},"2cf4":function(t,e,n){var i,o,a,r=n("da84"),s=n("d039"),l=n("c6b6"),c=n("0366"),u=n("1be4"),d=n("cc12"),p=n("1cdc"),h=r.location,f=r.setImmediate,m=r.clearImmediate,v=r.process,g=r.MessageChannel,b=r.Dispatch,y=0,w={},_=function(t){if(w.hasOwnProperty(t)){var e=w[t];delete w[t],e()}},x=function(t){return function(){_(t)}},C=function(t){_(t.data)},k=function(t){r.postMessage(t+"",h.protocol+"//"+h.host)};f&&m||(f=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return w[++y]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},i(y),y},m=function(t){delete w[t]},"process"==l(v)?i=function(t){v.nextTick(x(t))}:b&&b.now?i=function(t){b.now(x(t))}:g&&!p?(a=(o=new g).port2,o.port1.onmessage=C,i=c(a.postMessage,a,1)):!r.addEventListener||"function"!=typeof postMessage||r.importScripts||s(k)||"file:"===h.protocol?i="onreadystatechange"in d("script")?function(t){u.appendChild(d("script")).onreadystatechange=function(){u.removeChild(this),_(t)}}:function(t){setTimeout(x(t),0)}:(i=k,r.addEventListener("message",C,!1))),t.exports={set:f,clear:m}},"2d00":function(t,e,n){var i,o,a=n("da84"),r=n("342f"),s=a.process,l=s&&s.versions,c=l&&l.v8;c?o=(i=c.split("."))[0]+i[1]:r&&(!(i=r.match(/Edge\/(\d+)/))||i[1]>=74)&&(i=r.match(/Chrome\/(\d+)/))&&(o=i[1]),t.exports=o&&+o},3054:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.sRGBToLinear=function(t){var e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},e.linearTosRGB=function(t){var e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.round(12.92*e*255+.5):Math.round(255*(1.055*Math.pow(e,1/2.4)-.055)+.5)},e.sign=function(t){return t<0?-1:1},e.signPow=function(t,n){return e.sign(t)*Math.pow(Math.abs(t),n)}},3410:function(t,e,n){var i=n("23e7"),o=n("d039"),a=n("7b0b"),r=n("e163"),s=n("e177");i({target:"Object",stat:!0,forced:o((function(){r(1)})),sham:!s},{getPrototypeOf:function(t){return r(a(t))}})},"342f":function(t,e,n){var i=n("d066");t.exports=i("navigator","userAgent")||""},"35a1":function(t,e,n){var i=n("f5df"),o=n("3f8c"),a=n("b622")("iterator");t.exports=function(t){if(null!=t)return t[a]||t["@@iterator"]||o[i(t)]}},"37e8":function(t,e,n){var i=n("83ab"),o=n("9bf2"),a=n("825a"),r=n("df75");t.exports=i?Object.defineProperties:function(t,e){a(t);for(var n,i=r(e),s=i.length,l=0;s>l;)o.f(t,n=i[l++],e[n]);return t}},"3bbe":function(t,e,n){var i=n("861d");t.exports=function(t){if(!i(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3ca3":function(t,e,n){"use strict";var i=n("6547").charAt,o=n("69f3"),a=n("7dd0"),r=o.set,s=o.getterFor("String Iterator");a(String,"String",(function(t){r(this,{type:"String Iterator",string:String(t),index:0})}),(function(){var t,e=s(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=i(n,o),e.index+=t.length,{value:t,done:!1})}))},"3f8c":function(t,e){t.exports={}},"408a":function(t,e,n){var i=n("c6b6");t.exports=function(t){if("number"!=typeof t&&"Number"!=i(t))throw TypeError("Incorrect invocation");return+t}},"428f":function(t,e,n){var i=n("da84");t.exports=i},"44ad":function(t,e,n){var i=n("d039"),o=n("c6b6"),a="".split;t.exports=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?a.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var i=n("b622"),o=n("7c73"),a=n("9bf2"),r=i("unscopables"),s=Array.prototype;null==s[r]&&a.f(s,r,{configurable:!0,value:o(null)}),t.exports=function(t){s[r][t]=!0}},"44de":function(t,e,n){var i=n("da84");t.exports=function(t,e){var n=i.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},4840:function(t,e,n){var i=n("825a"),o=n("1c0b"),a=n("b622")("species");t.exports=function(t,e){var n,r=i(t).constructor;return void 0===r||null==(n=i(r)[a])?e:o(n)}},4930:function(t,e,n){var i=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!String(Symbol())}))},"49d8":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"];e.decode83=function(t){for(var e=0,n=0;nu;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((t||u in l)&&l[u]===n)return t||u||0;return!t&&-1}};t.exports={includes:r(!0),indexOf:r(!1)}},"50c4":function(t,e,n){var i=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(i(t),9007199254740991):0}},5135:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},5692:function(t,e,n){var i=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.5",mode:i?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var i=n("d066"),o=n("241c"),a=n("7418"),r=n("825a");t.exports=i("Reflect","ownKeys")||function(t){var e=o.f(r(t)),n=a.f;return n?e.concat(n(t)):e}},5899:function(t,e){t.exports="\t\n\v\f\r \u2028\u2029\ufeff"},"58a8":function(t,e,n){var i=n("1d80"),o="["+n("5899")+"]",a=RegExp("^"+o+o+"*"),r=RegExp(o+o+"*$"),s=function(t){return function(e){var n=String(i(e));return 1&t&&(n=n.replace(a,"")),2&t&&(n=n.replace(r,"")),n}};t.exports={start:s(1),end:s(2),trim:s(3)}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"63a9":function(t,e,n){},6547:function(t,e,n){var i=n("a691"),o=n("1d80"),a=function(t){return function(e,n){var a,r,s=String(o(e)),l=i(n),c=s.length;return l<0||l>=c?t?"":void 0:(a=s.charCodeAt(l))<55296||a>56319||l+1===c||(r=s.charCodeAt(l+1))<56320||r>57343?t?s.charAt(l):a:t?s.slice(l,l+2):r-56320+(a-55296<<10)+65536}};t.exports={codeAt:a(!1),charAt:a(!0)}},"65f0":function(t,e,n){var i=n("861d"),o=n("e8b5"),a=n("b622")("species");t.exports=function(t,e){var n;return o(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[a])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},"69f3":function(t,e,n){var i,o,a,r=n("7f9a"),s=n("da84"),l=n("861d"),c=n("9112"),u=n("5135"),d=n("f772"),p=n("d012"),h=s.WeakMap;if(r){var f=new h,m=f.get,v=f.has,g=f.set;i=function(t,e){return g.call(f,t,e),e},o=function(t){return m.call(f,t)||{}},a=function(t){return v.call(f,t)}}else{var b=d("state");p[b]=!0,i=function(t,e){return c(t,b,e),e},o=function(t){return u(t,b)?t[b]:{}},a=function(t){return u(t,b)}}t.exports={set:i,get:o,has:a,enforce:function(t){return a(t)?o(t):i(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},"6eeb":function(t,e,n){var i=n("da84"),o=n("9112"),a=n("5135"),r=n("ce4e"),s=n("8925"),l=n("69f3"),c=l.get,u=l.enforce,d=String(String).split("String");(t.exports=function(t,e,n,s){var l=!!s&&!!s.unsafe,c=!!s&&!!s.enumerable,p=!!s&&!!s.noTargetGet;"function"==typeof n&&("string"!=typeof e||a(n,"name")||o(n,"name",e),u(n).source=d.join("string"==typeof e?e:"")),t!==i?(l?!p&&t[e]&&(c=!0):delete t[e],c?t[e]=n:o(t,e,n)):c?t[e]=n:r(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&c(this).source||s(this)}))},7156:function(t,e,n){var i=n("861d"),o=n("d2bb");t.exports=function(t,e,n){var a,r;return o&&"function"==typeof(a=e.constructor)&&a!==n&&i(r=a.prototype)&&r!==n.prototype&&o(t,r),t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var i=n("428f"),o=n("5135"),a=n("e538"),r=n("9bf2").f;t.exports=function(t){var e=i.Symbol||(i.Symbol={});o(e,t)||r(e,t,{value:a.f(t)})}},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var i=n("1d80");t.exports=function(t){return Object(i(t))}},"7c73":function(t,e,n){var i,o=n("825a"),a=n("37e8"),r=n("7839"),s=n("d012"),l=n("1be4"),c=n("cc12"),u=n("f772"),d=u("IE_PROTO"),p=function(){},h=function(t){return"