1
0
Fork 0

feat: assign badges

fix-1
Paul Makles 2023-07-28 15:08:46 +01:00
parent 3a246a7052
commit f005456f0d
No known key found for this signature in database
GPG Key ID: 5059F398521BB0F6
14 changed files with 4020 additions and 206 deletions

View File

@ -26,10 +26,16 @@ import {
suspendUser,
unsuspendUser,
updateBotDiscoverability,
updateUserBadges,
} from "@/lib/actions";
import { useRef, useState } from "react";
import { useToast } from "../ui/use-toast";
import { Bot, User } from "revolt-api";
import { Card, CardHeader } from "../ui/card";
import { cn } from "@/lib/utils";
import { decodeTime } from "ulid";
const badges = [1, 2, 4, 8, 16, 32, 128, 0, 256, 512, 1024];
export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
const alertMessage = useRef("");
@ -41,224 +47,271 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
const userInaccessible = userDraft.flags === 4 || userDraft.flags === 2;
return (
<div className="flex gap-2">
{bot ? (
botDraft!.discoverable ? (
<Button
className="flex-1"
onClick={async () => {
try {
await updateBotDiscoverability(bot._id, false);
setBotDraft((bot) => ({ ...bot!, discoverable: false }));
toast({
title: "Removed bot from Discover",
});
} catch (err) {
toast({
title: "Failed to remove bot from Discover",
description: String(err),
variant: "destructive",
});
}
}}
>
Remove from Discover
</Button>
) : (
<Button
className="flex-1"
onClick={async () => {
try {
await updateBotDiscoverability(bot._id, true);
setBotDraft((bot) => ({ ...bot!, discoverable: true }));
toast({
title: "Added bot to Discover",
});
} catch (err) {
toast({
title: "Failed to add bot to Discover",
description: String(err),
variant: "destructive",
});
}
}}
>
Add to Discover
</Button>
)
) : (
<Link
className={`flex-1 ${buttonVariants()}`}
href={`/panel/inspect/account/${user._id}`}
>
Account
</Link>
)}
<>
<Card>
<CardHeader className="w-full flex flex-row gap-2 justify-center items-center flex-wrap">
{badges.map((badge) => {
const sysBadge =
(badge === 0 && user._id === "01EX2NCWQ0CHS3QJF0FEQS1GR4") ||
(badge === 256 && decodeTime(user._id) < 1629638578431);
return (
// eslint-disable-next-line
<img
key={badge}
src={`/badges/${badge === 8 ? 2048 : badge}.svg`}
className={cn(
"w-7 h-7 transition-all !m-0",
sysBadge
? ""
: (userDraft.badges ?? 0) & badge
? "cursor-pointer"
: "cursor-pointer opacity-40 hover:opacity-60 grayscale hover:grayscale-0"
)}
onClick={async () => {
if (sysBadge) return;
<AlertDialog>
<AlertDialogTrigger asChild>
<Button
className="flex-1 bg-orange-400 hover:bg-orange-300"
disabled={userInaccessible}
>
{userDraft.flags === 1 ? "Unsuspend" : "Suspend"}
</Button>
</AlertDialogTrigger>
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>
Are you sure you want to{" "}
{userDraft.flags === 1 ? "unsuspend" : "suspend"} this user?
</AlertDialogTitle>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>Cancel</AlertDialogCancel>
<AlertDialogAction
onClick={() =>
userDraft.flags === 1
? unsuspendUser(user._id)
.then(() => {
setUserDraft((user) => ({ ...user, flags: 0 }));
toast({ title: "Unsuspended user" });
})
.catch((err) =>
toast({
title: "Failed to unsuspend user!",
description: String(err),
variant: "destructive",
})
)
: suspendUser(user._id)
.then(() => {
setUserDraft((user) => ({ ...user, flags: 1 }));
toast({ title: "Suspended user" });
})
.catch((err) =>
toast({
title: "Failed to suspend user!",
description: String(err),
variant: "destructive",
})
)
}
>
Suspend
</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
<AlertDialog>
<AlertDialogTrigger asChild>
<Button
className="flex-1"
variant="destructive"
disabled={userInaccessible}
>
{userDraft.flags === 4 ? "Banned" : "Ban"}
</Button>
</AlertDialogTrigger>
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>
Are you sure you want to ban this user?
</AlertDialogTitle>
<AlertDialogDescription className="text-red-700">
This action is irreversible!
</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>Cancel</AlertDialogCancel>
<AlertDialogAction
onClick={() =>
banUser(user._id)
.then(() => {
setUserDraft((user) => ({ ...user, flags: 4 }));
toast({ title: "Banned user" });
})
.catch((err) =>
try {
const badges =
(decodeTime(user._id) < 1629638578431 ? 256 : 0) |
((userDraft.badges ?? 0) ^ badge);
await updateUserBadges(user._id, badges);
setUserDraft((user) => ({ ...user!, badges }));
toast({
title: "Failed to ban user!",
title: "Updated user badges",
});
} catch (err) {
toast({
title: "Failed to update user badges",
description: String(err),
variant: "destructive",
})
)
}
>
Ban
</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" className="flex-1">
More Options
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
<AlertDialog>
<AlertDialogTrigger asChild>
<DropdownMenuItem
onClick={() => {
throw "Cancel immediate propagation.";
});
}
}}
disabled={userInaccessible}
>
Send Alert
</DropdownMenuItem>
</AlertDialogTrigger>
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>Send Alert</AlertDialogTitle>
<AlertDialogDescription className="flex flex-col gap-2">
<span>
This will send a message from the Platform Moderation
account.
</span>
<Input
placeholder="Enter a message..."
name="message"
onChange={(e) =>
(alertMessage.current = e.currentTarget.value)
}
/>
</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>Cancel</AlertDialogCancel>
<AlertDialogAction
onClick={() => {
if (!alertMessage.current) return;
alertMessage.current = "";
/>
);
})}
</CardHeader>
</Card>
sendAlert(user._id, alertMessage.current)
.then(() => toast({ title: "Sent Alert" }))
.catch((err) =>
toast({
title: "Failed to send alert!",
description: String(err),
variant: "destructive",
<div className="flex gap-2">
{bot ? (
botDraft!.discoverable ? (
<Button
className="flex-1"
onClick={async () => {
try {
await updateBotDiscoverability(bot._id, false);
setBotDraft((bot) => ({ ...bot!, discoverable: false }));
toast({
title: "Removed bot from Discover",
});
} catch (err) {
toast({
title: "Failed to remove bot from Discover",
description: String(err),
variant: "destructive",
});
}
}}
>
Remove from Discover
</Button>
) : (
<Button
className="flex-1"
onClick={async () => {
try {
await updateBotDiscoverability(bot._id, true);
setBotDraft((bot) => ({ ...bot!, discoverable: true }));
toast({
title: "Added bot to Discover",
});
} catch (err) {
toast({
title: "Failed to add bot to Discover",
description: String(err),
variant: "destructive",
});
}
}}
>
Add to Discover
</Button>
)
) : (
<Link
className={`flex-1 ${buttonVariants()}`}
href={`/panel/inspect/account/${user._id}`}
>
Account
</Link>
)}
<AlertDialog>
<AlertDialogTrigger asChild>
<Button
className="flex-1 bg-orange-400 hover:bg-orange-300"
disabled={userInaccessible}
>
{userDraft.flags === 1 ? "Unsuspend" : "Suspend"}
</Button>
</AlertDialogTrigger>
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>
Are you sure you want to{" "}
{userDraft.flags === 1 ? "unsuspend" : "suspend"} this user?
</AlertDialogTitle>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>Cancel</AlertDialogCancel>
<AlertDialogAction
onClick={() =>
userDraft.flags === 1
? unsuspendUser(user._id)
.then(() => {
setUserDraft((user) => ({ ...user, flags: 0 }));
toast({ title: "Unsuspended user" });
})
);
}}
>
Send
</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
.catch((err) =>
toast({
title: "Failed to unsuspend user!",
description: String(err),
variant: "destructive",
})
)
: suspendUser(user._id)
.then(() => {
setUserDraft((user) => ({ ...user, flags: 1 }));
toast({ title: "Suspended user" });
})
.catch((err) =>
toast({
title: "Failed to suspend user!",
description: String(err),
variant: "destructive",
})
)
}
>
Suspend
</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
{/* <DropdownMenuItem>
<AlertDialog>
<AlertDialogTrigger asChild>
<Button
className="flex-1"
variant="destructive"
disabled={userInaccessible}
>
{userDraft.flags === 4 ? "Banned" : "Ban"}
</Button>
</AlertDialogTrigger>
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>
Are you sure you want to ban this user?
</AlertDialogTitle>
<AlertDialogDescription className="text-red-700">
This action is irreversible!
</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>Cancel</AlertDialogCancel>
<AlertDialogAction
onClick={() =>
banUser(user._id)
.then(() => {
setUserDraft((user) => ({ ...user, flags: 4 }));
toast({ title: "Banned user" });
})
.catch((err) =>
toast({
title: "Failed to ban user!",
description: String(err),
variant: "destructive",
})
)
}
>
Ban
</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" className="flex-1">
More Options
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
<AlertDialog>
<AlertDialogTrigger asChild>
<DropdownMenuItem
onClick={() => {
throw "Cancel immediate propagation.";
}}
disabled={userInaccessible}
>
Send Alert
</DropdownMenuItem>
</AlertDialogTrigger>
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>Send Alert</AlertDialogTitle>
<AlertDialogDescription className="flex flex-col gap-2">
<span>
This will send a message from the Platform Moderation
account.
</span>
<Input
placeholder="Enter a message..."
name="message"
onChange={(e) =>
(alertMessage.current = e.currentTarget.value)
}
/>
</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>Cancel</AlertDialogCancel>
<AlertDialogAction
onClick={() => {
if (!alertMessage.current) return;
alertMessage.current = "";
sendAlert(user._id, alertMessage.current)
.then(() => toast({ title: "Sent Alert" }))
.catch((err) =>
toast({
title: "Failed to send alert!",
description: String(err),
variant: "destructive",
})
);
}}
>
Send
</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
{/* <DropdownMenuItem>
Clear ({counts.pending}) Friend Requests
</DropdownMenuItem>
<DropdownMenuItem>
Clear All ({counts.all}) Relations
</DropdownMenuItem> */}
</DropdownMenuContent>
</DropdownMenu>
</div>
</DropdownMenuContent>
</DropdownMenu>
</div>
</>
);
}

View File

@ -84,7 +84,6 @@ export async function suspendUser(userId: string) {
);
const memberships = await fetchMembershipsByUser(userId);
for (const topic of memberships.map((x) => x._id.server)) {
await publishMessage(topic, {
type: "UserUpdate",
@ -92,6 +91,32 @@ export async function suspendUser(userId: string) {
data: {
flags: 1,
},
clear: [],
});
}
}
export async function updateUserBadges(userId: string, badges: number) {
await mongo().db("revolt").collection<User>("users").updateOne(
{
_id: userId,
},
{
$set: {
badges,
},
}
);
const memberships = await fetchMembershipsByUser(userId);
for (const topic of [userId, ...memberships.map((x) => x._id.server)]) {
await publishMessage(topic, {
type: "UserUpdate",
id: userId,
data: {
badges,
},
clear: [],
});
}
}

20
public/badges/0.svg Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-miterlimit:3;">
<metadata>
<rdf:RDF xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc = "http://purl.org/dc/elements/1.1/"
>
<rdf:Description rdf:about="">
<dc:title>Mutant Standard emoji 2020.04</dc:title>
</rdf:Description>
<cc:work rdf:about="">
<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/4.0/"/>
<cc:attributionName>Dzuk</cc:attributionName>
<cc:attributionURL>http://mutant.tech/</cc:attributionURL>
</cc:work>
</rdf:RDF>
</metadata>
<rect id="raccoon" x="0" y="0" width="32" height="32" style="fill:none;"/><clipPath id="_clip1"><rect x="0" y="0" width="32" height="32"/></clipPath><g clip-path="url(#_clip1)"><g id="outline"><path d="M21.369,8.952c0.087,-0.295 0.247,-0.568 0.471,-0.792c0.001,-0.001 0.001,-0.001 0.002,-0.002c0.105,-0.105 0.226,-0.192 0.358,-0.258c0.792,-0.396 3.729,-1.865 5.094,-2.547c0.187,-0.094 0.404,-0.109 0.603,-0.043c0.198,0.066 0.362,0.209 0.456,0.396c0,0 0,0 0,0.001c0.407,0.814 0.407,1.772 0,2.586c-0.575,1.151 -1.401,2.803 -1.906,3.813c-0.009,0.017 -0.018,0.034 -0.027,0.051c0.715,0.946 1.222,2.054 1.462,3.255c0.536,2.68 1.118,5.588 1.118,5.588l-2,0l0,2l-2,-1c0,0 -3.283,2.189 -4.992,3.328c-0.657,0.438 -1.429,0.672 -2.219,0.672c-1.042,0 -2.536,0 -3.578,0c-0.79,0 -1.562,-0.234 -2.219,-0.672c-1.709,-1.139 -4.992,-3.328 -4.992,-3.328l-2,1l0,-2l-2,0l1.118,-5.588c0.24,-1.201 0.747,-2.309 1.462,-3.255c-0.009,-0.017 -0.018,-0.034 -0.027,-0.051c-0.505,-1.01 -1.331,-2.662 -1.906,-3.813c-0.407,-0.814 -0.407,-1.772 0,-2.586c0,-0.001 0,-0.001 0,-0.001c0.094,-0.187 0.258,-0.33 0.456,-0.396c0.199,-0.066 0.416,-0.051 0.603,0.043c1.365,0.682 4.302,2.151 5.094,2.547c0.132,0.066 0.253,0.153 0.358,0.258c0.001,0.001 0.001,0.001 0.002,0.002c0.224,0.224 0.384,0.497 0.471,0.792l1.268,-0.461c2.649,-0.963 5.553,-0.963 8.202,0l1.268,0.461Z" style="fill:none;stroke:#000;stroke-width:4px;"/></g><g id="emoji"><g><path d="M3.993,16.036l0.125,-0.624c0.548,-2.74 2.485,-4.995 5.11,-5.95c0.877,-0.318 1.799,-0.654 2.671,-0.971c2.649,-0.963 5.553,-0.963 8.202,0c0.872,0.317 1.794,0.653 2.671,0.971c2.625,0.955 4.562,3.21 5.11,5.95l0.125,0.624c-2.191,-1.95 -5.028,-3.036 -7.978,-3.036c-0.009,0 -0.019,0 -0.029,0c-1.657,0 -3,1.343 -3,3c0,1.105 0.895,2 2,2c0,0 0,0 0,0l1,1l-4,4l-4,-4l1,-1l0,0c1.105,0 2,-0.895 2,-2c0,-1.657 -1.343,-3 -3,-3c-0.01,0 -0.02,0 -0.029,0c-2.95,0 -5.787,1.086 -7.978,3.036Z" style="fill:#878787;"/><path d="M19.333,19.667c0.01,0.004 3.479,0.333 3.479,0.333c0,0 -0.353,2.537 0,3.459l-2.804,1.869c-0.657,0.438 -1.429,0.672 -2.219,0.672c-1.042,0 -2.536,0 -3.578,0c-0.79,0 -1.562,-0.234 -2.219,-0.672l-2.804,-1.869c0.342,-0.893 0,-3.097 0,-3.097c0,0 3.469,-0.691 3.479,-0.695l3.333,3.333l3.333,-3.333Zm-1.319,-1.927c-0.606,-0.343 -1.014,-0.994 -1.014,-1.74c0,-1.657 1.343,-3 3,-3c0.01,0 0.02,0 0.029,0c2.95,0 5.787,1.086 7.978,3.036l0.993,4.964l-1.667,0c0,0 -9.328,-3.346 -9.319,-3.26Zm-13.347,3.26l-1.667,0l0.993,-4.964c2.191,-1.95 5.028,-3.036 7.978,-3.036c0.009,0 0.019,0 0.029,0c1.657,0 3,1.343 3,3c0,0.746 -0.408,1.397 -1.014,1.74c0.009,-0.086 -9.319,3.26 -9.319,3.26Z" style="fill:#e1e1e1;"/><path d="M4.667,21l1.626,-2.927c1.054,-1.897 3.053,-3.073 5.222,-3.073c0.003,0 0.006,0 0.009,0c1.367,0 2.476,1.109 2.476,2.476c0,0.001 0,0.002 0,0.002c0,0.933 -0.527,1.785 -1.361,2.202c-0.015,0.008 -0.03,0.016 -0.046,0.023c-1.567,0.784 -2.781,2.126 -3.405,3.756l-2.188,-1.459l-2,1l0,-2l-0.333,0Zm18.145,2.459c-0.624,-1.63 -1.838,-2.972 -3.405,-3.756c-0.016,-0.007 -0.031,-0.015 -0.046,-0.023c-0.834,-0.417 -1.361,-1.269 -1.361,-2.202c0,0 0,-0.001 0,-0.002c0,-1.367 1.109,-2.476 2.476,-2.476c0.003,0 0.006,0 0.009,0c2.169,0 4.168,1.176 5.222,3.073l1.626,2.927l-0.333,0l0,2l-2,-1l-2.188,1.459Z" style="fill:#484848;"/><g><circle cx="11.5" cy="17.5" r="1.5"/><circle cx="20.5" cy="17.5" r="1.5"/><path d="M15.236,21c-0.155,0 -0.308,0.036 -0.447,0.106c-0.047,0.023 -0.1,0.049 -0.158,0.078c-0.901,0.451 -1.266,1.546 -0.815,2.447c0,0.001 0,0.001 0,0.001c0.113,0.226 0.343,0.368 0.595,0.368c0.768,0 2.41,0 3.178,0c0.252,0 0.482,-0.142 0.595,-0.368c0,0 0,0 0,-0.001c0.451,-0.901 0.086,-1.996 -0.815,-2.447c-0.058,-0.029 -0.111,-0.055 -0.158,-0.078c-0.139,-0.07 -0.292,-0.106 -0.447,-0.106c-0.385,0 -1.143,0 -1.528,0Z"/></g></g><path d="M6.894,12.553c-0.494,0.247 -1.094,0.047 -1.341,-0.447c-0.505,-1.01 -1.331,-2.662 -1.906,-3.813c-0.407,-0.814 -0.407,-1.772 0,-2.586c0,-0.001 0,-0.001 0,-0.001c0.094,-0.187 0.258,-0.33 0.456,-0.396c0.199,-0.066 0.416,-0.051 0.603,0.043c1.365,0.682 4.302,2.151 5.094,2.547c0.132,0.066 0.253,0.153 0.358,0.258c0.001,0.001 0.001,0.001 0.002,0.002c0.426,0.426 0.621,1.031 0.525,1.627c-0.097,0.595 -0.474,1.107 -1.013,1.377c-0.973,0.486 -2.044,1.022 -2.778,1.389Zm18.212,0c0.494,0.247 1.094,0.047 1.341,-0.447c0.505,-1.01 1.331,-2.662 1.906,-3.813c0.407,-0.814 0.407,-1.772 0,-2.586c0,-0.001 0,-0.001 0,-0.001c-0.094,-0.187 -0.258,-0.33 -0.456,-0.396c-0.199,-0.066 -0.416,-0.051 -0.603,0.043c-1.365,0.682 -4.302,2.151 -5.094,2.547c-0.132,0.066 -0.253,0.153 -0.358,0.258c-0.001,0.001 -0.001,0.001 -0.002,0.002c-0.426,0.426 -0.621,1.031 -0.525,1.627c0.097,0.595 0.474,1.107 1.013,1.377c0.973,0.486 2.044,1.022 2.778,1.389Z" style="fill:#484848;"/></g></g></svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

40
public/badges/1.svg Normal file
View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="343"
height="343"
viewBox="0 0 343 343"
fill="none"
version="1.1"
id="svg6"
sodipodi:docname="developer.svg"
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10" />
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="2.5451895"
inkscape:cx="171.30355"
inkscape:cy="171.5"
inkscape:window-width="3840"
inkscape:window-height="2089"
inkscape:window-x="1680"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
d="M 305.64988,87.191016 247.50845,145.3188 194.6717,92.467053 252.79949,34.340626 C 217.61455,19.871627 175.68861,26.897158 147.12599,55.489784 118.56337,84.052402 111.52229,125.99334 125.99184,161.17828 l -93.806513,93.79014 c -5.84347,5.84347 -5.84347,15.29069 0,21.13416 l 31.7176,31.7176 c 5.84347,5.84347 15.290685,5.84347 21.134154,0 l 93.790139,-93.80651 c 35.18495,14.46818 77.12589,7.42846 105.68851,-21.13416 28.56262,-28.57762 35.58869,-70.51856 21.13415,-105.688494 z"
fill="#99aab5"
id="path4"
style="stroke-width:1.36402" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

3018
public/badges/1024.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 258 KiB

38
public/badges/128.svg Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<metadata>
<rdf:RDF xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc = "http://purl.org/dc/elements/1.1/"
>
<rdf:Description rdf:about="">
<dc:title>Mutant Standard emoji 2020.04</dc:title>
</rdf:Description>
<cc:work rdf:about="">
<cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/4.0/"/>
<cc:attributionName>Dzuk</cc:attributionName>
<cc:attributionURL>http://mutant.tech/</cc:attributionURL>
</cc:work>
</rdf:RDF>
</metadata>
<rect id="v--paw-" serif:id="v [paw]" x="0" y="0" width="32" height="32" style="fill:none;"/>
<clipPath id="_clip1">
<rect x="0" y="0" width="32" height="32"/>
</clipPath>
<g clip-path="url(#_clip1)">
<g id="Layer10">
<path d="M19.25,3.52c0.755,-2.176 3.064,-3.455 5.341,-2.886c2.41,0.603 3.877,3.048 3.275,5.457l-1.866,7.463l0,1.77c0.832,0.315 1.575,0.85 2.142,1.563c0.948,1.193 1.301,2.753 0.959,4.237c-0.116,0.502 -0.238,1.032 -0.363,1.574c-1.257,5.445 -6.105,9.302 -11.693,9.302l-0.045,-0.018l0,0.014c0,0 -0.412,0 -1.035,0c-5.571,0 -10.426,-3.79 -11.778,-9.194c-0.609,-2.431 -1.178,-4.706 -1.178,-4.706c-0.603,-2.409 0.864,-4.855 3.273,-5.457c0.165,-0.042 0.331,-0.073 0.495,-0.096c0.188,-1.832 1.498,-3.436 3.387,-3.909c0.358,-0.089 0.718,-0.133 1.072,-0.135l-0.602,-2.408c-0.602,-2.409 0.865,-4.854 3.275,-5.457c2.277,-0.569 4.586,0.71 5.341,2.886Z"/>
</g>
<g id="Layer9">
<path d="M7,15c2.268,-2.268 2.496,-1.997 5,-4c0.736,-0.589 1.057,-2 2,-2c0.943,0 1.333,1.333 2,2l8,4l0,9l-8,-2l-9,0l0,-1.606c-0.517,-0.015 -1.015,-0.156 -1.455,-0.402l-0.558,-2.229l2.013,-2.763Z" style="fill:#5E3583;"/>
<path d="M24.229,17c0.914,0 1.778,0.417 2.348,1.132c0.569,0.716 0.781,1.652 0.575,2.543c-0.116,0.502 -0.238,1.032 -0.363,1.574c-1.047,4.537 -5.088,7.751 -9.744,7.751l-0.045,0c0.001,-0.001 0.001,-0.003 0.002,-0.004l-0.002,0l-1.035,0c-4.653,0 -8.709,-3.166 -9.838,-7.679l-0.582,-2.325c0.681,0.381 1.503,0.511 2.316,0.308c0.01,-0.002 0.021,-0.005 0.031,-0.008c0.933,-0.233 1.709,-0.877 2.111,-1.75c0.138,-0.299 0.226,-0.614 0.266,-0.933c0.694,0.426 1.549,0.577 2.385,0.368c0.001,0 0.002,-0.001 0.002,-0.001c0.201,-0.05 0.393,-0.119 0.574,-0.205c-0.02,0.019 0.978,0.078 0.909,-0.655c0.538,-0.562 0.861,-1.321 0.861,-2.141c0,-0.161 0,-0.313 0,-0.447c0,-0.405 -0.068,-0.807 -0.2,-1.19l-1.059,-3.064l-1.166,-4.668c-0.335,-1.338 0.48,-2.697 1.819,-3.031c1.338,-0.335 2.697,0.48 3.031,1.819l1.825,7.298l1.825,-7.298c0.088,-0.344 0.243,-0.666 0.463,-0.944c0.2,-0.252 0.448,-0.465 0.728,-0.624c0.271,-0.154 0.57,-0.257 0.879,-0.301c0.277,-0.04 0.561,-0.032 0.836,0.022c0.269,0.052 0.529,0.149 0.766,0.286c0.22,0.126 0.42,0.286 0.591,0.473c0.347,0.377 0.574,0.86 0.641,1.369c0.041,0.312 0.02,0.627 -0.054,0.931l-1.925,7.702l0,1.692l-8,0l0,1.663l-1,1.337c0,3.314 3.686,6 7,6l1,-1l0,-2l-1,0c-2.209,0 -4,-1.791 -4,-4l6.229,0Zm-19.242,0.763l-0.038,-0.152c-0.335,-1.339 0.48,-2.697 1.818,-3.032c0.521,-0.131 1.045,-0.087 1.511,0.094l0.786,1.573c0.295,0.589 0.306,1.28 0.031,1.878c-0.275,0.598 -0.807,1.039 -1.446,1.198c-0.01,0.003 -0.02,0.005 -0.031,0.008c-1.119,0.28 -2.262,-0.365 -2.6,-1.468l-0.031,-0.099Zm3.816,-4.275c-0.26,-1.299 0.546,-2.589 1.846,-2.913c0.876,-0.219 1.761,0.054 2.361,0.645l0.845,2.444c0.096,0.278 0.145,0.57 0.145,0.864c0,0.134 0,0.286 0,0.447c0,0.961 -0.654,1.798 -1.586,2.031c-0.001,0 -0.002,0.001 -0.003,0.001c-0.96,0.24 -1.958,-0.219 -2.401,-1.105l-1.207,-2.414Z" style="fill:#C596FD;"/>
<path d="M23,23l0,1.158c0,0.923 -0.426,1.796 -1.154,2.364c-0.728,0.569 -1.677,0.77 -2.574,0.546c-0.917,-0.229 -1.782,-0.445 -2.294,-0.574c-0.318,-0.079 -0.643,-0.119 -0.97,-0.119l-0.016,0c-0.327,0 -0.652,0.04 -0.97,0.119c-0.512,0.129 -1.377,0.345 -2.294,0.574c-0.897,0.224 -1.846,0.023 -2.574,-0.546c-0.728,-0.568 -1.154,-1.441 -1.154,-2.364c0,-0.172 0,-0.34 0,-0.501c0,-1.061 0.421,-2.078 1.172,-2.829c0.819,-0.819 1.951,-1.951 3,-3c0.019,-0.019 0.038,-0.038 0.058,-0.057c0.345,-0.163 0.652,-0.386 0.909,-0.655c0.569,-0.299 1.207,-0.459 1.861,-0.459l0,0.343c0,3.314 2.686,6 6,6l1,0Z" style="fill:#8149BC;"/>
<path d="M23.704,4.041c1.047,0.261 1.589,1.707 1.21,3.226c-0.378,1.52 -1.536,2.542 -2.583,2.281c-1.047,-0.261 -1.589,-1.707 -1.21,-3.227c0.379,-1.519 1.536,-2.541 2.583,-2.28Zm-8.943,0.001c-1.047,0.261 -1.596,1.677 -1.227,3.16c0.37,1.483 1.52,2.475 2.567,2.214c1.047,-0.261 1.597,-1.677 1.227,-3.16c-0.37,-1.483 -1.52,-2.475 -2.567,-2.214Z" style="fill:#8149BC;"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

41
public/badges/16.svg Normal file
View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="343"
height="343"
viewBox="0 0 343 343"
fill="none"
version="1.1"
id="svg6"
sodipodi:docname="founder.svg"
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10" />
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="2.5451895"
inkscape:cx="171.30355"
inkscape:cy="171.5"
inkscape:window-width="3840"
inkscape:window-height="2089"
inkscape:window-x="1680"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
d="m 233.20363,120.30495 c 0,23.32978 -12.69345,37.33415 -39.78401,37.33415 h -44.853 V 83.816247 h 44.86112 c 27.08244,0 39.77589,14.422841 39.77589,36.488703 z M 32.781712,23.579841 76.206371,83.95858 V 321.35524 H 148.57475 V 208.96003 h 17.35345 l 61.7961,112.41959 h 81.68066 L 240.84435,203.44414 c 19.14242,-4.66948 36.11939,-15.75136 48.12217,-31.41064 12.00278,-15.65927 18.31226,-34.95744 17.88296,-54.70047 0,-51.756865 -36.39295,-93.753189 -109.18833,-93.753189 H 76.206371 Z"
fill="#efab44"
stroke="#efab44"
stroke-width="0.97733"
id="path2" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

15
public/badges/2.svg Normal file
View File

@ -0,0 +1,15 @@
<svg width="343" height="343" viewBox="0 0 343 343" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<rect x="141.421" y="31" width="200" height="200" transform="rotate(45 141.421 31)" fill="#01BE6E"/>
<path d="M137.926 182.464C128.751 173.507 120.668 165.642 116.08 147.51H148.194V133.965H116.298V116.051H102.535V134.184H70.4214V147.728H103.191C103.191 147.728 102.972 150.35 102.535 152.316C97.9475 170.23 92.486 181.59 70.4214 192.731L75.0091 206.276C95.9814 195.134 106.904 181.153 111.711 165.642C116.298 177.439 124.163 187.051 133.12 195.79L137.926 182.464Z" fill="white"/>
<path d="M180.307 138.551H161.956L129.842 228.775H143.605L152.781 201.686H189.482L198.658 228.775H212.421L180.307 138.551ZM157.368 188.142L171.132 152.095L184.895 188.36L157.368 188.142Z" fill="white"/>
<path d="M305.473 170.182L208.174 267.48C206.834 268.82 205.148 269.773 203.306 270.234L148.421 281.018L159.206 226.123C159.666 224.291 160.619 222.605 161.959 221.265L259.258 123.967L274.421 108.803L320.421 103.921V155.233L305.473 170.182Z" fill="#99AAB5"/>
<path d="M208.174 267.478L305.473 170.18L259.258 123.965L161.959 221.263C160.619 222.603 159.666 224.289 159.206 226.121L148.421 281.016L203.306 270.232C205.148 269.771 206.834 268.818 208.174 267.478ZM336.883 138.769C345.06 130.592 345.06 117.337 336.883 109.16L320.278 92.5542C312.1 84.3771 298.845 84.3771 290.668 92.5542L274.063 109.16L320.278 155.375L336.883 138.769Z" fill="#EA596E"/>
<path d="M305.473 170.182L208.174 267.48C206.834 268.82 205.148 269.773 203.306 270.234L148.421 281.018L159.206 226.123C159.666 224.291 160.619 222.605 161.959 221.265L259.258 123.967L305.473 170.182Z" fill="#FFCC4D"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="343" height="343" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

245
public/badges/2048.svg Normal file
View File

@ -0,0 +1,245 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1000 1000" style="enable-background:new 0 0 1000 1000;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{fill:#FFEB84;}
.st2{fill:#FFFD80;}
.st3{fill:#FFFFC0;}
.st4{fill:#FFFFE8;}
.st5{fill:#E1AF21;}
.st6{fill:#FFDA51;}
.st7{fill:#FFFBC0;}
.st8{fill:#FFE27B;}
.st9{fill:#DEB142;}
.st10{fill:url(#SVGID_1_);}
.st11{fill:#FDDB4A;}
.st12{fill:#FFED89;}
.st13{fill:#AB6D10;}
.st14{fill:#ECBF39;}
.st15{fill:#FFDA63;}
.st16{fill:#D6A442;}
.st17{fill:#C28631;}
.st18{fill:#652C07;}
.st19{fill:#C67726;}
.st20{fill:#875117;}
.st21{fill:#E0A053;}
.st22{fill:#D68931;}
.st23{fill:#945108;}
.st24{fill:#C1823C;}
.st25{fill:#FFC571;}
.st26{fill:#DA9D52;}
.st27{fill:#FCB54F;}
.st28{fill:#BA6D1C;}
.st29{fill:#ECCE82;}
.st30{fill:#E9AF5C;}
.st31{fill:#FFE173;}
.st32{fill:#FFFFC8;}
.st33{fill:#CE8229;}
.st34{fill:url(#SVGID_00000170236236534105620470000017283433196162258594_);}
.st35{fill:url(#SVGID_00000154411126143589039630000017497239855776706224_);}
.st36{fill:#532308;}
.st37{fill:#683218;}
.st38{fill:#844929;}
.st39{fill:#582309;}
.st40{fill:#7A4021;}
.st41{fill:#783F21;}
.st42{fill:#5A250A;}
.st43{fill:#3C0F07;}
.st44{fill:#4F1E06;}
.st45{fill:#210308;}
.st46{fill:url(#SVGID_00000146478660205493002300000009688568192017483139_);}
.st47{fill:url(#SVGID_00000010288141256007762670000007620850369090276751_);}
.st48{fill:#944918;}
.st49{fill:#773810;}
.st50{fill:#AD6121;}
.st51{fill:url(#SVGID_00000034800115922175574390000013293002930374637188_);}
.st52{fill:#FFFFD9;}
.st53{fill:#8C4918;}
.st54{fill:#5C2D0E;}
.st55{fill:#EFDC84;}
.st56{fill:#FFF7DB;}
</style>
<g id="Layer_2">
<g>
<polygon class="st0" points="500,74 324,250 135,193 270,670 340,705 500,746 "/>
<path class="st1" d="M324,250l-82.5,97.5c22.9-3.8,110.1-21,174.5-100.5c48.6-60,58.5-123.7,61.1-150.1C426,148,375,199,324,250z"
/>
<polygon class="st2" points="283.7,237.9 241.5,347.5 324,250 "/>
<polygon class="st3" points="185.3,208.2 241.5,347.5 283.7,237.9 "/>
<polygon class="st4" points="135,193 241.5,347.5 185.3,208.2 "/>
<path class="st5" d="M244.2,579c4.5,4.7,28,32,28.8,33c7.9,10.9,33.7,40.9,74.5,68.5C406,720,458.6,734.7,456,734
c-38.6-9.9-77.4-19.1-116-29l-70-35L244.2,579z"/>
<polygon class="st6" points="241.5,347.5 283.7,626.3 310.5,588.5 "/>
<polygon class="st7" points="500,705.1 283.7,626.3 310.5,588.5 500,646.8 "/>
<path class="st8" d="M500,746c-31-6.5-75-19.3-122.5-46.5c-42.3-24.2-73.1-51.7-93.8-73.2c72.1,26.3,144.2,52.6,216.3,78.8V746z"
/>
<polygon class="st9" points="135,193 241.5,347.5 283.7,626.3 244.2,579 "/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="393.5" y1="180.5" x2="806.5" y2="593.5">
<stop offset="0" style="stop-color:#FDDB4A"/>
<stop offset="1" style="stop-color:#C28631"/>
</linearGradient>
<polygon class="st10" points="500,74 676,250 865,193 730,670 660,705 500,746 "/>
<polygon class="st11" points="716.3,237.9 758.5,347.5 676,250 "/>
<polygon class="st12" points="814.7,208.2 758.5,347.5 716.3,237.9 "/>
<polygon class="st4" points="865,193 758.5,347.5 814.7,208.2 "/>
<path class="st13" d="M755.8,579c-4.5,4.7-28,32-28.8,33c-7.9,10.9-33.7,40.9-74.5,68.5C594,720,541.4,734.7,544,734
c38.6-9.9,77.4-19.1,116-29l70-35L755.8,579z"/>
<polygon class="st14" points="758.5,347.5 716.3,626.3 689.5,588.5 "/>
<polygon class="st15" points="500,705.1 716.3,626.3 689.5,588.5 500,646.8 "/>
<path class="st16" d="M500,746c31-6.5,75-19.3,122.5-46.5c42.3-24.2,73.1-51.7,93.8-73.2c-72.1,26.3-144.2,52.6-216.3,78.8V746z"/>
<polygon class="st17" points="865,193 758.5,347.5 716.3,626.3 755.8,579 "/>
<g>
<path class="st18" d="M372,741l24.9,61.1l30.4,10.9l38.2-37.6c-18-5.9-36.5-12.3-55.5-19.5C396.9,751.1,384.3,746.1,372,741z"/>
<polygon class="st19" points="408.5,831.5 396.9,802.1 427.3,813.1 "/>
<path class="st20" d="M305.9,753.3L372,741l24.9,61.1c-14.1-5.3-30-12.1-46.9-21.1C332.9,771.8,318.2,762.3,305.9,753.3z"/>
<path class="st21" d="M256.7,753.4l49.1-0.2c12.9,9.1,28,18.6,45.1,27.7c16.3,8.7,31.8,15.6,45.9,21.1c3.9,9.8,7.7,19.6,11.6,29.4
C387,825.8,361,817,333,803C300.9,787,275.5,769,256.7,753.4z"/>
<path class="st22" d="M227.6,727.1l19.8-22.9L277,731c-8,0-16.9-0.2-26-1C242.7,729.3,234.9,728.3,227.6,727.1z"/>
<path class="st23" d="M341.5,724.2c-11.1,1.9-22.9,3.5-35.5,4.8c-10.1,1-19.8,1.6-29,2c-9.9-8.9-19.8-17.8-29.6-26.7l28.6-33
L341.5,724.2z"/>
<polygon class="st24" points="209,658 247.4,704.3 276,671.2 "/>
<path class="st25" d="M162.8,643.1c7.5,2.7,15.2,5.3,23.2,7.9c7.8,2.5,15.5,4.8,23,7c12.8,15.4,25.6,30.8,38.4,46.3l-19.8,22.9
C215.8,715.9,202.8,702,190,685C178.8,670.2,169.9,655.9,162.8,643.1z"/>
<path class="st26" d="M162.1,546.4c1.8,7.3,3.7,14.8,5.9,22.6c2.2,7.7,4.5,15.1,6.8,22.2c10.9-6.5,22.2-12.6,33.2-19.2
L162.1,546.4z"/>
<path class="st27" d="M145.3,609.6l29.5-18.5l17.6,39c-7.6-2.1-16.2-5-25.4-9.1C158.7,617.3,151.5,613.4,145.3,609.6z"/>
<path class="st28" d="M174.8,591.2L208,572c5.1,10.8,10.7,21.9,18,34c8.5,14.1,17.2,26.5,25.5,37.1c-19.7-4.3-39.4-8.7-59.1-13
L174.8,591.2z"/>
<path class="st28" d="M223,608"/>
<path class="st29" d="M111.9,508c6.2,5.6,12.9,11.3,20.1,17c10.4,8.2,20.5,15.3,30.1,21.4c4.3,14.9,8.5,29.8,12.8,44.7l-29.5,18.5
c-6.9-13.2-14.1-29.1-20.3-47.6C118.3,542,114.3,523.6,111.9,508z"/>
<polygon class="st30" points="159,430 178.5,452.5 156.5,456.2 "/>
<path class="st31" d="M106.3,469l50.2-12.8l0.6,57.1c-7.9-5.4-16.3-11.8-25-19.3C122,485.4,113.5,476.9,106.3,469z"/>
<path class="st32" d="M108.5,357.5L159,430l-2.5,26.2L106.3,469c-1.7-16.9-2.7-36-2.3-57C104.5,391.9,106.2,373.7,108.5,357.5z"/>
<path class="st33" d="M156.5,456.2l22-3.7c0.5,13,1.9,28.4,5.5,45.5c3.3,15.6,7.5,29.2,11.9,40.6c-12.9-8.4-25.9-16.9-38.8-25.3
c-0.6-9.6-1-19.7-1-30.3C155.9,473.7,156.1,464.8,156.5,456.2z"/>
<path class="st25" d="M184,647"/>
<linearGradient id="SVGID_00000181052587624855630620000008982042343058031036_" gradientUnits="userSpaceOnUse" x1="37.5" y1="635" x2="437.5" y2="635">
<stop offset="0" style="stop-color:#844215"/>
<stop offset="1" style="stop-color:#D38047"/>
</linearGradient>
<path style="fill:url(#SVGID_00000181052587624855630620000008982042343058031036_);" d="M108.5,357.5
C104.2,385.9,82,550.1,195,691c76.7,95.6,174.6,129.4,213.5,140.5c9.7,27,19.3,54,29,81C400.4,906.1,246.9,875.2,137,733
C48,617.8,38.8,495.9,37.5,452.5C61.2,420.8,84.8,389.2,108.5,357.5z"/>
<linearGradient id="SVGID_00000124853241788307491970000002479847885029808270_" gradientUnits="userSpaceOnUse" x1="90" y1="683.9865" x2="418.2433" y2="683.9865">
<stop offset="4.792333e-09" style="stop-color:#904C1D"/>
<stop offset="1" style="stop-color:#7D3810"/>
</linearGradient>
<path style="fill:url(#SVGID_00000124853241788307491970000002479847885029808270_);" d="M408.5,831.5
C373.5,822,287.9,793.9,214,713c-72.9-79.8-95.5-169.3-102-205c-8,19.7-14,42.3-22,62c15.8,39.8,51.8,115.1,128,183
c77.8,69.3,158.7,96.2,200.2,107C415,850.5,411.7,841,408.5,831.5z"/>
<path class="st36" d="M106.3,469l5.6,39.1c-5.9,14.1-11.6,29.4-16.9,46c-8.3,25.8-15,53.1-19,75c-3-7.4-6.1-15-9-23
c-2.9-7.9-5.6-16.5-8-24c5.3-18.4,13.1-38.6,22-60C89.1,502.3,97.8,484.6,106.3,469z"/>
<path class="st37" d="M145.3,609.6l17.4,33.5c-0.4,17.9-0.1,37.2,1.2,57.9c1.6,24.7,4.5,51.5,8,72c-6.1-5.9-12.5-12.5-19-20
c-6-6.9-11.3-13.6-16-20c-0.8-16.8,0-36.3,1-56C139.2,652.3,141.9,629.7,145.3,609.6z"/>
<path class="st38" d="M227.1,726.5l29.6,27c4.5,15.1,10.2,31.4,17.3,48.6c10.7,25.8,23.6,50.1,35,69c-7.6-3.5-15.7-7.5-24-12
c-7.9-4.3-15.2-8.7-22-13c-6.6-17.1-13-36.4-19-56C237.1,767.7,231.6,746.5,227.1,726.5z"/>
<path class="st39" d="M227.1,726.5c1.7,8.2,3.6,16.7,5.9,25.5c1.6,6.2,3.3,12.2,5.1,17.9c10.9,7.9,21.7,15.9,32.6,23.8l-13.9-40.8
L227.1,726.5z"/>
<path class="st39" d="M163.7,696l-24.8-33.5c0.5-7.5,1.2-15.4,2.1-23.5c1.2-10.3,2.7-20.1,4.3-29.4c5.8,11.2,11.6,22.3,17.4,33.5
L163.7,696z"/>
<path class="st40" d="M195.9,538.6c-12-6.9-25.1-15.2-38.8-25.3c-2.3-1.7-4.7-3.5-7-5.3c-17.4-13.4-31.9-26.8-43.7-39
c-0.5,5.5-0.6,12.8,0.7,21c1.1,7.2,3,13.3,4.9,18c16.7,15.7,31.8,26.6,43.1,34c2.4,1.5,4.7,3,7.1,4.4
c16.6,10.1,31.6,17.2,44.9,22.6C203.1,558.8,199.8,548.8,195.9,538.6z"/>
<path class="st41" d="M251.5,643.1c-13.6-1.5-29.4-4.3-46.5-9.1c-24.2-6.9-44.2-15.9-59.7-24.4c1.2,4.5,3,9.7,5.7,15.4
c3.7,7.7,8.1,13.8,11.8,18.1c4.7,2.1,11.7,5,20.2,7.9c12.6,4.3,22.5,6.4,30,8c25.7,5.4,49.6,9.8,63,12.2
C267.8,661.9,259.7,652.5,251.5,643.1z"/>
<path class="st42" d="M227.6,727.1c17,2.2,37,3.6,59.4,2.9c20.5-0.7,38.8-2.9,54.5-5.8c9.8,5.9,19.7,11.8,29.5,17.8
c-12.7,4.3-29.9,6.3-47,9c-26.2,4.2-49.2,4-67.3,2.4c-4.6-2.7-10.1-6.4-15.7-11.4C235.2,736.8,230.8,731.5,227.6,727.1z"/>
<polygon class="st43" points="192.4,630.1 209,658 276,671.2 251.5,643.1 "/>
<polyline class="st44" points="208,572 162.1,546.4 157,513.3 195.9,538.6 208,572 "/>
<path class="st45" d="M277,731l28.9,22.3c10.8-1.1,22.4-2.6,34.6-4.8c10.8-1.9,22-5.1,31.5-7.5c-9.8-5.9-20.7-10.8-30.5-16.8
c-9.8,1.6-20.1,3.1-31,4.3C298.7,729.8,287.7,730.5,277,731z"/>
</g>
<g>
<path class="st18" d="M627,741l-24.9,61.1l-30.4,10.9l-38.2-37.6c18-5.9,36.5-12.3,55.5-19.5C602.1,751.1,614.7,746.1,627,741z"/>
<polygon class="st19" points="590.5,831.5 602.1,802.1 571.7,813.1 "/>
<path class="st20" d="M693.1,753.3L627,741l-24.9,61.1c14.1-5.3,30-12.1,46.9-21.1C666.1,771.8,680.8,762.3,693.1,753.3z"/>
<path class="st21" d="M742.3,753.4l-49.1-0.2c-12.9,9.1-28,18.6-45.1,27.7c-16.3,8.7-31.8,15.6-45.9,21.1
c-3.9,9.8-7.7,19.6-11.6,29.4C612,825.8,638,817,666,803C698.1,787,723.5,769,742.3,753.4z"/>
<path class="st22" d="M771.4,727.1l-19.8-22.9L722,731c8,0,16.9-0.2,26-1C756.3,729.3,764.1,728.3,771.4,727.1z"/>
<path class="st23" d="M657.5,724.2c11.1,1.9,22.9,3.5,35.5,4.8c10.1,1,19.8,1.6,29,2c9.9-8.9,19.8-17.8,29.6-26.7l-28.6-33
L657.5,724.2z"/>
<polygon class="st24" points="790,658 751.6,704.3 723,671.2 "/>
<path class="st25" d="M836.2,643.1c-7.5,2.7-15.2,5.3-23.2,7.9c-7.8,2.5-15.5,4.8-23,7c-12.8,15.4-25.6,30.8-38.4,46.3l19.8,22.9
c11.7-11.2,24.7-25.2,37.6-42.1C820.2,670.2,829.1,655.9,836.2,643.1z"/>
<path class="st26" d="M836.9,546.4c-1.8,7.3-3.7,14.8-5.9,22.6c-2.2,7.7-4.5,15.1-6.8,22.2c-10.9-6.5-22.2-12.6-33.2-19.2
L836.9,546.4z"/>
<path class="st27" d="M853.7,609.6l-29.5-18.5l-17.6,39c7.6-2.1,16.2-5,25.4-9.1C840.3,617.3,847.5,613.4,853.7,609.6z"/>
<path class="st28" d="M824.2,591.2L791,572c-5.1,10.8-10.7,21.9-18,34c-8.5,14.1-17.2,26.5-25.5,37.1c19.7-4.3,39.4-8.7,59.1-13
L824.2,591.2z"/>
<path class="st28" d="M776,608"/>
<path class="st29" d="M887.1,508c-6.2,5.6-12.9,11.3-20.1,17c-10.4,8.2-20.5,15.3-30.1,21.4c-4.3,14.9-8.5,29.8-12.8,44.7
l29.5,18.5c6.9-13.2,14.1-29.1,20.3-47.6C880.7,542,884.7,523.6,887.1,508z"/>
<polygon class="st30" points="840,430 820.5,452.5 842.5,456.2 "/>
<path class="st31" d="M892.7,469l-50.2-12.8l-0.6,57.1c7.9-5.4,16.3-11.8,25-19.3C877,485.4,885.5,476.9,892.7,469z"/>
<path class="st32" d="M890.5,357.5L840,430l2.5,26.2l50.2,12.8c1.7-16.9,2.7-36,2.3-57C894.5,391.9,892.8,373.7,890.5,357.5z"/>
<path class="st33" d="M842.5,456.2l-22-3.7c-0.5,13-1.9,28.4-5.5,45.5c-3.3,15.6-7.5,29.2-11.9,40.6c12.9-8.4,25.9-16.9,38.8-25.3
c0.6-9.6,1-19.7,1-30.3C843.1,473.7,842.9,464.8,842.5,456.2z"/>
<path class="st25" d="M815,647"/>
<linearGradient id="SVGID_00000109747415768703344880000013296253376583759777_" gradientUnits="userSpaceOnUse" x1="267.5" y1="635" x2="667.5" y2="635" gradientTransform="matrix(-1 0 0 1 1229 0)">
<stop offset="0" style="stop-color:#844215"/>
<stop offset="1" style="stop-color:#D38047"/>
</linearGradient>
<path style="fill:url(#SVGID_00000109747415768703344880000013296253376583759777_);" d="M890.5,357.5
C894.8,385.9,917,550.1,804,691c-76.7,95.6-174.6,129.4-213.5,140.5c-9.7,27-19.3,54-29,81c37.1-6.4,190.6-37.3,300.5-179.5
c89-115.2,98.2-237.1,99.5-280.5C937.8,420.8,914.2,389.2,890.5,357.5z"/>
<linearGradient id="SVGID_00000017506882430593231550000015389667641078630316_" gradientUnits="userSpaceOnUse" x1="320" y1="683.9865" x2="648.2432" y2="683.9865" gradientTransform="matrix(-1 0 0 1 1229 0)">
<stop offset="4.792333e-09" style="stop-color:#904C1D"/>
<stop offset="1" style="stop-color:#7D3810"/>
</linearGradient>
<path style="fill:url(#SVGID_00000017506882430593231550000015389667641078630316_);" d="M590.5,831.5
c35-9.5,120.6-37.6,194.5-118.5c72.9-79.8,95.5-169.3,102-205c8,19.7,14,42.3,22,62c-15.8,39.8-51.8,115.1-128,183
c-77.8,69.3-158.7,96.2-200.2,107C584,850.5,587.3,841,590.5,831.5z"/>
<path class="st36" d="M892.7,469l-5.6,39.1c5.9,14.1,11.6,29.4,16.9,46c8.3,25.8,15,53.1,19,75c3-7.4,6.1-15,9-23
c2.9-7.9,5.6-16.5,8-24c-5.3-18.4-13.1-38.6-22-60C909.9,502.3,901.2,484.6,892.7,469z"/>
<path class="st37" d="M853.7,609.6l-17.4,33.5c0.4,17.9,0.1,37.2-1.2,57.9c-1.6,24.7-4.5,51.5-8,72c6.1-5.9,12.5-12.5,19-20
c6-6.9,11.3-13.6,16-20c0.8-16.8,0-36.3-1-56C859.8,652.3,857.1,629.7,853.7,609.6z"/>
<path class="st38" d="M771.9,726.5l-29.6,27c-4.5,15.1-10.2,31.4-17.3,48.6c-10.7,25.8-23.6,50.1-35,69c7.6-3.5,15.7-7.5,24-12
c7.9-4.3,15.2-8.7,22-13c6.6-17.1,13-36.4,19-56C761.9,767.7,767.4,746.5,771.9,726.5z"/>
<path class="st39" d="M771.9,726.5c-1.7,8.2-3.6,16.7-5.9,25.5c-1.6,6.2-3.3,12.2-5.1,17.9c-10.9,7.9-21.7,15.9-32.6,23.8
l13.9-40.8L771.9,726.5z"/>
<path class="st39" d="M835.3,696l24.8-33.5c-0.5-7.5-1.2-15.4-2.1-23.5c-1.2-10.3-2.7-20.1-4.3-29.4
c-5.8,11.2-11.6,22.3-17.4,33.5L835.3,696z"/>
<path class="st40" d="M803.1,538.6c12-6.9,25.1-15.2,38.8-25.3c2.3-1.7,4.7-3.5,7-5.3c17.4-13.4,31.9-26.8,43.7-39
c0.5,5.5,0.6,12.8-0.7,21c-1.1,7.2-3,13.3-4.9,18c-16.7,15.7-31.8,26.6-43.1,34c-2.4,1.5-4.7,3-7.1,4.4
c-16.6,10.1-31.6,17.2-44.9,22.6C795.9,558.8,799.2,548.8,803.1,538.6z"/>
<path class="st41" d="M747.5,643.1c13.6-1.5,29.4-4.3,46.5-9.1c24.2-6.9,44.2-15.9,59.7-24.4c-1.2,4.5-3,9.7-5.7,15.4
c-3.7,7.7-8.1,13.8-11.8,18.1c-4.7,2.1-11.7,5-20.2,7.9c-12.6,4.3-22.5,6.4-30,8c-25.7,5.4-49.6,9.8-63,12.2
C731.2,661.9,739.3,652.5,747.5,643.1z"/>
<path class="st42" d="M771.4,727.1c-17,2.2-37,3.6-59.4,2.9c-20.5-0.7-38.8-2.9-54.5-5.8c-9.8,5.9-19.7,11.8-29.5,17.8
c12.7,4.3,29.9,6.3,47,9c26.2,4.2,49.2,4,67.3,2.4c4.6-2.7,10.1-6.4,15.7-11.4C763.8,736.8,768.2,731.5,771.4,727.1z"/>
<polygon class="st43" points="806.6,630.1 790,658 723,671.2 747.5,643.1 "/>
<polyline class="st44" points="791,572 836.9,546.4 842,513.3 803.1,538.6 791,572 "/>
<path class="st45" d="M722,731l-28.9,22.3c-10.8-1.1-22.4-2.6-34.6-4.8c-10.8-1.9-22-5.1-31.5-7.5c9.8-5.9,20.7-10.8,30.5-16.8
c9.8,1.6,20.1,3.1,31,4.3C700.3,729.8,711.3,730.5,722,731z"/>
</g>
</g>
<g id="Layer_3">
<polygon class="st48" points="241.5,347.5 500,229 500,646 310.5,588.5 "/>
<polygon class="st49" points="758,347.5 499.5,229 499.5,646 689,588.5 "/>
<path class="st50" d="M499.5,260L737,367.5c-7.6,25.8-17,56.8-28,92c-17.4,55.5-22.8,70.1-37,86c-4,4.5-16.7,18-61,39
c-25.8,12.2-63.2,27.4-111.5,38.5C499.5,502,499.5,381,499.5,260z"/>
<linearGradient id="SVGID_00000014612060945716269740000004954183021845470646_" gradientUnits="userSpaceOnUse" x1="381.25" y1="623" x2="381.25" y2="283.2944">
<stop offset="9.244864e-02" style="stop-color:#C67121"/>
<stop offset="1" style="stop-color:#FFCE48"/>
</linearGradient>
<path style="fill:url(#SVGID_00000014612060945716269740000004954183021845470646_);" d="M500,260L262.5,367.5
c7.6,25.8,17,56.8,28,92c17.4,55.5,22.8,70.1,37,86c4,4.5,16.7,18,61,39c25.8,12.2,63.2,27.4,111.5,38.5C500,502,500,381,500,260z"
/>
<polygon class="st52" points="301.5,388.5 341.5,523.5 500,523.5 500,320 421.5,427.5 "/>
<polygon class="st53" points="341.5,523.5 500,579 500,523.5 "/>
<polygon class="st54" points="658,523.5 499.5,579 499.5,523.5 "/>
<polygon class="st0" points="301.5,388.5 426.5,462.5 500,320 421.5,427.5 "/>
<polygon class="st55" points="698,388.5 658,523.5 499.5,523.5 499.5,320 578,427.5 "/>
<polygon class="st56" points="698,388.5 573,462.5 499.5,320 578,427.5 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

4
public/badges/256.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="343" height="343" viewBox="0 0 343 343" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M252.571 30L333.429 171.5L252.571 313H90.8571L10 171.5L90.8571 30H252.571Z" fill="#509AF0"/>
<path d="M164.486 82.3018C182.31 82.3018 196.421 86.5928 206.818 95.1748C217.298 103.757 222.538 115.722 222.538 131.071C222.538 139.323 220.475 146.791 216.349 153.475C212.223 160.159 206.406 165.523 198.896 169.566C209.046 173.032 216.803 178.561 222.167 186.153C227.613 193.744 230.336 202.945 230.336 213.755C230.336 230.672 225.427 243.875 215.607 253.365C205.787 262.772 192.295 267.476 175.131 267.476C162.093 267.476 150.499 264.34 140.349 258.068V313H104.577V137.012C104.577 126.697 107.176 117.373 112.375 109.038C117.573 100.621 124.794 94.0608 134.036 89.3572C143.278 84.6536 153.428 82.3018 164.486 82.3018ZM186.766 133.794C186.766 127.027 184.703 121.581 180.577 117.455C176.534 113.329 171.17 111.266 164.486 111.266C157.472 111.266 151.695 113.618 147.157 118.322C142.618 122.943 140.349 129.338 140.349 137.507V231.456C147.115 236.242 156.028 238.635 167.085 238.635C175.502 238.635 182.186 236.283 187.137 231.58C192.089 226.793 194.564 220.687 194.564 213.26C194.564 204.348 192.295 197.416 187.756 192.465C183.3 187.432 176.699 184.915 167.952 184.915H155.945V158.797H165.6C179.711 158.302 186.766 149.968 186.766 133.794Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

154
public/badges/32.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

153
public/badges/4.svg Normal file
View File

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="100%"
height="100%"
viewBox="0 0 32 32"
version="1.1"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"
id="svg46"
sodipodi:docname="supporter.svg"
inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
id="defs50" /><sodipodi:namedview
id="namedview48"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="27.28125"
inkscape:cx="15.981672"
inkscape:cy="16"
inkscape:window-width="3840"
inkscape:window-height="2089"
inkscape:window-x="1680"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg46" />
<metadata
id="metadata2">
<rdf:RDF>
<rdf:Description
rdf:about="">
<dc:title>Mutant Standard emoji 2020.04</dc:title>
</rdf:Description>
<cc:work
rdf:about="">
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-nc-sa/4.0/" />
<cc:attributionName>Dzuk</cc:attributionName>
<cc:attributionURL>http://mutant.tech/</cc:attributionURL>
</cc:work>
</rdf:RDF>
</metadata>
<rect
id="green_money"
x="0"
y="0"
width="32"
height="32"
style="fill:none;" />
<g
id="Layer2">
<path
d="M29,21l-26,0l-1,1l0,3l28,0l0,-3l-1,-1Z"
style="fill:#60ae33;"
id="path8" />
<rect
x="2"
y="7"
width="28"
height="15"
style="fill:#80c95b;"
id="rect10" />
<g
id="g24">
<path
d="M8.5,9.5c0,-0.828 -0.672,-1.5 -1.5,-1.5l-2.5,0c-0.398,0 -0.779,0.158 -1.061,0.439c-0.281,0.282 -0.439,0.663 -0.439,1.061c0,0.828 0.672,1.5 1.5,1.5l2.5,0c0.828,0 1.5,-0.672 1.5,-1.5l0,0Z"
style="fill:#5da436;"
id="path12" />
<path
d="M8.5,19.5c0,-0.828 -0.672,-1.5 -1.5,-1.5l-2.5,0c-0.398,0 -0.779,0.158 -1.061,0.439c-0.281,0.282 -0.439,0.663 -0.439,1.061c0,0.828 0.672,1.5 1.5,1.5l2.5,0c0.828,0 1.5,-0.672 1.5,-1.5l0,0Z"
style="fill:#5da436;"
id="path14" />
<path
d="M29,9.5c0,-0.828 -0.672,-1.5 -1.5,-1.5l-2.5,0c-0.398,0 -0.779,0.158 -1.061,0.439c-0.281,0.282 -0.439,0.663 -0.439,1.061c0,0.828 0.672,1.5 1.5,1.5l2.5,0c0.828,0 1.5,-0.672 1.5,-1.5l0,0Z"
style="fill:#5da436;"
id="path16" />
<path
d="M29,19.5c0,-0.828 -0.672,-1.5 -1.5,-1.5l-2.5,0c-0.398,0 -0.779,0.158 -1.061,0.439c-0.281,0.282 -0.439,0.663 -0.439,1.061c0,0.828 0.672,1.5 1.5,1.5l2.5,0c0.828,0 1.5,-0.672 1.5,-1.5l0,0Z"
style="fill:#5da436;"
id="path18" />
<path
d="M21,14c0,-0.552 -0.448,-1 -1,-1c-0.552,0 -1,0.448 -1,1c0,0.322 0,0.678 0,1c0,0.552 0.448,1 1,1c0.552,0 1,-0.448 1,-1c0,-0.322 0,-0.678 0,-1Z"
style="fill:#5da436;"
id="path20" />
<path
d="M24,14c0,-0.552 -0.448,-1 -1,-1c-0.552,0 -1,0.448 -1,1c0,0.322 0,0.678 0,1c0,0.552 0.448,1 1,1c0.552,0 1,-0.448 1,-1c0,-0.322 0,-0.678 0,-1Z"
style="fill:#5da436;"
id="path22" />
</g>
<rect
x="8"
y="11"
width="8"
height="7"
style="fill:none;"
id="rect26" />
<clipPath
id="_clip1">
<rect
x="8"
y="11"
width="8"
height="7"
id="rect28" />
</clipPath>
<g
clip-path="url(#_clip1)"
id="g37">
<path
d="M16,14l-8,0l0,-1l8,0l0,1Z"
style="fill:#fff;"
id="path31" />
<path
d="M16,16l-8,0l0,-1l8,0l0,1Z"
style="fill:#fff;"
id="path33" />
<path
d="M15,10.335l0,7.665l-1,0l0,-4.5l-1.771,4.25l-0.458,0l-1.771,-4.25l0,4.5l-1,0l0,-7.665l0.706,-0.141l2.294,5.506l2.294,-5.506l0.706,0.141Z"
style="fill:#fff;"
id="path35" />
</g>
<path
d="M27,20l-22,0l0,-11l22,0l0,11Zm-21,-10l0,9l20,0l0,-9l-20,0Z"
style="fill:#5da436;"
id="path39" />
<path
d="M20,22l-1,-1l-6,0l-1,1l0,3l8,0l0,-3Z"
style="fill:#ccc;"
id="path41" />
<rect
x="12"
y="7"
width="8"
height="15"
style="fill:#eee;"
id="rect43" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

7
public/badges/512.svg Normal file
View File

@ -0,0 +1,7 @@
<svg width="292" height="412" viewBox="0 0 292 412" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M123.504 267.035L128.535 258.859L138.241 252.156L154.5 249.777L183.052 252.156L197.725 256.518L203.277 269.604V287.788L197.725 312.316L188.604 316.718L165.604 319.571L154.5 333.698V350.899L169.966 356.451L197.725 361.606L217.156 364.382L243.726 356.451L269.409 342.968L273.812 319.571L276.243 287.788V249.777L273.812 197.227L269.409 151.317L264.378 118.614L258.718 97.2312L246.769 76.4775L234.191 56.9815L212.179 47.548L185.765 43.7746H161.238L137.969 47.548L123.504 56.9815L111.555 84.0243L97.7191 126.79L86.3988 180.246L71.9341 262.003L63.1295 290.304H57.4694L38.6023 287.788H26.0243L15.9619 295.335L10.3017 307.284L15.9619 316.718L31.0555 328.667L57.4694 333.698L105.895 328.667L128.535 312.316V299.109L123.504 280.242V267.035Z" fill="#BD0F11" stroke="black" stroke-width="10" stroke-linejoin="round"/>
<rect x="143.273" y="91.2935" width="76.4135" height="25.6717" fill="#9DC7D7"/>
<path d="M138.788 96.1069L145.638 109.56L154.76 115.762L166.846 118.169L180.083 120.174H191.335C194.544 119.372 199.78 119.171 202.767 118.169C205.754 117.166 208.048 116.43 209.987 115.762H214.6L218.01 111.951L222.622 104.53" stroke="#4E626B" stroke-width="10" stroke-linejoin="round"/>
<path d="M148.155 123.275L135.465 111.775V99.4813L140.224 91.1536L148.155 86.7914H160.845H175.518H189.794H202.087L212.398 91.1536L221.518 99.4813L223.898 108.999L217.949 118.119L208.035 123.275L186.225 127.24H165.604L148.155 123.275Z" stroke="black" stroke-width="10" stroke-linejoin="round"/>
<path d="M176.895 99.9176L174.287 98.1125V96.9092L176.895 95.7058H181.708H186.923H191.536L196.75 96.9092L200.36 98.1125L204.572 99.9176L202.767 101.121H196.75H191.536H186.12L181.708 99.9176H176.895Z" fill="white" stroke="white" stroke-width="4" stroke-linejoin="bevel"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

1
public/badges/8.svg Normal file
View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1813.46 1814.1"><path d="M921.08.24H999.8L1006,2.16c6.23,1.17,13.75-1.26,19.44.48a5.52,5.52,0,0,0,2.16,3.12c3.16,1.43,7.67.35,11.52,1.44,2.09.59,3.31,2.7,5,3.36l7,1c2.8.67,4.61,2.41,6.72,3.36l7.2,1.2c12.55,5,24.78,11.55,37.2,16.8,1.89.8,3,3.13,4.56,3.84l4.08.24,3.84,4.08L1120,43.2c2.74,1.66,5,4.77,7.68,6.24l5,1.68c8.83,6.07,16.73,13.82,25,20.4,8.67,6.93,17.76,14.41,24.72,23l5.76,6,.24,7.68,2.64-2.64,1.2-1,7.68,7.44,48,49.2c5.63,5.63,9.25,12.8,19,14.4h41.28c10.65,0,23.19.31,32.64-1.2l35.52.24c9.24-1.38,25.9-2,35-.24l12,2.88,16.32.48,8.64,3.6,11.28.24,5.76,3.6,11,.48,3.6,3.12c7.54,3.39,18,3.14,22.32,9.6a54.24,54.24,0,0,1,8.4.24l1.68,6.24v-.48l.72-2.16,6.72,1,1.68,3.12,6.24.72,1,2.88,7,1.44a6.7,6.7,0,0,0,1.44,3.84,11.63,11.63,0,0,1,5.28.72c1.6,3.8,3.39,2.21,7,4.08,2.53,1.33,6.21,6.69,8.64,7.92l3.6.48,2.64,3.12c3,2.27,5.63,4.58,8.64,6.72v16.56l9.36-9.84,4.08,4.08c4.5,2.2,8.94,8.09,12.24,11.76,5.58,6.21,12.5,11.46,17.76,18l9.6,13.44c8.15,10.51,16.51,21.35,23.52,33.12l1.92,5.76c3.68,5.82,7.9,12.21,10.8,19l1.44,5.28,3.12,3.6.72,5,3.36,5.28c2.6,6.5,3.2,11.73,5.52,18.48l2.88,5.52,1,8.16,3.12,8.64,1.2,10.8c.76,2.59,2.3,5,2.88,8.16l.48,11.76,3.36,23.52v32.16c0,13.43,1.62,29.68-.48,42.24v30c-1.15,7.43-1.24,28.83.48,35.28,1.51,5.68,20.48,21.44,25.44,26.4L1786,699.12c11.59,14.43,24.59,28.4,34.56,44.4,15.84,25.41,27.31,54.64,37.2,85.92l1,9.6,3.84,10.32.48,13.2,3.36,15.36.24,21.12-.24,38.88-3.12,14.16-1.2,14.64c-10.22,47.84-30.48,87.55-54.72,121.44-5.68,7.94-11.74,15.07-17.76,22.56l-10.56,10.8-7.2,7.92-7.68,4.56-16.8,17c-2.39,2.39-6.08,4.6-8.16,7.2l-3.84,6.72-20.88,20.88-18,17.76c-3.08,2.3-5.81,4.45-7.44,8.16-1.8,4.09-1.2,11.21-1.2,17l-.24,26.16.24,49.2,3.12,6.72-.24,41.28c-7.07,5.4-1.08,14.6-2.88,25.2a265.49,265.49,0,0,1-7.44,32.88l-2.16,11c-8,20.27-14.89,40.47-24.72,58.8-12.75,23.77-30.76,43.38-47,63.6-8.91,11.07-21.32,20.11-32.64,28.8-33.16,25.46-71.21,45.91-118.08,57.84l-9.36,1-11,3.12c-11.56,2.36-24.16,1.72-35.52,3.6l-135.84.48c-8,2-17.66,15-23.28,20.64l-53.28,54c-33.3,35.63-74.19,65.09-124.56,83.52l-6.24,1.2c-6,2.07-13.87,5.06-20.16,7l-8.64,1.2-10.32,3.36-15.84,1-6.72,2.16c-8.44,1.87-30.53,2.58-40.32,1l-22.32.24c-5.44-.89-10.21-1.79-14.64-2.88-5.62-1.38-12.46-.12-17.52-1.44-43.65-11.4-82-25.84-114.24-48.48-13.42-9.43-24.89-20.61-37.44-30.72l-65.52-66-12.48-12.48c-3.32-4.12-8.24-10.48-13.44-12.48-7.2-2.77-28.85-1-38.64-1H514.28l-12.48-2.16c-1.4-.21-2.79,1.05-3.12,1l-6.72-1.92-7.92-.24-10.32-3.12-10.8-1.2c-32.62-8.51-66.3-22-91.44-38.4-9.39-6.13-18.22-13.61-27.12-20.16-11-8.11-23.15-17.25-31.68-27.84-17.47-21.68-34.42-40.92-47.76-67.2-3-5.82-6.17-12-9.36-18.24l-3.12-4.56-.24-4.32-3.36-5.52c-1.75-4.37-3.31-8.5-4.56-12.48-4.71-15-8.92-31.62-12.24-47.76-1.1-5.35-2.41-13-1.2-19.44.4-2.13,2-6.72.72-9.36l-3.12-2.88v-6.24c-1.3-8-1.64-20.48,0-28.32l.48-75.84c0-10.11,1.78-24.72-1.44-32.4-1.44-3.43-5.18-5.9-7.68-8.4L202,1183.68l-51.6-50.88c-6.65-5.35-12.9-12.75-18.24-19.44-7.9-9.9-17-19-24.48-29.52C84.53,1051.17,67.63,1011.91,56.84,967l-.72-13.68-2.88-11.52v-25.2c0-19.55-.36-39.72,2.4-55.68l.72-13c17.69-69.5,44.37-116.85,87.84-160.32L204,628.8l17.76-17.52,5.52-5.76c2.58-6.63,1.2-29,1.2-38.88,0-11.42-2.88-25.12-1-37l.24-29.76-.24-37.68,2.88-18.48.72-14.4,3.6-11.52.72-9.12c12.23-40.89,27.69-76.22,49.44-107.28,6.68-9.54,15.3-18.34,22.56-27.36a165.5,165.5,0,0,1,24-24c2.84-2.3,5.31-7,8.88-8.4l2.64.24,2.64-3.12,12-10.32,2.88.24,9.36-8.4,2.64.24,5.28-4.8c1.43-.62,3.22-.2,4.32-.72l2.16-3.6c5.28,0,4.6-1.83,7.2-3.6,4.19-2.85,5.28.63,7.92-5,5.87-.59,7.08-.23,9.6-4.32,2.73.07,6.45.2,8.4-.72l1.44-3.84h7.68l3.12-3.36,8.4-.48,4.08-3.84,12-.72,4.8-4.08h13.44l5-3.6H494.6l15.6-3.36,36.24-.24,71.52,1c9,0,31.14,2.41,37.92-.24,5-2,8.44-7,12-10.56l21.6-22.08,33.12-33.6c9.59-12,23-24.51,35-34.08L769.4,63.36c7.37-5.24,14.67-9.63,22.08-14.88,1.83-1.3,3.78-2.46,5.76-3.84l2.64-3.12h3.84L807.8,37h3.6l5.52-4.56h3.6l4.32-3.6,4.32-.48,4.32-4.08,5-.24,4.56-4.32,6.72-.24,4.32-3.36,7.68-1.44L864.44,12,875,10.8l3.12-3.6L889.64,7l3.6-4.08c4.54-2.38,15,1.13,20.64-.24A58.28,58.28,0,0,0,921.08.24Z" transform="translate(-53.22 -0.24)" style="fill:#fff;fill-rule:evenodd"/></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB