Merge branch 'master' into fix/schema-enums

This commit is contained in:
Ivan Vasilov committed 2024-04-17 11:44:05 +02:00
commit 33632ddba8
105 files changed
+2403 -729

No files matched your search

+2 -2
View File
@@ -14,7 +14,7 @@ To ensure a positive and inclusive environment, please read our [code of conduc
If you find a bug, please create an Issue and we’ll triage it.
- Please search [existing Issues](https://github.com/supabase/supabase) before creating a new one.
- Please search [existing Issues](https://github.com/supabase/supabase/issues) before creating a new one.
- Please include a clear description of the problem along with steps to reproduce it. Exact steps with screenshots and urls really help here.
## Pull Requests
@@ -23,7 +23,7 @@ We actively welcome your Pull Requests! A couple of things to keep in mind befor
- If you’re fixing an Issue, make sure someone else hasn’t already created a PR fixing the same issue. Likewise, make sure to link your PR to the related Issue(s).
- We will always try to accept the first viable PR that resolves the Issue.
- If you're new, we encourage you to take a look at issues tagged with [good first issue](https://github.com/supabase/supabase/pulls?q=is%3Aopen+is%3Apr+label%3A%22good+first+issue%22).
- If you're new, we encourage you to take a look at issues tagged with [good first issue](https://github.com/supabase/supabase/labels/good%20first%20issue).
- If you’re submitting a new feature, make sure you have opened a [Discussion](https://github.com/orgs/supabase/discussions/new/choose) to discuss the new feature before opening a PR. We’d love to accept your hard work, but unfortunately if a feature hasn’t gone through a proper design process, your PR will be closed.
- Please use the PR message template and provide detailed context for quicker review. PRs without clear problem statements will be closed.
+2 -1
View File
@@ -16,6 +16,7 @@ import { Button, cn } from 'ui'
import { useSendFeedbackMutation } from '~/lib/fetch/feedback'
import { useSendTelemetryEvent } from '~/lib/telemetry'
import { FeedbackModal, type FeedbackFields } from './FeedbackModal'
import { getSanitizedTabParams } from './Feedback.utils'
const FeedbackButton = forwardRef<
HTMLButtonElement,
@@ -89,7 +90,7 @@ function Feedback() {
vote: response,
page: pathname,
metadata: {
query: Object.fromEntries(new URLSearchParams(window.location.search).entries()),
query: getSanitizedTabParams(),
},
})
if (error) console.error(error)
@@ -0,0 +1,16 @@
import { pick } from 'lodash'
/**
* Gets the tab selection state from the URL search params.
*
* Sanitizes by including only those search params that are explicitly marked
* as query groups.
*/
const getSanitizedTabParams = () => {
const searchParams = new URLSearchParams(window.location.search)
const queryGroups = searchParams.getAll('queryGroups')
return pick(Object.fromEntries(searchParams.entries()), queryGroups)
}
export { getSanitizedTabParams }
@@ -1139,6 +1139,10 @@ export const functions: NavMenuConstant = {
name: 'Handling Routing in Functions',
url: '/guides/functions/routing',
},
{
name: 'Running AI Models',
url: '/guides/functions/ai-models',
},
{
name: 'Regional invocations',
url: '/guides/functions/regional-invocation',
@@ -1187,6 +1191,10 @@ export const functions: NavMenuConstant = {
name: 'Generating OG images ',
url: '/guides/functions/examples/og-image',
},
{
name: 'Semantic AI Search',
url: '/guides/functions/examples/semantic-search',
},
{
name: 'CAPTCHA support with Cloudflare Turnstile',
url: '/guides/functions/examples/cloudflare-turnstile',
@@ -26,7 +26,7 @@ Embeddings are generated using a language model, and embeddings are compared to
## Embedding models
There are many embedding models available today. Some can be accessed through third-party APIs like [OpenAI](https://platform.openai.com/docs/guides/embeddings), where you send your text in the request and receive an embedding vector in the response. Others can run locally on your own compute, such as through Transformers.js for JavaScript implementations. For more information on local implementation, see [Generate embeddings](/docs/guides/ai/quickstarts/generate-text-embeddings).
There are many embedding models available today. Supabase Edge Functions has [built in support](/docs/guides/functions/examples/semantic-search) for the `gte-small` model. Others can be accessed through third-party APIs like [OpenAI](https://platform.openai.com/docs/guides/embeddings), where you send your text in the request and receive an embedding vector in the response. Others can run locally on your own compute, such as through Transformers.js for JavaScript implementations. For more information on local implementation, see [Generate embeddings](/docs/guides/ai/quickstarts/generate-text-embeddings).
It's crucial to remember that when using embedding models with semantic search, you must use the same model for all embedding comparisons. Comparing embeddings created by different models will yield meaningless results.
@@ -237,7 +237,7 @@ where is_anonymous is true and created_at < now() - interval '30 days';
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Supabase Flutter Client](https://github.com/supabase/supabase-flutter)
- [Supabase Kotlin Client](https://github.com/supabase-community/supabase-kt)
+1 -1
View File
@@ -207,7 +207,7 @@ suspend fun logout() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Supabase Flutter Client](https://github.com/supabase/supabase-flutter)
- [Supabase Kotlin Client](https://github.com/supabase-community/supabase-kt)
@@ -76,6 +76,22 @@ const { data, error } = await supabase.auth.signInWithOAuth({
})
```
## Email templates when using `redirectTo`
When using a `redirectTo` option, you may need to replace the `{{ .SiteURL }}` with `{{ .RedirectTo }}` in your email templates. See the [Email Templates guide](/docs/guides/auth/auth-email-templates) for more information.
For example, change the following:
```html
<!-- Old -->
<a href="{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=signup">Confirm your mail</a>
<!-- New -->
<a href="{{ .RedirectTo }}/auth/confirm?token_hash={{ .TokenHash }}&type=signup"
>Confirm your mail</a
>
```
## Mobile deep linking URIs
For mobile applications you can use deep linking URIs. For example, for your `SITE_URL` you can specify something like `com.supabase://login-callback/` and for additional redirect URLs something like `com.supabase.staging://login-callback/` if needed.
@@ -157,7 +157,7 @@ If successful the user will now be logged in and you should receive a valid sess
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Phone SMS & WhatsApp OTP](/docs/guides/auth/phone-login)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Supabase Flutter Client](https://github.com/supabase/supabase-flutter)
@@ -158,6 +158,6 @@ suspend fun logout() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Supabase Flutter Client](https://github.com/supabase/supabase-flutter)
@@ -112,6 +112,6 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Bitbucket Account](https://bitbucket.org)
@@ -113,7 +113,7 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Discord Account](https://discord.com)
- [Discord Developer Portal](https://discord.com/developers)
@@ -131,6 +131,6 @@ You can read more about App Review [here](https://developers.facebook.com/docs/a
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Facebook Developers Dashboard](https://developers.facebook.com/)
@@ -112,6 +112,6 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Figma Developers page](https://www.figma.com/developers)
@@ -123,6 +123,6 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [GitHub Developer Settings](https://github.com/settings/developers)
@@ -109,6 +109,6 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [GitLab Account](https://gitlab.com)
@@ -135,6 +135,6 @@ Do reach out to support if you have any concerns around this change.
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [LinkedIn Developer Dashboard](https://api.LinkedIn.com/apps)
@@ -112,7 +112,7 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Notion Account](https://notion.so)
- [Notion Developer Portal](https://www.notion.so/my-integrations)
@@ -130,6 +130,6 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Slack Developer Dashboard](https://api.slack.com/apps)
@@ -124,6 +124,6 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/)
@@ -127,7 +127,7 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Twitch Account](https://twitch.tv)
- [Twitch Developer Console](https://dev.twitch.tv/console)
@@ -118,6 +118,6 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Twitter Developer Dashboard](https://developer.twitter.com/en/portal/dashboard)
@@ -125,6 +125,6 @@ suspend fun signOut() {
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Zoom App Marketplace](https://marketplace.zoom.us/)
+1 -1
View File
@@ -210,5 +210,5 @@ returns:
## Resources
- [Supabase JS Client](https://github.com/supabase/supabase-js)
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [PostgreSQL Arrays](https://www.postgresql.org/docs/15/arrays.html)
@@ -77,7 +77,7 @@ const { count, error } = await supabase
## Resources
- [Supabase Account - Free Plan OK](https://supabase.com)
- [Supabase - Get started for free](https://supabase.com)
- [Postgrest Operators](https://postgrest.org/en/stable/api.html#operators)
- [Supabase API: JavaScript select](/docs/reference/javascript/select)
- [Supabase API: JavaScript modifiers](/docs/reference/javascript/using-modifiers)
@@ -0,0 +1,171 @@
---
id: 'function-ai-models'
title: 'Running AI Models'
description: 'How to run AI models in Edge Functions.'
subtitle: 'How to run AI models in Edge Functions.'
---
[Supabase Edge Runtime](https://github.com/supabase/edge-runtime) has a built-in API for running AI models. You can use this API to generate embeddings, build conversational workflows, and do other AI related tasks in your Edge Functions.
## Setup
There are no external dependencies or packages to install to enable the API.
You can create a new inference session by doing:
```ts
const model = new Supabase.ai.Session('model-name')
```
<Admonition type="tip">
To get type hints and checks for the API we recommend adding this triple-slash directive to the start of the Edge Function code: `/// <reference types="https://esm.sh/@supabase/functions-js/src/edge-runtime.d.ts" />`
</Admonition>
## Running a model inference
Once the session is instantiated, you can call it with inputs to perform inferences. Depending on the model you run, you may need to provide different options (discussed below).
```ts
const output = await model.run(input, options)
```
## How to generate text embeddings
Now let's see how to write an Edge Function using the `Supabase.ai` API to generate text embeddings. Currently, `Supabase.ai` API only supports the [gte-small](https://huggingface.co/Supabase/gte-small) model.
<Admonition type="tip">
`gte-small` model exclusively caters to English texts, and any lengthy texts will be truncated to a maximum of 512 tokens. While you can provide inputs longer than 512 tokens, truncation may affect the accuracy.
</Admonition>
```ts
const model = new Supabase.ai.Session('gte-small')
Deno.serve(async (req: Request) => {
const params = new URL(req.url).searchParams
const input = params.get('input')
const output = await model.run(input, { mean_pool: true, normalize: true })
return new Response(JSON.stringify(output), {
headers: {
'Content-Type': 'application/json',
Connection: 'keep-alive',
},
})
})
```
## Using Large Language Models
Inference via larger models is supported via [Ollama](https://ollama.com/). In the first iteration, the `llama2` and `mistral` models are supported and you would need to manage the Ollama server yourself.
<video width="99%" muted playsInline controls={true}>
<source
src="https://xguihxuzqibwxjnimxev.supabase.co/storage/v1/object/public/videos/docs/guides/edge-functions-inference-2.mp4"
type="video/mp4"
/>
</video>
### Running locally
1. Install Ollama and pull the Mistral model
```
ollama pull mistral
```
1. Run the Ollama server locally
```
ollama serve
```
1. Set a function secret called AI_INFERENCE_API_HOST to point to the Ollama server
```
echo "AI_INFERENCE_API_HOST=http://host.docker.internal:11434/api/generate" >> supabase/functions/.env
```
1. Create a new function with the following code
```
supabase functions new ollama-test
```
```ts
/// <reference types="https://esm.sh/@supabase/functions-js/src/edge-runtime.d.ts" />
const session = new Supabase.ai.Session('mistral')
Deno.serve(async (req: Request) => {
const params = new URL(req.url).searchParams
const prompt = params.get('prompt') ?? ''
// Get the output as a stream
const output = await session.run(prompt, { stream: true })
const headers = new Headers({
'Content-Type': 'text/event-stream',
Connection: 'keep-alive',
})
// Create a stream
const stream = new ReadableStream({
async start(controller) {
const encoder = new TextEncoder()
try {
for await (const chunk of output) {
controller.enqueue(encoder.encode(chunk.response ?? ''))
}
} catch (err) {
console.error('Stream error:', err)
} finally {
controller.close()
}
},
})
// Return the stream to the user
return new Response(stream, {
headers,
})
})
```
1. Execute the function
```
curl --get "http://localhost:54321/functions/v1/ollama-test" \
--data-urlencode "prompt=write a short rap song about Supabase, the Postgres Developer platform, as sung by Nicki Minaj" \
-H "Authorization: $ANON_KEY"
```
### Deploying to production
Once the function is working locally, it's time to deploy to production.
1. Deploy a Ollama server and set a function secret called `AI_INFERENCE_API_HOST` to point to the deployed Ollama server
```
supabase secrets set AI_INFERENCE_API_HOST=https://path-to-your-ollama-server/
```
2. Deploy the Supabase function
```
supabase functions deploy ollama-test
```
3. Execute the function
```
curl --get "https://project-ref.supabase.co/functions/v1/ollama-test" \
--data-urlencode "prompt=write a short rap song about Supabase, the Postgres Developer platform, as sung by Nicki Minaj" \
-H "Authorization: $ANON_KEY"
```
As demonstrated in the video above, running Ollama locally is typically slower than running it in on a server with dedicated GPUs. We are collaborating with the Ollama team to improve local performance.
In the future, a hosted Ollama API, will be provided as part of the Supabase platform. Supabase will scale and manage the API and GPUs for you. To sign up for early access, fill up [this form](https://forms.supabase.com/supabase.ai-llm-early-access).
@@ -0,0 +1,129 @@
---
id: 'function-ai-models'
title: 'Semantic Search'
description: 'Semantic Search with pgvector and Supabase Edge Functions'
subtitle: 'Semantic Search with pgvector and Supabase Edge Functions'
tocVideo: 'w4Rr_1whU-U'
---
[Semantic search](/docs/guides/ai/semantic-search) interprets the meaning behind user queries rather than exact [keywords](/docs/guides/ai/keyword-search). It uses machine learning to capture the intent and context behind the query, handling language nuances like synonyms, phrasing variations, and word relationships.
Since Supabase Edge Runtime [v1.36.0](https://github.com/supabase/edge-runtime/releases/tag/v1.36.0) you can run the [`gte-small` model](https://huggingface.co/Supabase/gte-small) natively within Supabase Edge Functions without any external dependencies! This allows you to easily generate text embeddings without calling any external APIs!
In this tutorial you're implementing three parts:
1. A [`generate-embedding`](https://github.com/supabase/supabase/tree/master/examples/ai/edge-functions/supabase/functions/generate-embedding/index.ts) database webhook edge function which generates embeddings when a content row is added (or updated) in the [`public.embeddings`](https://github.com/supabase/supabase/tree/master/examples/ai/edge-functions/supabase/migrations/20240408072601_embeddings.sql) table.
2. A [`query_embeddings` Postgres function](https://github.com/supabase/supabase/tree/master/examples/ai/edge-functions/supabase/migrations/20240410031515_vector-search.sql) which allows us to perform similarity search from an egde function via [Remote Procedure Call (RPC)](https://supabase.com/docs/guides/database/functions?language=js).
3. A [`search` edge function](https://github.com/supabase/supabase/tree/master/examples/ai/edge-functions/supabase/functions/search/index.ts) which generates the embedding for the search term, performs the similarity search via RPC function call, and returns the result.
You can find the complete example code on [GitHub](https://github.com/supabase/supabase/tree/master/examples/ai/edge-functions)
### Create the database table and webhook
Given the [following table definition](https://github.com/supabase/supabase/blob/master/examples/ai/edge-functions/supabase/migrations/20240408072601_embeddings.sql):
```sql
create extension if not exists vector with schema extensions;
create table embeddings (
id bigint primary key generated always as identity,
content text not null,
embedding vector (384)
);
alter table embeddings enable row level security;
create index on embeddings using hnsw (embedding vector_ip_ops);
```
You can deploy the [following edge function](https://github.com/supabase/supabase/blob/master/examples/ai/edge-functions/supabase/functions/generate-embedding/index.ts) as a [database webhook](/docs/guides/database/webhooks) to generate the embeddings for any text content inserted into the table:
```tsx
const model = new Supabase.ai.Session('gte-small')
Deno.serve(async (req) => {
const payload: WebhookPayload = await req.json()
const { content, id } = payload.record
// Generate embedding.
const embedding = await model.run(content, {
mean_pool: true,
normalize: true,
})
// Store in database.
const { error } = await supabase
.from('embeddings')
.update({ embedding: JSON.stringify(embedding) })
.eq('id', id)
if (error) console.warn(error.message)
return new Response('ok')
})
```
## Create a Postgres Function and RPC
With the embeddings now stored in your Postgres database table, you can query them from Supabase Edge Functions by utilizing [Remote Procedure Calls (RPC)](/docs/guides/database/functions?language=js).
Given the [following Postgres Function](https://github.com/supabase/supabase/blob/master/examples/ai/edge-functions/supabase/migrations/20240410031515_vector-search.sql):
```sql
-- Matches document sections using vector similarity search on embeddings
--
-- Returns a setof embeddings so that we can use PostgREST resource embeddings (joins with other tables)
-- Additional filtering like limits can be chained to this function call
create or replace function query_embeddings(embedding vector(384), match_threshold float)
returns setof embeddings
language plpgsql
as $$
begin
return query
select *
from embeddings
-- The inner product is negative, so we negate match_threshold
where embeddings.embedding <#> embedding < -match_threshold
-- Our embeddings are normalized to length 1, so cosine similarity
-- and inner product will produce the same query results.
-- Using inner product which can be computed faster.
--
-- For the different distance functions, see https://github.com/pgvector/pgvector
order by embeddings.embedding <#> embedding;
end;
$$;
```
## Query vectors in Supabase Edge Functions
You can use `supabase-js` to first generate the embedding for the search term and then invoke the Postgres function to find the relevant results from your stored embeddings, right from your [Supabase Edge Function](https://github.com/supabase/supabase/blob/master/examples/ai/edge-functions/supabase/functions/search/index.ts):
```tsx
const model = new Supabase.ai.Session('gte-small')
Deno.serve(async (req) => {
const { search } = await req.json()
if (!search) return new Response('Please provide a search param!')
// Generate embedding for search term.
const embedding = await model.run(search, {
mean_pool: true,
normalize: true,
})
// Query embeddings.
const { data: result, error } = await supabase
.rpc('query_embeddings', {
embedding,
match_threshold: 0.8,
})
.select('content')
.limit(3)
if (error) {
return Response.json(error)
}
return Response.json({ search, result })
})
```
That's it, you now have AI powered semantic search set up without any external dependencies! Just you, pgvector, and Supabase Edge Functions!
@@ -58,7 +58,7 @@ You can deploy the function to Supabase via:
supabase functions deploy hello-world
```
Once the function is deployed, you can try to call the two ednpoints using cURL (or Postman).
Once the function is deployed, you can try to call the two endpoints using cURL (or Postman).
```bash
# https://supabase.com/docs/guides/functions/deploy#invoking-remote-functions
+12 -5
View File
@@ -1,12 +1,17 @@
import { useState, useCallback, useEffect } from 'react'
const useHash = () => {
const [hash, setHash] = useState(() =>
typeof window !== 'undefined' ? window.location.hash.split('#')[1] : undefined
)
const [hash, setHash] = useState(() => {
if (typeof window !== 'undefined') {
const url = new URL(window.location.href)
return url.hash.substring(1) // Removes the leading '#'
}
return undefined
})
const hashChangeHandler = useCallback(() => {
setHash(window.location.hash.split('#')[1])
const url = new URL(window.location.href)
setHash(url.hash.substring(1))
}, [])
useEffect(() => {
@@ -18,7 +23,9 @@ const useHash = () => {
const updateHash = useCallback(
(newHash) => {
if (newHash !== hash) window.location.hash = newHash
if (newHash !== hash) {
window.location.hash = newHash
}
},
[hash]
)
@@ -43,7 +43,7 @@ const PolicyRoles = ({ selectedRoles, onUpdateSelectedRoles }: PolicyRolesProps)
</div>
<div className="relative w-2/3">
{isLoading && <ShimmeringLoader className="py-4" />}
{isError && <AlertError error={error} subject="Failed to retrieve database roles" />}
{isError && <AlertError error={error as any} subject="Failed to retrieve database roles" />}
{isSuccess && (
<MultiSelect
options={formattedRoles}
@@ -26,22 +26,22 @@ interface CreateRolePanelProps {
const FormSchema = z.object({
name: z.string().trim().min(1, 'You must provide a name').default(''),
is_superuser: z.boolean().default(false),
can_login: z.boolean().default(false),
can_create_role: z.boolean().default(false),
can_create_db: z.boolean().default(false),
is_replication_role: z.boolean().default(false),
can_bypass_rls: z.boolean().default(false),
isSuperuser: z.boolean().default(false),
canLogin: z.boolean().default(false),
canCreateRole: z.boolean().default(false),
canCreateDb: z.boolean().default(false),
isReplicationRole: z.boolean().default(false),
canBypassRls: z.boolean().default(false),
})
const initialValues = {
name: '',
is_superuser: false,
can_login: false,
can_create_role: false,
can_create_db: false,
is_replication_role: false,
can_bypass_rls: false,
isSuperuser: false,
canLogin: false,
canCreateRole: false,
canCreateDb: false,
isReplicationRole: false,
canBypassRls: false,
}
const CreateRolePanel = ({ visible, onClose }: CreateRolePanelProps) => {
@@ -54,8 +54,8 @@ const CreateRolePanel = ({ visible, onClose }: CreateRolePanelProps) => {
})
const { mutate: createDatabaseRole, isLoading: isCreating } = useDatabaseRoleCreateMutation({
onSuccess: (res) => {
toast.success(`Successfully created new role: ${res.name}`)
onSuccess: (_, vars) => {
toast.success(`Successfully created new role: ${vars.payload.name}`)
handleClose()
},
})
@@ -27,7 +27,7 @@ const DeleteRoleModal = ({ role, visible, onClose }: DeleteRoleModalProps) => {
deleteDatabaseRole({
projectRef: project.ref,
connectionString: project.connectionString,
id: role.id.toString(),
id: role.id,
})
}
@@ -1,5 +1,4 @@
import * as Tooltip from '@radix-ui/react-tooltip'
import type { PostgresRole } from '@supabase/postgres-meta'
import { useState } from 'react'
import toast from 'react-hot-toast'
import {
@@ -18,13 +17,14 @@ import {
} from 'ui'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
import { PgRole } from 'data/database-roles/database-roles-query'
import { useDatabaseRoleUpdateMutation } from 'data/database-roles/database-role-update-mutation'
import { ROLE_PERMISSIONS } from './Roles.constants'
interface RoleRowProps {
role: PostgresRole
role: PgRole
disabled?: boolean
onSelectDelete: (role: PostgresRole) => void
onSelectDelete: (role: PgRole) => void
}
const RoleRow = ({ role, disabled = false, onSelectDelete }: RoleRowProps) => {
@@ -33,25 +33,22 @@ const RoleRow = ({ role, disabled = false, onSelectDelete }: RoleRowProps) => {
const { mutate: updateDatabaseRole, isLoading: isUpdating } = useDatabaseRoleUpdateMutation()
const {
is_superuser,
can_login,
can_create_role,
can_create_db,
is_replication_role,
can_bypass_rls,
} = role
const { isSuperuser, canLogin, canCreateRole, canCreateDb, isReplicationRole, canBypassRls } =
role
const onSaveChanges = async (values: any, { resetForm }: any) => {
const onSaveChanges = async (values: Partial<PgRole>, { resetForm }: any) => {
if (!project) return console.error('Project is required')
const { is_superuser, is_replication_role, ...payload } = values
const changed = Object.fromEntries(
Object.entries(values).filter(([k, v]) => v !== (role as any)[k])
)
updateDatabaseRole(
{
projectRef: project.ref,
connectionString: project.connectionString,
id: role.id,
payload,
payload: changed,
},
{
onSuccess: () => {
@@ -66,12 +63,12 @@ const RoleRow = ({ role, disabled = false, onSelectDelete }: RoleRowProps) => {
<Form
name="role-update-form"
initialValues={{
is_superuser,
can_login,
can_create_role,
can_create_db,
is_replication_role,
can_bypass_rls,
isSuperuser,
canLogin,
canCreateRole,
canCreateDb,
isReplicationRole,
canBypassRls,
}}
onSubmit={onSaveChanges}
className={[
@@ -118,7 +115,7 @@ const RoleRow = ({ role, disabled = false, onSelectDelete }: RoleRowProps) => {
</div>
</div>
<div className="flex items-center space-x-4">
{role.active_connections > 0 && (
{role.activeConnections > 0 && (
<div className="relative h-2 w-2">
<span className="flex h-2 w-2">
<span className="absolute inline-flex h-full w-full animate-ping rounded-full bg-brand opacity-75"></span>
@@ -129,10 +126,10 @@ const RoleRow = ({ role, disabled = false, onSelectDelete }: RoleRowProps) => {
<p
id="collapsible-trigger"
className={`text-sm ${
role.active_connections > 0 ? 'text-foreground' : 'text-foreground-light'
role.activeConnections > 0 ? 'text-foreground' : 'text-foreground-light'
}`}
>
{role.active_connections} connections
{role.activeConnections} connections
</p>
{!disabled && (
<DropdownMenu>
@@ -33,35 +33,35 @@ export const SYSTEM_ROLES = [
] as const
export const ROLE_PERMISSIONS = {
can_login: {
canLogin: {
disabled: false,
description: 'User can login',
grant_by_dashboard: true,
},
can_create_role: {
canCreateRole: {
disabled: false,
description: 'User can create roles',
grant_by_dashboard: true,
},
can_create_db: {
canCreateDb: {
disabled: false,
description: 'User can create databases',
grant_by_dashboard: true,
},
can_bypass_rls: {
disabled: true,
canBypassRls: {
disabled: false,
description: 'User bypasses every row level security policy',
grant_by_dashboard: false,
grant_by_dashboard: true,
},
is_superuser: {
isSuperuser: {
disabled: true,
description: 'User is a Superuser',
grant_by_dashboard: false,
},
is_replication_role: {
disabled: true,
isReplicationRole: {
disabled: false,
description:
'User can initiate streaming replication and put the system in and out of backup mode',
grant_by_dashboard: false,
grant_by_dashboard: true,
},
} as const
@@ -42,19 +42,19 @@ const RolesList = () => {
const roles = sortBy(data ?? [], (r) => r.name.toLocaleLowerCase())
const filteredRoles = (
filterType === 'active' ? roles.filter((role) => role.active_connections > 0) : roles
filterType === 'active' ? roles.filter((role) => role.activeConnections > 0) : roles
).filter((role) => role.name.includes(filterString))
const [supabaseRoles, otherRoles] = partition(filteredRoles, (role) =>
SUPABASE_ROLES.includes(role.name as SUPABASE_ROLE)
)
const totalActiveConnections = roles
.map((role) => role.active_connections)
.map((role) => role.activeConnections)
.reduce((a, b) => a + b, 0)
// order the roles with active connections by number of connections, most connections first
const rolesWithActiveConnections = sortBy(
roles.filter((role) => role.active_connections > 0),
(r) => -r.active_connections
roles.filter((role) => role.activeConnections > 0),
(r) => -r.activeConnections
)
return (
@@ -145,7 +145,7 @@ const RolesList = () => {
<p className="text-xs text-foreground-light pr-2">Connections by roles:</p>
{rolesWithActiveConnections.map((role) => (
<div key={role.id} className="text-xs text-foreground">
{role.name}: {role.active_connections}
{role.name}: {role.activeConnections}
</div>
))}
</div>
@@ -3,23 +3,23 @@ import { ExternalLink } from 'lucide-react'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
import { useDatabaseExtensionEnableMutation } from 'data/database-extensions/database-extension-enable-mutation'
import { useDatabaseExtensionsQuery } from 'data/database-extensions/database-extensions-query'
import { useIndexAdvisorEnableMutation } from 'data/database/index-advisor-enable-mutation'
import { AlertDescription_Shadcn_, AlertTitle_Shadcn_, Alert_Shadcn_, Button } from 'ui'
import { Markdown } from '../Markdown'
import Link from 'next/link'
import { useParams } from 'common'
export const IndexAdvisorDisabledState = () => {
const { ref } = useParams()
const { project } = useProjectContext()
const { data: extensions } = useDatabaseExtensionsQuery({
projectRef: project?.ref,
connectionString: project?.connectionString,
})
const hypopgExtension = (extensions ?? []).find((ext) => ext.name === 'hypopg')
const indexAdvisorExtension = (extensions ?? []).find((ext) => ext.name === 'index_advisor')
const { mutateAsync: enableExtension, isLoading: isEnablingExtension } =
useDatabaseExtensionEnableMutation()
const { mutateAsync: enableIndexAdvisor, isLoading: isEnablingIndexAdvisor } =
useIndexAdvisorEnableMutation()
const isEnabling = isEnablingExtension || isEnablingIndexAdvisor
const onEnableIndexAdvisor = async () => {
if (project === undefined) return console.error('Project is required')
@@ -32,33 +32,56 @@ export const IndexAdvisorDisabledState = () => {
version: hypopgExtension.default_version,
})
}
// [Joshen] Once index_advisor ext is ready, it'll just be enabling an extension
await enableIndexAdvisor({
projectRef: project.ref,
connectionString: project.connectionString,
})
if (indexAdvisorExtension?.installed_version === null) {
await enableExtension({
projectRef: project?.ref,
connectionString: project?.connectionString,
name: indexAdvisorExtension.name,
schema: indexAdvisorExtension?.schema ?? 'extensions',
version: indexAdvisorExtension.default_version,
})
}
}
return (
<Alert_Shadcn_>
<Alert_Shadcn_ className="mb-6">
<AlertTitle_Shadcn_>
Get index suggestions to improve your query performance
<Markdown
className="text-foreground"
content={
indexAdvisorExtension === undefined
? 'Newer version of Postgres required'
: 'Postgres extensions `index_advisor` and `hypopg` required'
}
/>
</AlertTitle_Shadcn_>
<AlertDescription_Shadcn_>
<Markdown content="The `index_advisor` extension can help in recommending database indexes to reduce the costs of your query." />
<Markdown
content={
indexAdvisorExtension === undefined
? 'Upgrade to the latest version of Postgres to get recommendations on indexes for your queries'
: 'These extensions can help in recommending database indexes to reduce the costs of your query.'
}
/>
</AlertDescription_Shadcn_>
<AlertDescription_Shadcn_ className="mt-3">
<div className="flex items-center gap-x-2">
<Button
type="default"
disabled={isEnabling}
loading={isEnabling}
onClick={() => onEnableIndexAdvisor()}
>
Enable index advisor
</Button>
<Button asChild type="default" icon={<ExternalLink />}>
{indexAdvisorExtension === undefined ? (
<Button asChild type="default">
<Link href={`/project/${ref}/settings/infrastructure`}>Upgrade Postgres version</Link>
</Button>
) : (
<Button
type="default"
disabled={isEnablingExtension}
loading={isEnablingExtension}
onClick={() => onEnableIndexAdvisor()}
>
Enable extensions
</Button>
)}
<Button asChild type="outline" icon={<ExternalLink />}>
<a
target="_blank"
rel="noreferrer"
@@ -9,7 +9,6 @@ import { useDatabaseExtensionsQuery } from 'data/database-extensions/database-ex
import { useGetIndexAdvisorResult } from 'data/database/retrieve-index-advisor-result-query'
import { useGetIndexesFromSelectQuery } from 'data/database/retrieve-index-from-select-query'
import { useExecuteSqlMutation } from 'data/sql/execute-sql-mutation'
import { useExecuteSqlQuery } from 'data/sql/execute-sql-query'
import {
AccordionContent_Shadcn_,
AccordionItem_Shadcn_,
@@ -51,21 +50,16 @@ export const QueryIndexes = ({ selectedRow }: QueryIndexesProps) => {
query: selectedRow?.['query'],
})
const { data: indexAdvisorExt, isLoading: isLoadingIndexAdvisorExt } = useExecuteSqlQuery({
projectRef: project?.ref,
connectionString: project?.connectionString,
sql: `select * from pg_proc where proname = 'index_advisor';`,
queryKey: ['index-advisor-function-check'],
})
const { data: extensions, isLoading: isLoadingExtensions } = useDatabaseExtensionsQuery({
projectRef: project?.ref,
connectionString: project?.connectionString,
})
const isLoadingChecks = isLoadingIndexAdvisorExt || isLoadingExtensions
const hypopgExtension = (extensions ?? []).find((ext) => ext.name === 'hypopg')
const indexAdvisorExtension = (extensions ?? []).find((ext) => ext.name === 'index_advisor')
const isIndexAdvisorAvailable =
(indexAdvisorExt?.result ?? []).length > 0 &&
indexAdvisorExtension !== undefined &&
indexAdvisorExtension.installed_version !== null &&
hypopgExtension !== undefined &&
hypopgExtension.installed_version !== null
@@ -165,7 +159,7 @@ export const QueryIndexes = ({ selectedRow }: QueryIndexesProps) => {
<QueryPanelSection className="flex flex-col gap-y-6">
<div className="flex flex-col gap-y-2">
<p className="text-sm">New index recommendations</p>
{isLoadingChecks ? (
{isLoadingExtensions ? (
<GenericSkeletonLoader />
) : !isIndexAdvisorAvailable ? (
<IndexAdvisorDisabledState />
@@ -1,12 +1,12 @@
import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'
import pgMeta from '@supabase/pg-meta'
import { toast } from 'react-hot-toast'
import { post } from 'data/fetchers'
import type { ResponseError } from 'types'
import { databaseRolesKeys } from './keys'
import type { components } from 'data/api'
import { executeSql } from 'data/sql/execute-sql-query'
import { invalidateRolesQuery } from './database-roles-query'
type CreateRoleBody = components['schemas']['CreateRoleBody']
type CreateRoleBody = Parameters<typeof pgMeta.roles.create>[0]
export type DatabaseRoleCreateVariables = {
projectRef: string
@@ -19,20 +19,14 @@ export async function createDatabaseRole({
connectionString,
payload,
}: DatabaseRoleCreateVariables) {
let headers = new Headers()
if (connectionString) headers.set('x-connection-encrypted', connectionString)
const { data, error } = await post('/platform/pg-meta/{ref}/roles', {
params: {
header: { 'x-connection-encrypted': connectionString! },
path: { ref: projectRef },
},
body: payload,
headers,
const sql = pgMeta.roles.create(payload).sql
const { result } = await executeSql({
projectRef,
connectionString,
sql,
queryKey: ['roles', 'create'],
})
if (error) throw error
return data
return result
}
type DatabaseRoleCreateData = Awaited<ReturnType<typeof createDatabaseRole>>
@@ -52,7 +46,7 @@ export const useDatabaseRoleCreateMutation = ({
{
async onSuccess(data, variables, context) {
const { projectRef } = variables
await queryClient.invalidateQueries(databaseRolesKeys.list(projectRef))
await invalidateRolesQuery(queryClient, projectRef)
await onSuccess?.(data, variables, context)
},
async onError(data, variables, context) {
@@ -1,35 +1,34 @@
import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'
import pgMeta from '@supabase/pg-meta'
import { toast } from 'react-hot-toast'
import { del } from 'data/fetchers'
import type { ResponseError } from 'types'
import { databaseRolesKeys } from './keys'
import { executeSql } from 'data/sql/execute-sql-query'
import { invalidateRolesQuery } from './database-roles-query'
type DropRoleBody = Parameters<typeof pgMeta.roles.remove>[1]
export type DatabaseRoleDeleteVariables = {
projectRef: string
connectionString?: string
id: string
id: number
payload?: DropRoleBody
}
export async function deleteDatabaseRole({
projectRef,
connectionString,
id,
payload,
}: DatabaseRoleDeleteVariables) {
let headers = new Headers()
if (connectionString) headers.set('x-connection-encrypted', connectionString)
const { data, error } = await del('/platform/pg-meta/{ref}/roles', {
params: {
header: { 'x-connection-encrypted': connectionString! },
path: { ref: projectRef },
query: { id },
},
headers,
const sql = pgMeta.roles.remove({ id }, payload).sql
const { result } = await executeSql({
projectRef,
connectionString,
sql,
queryKey: ['roles', 'delete'],
})
if (error) throw error
return data
return result
}
type DatabaseRoleDeleteData = Awaited<ReturnType<typeof deleteDatabaseRole>>
@@ -49,7 +48,7 @@ export const useDatabaseRoleDeleteMutation = ({
{
async onSuccess(data, variables, context) {
const { projectRef } = variables
await queryClient.invalidateQueries(databaseRolesKeys.list(projectRef))
await invalidateRolesQuery(queryClient, projectRef)
await onSuccess?.(data, variables, context)
},
async onError(data, variables, context) {
@@ -1,12 +1,12 @@
import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'
import pgMeta from '@supabase/pg-meta'
import { toast } from 'react-hot-toast'
import { patch } from 'data/fetchers'
import type { ResponseError } from 'types'
import { databaseRolesKeys } from './keys'
import type { components } from 'data/api'
import { executeSql } from 'data/sql/execute-sql-query'
import { invalidateRolesQuery } from './database-roles-query'
type UpdateRoleBody = components['schemas']['UpdateRoleBody']
type UpdateRoleBody = Parameters<typeof pgMeta.roles.update>[1]
export type DatabaseRoleUpdateVariables = {
projectRef: string
@@ -21,21 +21,14 @@ export async function updateDatabaseRole({
id,
payload,
}: DatabaseRoleUpdateVariables) {
let headers = new Headers()
if (connectionString) headers.set('x-connection-encrypted', connectionString)
const { data, error } = await patch('/platform/pg-meta/{ref}/roles', {
params: {
header: { 'x-connection-encrypted': connectionString! },
path: { ref: projectRef },
query: { id },
},
body: payload,
headers,
const sql = pgMeta.roles.update({ id }, payload).sql
const { result } = await executeSql({
projectRef,
connectionString,
sql,
queryKey: ['roles', 'update'],
})
if (error) throw error
return data
return result
}
type DatabaseRoleUpdateData = Awaited<ReturnType<typeof updateDatabaseRole>>
@@ -55,7 +48,7 @@ export const useDatabaseRoleUpdateMutation = ({
{
async onSuccess(data, variables, context) {
const { projectRef } = variables
await queryClient.invalidateQueries(databaseRolesKeys.list(projectRef))
await invalidateRolesQuery(queryClient, projectRef)
await onSuccess?.(data, variables, context)
},
async onError(data, variables, context) {
@@ -1,49 +1,41 @@
import { UseQueryOptions, useQuery } from '@tanstack/react-query'
import type { PostgresRole } from '@supabase/postgres-meta'
import pgMeta from '@supabase/pg-meta'
import { QueryClient, UseQueryOptions } from '@tanstack/react-query'
import { z } from 'zod'
import { get } from 'data/fetchers'
import type { ResponseError } from 'types'
import { databaseRolesKeys } from './keys'
import { ExecuteSqlData, useExecuteSqlQuery } from 'data/sql/execute-sql-query'
import { sqlKeys } from 'data/sql/keys'
export type DatabaseRolesVariables = {
projectRef?: string
connectionString?: string
}
export async function getDatabaseRoles(
{ projectRef, connectionString }: DatabaseRolesVariables,
signal?: AbortSignal
) {
if (!projectRef) throw new Error('projectRef is required')
export type PgRole = z.infer<typeof pgMeta.roles.zod>
let headers = new Headers()
if (connectionString) headers.set('x-connection-encrypted', connectionString)
const pgMetaRolesList = pgMeta.roles.list()
const { data, error } = await get('/platform/pg-meta/{ref}/roles', {
params: {
header: { 'x-connection-encrypted': connectionString! },
path: { ref: projectRef },
},
headers,
signal,
})
if (error) throw error
return data as PostgresRole[]
}
export type DatabaseRolesData = Awaited<ReturnType<typeof getDatabaseRoles>>
export type DatabaseRolesError = ResponseError
export type DatabaseRolesData = z.infer<typeof pgMetaRolesList.zod>
export type DatabaseRolesError = unknown
export const useDatabaseRolesQuery = <TData = DatabaseRolesData>(
{ projectRef, connectionString }: DatabaseRolesVariables,
{ enabled = true, ...options }: UseQueryOptions<DatabaseRolesData, DatabaseRolesError, TData> = {}
options: UseQueryOptions<ExecuteSqlData, DatabaseRolesError, TData> = {}
) =>
useQuery<DatabaseRolesData, DatabaseRolesError, TData>(
databaseRolesKeys.list(projectRef),
({ signal }) => getDatabaseRoles({ projectRef, connectionString }, signal),
useExecuteSqlQuery(
{
enabled: enabled && typeof projectRef !== 'undefined',
projectRef,
connectionString,
sql: pgMetaRolesList.sql,
queryKey: ['roles', 'list'],
},
{
select(data) {
return data.result
},
...options,
}
)
export function invalidateRolesQuery(client: QueryClient, projectRef: string | undefined) {
return client.invalidateQueries(sqlKeys.query(projectRef, ['roles', 'list']))
}
-3
View File
@@ -1,3 +0,0 @@
export const databaseRolesKeys = {
list: (projectRef: string | undefined) => ['projects', projectRef, 'database-roles'] as const,
}
@@ -3,7 +3,7 @@ import { toast } from 'react-hot-toast'
import { post } from 'data/fetchers'
import type { ResponseError } from 'types'
import { databaseKeys } from './keys'
import { invalidateSchemasQuery } from './schemas-query'
export type HooksEnableVariables = {
ref: string
@@ -34,7 +34,7 @@ export const useHooksEnableMutation = ({
async onSuccess(data, variables, context) {
const { ref } = variables
await onSuccess?.(data, variables, context)
await queryClient.invalidateQueries(databaseKeys.schemaList(ref))
await invalidateSchemasQuery(queryClient, ref)
},
async onError(data, variables, context) {
if (onError === undefined) {
@@ -1,250 +0,0 @@
import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'
import { toast } from 'react-hot-toast'
import { executeSql } from 'data/sql/execute-sql-query'
import type { ResponseError } from 'types'
import { sqlKeys } from 'data/sql/keys'
// [Joshen] This is just temporary while we wait for Index Advisor to be baked into the image itself
export type IndexAdvisorEnableVariables = {
projectRef: string
connectionString?: string
}
export async function enableIndexAdvisor({
projectRef,
connectionString,
}: IndexAdvisorEnableVariables) {
const sql = `
create or replace function index_advisor(
query text
)
returns table (
startup_cost_before jsonb,
startup_cost_after jsonb,
total_cost_before jsonb,
total_cost_after jsonb,
index_statements text[],
errors text[]
)
volatile
language plpgsql
as $$
declare
n_args int;
prepared_statement_name text = 'index_advisor_working_statement';
hypopg_schema_name text = (select extnamespace::regnamespace::text from pg_extension where extname = 'hypopg');
explain_plan_statement text;
error_message text;
rec record;
plan_initial jsonb;
plan_final jsonb;
statements text[] = '{}';
begin
-- Remove comment lines (its common that they contain semicolons)
query := trim(
regexp_replace(
regexp_replace(
regexp_replace(query,'\\/\\*.+\\*\\/', '', 'g'),
'--[^\\r\\n]*', ' ', 'g'),
'\\s+', ' ', 'g')
);
-- Remove trailing semicolon
query := regexp_replace(query, ';\\s*$', '');
begin
-- Disallow multiple statements
if query ilike '%;%' then
raise exception 'Query must not contain a semicolon';
end if;
-- Hack to support PostgREST because the prepared statement for args incorrectly defaults to text
query := replace(query, 'WITH pgrst_payload AS (SELECT $1 AS json_data)', 'WITH pgrst_payload AS (SELECT $1::json AS json_data)');
-- Create a prepared statement for the given query
deallocate all;
execute format('prepare %I as %s', prepared_statement_name, query);
-- Detect how many arguments are present in the prepared statement
n_args = (
select
coalesce(array_length(parameter_types, 1), 0)
from
pg_prepared_statements
where
name = prepared_statement_name
limit
1
);
-- Create a SQL statement that can be executed to collect the explain plan
explain_plan_statement = format(
'set local plan_cache_mode = force_generic_plan; explain (format json) execute %I%s',
--'explain (format json) execute %I%s',
prepared_statement_name,
case
when n_args = 0 then ''
else format(
'(%s)', array_to_string(array_fill('null'::text, array[n_args]), ',')
)
end
);
-- Store the query plan before any new indexes
execute explain_plan_statement into plan_initial;
-- Create possible indexes
for rec in (
with extension_regclass as (
select
distinct objid as oid
from
pg_catalog.pg_depend
where
deptype = 'e'
)
select
pc.relnamespace::regnamespace::text as schema_name,
pc.relname as table_name,
pa.attname as column_name,
format(
'select %I.hypopg_create_index($i$create index on %I.%I(%I)$i$)',
hypopg_schema_name,
pc.relnamespace::regnamespace::text,
pc.relname,
pa.attname
) hypopg_statement
from
pg_catalog.pg_class pc
join pg_catalog.pg_attribute pa
on pc.oid = pa.attrelid
left join extension_regclass er
on pc.oid = er.oid
left join pg_catalog.pg_index pi
on pc.oid = pi.indrelid
and (select array_agg(x) from unnest(pi.indkey) v(x)) = array[pa.attnum]
and pi.indexprs is null -- ignore expression indexes
and pi.indpred is null -- ignore partial indexes
where
pc.relnamespace::regnamespace::text not in ( -- ignore schema list
'pg_catalog', 'pg_toast', 'information_schema'
)
and er.oid is null -- ignore entities owned by extensions
and pc.relkind in ('r', 'm') -- regular tables, and materialized views
and pc.relpersistence = 'p' -- permanent tables (not unlogged or temporary)
and pa.attnum > 0
and not pa.attisdropped
and pi.indrelid is null
and pa.atttypid in (20,16,1082,1184,1114,701,23,21,700,1083,2950,1700,25,18,1042,1043)
)
loop
-- Create the hypothetical index
execute rec.hypopg_statement;
end loop;
/*
for rec in select * from hypopg()
loop
raise notice '%', rec;
end loop;
*/
-- Create a prepared statement for the given query
-- The original prepared statement MUST be dropped because its plan is cached
execute format('deallocate %I', prepared_statement_name);
execute format('prepare %I as %s', prepared_statement_name, query);
-- Store the query plan after new indexes
execute explain_plan_statement into plan_final;
--raise notice '%', plan_final;
-- Idenfity referenced indexes in new plan
execute format(
'select
coalesce(array_agg(hypopg_get_indexdef(indexrelid) order by indrelid, indkey::text), $i\${}$i$::text[])
from
%I.hypopg()
where
%s ilike ($i$%%$i$ || indexname || $i$%%$i$)
',
hypopg_schema_name,
quote_literal(plan_final)::text
) into statements;
-- Reset all hypothetical indexes
perform hypopg_reset();
-- Reset prepared statements
deallocate all;
return query values (
(plan_initial -> 0 -> 'Plan' -> 'Startup Cost'),
(plan_final -> 0 -> 'Plan' -> 'Startup Cost'),
(plan_initial -> 0 -> 'Plan' -> 'Total Cost'),
(plan_final -> 0 -> 'Plan' -> 'Total Cost'),
statements::text[],
array[]::text[]
);
return;
exception when others then
get stacked diagnostics error_message = MESSAGE_TEXT;
return query values (
null::jsonb,
null::jsonb,
null::jsonb,
null::jsonb,
array[]::text[],
array[error_message]::text[]
);
return;
end;
end;
$$;
`
const { result } = await executeSql({
projectRef,
connectionString,
sql,
queryKey: ['enable-index-advisor'],
})
return result
}
type IndexAdvisorEnableData = Awaited<ReturnType<typeof enableIndexAdvisor>>
export const useIndexAdvisorEnableMutation = ({
onSuccess,
onError,
...options
}: Omit<
UseMutationOptions<IndexAdvisorEnableData, ResponseError, IndexAdvisorEnableVariables>,
'mutationFn'
> = {}) => {
const queryClient = useQueryClient()
return useMutation<IndexAdvisorEnableData, ResponseError, IndexAdvisorEnableVariables>(
(vars) => enableIndexAdvisor(vars),
{
async onSuccess(data, variables, context) {
const { projectRef } = variables
queryClient.invalidateQueries(sqlKeys.query(projectRef, ['index-advisor-function-check']))
await onSuccess?.(data, variables, context)
},
async onError(data, variables, context) {
if (onError === undefined) {
toast.error(`Failed to enable index advisor: ${data.message}`)
} else {
onError(data, variables, context)
}
},
...options,
}
)
}
-1
View File
@@ -1,5 +1,4 @@
export const databaseKeys = {
schemaList: (projectRef: string | undefined) => ['projects', projectRef, 'schemas'] as const,
backups: (projectRef: string | undefined) => [projectRef, 'database', 'backups'] as const,
poolingConfiguration: (projectRef: string | undefined) =>
[projectRef, 'database', 'pooling-configuration'] as const,
@@ -1,9 +1,10 @@
import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'
import pgMeta from '@supabase/pg-meta'
import { toast } from 'react-hot-toast'
import { post } from 'data/fetchers'
import type { ResponseError } from 'types'
import { databaseKeys } from './keys'
import { executeSql } from 'data/sql/execute-sql-query'
import { invalidateSchemasQuery } from './schemas-query'
export type SchemaCreateVariables = {
name: string
@@ -12,22 +13,14 @@ export type SchemaCreateVariables = {
}
export async function createSchema({ name, projectRef, connectionString }: SchemaCreateVariables) {
if (!projectRef) throw new Error('projectRef is required')
let headers = new Headers()
if (connectionString) headers.set('x-connection-encrypted', connectionString)
const { data, error } = await post('/platform/pg-meta/{ref}/schemas', {
params: {
header: { 'x-connection-encrypted': connectionString! },
path: { ref: projectRef },
},
body: { name, owner: 'postgres' },
headers: Object.fromEntries(headers),
const sql = pgMeta.schemas.create({ name, owner: 'postgres' }).sql
const { result } = await executeSql({
projectRef,
connectionString,
sql,
queryKey: ['schema', 'create'],
})
if (error) throw error
return data
return result
}
type SchemaCreateData = Awaited<ReturnType<typeof createSchema>>
@@ -46,7 +39,7 @@ export const useSchemaCreateMutation = ({
{
async onSuccess(data, variables, context) {
const { projectRef } = variables
await queryClient.invalidateQueries(databaseKeys.schemaList(projectRef))
await invalidateSchemasQuery(queryClient, projectRef)
await onSuccess?.(data, variables, context)
},
async onError(data, variables, context) {
+2 -2
View File
@@ -3,7 +3,7 @@ import { QueryClient, UseQueryOptions } from '@tanstack/react-query'
import { z } from 'zod'
import { ExecuteSqlData, useExecuteSqlQuery } from 'data/sql/execute-sql-query'
import { databaseKeys } from './keys'
import { sqlKeys } from 'data/sql/keys'
export type SchemasVariables = {
projectRef?: string
@@ -37,5 +37,5 @@ export const useSchemasQuery = <TData = SchemasData>(
)
export function invalidateSchemasQuery(client: QueryClient, projectRef: string | undefined) {
return client.invalidateQueries(databaseKeys.schemaList(projectRef))
return client.invalidateQueries(sqlKeys.query(projectRef, ['schemas', 'list']))
}
+31 -24
View File
@@ -1,5 +1,7 @@
import { NextApiRequest, NextApiResponse } from 'next'
import apiWrapper from 'lib/api/apiWrapper'
import { get } from 'lib/common/fetch'
import { constructHeaders } from 'lib/api/apiHelpers'
export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler)
@@ -18,6 +20,11 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
}
const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => {
const headers = constructHeaders({})
const url = `${process.env.SUPABASE_URL}/auth/v1/settings`
const { external, disable_signup, mailer_autoconfirm, phone_autoconfirm } = await get(url, {
headers,
})
// Platform only API
return res.status(200).json({
app_version: '',
@@ -27,13 +34,13 @@ const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => {
isFreeTier: true,
SITE_URL: '',
OPERATOR_TOKEN: null,
DISABLE_SIGNUP: false,
DISABLE_SIGNUP: disable_signup ?? false,
RATE_LIMIT_HEADER: null,
JWT_EXP: 3600,
JWT_AUD: '',
JWT_DEFAULT_GROUP_NAME: '',
URI_ALLOW_LIST: '',
MAILER_AUTOCONFIRM: false,
MAILER_AUTOCONFIRM: mailer_autoconfirm ?? false,
MAILER_OTP_EXP: 86400,
MAILER_URLPATHS_INVITE: '',
MAILER_URLPATHS_CONFIRMATION: '',
@@ -46,65 +53,65 @@ const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => {
SMTP_USER: null,
SMTP_PASS: null,
SMTP_MAX_FREQUENCY: 0,
EXTERNAL_ANONYMOUS_USERS_ENABLED: true,
EXTERNAL_EMAIL_ENABLED: true,
EXTERNAL_PHONE_ENABLED: true,
EXTERNAL_APPLE_ENABLED: false,
EXTERNAL_ANONYMOUS_USERS_ENABLED: external?.anonymous_users ?? true,
EXTERNAL_EMAIL_ENABLED: external?.email ?? true,
EXTERNAL_PHONE_ENABLED: external?.phone ?? true,
EXTERNAL_APPLE_ENABLED: external?.apple ?? false,
EXTERNAL_APPLE_CLIENT_ID: null,
EXTERNAL_APPLE_SECRET: null,
EXTERNAL_AZURE_ENABLED: false,
EXTERNAL_AZURE_ENABLED: external?.azure ?? false,
EXTERNAL_AZURE_CLIENT_ID: null,
EXTERNAL_AZURE_SECRET: null,
EXTERNAL_AZURE_URL: null,
EXTERNAL_BITBUCKET_ENABLED: false,
EXTERNAL_BITBUCKET_ENABLED: external?.bitbucket ?? false,
EXTERNAL_BITBUCKET_CLIENT_ID: null,
EXTERNAL_BITBUCKET_SECRET: null,
EXTERNAL_DISCORD_ENABLED: false,
EXTERNAL_DISCORD_ENABLED: external?.discord ?? false,
EXTERNAL_DISCORD_CLIENT_ID: null,
EXTERNAL_DISCORD_SECRET: null,
EXTERNAL_FACEBOOK_ENABLED: false,
EXTERNAL_FACEBOOK_ENABLED: external?.facebook ?? false,
EXTERNAL_FACEBOOK_CLIENT_ID: null,
EXTERNAL_FACEBOOK_SECRET: null,
EXTERNAL_FIGMA_ENABLED: false,
EXTERNAL_FIGMA_ENABLED: external?.figma ?? false,
EXTERNAL_FIGMA_CLIENT_ID: null,
EXTERNAL_FIGMA_SECRET: null,
EXTERNAL_GITHUB_ENABLED: false,
EXTERNAL_GITHUB_ENABLED: external?.github ?? false,
EXTERNAL_GITHUB_CLIENT_ID: null,
EXTERNAL_GITHUB_SECRET: null,
EXTERNAL_GITLAB_ENABLED: false,
EXTERNAL_GITLAB_ENABLED: external?.gitlab ?? false,
EXTERNAL_GITLAB_CLIENT_ID: null,
EXTERNAL_GITLAB_SECRET: null,
EXTERNAL_GITLAB_REDIRECT_URI: null,
EXTERNAL_GOOGLE_ENABLED: false,
EXTERNAL_GOOGLE_ENABLED: external?.google ?? false,
EXTERNAL_GOOGLE_CLIENT_ID: null,
EXTERNAL_GOOGLE_SECRET: null,
EXTERNAL_KAKAO_ENABLED: false,
EXTERNAL_KAKAO_ENABLED: external?.kakao ?? false,
EXTERNAL_KAKAO_CLIENT_ID: null,
EXTERNAL_KAKAO_SECRET: null,
EXTERNAL_KEYCLOAK_ENABLED: false,
EXTERNAL_KEYCLOAK_ENABLED: external?.keycloak ?? false,
EXTERNAL_KEYCLOAK_CLIENT_ID: null,
EXTERNAL_KEYCLOAK_SECRET: null,
EXTERNAL_KEYCLOAK_URL: null,
EXTERNAL_NOTION_ENABLED: false,
EXTERNAL_NOTION_ENABLED: external?.notion ?? false,
EXTERNAL_NOTION_CLIENT_ID: null,
EXTERNAL_NOTION_SECRET: null,
EXTERNAL_SPOTIFY_ENABLED: false,
EXTERNAL_SPOTIFY_ENABLED: external?.spotify ?? false,
EXTERNAL_SPOTIFY_CLIENT_ID: null,
EXTERNAL_SPOTIFY_SECRET: null,
EXTERNAL_SLACK_ENABLED: false,
EXTERNAL_SLACK_ENABLED: external?.slack ?? false,
EXTERNAL_SLACK_CLIENT_ID: null,
EXTERNAL_SLACK_SECRET: null,
EXTERNAL_TWITTER_ENABLED: false,
EXTERNAL_TWITTER_ENABLED: external?.twitter ?? false,
EXTERNAL_TWITTER_CLIENT_ID: null,
EXTERNAL_TWITTER_SECRET: null,
EXTERNAL_TWITCH_ENABLED: false,
EXTERNAL_TWITCH_ENABLED: external?.twitch ?? false,
EXTERNAL_TWITCH_CLIENT_ID: null,
EXTERNAL_TWITCH_SECRET: null,
EXTERNAL_WORKOS_ENABLED: false,
EXTERNAL_WORKOS_ENABLED: external?.workos ?? false,
EXTERNAL_WORKOS_CLIENT_ID: null,
EXTERNAL_WORKOS_SECRET: null,
EXTERNAL_WORKOS_URL: null,
EXTERNAL_ZOOM_ENABLED: false,
EXTERNAL_ZOOM_ENABLED: external?.zoom ?? false,
EXTERNAL_ZOOM_CLIENT_ID: null,
EXTERNAL_ZOOM_SECRET: null,
MAILER_SUBJECTS_INVITE: 'You have been invited',
@@ -129,7 +136,7 @@ const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => {
'<h2>Magic Link</h2>\n\n<p>Follow this link to login:</p>\n<p><a href="{{ .ConfirmationURL }}">Log In</a></p>',
PASSWORD_MIN_LENGTH: 6,
SMTP_SENDER_NAME: null,
SMS_AUTOCONFIRM: false,
SMS_AUTOCONFIRM: phone_autoconfirm ?? false,
SMS_MAX_FREQUENCY: 0,
SMS_OTP_EXP: 60,
SMS_OTP_LENGTH: 6,
@@ -28,7 +28,7 @@ import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectConte
import { ScaffoldContainer, ScaffoldSection } from 'components/layouts/Scaffold'
import AlertError from 'components/ui/AlertError'
import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader'
import { useDatabaseRolesQuery } from 'data/database-roles/database-roles-query'
import { PgRole, useDatabaseRolesQuery } from 'data/database-roles/database-roles-query'
import { useColumnPrivilegesQuery } from 'data/privileges/column-privileges-query'
import { useTablePrivilegesQuery } from 'data/privileges/table-privileges-query'
import { useTablesQuery } from 'data/tables/tables-query'
@@ -133,9 +133,8 @@ const PrivilegesPage: NextPageWithLayout = () => {
[allColumnPrivileges, selectedRole, selectedSchema, selectedTable]
)
const rolesList =
allRoles?.filter((role: PostgresRole) => EDITABLE_ROLES.includes(role.name)) ?? []
const roles = rolesList.map((role: PostgresRole) => role.name)
const rolesList = allRoles?.filter((role: PgRole) => EDITABLE_ROLES.includes(role.name)) ?? []
const roles = rolesList.map((role: PgRole) => role.name)
const table = tableList?.find(
(table) => table.schema === selectedSchema && table.name === selectedTable
+4 -1
View File
@@ -90,7 +90,10 @@
opacity: 0;
position: absolute;
visibility: hidden;
transition: opacity 200ms ease-in-out, visibility 200ms ease-in-out, bottom 200ms ease-in-out;
transition:
opacity 200ms ease-in-out,
visibility 200ms ease-in-out,
bottom 200ms ease-in-out;
button {
@apply rounded text-xs;
+1 -1
View File
@@ -27,4 +27,4 @@
input {
@apply pr-10;
}
}
}
+6 -13
View File
@@ -132,8 +132,7 @@ button.graphiql-tab-add > svg {
/* The query editor and the toolbar */
.graphiql-container .graphiql-query-editor {
border-bottom: 1px solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
border-bottom: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy));
padding: var(--px-16);
column-gap: var(--px-16);
display: flex;
@@ -175,9 +174,7 @@ button.graphiql-tab-add > svg {
}
/* The tab buttons to switch between editor tools */
.graphiql-container
.graphiql-editor-tools
> button:not(.graphiql-toggle-editor-tools) {
.graphiql-container .graphiql-editor-tools > button:not(.graphiql-toggle-editor-tools) {
padding: var(--px-8) var(--px-12);
}
@@ -219,14 +216,12 @@ button.graphiql-tab-add > svg {
/* The footer below the response view */
.graphiql-container .graphiql-footer {
border-top: 1px solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
border-top: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy));
}
/* The plugin container */
.graphiql-container .graphiql-plugin {
border-left: 1px solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
border-left: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy));
flex: 1;
overflow-y: auto;
padding: var(--px-16);
@@ -239,8 +234,7 @@ button.graphiql-tab-add > svg {
}
.graphiql-horizontal-drag-bar:hover::after {
border: var(--px-2) solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
border: var(--px-2) solid hsla(var(--color-neutral), var(--alpha-background-heavy));
border-radius: var(--border-radius-2);
content: '';
display: block;
@@ -292,8 +286,7 @@ button.graphiql-tab-add > svg {
/* A section inside the settings dialog */
.graphiql-dialog .graphiql-dialog-section {
align-items: center;
border-top: 1px solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
border-top: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy));
display: flex;
justify-content: space-between;
padding: var(--px-24);
+102 -80
View File
@@ -2,7 +2,7 @@
@media (prefers-color-scheme: dark) {
.markdown-body,
[data-theme="dark"] {
[data-theme='dark'] {
/*dark*/
color-scheme: dark;
--color-prettylights-syntax-comment: #8b949e;
@@ -42,14 +42,14 @@
--color-canvas-subtle: #161b22;
--color-border-default: #30363d;
--color-border-muted: #21262d;
--color-neutral-muted: rgba(110,118,129,0.4);
--color-neutral-muted: rgba(110, 118, 129, 0.4);
--color-accent-fg: #2f81f7;
--color-accent-emphasis: #1f6feb;
--color-success-fg: #3fb950;
--color-success-emphasis: #238636;
--color-attention-fg: #d29922;
--color-attention-emphasis: #9e6a03;
--color-attention-subtle: rgba(187,128,9,0.15);
--color-attention-subtle: rgba(187, 128, 9, 0.15);
--color-danger-fg: #f85149;
--color-danger-emphasis: #da3633;
--color-done-fg: #a371f7;
@@ -59,7 +59,7 @@
@media (prefers-color-scheme: light) {
.markdown-body,
[data-theme="light"] {
[data-theme='light'] {
/*light*/
color-scheme: light;
--color-prettylights-syntax-comment: #57606a;
@@ -92,14 +92,14 @@
--color-prettylights-syntax-brackethighlighter-angle: #57606a;
--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;
--color-prettylights-syntax-constant-other-reference-link: #0a3069;
--color-fg-default: #1F2328;
--color-fg-default: #1f2328;
--color-fg-muted: #656d76;
--color-fg-subtle: #6e7781;
--color-canvas-default: #ffffff;
--color-canvas-subtle: #f6f8fa;
--color-border-default: #d0d7de;
--color-border-muted: hsla(210,18%,87%,1);
--color-neutral-muted: rgba(175,184,193,0.2);
--color-border-muted: hsla(210, 18%, 87%, 1);
--color-neutral-muted: rgba(175, 184, 193, 0.2);
--color-accent-fg: #0969da;
--color-accent-emphasis: #0969da;
--color-success-fg: #1a7f37;
@@ -118,7 +118,8 @@
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
margin: 0;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial,
sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
font-size: 16px;
line-height: 1.5;
word-wrap: break-word;
@@ -181,9 +182,9 @@
}
.markdown-body h1 {
margin: .67em 0;
margin: 0.67em 0;
font-weight: var(--base-text-weight-semibold, 600);
padding-bottom: .3em;
padding-bottom: 0.3em;
font-size: 2em;
@apply border-b;
}
@@ -237,7 +238,7 @@
overflow: hidden;
background: transparent;
@apply border-b;
height: .25em;
height: 0.25em;
padding: 0;
margin: 24px 0;
background-color: var(--color-border-default);
@@ -253,33 +254,33 @@
line-height: inherit;
}
.markdown-body [type=button],
.markdown-body [type=reset],
.markdown-body [type=submit] {
.markdown-body [type='button'],
.markdown-body [type='reset'],
.markdown-body [type='submit'] {
-webkit-appearance: button;
appearance: button;
}
.markdown-body [type=checkbox],
.markdown-body [type=radio] {
.markdown-body [type='checkbox'],
.markdown-body [type='radio'] {
box-sizing: border-box;
padding: 0;
}
.markdown-body [type=number]::-webkit-inner-spin-button,
.markdown-body [type=number]::-webkit-outer-spin-button {
.markdown-body [type='number']::-webkit-inner-spin-button,
.markdown-body [type='number']::-webkit-outer-spin-button {
height: auto;
}
.markdown-body [type=search]::-webkit-search-cancel-button,
.markdown-body [type=search]::-webkit-search-decoration {
.markdown-body [type='search']::-webkit-search-cancel-button,
.markdown-body [type='search']::-webkit-search-decoration {
-webkit-appearance: none;
appearance: none;
}
.markdown-body ::-webkit-input-placeholder {
color: inherit;
opacity: .54;
opacity: 0.54;
}
.markdown-body ::-webkit-file-upload-button {
@@ -299,13 +300,13 @@
.markdown-body hr::before {
display: table;
content: "";
content: '';
}
.markdown-body hr::after {
display: table;
clear: both;
content: "";
content: '';
}
.markdown-body table {
@@ -326,30 +327,30 @@
cursor: pointer;
}
.markdown-body details:not([open])>*:not(summary) {
.markdown-body details:not([open]) > *:not(summary) {
display: none !important;
}
.markdown-body a:focus,
.markdown-body [role=button]:focus,
.markdown-body input[type=radio]:focus,
.markdown-body input[type=checkbox]:focus {
.markdown-body [role='button']:focus,
.markdown-body input[type='radio']:focus,
.markdown-body input[type='checkbox']:focus {
outline: 2px solid var(--color-accent-fg);
outline-offset: -2px;
box-shadow: none;
}
.markdown-body a:focus:not(:focus-visible),
.markdown-body [role=button]:focus:not(:focus-visible),
.markdown-body input[type=radio]:focus:not(:focus-visible),
.markdown-body input[type=checkbox]:focus:not(:focus-visible) {
.markdown-body [role='button']:focus:not(:focus-visible),
.markdown-body input[type='radio']:focus:not(:focus-visible),
.markdown-body input[type='checkbox']:focus:not(:focus-visible) {
outline: solid 1px transparent;
}
.markdown-body a:focus-visible,
.markdown-body [role=button]:focus-visible,
.markdown-body input[type=radio]:focus-visible,
.markdown-body input[type=checkbox]:focus-visible {
.markdown-body [role='button']:focus-visible,
.markdown-body input[type='radio']:focus-visible,
.markdown-body input[type='checkbox']:focus-visible {
outline: 2px solid var(--color-accent-fg);
outline-offset: -2px;
box-shadow: none;
@@ -357,17 +358,24 @@
.markdown-body a:not([class]):focus,
.markdown-body a:not([class]):focus-visible,
.markdown-body input[type=radio]:focus,
.markdown-body input[type=radio]:focus-visible,
.markdown-body input[type=checkbox]:focus,
.markdown-body input[type=checkbox]:focus-visible {
.markdown-body input[type='radio']:focus,
.markdown-body input[type='radio']:focus-visible,
.markdown-body input[type='checkbox']:focus,
.markdown-body input[type='checkbox']:focus-visible {
outline-offset: 0;
}
.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
font:
11px ui-monospace,
SFMono-Regular,
SF Mono,
Menlo,
Consolas,
Liberation Mono,
monospace;
line-height: 10px;
color: var(--color-fg-default);
vertical-align: middle;
@@ -392,7 +400,7 @@
.markdown-body h2 {
font-weight: var(--base-text-weight-semibold, 600);
padding-bottom: .3em;
padding-bottom: 0.3em;
font-size: 1.5em;
@apply border-b;
}
@@ -409,12 +417,12 @@
.markdown-body h5 {
font-weight: var(--base-text-weight-semibold, 600);
font-size: .875em;
font-size: 0.875em;
}
.markdown-body h6 {
font-weight: var(--base-text-weight-semibold, 600);
font-size: .85em;
font-size: 0.85em;
color: var(--color-fg-muted);
}
@@ -427,7 +435,7 @@
margin: 0;
padding: 0 1em;
color: var(--color-fg-muted);
border-left: .25em solid var(--color-border-default);
border-left: 0.25em solid var(--color-border-default);
}
.markdown-body ul,
@@ -456,14 +464,28 @@
.markdown-body tt,
.markdown-body code,
.markdown-body samp {
font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
font-family:
ui-monospace,
SFMono-Regular,
SF Mono,
Menlo,
Consolas,
Liberation Mono,
monospace;
font-size: 12px;
}
.markdown-body pre {
margin-top: 0;
margin-bottom: 0;
font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
font-family:
ui-monospace,
SFMono-Regular,
SF Mono,
Menlo,
Consolas,
Liberation Mono,
monospace;
font-size: 12px;
word-wrap: normal;
}
@@ -488,20 +510,20 @@
.markdown-body::before {
display: table;
content: "";
content: '';
}
.markdown-body::after {
display: table;
clear: both;
content: "";
content: '';
}
.markdown-body>*:first-child {
.markdown-body > *:first-child {
margin-top: 0 !important;
}
.markdown-body>*:last-child {
.markdown-body > *:last-child {
margin-bottom: 0 !important;
}
@@ -537,11 +559,11 @@
margin-bottom: 16px;
}
.markdown-body blockquote>:first-child {
.markdown-body blockquote > :first-child {
margin-top: 0;
}
.markdown-body blockquote>:last-child {
.markdown-body blockquote > :last-child {
margin-bottom: 0;
}
@@ -586,7 +608,7 @@
.markdown-body h5 code,
.markdown-body h6 tt,
.markdown-body h6 code {
padding: 0 .2em;
padding: 0 0.2em;
font-size: inherit;
}
@@ -620,27 +642,27 @@
list-style-type: none;
}
.markdown-body ol[type="a s"] {
.markdown-body ol[type='a s'] {
list-style-type: lower-alpha;
}
.markdown-body ol[type="A s"] {
.markdown-body ol[type='A s'] {
list-style-type: upper-alpha;
}
.markdown-body ol[type="i s"] {
.markdown-body ol[type='i s'] {
list-style-type: lower-roman;
}
.markdown-body ol[type="I s"] {
.markdown-body ol[type='I s'] {
list-style-type: upper-roman;
}
.markdown-body ol[type="1"] {
.markdown-body ol[type='1'] {
list-style-type: decimal;
}
.markdown-body div>ol:not([type]) {
.markdown-body div > ol:not([type]) {
list-style-type: decimal;
}
@@ -652,12 +674,12 @@
margin-bottom: 0;
}
.markdown-body li>p {
.markdown-body li > p {
margin-top: 16px;
}
.markdown-body li+li {
margin-top: .25em;
.markdown-body li + li {
margin-top: 0.25em;
}
.markdown-body dl {
@@ -687,7 +709,7 @@
border: 1px solid var(--color-border-default);
}
.markdown-body table td>:last-child {
.markdown-body table td > :last-child {
margin-bottom: 0;
}
@@ -704,11 +726,11 @@
background-color: transparent;
}
.markdown-body img[align=right] {
.markdown-body img[align='right'] {
padding-left: 20px;
}
.markdown-body img[align=left] {
.markdown-body img[align='left'] {
padding-right: 20px;
}
@@ -723,7 +745,7 @@
overflow: hidden;
}
.markdown-body span.frame>span {
.markdown-body span.frame > span {
display: block;
float: left;
width: auto;
@@ -751,7 +773,7 @@
clear: both;
}
.markdown-body span.align-center>span {
.markdown-body span.align-center > span {
display: block;
margin: 13px auto 0;
overflow: hidden;
@@ -769,7 +791,7 @@
clear: both;
}
.markdown-body span.align-right>span {
.markdown-body span.align-right > span {
display: block;
margin: 13px 0 0;
overflow: hidden;
@@ -799,7 +821,7 @@
overflow: hidden;
}
.markdown-body span.float-right>span {
.markdown-body span.float-right > span {
display: block;
margin: 13px auto 0;
overflow: hidden;
@@ -808,7 +830,7 @@
.markdown-body code,
.markdown-body tt {
padding: .2em .4em;
padding: 0.2em 0.4em;
margin: 0;
font-size: 85%;
white-space: break-spaces;
@@ -833,7 +855,7 @@
font-size: 100%;
}
.markdown-body pre>code {
.markdown-body pre > code {
padding: 0;
margin: 0;
word-break: normal;
@@ -903,11 +925,11 @@
}
.markdown-body [data-footnote-ref]::before {
content: "[";
content: '[';
}
.markdown-body [data-footnote-ref]::after {
content: "]";
content: ']';
}
.markdown-body .footnotes {
@@ -937,7 +959,7 @@
bottom: -8px;
left: -24px;
pointer-events: none;
content: "";
content: '';
border: 2px solid var(--color-accent-emphasis);
border-radius: 6px;
}
@@ -1073,7 +1095,7 @@
.markdown-body g-emoji {
display: inline-block;
min-width: 1ch;
font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
font-size: 1em;
font-style: normal !important;
font-weight: var(--base-text-weight-normal, 400);
@@ -1098,7 +1120,7 @@
cursor: pointer;
}
.markdown-body .task-list-item+.task-list-item {
.markdown-body .task-list-item + .task-list-item {
margin-top: 4px;
}
@@ -1107,12 +1129,12 @@
}
.markdown-body .task-list-item-checkbox {
margin: 0 .2em .25em -1.4em;
margin: 0 0.2em 0.25em -1.4em;
vertical-align: middle;
}
.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox {
margin: 0 -1.6em .25em .2em;
margin: 0 -1.6em 0.25em 0.2em;
}
.markdown-body .contains-task-list {
@@ -1136,14 +1158,14 @@
padding: var(--base-size-8) var(--base-size-16);
margin-bottom: 16px;
color: inherit;
border-left: .25em solid var(--color-border-default);
border-left: 0.25em solid var(--color-border-default);
}
.markdown-body .markdown-alert>:first-child {
.markdown-body .markdown-alert > :first-child {
margin-top: 0;
}
.markdown-body .markdown-alert>:last-child {
.markdown-body .markdown-alert > :last-child {
margin-bottom: 0;
}
@@ -1192,4 +1214,4 @@
.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title {
color: var(--color-danger-fg);
}
}
+1 -1
View File
@@ -15,4 +15,4 @@
to {
stroke-dashoffset: 100;
}
}
}
+4 -2
View File
@@ -64,7 +64,9 @@
margin-bottom: 1rem;
padding: 8px;
border-radius: 1px;
box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1), 0 2px 15px 0 rgba(0, 0, 0, 0.05);
box-shadow:
0 1px 10px 0 rgba(0, 0, 0, 0.1),
0 2px 15px 0 rgba(0, 0, 0, 0.05);
display: -ms-flexbox;
display: flex;
-ms-flex-pack: justify;
@@ -559,4 +561,4 @@
}
}
/*# sourceMappingURL=ReactToastify.css.map */
/*# sourceMappingURL=ReactToastify.css.map */
@@ -51,7 +51,7 @@ All billing through the AWS Marketplace will be charged through your AWS bill. C
### Does Supabase offer a free trial through the AWS Marketplace?
Customers interested in trying out Supabase can use the [free tier offering directly available](/pricing) from Supabse.
Customers interested in trying out Supabase can use the [free tier offering directly available](/pricing) from Supabase.
### Can I change plans while being billed through AWS Marketplace?
@@ -0,0 +1,190 @@
---
title: 'AI Inference now available in Supabase Edge Functions'
description: 'Use embeddings and large language models on the edge with Supabase Edge Functions.'
author: laktek
image: ga-week/ai-inference-now-available-in-supabase-edge-functions/og.jpg
thumb: ga-week/ai-inference-now-available-in-supabase-edge-functions/thumb.jpg
categories:
- product
tags:
- launch-week
- database
date: '2024-04-16'
toc_depth: 3
launchweek: 11
---
We're making it super easy to run AI models within Supabase Edge Functions. A new built-in API is available within the Edge Runtime to run inference workloads in just a few lines of code:
```jsx
// Instantiate a new inference session
const session = new Supabase.ai.Session('gte-small')
// then use the session to run inference on a prompt
const output = await session.run('Luke, I am your father')
console.log(output)
// [ -0.047715719789266586, -0.006132732145488262, ...]
```
With this new API you can:
- Generate embeddings using models like `gte-small` to store and retrieve with pgvector. This is available today.
- Use Large Language Models like `llama2` and `mistral` for GenAI workloads. This will be progressively rolled out as we get our hands on more GPUs.
In our previous Launch Week we [announced](/blog/hugging-face-supabase) support for AI inference via Transformers.js. This was a good start but had some shortcomings: it takes time to “boot” because it needs to instantiate a WASM runtime and build the inference pipeline. We increased CPU limits to mitigate this, but we knew we wanted a better Developer Experience.
In this post we'll cover some of the improvements to remove cold starts using [Ort](https://github.com/pykeio/ort) and how we're adding LLM support using [Ollama](https://ollama.com/).
<div className="video-container">
<iframe
className="w-full"
src="https://www.youtube-nocookie.com/embed/w4Rr_1whU-U"
title="Decoupled storage and compute in Postgres"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen; gyroscope; picture-in-picture; web-share"
allowfullscreen
/>
</div>
## Generating Text Embeddings in Edge Functions
Embeddings capture the "relatedness" of text, images, video, or other types of information. Embeddings are stored in the database as an array of floating point numbers, known as vectors. Since we [released](/openai-embeddings-postgres-vector) pgvector on the platform, Postgres has become a popular vector database.
Today's release solves a few technical challenges for developers who want to generate embeddings from the content in their database, giving them the ability to offload this compute-intensive task to background workers.
### Integrated pgvector experience
You can now utilize [database webhooks](/docs/guides/database/webhooks) to automatically generate embeddings whenever a new row is inserted into a database table.
<Img
alt="Integrated pgvector experience"
src={{
light:
'/images/blog/ga-week/ai-inference-now-available-in-supabase-edge-functions/text-insert-example--light.svg',
dark: '/images/blog/ga-week/ai-inference-now-available-in-supabase-edge-functions/text-insert-example.svg',
}}
captionAlign="left"
/>
Because embedding creation is a compute-intensive task, it makes sense to offload the work from your database. Edge Functions are the perfect “background worker”. We've created a simple example to show how you can generate embeddings in Edge Functions: [Semantic Search with pgvector and Supabase Edge Functions](/docs/guides/functions/examples/semantic-search).
### Technical architecture
Embedding generation uses the [ONNX runtime](https://onnxruntime.ai/) under the hood. This is a cross-platform inferencing library that supports multiple execution providers from CPU to specialized GPUs.
Libraries like `transformers.js` also use ONNX runtime which, in the context of Edge Functions, runs as a WASM module, which can be slow during the instantiation process.
To solve this, we built a native extension in Edge Runtime that enables using ONNX runtime via the Rust interface. This was made possible thanks to an excellent Rust wrapper called [Ort](https://github.com/pykeio/ort):
<Img
alt="Technical architecture"
src={{
light:
'/images/blog/ga-week/ai-inference-now-available-in-supabase-edge-functions/infra-01--light.svg',
dark: '/images/blog/ga-week/ai-inference-now-available-in-supabase-edge-functions/infra-01.svg',
}}
captionAlign="left"
/>
Embedding generation is fairly lightweight compared to LLM workloads, so it can run on a CPU without hardware acceleration.
### Availability: open source embeddings
Embeddings models are available on Edge Functions today. We currently support [`gte-small`](https://huggingface.co/Supabase/gte-small) and we'll add more embeddings models based on user feedback.
Embedding generation via `Supabase.ai` API is available today for all Edge Functions users in both local, hosted, and self-hosted platforms.
### Lower costs
Generating embeddings in an Edge Function doesn't cost anything extra: we still charge on CPU usage. A typical embedding generation request should run in less than a 1s, even from a cold start. Typically it won't use more than 100-200ms of CPU time.
Proprietary LLMs like OpenAI and Claude provide [APIs](https://platform.openai.com/docs/guides/embeddings) to generate text embeddings, charging per token. For example, OpenAI's `text-embedding-3-small` cost $0.02/1M tokens at the time of writing this post.
Open source text embedding models provide similar performance to OpenAI's paid models. For example, the `gte-small` model, which operates on 384 dimensions, has an average of 61.36 compared to OpenAI's `text-embedding-3-small`, which is at 62.26 on the [MTEB leaderboard](https://huggingface.co/spaces/mteb/leaderboard), and they perform search faster with [fewer dimensions](https://supabase.com/blog/fewer-dimensions-are-better-pgvector).
With Supabase Edge Functions, you can generate text embeddings 10x cheaper than OpenAI embeddings APIs.
## Large Language Models in Supabase Edge Functions
Embedding generation only a part of the solution. Typically you need an LLM (like OpenAI's GPT-3.5) to generate human-like interactions. We're working with Ollama to make this possible with Supabase: local development, self-hosted, and on the platform.
### Open source inference models
We are excited to announce experimental support for Llama & Mistral with `Supabase.ai` API.
<video width="99%" autoPlay loop muted playsInline controls={true}>
<source
src="https://xguihxuzqibwxjnimxev.supabase.co/storage/v1/object/public/videos/docs/guides/edge-functions-inference.mp4"
type="video/mp4"
/>
</video>
The API is simple to use, with support for streaming responses:
```jsx
const session = new Supabase.ai.Session('mistral')
Deno.serve(async (req: Request) => {
// Get the prompt from the query string
const params = new URL(req.url).searchParams
const prompt = params.get('prompt') ?? ''
// Get the output as a stream
const output = await session.run(prompt, { stream: true })
// Create a stream
const stream = new ReadableStream({
async start(controller) {
const encoder = new TextEncoder()
for await (const chunk of output) {
controller.enqueue(encoder.encode(chunk.response ?? ''))
}
},
})
// Return the stream to the user
return new Response(stream, {
headers: new Headers({
'Content-Type': 'text/event-stream',
Connection: 'keep-alive',
}),
})
})
```
Check out the full guide [here](https://supabase.com/docs/guides/functions/ai-models#using-large-language-models).
### Technical architecture
LLM models are challenging to run directly via ONNX runtime on CPU. For these, we are using a GPU-accelerated [Ollama](https://ollama.com/) server under the hood:
<Img
alt="Technical architecture"
src={{
light:
'/images/blog/ga-week/ai-inference-now-available-in-supabase-edge-functions/infra-02--light.svg',
dark: '/images/blog/ga-week/ai-inference-now-available-in-supabase-edge-functions/infra-02.svg',
}}
captionAlign="left"
/>
We think this is a great match: the Ollama team have worked hard to ensure that the local development experience is great, and we love development environments that can be run without internet access (for those who enjoy programming on planes).
As a Supabase developer, you don't have to worry about deploying models and managing GPU instances - simply use a serverless API to get your job done.
### Availability: open source embeddings
Access to open-source LLMs is currently invite-only while we manage demand for the GPU instances. Please [get in touch](https://forms.supabase.com/supabase.ai-llm-early-access) if you need early access.
## Extending model support
We plan to extend support for more models. [Let us know](https://forms.supabase.com/supabase.ai-llm-early-access) which models you want next. We're looking to support fine-tuned models too!
## Getting started
Check out the Supabase docs today to get started with the AI models:
- Edge Functions: [supabase.com/docs/guides/functions](https://supabase.com/docs/guides/functions)
- Vectors: [supabase.com/docs/guides/ai](https://supabase.com/docs/guides/ai)
- [Semantic search demo](https://github.com/supabase/supabase/tree/master/examples/ai/edge-functions)
- [Store and query embeddings](/docs/guides/ai/vector-columns#querying-a-vector--embedding) in Postgres and use them for Retrieval Augmented Generation (RAG) and Semantic Search
+1 -1
View File
@@ -33,7 +33,7 @@ const Footer = (props: Props) => {
className={cn(
'bg-alternative',
isLaunchWeek && 'bg-[#060809]',
isGAWeek && 'dark:bg-[#060809]',
isGAWeek && 'dark:bg-alternative',
props.className
)}
aria-labelledby="footerHeading"
+2 -2
View File
@@ -23,8 +23,8 @@ const Hero = () => {
<div className="mx-auto max-w-2xl lg:col-span-6 lg:flex lg:items-center justify-center text-center">
<div className="relative z-10 lg:h-auto pt-[90px] lg:pt-[90px] lg:min-h-[300px] flex flex-col items-center justify-center sm:mx-auto md:w-3/4 lg:mx-0 lg:w-full gap-4 lg:gap-8">
<div className="flex flex-col items-center">
<div className="z-40 w-full flex justify-center mb-8 lg:mb-8">
<AnnouncementBadge url="/ga-week" badge="GA Week" announcement="Day 1" />
<div className="z-40 w-full flex justify-center -mt-4 lg:-mt-12 mb-8">
<AnnouncementBadge url="/ga-week#day-2" badge="GA Week" announcement="Day 2" />
</div>
<h1 className="text-foreground text-4xl sm:text-5xl sm:leading-none lg:text-7xl">
<span className="block text-[#F4FFFA00] bg-clip-text bg-gradient-to-b from-foreground to-foreground-light">
@@ -7,7 +7,7 @@ const HackathonCallout = ({ className }: { className?: string }) => {
return (
<div
className={cn(
'font-mono uppercase tracking-[1px] py-8 text-[#575E61] scroll-mt-16 flex flex-col md:flex-row justify-between gap-2',
'font-mono uppercase tracking-[1px] py-8 scroll-mt-16 flex flex-col md:flex-row justify-between gap-2',
className
)}
>
@@ -155,16 +155,6 @@ const LW11Background = ({ className }: { className?: string }) => {
!hasInitialized && init()
// useEffect(() => {
// document.body.classList.add('bg-[#060809]')
// return () => {
// if (document.body.classList.contains('bg-[#060809]')) {
// document.body.classList.remove('bg-[#060809]')
// }
// }
// }, [])
return (
<canvas
ref={canvasRef}
@@ -18,7 +18,7 @@ const LW11Day1 = ({
<section
id={day.id}
className={cn(
'lwx-nav-anchor border-b py-8 first:border-t dark:border-[#111718] dark:text-[#575E61] scroll-mt-16 grid grid-cols-1 gap-4 md:grid-cols-3',
'lwx-nav-anchor border-b py-8 first:border-t dark:border-[#111718] scroll-mt-16 grid grid-cols-1 gap-4 md:grid-cols-3',
className
)}
>
@@ -49,7 +49,7 @@ const LW11Day1 = ({
<div
className={cn(
`group relative overflow-hidden flex-1 flex col-span-2
md:px-4 text-[#8B9092] text-2xl`,
md:px-4 text-2xl`,
cardClassName
)}
>
@@ -82,13 +82,6 @@ const LW11Day1 = ({
<ArrowRight className="w-4 ml-2 -mt-px opacity-0 -rotate-45 translate-y-1 -translate-x-1 text-foreground-light transition-all will-change-transform group-hover/step:opacity-100 group-hover/step:translate-y-0 group-hover/step:translate-x-0" />
</div>
<p className="text-foreground">{step.description}</p>
{/* <ul>
{step.links?.map((link) => (
<li key={`${step.title}-${link.href}`}>
<DayLink {...link} />
</li>
))}
</ul> */}
</Link>
))}
</div>
@@ -1,6 +1,6 @@
import Link from 'next/link'
import React, { useEffect, useState } from 'react'
import { TextLink, cn } from 'ui'
import { cn } from 'ui'
import useConfData from '../hooks/use-conf-data'
import { SupabaseClient } from '@supabase/supabase-js'
@@ -110,9 +110,9 @@ const LW11Meetups = ({ meetups }: { meetups?: Meetup[] }) => {
title={liveNow ? 'Live now' : undefined}
className={cn(
'h-10 group inline-flex items-center flex-wrap text-4xl',
'text-foreground-muted dark:text-foreground-muted/50 hover:!text-foreground !leading-none transition-colors',
'text-foreground-muted hover:!text-foreground !leading-none transition-colors',
meetup.id === activeMeetup.id && '!text-foreground',
liveNow && 'text-[#B0B0B0]'
liveNow && 'text-foreground-light'
)}
>
{liveNow && (
@@ -3,31 +3,40 @@ import Image from 'next/image'
import Link from 'next/link'
import { buildDays, mainDays } from './Releases/data'
const LWXSummary = () => {
const LW11Summary = () => {
const days = mainDays()
return (
<div className="w-full border bg-alternative-200 flex flex-col rounded-lg text-foreground-lighter mt-12">
<div className="w-full p-4 flex justify-between items-center">
<Link
href="/launch-week"
className="flex items-center gap-1.5 leading-none uppercase text-xs"
href="/ga-week"
className="flex items-center gap-1.5 leading-none uppercase text-xs opacity-80 transition-opacity hover:opacity-100"
>
<span className="text-foreground tracking-[1px]">Launch Week</span>{' '}
<Image
src="/images/launchweek/lwx/logos/lwx_logo.svg"
alt="Supabase Launch Week X icon"
width={16}
height={16}
className="w-3 h-3"
src="/images/launchweek/ga/ga-black.svg"
alt="GA logo"
className="dark:hidden w-5 aspect-[104/57] h-auto"
priority
width={30}
height={30}
/>
<Image
src="/images/launchweek/ga/ga-white.svg"
alt="GA logo"
className="hidden dark:block w-5 aspect-[104/57] h-auto"
priority
width={30}
height={30}
/>
<span className="text-foreground tracking-[1px] font-mono">Week</span>
</Link>
<div className="font-mono uppercase tracking-wide text-xs">11-15 Dec</div>
<div className="font-mono uppercase tracking-wide text-xs">15-19 April</div>
</div>
<div className="pb-4 border-t p-4">
<div className="font-mono uppercase text-xs text-foreground tracking-wide mb-3">
{/* <div className="font-mono uppercase text-xs text-foreground tracking-wide mb-3">
Main Stage
</div>
</div> */}
<ul className="flex flex-col gap-2">
{days.map(
(day, i: number) =>
@@ -71,18 +80,18 @@ const LWXSummary = () => {
)}
<ol className="border-t pt-4 mt-2">
<Link
href="/blog/supabase-hackathon-lwx"
href="/blog/supabase-oss-hackathon"
className="relative flex items-center justify-between group w-full py-1 hover:text-foreground"
>
Supabase Launch Week X Hackathon
Open Source Hackathon 2024
</Link>
</ol>
<ol>
<Link
href="/blog/community-meetups-lwx"
href="/ga-week#meetups"
className="relative flex items-center justify-between group w-full py-1 hover:text-foreground"
>
Supabase Launch Week X Community Meetups
Community Meetups
</Link>
</ol>
</ul>
@@ -92,4 +101,4 @@ const LWXSummary = () => {
)
}
export default LWXSummary
export default LW11Summary
@@ -17,9 +17,9 @@ export default function LaunchWeekPrizeCard({
return (
<Panel
hasShimmer
outerClassName={cn('relative rounded-lg overflow-hidden dark:shadow-lg', className)}
outerClassName={cn('relative rounded-lg overflow-hidden', className)}
innerClassName={cn(
'relative h-full flex flex-col dark:bg-[#121516] rounded-lg overflow-hidden dark:text-[#EDEDED]',
'relative h-full flex flex-col rounded-lg overflow-hidden',
contentClassName
)}
shimmerToColor={
@@ -10,14 +10,14 @@ export default function LaunchWeekPrizeSection({ className }: { className?: stri
<div
id="prizes"
className={cn(
'relative text-left flex flex-col max-w-7xl mx-auto gap-2 scroll-mt-[66px] text-[#575E61]',
'relative text-left flex flex-col max-w-7xl mx-auto gap-2 scroll-mt-[66px] text-foreground-lighter',
className
)}
>
<h2 className="w-full text-sm font-mono uppercase tracking-[1px]">Awards</h2>
<p className="text-2xl text-foreground-lighter">Generate your ticket for a chance to win.</p>
<div className="w-full pt-4">
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mx-auto h-auto text-[#EDEDED]">
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mx-auto h-auto text-foreground">
<LaunchWeekPrizeCard
className="col-span-full md:col-span-2"
contentClassName="flex flex-col justify-between"
@@ -38,7 +38,7 @@ const BuildStage: FC = () => {
<li
key={`${day.id}-${i}`}
className={cn(
'relative flex flex-col w-full aspect-square rounded-xl border border-dashed border-muted dark:border-muted/50 bg-surface-100/10 col-span-1',
'relative flex flex-col w-full aspect-square rounded-xl border border-dashed border-muted bg-surface-100/10 col-span-1',
day.className
)}
data-delay={i}
@@ -58,7 +58,7 @@ const BuildStage: FC = () => {
fillRule="evenodd"
clipRule="evenodd"
d="M3.9999 7.55557V5.95557C3.9999 3.74643 5.79076 1.95557 7.9999 1.95557C10.209 1.95557 11.9999 3.74643 11.9999 5.95557V7.55557C12.8836 7.55557 13.5999 8.27191 13.5999 9.15557V13.1556C13.5999 14.0392 12.8836 14.7556 11.9999 14.7556H3.9999C3.11625 14.7556 2.3999 14.0392 2.3999 13.1556V9.15557C2.3999 8.27191 3.11625 7.55557 3.9999 7.55557ZM10.3999 5.95557V7.55557H5.5999V5.95557C5.5999 4.63008 6.67442 3.55557 7.9999 3.55557C9.32539 3.55557 10.3999 4.63008 10.3999 5.95557Z"
fill="#8B9092"
fill="hsl(var(--foreground-lighter))"
/>
</g>
</svg>
@@ -69,7 +69,7 @@ const LWXStickyNav: FC = () => {
return (
<div className="absolute inset-0 pointer-events-none w-full h-full">
<nav className="sticky z-30 top-0 bg-surface-100 dark:bg-[#06080999] backdrop-blur-sm pointer-events-auto w-full border-t border-b dark:border-[#111718] h-[60px] flex items-center">
<nav className="sticky z-30 top-0 bg-alternative/90 backdrop-blur-sm pointer-events-auto w-full border-t border-b dark:border-[#111718] h-[60px] flex items-center">
<SectionContainer className="!max-w-none !py-0 lg:!container flex items-center justify-between font-mono gap-4 md:gap-8 text-sm">
<div className="flex items-center gap-4 md:gap-8">
<ul className="lwx-sticky-nav hidden md:flex items-center gap-2 md:gap-4 text-foreground-muted">
@@ -53,7 +53,7 @@ const AdventCard = ({ day, index }: { day: AdventDay; index: number }) => {
<div id={day.id} ref={tiltRef} className="absolute -inset-px group will-change">
<motion.div
className={cn(
'opacity-0 flex flex-col justify-between w-full h-full p-6 rounded-xl bg-surface-75 dark:bg-[#121516] transition-colors dark:text-[#575E61] border border-strong dark:border-default hover:border-stronger hover:dark:border-strong overflow-hidden',
'opacity-0 flex flex-col justify-between w-full h-full p-6 rounded-xl bg-surface-75 transition-colors border border-strong hover:border-stronger overflow-hidden',
isClientLibsCard && 'xl:flex-row'
)}
variants={variants}
@@ -80,14 +80,14 @@ const AdventCard = ({ day, index }: { day: AdventDay; index: number }) => {
WebkitFontSmoothing: 'subpixel-antialiased',
}}
>
<p className="text-[#575E61] text-sm">{day.description}</p>
<p className="text-foreground-lighter text-sm">{day.description}</p>
<div className="flex gap-1 mt-3 flex-wrap">
{day.links?.map((link: AdventLink) => (
<Link
key={link.url}
href={link.url}
target={link.target ?? '_self'}
className="px-2 py-1 pointer-events-auto border transition-colors text-foreground-light dark:bg-[#191D1E] hover:dark:bg-[#22272A] rounded text-xs"
className="px-2 py-1 pointer-events-auto border transition-colors text-foreground-light bg-surface-100 hover:bg-surface-200 rounded text-xs"
>
{link.label}
</Link>
@@ -30,7 +30,7 @@ const DaySection = ({ day, className }: { day: WeekDayProps; className?: string
<div
className={cn(
'text-sm inline uppercase font-mono dark:text-foreground-muted tracking-[0.1rem]',
day.shipped && 'text-foreground'
day.shipped && '!text-foreground'
)}
>
{day.dd}, {day.date}
@@ -53,7 +53,7 @@ const DaySection = ({ day, className }: { day: WeekDayProps; className?: string
href={day.blog!}
className={cn(
`
bg-[#111415] hover:bg-[#121516] sm:!bg-transparent
dark:bg-[#111415] hover:dark:bg-[#121516] sm:!bg-transparent
min-h-[210px] group sm:aspect-[3.67/1] relative overflow-hidden flex-1 flex flex-col justify-between
hover:border-strong transition-colors border border-muted
rounded-xl text-2xl bg-contain shadow-lg`,
@@ -82,7 +82,7 @@ const DaySection = ({ day, className }: { day: WeekDayProps; className?: string
<Image
src={!!layer.mobileImg && isMobile ? layer.mobileImg : layer.img}
className={`
absolute opacity-50 lg:opacity-100 object-cover
absolute md:opacity-50 lg:opacity-100 object-cover
w-full h-full z-0 transition-all duration-300
object-center sm:object-right
`}
@@ -90,7 +90,7 @@ export const days: AdventDay[] = [
is_shipped: true,
links: [
{
url: 'https://supabase.com/blog/supabase-aquires-oriole',
url: '/blog/supabase-aquires-oriole',
label: 'Blog post',
target: '_blank',
},
@@ -68,7 +68,7 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
title: 'Lorem ipsum',
shipped: true,
isToday: false,
blog: '#',
blog: '/ga',
hasCountdown: false,
date: '15 April',
published_at: '2024-04-15T08:00:00.000-08:00',
@@ -77,18 +77,10 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
links: [
{
type: 'xSpace',
href: 'https://twitter.com/i/spaces/1MnGnMglMLjKO/peek',
href: 'https://supabase.link/twitter-space-ga',
},
],
description: (
<>
<p className="text-foreground">Our products are now ready for production use.</p>{' '}
<p className="text-foreground-lighter">
Confidently leverage the full power of Supabase to build scalable, high-performance
applications with ease.
</p>
</>
),
description: 'Supabase is officially launching into General Availability',
steps: [
{
icon: products.database.icon[16],
@@ -133,27 +125,48 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
d: 2,
dd: 'Tue',
title: '',
shipped: false,
hasCountdown: true,
blog: '#',
shipped: true,
isToday: true,
hasCountdown: false,
blog: '/blog/ai-inference-now-available-in-supabase-edge-functions',
date: '16 April',
published_at: '2024-04-16T08:00:00.000-08:00',
description: <>Create vector embeddings with Edge Functions</>,
description: (
<>
Supabase Functions now supports <strong>AI models</strong>
</>
),
links: [
// {
// type: 'blog',
// href: '#',
// },
// {
// type: 'video',
// href: 'eCbiywoDORw',
// },
// {
// type: 'xSpace',
// href: '#',
// },
{
type: 'blog',
href: '/blog/ai-inference-now-available-in-supabase-edge-functions',
},
{
type: 'video',
href: 'w4Rr_1whU-U',
},
{
type: 'xSpace',
href: 'https://supabase.link/twitter-space-ga-week-2',
},
],
steps: [
{
title: 'Create vector embeddings with Edge Functions',
blog: '#',
bg_layers: [
{
img: isDark
? '/images/launchweek/11/days/d2-dark.svg'
: '/images/launchweek/11/days/d2-light.svg',
mobileImg: isDark
? '/images/launchweek/11/days/d2-dark-mobile.svg'
: '/images/launchweek/11/days/d2-light-mobile.svg',
},
],
steps: [],
},
],
steps: [],
},
{
id: 'day-3',
@@ -161,11 +174,11 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
dd: 'Wed',
title: '',
shipped: false,
hasCountdown: false,
hasCountdown: true,
blog: '#',
date: '17 April',
published_at: '2024-04-17T08:00:00.000-08:00',
description: <>TBD</>,
description: <></>,
links: [
// {
// type: 'blog',
@@ -175,10 +188,10 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
// type: 'video',
// href: '',
// },
// {
// type: 'xSpace',
// href: '#',
// },
{
type: 'xSpace',
href: 'https://supabase.link/twitter-space-ga-week-3',
},
],
steps: [],
},
@@ -192,7 +205,7 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
blog: '#',
date: '18 April',
published_at: '2024-04-18T08:00:00.000-08:00',
description: <>TBD</>,
description: <></>,
links: [
// {
// type: 'blog',
@@ -202,10 +215,10 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
// type: 'video',
// href: '',
// },
// {
// type: 'xSpace',
// href: '#',
// },
{
type: 'xSpace',
href: 'https://supabase.link/twitter-space-ga-week-4',
},
],
steps: [],
},
@@ -219,7 +232,7 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
blog: '#',
date: '19 April',
published_at: '2024-04-19T08:00:00.000-08:00',
description: <>TBD</>,
description: <></>,
links: [
// {
// type: 'blog',
@@ -229,10 +242,10 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
// type: 'video',
// href: '',
// },
// {
// type: 'xSpace',
// href: '#',
// },
{
type: 'xSpace',
href: 'https://supabase.link/twitter-space-ga-week-5',
},
],
steps: [],
},
@@ -1,10 +1,9 @@
import React, { useEffect, useRef } from 'react'
import dynamic from 'next/dynamic'
import Image from 'next/image'
import { AnimatePresence, m, LazyMotion, domAnimation, useInView } from 'framer-motion'
import { Badge, cn } from 'ui'
import { DEFAULT_TRANSITION, INITIAL_BOTTOM, getAnimation } from '~/lib/animations'
import { LW11_DATE, LW11_LAUNCH_DATE, LW11_LAUNCH_DATE_END } from '~/lib/constants'
import { LW11_DATE, LW11_LAUNCH_DATE_END } from '~/lib/constants'
import useWinningChances from '../../hooks/useWinningChances'
import useLwGame from '../../hooks/useLwGame'
@@ -130,7 +129,7 @@ const TicketingFlow = () => {
) : (
<p className="text-2xl mb-1">Thanks for sharing!</p>
)}
<p className="text-[#8B9092]">
<p className="text-foreground-lighter">
Stay tuned after GA Week to find out if you're a lucky winner.
</p>
</div>
@@ -139,7 +138,7 @@ const TicketingFlow = () => {
{!hasSecretTicket && (
<p className="text-2xl mb-1">@{userData.username}, you're in!</p>
)}
<p className="text-[#8B9092]">
<p className="text-foreground-lighter">
Now share your ticket to have a chance of winning AirPods Max and other
limited swag.
</p>
@@ -147,7 +146,7 @@ const TicketingFlow = () => {
) : (
<div>
<p className="text-2xl mb-1">@{userData.username}, almost there!</p>
<p className="text-[#8B9092]">
<p className="text-foreground-lighter">
Keep sharing to max out your chances of winning AirPods Max and other
limited swag.
</p>
+1 -1
View File
@@ -81,7 +81,7 @@ const Nav = (props: Props) => {
'absolute inset-0 h-full w-full opacity-80 bg-background',
!showLaunchWeekNavMode && '!opacity-100 transition-opacity',
showLaunchWeekNavMode && '!bg-transparent transition-all',
isGAWeekSection && 'dark:!bg-[#060809]'
isGAWeekSection && 'dark:!bg-alternative'
)}
/>
<nav
+3
View File
@@ -19,6 +19,7 @@ import CTABanner from '~/components/CTABanner'
import DefaultLayout from '~/components/Layouts/Default'
import LWXSummary from '~/components/LaunchWeek/X/LWXSummary'
import ShareArticleActions from '~/components/Blog/ShareArticleActions'
import LW11Summary from '~/components/LaunchWeek/11/LW11Summary'
type Post = ReturnType<typeof getSortedPosts>[number]
@@ -123,6 +124,7 @@ function BlogPostPage(props: InferGetStaticPropsType<typeof getStaticProps>) {
const authorArray = props.blog.author.split(',')
const isLaunchWeek7 = props.blog.launchweek === 7
const isLaunchWeekX = props.blog.launchweek?.toString().toLocaleLowerCase() === 'x'
const isGAWeek = props.blog.launchweek?.toString().toLocaleLowerCase() === '11'
const author = authorArray
.map((authorId) => {
@@ -332,6 +334,7 @@ function BlogPostPage(props: InferGetStaticPropsType<typeof getStaticProps>) {
</article>
{isLaunchWeek7 && <BlogLinks />}
{isLaunchWeekX && <LWXSummary />}
{isGAWeek && <LW11Summary />}
<div className="block lg:hidden py-8">
<div className="text-foreground-lighter text-sm">Share this article</div>
<ShareArticleActions title={props.blog.title} slug={props.blog.slug} />
+16 -1
View File
@@ -14,6 +14,7 @@ import { Meetup } from '~/components/LaunchWeek/11/LW11Meetups'
import LW11StickyNav from '~/components/LaunchWeek/11/Releases/LW11StickyNav'
import LW11Header from '~/components/LaunchWeek/11/Releases/LW11Header'
import MainStage from '~/components/LaunchWeek/11/Releases/MainStage'
import { useTheme } from 'next-themes'
const BuildStage = dynamic(() => import('~/components/LaunchWeek/11/Releases/BuildStage'))
const LW11Meetups = dynamic(() => import('~/components/LaunchWeek/11/LW11Meetups'))
@@ -28,6 +29,7 @@ interface Props {
export default function GAWeekIndex({ meetups }: Props) {
const { query } = useRouter()
const { resolvedTheme, setTheme } = useTheme()
const TITLE = 'Supabase GA Week | 15-19 April 2024'
const DESCRIPTION = 'Join us for a week of announcing new features, every day at 7 AM PT.'
@@ -63,6 +65,19 @@ export default function GAWeekIndex({ meetups }: Props) {
}
}, [supabase])
const isDark = resolvedTheme?.includes('dark')
const isDarkTheme = resolvedTheme === 'dark'
useEffect(() => {
isDarkTheme && setTheme('deep-dark')
}, [isDarkTheme])
useEffect(() => {
return () => {
isDark && setTheme('dark')
}
}, [])
useEffect(() => {
if (session?.user) {
if (userData?.id) {
@@ -101,7 +116,7 @@ export default function GAWeekIndex({ meetups }: Props) {
setShowCustomizationForm,
}}
>
<DefaultLayout className="bg-default dark:bg-[#060809]">
<DefaultLayout className="bg-alternative">
<LW11StickyNav />
<LW11Header className="pb-20 z-0" />
<MainStage className="relative -mt-20 z-10" />
+18 -4
View File
@@ -1,4 +1,4 @@
import { useState } from 'react'
import { useEffect, useState } from 'react'
import { NextSeo } from 'next-seo'
import { GetStaticProps, GetStaticPaths } from 'next'
import Link from 'next/link'
@@ -15,6 +15,7 @@ import DefaultLayout from '~/components/Layouts/Default'
import SectionContainer from '~/components/Layouts/SectionContainer'
import { TicketState, ConfDataContext, UserData } from '~/components/LaunchWeek/hooks/use-conf-data'
import LW11Background from '~/components/LaunchWeek/11/LW11Background'
import { useTheme } from 'next-themes'
const LW11TicketContainer = dynamic(
() => import('~/components/LaunchWeek/11/Ticket/TicketContainer')
@@ -39,8 +40,21 @@ export default function UsernamePage({ user, ogImageUrl }: Props) {
const PAGE_URL = `${SPECIAL_ANNOUNCEMENT_URL}/tickets/${username}`
const [session] = useState<Session | null>(null)
const [ticketState, setTicketState] = useState<TicketState>('ticket')
const { resolvedTheme, setTheme } = useTheme()
const isDark = resolvedTheme?.includes('dark')
const isDarkTheme = resolvedTheme === 'dark'
useEffect(() => {
isDarkTheme && setTheme('deep-dark')
}, [isDarkTheme])
useEffect(() => {
return () => {
isDark && setTheme('dark')
}
}, [])
if (!ticketNumber) {
return <Error statusCode={404} />
@@ -73,7 +87,7 @@ export default function UsernamePage({ user, ogImageUrl }: Props) {
setTicketState,
}}
>
<DefaultLayout>
<DefaultLayout className="bg-alternative">
<div className="relative -mt-[65px] overflow-hidden">
<SectionContainer className="relative !pt-8 lg:!pt-10 z-10 flex flex-col xl:flex-row items-center xl:justify-center xl:items-center gap-8 md:gap-10 xl:gap-20 text-foreground text-center md:text-left">
<div className="w-auto min-h-[400px] pt-24 flex items-center">
@@ -97,7 +111,7 @@ export default function UsernamePage({ user, ogImageUrl }: Props) {
<SectionContainer className="!pt-4 !pb-0">
<LaunchWeekPrizeSection />
</SectionContainer>
<CTABanner className="!bg-[#060809] border-t-0" />
<CTABanner className="!bg-alternative border-t-0" />
</DefaultLayout>
</ConfDataContext.Provider>
</>
+15 -3
View File
@@ -1,4 +1,4 @@
import React from 'react'
import React, { useEffect } from 'react'
import dynamic from 'next/dynamic'
import Link from 'next/link'
import { useRouter } from 'next/router'
@@ -19,13 +19,25 @@ const CTABanner = dynamic(() => import('~/components/CTABanner'))
export default function IndexPage() {
const router = useRouter()
const { resolvedTheme } = useTheme()
const { resolvedTheme, setTheme } = useTheme()
const isDark = resolvedTheme?.includes('dark')
const data = pageData(isDark!)
const meta_title = 'General Availability | Supabase'
const meta_description = 'Supabase is officially launching into General Availability.'
const meta_image = '/images/ga/ga-og.png'
const meta_image = '/images/ga/ga-og-alt.png'
const isDarkTheme = resolvedTheme === 'dark'
useEffect(() => {
isDarkTheme && setTheme('deep-dark')
}, [isDarkTheme])
useEffect(() => {
return () => {
isDark && setTheme('dark')
}
}, [])
return (
<DefaultLayout>
@@ -0,0 +1,14 @@
<svg width="1601" height="940" viewBox="0 0 1601 940" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M704.054 128V112.16H714.062V114.488H706.814V118.592H712.958V120.92H706.814V125.648H714.302V128H704.054ZM720.125 128V112.16H724.181C728.813 112.16 731.597 114.776 731.597 120.008C731.597 125.24 728.813 128 724.325 128H720.125ZM722.909 125.744H724.013C727.037 125.744 728.741 123.896 728.741 120.008C728.741 116.12 727.037 114.392 724.013 114.392H722.909V125.744ZM743.276 128.288C739.292 128.288 736.292 125.36 736.292 120.128C736.292 114.92 739.316 111.872 743.396 111.872C745.484 111.872 746.9 112.856 747.86 113.84L746.324 115.568C745.604 114.8 744.764 114.272 743.396 114.272C740.9 114.272 739.148 116.456 739.148 120.032C739.148 123.656 740.66 125.888 743.444 125.888C744.284 125.888 745.1 125.624 745.58 125.168V121.712H742.868V119.432H748.076V126.416C747.044 127.424 745.292 128.288 743.276 128.288ZM754.426 128V112.16H764.434V114.488H757.186V118.592H763.33V120.92H757.186V125.648H764.674V128H754.426ZM787.527 128V112.16H792.759C795.999 112.16 798.519 113.312 798.519 116.84C798.519 119.24 797.271 120.704 795.375 121.352L799.143 128H796.023L792.615 121.784H790.287V128H787.527ZM790.287 119.552H792.471C794.631 119.552 795.783 118.64 795.783 116.84C795.783 114.992 794.631 114.368 792.471 114.368H790.287V119.552ZM809.526 128.288C806.07 128.288 804.006 126.296 804.006 121.952V112.16H806.766V122.144C806.766 124.76 807.822 125.888 809.526 125.888C811.206 125.888 812.286 124.76 812.286 122.144V112.16H814.974V121.952C814.974 126.296 812.958 128.288 809.526 128.288ZM820.869 128V112.16H823.677L827.901 121.136L829.365 124.496H829.437C829.317 122.864 829.053 120.872 829.053 119.12V112.16H831.693V128H828.861L824.661 119L823.197 115.664H823.125C823.245 117.344 823.509 119.24 823.509 120.992V128H820.869ZM841.667 128V114.488H836.747V112.16H849.395V114.488H844.451V128H841.667ZM854.69 128V125.648H858.458V114.488H854.69V112.16H865.034V114.488H861.242V125.648H865.034V128H854.69ZM871.145 128V112.16H874.097L876.281 118.352L877.049 120.728H877.145L877.865 118.352L880.049 112.16H883.001V128H880.649V120.872C880.649 119.36 880.865 116.384 881.009 114.896H880.913L879.713 118.76L877.721 123.728H876.377L874.361 118.76L873.161 114.896H873.089C873.209 116.384 873.449 119.36 873.449 120.872V128H871.145ZM889.595 128V112.16H899.603V114.488H892.355V118.592H898.499V120.92H892.355V125.648H899.843V128H889.595Z" fill="#171717"/>
<rect x="395.5" y="155" width="812" height="631" rx="32" fill="#FD880B" fill-opacity="0.15"/>
<rect x="395.5" y="155" width="812" height="631" rx="32" stroke="#FD880B" stroke-width="2" stroke-linecap="round"/>
<rect x="943.5" y="203" width="220" height="534" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="943.5" y="203" width="220" height="534" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="691.5" y="203" width="220" height="534" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="691.5" y="203" width="220" height="534" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="439.5" y="203" width="220" height="534" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="439.5" y="203" width="220" height="534" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<path d="M493.973 464V461.648H497.741V450.488H493.973V448.16H504.317V450.488H500.525V461.648H504.317V464H493.973ZM515.971 464.288C513.763 464.288 511.675 463.448 510.139 461.96L511.747 460.064C512.923 461.144 514.483 461.888 516.019 461.888C517.963 461.888 518.947 461.072 518.947 459.8C518.947 458.48 517.891 458.072 516.331 457.448L514.195 456.512C512.515 455.864 510.811 454.616 510.811 452.312C510.811 449.792 513.067 447.872 516.259 447.872C518.203 447.872 520.003 448.616 521.299 449.888L519.859 451.64C518.803 450.776 517.723 450.272 516.259 450.272C514.627 450.272 513.619 450.968 513.619 452.168C513.619 453.416 514.891 453.848 516.307 454.424L518.371 455.312C520.363 456.128 521.779 457.28 521.779 459.584C521.779 462.152 519.643 464.288 515.971 464.288ZM532.714 464.288C529.09 464.288 526.546 461.12 526.546 456.008C526.546 450.872 529.09 447.872 532.714 447.872C536.362 447.872 538.882 450.896 538.882 456.008C538.882 461.12 536.362 464.288 532.714 464.288ZM532.714 461.888C534.73 461.888 536.05 459.584 536.05 456.008C536.05 452.432 534.73 450.272 532.714 450.272C530.698 450.272 529.402 452.432 529.402 456.008C529.402 459.584 530.698 461.888 532.714 461.888ZM545.209 464V448.16H547.945V461.648H555.337V464H545.209ZM559.599 464L564.687 448.16H567.927L573.015 464H570.087L568.863 459.68H563.655L562.407 464H559.599ZM564.255 457.496H568.263L567.711 455.528C567.231 453.848 566.751 452.072 566.295 450.32H566.199C565.767 452.072 565.287 453.848 564.807 455.528L564.255 457.496ZM581.694 464V450.488H576.774V448.16H589.422V450.488H584.478V464H581.694ZM595.197 464V448.16H605.205V450.488H597.957V454.592H604.101V456.92H597.957V461.648H605.445V464H595.197Z" fill="#171717"/>
<path d="M745.973 464V461.648H749.741V450.488H745.973V448.16H756.317V450.488H752.525V461.648H756.317V464H745.973ZM767.971 464.288C765.763 464.288 763.675 463.448 762.139 461.96L763.747 460.064C764.923 461.144 766.483 461.888 768.019 461.888C769.963 461.888 770.947 461.072 770.947 459.8C770.947 458.48 769.891 458.072 768.331 457.448L766.195 456.512C764.515 455.864 762.811 454.616 762.811 452.312C762.811 449.792 765.067 447.872 768.259 447.872C770.203 447.872 772.003 448.616 773.299 449.888L771.859 451.64C770.803 450.776 769.723 450.272 768.259 450.272C766.627 450.272 765.619 450.968 765.619 452.168C765.619 453.416 766.891 453.848 768.307 454.424L770.371 455.312C772.363 456.128 773.779 457.28 773.779 459.584C773.779 462.152 771.643 464.288 767.971 464.288ZM784.714 464.288C781.09 464.288 778.546 461.12 778.546 456.008C778.546 450.872 781.09 447.872 784.714 447.872C788.362 447.872 790.882 450.896 790.882 456.008C790.882 461.12 788.362 464.288 784.714 464.288ZM784.714 461.888C786.73 461.888 788.05 459.584 788.05 456.008C788.05 452.432 786.73 450.272 784.714 450.272C782.698 450.272 781.402 452.432 781.402 456.008C781.402 459.584 782.698 461.888 784.714 461.888ZM797.209 464V448.16H799.945V461.648H807.337V464H797.209ZM811.599 464L816.687 448.16H819.927L825.015 464H822.087L820.863 459.68H815.655L814.407 464H811.599ZM816.255 457.496H820.263L819.711 455.528C819.231 453.848 818.751 452.072 818.295 450.32H818.199C817.767 452.072 817.287 453.848 816.807 455.528L816.255 457.496ZM833.694 464V450.488H828.774V448.16H841.422V450.488H836.478V464H833.694ZM847.197 464V448.16H857.205V450.488H849.957V454.592H856.101V456.92H849.957V461.648H857.445V464H847.197Z" fill="#171717"/>
<path d="M997.973 464V461.648H1001.74V450.488H997.973V448.16H1008.32V450.488H1004.52V461.648H1008.32V464H997.973ZM1019.97 464.288C1017.76 464.288 1015.68 463.448 1014.14 461.96L1015.75 460.064C1016.92 461.144 1018.48 461.888 1020.02 461.888C1021.96 461.888 1022.95 461.072 1022.95 459.8C1022.95 458.48 1021.89 458.072 1020.33 457.448L1018.2 456.512C1016.52 455.864 1014.81 454.616 1014.81 452.312C1014.81 449.792 1017.07 447.872 1020.26 447.872C1022.2 447.872 1024 448.616 1025.3 449.888L1023.86 451.64C1022.8 450.776 1021.72 450.272 1020.26 450.272C1018.63 450.272 1017.62 450.968 1017.62 452.168C1017.62 453.416 1018.89 453.848 1020.31 454.424L1022.37 455.312C1024.36 456.128 1025.78 457.28 1025.78 459.584C1025.78 462.152 1023.64 464.288 1019.97 464.288ZM1036.71 464.288C1033.09 464.288 1030.55 461.12 1030.55 456.008C1030.55 450.872 1033.09 447.872 1036.71 447.872C1040.36 447.872 1042.88 450.896 1042.88 456.008C1042.88 461.12 1040.36 464.288 1036.71 464.288ZM1036.71 461.888C1038.73 461.888 1040.05 459.584 1040.05 456.008C1040.05 452.432 1038.73 450.272 1036.71 450.272C1034.7 450.272 1033.4 452.432 1033.4 456.008C1033.4 459.584 1034.7 461.888 1036.71 461.888ZM1049.21 464V448.16H1051.94V461.648H1059.34V464H1049.21ZM1063.6 464L1068.69 448.16H1071.93L1077.02 464H1074.09L1072.86 459.68H1067.66L1066.41 464H1063.6ZM1068.26 457.496H1072.26L1071.71 455.528C1071.23 453.848 1070.75 452.072 1070.3 450.32H1070.2C1069.77 452.072 1069.29 453.848 1068.81 455.528L1068.26 457.496ZM1085.69 464V450.488H1080.77V448.16H1093.42V450.488H1088.48V464H1085.69ZM1099.2 464V448.16H1109.2V450.488H1101.96V454.592H1108.1V456.92H1101.96V461.648H1109.44V464H1099.2Z" fill="#171717"/>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

@@ -0,0 +1,14 @@
<svg width="1600" height="940" viewBox="0 0 1600 940" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M703.554 128V112.16H713.562V114.488H706.314V118.592H712.458V120.92H706.314V125.648H713.802V128H703.554ZM719.625 128V112.16H723.681C728.313 112.16 731.097 114.776 731.097 120.008C731.097 125.24 728.313 128 723.825 128H719.625ZM722.409 125.744H723.513C726.537 125.744 728.241 123.896 728.241 120.008C728.241 116.12 726.537 114.392 723.513 114.392H722.409V125.744ZM742.776 128.288C738.792 128.288 735.792 125.36 735.792 120.128C735.792 114.92 738.816 111.872 742.896 111.872C744.984 111.872 746.4 112.856 747.36 113.84L745.824 115.568C745.104 114.8 744.264 114.272 742.896 114.272C740.4 114.272 738.648 116.456 738.648 120.032C738.648 123.656 740.16 125.888 742.944 125.888C743.784 125.888 744.6 125.624 745.08 125.168V121.712H742.368V119.432H747.576V126.416C746.544 127.424 744.792 128.288 742.776 128.288ZM753.926 128V112.16H763.934V114.488H756.686V118.592H762.83V120.92H756.686V125.648H764.174V128H753.926ZM787.027 128V112.16H792.259C795.499 112.16 798.019 113.312 798.019 116.84C798.019 119.24 796.771 120.704 794.875 121.352L798.643 128H795.523L792.115 121.784H789.787V128H787.027ZM789.787 119.552H791.971C794.131 119.552 795.283 118.64 795.283 116.84C795.283 114.992 794.131 114.368 791.971 114.368H789.787V119.552ZM809.026 128.288C805.57 128.288 803.506 126.296 803.506 121.952V112.16H806.266V122.144C806.266 124.76 807.322 125.888 809.026 125.888C810.706 125.888 811.786 124.76 811.786 122.144V112.16H814.474V121.952C814.474 126.296 812.458 128.288 809.026 128.288ZM820.369 128V112.16H823.177L827.401 121.136L828.865 124.496H828.937C828.817 122.864 828.553 120.872 828.553 119.12V112.16H831.193V128H828.361L824.161 119L822.697 115.664H822.625C822.745 117.344 823.009 119.24 823.009 120.992V128H820.369ZM841.167 128V114.488H836.247V112.16H848.895V114.488H843.951V128H841.167ZM854.19 128V125.648H857.958V114.488H854.19V112.16H864.534V114.488H860.742V125.648H864.534V128H854.19ZM870.645 128V112.16H873.597L875.781 118.352L876.549 120.728H876.645L877.365 118.352L879.549 112.16H882.501V128H880.149V120.872C880.149 119.36 880.365 116.384 880.509 114.896H880.413L879.213 118.76L877.221 123.728H875.877L873.861 118.76L872.661 114.896H872.589C872.709 116.384 872.949 119.36 872.949 120.872V128H870.645ZM889.095 128V112.16H899.103V114.488H891.855V118.592H897.999V120.92H891.855V125.648H899.343V128H889.095Z" fill="#EDEDED"/>
<rect x="395" y="155" width="812" height="631" rx="32" fill="#FD880B" fill-opacity="0.05"/>
<rect x="395" y="155" width="812" height="631" rx="32" stroke="#FD880B" stroke-width="2" stroke-linecap="round"/>
<rect x="943" y="203" width="220" height="534" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="943" y="203" width="220" height="534" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="691" y="203" width="220" height="534" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="691" y="203" width="220" height="534" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="439" y="203" width="220" height="534" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="439" y="203" width="220" height="534" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<path d="M493.473 464V461.648H497.241V450.488H493.473V448.16H503.817V450.488H500.025V461.648H503.817V464H493.473ZM515.471 464.288C513.263 464.288 511.175 463.448 509.639 461.96L511.247 460.064C512.423 461.144 513.983 461.888 515.519 461.888C517.463 461.888 518.447 461.072 518.447 459.8C518.447 458.48 517.391 458.072 515.831 457.448L513.695 456.512C512.015 455.864 510.311 454.616 510.311 452.312C510.311 449.792 512.567 447.872 515.759 447.872C517.703 447.872 519.503 448.616 520.799 449.888L519.359 451.64C518.303 450.776 517.223 450.272 515.759 450.272C514.127 450.272 513.119 450.968 513.119 452.168C513.119 453.416 514.391 453.848 515.807 454.424L517.871 455.312C519.863 456.128 521.279 457.28 521.279 459.584C521.279 462.152 519.143 464.288 515.471 464.288ZM532.214 464.288C528.59 464.288 526.046 461.12 526.046 456.008C526.046 450.872 528.59 447.872 532.214 447.872C535.862 447.872 538.382 450.896 538.382 456.008C538.382 461.12 535.862 464.288 532.214 464.288ZM532.214 461.888C534.23 461.888 535.55 459.584 535.55 456.008C535.55 452.432 534.23 450.272 532.214 450.272C530.198 450.272 528.902 452.432 528.902 456.008C528.902 459.584 530.198 461.888 532.214 461.888ZM544.709 464V448.16H547.445V461.648H554.837V464H544.709ZM559.099 464L564.187 448.16H567.427L572.515 464H569.587L568.363 459.68H563.155L561.907 464H559.099ZM563.755 457.496H567.763L567.211 455.528C566.731 453.848 566.251 452.072 565.795 450.32H565.699C565.267 452.072 564.787 453.848 564.307 455.528L563.755 457.496ZM581.194 464V450.488H576.274V448.16H588.922V450.488H583.978V464H581.194ZM594.697 464V448.16H604.705V450.488H597.457V454.592H603.601V456.92H597.457V461.648H604.945V464H594.697Z" fill="#EDEDED"/>
<path d="M745.473 464V461.648H749.241V450.488H745.473V448.16H755.817V450.488H752.025V461.648H755.817V464H745.473ZM767.471 464.288C765.263 464.288 763.175 463.448 761.639 461.96L763.247 460.064C764.423 461.144 765.983 461.888 767.519 461.888C769.463 461.888 770.447 461.072 770.447 459.8C770.447 458.48 769.391 458.072 767.831 457.448L765.695 456.512C764.015 455.864 762.311 454.616 762.311 452.312C762.311 449.792 764.567 447.872 767.759 447.872C769.703 447.872 771.503 448.616 772.799 449.888L771.359 451.64C770.303 450.776 769.223 450.272 767.759 450.272C766.127 450.272 765.119 450.968 765.119 452.168C765.119 453.416 766.391 453.848 767.807 454.424L769.871 455.312C771.863 456.128 773.279 457.28 773.279 459.584C773.279 462.152 771.143 464.288 767.471 464.288ZM784.214 464.288C780.59 464.288 778.046 461.12 778.046 456.008C778.046 450.872 780.59 447.872 784.214 447.872C787.862 447.872 790.382 450.896 790.382 456.008C790.382 461.12 787.862 464.288 784.214 464.288ZM784.214 461.888C786.23 461.888 787.55 459.584 787.55 456.008C787.55 452.432 786.23 450.272 784.214 450.272C782.198 450.272 780.902 452.432 780.902 456.008C780.902 459.584 782.198 461.888 784.214 461.888ZM796.709 464V448.16H799.445V461.648H806.837V464H796.709ZM811.099 464L816.187 448.16H819.427L824.515 464H821.587L820.363 459.68H815.155L813.907 464H811.099ZM815.755 457.496H819.763L819.211 455.528C818.731 453.848 818.251 452.072 817.795 450.32H817.699C817.267 452.072 816.787 453.848 816.307 455.528L815.755 457.496ZM833.194 464V450.488H828.274V448.16H840.922V450.488H835.978V464H833.194ZM846.697 464V448.16H856.705V450.488H849.457V454.592H855.601V456.92H849.457V461.648H856.945V464H846.697Z" fill="#EDEDED"/>
<path d="M997.473 464V461.648H1001.24V450.488H997.473V448.16H1007.82V450.488H1004.02V461.648H1007.82V464H997.473ZM1019.47 464.288C1017.26 464.288 1015.18 463.448 1013.64 461.96L1015.25 460.064C1016.42 461.144 1017.98 461.888 1019.52 461.888C1021.46 461.888 1022.45 461.072 1022.45 459.8C1022.45 458.48 1021.39 458.072 1019.83 457.448L1017.7 456.512C1016.02 455.864 1014.31 454.616 1014.31 452.312C1014.31 449.792 1016.57 447.872 1019.76 447.872C1021.7 447.872 1023.5 448.616 1024.8 449.888L1023.36 451.64C1022.3 450.776 1021.22 450.272 1019.76 450.272C1018.13 450.272 1017.12 450.968 1017.12 452.168C1017.12 453.416 1018.39 453.848 1019.81 454.424L1021.87 455.312C1023.86 456.128 1025.28 457.28 1025.28 459.584C1025.28 462.152 1023.14 464.288 1019.47 464.288ZM1036.21 464.288C1032.59 464.288 1030.05 461.12 1030.05 456.008C1030.05 450.872 1032.59 447.872 1036.21 447.872C1039.86 447.872 1042.38 450.896 1042.38 456.008C1042.38 461.12 1039.86 464.288 1036.21 464.288ZM1036.21 461.888C1038.23 461.888 1039.55 459.584 1039.55 456.008C1039.55 452.432 1038.23 450.272 1036.21 450.272C1034.2 450.272 1032.9 452.432 1032.9 456.008C1032.9 459.584 1034.2 461.888 1036.21 461.888ZM1048.71 464V448.16H1051.44V461.648H1058.84V464H1048.71ZM1063.1 464L1068.19 448.16H1071.43L1076.52 464H1073.59L1072.36 459.68H1067.16L1065.91 464H1063.1ZM1067.76 457.496H1071.76L1071.21 455.528C1070.73 453.848 1070.25 452.072 1069.8 450.32H1069.7C1069.27 452.072 1068.79 453.848 1068.31 455.528L1067.76 457.496ZM1085.19 464V450.488H1080.27V448.16H1092.92V450.488H1087.98V464H1085.19ZM1098.7 464V448.16H1108.7V450.488H1101.46V454.592H1107.6V456.92H1101.46V461.648H1108.94V464H1098.7Z" fill="#EDEDED"/>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

@@ -0,0 +1,184 @@
<svg width="1601" height="941" viewBox="0 0 1601 941" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1219.51 138.788C1215.53 138.788 1212.53 135.86 1212.53 130.628C1212.53 125.42 1215.55 122.372 1219.63 122.372C1221.72 122.372 1223.14 123.356 1224.1 124.34L1222.56 126.068C1221.84 125.3 1221 124.772 1219.63 124.772C1217.14 124.772 1215.38 126.956 1215.38 130.532C1215.38 134.156 1216.9 136.388 1219.68 136.388C1220.52 136.388 1221.34 136.124 1221.82 135.668V132.212H1219.1V129.932H1224.31V136.916C1223.28 137.924 1221.53 138.788 1219.51 138.788ZM1230.25 138.5V122.66H1235.53C1238.97 122.66 1241.49 123.86 1241.49 127.532C1241.49 131.036 1238.92 132.644 1235.53 132.644H1233.01V138.5H1230.25ZM1233.01 130.436H1235.29C1237.65 130.436 1238.75 129.476 1238.75 127.532C1238.75 125.54 1237.6 124.868 1235.29 124.868H1233.01V130.436ZM1252.18 138.788C1248.73 138.788 1246.66 136.796 1246.66 132.452V122.66H1249.42V132.644C1249.42 135.26 1250.48 136.388 1252.18 136.388C1253.86 136.388 1254.94 135.26 1254.94 132.644V122.66H1257.63V132.452C1257.63 136.796 1255.61 138.788 1252.18 138.788ZM1287.13 138.788C1283.12 138.788 1279.98 135.86 1279.98 130.628C1279.98 125.444 1283.07 122.372 1287.23 122.372C1289.17 122.372 1290.71 123.308 1291.69 124.34L1290.15 126.068C1289.36 125.276 1288.45 124.772 1287.23 124.772C1284.61 124.772 1282.81 126.956 1282.81 130.532C1282.81 134.156 1284.61 136.388 1287.3 136.388C1288.57 136.388 1289.55 135.788 1290.44 134.804L1292 136.484C1290.73 137.972 1289.12 138.788 1287.13 138.788ZM1298.21 138.5V122.66H1300.94V136.148H1308.34V138.5H1298.21ZM1319.34 138.788C1315.89 138.788 1313.82 136.796 1313.82 132.452V122.66H1316.58V132.644C1316.58 135.26 1317.64 136.388 1319.34 136.388C1321.02 136.388 1322.1 135.26 1322.1 132.644V122.66H1324.79V132.452C1324.79 136.796 1322.78 138.788 1319.34 138.788ZM1336.13 138.788C1333.93 138.788 1331.84 137.948 1330.3 136.46L1331.91 134.564C1333.09 135.644 1334.65 136.388 1336.18 136.388C1338.13 136.388 1339.11 135.572 1339.11 134.3C1339.11 132.98 1338.05 132.572 1336.49 131.948L1334.36 131.012C1332.68 130.364 1330.97 129.116 1330.97 126.812C1330.97 124.292 1333.23 122.372 1336.42 122.372C1338.37 122.372 1340.17 123.116 1341.46 124.388L1340.02 126.14C1338.97 125.276 1337.89 124.772 1336.42 124.772C1334.79 124.772 1333.78 125.468 1333.78 126.668C1333.78 127.916 1335.05 128.348 1336.47 128.924L1338.53 129.812C1340.53 130.628 1341.94 131.78 1341.94 134.084C1341.94 136.652 1339.81 138.788 1336.13 138.788ZM1351.48 138.5V124.988H1346.56V122.66H1359.21V124.988H1354.27V138.5H1351.48ZM1364.99 138.5V122.66H1375V124.988H1367.75V129.092H1373.89V131.42H1367.75V136.148H1375.24V138.5H1364.99ZM1381.3 138.5V122.66H1386.53C1389.77 122.66 1392.29 123.812 1392.29 127.34C1392.29 129.74 1391.04 131.204 1389.15 131.852L1392.91 138.5H1389.79L1386.39 132.284H1384.06V138.5H1381.3ZM1384.06 130.052H1386.24C1388.4 130.052 1389.55 129.14 1389.55 127.34C1389.55 125.492 1388.4 124.868 1386.24 124.868H1384.06V130.052Z" fill="#171717"/>
<path d="M1246.03 172.772C1242.79 170.084 1240.8 166.388 1240.8 161.828C1240.8 157.244 1242.79 153.572 1246.03 150.884L1247.54 152.18C1244.52 154.916 1243.15 157.916 1243.15 161.828C1243.15 165.74 1244.52 168.74 1247.54 171.476L1246.03 172.772ZM1260.11 168.788C1256.48 168.788 1253.94 165.62 1253.94 160.508C1253.94 155.372 1256.48 152.372 1260.11 152.372C1263.75 152.372 1266.27 155.396 1266.27 160.508C1266.27 165.62 1263.75 168.788 1260.11 168.788ZM1260.11 166.388C1262.12 166.388 1263.44 164.084 1263.44 160.508C1263.44 156.932 1262.12 154.772 1260.11 154.772C1258.09 154.772 1256.79 156.932 1256.79 160.508C1256.79 164.084 1258.09 166.388 1260.11 166.388ZM1272.6 168.5V152.66H1275.34V166.148H1282.73V168.5H1272.6ZM1289.39 168.5V152.66H1292.13V166.148H1299.52V168.5H1289.39ZM1303.78 168.5L1308.87 152.66H1312.11L1317.2 168.5H1314.27L1313.05 164.18H1307.84L1306.59 168.5H1303.78ZM1308.44 161.996H1312.45L1311.89 160.028C1311.41 158.348 1310.93 156.572 1310.48 154.82H1310.38C1309.95 156.572 1309.47 158.348 1308.99 160.028L1308.44 161.996ZM1321.77 168.5V152.66H1324.73L1326.91 158.852L1327.68 161.228H1327.77L1328.49 158.852L1330.68 152.66H1333.63V168.5H1331.28V161.372C1331.28 159.86 1331.49 156.884 1331.64 155.396H1331.54L1330.34 159.26L1328.35 164.228H1327.01L1324.99 159.26L1323.79 155.396H1323.72C1323.84 156.884 1324.08 159.86 1324.08 161.372V168.5H1321.77ZM1338.21 168.5L1343.3 152.66H1346.54L1351.62 168.5H1348.7L1347.47 164.18H1342.26L1341.02 168.5H1338.21ZM1342.86 161.996H1346.87L1346.32 160.028C1345.84 158.348 1345.36 156.572 1344.9 154.82H1344.81C1344.38 156.572 1343.9 158.348 1343.42 160.028L1342.86 161.996ZM1359.01 172.772L1357.47 171.476C1360.52 168.74 1361.86 165.74 1361.86 161.828C1361.86 157.916 1360.52 154.916 1357.47 152.18L1359.01 150.884C1362.22 153.572 1364.24 157.244 1364.24 161.828C1364.24 166.388 1362.22 170.084 1359.01 172.772Z" fill="#525252"/>
<rect x="1100.5" y="195.5" width="404" height="631" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="1100.5" y="195.5" width="404" height="631" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round"/>
<rect x="1142.5" y="231" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1208.99 255.648H1173.31C1170.03 255.648 1167.37 258.262 1167.37 261.486V296.513C1167.37 299.737 1170.03 302.351 1173.31 302.351H1208.99C1212.27 302.351 1214.93 299.737 1214.93 296.513V261.486C1214.93 258.262 1212.27 255.648 1208.99 255.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 270.242H1182.23V287.756H1200.07V270.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 249.811V255.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 249.811V255.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 305.27V308.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 302.352V308.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 270.242H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 284.838H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 270.242H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 284.838H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254.5" y="231" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1320.99 255.648H1285.31C1282.03 255.648 1279.37 258.262 1279.37 261.486V296.513C1279.37 299.737 1282.03 302.351 1285.31 302.351H1320.99C1324.27 302.351 1326.93 299.737 1326.93 296.513V261.486C1326.93 258.262 1324.27 255.648 1320.99 255.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 270.242H1294.23V287.756H1312.07V270.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 249.811V255.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 249.811V255.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 305.27V308.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 302.352V308.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 270.242H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 284.838H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 270.242H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 284.838H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366.5" y="231" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1432.99 255.648H1397.31C1394.03 255.648 1391.37 258.262 1391.37 261.486V296.513C1391.37 299.737 1394.03 302.351 1397.31 302.351H1432.99C1436.27 302.351 1438.93 299.737 1438.93 296.513V261.486C1438.93 258.262 1436.27 255.648 1432.99 255.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 270.242H1406.23V287.756H1424.07V270.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 249.811V255.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 249.811V255.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 305.27V308.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 302.352V308.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 270.242H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 284.838H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 270.242H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 284.838H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1142.5" y="348" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1208.99 372.648H1173.31C1170.03 372.648 1167.37 375.262 1167.37 378.486V413.513C1167.37 416.737 1170.03 419.351 1173.31 419.351H1208.99C1212.27 419.351 1214.93 416.737 1214.93 413.513V378.486C1214.93 375.262 1212.27 372.648 1208.99 372.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 387.242H1182.23V404.756H1200.07V387.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 366.811V372.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 366.811V372.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 422.27V425.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 419.352V425.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 387.242H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 401.838H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 387.242H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 401.838H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254.5" y="348" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1320.99 372.648H1285.31C1282.03 372.648 1279.37 375.262 1279.37 378.486V413.513C1279.37 416.737 1282.03 419.351 1285.31 419.351H1320.99C1324.27 419.351 1326.93 416.737 1326.93 413.513V378.486C1326.93 375.262 1324.27 372.648 1320.99 372.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 387.242H1294.23V404.756H1312.07V387.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 366.811V372.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 366.811V372.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 422.27V425.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 419.352V425.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 387.242H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 401.838H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 387.242H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 401.838H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366.5" y="348" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1432.99 372.648H1397.31C1394.03 372.648 1391.37 375.262 1391.37 378.486V413.513C1391.37 416.737 1394.03 419.351 1397.31 419.351H1432.99C1436.27 419.351 1438.93 416.737 1438.93 413.513V378.486C1438.93 375.262 1436.27 372.648 1432.99 372.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 387.242H1406.23V404.756H1424.07V387.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 366.811V372.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 366.811V372.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 422.27V425.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 419.352V425.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 387.242H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 401.838H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 387.242H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 401.838H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1142.5" y="465" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1208.99 489.648H1173.31C1170.03 489.648 1167.37 492.262 1167.37 495.486V530.513C1167.37 533.737 1170.03 536.351 1173.31 536.351H1208.99C1212.27 536.351 1214.93 533.737 1214.93 530.513V495.486C1214.93 492.262 1212.27 489.648 1208.99 489.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 504.242H1182.23V521.756H1200.07V504.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 483.811V489.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 483.811V489.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 539.27V542.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 536.352V542.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 504.242H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 518.838H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 504.242H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 518.838H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254.5" y="465" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1320.99 489.648H1285.31C1282.03 489.648 1279.37 492.262 1279.37 495.486V530.513C1279.37 533.737 1282.03 536.351 1285.31 536.351H1320.99C1324.27 536.351 1326.93 533.737 1326.93 530.513V495.486C1326.93 492.262 1324.27 489.648 1320.99 489.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 504.242H1294.23V521.756H1312.07V504.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 483.811V489.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 483.811V489.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 539.27V542.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 536.352V542.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 504.242H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 518.838H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 504.242H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 518.838H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366.5" y="465" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1432.99 489.648H1397.31C1394.03 489.648 1391.37 492.262 1391.37 495.486V530.513C1391.37 533.737 1394.03 536.351 1397.31 536.351H1432.99C1436.27 536.351 1438.93 533.737 1438.93 530.513V495.486C1438.93 492.262 1436.27 489.648 1432.99 489.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 504.242H1406.23V521.756H1424.07V504.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 483.811V489.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 483.811V489.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 539.27V542.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 536.352V542.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 504.242H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 518.838H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 504.242H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 518.838H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1142.5" y="582" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1208.99 606.648H1173.31C1170.03 606.648 1167.37 609.262 1167.37 612.486V647.513C1167.37 650.737 1170.03 653.351 1173.31 653.351H1208.99C1212.27 653.351 1214.93 650.737 1214.93 647.513V612.486C1214.93 609.262 1212.27 606.648 1208.99 606.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 621.242H1182.23V638.756H1200.07V621.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 600.811V606.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 600.811V606.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 656.27V659.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 653.352V659.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 621.242H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 635.838H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 621.242H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 635.838H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254.5" y="582" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1320.99 606.648H1285.31C1282.03 606.648 1279.37 609.262 1279.37 612.486V647.513C1279.37 650.737 1282.03 653.351 1285.31 653.351H1320.99C1324.27 653.351 1326.93 650.737 1326.93 647.513V612.486C1326.93 609.262 1324.27 606.648 1320.99 606.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 621.242H1294.23V638.756H1312.07V621.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 600.811V606.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 600.811V606.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 656.27V659.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 653.352V659.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 621.242H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 635.838H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 621.242H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 635.838H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366.5" y="582" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1432.99 606.648H1397.31C1394.03 606.648 1391.37 609.262 1391.37 612.486V647.513C1391.37 650.737 1394.03 653.351 1397.31 653.351H1432.99C1436.27 653.351 1438.93 650.737 1438.93 647.513V612.486C1438.93 609.262 1436.27 606.648 1432.99 606.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 621.242H1406.23V638.756H1424.07V621.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 600.811V606.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 600.811V606.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 656.27V659.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 653.352V659.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 621.242H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 635.838H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 621.242H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 635.838H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1142.5" y="699" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1208.99 723.648H1173.31C1170.03 723.648 1167.37 726.262 1167.37 729.486V764.513C1167.37 767.737 1170.03 770.351 1173.31 770.351H1208.99C1212.27 770.351 1214.93 767.737 1214.93 764.513V729.486C1214.93 726.262 1212.27 723.648 1208.99 723.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 738.242H1182.23V755.756H1200.07V738.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 717.811V723.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 717.811V723.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1182.23 773.27V776.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1200.07 770.352V776.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 738.242H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.93 752.838H1220.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 738.242H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1161.42 752.838H1167.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254.5" y="699" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1320.99 723.648H1285.31C1282.03 723.648 1279.37 726.262 1279.37 729.486V764.513C1279.37 767.737 1282.03 770.351 1285.31 770.351H1320.99C1324.27 770.351 1326.93 767.737 1326.93 764.513V729.486C1326.93 726.262 1324.27 723.648 1320.99 723.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 738.242H1294.23V755.756H1312.07V738.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 717.811V723.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 717.811V723.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1294.23 773.27V776.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1312.07 770.352V776.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 738.242H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.93 752.838H1332.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 738.242H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1273.42 752.838H1279.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366.5" y="699" width="96" height="96" rx="21" fill="#C7C7C7" fill-opacity="0.1" stroke="#DFDFDF" stroke-width="2"/>
<path d="M1432.99 723.648H1397.31C1394.03 723.648 1391.37 726.262 1391.37 729.486V764.513C1391.37 767.737 1394.03 770.351 1397.31 770.351H1432.99C1436.27 770.351 1438.93 767.737 1438.93 764.513V729.486C1438.93 726.262 1436.27 723.648 1432.99 723.648Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 738.242H1406.23V755.756H1424.07V738.242Z" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 717.811V723.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 717.811V723.648" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1406.23 773.27V776.188" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1424.07 770.352V776.189" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 738.242H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.93 752.838H1444.88" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 738.242H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1385.42 752.838H1391.37" stroke="#171717" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M411.793 168.5V152.66H421.801V154.988H414.553V159.092H420.697V161.42H414.553V166.148H422.041V168.5H411.793ZM427.863 168.5V152.66H431.919C436.551 152.66 439.335 155.276 439.335 160.508C439.335 165.74 436.551 168.5 432.063 168.5H427.863ZM430.647 166.244H431.751C434.775 166.244 436.479 164.396 436.479 160.508C436.479 156.62 434.775 154.892 431.751 154.892H430.647V166.244ZM451.014 168.788C447.03 168.788 444.03 165.86 444.03 160.628C444.03 155.42 447.054 152.372 451.134 152.372C453.222 152.372 454.638 153.356 455.598 154.34L454.062 156.068C453.342 155.3 452.502 154.772 451.134 154.772C448.638 154.772 446.886 156.956 446.886 160.532C446.886 164.156 448.398 166.388 451.182 166.388C452.022 166.388 452.838 166.124 453.318 165.668V162.212H450.606V159.932H455.814V166.916C454.782 167.924 453.03 168.788 451.014 168.788ZM462.165 168.5V152.66H472.173V154.988H464.925V159.092H471.069V161.42H464.925V166.148H472.413V168.5H462.165ZM495.266 168.5V152.66H500.498C503.738 152.66 506.258 153.812 506.258 157.34C506.258 159.74 505.01 161.204 503.114 161.852L506.882 168.5H503.762L500.354 162.284H498.026V168.5H495.266ZM498.026 160.052H500.21C502.37 160.052 503.522 159.14 503.522 157.34C503.522 155.492 502.37 154.868 500.21 154.868H498.026V160.052ZM517.264 168.788C513.808 168.788 511.744 166.796 511.744 162.452V152.66H514.504V162.644C514.504 165.26 515.56 166.388 517.264 166.388C518.944 166.388 520.024 165.26 520.024 162.644V152.66H522.712V162.452C522.712 166.796 520.696 168.788 517.264 168.788ZM528.607 168.5V152.66H531.415L535.639 161.636L537.103 164.996H537.175C537.055 163.364 536.791 161.372 536.791 159.62V152.66H539.431V168.5H536.599L532.399 159.5L530.935 156.164H530.863C530.983 157.844 531.247 159.74 531.247 161.492V168.5H528.607ZM549.406 168.5V154.988H544.486V152.66H557.134V154.988H552.19V168.5H549.406ZM562.428 168.5V166.148H566.196V154.988H562.428V152.66H572.772V154.988H568.98V166.148H572.772V168.5H562.428ZM578.883 168.5V152.66H581.835L584.019 158.852L584.787 161.228H584.883L585.603 158.852L587.787 152.66H590.739V168.5H588.387V161.372C588.387 159.86 588.603 156.884 588.747 155.396H588.651L587.451 159.26L585.459 164.228H584.115L582.099 159.26L580.899 155.396H580.827C580.947 156.884 581.187 159.86 581.187 161.372V168.5H578.883ZM597.333 168.5V152.66H607.341V154.988H600.093V159.092H606.237V161.42H600.093V166.148H607.581V168.5H597.333Z" fill="#171717"/>
<rect x="103.238" y="195.5" width="812" height="631" rx="32" fill="#FD880B" fill-opacity="0.15"/>
<rect x="103.238" y="195.5" width="812" height="631" rx="32" stroke="#FD880B" stroke-width="2" stroke-linecap="round"/>
<rect x="651.238" y="243.5" width="220" height="534" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="651.238" y="243.5" width="220" height="534" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="399.238" y="243.5" width="220" height="534" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="399.238" y="243.5" width="220" height="534" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="147.238" y="243.5" width="220" height="534" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="147.238" y="243.5" width="220" height="534" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<path d="M201.711 504.5V502.148H205.479V490.988H201.711V488.66H212.055V490.988H208.263V502.148H212.055V504.5H201.711ZM223.71 504.788C221.502 504.788 219.414 503.948 217.878 502.46L219.486 500.564C220.662 501.644 222.222 502.388 223.758 502.388C225.702 502.388 226.686 501.572 226.686 500.3C226.686 498.98 225.63 498.572 224.07 497.948L221.934 497.012C220.254 496.364 218.55 495.116 218.55 492.812C218.55 490.292 220.806 488.372 223.998 488.372C225.942 488.372 227.742 489.116 229.038 490.388L227.598 492.14C226.542 491.276 225.462 490.772 223.998 490.772C222.366 490.772 221.358 491.468 221.358 492.668C221.358 493.916 222.63 494.348 224.046 494.924L226.11 495.812C228.102 496.628 229.518 497.78 229.518 500.084C229.518 502.652 227.382 504.788 223.71 504.788ZM240.452 504.788C236.828 504.788 234.284 501.62 234.284 496.508C234.284 491.372 236.828 488.372 240.452 488.372C244.1 488.372 246.62 491.396 246.62 496.508C246.62 501.62 244.1 504.788 240.452 504.788ZM240.452 502.388C242.468 502.388 243.788 500.084 243.788 496.508C243.788 492.932 242.468 490.772 240.452 490.772C238.436 490.772 237.14 492.932 237.14 496.508C237.14 500.084 238.436 502.388 240.452 502.388ZM252.947 504.5V488.66H255.683V502.148H263.075V504.5H252.947ZM267.338 504.5L272.426 488.66H275.666L280.754 504.5H277.826L276.602 500.18H271.394L270.146 504.5H267.338ZM271.994 497.996H276.002L275.45 496.028C274.97 494.348 274.49 492.572 274.034 490.82H273.938C273.506 492.572 273.026 494.348 272.546 496.028L271.994 497.996ZM289.432 504.5V490.988H284.512V488.66H297.16V490.988H292.216V504.5H289.432ZM302.935 504.5V488.66H312.943V490.988H305.695V495.092H311.839V497.42H305.695V502.148H313.183V504.5H302.935Z" fill="#171717"/>
<path d="M453.711 504.5V502.148H457.479V490.988H453.711V488.66H464.055V490.988H460.263V502.148H464.055V504.5H453.711ZM475.71 504.788C473.502 504.788 471.414 503.948 469.878 502.46L471.486 500.564C472.662 501.644 474.222 502.388 475.758 502.388C477.702 502.388 478.686 501.572 478.686 500.3C478.686 498.98 477.63 498.572 476.07 497.948L473.934 497.012C472.254 496.364 470.55 495.116 470.55 492.812C470.55 490.292 472.806 488.372 475.998 488.372C477.942 488.372 479.742 489.116 481.038 490.388L479.598 492.14C478.542 491.276 477.462 490.772 475.998 490.772C474.366 490.772 473.358 491.468 473.358 492.668C473.358 493.916 474.63 494.348 476.046 494.924L478.11 495.812C480.102 496.628 481.518 497.78 481.518 500.084C481.518 502.652 479.382 504.788 475.71 504.788ZM492.452 504.788C488.828 504.788 486.284 501.62 486.284 496.508C486.284 491.372 488.828 488.372 492.452 488.372C496.1 488.372 498.62 491.396 498.62 496.508C498.62 501.62 496.1 504.788 492.452 504.788ZM492.452 502.388C494.468 502.388 495.788 500.084 495.788 496.508C495.788 492.932 494.468 490.772 492.452 490.772C490.436 490.772 489.14 492.932 489.14 496.508C489.14 500.084 490.436 502.388 492.452 502.388ZM504.947 504.5V488.66H507.683V502.148H515.075V504.5H504.947ZM519.338 504.5L524.426 488.66H527.666L532.754 504.5H529.826L528.602 500.18H523.394L522.146 504.5H519.338ZM523.994 497.996H528.002L527.45 496.028C526.97 494.348 526.49 492.572 526.034 490.82H525.938C525.506 492.572 525.026 494.348 524.546 496.028L523.994 497.996ZM541.432 504.5V490.988H536.512V488.66H549.16V490.988H544.216V504.5H541.432ZM554.935 504.5V488.66H564.943V490.988H557.695V495.092H563.839V497.42H557.695V502.148H565.183V504.5H554.935Z" fill="#171717"/>
<path d="M705.711 504.5V502.148H709.479V490.988H705.711V488.66H716.055V490.988H712.263V502.148H716.055V504.5H705.711ZM727.71 504.788C725.502 504.788 723.414 503.948 721.878 502.46L723.486 500.564C724.662 501.644 726.222 502.388 727.758 502.388C729.702 502.388 730.686 501.572 730.686 500.3C730.686 498.98 729.63 498.572 728.07 497.948L725.934 497.012C724.254 496.364 722.55 495.116 722.55 492.812C722.55 490.292 724.806 488.372 727.998 488.372C729.942 488.372 731.742 489.116 733.038 490.388L731.598 492.14C730.542 491.276 729.462 490.772 727.998 490.772C726.366 490.772 725.358 491.468 725.358 492.668C725.358 493.916 726.63 494.348 728.046 494.924L730.11 495.812C732.102 496.628 733.518 497.78 733.518 500.084C733.518 502.652 731.382 504.788 727.71 504.788ZM744.452 504.788C740.828 504.788 738.284 501.62 738.284 496.508C738.284 491.372 740.828 488.372 744.452 488.372C748.1 488.372 750.62 491.396 750.62 496.508C750.62 501.62 748.1 504.788 744.452 504.788ZM744.452 502.388C746.468 502.388 747.788 500.084 747.788 496.508C747.788 492.932 746.468 490.772 744.452 490.772C742.436 490.772 741.14 492.932 741.14 496.508C741.14 500.084 742.436 502.388 744.452 502.388ZM756.947 504.5V488.66H759.683V502.148H767.075V504.5H756.947ZM771.338 504.5L776.426 488.66H779.666L784.754 504.5H781.826L780.602 500.18H775.394L774.146 504.5H771.338ZM775.994 497.996H780.002L779.45 496.028C778.97 494.348 778.49 492.572 778.034 490.82H777.938C777.506 492.572 777.026 494.348 776.546 496.028L775.994 497.996ZM793.432 504.5V490.988H788.512V488.66H801.16V490.988H796.216V504.5H793.432ZM806.935 504.5V488.66H816.943V490.988H809.695V495.092H815.839V497.42H809.695V502.148H817.183V504.5H806.935Z" fill="#171717"/>
<path d="M936.793 494.793C936.402 495.183 936.402 495.817 936.793 496.207L943.157 502.571C943.547 502.962 944.181 502.962 944.571 502.571C944.962 502.181 944.962 501.547 944.571 501.157L938.914 495.5L944.571 489.843C944.962 489.453 944.962 488.819 944.571 488.429C944.181 488.038 943.547 488.038 943.157 488.429L936.793 494.793ZM1078.95 496.207C1079.34 495.817 1079.34 495.183 1078.95 494.793L1072.58 488.429C1072.19 488.038 1071.56 488.038 1071.17 488.429C1070.78 488.819 1070.78 489.453 1071.17 489.843L1076.82 495.5L1071.17 501.157C1070.78 501.547 1070.78 502.181 1071.17 502.571C1071.56 502.962 1072.19 502.962 1072.58 502.571L1078.95 496.207ZM937.5 496.5L1078.24 496.5L1078.24 494.5L937.5 494.5L937.5 496.5Z" fill="#8F8F8F"/>
</svg>

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,184 @@
<svg width="1600" height="940" viewBox="0 0 1600 940" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1219.01 138.288C1215.03 138.288 1212.03 135.36 1212.03 130.128C1212.03 124.92 1215.05 121.872 1219.13 121.872C1221.22 121.872 1222.64 122.856 1223.6 123.84L1222.06 125.568C1221.34 124.8 1220.5 124.272 1219.13 124.272C1216.64 124.272 1214.88 126.456 1214.88 130.032C1214.88 133.656 1216.4 135.888 1219.18 135.888C1220.02 135.888 1220.84 135.624 1221.32 135.168V131.712H1218.6V129.432H1223.81V136.416C1222.78 137.424 1221.03 138.288 1219.01 138.288ZM1229.75 138V122.16H1235.03C1238.47 122.16 1240.99 123.36 1240.99 127.032C1240.99 130.536 1238.42 132.144 1235.03 132.144H1232.51V138H1229.75ZM1232.51 129.936H1234.79C1237.15 129.936 1238.25 128.976 1238.25 127.032C1238.25 125.04 1237.1 124.368 1234.79 124.368H1232.51V129.936ZM1251.68 138.288C1248.23 138.288 1246.16 136.296 1246.16 131.952V122.16H1248.92V132.144C1248.92 134.76 1249.98 135.888 1251.68 135.888C1253.36 135.888 1254.44 134.76 1254.44 132.144V122.16H1257.13V131.952C1257.13 136.296 1255.11 138.288 1251.68 138.288ZM1286.63 138.288C1282.62 138.288 1279.48 135.36 1279.48 130.128C1279.48 124.944 1282.57 121.872 1286.73 121.872C1288.67 121.872 1290.21 122.808 1291.19 123.84L1289.65 125.568C1288.86 124.776 1287.95 124.272 1286.73 124.272C1284.11 124.272 1282.31 126.456 1282.31 130.032C1282.31 133.656 1284.11 135.888 1286.8 135.888C1288.07 135.888 1289.05 135.288 1289.94 134.304L1291.5 135.984C1290.23 137.472 1288.62 138.288 1286.63 138.288ZM1297.71 138V122.16H1300.44V135.648H1307.84V138H1297.71ZM1318.84 138.288C1315.39 138.288 1313.32 136.296 1313.32 131.952V122.16H1316.08V132.144C1316.08 134.76 1317.14 135.888 1318.84 135.888C1320.52 135.888 1321.6 134.76 1321.6 132.144V122.16H1324.29V131.952C1324.29 136.296 1322.28 138.288 1318.84 138.288ZM1335.63 138.288C1333.43 138.288 1331.34 137.448 1329.8 135.96L1331.41 134.064C1332.59 135.144 1334.15 135.888 1335.68 135.888C1337.63 135.888 1338.61 135.072 1338.61 133.8C1338.61 132.48 1337.55 132.072 1335.99 131.448L1333.86 130.512C1332.18 129.864 1330.47 128.616 1330.47 126.312C1330.47 123.792 1332.73 121.872 1335.92 121.872C1337.87 121.872 1339.67 122.616 1340.96 123.888L1339.52 125.64C1338.47 124.776 1337.39 124.272 1335.92 124.272C1334.29 124.272 1333.28 124.968 1333.28 126.168C1333.28 127.416 1334.55 127.848 1335.97 128.424L1338.03 129.312C1340.03 130.128 1341.44 131.28 1341.44 133.584C1341.44 136.152 1339.31 138.288 1335.63 138.288ZM1350.98 138V124.488H1346.06V122.16H1358.71V124.488H1353.77V138H1350.98ZM1364.49 138V122.16H1374.5V124.488H1367.25V128.592H1373.39V130.92H1367.25V135.648H1374.74V138H1364.49ZM1380.8 138V122.16H1386.03C1389.27 122.16 1391.79 123.312 1391.79 126.84C1391.79 129.24 1390.54 130.704 1388.65 131.352L1392.41 138H1389.29L1385.89 131.784H1383.56V138H1380.8ZM1383.56 129.552H1385.74C1387.9 129.552 1389.05 128.64 1389.05 126.84C1389.05 124.992 1387.9 124.368 1385.74 124.368H1383.56V129.552Z" fill="#EDEDED"/>
<path d="M1245.53 172.272C1242.29 169.584 1240.3 165.888 1240.3 161.328C1240.3 156.744 1242.29 153.072 1245.53 150.384L1247.04 151.68C1244.02 154.416 1242.65 157.416 1242.65 161.328C1242.65 165.24 1244.02 168.24 1247.04 170.976L1245.53 172.272ZM1259.61 168.288C1255.98 168.288 1253.44 165.12 1253.44 160.008C1253.44 154.872 1255.98 151.872 1259.61 151.872C1263.25 151.872 1265.77 154.896 1265.77 160.008C1265.77 165.12 1263.25 168.288 1259.61 168.288ZM1259.61 165.888C1261.62 165.888 1262.94 163.584 1262.94 160.008C1262.94 156.432 1261.62 154.272 1259.61 154.272C1257.59 154.272 1256.29 156.432 1256.29 160.008C1256.29 163.584 1257.59 165.888 1259.61 165.888ZM1272.1 168V152.16H1274.84V165.648H1282.23V168H1272.1ZM1288.89 168V152.16H1291.63V165.648H1299.02V168H1288.89ZM1303.28 168L1308.37 152.16H1311.61L1316.7 168H1313.77L1312.55 163.68H1307.34L1306.09 168H1303.28ZM1307.94 161.496H1311.95L1311.39 159.528C1310.91 157.848 1310.43 156.072 1309.98 154.32H1309.88C1309.45 156.072 1308.97 157.848 1308.49 159.528L1307.94 161.496ZM1321.27 168V152.16H1324.23L1326.41 158.352L1327.18 160.728H1327.27L1327.99 158.352L1330.18 152.16H1333.13V168H1330.78V160.872C1330.78 159.36 1330.99 156.384 1331.14 154.896H1331.04L1329.84 158.76L1327.85 163.728H1326.51L1324.49 158.76L1323.29 154.896H1323.22C1323.34 156.384 1323.58 159.36 1323.58 160.872V168H1321.27ZM1337.71 168L1342.8 152.16H1346.04L1351.12 168H1348.2L1346.97 163.68H1341.76L1340.52 168H1337.71ZM1342.36 161.496H1346.37L1345.82 159.528C1345.34 157.848 1344.86 156.072 1344.4 154.32H1344.31C1343.88 156.072 1343.4 157.848 1342.92 159.528L1342.36 161.496ZM1358.51 172.272L1356.97 170.976C1360.02 168.24 1361.36 165.24 1361.36 161.328C1361.36 157.416 1360.02 154.416 1356.97 151.68L1358.51 150.384C1361.72 153.072 1363.74 156.744 1363.74 161.328C1363.74 165.888 1361.72 169.584 1358.51 172.272Z" fill="#A0A0A0"/>
<rect x="1100" y="195" width="404" height="631" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="1100" y="195" width="404" height="631" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round"/>
<rect x="1142" y="230.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1208.49 255.148H1172.81C1169.53 255.148 1166.86 257.762 1166.86 260.986V296.013C1166.86 299.237 1169.53 301.851 1172.81 301.851H1208.49C1211.77 301.851 1214.43 299.237 1214.43 296.013V260.986C1214.43 257.762 1211.77 255.148 1208.49 255.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 269.742H1181.73V287.256H1199.57V269.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 249.311V255.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 249.311V255.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 304.77V307.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 301.852V307.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 269.742H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 284.338H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 269.742H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 284.338H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254" y="230.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1320.49 255.148H1284.81C1281.53 255.148 1278.86 257.762 1278.86 260.986V296.013C1278.86 299.237 1281.53 301.851 1284.81 301.851H1320.49C1323.77 301.851 1326.43 299.237 1326.43 296.013V260.986C1326.43 257.762 1323.77 255.148 1320.49 255.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 269.742H1293.73V287.256H1311.57V269.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 249.311V255.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 249.311V255.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 304.77V307.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 301.852V307.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 269.742H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 284.338H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 269.742H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 284.338H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366" y="230.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1432.49 255.148H1396.81C1393.53 255.148 1390.86 257.762 1390.86 260.986V296.013C1390.86 299.237 1393.53 301.851 1396.81 301.851H1432.49C1435.77 301.851 1438.43 299.237 1438.43 296.013V260.986C1438.43 257.762 1435.77 255.148 1432.49 255.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 269.742H1405.73V287.256H1423.57V269.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 249.311V255.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 249.311V255.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 304.77V307.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 301.852V307.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 269.742H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 284.338H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 269.742H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 284.338H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1142" y="347.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1208.49 372.148H1172.81C1169.53 372.148 1166.86 374.762 1166.86 377.986V413.013C1166.86 416.237 1169.53 418.851 1172.81 418.851H1208.49C1211.77 418.851 1214.43 416.237 1214.43 413.013V377.986C1214.43 374.762 1211.77 372.148 1208.49 372.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 386.742H1181.73V404.256H1199.57V386.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 366.311V372.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 366.311V372.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 421.77V424.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 418.852V424.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 386.742H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 401.338H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 386.742H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 401.338H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254" y="347.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1320.49 372.148H1284.81C1281.53 372.148 1278.86 374.762 1278.86 377.986V413.013C1278.86 416.237 1281.53 418.851 1284.81 418.851H1320.49C1323.77 418.851 1326.43 416.237 1326.43 413.013V377.986C1326.43 374.762 1323.77 372.148 1320.49 372.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 386.742H1293.73V404.256H1311.57V386.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 366.311V372.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 366.311V372.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 421.77V424.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 418.852V424.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 386.742H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 401.338H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 386.742H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 401.338H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366" y="347.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1432.49 372.148H1396.81C1393.53 372.148 1390.86 374.762 1390.86 377.986V413.013C1390.86 416.237 1393.53 418.851 1396.81 418.851H1432.49C1435.77 418.851 1438.43 416.237 1438.43 413.013V377.986C1438.43 374.762 1435.77 372.148 1432.49 372.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 386.742H1405.73V404.256H1423.57V386.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 366.311V372.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 366.311V372.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 421.77V424.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 418.852V424.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 386.742H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 401.338H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 386.742H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 401.338H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1142" y="464.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1208.49 489.148H1172.81C1169.53 489.148 1166.86 491.762 1166.86 494.986V530.013C1166.86 533.237 1169.53 535.851 1172.81 535.851H1208.49C1211.77 535.851 1214.43 533.237 1214.43 530.013V494.986C1214.43 491.762 1211.77 489.148 1208.49 489.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 503.742H1181.73V521.256H1199.57V503.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 483.311V489.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 483.311V489.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 538.77V541.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 535.852V541.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 503.742H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 518.338H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 503.742H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 518.338H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254" y="464.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1320.49 489.148H1284.81C1281.53 489.148 1278.86 491.762 1278.86 494.986V530.013C1278.86 533.237 1281.53 535.851 1284.81 535.851H1320.49C1323.77 535.851 1326.43 533.237 1326.43 530.013V494.986C1326.43 491.762 1323.77 489.148 1320.49 489.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 503.742H1293.73V521.256H1311.57V503.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 483.311V489.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 483.311V489.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 538.77V541.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 535.852V541.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 503.742H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 518.338H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 503.742H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 518.338H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366" y="464.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1432.49 489.148H1396.81C1393.53 489.148 1390.86 491.762 1390.86 494.986V530.013C1390.86 533.237 1393.53 535.851 1396.81 535.851H1432.49C1435.77 535.851 1438.43 533.237 1438.43 530.013V494.986C1438.43 491.762 1435.77 489.148 1432.49 489.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 503.742H1405.73V521.256H1423.57V503.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 483.311V489.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 483.311V489.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 538.77V541.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 535.852V541.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 503.742H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 518.338H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 503.742H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 518.338H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1142" y="581.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1208.49 606.148H1172.81C1169.53 606.148 1166.86 608.762 1166.86 611.986V647.013C1166.86 650.237 1169.53 652.851 1172.81 652.851H1208.49C1211.77 652.851 1214.43 650.237 1214.43 647.013V611.986C1214.43 608.762 1211.77 606.148 1208.49 606.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 620.742H1181.73V638.256H1199.57V620.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 600.311V606.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 600.311V606.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 655.77V658.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 652.852V658.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 620.742H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 635.338H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 620.742H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 635.338H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254" y="581.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1320.49 606.148H1284.81C1281.53 606.148 1278.86 608.762 1278.86 611.986V647.013C1278.86 650.237 1281.53 652.851 1284.81 652.851H1320.49C1323.77 652.851 1326.43 650.237 1326.43 647.013V611.986C1326.43 608.762 1323.77 606.148 1320.49 606.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 620.742H1293.73V638.256H1311.57V620.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 600.311V606.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 600.311V606.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 655.77V658.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 652.852V658.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 620.742H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 635.338H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 620.742H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 635.338H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366" y="581.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1432.49 606.148H1396.81C1393.53 606.148 1390.86 608.762 1390.86 611.986V647.013C1390.86 650.237 1393.53 652.851 1396.81 652.851H1432.49C1435.77 652.851 1438.43 650.237 1438.43 647.013V611.986C1438.43 608.762 1435.77 606.148 1432.49 606.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 620.742H1405.73V638.256H1423.57V620.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 600.311V606.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 600.311V606.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 655.77V658.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 652.852V658.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 620.742H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 635.338H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 620.742H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 635.338H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1142" y="698.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1208.49 723.148H1172.81C1169.53 723.148 1166.86 725.762 1166.86 728.986V764.013C1166.86 767.237 1169.53 769.851 1172.81 769.851H1208.49C1211.77 769.851 1214.43 767.237 1214.43 764.013V728.986C1214.43 725.762 1211.77 723.148 1208.49 723.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 737.742H1181.73V755.256H1199.57V737.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 717.311V723.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 717.311V723.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1181.73 772.77V775.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1199.57 769.852V775.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 737.742H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1214.43 752.338H1220.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 737.742H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1160.92 752.338H1166.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1254" y="698.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1320.49 723.148H1284.81C1281.53 723.148 1278.86 725.762 1278.86 728.986V764.013C1278.86 767.237 1281.53 769.851 1284.81 769.851H1320.49C1323.77 769.851 1326.43 767.237 1326.43 764.013V728.986C1326.43 725.762 1323.77 723.148 1320.49 723.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 737.742H1293.73V755.256H1311.57V737.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 717.311V723.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 717.311V723.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1293.73 772.77V775.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1311.57 769.852V775.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 737.742H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1326.43 752.338H1332.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 737.742H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1272.92 752.338H1278.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="1366" y="698.5" width="96" height="96" rx="21" fill="#4D4D4D" fill-opacity="0.1" stroke="#343434" stroke-width="2"/>
<path d="M1432.49 723.148H1396.81C1393.53 723.148 1390.86 725.762 1390.86 728.986V764.013C1390.86 767.237 1393.53 769.851 1396.81 769.851H1432.49C1435.77 769.851 1438.43 767.237 1438.43 764.013V728.986C1438.43 725.762 1435.77 723.148 1432.49 723.148Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 737.742H1405.73V755.256H1423.57V737.742Z" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 717.311V723.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 717.311V723.148" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1405.73 772.77V775.688" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1423.57 769.852V775.689" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 737.742H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1438.43 752.338H1444.38" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 737.742H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1384.92 752.338H1390.87" stroke="#EDEDED" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M411.293 168V152.16H421.301V154.488H414.053V158.592H420.197V160.92H414.053V165.648H421.541V168H411.293ZM427.363 168V152.16H431.419C436.051 152.16 438.835 154.776 438.835 160.008C438.835 165.24 436.051 168 431.563 168H427.363ZM430.147 165.744H431.251C434.275 165.744 435.979 163.896 435.979 160.008C435.979 156.12 434.275 154.392 431.251 154.392H430.147V165.744ZM450.514 168.288C446.53 168.288 443.53 165.36 443.53 160.128C443.53 154.92 446.554 151.872 450.634 151.872C452.722 151.872 454.138 152.856 455.098 153.84L453.562 155.568C452.842 154.8 452.002 154.272 450.634 154.272C448.138 154.272 446.386 156.456 446.386 160.032C446.386 163.656 447.898 165.888 450.682 165.888C451.522 165.888 452.338 165.624 452.818 165.168V161.712H450.106V159.432H455.314V166.416C454.282 167.424 452.53 168.288 450.514 168.288ZM461.665 168V152.16H471.673V154.488H464.425V158.592H470.569V160.92H464.425V165.648H471.913V168H461.665ZM494.766 168V152.16H499.998C503.238 152.16 505.758 153.312 505.758 156.84C505.758 159.24 504.51 160.704 502.614 161.352L506.382 168H503.262L499.854 161.784H497.526V168H494.766ZM497.526 159.552H499.71C501.87 159.552 503.022 158.64 503.022 156.84C503.022 154.992 501.87 154.368 499.71 154.368H497.526V159.552ZM516.764 168.288C513.308 168.288 511.244 166.296 511.244 161.952V152.16H514.004V162.144C514.004 164.76 515.06 165.888 516.764 165.888C518.444 165.888 519.524 164.76 519.524 162.144V152.16H522.212V161.952C522.212 166.296 520.196 168.288 516.764 168.288ZM528.107 168V152.16H530.915L535.139 161.136L536.603 164.496H536.675C536.555 162.864 536.291 160.872 536.291 159.12V152.16H538.931V168H536.099L531.899 159L530.435 155.664H530.363C530.483 157.344 530.747 159.24 530.747 160.992V168H528.107ZM548.906 168V154.488H543.986V152.16H556.634V154.488H551.69V168H548.906ZM561.928 168V165.648H565.696V154.488H561.928V152.16H572.272V154.488H568.48V165.648H572.272V168H561.928ZM578.383 168V152.16H581.335L583.519 158.352L584.287 160.728H584.383L585.103 158.352L587.287 152.16H590.239V168H587.887V160.872C587.887 159.36 588.103 156.384 588.247 154.896H588.151L586.951 158.76L584.959 163.728H583.615L581.599 158.76L580.399 154.896H580.327C580.447 156.384 580.687 159.36 580.687 160.872V168H578.383ZM596.833 168V152.16H606.841V154.488H599.593V158.592H605.737V160.92H599.593V165.648H607.081V168H596.833Z" fill="#EDEDED"/>
<rect x="102.738" y="195" width="812" height="631" rx="32" fill="#FD880B" fill-opacity="0.05"/>
<rect x="102.738" y="195" width="812" height="631" rx="32" stroke="#FD880B" stroke-width="2" stroke-linecap="round"/>
<rect x="650.738" y="243" width="220" height="534" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="650.738" y="243" width="220" height="534" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="398.738" y="243" width="220" height="534" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="398.738" y="243" width="220" height="534" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="146.738" y="243" width="220" height="534" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="146.738" y="243" width="220" height="534" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<path d="M201.211 504V501.648H204.979V490.488H201.211V488.16H211.555V490.488H207.763V501.648H211.555V504H201.211ZM223.21 504.288C221.002 504.288 218.914 503.448 217.378 501.96L218.986 500.064C220.162 501.144 221.722 501.888 223.258 501.888C225.202 501.888 226.186 501.072 226.186 499.8C226.186 498.48 225.13 498.072 223.57 497.448L221.434 496.512C219.754 495.864 218.05 494.616 218.05 492.312C218.05 489.792 220.306 487.872 223.498 487.872C225.442 487.872 227.242 488.616 228.538 489.888L227.098 491.64C226.042 490.776 224.962 490.272 223.498 490.272C221.866 490.272 220.858 490.968 220.858 492.168C220.858 493.416 222.13 493.848 223.546 494.424L225.61 495.312C227.602 496.128 229.018 497.28 229.018 499.584C229.018 502.152 226.882 504.288 223.21 504.288ZM239.952 504.288C236.328 504.288 233.784 501.12 233.784 496.008C233.784 490.872 236.328 487.872 239.952 487.872C243.6 487.872 246.12 490.896 246.12 496.008C246.12 501.12 243.6 504.288 239.952 504.288ZM239.952 501.888C241.968 501.888 243.288 499.584 243.288 496.008C243.288 492.432 241.968 490.272 239.952 490.272C237.936 490.272 236.64 492.432 236.64 496.008C236.64 499.584 237.936 501.888 239.952 501.888ZM252.447 504V488.16H255.183V501.648H262.575V504H252.447ZM266.838 504L271.926 488.16H275.166L280.254 504H277.326L276.102 499.68H270.894L269.646 504H266.838ZM271.494 497.496H275.502L274.95 495.528C274.47 493.848 273.99 492.072 273.534 490.32H273.438C273.006 492.072 272.526 493.848 272.046 495.528L271.494 497.496ZM288.932 504V490.488H284.012V488.16H296.66V490.488H291.716V504H288.932ZM302.435 504V488.16H312.443V490.488H305.195V494.592H311.339V496.92H305.195V501.648H312.683V504H302.435Z" fill="#EDEDED"/>
<path d="M453.211 504V501.648H456.979V490.488H453.211V488.16H463.555V490.488H459.763V501.648H463.555V504H453.211ZM475.21 504.288C473.002 504.288 470.914 503.448 469.378 501.96L470.986 500.064C472.162 501.144 473.722 501.888 475.258 501.888C477.202 501.888 478.186 501.072 478.186 499.8C478.186 498.48 477.13 498.072 475.57 497.448L473.434 496.512C471.754 495.864 470.05 494.616 470.05 492.312C470.05 489.792 472.306 487.872 475.498 487.872C477.442 487.872 479.242 488.616 480.538 489.888L479.098 491.64C478.042 490.776 476.962 490.272 475.498 490.272C473.866 490.272 472.858 490.968 472.858 492.168C472.858 493.416 474.13 493.848 475.546 494.424L477.61 495.312C479.602 496.128 481.018 497.28 481.018 499.584C481.018 502.152 478.882 504.288 475.21 504.288ZM491.952 504.288C488.328 504.288 485.784 501.12 485.784 496.008C485.784 490.872 488.328 487.872 491.952 487.872C495.6 487.872 498.12 490.896 498.12 496.008C498.12 501.12 495.6 504.288 491.952 504.288ZM491.952 501.888C493.968 501.888 495.288 499.584 495.288 496.008C495.288 492.432 493.968 490.272 491.952 490.272C489.936 490.272 488.64 492.432 488.64 496.008C488.64 499.584 489.936 501.888 491.952 501.888ZM504.447 504V488.16H507.183V501.648H514.575V504H504.447ZM518.838 504L523.926 488.16H527.166L532.254 504H529.326L528.102 499.68H522.894L521.646 504H518.838ZM523.494 497.496H527.502L526.95 495.528C526.47 493.848 525.99 492.072 525.534 490.32H525.438C525.006 492.072 524.526 493.848 524.046 495.528L523.494 497.496ZM540.932 504V490.488H536.012V488.16H548.66V490.488H543.716V504H540.932ZM554.435 504V488.16H564.443V490.488H557.195V494.592H563.339V496.92H557.195V501.648H564.683V504H554.435Z" fill="#EDEDED"/>
<path d="M705.211 504V501.648H708.979V490.488H705.211V488.16H715.555V490.488H711.763V501.648H715.555V504H705.211ZM727.21 504.288C725.002 504.288 722.914 503.448 721.378 501.96L722.986 500.064C724.162 501.144 725.722 501.888 727.258 501.888C729.202 501.888 730.186 501.072 730.186 499.8C730.186 498.48 729.13 498.072 727.57 497.448L725.434 496.512C723.754 495.864 722.05 494.616 722.05 492.312C722.05 489.792 724.306 487.872 727.498 487.872C729.442 487.872 731.242 488.616 732.538 489.888L731.098 491.64C730.042 490.776 728.962 490.272 727.498 490.272C725.866 490.272 724.858 490.968 724.858 492.168C724.858 493.416 726.13 493.848 727.546 494.424L729.61 495.312C731.602 496.128 733.018 497.28 733.018 499.584C733.018 502.152 730.882 504.288 727.21 504.288ZM743.952 504.288C740.328 504.288 737.784 501.12 737.784 496.008C737.784 490.872 740.328 487.872 743.952 487.872C747.6 487.872 750.12 490.896 750.12 496.008C750.12 501.12 747.6 504.288 743.952 504.288ZM743.952 501.888C745.968 501.888 747.288 499.584 747.288 496.008C747.288 492.432 745.968 490.272 743.952 490.272C741.936 490.272 740.64 492.432 740.64 496.008C740.64 499.584 741.936 501.888 743.952 501.888ZM756.447 504V488.16H759.183V501.648H766.575V504H756.447ZM770.838 504L775.926 488.16H779.166L784.254 504H781.326L780.102 499.68H774.894L773.646 504H770.838ZM775.494 497.496H779.502L778.95 495.528C778.47 493.848 777.99 492.072 777.534 490.32H777.438C777.006 492.072 776.526 493.848 776.046 495.528L775.494 497.496ZM792.932 504V490.488H788.012V488.16H800.66V490.488H795.716V504H792.932ZM806.435 504V488.16H816.443V490.488H809.195V494.592H815.339V496.92H809.195V501.648H816.683V504H806.435Z" fill="#EDEDED"/>
<path d="M936.293 494.293C935.902 494.683 935.902 495.317 936.293 495.707L942.657 502.071C943.047 502.462 943.681 502.462 944.071 502.071C944.462 501.681 944.462 501.047 944.071 500.657L938.414 495L944.071 489.343C944.462 488.953 944.462 488.319 944.071 487.929C943.681 487.538 943.047 487.538 942.657 487.929L936.293 494.293ZM1078.45 495.707C1078.84 495.317 1078.84 494.683 1078.45 494.293L1072.08 487.929C1071.69 487.538 1071.06 487.538 1070.67 487.929C1070.28 488.319 1070.28 488.953 1070.67 489.343L1076.32 495L1070.67 500.657C1070.28 501.047 1070.28 501.681 1070.67 502.071C1071.06 502.462 1071.69 502.462 1072.08 502.071L1078.45 495.707ZM937 496L1077.74 496L1077.74 494L937 494L937 496Z" fill="#EDEDED"/>
</svg>

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

@@ -0,0 +1,76 @@
<svg width="1601" height="2089" viewBox="0 0 1601 2089" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_504_12427)">
<path d="M219.112 1194.45V1178.61H224.392C227.824 1178.61 230.344 1179.81 230.344 1183.48C230.344 1186.98 227.776 1188.59 224.392 1188.59H221.872V1194.45H219.112ZM221.872 1186.38H224.152C226.504 1186.38 227.608 1185.42 227.608 1183.48C227.608 1181.49 226.456 1180.82 224.152 1180.82H221.872V1186.38ZM240.991 1194.74C237.367 1194.74 234.823 1191.57 234.823 1186.46C234.823 1181.32 237.367 1178.32 240.991 1178.32C244.639 1178.32 247.159 1181.34 247.159 1186.46C247.159 1191.57 244.639 1194.74 240.991 1194.74ZM240.991 1192.34C243.007 1192.34 244.327 1190.03 244.327 1186.46C244.327 1182.88 243.007 1180.72 240.991 1180.72C238.975 1180.72 237.679 1182.88 237.679 1186.46C237.679 1190.03 238.975 1192.34 240.991 1192.34ZM257.829 1194.74C255.621 1194.74 253.533 1193.9 251.997 1192.41L253.605 1190.51C254.781 1191.59 256.341 1192.34 257.877 1192.34C259.821 1192.34 260.805 1191.52 260.805 1190.25C260.805 1188.93 259.749 1188.52 258.189 1187.9L256.053 1186.96C254.373 1186.31 252.669 1185.06 252.669 1182.76C252.669 1180.24 254.925 1178.32 258.117 1178.32C260.061 1178.32 261.861 1179.06 263.157 1180.34L261.717 1182.09C260.661 1181.22 259.581 1180.72 258.117 1180.72C256.485 1180.72 255.477 1181.42 255.477 1182.62C255.477 1183.86 256.749 1184.3 258.165 1184.87L260.229 1185.76C262.221 1186.58 263.637 1187.73 263.637 1190.03C263.637 1192.6 261.501 1194.74 257.829 1194.74ZM273.18 1194.45V1180.94H268.26V1178.61H280.908V1180.94H275.964V1194.45H273.18ZM292.322 1194.74C288.338 1194.74 285.338 1191.81 285.338 1186.58C285.338 1181.37 288.362 1178.32 292.442 1178.32C294.53 1178.32 295.946 1179.3 296.906 1180.29L295.37 1182.02C294.65 1181.25 293.81 1180.72 292.442 1180.72C289.946 1180.72 288.194 1182.9 288.194 1186.48C288.194 1190.1 289.706 1192.34 292.49 1192.34C293.33 1192.34 294.146 1192.07 294.626 1191.62V1188.16H291.914V1185.88H297.122V1192.86C296.09 1193.87 294.338 1194.74 292.322 1194.74ZM302.993 1194.45V1178.61H308.225C311.465 1178.61 313.985 1179.76 313.985 1183.29C313.985 1185.69 312.737 1187.15 310.841 1187.8L314.609 1194.45H311.489L308.081 1188.23H305.753V1194.45H302.993ZM305.753 1186H307.937C310.097 1186 311.249 1185.09 311.249 1183.29C311.249 1181.44 310.097 1180.82 307.937 1180.82H305.753V1186ZM320.264 1194.45V1178.61H330.272V1180.94H323.024V1185.04H329.168V1187.37H323.024V1192.1H330.512V1194.45H320.264ZM341.782 1194.74C339.574 1194.74 337.486 1193.9 335.95 1192.41L337.558 1190.51C338.734 1191.59 340.294 1192.34 341.83 1192.34C343.774 1192.34 344.758 1191.52 344.758 1190.25C344.758 1188.93 343.702 1188.52 342.142 1187.9L340.006 1186.96C338.326 1186.31 336.622 1185.06 336.622 1182.76C336.622 1180.24 338.878 1178.32 342.07 1178.32C344.014 1178.32 345.814 1179.06 347.11 1180.34L345.67 1182.09C344.614 1181.22 343.534 1180.72 342.07 1180.72C340.438 1180.72 339.43 1181.42 339.43 1182.62C339.43 1183.86 340.702 1184.3 342.118 1184.87L344.182 1185.76C346.174 1186.58 347.59 1187.73 347.59 1190.03C347.59 1192.6 345.454 1194.74 341.782 1194.74ZM373.924 1194.45V1180.94H369.004V1178.61H381.652V1180.94H376.708V1194.45H373.924ZM385.41 1194.45L390.498 1178.61H393.738L398.826 1194.45H395.898L394.674 1190.13H389.466L388.218 1194.45H385.41ZM390.066 1187.94H394.074L393.522 1185.98C393.042 1184.3 392.562 1182.52 392.106 1180.77H392.01C391.578 1182.52 391.098 1184.3 390.618 1185.98L390.066 1187.94ZM403.953 1194.45V1178.61H408.561C411.777 1178.61 414.129 1179.59 414.129 1182.5C414.129 1183.98 413.241 1185.45 411.393 1185.95V1186.05C413.673 1186.43 414.921 1187.63 414.921 1189.79C414.921 1192.96 412.401 1194.45 408.969 1194.45H403.953ZM406.713 1185.18H408.297C410.505 1185.18 411.417 1184.32 411.417 1182.83C411.417 1181.37 410.409 1180.77 408.369 1180.77H406.713V1185.18ZM406.713 1192.29H408.681C410.985 1192.29 412.209 1191.42 412.209 1189.62C412.209 1187.92 411.033 1187.18 408.681 1187.18H406.713V1192.29ZM421.392 1194.45V1178.61H424.128V1192.1H431.52V1194.45H421.392ZM437.798 1194.45V1178.61H447.806V1180.94H440.558V1185.04H446.702V1187.37H440.558V1192.1H448.046V1194.45H437.798Z" fill="#525252"/>
<rect x="217" y="1221.45" width="1142" height="345" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="217" y="1221.45" width="1142" height="345" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round"/>
<rect x="829" y="1812.45" width="346" height="102" rx="16" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="829" y="1812.45" width="346" height="102" rx="16" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round"/>
<path d="M219.112 256.225V240.385H224.392C227.824 240.385 230.344 241.585 230.344 245.257C230.344 248.761 227.776 250.369 224.392 250.369H221.872V256.225H219.112ZM221.872 248.161H224.152C226.504 248.161 227.608 247.201 227.608 245.257C227.608 243.265 226.456 242.593 224.152 242.593H221.872V248.161ZM240.991 256.513C237.367 256.513 234.823 253.345 234.823 248.233C234.823 243.097 237.367 240.097 240.991 240.097C244.639 240.097 247.159 243.121 247.159 248.233C247.159 253.345 244.639 256.513 240.991 256.513ZM240.991 254.113C243.007 254.113 244.327 251.809 244.327 248.233C244.327 244.657 243.007 242.497 240.991 242.497C238.975 242.497 237.679 244.657 237.679 248.233C237.679 251.809 238.975 254.113 240.991 254.113ZM257.829 256.513C255.621 256.513 253.533 255.673 251.997 254.185L253.605 252.289C254.781 253.369 256.341 254.113 257.877 254.113C259.821 254.113 260.805 253.297 260.805 252.025C260.805 250.705 259.749 250.297 258.189 249.673L256.053 248.737C254.373 248.089 252.669 246.841 252.669 244.537C252.669 242.017 254.925 240.097 258.117 240.097C260.061 240.097 261.861 240.841 263.157 242.113L261.717 243.865C260.661 243.001 259.581 242.497 258.117 242.497C256.485 242.497 255.477 243.193 255.477 244.393C255.477 245.641 256.749 246.073 258.165 246.649L260.229 247.537C262.221 248.353 263.637 249.505 263.637 251.809C263.637 254.377 261.501 256.513 257.829 256.513ZM273.18 256.225V242.713H268.26V240.385H280.908V242.713H275.964V256.225H273.18ZM292.322 256.513C288.338 256.513 285.338 253.585 285.338 248.353C285.338 243.145 288.362 240.097 292.442 240.097C294.53 240.097 295.946 241.081 296.906 242.065L295.37 243.793C294.65 243.025 293.81 242.497 292.442 242.497C289.946 242.497 288.194 244.681 288.194 248.257C288.194 251.881 289.706 254.113 292.49 254.113C293.33 254.113 294.146 253.849 294.626 253.393V249.937H291.914V247.657H297.122V254.641C296.09 255.649 294.338 256.513 292.322 256.513ZM302.993 256.225V240.385H308.225C311.465 240.385 313.985 241.537 313.985 245.065C313.985 247.465 312.737 248.929 310.841 249.577L314.609 256.225H311.489L308.081 250.009H305.753V256.225H302.993ZM305.753 247.777H307.937C310.097 247.777 311.249 246.865 311.249 245.065C311.249 243.217 310.097 242.593 307.937 242.593H305.753V247.777ZM320.264 256.225V240.385H330.272V242.713H323.024V246.817H329.168V249.145H323.024V253.873H330.512V256.225H320.264ZM341.782 256.513C339.574 256.513 337.486 255.673 335.95 254.185L337.558 252.289C338.734 253.369 340.294 254.113 341.83 254.113C343.774 254.113 344.758 253.297 344.758 252.025C344.758 250.705 343.702 250.297 342.142 249.673L340.006 248.737C338.326 248.089 336.622 246.841 336.622 244.537C336.622 242.017 338.878 240.097 342.07 240.097C344.014 240.097 345.814 240.841 347.11 242.113L345.67 243.865C344.614 243.001 343.534 242.497 342.07 242.497C340.438 242.497 339.43 243.193 339.43 244.393C339.43 245.641 340.702 246.073 342.118 246.649L344.182 247.537C346.174 248.353 347.59 249.505 347.59 251.809C347.59 254.377 345.454 256.513 341.782 256.513ZM373.924 256.225V242.713H369.004V240.385H381.652V242.713H376.708V256.225H373.924ZM385.41 256.225L390.498 240.385H393.738L398.826 256.225H395.898L394.674 251.905H389.466L388.218 256.225H385.41ZM390.066 249.721H394.074L393.522 247.753C393.042 246.073 392.562 244.297 392.106 242.545H392.01C391.578 244.297 391.098 246.073 390.618 247.753L390.066 249.721ZM403.953 256.225V240.385H408.561C411.777 240.385 414.129 241.369 414.129 244.273C414.129 245.761 413.241 247.225 411.393 247.729V247.825C413.673 248.209 414.921 249.409 414.921 251.569C414.921 254.737 412.401 256.225 408.969 256.225H403.953ZM406.713 246.961H408.297C410.505 246.961 411.417 246.097 411.417 244.609C411.417 243.145 410.409 242.545 408.369 242.545H406.713V246.961ZM406.713 254.065H408.681C410.985 254.065 412.209 253.201 412.209 251.401C412.209 249.697 411.033 248.953 408.681 248.953H406.713V254.065ZM421.392 256.225V240.385H424.128V253.873H431.52V256.225H421.392ZM437.798 256.225V240.385H447.806V242.713H440.558V246.817H446.702V249.145H440.558V253.873H448.046V256.225H437.798Z" fill="#525252"/>
<rect x="217" y="283.225" width="1142" height="356" rx="32" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="217" y="283.225" width="1142" height="356" rx="32" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round"/>
<rect x="249.738" y="360.225" width="710" height="64" rx="16" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="249.738" y="360.225" width="710" height="64" rx="16" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round"/>
<rect x="249.738" y="1298.45" width="710" height="64" rx="16" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="249.738" y="1298.45" width="710" height="64" rx="16" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round"/>
<rect x="1027" y="360.225" width="300" height="64" rx="16" fill="#20AC6D" fill-opacity="0.15"/>
<rect x="1027" y="360.225" width="300" height="64" rx="16" stroke="#20AC6D" stroke-width="2" stroke-linecap="round"/>
<rect x="1027" y="1298.45" width="300" height="64" rx="16" fill="#20AC6D" fill-opacity="0.15"/>
<rect x="1027" y="1298.45" width="300" height="64" rx="16" stroke="#20AC6D" stroke-width="2" stroke-linecap="round"/>
<rect x="1027" y="443.225" width="300" height="64" rx="16" fill="#20AC6D" fill-opacity="0.15"/>
<rect x="1027" y="443.225" width="300" height="64" rx="16" stroke="#20AC6D" stroke-width="2" stroke-linecap="round"/>
<rect x="1027" y="1381.45" width="300" height="64" rx="16" fill="#20AC6D" fill-opacity="0.15"/>
<rect x="1027" y="1381.45" width="300" height="64" rx="16" stroke="#20AC6D" stroke-width="2" stroke-linecap="round"/>
<rect x="1027" y="1463.45" width="300" height="64" rx="16" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="1084" y="1665.45" width="300" height="64" rx="16" fill="#20AC6D" fill-opacity="0.15"/>
<rect x="1084" y="1665.45" width="300" height="64" rx="16" stroke="#20AC6D" stroke-width="2" stroke-linecap="round"/>
<rect x="250" y="443.225" width="710" height="64" rx="16" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="250" y="443.225" width="710" height="64" rx="16" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round"/>
<rect x="250" y="1381.45" width="710" height="64" rx="16" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="250" y="1381.45" width="710" height="64" rx="16" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round"/>
<rect x="250" y="531.777" width="710" height="64" rx="16" stroke="#C7C7C7" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="456" y="724.225" width="710" height="65" rx="16" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="456" y="724.225" width="710" height="65" rx="16" stroke="#525252" stroke-width="2" stroke-linecap="round"/>
<rect x="250" y="1462.45" width="710" height="65" rx="16" fill="#C7C7C7" fill-opacity="0.1"/>
<rect x="250" y="1462.45" width="710" height="65" rx="16" stroke="#525252" stroke-width="2" stroke-linecap="round"/>
<path d="M555.381 570.5C555.781 570.119 556.414 570.135 556.795 570.536L562.996 577.058C563.376 577.459 563.36 578.092 562.96 578.472C562.56 578.853 561.927 578.837 561.546 578.436L556.034 572.638L550.236 578.15C549.836 578.531 549.203 578.515 548.822 578.115C548.442 577.714 548.458 577.082 548.858 576.701L555.381 570.5ZM593.218 700.848C579.782 684.016 553.466 634.648 555.07 571.199L557.069 571.25C555.479 634.169 581.6 683.087 594.782 699.601L593.218 700.848Z" fill="#8F8F8F"/>
<path d="M801.31 1862.1C801.712 1861.72 801.731 1861.09 801.352 1860.69L795.184 1854.14C794.806 1853.73 794.173 1853.71 793.771 1854.09C793.368 1854.47 793.349 1855.1 793.728 1855.51L799.211 1861.33L793.385 1866.82C792.983 1867.19 792.964 1867.83 793.342 1868.23C793.721 1868.63 794.354 1868.65 794.756 1868.27L801.31 1862.1ZM367.639 1542.01C370.803 1630.11 401.829 1707.92 470.767 1764.85C539.677 1821.76 646.344 1857.7 800.594 1862.37L800.655 1860.38C646.653 1855.71 540.483 1819.83 472.041 1763.31C403.627 1706.81 372.786 1629.59 369.638 1541.93L367.639 1542.01Z" fill="#FD880B"/>
<path d="M1254.08 1747.07C1253.69 1746.68 1253.05 1746.68 1252.66 1747.07L1246.3 1753.43C1245.91 1753.82 1245.91 1754.46 1246.3 1754.85C1246.69 1755.24 1247.32 1755.24 1247.71 1754.85L1253.37 1749.19L1259.03 1754.85C1259.42 1755.24 1260.05 1755.24 1260.44 1754.85C1260.83 1754.46 1260.83 1753.82 1260.44 1753.43L1254.08 1747.07ZM1203.93 1822.34C1231.13 1808.23 1254.37 1782.95 1254.37 1747.78L1252.37 1747.78C1252.37 1781.94 1229.81 1806.66 1203.01 1820.56L1203.93 1822.34Z" fill="#8F8F8F"/>
<path d="M1171.24 1505.99C1170.72 1506.2 1170.48 1506.78 1170.69 1507.3L1174.1 1515.63C1174.3 1516.14 1174.89 1516.38 1175.4 1516.17C1175.91 1515.96 1176.16 1515.38 1175.95 1514.87L1172.92 1507.46L1180.32 1504.44C1180.83 1504.23 1181.08 1503.64 1180.87 1503.13C1180.66 1502.62 1180.08 1502.38 1179.57 1502.59L1171.24 1505.99ZM1256.87 1647.39C1255.76 1629.28 1250.19 1600.53 1237.1 1573.03C1224.02 1545.52 1203.36 1519.15 1172 1506L1171.23 1507.84C1201.97 1520.74 1222.33 1546.64 1235.3 1573.89C1248.26 1601.13 1253.77 1629.63 1254.87 1647.51L1256.87 1647.39Z" fill="#8F8F8F"/>
<path d="M255.808 329.672V316.16H250.888V313.832H263.536V316.16H258.592V329.672H255.808ZM269.311 329.672V313.832H279.319V316.16H272.071V320.264H278.215V322.592H272.071V327.32H279.559V329.672H269.311ZM284.445 329.672L289.077 321.512L284.733 313.832H287.829L289.677 317.36C290.061 318.08 290.421 318.824 290.925 319.784H291.021C291.429 318.824 291.741 318.08 292.101 317.36L293.877 313.832H296.829L292.485 321.632L297.117 329.672H294.045L292.005 325.904C291.573 325.112 291.165 324.296 290.685 323.336H290.589C290.181 324.296 289.797 325.088 289.389 325.88L287.397 329.672H284.445ZM306.18 329.672V316.16H301.26V313.832H313.908V316.16H308.964V329.672H306.18ZM342.569 329.96C338.561 329.96 335.417 327.032 335.417 321.8C335.417 316.616 338.513 313.544 342.665 313.544C344.609 313.544 346.145 314.48 347.129 315.512L345.593 317.24C344.801 316.448 343.889 315.944 342.665 315.944C340.049 315.944 338.249 318.128 338.249 321.704C338.249 325.328 340.049 327.56 342.737 327.56C344.009 327.56 344.993 326.96 345.881 325.976L347.441 327.656C346.169 329.144 344.561 329.96 342.569 329.96ZM357.944 329.96C354.32 329.96 351.776 326.792 351.776 321.68C351.776 316.544 354.32 313.544 357.944 313.544C361.592 313.544 364.112 316.568 364.112 321.68C364.112 326.792 361.592 329.96 357.944 329.96ZM357.944 327.56C359.96 327.56 361.28 325.256 361.28 321.68C361.28 318.104 359.96 315.944 357.944 315.944C355.928 315.944 354.632 318.104 354.632 321.68C354.632 325.256 355.928 327.56 357.944 327.56ZM370.438 329.672V313.832H373.174V327.32H380.566V329.672H370.438ZM391.573 329.96C388.117 329.96 386.053 327.968 386.053 323.624V313.832H388.813V323.816C388.813 326.432 389.869 327.56 391.573 327.56C393.253 327.56 394.333 326.432 394.333 323.816V313.832H397.021V323.624C397.021 327.968 395.005 329.96 391.573 329.96ZM402.82 329.672V313.832H405.772L407.956 320.024L408.724 322.4H408.82L409.54 320.024L411.724 313.832H414.676V329.672H412.324V322.544C412.324 321.032 412.54 318.056 412.684 316.568H412.588L411.388 320.432L409.396 325.4H408.052L406.036 320.432L404.836 316.568H404.764C404.884 318.056 405.124 321.032 405.124 322.544V329.672H402.82ZM420.55 329.672V313.832H423.358L427.582 322.808L429.046 326.168H429.118C428.998 324.536 428.734 322.544 428.734 320.792V313.832H431.374V329.672H428.542L424.342 320.672L422.878 317.336H422.806C422.926 319.016 423.19 320.912 423.19 322.664V329.672H420.55Z" fill="#525252"/>
<path d="M255.808 1267.89V1254.38H250.888V1252.05H263.536V1254.38H258.592V1267.89H255.808ZM269.311 1267.89V1252.05H279.319V1254.38H272.071V1258.49H278.215V1260.81H272.071V1265.54H279.559V1267.89H269.311ZM284.445 1267.89L289.077 1259.73L284.733 1252.05H287.829L289.677 1255.58C290.061 1256.3 290.421 1257.05 290.925 1258.01H291.021C291.429 1257.05 291.741 1256.3 292.101 1255.58L293.877 1252.05H296.829L292.485 1259.85L297.117 1267.89H294.045L292.005 1264.13C291.573 1263.33 291.165 1262.52 290.685 1261.56H290.589C290.181 1262.52 289.797 1263.31 289.389 1264.1L287.397 1267.89H284.445ZM306.18 1267.89V1254.38H301.26V1252.05H313.908V1254.38H308.964V1267.89H306.18ZM342.569 1268.18C338.561 1268.18 335.417 1265.25 335.417 1260.02C335.417 1254.84 338.513 1251.77 342.665 1251.77C344.609 1251.77 346.145 1252.7 347.129 1253.73L345.593 1255.46C344.801 1254.67 343.889 1254.17 342.665 1254.17C340.049 1254.17 338.249 1256.35 338.249 1259.93C338.249 1263.55 340.049 1265.78 342.737 1265.78C344.009 1265.78 344.993 1265.18 345.881 1264.2L347.441 1265.88C346.169 1267.37 344.561 1268.18 342.569 1268.18ZM357.944 1268.18C354.32 1268.18 351.776 1265.01 351.776 1259.9C351.776 1254.77 354.32 1251.77 357.944 1251.77C361.592 1251.77 364.112 1254.79 364.112 1259.9C364.112 1265.01 361.592 1268.18 357.944 1268.18ZM357.944 1265.78C359.96 1265.78 361.28 1263.48 361.28 1259.9C361.28 1256.33 359.96 1254.17 357.944 1254.17C355.928 1254.17 354.632 1256.33 354.632 1259.9C354.632 1263.48 355.928 1265.78 357.944 1265.78ZM370.438 1267.89V1252.05H373.174V1265.54H380.566V1267.89H370.438ZM391.573 1268.18C388.117 1268.18 386.053 1266.19 386.053 1261.85V1252.05H388.813V1262.04C388.813 1264.65 389.869 1265.78 391.573 1265.78C393.253 1265.78 394.333 1264.65 394.333 1262.04V1252.05H397.021V1261.85C397.021 1266.19 395.005 1268.18 391.573 1268.18ZM402.82 1267.89V1252.05H405.772L407.956 1258.25L408.724 1260.62H408.82L409.54 1258.25L411.724 1252.05H414.676V1267.89H412.324V1260.77C412.324 1259.25 412.54 1256.28 412.684 1254.79H412.588L411.388 1258.65L409.396 1263.62H408.052L406.036 1258.65L404.836 1254.79H404.764C404.884 1256.28 405.124 1259.25 405.124 1260.77V1267.89H402.82ZM420.55 1267.89V1252.05H423.358L427.582 1261.03L429.046 1264.39H429.118C428.998 1262.76 428.734 1260.77 428.734 1259.01V1252.05H431.374V1267.89H428.542L424.342 1258.89L422.878 1255.56H422.806C422.926 1257.24 423.19 1259.13 423.19 1260.89V1267.89H420.55Z" fill="#525252"/>
<path d="M1032.57 329.672L1027.7 313.832H1030.62L1032.86 321.824C1033.36 323.624 1033.7 325.16 1034.22 326.984H1034.32C1034.85 325.16 1035.21 323.624 1035.71 321.824L1037.9 313.832H1040.7L1035.86 329.672H1032.57ZM1046.31 329.672V313.832H1056.32V316.16H1049.07V320.264H1055.21V322.592H1049.07V327.32H1056.56V329.672H1046.31ZM1069.2 329.96C1065.19 329.96 1062.05 327.032 1062.05 321.8C1062.05 316.616 1065.14 313.544 1069.29 313.544C1071.24 313.544 1072.77 314.48 1073.76 315.512L1072.22 317.24C1071.43 316.448 1070.52 315.944 1069.29 315.944C1066.68 315.944 1064.88 318.128 1064.88 321.704C1064.88 325.328 1066.68 327.56 1069.37 327.56C1070.64 327.56 1071.62 326.96 1072.51 325.976L1074.07 327.656C1072.8 329.144 1071.19 329.96 1069.2 329.96ZM1083.18 329.672V316.16H1078.26V313.832H1090.91V316.16H1085.96V329.672H1083.18ZM1101.36 329.96C1097.74 329.96 1095.19 326.792 1095.19 321.68C1095.19 316.544 1097.74 313.544 1101.36 313.544C1105.01 313.544 1107.53 316.568 1107.53 321.68C1107.53 326.792 1105.01 329.96 1101.36 329.96ZM1101.36 327.56C1103.38 327.56 1104.7 325.256 1104.7 321.68C1104.7 318.104 1103.38 315.944 1101.36 315.944C1099.35 315.944 1098.05 318.104 1098.05 321.68C1098.05 325.256 1099.35 327.56 1101.36 327.56ZM1112.99 329.672V313.832H1118.23C1121.47 313.832 1123.99 314.984 1123.99 318.512C1123.99 320.912 1122.74 322.376 1120.84 323.024L1124.61 329.672H1121.49L1118.08 323.456H1115.75V329.672H1112.99ZM1115.75 321.224H1117.94C1120.1 321.224 1121.25 320.312 1121.25 318.512C1121.25 316.664 1120.1 316.04 1117.94 316.04H1115.75V321.224ZM1153.15 329.96C1149.14 329.96 1146 327.032 1146 321.8C1146 316.616 1149.09 313.544 1153.25 313.544C1155.19 313.544 1156.73 314.48 1157.71 315.512L1156.17 317.24C1155.38 316.448 1154.47 315.944 1153.25 315.944C1150.63 315.944 1148.83 318.128 1148.83 321.704C1148.83 325.328 1150.63 327.56 1153.32 327.56C1154.59 327.56 1155.57 326.96 1156.46 325.976L1158.02 327.656C1156.75 329.144 1155.14 329.96 1153.15 329.96ZM1168.52 329.96C1164.9 329.96 1162.36 326.792 1162.36 321.68C1162.36 316.544 1164.9 313.544 1168.52 313.544C1172.17 313.544 1174.69 316.568 1174.69 321.68C1174.69 326.792 1172.17 329.96 1168.52 329.96ZM1168.52 327.56C1170.54 327.56 1171.86 325.256 1171.86 321.68C1171.86 318.104 1170.54 315.944 1168.52 315.944C1166.51 315.944 1165.21 318.104 1165.21 321.68C1165.21 325.256 1166.51 327.56 1168.52 327.56ZM1181.02 329.672V313.832H1183.76V327.32H1191.15V329.672H1181.02ZM1202.15 329.96C1198.7 329.96 1196.63 327.968 1196.63 323.624V313.832H1199.39V323.816C1199.39 326.432 1200.45 327.56 1202.15 327.56C1203.83 327.56 1204.91 326.432 1204.91 323.816V313.832H1207.6V323.624C1207.6 327.968 1205.59 329.96 1202.15 329.96ZM1213.4 329.672V313.832H1216.35L1218.54 320.024L1219.3 322.4H1219.4L1220.12 320.024L1222.3 313.832H1225.26V329.672H1222.9V322.544C1222.9 321.032 1223.12 318.056 1223.26 316.568H1223.17L1221.97 320.432L1219.98 325.4H1218.63L1216.62 320.432L1215.42 316.568H1215.34C1215.46 318.056 1215.7 321.032 1215.7 322.544V329.672H1213.4ZM1231.13 329.672V313.832H1233.94L1238.16 322.808L1239.63 326.168H1239.7C1239.58 324.536 1239.32 322.544 1239.32 320.792V313.832H1241.96V329.672H1239.12L1234.92 320.672L1233.46 317.336H1233.39C1233.51 319.016 1233.77 320.912 1233.77 322.664V329.672H1231.13Z" fill="#525252"/>
<path d="M1032.57 1267.89L1027.7 1252.05H1030.62L1032.86 1260.05C1033.36 1261.85 1033.7 1263.38 1034.22 1265.21H1034.32C1034.85 1263.38 1035.21 1261.85 1035.71 1260.05L1037.9 1252.05H1040.7L1035.86 1267.89H1032.57ZM1046.31 1267.89V1252.05H1056.32V1254.38H1049.07V1258.49H1055.21V1260.81H1049.07V1265.54H1056.56V1267.89H1046.31ZM1069.2 1268.18C1065.19 1268.18 1062.05 1265.25 1062.05 1260.02C1062.05 1254.84 1065.14 1251.77 1069.29 1251.77C1071.24 1251.77 1072.77 1252.7 1073.76 1253.73L1072.22 1255.46C1071.43 1254.67 1070.52 1254.17 1069.29 1254.17C1066.68 1254.17 1064.88 1256.35 1064.88 1259.93C1064.88 1263.55 1066.68 1265.78 1069.37 1265.78C1070.64 1265.78 1071.62 1265.18 1072.51 1264.2L1074.07 1265.88C1072.8 1267.37 1071.19 1268.18 1069.2 1268.18ZM1083.18 1267.89V1254.38H1078.26V1252.05H1090.91V1254.38H1085.96V1267.89H1083.18ZM1101.36 1268.18C1097.74 1268.18 1095.19 1265.01 1095.19 1259.9C1095.19 1254.77 1097.74 1251.77 1101.36 1251.77C1105.01 1251.77 1107.53 1254.79 1107.53 1259.9C1107.53 1265.01 1105.01 1268.18 1101.36 1268.18ZM1101.36 1265.78C1103.38 1265.78 1104.7 1263.48 1104.7 1259.9C1104.7 1256.33 1103.38 1254.17 1101.36 1254.17C1099.35 1254.17 1098.05 1256.33 1098.05 1259.9C1098.05 1263.48 1099.35 1265.78 1101.36 1265.78ZM1112.99 1267.89V1252.05H1118.23C1121.47 1252.05 1123.99 1253.21 1123.99 1256.73C1123.99 1259.13 1122.74 1260.6 1120.84 1261.25L1124.61 1267.89H1121.49L1118.08 1261.68H1115.75V1267.89H1112.99ZM1115.75 1259.45H1117.94C1120.1 1259.45 1121.25 1258.53 1121.25 1256.73C1121.25 1254.89 1120.1 1254.26 1117.94 1254.26H1115.75V1259.45ZM1153.15 1268.18C1149.14 1268.18 1146 1265.25 1146 1260.02C1146 1254.84 1149.09 1251.77 1153.25 1251.77C1155.19 1251.77 1156.73 1252.7 1157.71 1253.73L1156.17 1255.46C1155.38 1254.67 1154.47 1254.17 1153.25 1254.17C1150.63 1254.17 1148.83 1256.35 1148.83 1259.93C1148.83 1263.55 1150.63 1265.78 1153.32 1265.78C1154.59 1265.78 1155.57 1265.18 1156.46 1264.2L1158.02 1265.88C1156.75 1267.37 1155.14 1268.18 1153.15 1268.18ZM1168.52 1268.18C1164.9 1268.18 1162.36 1265.01 1162.36 1259.9C1162.36 1254.77 1164.9 1251.77 1168.52 1251.77C1172.17 1251.77 1174.69 1254.79 1174.69 1259.9C1174.69 1265.01 1172.17 1268.18 1168.52 1268.18ZM1168.52 1265.78C1170.54 1265.78 1171.86 1263.48 1171.86 1259.9C1171.86 1256.33 1170.54 1254.17 1168.52 1254.17C1166.51 1254.17 1165.21 1256.33 1165.21 1259.9C1165.21 1263.48 1166.51 1265.78 1168.52 1265.78ZM1181.02 1267.89V1252.05H1183.76V1265.54H1191.15V1267.89H1181.02ZM1202.15 1268.18C1198.7 1268.18 1196.63 1266.19 1196.63 1261.85V1252.05H1199.39V1262.04C1199.39 1264.65 1200.45 1265.78 1202.15 1265.78C1203.83 1265.78 1204.91 1264.65 1204.91 1262.04V1252.05H1207.6V1261.85C1207.6 1266.19 1205.59 1268.18 1202.15 1268.18ZM1213.4 1267.89V1252.05H1216.35L1218.54 1258.25L1219.3 1260.62H1219.4L1220.12 1258.25L1222.3 1252.05H1225.26V1267.89H1222.9V1260.77C1222.9 1259.25 1223.12 1256.28 1223.26 1254.79H1223.17L1221.97 1258.65L1219.98 1263.62H1218.63L1216.62 1258.65L1215.42 1254.79H1215.34C1215.46 1256.28 1215.7 1259.25 1215.7 1260.77V1267.89H1213.4ZM1231.13 1267.89V1252.05H1233.94L1238.16 1261.03L1239.63 1264.39H1239.7C1239.58 1262.76 1239.32 1260.77 1239.32 1259.01V1252.05H1241.96V1267.89H1239.12L1234.92 1258.89L1233.46 1255.56H1233.39C1233.51 1257.24 1233.77 1259.13 1233.77 1260.89V1267.89H1231.13Z" fill="#525252"/>
<path d="M986 320.672L986 612.225" stroke="#C7C7C7" stroke-width="2"/>
<path d="M986 1258.89L986 1550.45" stroke="#C7C7C7" stroke-width="2"/>
<rect x="250.988" y="1698.7" width="466.5" height="101.5" rx="50.75" fill="#FFEDD5"/>
<rect x="250.988" y="1698.7" width="466.5" height="101.5" rx="50.75" stroke="#FD880B" stroke-width="2.5"/>
<rect x="304.738" y="1749.45" width="76" height="37.8066" rx="11" fill="#8F8F8F"/>
<path d="M361.913 1740.45V1724.61H365.969C370.601 1724.61 373.385 1727.22 373.385 1732.46C373.385 1737.69 370.601 1740.45 366.113 1740.45H361.913ZM364.697 1738.19H365.801C368.825 1738.19 370.529 1736.34 370.529 1732.46C370.529 1728.57 368.825 1726.84 365.801 1726.84H364.697V1738.19ZM376.208 1740.45L381.296 1724.61H384.536L389.624 1740.45H386.696L385.472 1736.13H380.264L379.016 1740.45H376.208ZM380.864 1733.94H384.872L384.32 1731.98C383.84 1730.3 383.36 1728.52 382.904 1726.77H382.808C382.376 1728.52 381.896 1730.3 381.416 1731.98L380.864 1733.94ZM397.103 1740.45V1726.94H392.183V1724.61H404.831V1726.94H399.887V1740.45H397.103ZM407.389 1740.45L412.477 1724.61H415.717L420.805 1740.45H417.877L416.653 1736.13H411.445L410.197 1740.45H407.389ZM412.045 1733.94H416.053L415.501 1731.98C415.021 1730.3 414.541 1728.52 414.085 1726.77H413.989C413.557 1728.52 413.077 1730.3 412.597 1731.98L412.045 1733.94ZM424.732 1740.45V1724.61H429.34C432.556 1724.61 434.908 1725.59 434.908 1728.5C434.908 1729.98 434.02 1731.45 432.172 1731.95V1732.05C434.452 1732.43 435.7 1733.63 435.7 1735.79C435.7 1738.96 433.18 1740.45 429.748 1740.45H424.732ZM427.492 1731.18H429.076C431.284 1731.18 432.196 1730.32 432.196 1728.83C432.196 1727.37 431.188 1726.77 429.148 1726.77H427.492V1731.18ZM427.492 1738.29H429.46C431.764 1738.29 432.988 1737.42 432.988 1735.62C432.988 1733.92 431.812 1733.18 429.46 1733.18H427.492V1738.29ZM438.57 1740.45L443.658 1724.61H446.898L451.986 1740.45H449.058L447.834 1736.13H442.626L441.378 1740.45H438.57ZM443.226 1733.94H447.234L446.682 1731.98C446.202 1730.3 445.722 1728.52 445.266 1726.77H445.17C444.738 1728.52 444.258 1730.3 443.778 1731.98L443.226 1733.94ZM460.905 1740.74C458.697 1740.74 456.609 1739.9 455.073 1738.41L456.681 1736.51C457.857 1737.59 459.417 1738.34 460.953 1738.34C462.897 1738.34 463.881 1737.52 463.881 1736.25C463.881 1734.93 462.825 1734.52 461.265 1733.9L459.129 1732.96C457.449 1732.31 455.745 1731.06 455.745 1728.76C455.745 1726.24 458.001 1724.32 461.193 1724.32C463.137 1724.32 464.937 1725.06 466.233 1726.34L464.793 1728.09C463.737 1727.22 462.657 1726.72 461.193 1726.72C459.561 1726.72 458.553 1727.42 458.553 1728.62C458.553 1729.86 459.825 1730.3 461.241 1730.87L463.305 1731.76C465.297 1732.58 466.713 1733.73 466.713 1736.03C466.713 1738.6 464.577 1740.74 460.905 1740.74ZM471.768 1740.45V1724.61H481.776V1726.94H474.528V1731.04H480.672V1733.37H474.528V1738.1H482.016V1740.45H471.768ZM502.853 1740.45L500.597 1724.58H503.405L504.293 1733.8C504.341 1735.14 504.437 1736.46 504.509 1737.78H504.581C504.869 1736.46 505.205 1735.12 505.493 1733.8L506.861 1728.66H508.637L509.981 1733.8C510.245 1735.1 510.605 1736.44 510.893 1737.78H510.989L511.205 1733.8L512.045 1724.58H514.661L512.525 1740.45H509.573L508.181 1734.59C507.989 1733.63 507.797 1732.6 507.677 1731.66H507.605C507.461 1732.6 507.293 1733.63 507.077 1734.59L505.757 1740.45H502.853ZM518.54 1740.45V1724.61H528.548V1726.94H521.3V1731.04H527.444V1733.37H521.3V1738.1H528.788V1740.45H518.54ZM533.866 1740.45V1724.61H538.474C541.69 1724.61 544.042 1725.59 544.042 1728.5C544.042 1729.98 543.154 1731.45 541.306 1731.95V1732.05C543.586 1732.43 544.834 1733.63 544.834 1735.79C544.834 1738.96 542.314 1740.45 538.882 1740.45H533.866ZM536.626 1731.18H538.21C540.418 1731.18 541.33 1730.32 541.33 1728.83C541.33 1727.37 540.322 1726.77 538.282 1726.77H536.626V1731.18ZM536.626 1738.29H538.594C540.898 1738.29 542.122 1737.42 542.122 1735.62C542.122 1733.92 540.946 1733.18 538.594 1733.18H536.626V1738.29ZM548.929 1740.45V1724.61H551.689V1730.99H557.113V1724.61H559.897V1740.45H557.113V1733.39H551.689V1740.45H548.929ZM569.991 1740.74C566.367 1740.74 563.823 1737.57 563.823 1732.46C563.823 1727.32 566.367 1724.32 569.991 1724.32C573.639 1724.32 576.159 1727.34 576.159 1732.46C576.159 1737.57 573.639 1740.74 569.991 1740.74ZM569.991 1738.34C572.007 1738.34 573.327 1736.03 573.327 1732.46C573.327 1728.88 572.007 1726.72 569.991 1726.72C567.975 1726.72 566.679 1728.88 566.679 1732.46C566.679 1736.03 567.975 1738.34 569.991 1738.34ZM585.582 1740.74C581.958 1740.74 579.414 1737.57 579.414 1732.46C579.414 1727.32 581.958 1724.32 585.582 1724.32C589.23 1724.32 591.75 1727.34 591.75 1732.46C591.75 1737.57 589.23 1740.74 585.582 1740.74ZM585.582 1738.34C587.598 1738.34 588.918 1736.03 588.918 1732.46C588.918 1728.88 587.598 1726.72 585.582 1726.72C583.566 1726.72 582.27 1728.88 582.27 1732.46C582.27 1736.03 583.566 1738.34 585.582 1738.34ZM595.965 1740.45V1724.61H598.773V1731.83H598.845L604.461 1724.61H607.533L602.709 1730.78L608.061 1740.45H604.989L601.053 1732.96L598.773 1735.79V1740.45H595.965Z" fill="#FD880B"/>
<path d="M315.032 1776.45V1760.61H320.312C323.744 1760.61 326.264 1761.81 326.264 1765.48C326.264 1768.98 323.696 1770.59 320.312 1770.59H317.792V1776.45H315.032ZM317.792 1768.38H320.072C322.424 1768.38 323.528 1767.42 323.528 1765.48C323.528 1763.49 322.376 1762.82 320.072 1762.82H317.792V1768.38ZM335.71 1776.74C332.086 1776.74 329.542 1773.57 329.542 1768.46C329.542 1763.32 332.086 1760.32 335.71 1760.32C339.358 1760.32 341.878 1763.34 341.878 1768.46C341.878 1773.57 339.358 1776.74 335.71 1776.74ZM335.71 1774.34C337.726 1774.34 339.046 1772.03 339.046 1768.46C339.046 1764.88 337.726 1762.72 335.71 1762.72C333.694 1762.72 332.398 1764.88 332.398 1768.46C332.398 1772.03 333.694 1774.34 335.71 1774.34ZM351.349 1776.74C349.141 1776.74 347.053 1775.9 345.517 1774.41L347.125 1772.51C348.301 1773.59 349.861 1774.34 351.397 1774.34C353.341 1774.34 354.325 1773.52 354.325 1772.25C354.325 1770.93 353.269 1770.52 351.709 1769.9L349.573 1768.96C347.893 1768.31 346.189 1767.06 346.189 1764.76C346.189 1762.24 348.445 1760.32 351.637 1760.32C353.581 1760.32 355.381 1761.06 356.677 1762.34L355.237 1764.09C354.181 1763.22 353.101 1762.72 351.637 1762.72C350.005 1762.72 348.997 1763.42 348.997 1764.62C348.997 1765.86 350.269 1766.3 351.685 1766.87L353.749 1767.76C355.741 1768.58 357.157 1769.73 357.157 1772.03C357.157 1774.6 355.021 1776.74 351.349 1776.74ZM365.499 1776.45V1762.94H360.579V1760.61H373.227V1762.94H368.283V1776.45H365.499Z" fill="#F8F9FA"/>
<path d="M391.761 1777.34L402.033 1759.41H404.409L394.113 1777.34H391.761ZM415.079 1776.74C411.071 1776.74 407.927 1773.81 407.927 1768.58C407.927 1763.39 411.023 1760.32 415.175 1760.32C417.119 1760.32 418.655 1761.26 419.639 1762.29L418.103 1764.02C417.311 1763.22 416.399 1762.72 415.175 1762.72C412.559 1762.72 410.759 1764.9 410.759 1768.48C410.759 1772.1 412.559 1774.34 415.247 1774.34C416.519 1774.34 417.503 1773.74 418.391 1772.75L419.951 1774.43C418.679 1775.92 417.071 1776.74 415.079 1776.74ZM429.254 1776.74C425.63 1776.74 423.086 1773.57 423.086 1768.46C423.086 1763.32 425.63 1760.32 429.254 1760.32C432.902 1760.32 435.422 1763.34 435.422 1768.46C435.422 1773.57 432.902 1776.74 429.254 1776.74ZM429.254 1774.34C431.27 1774.34 432.59 1772.03 432.59 1768.46C432.59 1764.88 431.27 1762.72 429.254 1762.72C427.238 1762.72 425.942 1764.88 425.942 1768.46C425.942 1772.03 427.238 1774.34 429.254 1774.34ZM439.445 1776.45V1760.61H442.253L446.477 1769.58L447.941 1772.94H448.013C447.893 1771.31 447.629 1769.32 447.629 1767.57V1760.61H450.269V1776.45H447.437L443.237 1767.45L441.773 1764.11H441.701C441.821 1765.79 442.085 1767.69 442.085 1769.44V1776.45H439.445ZM458.803 1776.45L453.931 1760.61H456.859L459.091 1768.6C459.595 1770.4 459.931 1771.94 460.459 1773.76H460.555C461.083 1771.94 461.443 1770.4 461.947 1768.6L464.131 1760.61H466.939L462.091 1776.45H458.803ZM471.346 1776.45V1760.61H481.354V1762.94H474.106V1767.04H480.25V1769.37H474.106V1774.1H481.594V1776.45H471.346ZM486.456 1776.45V1760.61H491.688C494.928 1760.61 497.448 1761.76 497.448 1765.29C497.448 1767.69 496.2 1769.15 494.304 1769.8L498.072 1776.45H494.952L491.544 1770.23H489.216V1776.45H486.456ZM489.216 1768H491.4C493.56 1768 494.712 1767.09 494.712 1765.29C494.712 1763.44 493.56 1762.82 491.4 1762.82H489.216V1768ZM505.815 1776.45V1762.94H500.895V1760.61H513.543V1762.94H508.599V1776.45H505.815ZM517.47 1769.51V1767.52H528.15V1769.51H517.47ZM533.708 1776.45V1760.61H543.716V1762.94H536.468V1767.04H542.612V1769.37H536.468V1774.1H543.956V1776.45H533.708ZM548.483 1776.45V1760.61H551.435L553.619 1766.8L554.387 1769.18H554.483L555.203 1766.8L557.387 1760.61H560.339V1776.45H557.987V1769.32C557.987 1767.81 558.203 1764.83 558.347 1763.34H558.251L557.051 1767.21L555.059 1772.18H553.715L551.699 1767.21L550.499 1763.34H550.427C550.547 1764.83 550.787 1767.81 550.787 1769.32V1776.45H548.483ZM565.469 1776.45V1760.61H570.077C573.293 1760.61 575.645 1761.59 575.645 1764.5C575.645 1765.98 574.757 1767.45 572.909 1767.95V1768.05C575.189 1768.43 576.437 1769.63 576.437 1771.79C576.437 1774.96 573.917 1776.45 570.485 1776.45H565.469ZM568.229 1767.18H569.813C572.021 1767.18 572.933 1766.32 572.933 1764.83C572.933 1763.37 571.925 1762.77 569.885 1762.77H568.229V1767.18ZM568.229 1774.29H570.197C572.501 1774.29 573.725 1773.42 573.725 1771.62C573.725 1769.92 572.549 1769.18 570.197 1769.18H568.229V1774.29ZM581.324 1776.45V1760.61H591.332V1762.94H584.084V1767.04H590.228V1769.37H584.084V1774.1H591.572V1776.45H581.324ZM596.195 1776.45V1760.61H600.251C604.883 1760.61 607.667 1763.22 607.667 1768.46C607.667 1773.69 604.883 1776.45 600.395 1776.45H596.195ZM598.979 1774.19H600.083C603.107 1774.19 604.811 1772.34 604.811 1768.46C604.811 1764.57 603.107 1762.84 600.083 1762.84H598.979V1774.19ZM611.785 1776.45V1760.61H615.841C620.473 1760.61 623.257 1763.22 623.257 1768.46C623.257 1773.69 620.473 1776.45 615.985 1776.45H611.785ZM614.569 1774.19H615.673C618.697 1774.19 620.401 1772.34 620.401 1768.46C620.401 1764.57 618.697 1762.84 615.673 1762.84H614.569V1774.19ZM627.616 1776.45V1774.1H631.384V1762.94H627.616V1760.61H637.96V1762.94H634.168V1774.1H637.96V1776.45H627.616ZM642.966 1776.45V1760.61H645.774L649.998 1769.58L651.462 1772.94H651.534C651.414 1771.31 651.15 1769.32 651.15 1767.57V1760.61H653.79V1776.45H650.958L646.758 1767.45L645.294 1764.11H645.222C645.342 1765.79 645.606 1767.69 645.606 1769.44V1776.45H642.966ZM664.917 1776.74C660.933 1776.74 657.933 1773.81 657.933 1768.58C657.933 1763.37 660.957 1760.32 665.037 1760.32C667.125 1760.32 668.541 1761.3 669.501 1762.29L667.965 1764.02C667.245 1763.25 666.405 1762.72 665.037 1762.72C662.541 1762.72 660.789 1764.9 660.789 1768.48C660.789 1772.1 662.301 1774.34 665.085 1774.34C665.925 1774.34 666.741 1774.07 667.221 1773.62V1770.16H664.509V1767.88H669.717V1774.86C668.685 1775.87 666.933 1776.74 664.917 1776.74ZM679.596 1776.74C677.388 1776.74 675.3 1775.9 673.764 1774.41L675.372 1772.51C676.548 1773.59 678.108 1774.34 679.644 1774.34C681.588 1774.34 682.572 1773.52 682.572 1772.25C682.572 1770.93 681.516 1770.52 679.956 1769.9L677.82 1768.96C676.14 1768.31 674.436 1767.06 674.436 1764.76C674.436 1762.24 676.692 1760.32 679.884 1760.32C681.828 1760.32 683.628 1761.06 684.924 1762.34L683.484 1764.09C682.428 1763.22 681.348 1762.72 679.884 1762.72C678.252 1762.72 677.244 1763.42 677.244 1764.62C677.244 1765.86 678.516 1766.3 679.932 1766.87L681.996 1767.76C683.988 1768.58 685.404 1769.73 685.404 1772.03C685.404 1774.6 683.268 1776.74 Line truncated
<rect x="217.5" y="1001.95" width="83" height="83" rx="41.5" fill="#1C1C1C" stroke="#B2B2B2"/>
<rect x="217.5" y="85.5" width="83" height="83" rx="41.5" fill="#1C1C1C" stroke="#B2B2B2"/>
<path d="M836.385 1956.45V1940.61H846.393V1942.94H839.145V1947.04H845.289V1949.37H839.145V1954.1H846.633V1956.45H836.385ZM852.455 1956.45V1940.61H856.511C861.143 1940.61 863.927 1943.22 863.927 1948.46C863.927 1953.69 861.143 1956.45 856.655 1956.45H852.455ZM855.239 1954.19H856.343C859.367 1954.19 861.071 1952.34 861.071 1948.46C861.071 1944.57 859.367 1942.84 856.343 1942.84H855.239V1954.19ZM875.606 1956.74C871.622 1956.74 868.622 1953.81 868.622 1948.58C868.622 1943.37 871.646 1940.32 875.726 1940.32C877.814 1940.32 879.23 1941.3 880.19 1942.29L878.654 1944.02C877.934 1943.25 877.094 1942.72 875.726 1942.72C873.23 1942.72 871.478 1944.9 871.478 1948.48C871.478 1952.1 872.99 1954.34 875.774 1954.34C876.614 1954.34 877.43 1954.07 877.91 1953.62V1950.16H875.198V1947.88H880.406V1954.86C879.374 1955.87 877.622 1956.74 875.606 1956.74ZM886.756 1956.45V1940.61H896.764V1942.94H889.516V1947.04H895.66V1949.37H889.516V1954.1H897.004V1956.45H886.756ZM920.746 1956.45V1940.61H930.706V1942.94H923.506V1947.47H929.626V1949.8H923.506V1956.45H920.746ZM941.856 1956.74C938.4 1956.74 936.336 1954.74 936.336 1950.4V1940.61H939.096V1950.59C939.096 1953.21 940.152 1954.34 941.856 1954.34C943.536 1954.34 944.616 1953.21 944.616 1950.59V1940.61H947.304V1950.4C947.304 1954.74 945.288 1956.74 941.856 1956.74ZM953.199 1956.45V1940.61H956.007L960.231 1949.58L961.695 1952.94H961.767C961.647 1951.31 961.383 1949.32 961.383 1947.57V1940.61H964.023V1956.45H961.191L956.991 1947.45L955.527 1944.11H955.455C955.575 1945.79 955.839 1947.69 955.839 1949.44V1956.45H953.199ZM976.805 1956.74C972.797 1956.74 969.653 1953.81 969.653 1948.58C969.653 1943.39 972.749 1940.32 976.901 1940.32C978.845 1940.32 980.381 1941.26 981.365 1942.29L979.829 1944.02C979.037 1943.22 978.125 1942.72 976.901 1942.72C974.285 1942.72 972.485 1944.9 972.485 1948.48C972.485 1952.1 974.285 1954.34 976.973 1954.34C978.245 1954.34 979.229 1953.74 980.117 1952.75L981.677 1954.43C980.405 1955.92 978.797 1956.74 976.805 1956.74ZM990.788 1956.45V1942.94H985.868V1940.61H998.516V1942.94H993.572V1956.45H990.788ZM1003.81 1956.45V1954.1H1007.58V1942.94H1003.81V1940.61H1014.15V1942.94H1010.36V1954.1H1014.15V1956.45H1003.81ZM1025.76 1956.74C1022.14 1956.74 1019.59 1953.57 1019.59 1948.46C1019.59 1943.32 1022.14 1940.32 1025.76 1940.32C1029.41 1940.32 1031.93 1943.34 1031.93 1948.46C1031.93 1953.57 1029.41 1956.74 1025.76 1956.74ZM1025.76 1954.34C1027.78 1954.34 1029.1 1952.03 1029.1 1948.46C1029.1 1944.88 1027.78 1942.72 1025.76 1942.72C1023.75 1942.72 1022.45 1944.88 1022.45 1948.46C1022.45 1952.03 1023.75 1954.34 1025.76 1954.34ZM1037.15 1956.45V1940.61H1039.96L1044.18 1949.58L1045.65 1952.94H1045.72C1045.6 1951.31 1045.34 1949.32 1045.34 1947.57V1940.61H1047.98V1956.45H1045.14L1040.94 1947.45L1039.48 1944.11H1039.41C1039.53 1945.79 1039.79 1947.69 1039.79 1949.44V1956.45H1037.15Z" fill="#525252"/>
<path d="M834.753 1987.34L845.025 1969.41H847.401L837.105 1987.34H834.753ZM859.271 1986.74C855.263 1986.74 852.119 1983.81 852.119 1978.58C852.119 1973.39 855.215 1970.32 859.367 1970.32C861.311 1970.32 862.847 1971.26 863.831 1972.29L862.295 1974.02C861.503 1973.22 860.591 1972.72 859.367 1972.72C856.751 1972.72 854.951 1974.9 854.951 1978.48C854.951 1982.1 856.751 1984.34 859.439 1984.34C860.711 1984.34 861.695 1983.74 862.583 1982.75L864.143 1984.43C862.871 1985.92 861.263 1986.74 859.271 1986.74ZM874.646 1986.74C871.022 1986.74 868.478 1983.57 868.478 1978.46C868.478 1973.32 871.022 1970.32 874.646 1970.32C878.294 1970.32 880.814 1973.34 880.814 1978.46C880.814 1983.57 878.294 1986.74 874.646 1986.74ZM874.646 1984.34C876.662 1984.34 877.982 1982.03 877.982 1978.46C877.982 1974.88 876.662 1972.72 874.646 1972.72C872.63 1972.72 871.334 1974.88 871.334 1978.46C871.334 1982.03 872.63 1984.34 874.646 1984.34ZM886.036 1986.45V1970.61H888.844L893.068 1979.58L894.532 1982.94H894.604C894.484 1981.31 894.22 1979.32 894.22 1977.57V1970.61H896.86V1986.45H894.028L889.828 1977.45L888.364 1974.11H888.292C888.412 1975.79 888.676 1977.69 888.676 1979.44V1986.45H886.036ZM906.595 1986.45L901.723 1970.61H904.651L906.883 1978.6C907.387 1980.4 907.723 1981.94 908.251 1983.76H908.347C908.875 1981.94 909.235 1980.4 909.739 1978.6L911.923 1970.61H914.731L909.883 1986.45H906.595ZM920.338 1986.45V1970.61H930.346V1972.94H923.098V1977.04H929.242V1979.37H923.098V1984.1H930.586V1986.45H920.338ZM936.648 1986.45V1970.61H941.88C945.12 1970.61 947.64 1971.76 947.64 1975.29C947.64 1977.69 946.392 1979.15 944.496 1979.8L948.264 1986.45H945.144L941.736 1980.23H939.408V1986.45H936.648ZM939.408 1978H941.592C943.752 1978 944.904 1977.09 944.904 1975.29C944.904 1973.44 943.752 1972.82 941.592 1972.82H939.408V1978ZM957.207 1986.45V1972.94H952.287V1970.61H964.935V1972.94H959.991V1986.45H957.207ZM970.061 1979.51V1977.52H980.741V1979.51H970.061ZM987.5 1986.45V1970.61H997.508V1972.94H990.26V1977.04H996.404V1979.37H990.26V1984.1H997.748V1986.45H987.5ZM1003.47 1986.45V1970.61H1006.43L1008.61 1976.8L1009.38 1979.18H1009.47L1010.19 1976.8L1012.38 1970.61H1015.33V1986.45H1012.98V1979.32C1012.98 1977.81 1013.19 1974.83 1013.34 1973.34H1013.24L1012.04 1977.21L1010.05 1982.18H1008.71L1006.69 1977.21L1005.49 1973.34H1005.42C1005.54 1974.83 1005.78 1977.81 1005.78 1979.32V1986.45H1003.47ZM1021.66 1986.45V1970.61H1026.27C1029.49 1970.61 1031.84 1971.59 1031.84 1974.5C1031.84 1975.98 1030.95 1977.45 1029.1 1977.95V1978.05C1031.38 1978.43 1032.63 1979.63 1032.63 1981.79C1032.63 1984.96 1030.11 1986.45 1026.68 1986.45H1021.66ZM1024.42 1977.18H1026.01C1028.21 1977.18 1029.13 1976.32 1029.13 1974.83C1029.13 1973.37 1028.12 1972.77 1026.08 1972.77H1024.42V1977.18ZM1024.42 1984.29H1026.39C1028.69 1984.29 1029.92 1983.42 1029.92 1981.62C1029.92 1979.92 1028.74 1979.18 1026.39 1979.18H1024.42V1984.29ZM1038.72 1986.45V1970.61H1048.72V1972.94H1041.48V1977.04H1047.62V1979.37H1041.48V1984.1H1048.96V1986.45H1038.72ZM1054.79 1986.45V1970.61H1058.84C1063.47 1970.61 1066.26 1973.22 1066.26 1978.46C1066.26 1983.69 1063.47 1986.45 1058.99 1986.45H1054.79ZM1057.57 1984.19H1058.67C1061.7 1984.19 1063.4 1982.34 1063.4 1978.46C1063.4 1974.57 1061.7 1972.84 1058.67 1972.84H1057.57V1984.19ZM1071.58 1986.45V1970.61H1075.63C1080.27 1970.61 1083.05 1973.22 1083.05 1978.46C1083.05 1983.69 1080.27 1986.45 1075.78 1986.45H1071.58ZM1074.36 1984.19H1075.47C1078.49 1984.19 1080.19 1982.34 1080.19 1978.46C1080.19 1974.57 1078.49 1972.84 1075.47 1972.84H1074.36V1984.19ZM1088.61 1986.45V1984.1H1092.38V1972.94H1088.61V1970.61H1098.95V1972.94H1095.16V1984.1H1098.95V1986.45H1088.61ZM1105.16 1986.45V1970.61H1107.97L1112.19 1979.58L1113.65 1982.94H1113.73C1113.61 1981.31 1113.34 1979.32 1113.34 1977.57V1970.61H1115.98V1986.45H1113.15L1108.95 1977.45L1107.49 1974.11H1107.41C1107.53 1975.79 1107.8 1977.69 1107.8 1979.44V1986.45H1105.16ZM1128.31 1986.74C1124.32 1986.74 1121.32 1983.81 1121.32 1978.58C1121.32 1973.37 1124.35 1970.32 1128.43 1970.32C1130.52 1970.32 1131.93 1971.3 1132.89 1972.29L1131.36 1974.02C1130.64 1973.25 1129.8 1972.72 1128.43 1972.72C1125.93 1972.72 1124.18 1974.9 1124.18 1978.48C1124.18 1982.1 1125.69 1984.34 1128.48 1984.34C1129.32 1984.34 1130.13 1984.07 1130.61 1983.62V1980.16H1127.9V1977.88H1133.11V1984.86C1132.08 1985.87 1130.32 1986.74 1128.31 1986.74ZM1144.19 1986.74C1141.98 1986.74 1139.89 1985.9 1138.36 1984.41L1139.96 1982.51C1141.14 1983.59 1142.7 1984.34 1144.24 1984.34C1146.18 1984.34 1147.16 1983.52 1147.16 1982.25C1147.16 1980.93 1146.11 1980.52 1144.55 1979.9L1142.41 1978.96C1140.73 1978.31 1139.03 1977.06 1139.03 1974.76C1139.03 1972.24 1141.28 1970.32 1144.48 1970.32C1146.42 1970.32 1148.22 1971.06 1149.52 1972.34L1148.08 1974.09C1147.02 1973.22 1145.94 1972.72 1144.48 1972.72C1142.84 1972.72 1141.84 1973.42 1141.84 1974.62C1141.84 1975.86 1143.11 1976.3 1144.52 1976.87L1146.59 1977.76C1148.58 1978.58 1150 1979.73 1150 1982.03C1150 1984.6 1147.86 1986.74 1144.19 Line truncated
<rect x="484.238" y="614.777" width="157" height="56" rx="28" fill="#1C1C1C"/>
<rect x="485.488" y="616.027" width="154.5" height="53.5" rx="26.75" stroke="#C7C7C7" stroke-opacity="0.1" stroke-width="2.5"/>
<path d="M518.606 651.777V649.425H522.374V638.265H518.606V635.937H528.95V638.265H525.158V649.425H528.95V651.777H518.606ZM533.957 651.777V635.937H536.765L540.989 644.913L542.453 648.273H542.525C542.405 646.641 542.141 644.649 542.141 642.897V635.937H544.781V651.777H541.949L537.749 642.777L536.285 639.441H536.213C536.333 641.121 536.597 643.017 536.597 644.769V651.777H533.957ZM554.996 652.065C552.788 652.065 550.7 651.225 549.164 649.737L550.772 647.841C551.948 648.921 553.508 649.665 555.044 649.665C556.988 649.665 557.972 648.849 557.972 647.577C557.972 646.257 556.916 645.849 555.356 645.225L553.22 644.289C551.54 643.641 549.836 642.393 549.836 640.089C549.836 637.569 552.092 635.649 555.284 635.649C557.228 635.649 559.028 636.393 560.324 637.665L558.884 639.417C557.828 638.553 556.748 638.049 555.284 638.049C553.652 638.049 552.644 638.745 552.644 639.945C552.644 641.193 553.916 641.625 555.332 642.201L557.396 643.089C559.388 643.905 560.804 645.057 560.804 647.361C560.804 649.929 558.668 652.065 554.996 652.065ZM565.858 651.777V635.937H575.866V638.265H568.618V642.369H574.762V644.697H568.618V649.425H576.106V651.777H565.858ZM580.969 651.777V635.937H586.201C589.441 635.937 591.961 637.089 591.961 640.617C591.961 643.017 590.713 644.481 588.817 645.129L592.585 651.777H589.465L586.057 645.561H583.729V651.777H580.969ZM583.729 643.329H585.913C588.073 643.329 589.225 642.417 589.225 640.617C589.225 638.769 588.073 638.145 585.913 638.145H583.729V643.329ZM600.328 651.777V638.265H595.408V635.937H608.056V638.265H603.112V651.777H600.328Z" fill="#FCFCFC"/>
<path d="M331.931 136V120.16H334.739L338.963 129.136L340.427 132.496H340.499C340.379 130.864 340.115 128.872 340.115 127.12V120.16H342.755V136H339.923L335.723 127L334.259 123.664H334.187C334.307 125.344 334.571 127.24 334.571 128.992V136H331.931ZM349.441 136V120.16H359.449V122.488H352.201V126.592H358.345V128.92H352.201V133.648H359.689V136H349.441ZM366.136 136L363.88 120.136H366.688L367.576 129.352C367.624 130.696 367.72 132.016 367.792 133.336H367.864C368.152 132.016 368.488 130.672 368.776 129.352L370.144 124.216H371.92L373.264 129.352C373.528 130.648 373.888 131.992 374.176 133.336H374.272L374.488 129.352L375.328 120.136H377.944L375.808 136H372.856L371.464 130.144C371.272 129.184 371.08 128.152 370.96 127.216H370.888C370.744 128.152 370.576 129.184 370.36 130.144L369.04 136H366.136ZM399.333 136V120.16H404.565C407.805 120.16 410.325 121.312 410.325 124.84C410.325 127.24 409.077 128.704 407.181 129.352L410.949 136H407.829L404.421 129.784H402.093V136H399.333ZM402.093 127.552H404.277C406.437 127.552 407.589 126.64 407.589 124.84C407.589 122.992 406.437 122.368 404.277 122.368H402.093V127.552ZM421.284 136.288C417.66 136.288 415.116 133.12 415.116 128.008C415.116 122.872 417.66 119.872 421.284 119.872C424.932 119.872 427.452 122.896 427.452 128.008C427.452 133.12 424.932 136.288 421.284 136.288ZM421.284 133.888C423.3 133.888 424.62 131.584 424.62 128.008C424.62 124.432 423.3 122.272 421.284 122.272C419.268 122.272 417.972 124.432 417.972 128.008C417.972 131.584 419.268 133.888 421.284 133.888ZM433.299 136L431.043 120.136H433.851L434.739 129.352C434.787 130.696 434.883 132.016 434.955 133.336H435.027C435.315 132.016 435.651 130.672 435.939 129.352L437.307 124.216H439.083L440.427 129.352C440.691 130.648 441.051 131.992 441.339 133.336H441.435L441.651 129.352L442.491 120.136H445.107L442.971 136H440.019L438.627 130.144C438.435 129.184 438.243 128.152 438.123 127.216H438.051C437.907 128.152 437.739 129.184 437.523 130.144L436.203 136H433.299ZM466.496 136V133.648H470.264V122.488H466.496V120.16H476.84V122.488H473.048V133.648H476.84V136H466.496ZM483.046 136V120.16H485.854L490.078 129.136L491.542 132.496H491.614C491.494 130.864 491.23 128.872 491.23 127.12V120.16H493.87V136H491.038L486.838 127L485.374 123.664H485.302C485.422 125.344 485.686 127.24 485.686 128.992V136H483.046ZM505.285 136.288C503.077 136.288 500.989 135.448 499.453 133.96L501.061 132.064C502.237 133.144 503.797 133.888 505.333 133.888C507.277 133.888 508.261 133.072 508.261 131.8C508.261 130.48 507.205 130.072 505.645 129.448L503.509 128.512C501.829 127.864 500.125 126.616 500.125 124.312C500.125 121.792 502.381 119.872 505.573 119.872C507.517 119.872 509.317 120.616 510.613 121.888L509.173 123.64C508.117 122.776 507.037 122.272 505.573 122.272C503.941 122.272 502.933 122.968 502.933 124.168C502.933 125.416 504.205 125.848 505.621 126.424L507.685 127.312C509.677 128.128 511.093 129.28 511.093 131.584C511.093 134.152 508.957 136.288 505.285 136.288ZM517.348 136V120.16H527.356V122.488H520.108V126.592H526.252V128.92H520.108V133.648H527.596V136H517.348ZM533.658 136V120.16H538.89C542.13 120.16 544.65 121.312 544.65 124.84C544.65 127.24 543.402 128.704 541.506 129.352L545.274 136H542.154L538.746 129.784H536.418V136H533.658ZM536.418 127.552H538.602C540.762 127.552 541.914 126.64 541.914 124.84C541.914 122.992 540.762 122.368 538.602 122.368H536.418V127.552ZM554.217 136V122.488H549.297V120.16H561.945V122.488H557.001V136H554.217ZM567.72 136V120.16H577.728V122.488H570.48V126.592H576.624V128.92H570.48V133.648H577.968V136H567.72ZM583.79 136V120.16H587.846C592.478 120.16 595.262 122.776 595.262 128.008C595.262 133.24 592.478 136 587.99 136H583.79ZM586.574 133.744H587.678C590.702 133.744 592.406 131.896 592.406 128.008C592.406 124.12 590.702 122.392 587.678 122.392H586.574V133.744ZM617.611 136V133.648H621.379V122.488H617.611V120.16H627.955V122.488H624.163V133.648H627.955V136H617.611ZM634.162 136V120.16H636.97L641.194 129.136L642.658 132.496H642.73C642.61 130.864 642.346 128.872 642.346 127.12V120.16H644.986V136H642.154L637.954 127L636.49 123.664H636.418C636.538 125.344 636.802 127.24 636.802 128.992V136H634.162ZM654.961 136V122.488H650.041V120.16H662.689V122.488H657.745V136H654.961ZM673.143 136.288C669.519 136.288 666.975 133.12 666.975 128.008C666.975 122.872 669.519 119.872 673.143 119.872C676.791 119.872 679.311 122.896 679.311 128.008C679.311 133.12 676.791 136.288 673.143 136.288ZM673.143 133.888C675.159 133.888 676.479 131.584 676.479 128.008C676.479 124.432 675.159 122.272 673.143 122.272C671.127 122.272 669.831 124.432 669.831 128.008C669.831 131.584 671.127 133.888 673.143 133.888ZM705.333 136V122.488H700.413V120.16H713.061V122.488H708.117V136H705.333ZM716.819 136L721.907 120.16H725.147L730.235 136H727.307L726.083 131.68H720.875L719.627 136H716.819ZM721.475 129.496H725.483L724.931 127.528C724.451 125.848 723.971 124.072 723.515 122.32H723.419C722.987 124.072 722.507 125.848 722.027 127.528L721.475 129.496ZM735.362 136V120.16H739.97C743.186 120.16 745.538 121Line truncated
<path d="M340.8 1037.45V1021.61H343.608L347.832 1030.58L349.296 1033.94H349.368C349.248 1032.31 348.984 1030.32 348.984 1028.57V1021.61H351.624V1037.45H348.792L344.592 1028.45L343.128 1025.11H343.056C343.176 1026.79 343.44 1028.69 343.44 1030.44V1037.45H340.8ZM358.311 1037.45V1021.61H368.319V1023.94H361.071V1028.04H367.215V1030.37H361.071V1035.1H368.559V1037.45H358.311ZM375.005 1037.45L372.749 1021.58H375.557L376.445 1030.8C376.493 1032.14 376.589 1033.46 376.661 1034.78H376.733C377.021 1033.46 377.357 1032.12 377.645 1030.8L379.013 1025.66H380.789L382.133 1030.8C382.397 1032.1 382.757 1033.44 383.045 1034.78H383.141L383.357 1030.8L384.197 1021.58H386.813L384.677 1037.45H381.725L380.333 1031.59C380.141 1030.63 379.949 1029.6 379.829 1028.66H379.757C379.613 1029.6 379.445 1030.63 379.229 1031.59L377.909 1037.45H375.005ZM408.202 1037.45V1021.61H413.434C416.674 1021.61 419.194 1022.76 419.194 1026.29C419.194 1028.69 417.946 1030.15 416.05 1030.8L419.818 1037.45H416.698L413.29 1031.23H410.962V1037.45H408.202ZM410.962 1029H413.146C415.306 1029 416.458 1028.09 416.458 1026.29C416.458 1024.44 415.306 1023.82 413.146 1023.82H410.962V1029ZM430.153 1037.74C426.529 1037.74 423.985 1034.57 423.985 1029.46C423.985 1024.32 426.529 1021.32 430.153 1021.32C433.801 1021.32 436.321 1024.34 436.321 1029.46C436.321 1034.57 433.801 1037.74 430.153 1037.74ZM430.153 1035.34C432.169 1035.34 433.489 1033.03 433.489 1029.46C433.489 1025.88 432.169 1023.72 430.153 1023.72C428.137 1023.72 426.841 1025.88 426.841 1029.46C426.841 1033.03 428.137 1035.34 430.153 1035.34ZM442.168 1037.45L439.912 1021.58H442.72L443.608 1030.8C443.656 1032.14 443.752 1033.46 443.824 1034.78H443.896C444.184 1033.46 444.52 1032.12 444.808 1030.8L446.176 1025.66H447.952L449.296 1030.8C449.56 1032.1 449.92 1033.44 450.208 1034.78H450.304L450.52 1030.8L451.36 1021.58H453.976L451.84 1037.45H448.888L447.496 1031.59C447.304 1030.63 447.112 1029.6 446.992 1028.66H446.92C446.776 1029.6 446.608 1030.63 446.392 1031.59L445.072 1037.45H442.168ZM479.133 1037.45V1023.94H474.213V1021.61H486.861V1023.94H481.917V1037.45H479.133ZM492.156 1037.45V1021.61H497.388C500.628 1021.61 503.148 1022.76 503.148 1026.29C503.148 1028.69 501.9 1030.15 500.004 1030.8L503.772 1037.45H500.652L497.244 1031.23H494.916V1037.45H492.156ZM494.916 1029H497.1C499.26 1029 500.412 1028.09 500.412 1026.29C500.412 1024.44 499.26 1023.82 497.1 1023.82H494.916V1029ZM508.946 1037.45V1035.1H512.714V1023.94H508.946V1021.61H519.29V1023.94H515.498V1035.1H519.29V1037.45H508.946ZM531.857 1037.74C527.873 1037.74 524.873 1034.81 524.873 1029.58C524.873 1024.37 527.897 1021.32 531.977 1021.32C534.065 1021.32 535.481 1022.3 536.441 1023.29L534.905 1025.02C534.185 1024.25 533.345 1023.72 531.977 1023.72C529.481 1023.72 527.729 1025.9 527.729 1029.48C527.729 1033.1 529.241 1035.34 532.025 1035.34C532.865 1035.34 533.681 1035.07 534.161 1034.62V1031.16H531.449V1028.88H536.657V1035.86C535.625 1036.87 533.873 1037.74 531.857 1037.74ZM548.648 1037.74C544.664 1037.74 541.664 1034.81 541.664 1029.58C541.664 1024.37 544.688 1021.32 548.768 1021.32C550.856 1021.32 552.272 1022.3 553.232 1023.29L551.696 1025.02C550.976 1024.25 550.136 1023.72 548.768 1023.72C546.272 1023.72 544.52 1025.9 544.52 1029.48C544.52 1033.1 546.032 1035.34 548.816 1035.34C549.656 1035.34 550.472 1035.07 550.952 1034.62V1031.16H548.24V1028.88H553.448V1035.86C552.416 1036.87 550.664 1037.74 548.648 1037.74ZM559.798 1037.45V1021.61H569.806V1023.94H562.558V1028.04H568.702V1030.37H562.558V1035.1H570.046V1037.45H559.798ZM576.109 1037.45V1021.61H581.341C584.581 1021.61 587.101 1022.76 587.101 1026.29C587.101 1028.69 585.853 1030.15 583.957 1030.8L587.725 1037.45H584.605L581.197 1031.23H578.869V1037.45H576.109ZM578.869 1029H581.053C583.213 1029 584.365 1028.09 584.365 1026.29C584.365 1024.44 583.213 1023.82 581.053 1023.82H578.869V1029ZM598.107 1037.74C595.899 1037.74 593.811 1036.9 592.275 1035.41L593.883 1033.51C595.059 1034.59 596.619 1035.34 598.155 1035.34C600.099 1035.34 601.083 1034.52 601.083 1033.25C601.083 1031.93 600.027 1031.52 598.467 1030.9L596.331 1029.96C594.651 1029.31 592.947 1028.06 592.947 1025.76C592.947 1023.24 595.203 1021.32 598.395 1021.32C600.339 1021.32 602.139 1022.06 603.435 1023.34L601.995 1025.09C600.939 1024.22 599.859 1023.72 598.395 1023.72C596.763 1023.72 595.755 1024.42 595.755 1025.62C595.755 1026.86 597.027 1027.3 598.443 1027.87L600.507 1028.76C602.499 1029.58 603.915 1030.73 603.915 1033.03C603.915 1035.6 601.779 1037.74 598.107 1037.74ZM626.961 1037.45V1021.61H636.969V1023.94H629.721V1028.04H635.865V1030.37H629.721V1035.1H637.209V1037.45H626.961ZM643.031 1037.45V1021.61H647.087C651.719 1021.61 654.503 1024.22 654.503 1029.46C654.503 1034.69 651.719 1037.45 647.231 1037.45H643.031ZM645.815 1035.19H646.919C649.943 1035.19 651.647 1033.34 651.647 1029.46C651.647 1025.57 649.943 1023.84 646.919 1023.84H645.815V1035.19ZM666.182 1037.74C662.198 1037.74 659.198 1034.81 659.198 1029.58C659.198 1024.37 662.222 1021.32 666.302 1Line truncated
<path d="M267.166 1055.45H251.102V1051.06L258.142 1045.21C259.358 1044.16 260.233 1043.26 260.766 1042.49C261.3 1041.72 261.566 1040.91 261.566 1040.06V1039.74C261.566 1038.8 261.289 1038.09 260.734 1037.62C260.18 1037.13 259.433 1036.89 258.494 1036.89C257.428 1036.89 256.606 1037.2 256.03 1037.82C255.454 1038.43 255.049 1039.17 254.814 1040.02L250.622 1038.42C250.878 1037.66 251.23 1036.93 251.678 1036.25C252.126 1035.54 252.692 1034.94 253.374 1034.42C254.078 1033.91 254.889 1033.51 255.806 1033.21C256.724 1032.89 257.78 1032.73 258.974 1032.73C260.19 1032.73 261.278 1032.9 262.238 1033.24C263.198 1033.58 264.009 1034.05 264.67 1034.65C265.332 1035.24 265.833 1035.96 266.174 1036.79C266.516 1037.6 266.686 1038.49 266.686 1039.45C266.686 1040.39 266.526 1041.25 266.206 1042.04C265.908 1042.81 265.481 1043.53 264.926 1044.22C264.393 1044.9 263.753 1045.56 263.006 1046.2C262.281 1046.84 261.502 1047.48 260.67 1048.12L256.414 1051.42H267.166V1055.45Z" fill="#F8F9FA"/>
<path d="M252.414 139V135.128H258.43V120.152H258.142L253.598 126.104L250.526 123.704L255.87 116.664H263.23V135.128H267.966V139H252.414Z" fill="#F8F9FA"/>
<rect x="1174.87" y="1550.45" width="157" height="56" rx="28" fill="#1C1C1C"/>
<rect x="1176.12" y="1551.7" width="154.5" height="53.5" rx="26.75" stroke="#C7C7C7" stroke-opacity="0.1" stroke-width="2.5"/>
<path d="M1209.24 1587.45V1585.1H1213.01V1573.94H1209.24V1571.61H1219.58V1573.94H1215.79V1585.1H1219.58V1587.45H1209.24ZM1224.59 1587.45V1571.61H1227.4L1231.62 1580.58L1233.08 1583.94H1233.16C1233.04 1582.31 1232.77 1580.32 1232.77 1578.57V1571.61H1235.41V1587.45H1232.58L1228.38 1578.45L1226.92 1575.11H1226.84C1226.96 1576.79 1227.23 1578.69 1227.23 1580.44V1587.45H1224.59ZM1245.63 1587.74C1243.42 1587.74 1241.33 1586.9 1239.79 1585.41L1241.4 1583.51C1242.58 1584.59 1244.14 1585.34 1245.67 1585.34C1247.62 1585.34 1248.6 1584.52 1248.6 1583.25C1248.6 1581.93 1247.55 1581.52 1245.99 1580.9L1243.85 1579.96C1242.17 1579.31 1240.47 1578.06 1240.47 1575.76C1240.47 1573.24 1242.72 1571.32 1245.91 1571.32C1247.86 1571.32 1249.66 1572.06 1250.95 1573.34L1249.51 1575.09C1248.46 1574.22 1247.38 1573.72 1245.91 1573.72C1244.28 1573.72 1243.27 1574.42 1243.27 1575.62C1243.27 1576.86 1244.55 1577.3 1245.96 1577.87L1248.03 1578.76C1250.02 1579.58 1251.43 1580.73 1251.43 1583.03C1251.43 1585.6 1249.3 1587.74 1245.63 1587.74ZM1256.49 1587.45V1571.61H1266.5V1573.94H1259.25V1578.04H1265.39V1580.37H1259.25V1585.1H1266.74V1587.45H1256.49ZM1271.6 1587.45V1571.61H1276.83C1280.07 1571.61 1282.59 1572.76 1282.59 1576.29C1282.59 1578.69 1281.34 1580.15 1279.45 1580.8L1283.22 1587.45H1280.1L1276.69 1581.23H1274.36V1587.45H1271.6ZM1274.36 1579H1276.54C1278.7 1579 1279.86 1578.09 1279.86 1576.29C1279.86 1574.44 1278.7 1573.82 1276.54 1573.82H1274.36V1579ZM1290.96 1587.45V1573.94H1286.04V1571.61H1298.69V1573.94H1293.74V1587.45H1290.96Z" fill="#FCFCFC"/>
<rect x="927" y="1835.45" width="314" height="56" rx="28" fill="#1C1C1C"/>
<rect x="928.25" y="1836.7" width="311.5" height="53.5" rx="26.75" stroke="#C7C7C7" stroke-opacity="0.1" stroke-width="2.5"/>
<path d="M968.069 1872.74C964.061 1872.74 960.917 1869.81 960.917 1864.58C960.917 1859.39 964.013 1856.32 968.165 1856.32C970.109 1856.32 971.645 1857.26 972.629 1858.29L971.093 1860.02C970.301 1859.22 969.389 1858.72 968.165 1858.72C965.549 1858.72 963.749 1860.9 963.749 1864.48C963.749 1868.1 965.549 1870.34 968.237 1870.34C969.509 1870.34 970.493 1869.74 971.381 1868.75L972.941 1870.43C971.669 1871.92 970.061 1872.74 968.069 1872.74ZM977.084 1872.45V1856.61H982.316C985.556 1856.61 988.076 1857.76 988.076 1861.29C988.076 1863.69 986.828 1865.15 984.932 1865.8L988.7 1872.45H985.58L982.172 1866.23H979.844V1872.45H977.084ZM979.844 1864H982.028C984.188 1864 985.34 1863.09 985.34 1861.29C985.34 1859.44 984.188 1858.82 982.028 1858.82H979.844V1864ZM993.154 1872.45V1856.61H1003.16V1858.94H995.914V1863.04H1002.06V1865.37H995.914V1870.1H1003.4V1872.45H993.154ZM1006.73 1872.45L1011.82 1856.61H1015.06L1020.14 1872.45H1017.22L1015.99 1868.13H1010.78L1009.54 1872.45H1006.73ZM1011.38 1865.94H1015.39L1014.84 1863.98C1014.36 1862.3 1013.88 1860.52 1013.42 1858.77H1013.33C1012.9 1860.52 1012.42 1862.3 1011.94 1863.98L1011.38 1865.94ZM1027.62 1872.45V1858.94H1022.7V1856.61H1035.35V1858.94H1030.41V1872.45H1027.62ZM1039.93 1872.45V1856.61H1049.93V1858.94H1042.69V1863.04H1048.83V1865.37H1042.69V1870.1H1050.17V1872.45H1039.93ZM1071.11 1872.45V1856.61H1081.12V1858.94H1073.87V1863.04H1080.01V1865.37H1073.87V1870.1H1081.36V1872.45H1071.11ZM1085.88 1872.45V1856.61H1088.83L1091.02 1862.8L1091.79 1865.18H1091.88L1092.6 1862.8L1094.79 1856.61H1097.74V1872.45H1095.39V1865.32C1095.39 1863.81 1095.6 1860.83 1095.75 1859.34H1095.65L1094.45 1863.21L1092.46 1868.18H1091.11L1089.1 1863.21L1087.9 1859.34H1087.83C1087.95 1860.83 1088.19 1863.81 1088.19 1865.32V1872.45H1085.88ZM1102.87 1872.45V1856.61H1107.48C1110.69 1856.61 1113.04 1857.59 1113.04 1860.5C1113.04 1861.98 1112.16 1863.45 1110.31 1863.95V1864.05C1112.59 1864.43 1113.84 1865.63 1113.84 1867.79C1113.84 1870.96 1111.32 1872.45 1107.88 1872.45H1102.87ZM1105.63 1863.18H1107.21C1109.42 1863.18 1110.33 1862.32 1110.33 1860.83C1110.33 1859.37 1109.32 1858.77 1107.28 1858.77H1105.63V1863.18ZM1105.63 1870.29H1107.6C1109.9 1870.29 1111.12 1869.42 1111.12 1867.62C1111.12 1865.92 1109.95 1865.18 1107.6 1865.18H1105.63V1870.29ZM1118.72 1872.45V1856.61H1128.73V1858.94H1121.48V1863.04H1127.63V1865.37H1121.48V1870.1H1128.97V1872.45H1118.72ZM1133.59 1872.45V1856.61H1137.65C1142.28 1856.61 1145.07 1859.22 1145.07 1864.46C1145.07 1869.69 1142.28 1872.45 1137.79 1872.45H1133.59ZM1136.38 1870.19H1137.48C1140.51 1870.19 1142.21 1868.34 1142.21 1864.46C1142.21 1860.57 1140.51 1858.84 1137.48 1858.84H1136.38V1870.19ZM1149.18 1872.45V1856.61H1153.24C1157.87 1856.61 1160.66 1859.22 1160.66 1864.46C1160.66 1869.69 1157.87 1872.45 1153.38 1872.45H1149.18ZM1151.97 1870.19H1153.07C1156.1 1870.19 1157.8 1868.34 1157.8 1864.46C1157.8 1860.57 1156.1 1858.84 1153.07 1858.84H1151.97V1870.19ZM1165.02 1872.45V1870.1H1168.78V1858.94H1165.02V1856.61H1175.36V1858.94H1171.57V1870.1H1175.36V1872.45H1165.02ZM1180.37 1872.45V1856.61H1183.17L1187.4 1865.58L1188.86 1868.94H1188.93C1188.81 1867.31 1188.55 1865.32 1188.55 1863.57V1856.61H1191.19V1872.45H1188.36L1184.16 1863.45L1182.69 1860.11H1182.62C1182.74 1861.79 1183.01 1863.69 1183.01 1865.44V1872.45H1180.37ZM1202.32 1872.74C1198.33 1872.74 1195.33 1869.81 1195.33 1864.58C1195.33 1859.37 1198.36 1856.32 1202.44 1856.32C1204.52 1856.32 1205.94 1857.3 1206.9 1858.29L1205.36 1860.02C1204.64 1859.25 1203.8 1858.72 1202.44 1858.72C1199.94 1858.72 1198.19 1860.9 1198.19 1864.48C1198.19 1868.1 1199.7 1870.34 1202.48 1870.34C1203.32 1870.34 1204.14 1870.07 1204.62 1869.62V1866.16H1201.91V1863.88H1207.12V1870.86C1206.08 1871.87 1204.33 1872.74 1202.32 1872.74Z" fill="#FCFCFC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M859.59 1873.59C858.207 1870.5 857.438 1867.06 857.438 1863.45C857.438 1849.92 868.211 1838.95 881.5 1838.95C885.064 1838.95 888.452 1839.74 891.499 1841.16C892.843 1840.27 894.445 1839.75 896.166 1839.75C900.912 1839.75 904.76 1843.67 904.76 1848.5C904.76 1850.25 904.255 1851.88 903.386 1853.25C904.784 1856.36 905.562 1859.81 905.562 1863.45C905.562 1876.98 894.789 1887.95 881.5 1887.95C877.887 1887.95 874.456 1887.14 871.377 1885.68C870.07 1886.5 868.531 1886.97 866.884 1886.97C862.138 1886.97 858.29 1883.05 858.29 1878.22C858.29 1876.52 858.766 1874.93 859.59 1873.59ZM860.875 1863.45C860.875 1851.85 870.109 1842.45 881.5 1842.45C884.109 1842.45 886.602 1842.94 888.896 1843.84C888.058 1845.19 887.572 1846.79 887.572 1848.5C887.572 1848.66 887.576 1848.81 887.584 1848.96C885.717 1848.15 883.66 1847.7 881.5 1847.7C872.957 1847.7 866.031 1854.75 866.031 1863.45C866.031 1865.58 866.448 1867.62 867.204 1869.48C867.098 1869.47 866.991 1869.47 866.884 1869.47C865.158 1869.47 863.55 1869.99 862.203 1870.88C861.345 1868.57 860.875 1866.07 860.875 1863.45ZM874.058 1883.04C876.365 1883.95 878.874 1884.45 881.5 1884.45C892.891 1884.45 902.125 1875.05 902.125 1863.45C902.125 1860.79 901.64 1858.24 900.755 1855.9C899.427 1856.76 897.854 1857.25 896.166 1857.25C896.017 1857.25 895.869 1857.25 895.722 1857.24C896.524 1859.15 896.969 1861.24 896.969 1863.45C896.969 1872.15 890.043 1879.2 881.5 1879.2C879.362 1879.2 877.326 1878.76 875.474 1877.96C875.476 1878.04 875.478 1878.13 875.478 1878.22C875.478 1880 874.955 1881.66 874.058 1883.04ZM891.01 1848.5C891.01 1845.61 893.319 1843.25 896.166 1843.25C899.014 1843.25 901.322 1845.61 901.322 1848.5C901.322 1851.4 899.014 1853.75 896.166 1853.75C893.319 1853.75 891.01 1851.4 891.01 1848.5ZM872.576 1871.66C872.856 1871.92 873.119 1872.19 873.364 1872.47C875.506 1874.47 878.363 1875.7 881.5 1875.7C888.144 1875.7 893.531 1870.21 893.531 1863.45C893.531 1856.68 888.144 1851.2 881.5 1851.2C874.855 1851.2 869.469 1856.68 869.469 1863.45C869.469 1866.61 870.645 1869.49 872.576 1871.66ZM866.884 1872.97C868.138 1872.97 869.287 1873.43 870.181 1874.18C870.404 1874.43 870.635 1874.66 870.873 1874.89C871.602 1875.8 872.04 1876.96 872.04 1878.22C872.04 1881.12 869.732 1883.47 866.884 1883.47C864.036 1883.47 861.728 1881.12 861.728 1878.22C861.728 1875.32 864.036 1872.97 866.884 1872.97Z" fill="#171717"/>
<path d="M0.5 889.447L1600.5 889.447" stroke="#DFDFDF" stroke-width="2"/>
</g>
<defs>
<clipPath id="clip0_504_12427">
<rect width="1600" height="2089" fill="white" transform="translate(0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 75 KiB

@@ -0,0 +1,69 @@
<svg width="1600" height="2089" viewBox="0 0 1600 2089" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M218.612 1194.45V1178.61H223.892C227.324 1178.61 229.844 1179.81 229.844 1183.48C229.844 1186.98 227.276 1188.59 223.892 1188.59H221.372V1194.45H218.612ZM221.372 1186.38H223.652C226.004 1186.38 227.108 1185.42 227.108 1183.48C227.108 1181.49 225.956 1180.82 223.652 1180.82H221.372V1186.38ZM240.491 1194.74C236.867 1194.74 234.323 1191.57 234.323 1186.46C234.323 1181.32 236.867 1178.32 240.491 1178.32C244.139 1178.32 246.659 1181.34 246.659 1186.46C246.659 1191.57 244.139 1194.74 240.491 1194.74ZM240.491 1192.34C242.507 1192.34 243.827 1190.03 243.827 1186.46C243.827 1182.88 242.507 1180.72 240.491 1180.72C238.475 1180.72 237.179 1182.88 237.179 1186.46C237.179 1190.03 238.475 1192.34 240.491 1192.34ZM257.329 1194.74C255.121 1194.74 253.033 1193.9 251.497 1192.41L253.105 1190.51C254.281 1191.59 255.841 1192.34 257.377 1192.34C259.321 1192.34 260.305 1191.52 260.305 1190.25C260.305 1188.93 259.249 1188.52 257.689 1187.9L255.553 1186.96C253.873 1186.31 252.169 1185.06 252.169 1182.76C252.169 1180.24 254.425 1178.32 257.617 1178.32C259.561 1178.32 261.361 1179.06 262.657 1180.34L261.217 1182.09C260.161 1181.22 259.081 1180.72 257.617 1180.72C255.985 1180.72 254.977 1181.42 254.977 1182.62C254.977 1183.86 256.249 1184.3 257.665 1184.87L259.729 1185.76C261.721 1186.58 263.137 1187.73 263.137 1190.03C263.137 1192.6 261.001 1194.74 257.329 1194.74ZM272.68 1194.45V1180.94H267.76V1178.61H280.408V1180.94H275.464V1194.45H272.68ZM291.822 1194.74C287.838 1194.74 284.838 1191.81 284.838 1186.58C284.838 1181.37 287.862 1178.32 291.942 1178.32C294.03 1178.32 295.446 1179.3 296.406 1180.29L294.87 1182.02C294.15 1181.25 293.31 1180.72 291.942 1180.72C289.446 1180.72 287.694 1182.9 287.694 1186.48C287.694 1190.1 289.206 1192.34 291.99 1192.34C292.83 1192.34 293.646 1192.07 294.126 1191.62V1188.16H291.414V1185.88H296.622V1192.86C295.59 1193.87 293.838 1194.74 291.822 1194.74ZM302.493 1194.45V1178.61H307.725C310.965 1178.61 313.485 1179.76 313.485 1183.29C313.485 1185.69 312.237 1187.15 310.341 1187.8L314.109 1194.45H310.989L307.581 1188.23H305.253V1194.45H302.493ZM305.253 1186H307.437C309.597 1186 310.749 1185.09 310.749 1183.29C310.749 1181.44 309.597 1180.82 307.437 1180.82H305.253V1186ZM319.764 1194.45V1178.61H329.772V1180.94H322.524V1185.04H328.668V1187.37H322.524V1192.1H330.012V1194.45H319.764ZM341.282 1194.74C339.074 1194.74 336.986 1193.9 335.45 1192.41L337.058 1190.51C338.234 1191.59 339.794 1192.34 341.33 1192.34C343.274 1192.34 344.258 1191.52 344.258 1190.25C344.258 1188.93 343.202 1188.52 341.642 1187.9L339.506 1186.96C337.826 1186.31 336.122 1185.06 336.122 1182.76C336.122 1180.24 338.378 1178.32 341.57 1178.32C343.514 1178.32 345.314 1179.06 346.61 1180.34L345.17 1182.09C344.114 1181.22 343.034 1180.72 341.57 1180.72C339.938 1180.72 338.93 1181.42 338.93 1182.62C338.93 1183.86 340.202 1184.3 341.618 1184.87L343.682 1185.76C345.674 1186.58 347.09 1187.73 347.09 1190.03C347.09 1192.6 344.954 1194.74 341.282 1194.74ZM373.424 1194.45V1180.94H368.504V1178.61H381.152V1180.94H376.208V1194.45H373.424ZM384.91 1194.45L389.998 1178.61H393.238L398.326 1194.45H395.398L394.174 1190.13H388.966L387.718 1194.45H384.91ZM389.566 1187.94H393.574L393.022 1185.98C392.542 1184.3 392.062 1182.52 391.606 1180.77H391.51C391.078 1182.52 390.598 1184.3 390.118 1185.98L389.566 1187.94ZM403.453 1194.45V1178.61H408.061C411.277 1178.61 413.629 1179.59 413.629 1182.5C413.629 1183.98 412.741 1185.45 410.893 1185.95V1186.05C413.173 1186.43 414.421 1187.63 414.421 1189.79C414.421 1192.96 411.901 1194.45 408.469 1194.45H403.453ZM406.213 1185.18H407.797C410.005 1185.18 410.917 1184.32 410.917 1182.83C410.917 1181.37 409.909 1180.77 407.869 1180.77H406.213V1185.18ZM406.213 1192.29H408.181C410.485 1192.29 411.709 1191.42 411.709 1189.62C411.709 1187.92 410.533 1187.18 408.181 1187.18H406.213V1192.29ZM420.892 1194.45V1178.61H423.628V1192.1H431.02V1194.45H420.892ZM437.298 1194.45V1178.61H447.306V1180.94H440.058V1185.04H446.202V1187.37H440.058V1192.1H447.546V1194.45H437.298Z" fill="#A0A0A0"/>
<rect x="216.5" y="1221.45" width="1142" height="345" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="216.5" y="1221.45" width="1142" height="345" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round"/>
<rect x="828.5" y="1812.45" width="346" height="102" rx="16" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="828.5" y="1812.45" width="346" height="102" rx="16" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round"/>
<path d="M218.612 256.225V240.385H223.892C227.324 240.385 229.844 241.585 229.844 245.257C229.844 248.761 227.276 250.369 223.892 250.369H221.372V256.225H218.612ZM221.372 248.161H223.652C226.004 248.161 227.108 247.201 227.108 245.257C227.108 243.265 225.956 242.593 223.652 242.593H221.372V248.161ZM240.491 256.513C236.867 256.513 234.323 253.345 234.323 248.233C234.323 243.097 236.867 240.097 240.491 240.097C244.139 240.097 246.659 243.121 246.659 248.233C246.659 253.345 244.139 256.513 240.491 256.513ZM240.491 254.113C242.507 254.113 243.827 251.809 243.827 248.233C243.827 244.657 242.507 242.497 240.491 242.497C238.475 242.497 237.179 244.657 237.179 248.233C237.179 251.809 238.475 254.113 240.491 254.113ZM257.329 256.513C255.121 256.513 253.033 255.673 251.497 254.185L253.105 252.289C254.281 253.369 255.841 254.113 257.377 254.113C259.321 254.113 260.305 253.297 260.305 252.025C260.305 250.705 259.249 250.297 257.689 249.673L255.553 248.737C253.873 248.089 252.169 246.841 252.169 244.537C252.169 242.017 254.425 240.097 257.617 240.097C259.561 240.097 261.361 240.841 262.657 242.113L261.217 243.865C260.161 243.001 259.081 242.497 257.617 242.497C255.985 242.497 254.977 243.193 254.977 244.393C254.977 245.641 256.249 246.073 257.665 246.649L259.729 247.537C261.721 248.353 263.137 249.505 263.137 251.809C263.137 254.377 261.001 256.513 257.329 256.513ZM272.68 256.225V242.713H267.76V240.385H280.408V242.713H275.464V256.225H272.68ZM291.822 256.513C287.838 256.513 284.838 253.585 284.838 248.353C284.838 243.145 287.862 240.097 291.942 240.097C294.03 240.097 295.446 241.081 296.406 242.065L294.87 243.793C294.15 243.025 293.31 242.497 291.942 242.497C289.446 242.497 287.694 244.681 287.694 248.257C287.694 251.881 289.206 254.113 291.99 254.113C292.83 254.113 293.646 253.849 294.126 253.393V249.937H291.414V247.657H296.622V254.641C295.59 255.649 293.838 256.513 291.822 256.513ZM302.493 256.225V240.385H307.725C310.965 240.385 313.485 241.537 313.485 245.065C313.485 247.465 312.237 248.929 310.341 249.577L314.109 256.225H310.989L307.581 250.009H305.253V256.225H302.493ZM305.253 247.777H307.437C309.597 247.777 310.749 246.865 310.749 245.065C310.749 243.217 309.597 242.593 307.437 242.593H305.253V247.777ZM319.764 256.225V240.385H329.772V242.713H322.524V246.817H328.668V249.145H322.524V253.873H330.012V256.225H319.764ZM341.282 256.513C339.074 256.513 336.986 255.673 335.45 254.185L337.058 252.289C338.234 253.369 339.794 254.113 341.33 254.113C343.274 254.113 344.258 253.297 344.258 252.025C344.258 250.705 343.202 250.297 341.642 249.673L339.506 248.737C337.826 248.089 336.122 246.841 336.122 244.537C336.122 242.017 338.378 240.097 341.57 240.097C343.514 240.097 345.314 240.841 346.61 242.113L345.17 243.865C344.114 243.001 343.034 242.497 341.57 242.497C339.938 242.497 338.93 243.193 338.93 244.393C338.93 245.641 340.202 246.073 341.618 246.649L343.682 247.537C345.674 248.353 347.09 249.505 347.09 251.809C347.09 254.377 344.954 256.513 341.282 256.513ZM373.424 256.225V242.713H368.504V240.385H381.152V242.713H376.208V256.225H373.424ZM384.91 256.225L389.998 240.385H393.238L398.326 256.225H395.398L394.174 251.905H388.966L387.718 256.225H384.91ZM389.566 249.721H393.574L393.022 247.753C392.542 246.073 392.062 244.297 391.606 242.545H391.51C391.078 244.297 390.598 246.073 390.118 247.753L389.566 249.721ZM403.453 256.225V240.385H408.061C411.277 240.385 413.629 241.369 413.629 244.273C413.629 245.761 412.741 247.225 410.893 247.729V247.825C413.173 248.209 414.421 249.409 414.421 251.569C414.421 254.737 411.901 256.225 408.469 256.225H403.453ZM406.213 246.961H407.797C410.005 246.961 410.917 246.097 410.917 244.609C410.917 243.145 409.909 242.545 407.869 242.545H406.213V246.961ZM406.213 254.065H408.181C410.485 254.065 411.709 253.201 411.709 251.401C411.709 249.697 410.533 248.953 408.181 248.953H406.213V254.065ZM420.892 256.225V240.385H423.628V253.873H431.02V256.225H420.892ZM437.298 256.225V240.385H447.306V242.713H440.058V246.817H446.202V249.145H440.058V253.873H447.546V256.225H437.298Z" fill="#A0A0A0"/>
<rect x="216.5" y="283.225" width="1142" height="356" rx="32" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="216.5" y="283.225" width="1142" height="356" rx="32" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round"/>
<rect x="249.238" y="360.225" width="710" height="64" rx="16" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="249.238" y="360.225" width="710" height="64" rx="16" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round"/>
<rect x="249.238" y="1298.45" width="710" height="64" rx="16" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="249.238" y="1298.45" width="710" height="64" rx="16" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round"/>
<rect x="1026.5" y="360.225" width="300" height="64" rx="16" fill="#3DCF8E" fill-opacity="0.05"/>
<rect x="1026.5" y="360.225" width="300" height="64" rx="16" stroke="#3ECF8E" stroke-width="2" stroke-linecap="round"/>
<rect x="1026.5" y="1298.45" width="300" height="64" rx="16" fill="#3DCF8E" fill-opacity="0.05"/>
<rect x="1026.5" y="1298.45" width="300" height="64" rx="16" stroke="#3ECF8E" stroke-width="2" stroke-linecap="round"/>
<rect x="1026.5" y="443.225" width="300" height="64" rx="16" fill="#3DCF8E" fill-opacity="0.05"/>
<rect x="1026.5" y="443.225" width="300" height="64" rx="16" stroke="#3ECF8E" stroke-width="2" stroke-linecap="round"/>
<rect x="1026.5" y="1381.45" width="300" height="64" rx="16" fill="#3DCF8E" fill-opacity="0.05"/>
<rect x="1026.5" y="1381.45" width="300" height="64" rx="16" stroke="#3ECF8E" stroke-width="2" stroke-linecap="round"/>
<rect x="1026.5" y="1463.45" width="300" height="64" rx="16" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="1083.5" y="1665.45" width="300" height="64" rx="16" fill="#3DCF8E" fill-opacity="0.05"/>
<rect x="1083.5" y="1665.45" width="300" height="64" rx="16" stroke="#3ECF8E" stroke-width="2" stroke-linecap="round"/>
<rect x="249.5" y="443.225" width="710" height="64" rx="16" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="249.5" y="443.225" width="710" height="64" rx="16" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round"/>
<rect x="249.5" y="1381.45" width="710" height="64" rx="16" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="249.5" y="1381.45" width="710" height="64" rx="16" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round"/>
<rect x="249.5" y="531.777" width="710" height="64" rx="16" stroke="#4D4D4D" stroke-width="2" stroke-linecap="round" stroke-dasharray="8 16"/>
<rect x="455.5" y="724.225" width="710" height="65" rx="16" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="455.5" y="724.225" width="710" height="65" rx="16" stroke="#A0A0A0" stroke-width="2" stroke-linecap="round"/>
<rect x="249.5" y="1462.45" width="710" height="65" rx="16" fill="#4D4D4D" fill-opacity="0.1"/>
<rect x="249.5" y="1462.45" width="710" height="65" rx="16" stroke="#A0A0A0" stroke-width="2" stroke-linecap="round"/>
<path d="M554.881 570.5C555.281 570.119 555.914 570.135 556.295 570.536L562.496 577.058C562.876 577.459 562.86 578.092 562.46 578.472C562.06 578.853 561.427 578.837 561.046 578.436L555.534 572.638L549.736 578.15C549.336 578.531 548.703 578.515 548.322 578.115C547.942 577.714 547.958 577.082 548.358 576.701L554.881 570.5ZM592.718 700.848C579.282 684.016 552.966 634.648 554.57 571.199L556.569 571.25C554.979 634.169 581.1 683.087 594.282 699.601L592.718 700.848Z" fill="#EDEDED"/>
<path d="M800.81 1862.1C801.212 1861.72 801.231 1861.09 800.852 1860.69L794.684 1854.14C794.306 1853.73 793.673 1853.71 793.271 1854.09C792.868 1854.47 792.849 1855.1 793.228 1855.51L798.711 1861.33L792.885 1866.82C792.483 1867.19 792.464 1867.83 792.842 1868.23C793.221 1868.63 793.854 1868.65 794.256 1868.27L800.81 1862.1ZM367.139 1542.01C370.303 1630.11 401.329 1707.92 470.267 1764.85C539.177 1821.76 645.844 1857.7 800.094 1862.37L800.155 1860.38C646.153 1855.71 539.983 1819.83 471.541 1763.31C403.127 1706.81 372.286 1629.59 369.138 1541.93L367.139 1542.01Z" fill="#FD880B"/>
<path d="M1253.58 1747.07C1253.19 1746.68 1252.55 1746.68 1252.16 1747.07L1245.8 1753.43C1245.41 1753.82 1245.41 1754.46 1245.8 1754.85C1246.19 1755.24 1246.82 1755.24 1247.21 1754.85L1252.87 1749.19L1258.53 1754.85C1258.92 1755.24 1259.55 1755.24 1259.94 1754.85C1260.33 1754.46 1260.33 1753.82 1259.94 1753.43L1253.58 1747.07ZM1203.43 1822.34C1230.63 1808.23 1253.87 1782.95 1253.87 1747.78L1251.87 1747.78C1251.87 1781.94 1229.31 1806.66 1202.51 1820.56L1203.43 1822.34Z" fill="#EDEDED"/>
<path d="M1170.74 1505.99C1170.22 1506.2 1169.98 1506.78 1170.19 1507.3L1173.6 1515.63C1173.8 1516.14 1174.39 1516.38 1174.9 1516.17C1175.41 1515.96 1175.66 1515.38 1175.45 1514.87L1172.42 1507.46L1179.82 1504.44C1180.33 1504.23 1180.58 1503.64 1180.37 1503.13C1180.16 1502.62 1179.58 1502.38 1179.07 1502.59L1170.74 1505.99ZM1256.37 1647.39C1255.26 1629.28 1249.69 1600.53 1236.6 1573.03C1223.52 1545.52 1202.86 1519.15 1171.5 1506L1170.73 1507.84C1201.47 1520.74 1221.83 1546.64 1234.8 1573.89C1247.76 1601.13 1253.27 1629.63 1254.37 1647.51L1256.37 1647.39Z" fill="#EDEDED"/>
<path d="M255.308 329.672V316.16H250.388V313.832H263.036V316.16H258.092V329.672H255.308ZM268.811 329.672V313.832H278.819V316.16H271.571V320.264H277.715V322.592H271.571V327.32H279.059V329.672H268.811ZM283.945 329.672L288.577 321.512L284.233 313.832H287.329L289.177 317.36C289.561 318.08 289.921 318.824 290.425 319.784H290.521C290.929 318.824 291.241 318.08 291.601 317.36L293.377 313.832H296.329L291.985 321.632L296.617 329.672H293.545L291.505 325.904C291.073 325.112 290.665 324.296 290.185 323.336H290.089C289.681 324.296 289.297 325.088 288.889 325.88L286.897 329.672H283.945ZM305.68 329.672V316.16H300.76V313.832H313.408V316.16H308.464V329.672H305.68ZM342.069 329.96C338.061 329.96 334.917 327.032 334.917 321.8C334.917 316.616 338.013 313.544 342.165 313.544C344.109 313.544 345.645 314.48 346.629 315.512L345.093 317.24C344.301 316.448 343.389 315.944 342.165 315.944C339.549 315.944 337.749 318.128 337.749 321.704C337.749 325.328 339.549 327.56 342.237 327.56C343.509 327.56 344.493 326.96 345.381 325.976L346.941 327.656C345.669 329.144 344.061 329.96 342.069 329.96ZM357.444 329.96C353.82 329.96 351.276 326.792 351.276 321.68C351.276 316.544 353.82 313.544 357.444 313.544C361.092 313.544 363.612 316.568 363.612 321.68C363.612 326.792 361.092 329.96 357.444 329.96ZM357.444 327.56C359.46 327.56 360.78 325.256 360.78 321.68C360.78 318.104 359.46 315.944 357.444 315.944C355.428 315.944 354.132 318.104 354.132 321.68C354.132 325.256 355.428 327.56 357.444 327.56ZM369.938 329.672V313.832H372.674V327.32H380.066V329.672H369.938ZM391.073 329.96C387.617 329.96 385.553 327.968 385.553 323.624V313.832H388.313V323.816C388.313 326.432 389.369 327.56 391.073 327.56C392.753 327.56 393.833 326.432 393.833 323.816V313.832H396.521V323.624C396.521 327.968 394.505 329.96 391.073 329.96ZM402.32 329.672V313.832H405.272L407.456 320.024L408.224 322.4H408.32L409.04 320.024L411.224 313.832H414.176V329.672H411.824V322.544C411.824 321.032 412.04 318.056 412.184 316.568H412.088L410.888 320.432L408.896 325.4H407.552L405.536 320.432L404.336 316.568H404.264C404.384 318.056 404.624 321.032 404.624 322.544V329.672H402.32ZM420.05 329.672V313.832H422.858L427.082 322.808L428.546 326.168H428.618C428.498 324.536 428.234 322.544 428.234 320.792V313.832H430.874V329.672H428.042L423.842 320.672L422.378 317.336H422.306C422.426 319.016 422.69 320.912 422.69 322.664V329.672H420.05Z" fill="#A0A0A0"/>
<path d="M255.308 1267.89V1254.38H250.388V1252.05H263.036V1254.38H258.092V1267.89H255.308ZM268.811 1267.89V1252.05H278.819V1254.38H271.571V1258.49H277.715V1260.81H271.571V1265.54H279.059V1267.89H268.811ZM283.945 1267.89L288.577 1259.73L284.233 1252.05H287.329L289.177 1255.58C289.561 1256.3 289.921 1257.05 290.425 1258.01H290.521C290.929 1257.05 291.241 1256.3 291.601 1255.58L293.377 1252.05H296.329L291.985 1259.85L296.617 1267.89H293.545L291.505 1264.13C291.073 1263.33 290.665 1262.52 290.185 1261.56H290.089C289.681 1262.52 289.297 1263.31 288.889 1264.1L286.897 1267.89H283.945ZM305.68 1267.89V1254.38H300.76V1252.05H313.408V1254.38H308.464V1267.89H305.68ZM342.069 1268.18C338.061 1268.18 334.917 1265.25 334.917 1260.02C334.917 1254.84 338.013 1251.77 342.165 1251.77C344.109 1251.77 345.645 1252.7 346.629 1253.73L345.093 1255.46C344.301 1254.67 343.389 1254.17 342.165 1254.17C339.549 1254.17 337.749 1256.35 337.749 1259.93C337.749 1263.55 339.549 1265.78 342.237 1265.78C343.509 1265.78 344.493 1265.18 345.381 1264.2L346.941 1265.88C345.669 1267.37 344.061 1268.18 342.069 1268.18ZM357.444 1268.18C353.82 1268.18 351.276 1265.01 351.276 1259.9C351.276 1254.77 353.82 1251.77 357.444 1251.77C361.092 1251.77 363.612 1254.79 363.612 1259.9C363.612 1265.01 361.092 1268.18 357.444 1268.18ZM357.444 1265.78C359.46 1265.78 360.78 1263.48 360.78 1259.9C360.78 1256.33 359.46 1254.17 357.444 1254.17C355.428 1254.17 354.132 1256.33 354.132 1259.9C354.132 1263.48 355.428 1265.78 357.444 1265.78ZM369.938 1267.89V1252.05H372.674V1265.54H380.066V1267.89H369.938ZM391.073 1268.18C387.617 1268.18 385.553 1266.19 385.553 1261.85V1252.05H388.313V1262.04C388.313 1264.65 389.369 1265.78 391.073 1265.78C392.753 1265.78 393.833 1264.65 393.833 1262.04V1252.05H396.521V1261.85C396.521 1266.19 394.505 1268.18 391.073 1268.18ZM402.32 1267.89V1252.05H405.272L407.456 1258.25L408.224 1260.62H408.32L409.04 1258.25L411.224 1252.05H414.176V1267.89H411.824V1260.77C411.824 1259.25 412.04 1256.28 412.184 1254.79H412.088L410.888 1258.65L408.896 1263.62H407.552L405.536 1258.65L404.336 1254.79H404.264C404.384 1256.28 404.624 1259.25 404.624 1260.77V1267.89H402.32ZM420.05 1267.89V1252.05H422.858L427.082 1261.03L428.546 1264.39H428.618C428.498 1262.76 428.234 1260.77 428.234 1259.01V1252.05H430.874V1267.89H428.042L423.842 1258.89L422.378 1255.56H422.306C422.426 1257.24 422.69 1259.13 422.69 1260.89V1267.89H420.05Z" fill="#A0A0A0"/>
<path d="M1032.07 329.672L1027.2 313.832H1030.12L1032.36 321.824C1032.86 323.624 1033.2 325.16 1033.72 326.984H1033.82C1034.35 325.16 1034.71 323.624 1035.21 321.824L1037.4 313.832H1040.2L1035.36 329.672H1032.07ZM1045.81 329.672V313.832H1055.82V316.16H1048.57V320.264H1054.71V322.592H1048.57V327.32H1056.06V329.672H1045.81ZM1068.7 329.96C1064.69 329.96 1061.55 327.032 1061.55 321.8C1061.55 316.616 1064.64 313.544 1068.79 313.544C1070.74 313.544 1072.27 314.48 1073.26 315.512L1071.72 317.24C1070.93 316.448 1070.02 315.944 1068.79 315.944C1066.18 315.944 1064.38 318.128 1064.38 321.704C1064.38 325.328 1066.18 327.56 1068.87 327.56C1070.14 327.56 1071.12 326.96 1072.01 325.976L1073.57 327.656C1072.3 329.144 1070.69 329.96 1068.7 329.96ZM1082.68 329.672V316.16H1077.76V313.832H1090.41V316.16H1085.46V329.672H1082.68ZM1100.86 329.96C1097.24 329.96 1094.69 326.792 1094.69 321.68C1094.69 316.544 1097.24 313.544 1100.86 313.544C1104.51 313.544 1107.03 316.568 1107.03 321.68C1107.03 326.792 1104.51 329.96 1100.86 329.96ZM1100.86 327.56C1102.88 327.56 1104.2 325.256 1104.2 321.68C1104.2 318.104 1102.88 315.944 1100.86 315.944C1098.85 315.944 1097.55 318.104 1097.55 321.68C1097.55 325.256 1098.85 327.56 1100.86 327.56ZM1112.49 329.672V313.832H1117.73C1120.97 313.832 1123.49 314.984 1123.49 318.512C1123.49 320.912 1122.24 322.376 1120.34 323.024L1124.11 329.672H1120.99L1117.58 323.456H1115.25V329.672H1112.49ZM1115.25 321.224H1117.44C1119.6 321.224 1120.75 320.312 1120.75 318.512C1120.75 316.664 1119.6 316.04 1117.44 316.04H1115.25V321.224ZM1152.65 329.96C1148.64 329.96 1145.5 327.032 1145.5 321.8C1145.5 316.616 1148.59 313.544 1152.75 313.544C1154.69 313.544 1156.23 314.48 1157.21 315.512L1155.67 317.24C1154.88 316.448 1153.97 315.944 1152.75 315.944C1150.13 315.944 1148.33 318.128 1148.33 321.704C1148.33 325.328 1150.13 327.56 1152.82 327.56C1154.09 327.56 1155.07 326.96 1155.96 325.976L1157.52 327.656C1156.25 329.144 1154.64 329.96 1152.65 329.96ZM1168.02 329.96C1164.4 329.96 1161.86 326.792 1161.86 321.68C1161.86 316.544 1164.4 313.544 1168.02 313.544C1171.67 313.544 1174.19 316.568 1174.19 321.68C1174.19 326.792 1171.67 329.96 1168.02 329.96ZM1168.02 327.56C1170.04 327.56 1171.36 325.256 1171.36 321.68C1171.36 318.104 1170.04 315.944 1168.02 315.944C1166.01 315.944 1164.71 318.104 1164.71 321.68C1164.71 325.256 1166.01 327.56 1168.02 327.56ZM1180.52 329.672V313.832H1183.26V327.32H1190.65V329.672H1180.52ZM1201.65 329.96C1198.2 329.96 1196.13 327.968 1196.13 323.624V313.832H1198.89V323.816C1198.89 326.432 1199.95 327.56 1201.65 327.56C1203.33 327.56 1204.41 326.432 1204.41 323.816V313.832H1207.1V323.624C1207.1 327.968 1205.09 329.96 1201.65 329.96ZM1212.9 329.672V313.832H1215.85L1218.04 320.024L1218.8 322.4H1218.9L1219.62 320.024L1221.8 313.832H1224.76V329.672H1222.4V322.544C1222.4 321.032 1222.62 318.056 1222.76 316.568H1222.67L1221.47 320.432L1219.48 325.4H1218.13L1216.12 320.432L1214.92 316.568H1214.84C1214.96 318.056 1215.2 321.032 1215.2 322.544V329.672H1212.9ZM1230.63 329.672V313.832H1233.44L1237.66 322.808L1239.13 326.168H1239.2C1239.08 324.536 1238.82 322.544 1238.82 320.792V313.832H1241.46V329.672H1238.62L1234.42 320.672L1232.96 317.336H1232.89C1233.01 319.016 1233.27 320.912 1233.27 322.664V329.672H1230.63Z" fill="#A0A0A0"/>
<path d="M1032.07 1267.89L1027.2 1252.05H1030.12L1032.36 1260.05C1032.86 1261.85 1033.2 1263.38 1033.72 1265.21H1033.82C1034.35 1263.38 1034.71 1261.85 1035.21 1260.05L1037.4 1252.05H1040.2L1035.36 1267.89H1032.07ZM1045.81 1267.89V1252.05H1055.82V1254.38H1048.57V1258.49H1054.71V1260.81H1048.57V1265.54H1056.06V1267.89H1045.81ZM1068.7 1268.18C1064.69 1268.18 1061.55 1265.25 1061.55 1260.02C1061.55 1254.84 1064.64 1251.77 1068.79 1251.77C1070.74 1251.77 1072.27 1252.7 1073.26 1253.73L1071.72 1255.46C1070.93 1254.67 1070.02 1254.17 1068.79 1254.17C1066.18 1254.17 1064.38 1256.35 1064.38 1259.93C1064.38 1263.55 1066.18 1265.78 1068.87 1265.78C1070.14 1265.78 1071.12 1265.18 1072.01 1264.2L1073.57 1265.88C1072.3 1267.37 1070.69 1268.18 1068.7 1268.18ZM1082.68 1267.89V1254.38H1077.76V1252.05H1090.41V1254.38H1085.46V1267.89H1082.68ZM1100.86 1268.18C1097.24 1268.18 1094.69 1265.01 1094.69 1259.9C1094.69 1254.77 1097.24 1251.77 1100.86 1251.77C1104.51 1251.77 1107.03 1254.79 1107.03 1259.9C1107.03 1265.01 1104.51 1268.18 1100.86 1268.18ZM1100.86 1265.78C1102.88 1265.78 1104.2 1263.48 1104.2 1259.9C1104.2 1256.33 1102.88 1254.17 1100.86 1254.17C1098.85 1254.17 1097.55 1256.33 1097.55 1259.9C1097.55 1263.48 1098.85 1265.78 1100.86 1265.78ZM1112.49 1267.89V1252.05H1117.73C1120.97 1252.05 1123.49 1253.21 1123.49 1256.73C1123.49 1259.13 1122.24 1260.6 1120.34 1261.25L1124.11 1267.89H1120.99L1117.58 1261.68H1115.25V1267.89H1112.49ZM1115.25 1259.45H1117.44C1119.6 1259.45 1120.75 1258.53 1120.75 1256.73C1120.75 1254.89 1119.6 1254.26 1117.44 1254.26H1115.25V1259.45ZM1152.65 1268.18C1148.64 1268.18 1145.5 1265.25 1145.5 1260.02C1145.5 1254.84 1148.59 1251.77 1152.75 1251.77C1154.69 1251.77 1156.23 1252.7 1157.21 1253.73L1155.67 1255.46C1154.88 1254.67 1153.97 1254.17 1152.75 1254.17C1150.13 1254.17 1148.33 1256.35 1148.33 1259.93C1148.33 1263.55 1150.13 1265.78 1152.82 1265.78C1154.09 1265.78 1155.07 1265.18 1155.96 1264.2L1157.52 1265.88C1156.25 1267.37 1154.64 1268.18 1152.65 1268.18ZM1168.02 1268.18C1164.4 1268.18 1161.86 1265.01 1161.86 1259.9C1161.86 1254.77 1164.4 1251.77 1168.02 1251.77C1171.67 1251.77 1174.19 1254.79 1174.19 1259.9C1174.19 1265.01 1171.67 1268.18 1168.02 1268.18ZM1168.02 1265.78C1170.04 1265.78 1171.36 1263.48 1171.36 1259.9C1171.36 1256.33 1170.04 1254.17 1168.02 1254.17C1166.01 1254.17 1164.71 1256.33 1164.71 1259.9C1164.71 1263.48 1166.01 1265.78 1168.02 1265.78ZM1180.52 1267.89V1252.05H1183.26V1265.54H1190.65V1267.89H1180.52ZM1201.65 1268.18C1198.2 1268.18 1196.13 1266.19 1196.13 1261.85V1252.05H1198.89V1262.04C1198.89 1264.65 1199.95 1265.78 1201.65 1265.78C1203.33 1265.78 1204.41 1264.65 1204.41 1262.04V1252.05H1207.1V1261.85C1207.1 1266.19 1205.09 1268.18 1201.65 1268.18ZM1212.9 1267.89V1252.05H1215.85L1218.04 1258.25L1218.8 1260.62H1218.9L1219.62 1258.25L1221.8 1252.05H1224.76V1267.89H1222.4V1260.77C1222.4 1259.25 1222.62 1256.28 1222.76 1254.79H1222.67L1221.47 1258.65L1219.48 1263.62H1218.13L1216.12 1258.65L1214.92 1254.79H1214.84C1214.96 1256.28 1215.2 1259.25 1215.2 1260.77V1267.89H1212.9ZM1230.63 1267.89V1252.05H1233.44L1237.66 1261.03L1239.13 1264.39H1239.2C1239.08 1262.76 1238.82 1260.77 1238.82 1259.01V1252.05H1241.46V1267.89H1238.62L1234.42 1258.89L1232.96 1255.56H1232.89C1233.01 1257.24 1233.27 1259.13 1233.27 1260.89V1267.89H1230.63Z" fill="#A0A0A0"/>
<path d="M985.5 320.672L985.5 612.225" stroke="#2E2E2E" stroke-width="2"/>
<path d="M985.5 1258.89L985.5 1550.45" stroke="#2E2E2E" stroke-width="2"/>
<rect x="250.488" y="1698.7" width="466.5" height="101.5" rx="50.75" fill="#543112"/>
<rect x="250.488" y="1698.7" width="466.5" height="101.5" rx="50.75" stroke="#FD880B" stroke-width="2.5"/>
<rect x="304.238" y="1749.45" width="76" height="37.8066" rx="11" fill="#EDEDED"/>
<path d="M361.413 1740.45V1724.61H365.469C370.101 1724.61 372.885 1727.22 372.885 1732.46C372.885 1737.69 370.101 1740.45 365.613 1740.45H361.413ZM364.197 1738.19H365.301C368.325 1738.19 370.029 1736.34 370.029 1732.46C370.029 1728.57 368.325 1726.84 365.301 1726.84H364.197V1738.19ZM375.708 1740.45L380.796 1724.61H384.036L389.124 1740.45H386.196L384.972 1736.13H379.764L378.516 1740.45H375.708ZM380.364 1733.94H384.372L383.82 1731.98C383.34 1730.3 382.86 1728.52 382.404 1726.77H382.308C381.876 1728.52 381.396 1730.3 380.916 1731.98L380.364 1733.94ZM396.603 1740.45V1726.94H391.683V1724.61H404.331V1726.94H399.387V1740.45H396.603ZM406.889 1740.45L411.977 1724.61H415.217L420.305 1740.45H417.377L416.153 1736.13H410.945L409.697 1740.45H406.889ZM411.545 1733.94H415.553L415.001 1731.98C414.521 1730.3 414.041 1728.52 413.585 1726.77H413.489C413.057 1728.52 412.577 1730.3 412.097 1731.98L411.545 1733.94ZM424.232 1740.45V1724.61H428.84C432.056 1724.61 434.408 1725.59 434.408 1728.5C434.408 1729.98 433.52 1731.45 431.672 1731.95V1732.05C433.952 1732.43 435.2 1733.63 435.2 1735.79C435.2 1738.96 432.68 1740.45 429.248 1740.45H424.232ZM426.992 1731.18H428.576C430.784 1731.18 431.696 1730.32 431.696 1728.83C431.696 1727.37 430.688 1726.77 428.648 1726.77H426.992V1731.18ZM426.992 1738.29H428.96C431.264 1738.29 432.488 1737.42 432.488 1735.62C432.488 1733.92 431.312 1733.18 428.96 1733.18H426.992V1738.29ZM438.07 1740.45L443.158 1724.61H446.398L451.486 1740.45H448.558L447.334 1736.13H442.126L440.878 1740.45H438.07ZM442.726 1733.94H446.734L446.182 1731.98C445.702 1730.3 445.222 1728.52 444.766 1726.77H444.67C444.238 1728.52 443.758 1730.3 443.278 1731.98L442.726 1733.94ZM460.405 1740.74C458.197 1740.74 456.109 1739.9 454.573 1738.41L456.181 1736.51C457.357 1737.59 458.917 1738.34 460.453 1738.34C462.397 1738.34 463.381 1737.52 463.381 1736.25C463.381 1734.93 462.325 1734.52 460.765 1733.9L458.629 1732.96C456.949 1732.31 455.245 1731.06 455.245 1728.76C455.245 1726.24 457.501 1724.32 460.693 1724.32C462.637 1724.32 464.437 1725.06 465.733 1726.34L464.293 1728.09C463.237 1727.22 462.157 1726.72 460.693 1726.72C459.061 1726.72 458.053 1727.42 458.053 1728.62C458.053 1729.86 459.325 1730.3 460.741 1730.87L462.805 1731.76C464.797 1732.58 466.213 1733.73 466.213 1736.03C466.213 1738.6 464.077 1740.74 460.405 1740.74ZM471.268 1740.45V1724.61H481.276V1726.94H474.028V1731.04H480.172V1733.37H474.028V1738.1H481.516V1740.45H471.268ZM502.353 1740.45L500.097 1724.58H502.905L503.793 1733.8C503.841 1735.14 503.937 1736.46 504.009 1737.78H504.081C504.369 1736.46 504.705 1735.12 504.993 1733.8L506.361 1728.66H508.137L509.481 1733.8C509.745 1735.1 510.105 1736.44 510.393 1737.78H510.489L510.705 1733.8L511.545 1724.58H514.161L512.025 1740.45H509.073L507.681 1734.59C507.489 1733.63 507.297 1732.6 507.177 1731.66H507.105C506.961 1732.6 506.793 1733.63 506.577 1734.59L505.257 1740.45H502.353ZM518.04 1740.45V1724.61H528.048V1726.94H520.8V1731.04H526.944V1733.37H520.8V1738.1H528.288V1740.45H518.04ZM533.366 1740.45V1724.61H537.974C541.19 1724.61 543.542 1725.59 543.542 1728.5C543.542 1729.98 542.654 1731.45 540.806 1731.95V1732.05C543.086 1732.43 544.334 1733.63 544.334 1735.79C544.334 1738.96 541.814 1740.45 538.382 1740.45H533.366ZM536.126 1731.18H537.71C539.918 1731.18 540.83 1730.32 540.83 1728.83C540.83 1727.37 539.822 1726.77 537.782 1726.77H536.126V1731.18ZM536.126 1738.29H538.094C540.398 1738.29 541.622 1737.42 541.622 1735.62C541.622 1733.92 540.446 1733.18 538.094 1733.18H536.126V1738.29ZM548.429 1740.45V1724.61H551.189V1730.99H556.613V1724.61H559.397V1740.45H556.613V1733.39H551.189V1740.45H548.429ZM569.491 1740.74C565.867 1740.74 563.323 1737.57 563.323 1732.46C563.323 1727.32 565.867 1724.32 569.491 1724.32C573.139 1724.32 575.659 1727.34 575.659 1732.46C575.659 1737.57 573.139 1740.74 569.491 1740.74ZM569.491 1738.34C571.507 1738.34 572.827 1736.03 572.827 1732.46C572.827 1728.88 571.507 1726.72 569.491 1726.72C567.475 1726.72 566.179 1728.88 566.179 1732.46C566.179 1736.03 567.475 1738.34 569.491 1738.34ZM585.082 1740.74C581.458 1740.74 578.914 1737.57 578.914 1732.46C578.914 1727.32 581.458 1724.32 585.082 1724.32C588.73 1724.32 591.25 1727.34 591.25 1732.46C591.25 1737.57 588.73 1740.74 585.082 1740.74ZM585.082 1738.34C587.098 1738.34 588.418 1736.03 588.418 1732.46C588.418 1728.88 587.098 1726.72 585.082 1726.72C583.066 1726.72 581.77 1728.88 581.77 1732.46C581.77 1736.03 583.066 1738.34 585.082 1738.34ZM595.465 1740.45V1724.61H598.273V1731.83H598.345L603.961 1724.61H607.033L602.209 1730.78L607.561 1740.45H604.489L600.553 1732.96L598.273 1735.79V1740.45H595.465Z" fill="#FD880B"/>
<path d="M314.532 1776.45V1760.61H319.812C323.244 1760.61 325.764 1761.81 325.764 1765.48C325.764 1768.98 323.196 1770.59 319.812 1770.59H317.292V1776.45H314.532ZM317.292 1768.38H319.572C321.924 1768.38 323.028 1767.42 323.028 1765.48C323.028 1763.49 321.876 1762.82 319.572 1762.82H317.292V1768.38ZM335.21 1776.74C331.586 1776.74 329.042 1773.57 329.042 1768.46C329.042 1763.32 331.586 1760.32 335.21 1760.32C338.858 1760.32 341.378 1763.34 341.378 1768.46C341.378 1773.57 338.858 1776.74 335.21 1776.74ZM335.21 1774.34C337.226 1774.34 338.546 1772.03 338.546 1768.46C338.546 1764.88 337.226 1762.72 335.21 1762.72C333.194 1762.72 331.898 1764.88 331.898 1768.46C331.898 1772.03 333.194 1774.34 335.21 1774.34ZM350.849 1776.74C348.641 1776.74 346.553 1775.9 345.017 1774.41L346.625 1772.51C347.801 1773.59 349.361 1774.34 350.897 1774.34C352.841 1774.34 353.825 1773.52 353.825 1772.25C353.825 1770.93 352.769 1770.52 351.209 1769.9L349.073 1768.96C347.393 1768.31 345.689 1767.06 345.689 1764.76C345.689 1762.24 347.945 1760.32 351.137 1760.32C353.081 1760.32 354.881 1761.06 356.177 1762.34L354.737 1764.09C353.681 1763.22 352.601 1762.72 351.137 1762.72C349.505 1762.72 348.497 1763.42 348.497 1764.62C348.497 1765.86 349.769 1766.3 351.185 1766.87L353.249 1767.76C355.241 1768.58 356.657 1769.73 356.657 1772.03C356.657 1774.6 354.521 1776.74 350.849 1776.74ZM364.999 1776.45V1762.94H360.079V1760.61H372.727V1762.94H367.783V1776.45H364.999Z" fill="#232323"/>
<path d="M391.261 1777.34L401.533 1759.41H403.909L393.613 1777.34H391.261ZM414.579 1776.74C410.571 1776.74 407.427 1773.81 407.427 1768.58C407.427 1763.39 410.523 1760.32 414.675 1760.32C416.619 1760.32 418.155 1761.26 419.139 1762.29L417.603 1764.02C416.811 1763.22 415.899 1762.72 414.675 1762.72C412.059 1762.72 410.259 1764.9 410.259 1768.48C410.259 1772.1 412.059 1774.34 414.747 1774.34C416.019 1774.34 417.003 1773.74 417.891 1772.75L419.451 1774.43C418.179 1775.92 416.571 1776.74 414.579 1776.74ZM428.754 1776.74C425.13 1776.74 422.586 1773.57 422.586 1768.46C422.586 1763.32 425.13 1760.32 428.754 1760.32C432.402 1760.32 434.922 1763.34 434.922 1768.46C434.922 1773.57 432.402 1776.74 428.754 1776.74ZM428.754 1774.34C430.77 1774.34 432.09 1772.03 432.09 1768.46C432.09 1764.88 430.77 1762.72 428.754 1762.72C426.738 1762.72 425.442 1764.88 425.442 1768.46C425.442 1772.03 426.738 1774.34 428.754 1774.34ZM438.945 1776.45V1760.61H441.753L445.977 1769.58L447.441 1772.94H447.513C447.393 1771.31 447.129 1769.32 447.129 1767.57V1760.61H449.769V1776.45H446.937L442.737 1767.45L441.273 1764.11H441.201C441.321 1765.79 441.585 1767.69 441.585 1769.44V1776.45H438.945ZM458.303 1776.45L453.431 1760.61H456.359L458.591 1768.6C459.095 1770.4 459.431 1771.94 459.959 1773.76H460.055C460.583 1771.94 460.943 1770.4 461.447 1768.6L463.631 1760.61H466.439L461.591 1776.45H458.303ZM470.846 1776.45V1760.61H480.854V1762.94H473.606V1767.04H479.75V1769.37H473.606V1774.1H481.094V1776.45H470.846ZM485.956 1776.45V1760.61H491.188C494.428 1760.61 496.948 1761.76 496.948 1765.29C496.948 1767.69 495.7 1769.15 493.804 1769.8L497.572 1776.45H494.452L491.044 1770.23H488.716V1776.45H485.956ZM488.716 1768H490.9C493.06 1768 494.212 1767.09 494.212 1765.29C494.212 1763.44 493.06 1762.82 490.9 1762.82H488.716V1768ZM505.315 1776.45V1762.94H500.395V1760.61H513.043V1762.94H508.099V1776.45H505.315ZM516.97 1769.51V1767.52H527.65V1769.51H516.97ZM533.208 1776.45V1760.61H543.216V1762.94H535.968V1767.04H542.112V1769.37H535.968V1774.1H543.456V1776.45H533.208ZM547.983 1776.45V1760.61H550.935L553.119 1766.8L553.887 1769.18H553.983L554.703 1766.8L556.887 1760.61H559.839V1776.45H557.487V1769.32C557.487 1767.81 557.703 1764.83 557.847 1763.34H557.751L556.551 1767.21L554.559 1772.18H553.215L551.199 1767.21L549.999 1763.34H549.927C550.047 1764.83 550.287 1767.81 550.287 1769.32V1776.45H547.983ZM564.969 1776.45V1760.61H569.577C572.793 1760.61 575.145 1761.59 575.145 1764.5C575.145 1765.98 574.257 1767.45 572.409 1767.95V1768.05C574.689 1768.43 575.937 1769.63 575.937 1771.79C575.937 1774.96 573.417 1776.45 569.985 1776.45H564.969ZM567.729 1767.18H569.313C571.521 1767.18 572.433 1766.32 572.433 1764.83C572.433 1763.37 571.425 1762.77 569.385 1762.77H567.729V1767.18ZM567.729 1774.29H569.697C572.001 1774.29 573.225 1773.42 573.225 1771.62C573.225 1769.92 572.049 1769.18 569.697 1769.18H567.729V1774.29ZM580.824 1776.45V1760.61H590.832V1762.94H583.584V1767.04H589.728V1769.37H583.584V1774.1H591.072V1776.45H580.824ZM595.695 1776.45V1760.61H599.751C604.383 1760.61 607.167 1763.22 607.167 1768.46C607.167 1773.69 604.383 1776.45 599.895 1776.45H595.695ZM598.479 1774.19H599.583C602.607 1774.19 604.311 1772.34 604.311 1768.46C604.311 1764.57 602.607 1762.84 599.583 1762.84H598.479V1774.19ZM611.285 1776.45V1760.61H615.341C619.973 1760.61 622.757 1763.22 622.757 1768.46C622.757 1773.69 619.973 1776.45 615.485 1776.45H611.285ZM614.069 1774.19H615.173C618.197 1774.19 619.901 1772.34 619.901 1768.46C619.901 1764.57 618.197 1762.84 615.173 1762.84H614.069V1774.19ZM627.116 1776.45V1774.1H630.884V1762.94H627.116V1760.61H637.46V1762.94H633.668V1774.1H637.46V1776.45H627.116ZM642.466 1776.45V1760.61H645.274L649.498 1769.58L650.962 1772.94H651.034C650.914 1771.31 650.65 1769.32 650.65 1767.57V1760.61H653.29V1776.45H650.458L646.258 1767.45L644.794 1764.11H644.722C644.842 1765.79 645.106 1767.69 645.106 1769.44V1776.45H642.466ZM664.417 1776.74C660.433 1776.74 657.433 1773.81 657.433 1768.58C657.433 1763.37 660.457 1760.32 664.537 1760.32C666.625 1760.32 668.041 1761.3 669.001 1762.29L667.465 1764.02C666.745 1763.25 665.905 1762.72 664.537 1762.72C662.041 1762.72 660.289 1764.9 660.289 1768.48C660.289 1772.1 661.801 1774.34 664.585 1774.34C665.425 1774.34 666.241 1774.07 666.721 1773.62V1770.16H664.009V1767.88H669.217V1774.86C668.185 1775.87 666.433 1776.74 664.417 1776.74ZM679.096 1776.74C676.888 1776.74 674.8 1775.9 673.264 1774.41L674.872 1772.51C676.048 1773.59 677.608 1774.34 679.144 1774.34C681.088 1774.34 682.072 1773.52 682.072 1772.25C682.072 1770.93 681.016 1770.52 679.456 1769.9L677.32 1768.96C675.64 1768.31 673.936 1767.06 673.936 1764.76C673.936 1762.24 676.192 1760.32 679.384 1760.32C681.328 1760.32 683.128 1761.06 684.424 1762.34L682.984 1764.09C681.928 1763.22 680.848 1762.72 679.384 1762.72C677.752 1762.72 676.744 1763.42 676.744 1764.62C676.744 1765.86 678.016 1766.3 679.432 1766.87L681.496 1767.76C683.488 1768.58 684.904 1769.73 684.904 1772.03C684.904 1774.6 682.768 1776.74 Line truncated
<rect x="217" y="1001.95" width="83" height="83" rx="41.5" fill="#EDEDED" stroke="#707070"/>
<rect x="217" y="85.5" width="83" height="83" rx="41.5" fill="#EDEDED" stroke="#707070"/>
<path d="M835.885 1956.45V1940.61H845.893V1942.94H838.645V1947.04H844.789V1949.37H838.645V1954.1H846.133V1956.45H835.885ZM851.955 1956.45V1940.61H856.011C860.643 1940.61 863.427 1943.22 863.427 1948.46C863.427 1953.69 860.643 1956.45 856.155 1956.45H851.955ZM854.739 1954.19H855.843C858.867 1954.19 860.571 1952.34 860.571 1948.46C860.571 1944.57 858.867 1942.84 855.843 1942.84H854.739V1954.19ZM875.106 1956.74C871.122 1956.74 868.122 1953.81 868.122 1948.58C868.122 1943.37 871.146 1940.32 875.226 1940.32C877.314 1940.32 878.73 1941.3 879.69 1942.29L878.154 1944.02C877.434 1943.25 876.594 1942.72 875.226 1942.72C872.73 1942.72 870.978 1944.9 870.978 1948.48C870.978 1952.1 872.49 1954.34 875.274 1954.34C876.114 1954.34 876.93 1954.07 877.41 1953.62V1950.16H874.698V1947.88H879.906V1954.86C878.874 1955.87 877.122 1956.74 875.106 1956.74ZM886.256 1956.45V1940.61H896.264V1942.94H889.016V1947.04H895.16V1949.37H889.016V1954.1H896.504V1956.45H886.256ZM920.246 1956.45V1940.61H930.206V1942.94H923.006V1947.47H929.126V1949.8H923.006V1956.45H920.246ZM941.356 1956.74C937.9 1956.74 935.836 1954.74 935.836 1950.4V1940.61H938.596V1950.59C938.596 1953.21 939.652 1954.34 941.356 1954.34C943.036 1954.34 944.116 1953.21 944.116 1950.59V1940.61H946.804V1950.4C946.804 1954.74 944.788 1956.74 941.356 1956.74ZM952.699 1956.45V1940.61H955.507L959.731 1949.58L961.195 1952.94H961.267C961.147 1951.31 960.883 1949.32 960.883 1947.57V1940.61H963.523V1956.45H960.691L956.491 1947.45L955.027 1944.11H954.955C955.075 1945.79 955.339 1947.69 955.339 1949.44V1956.45H952.699ZM976.305 1956.74C972.297 1956.74 969.153 1953.81 969.153 1948.58C969.153 1943.39 972.249 1940.32 976.401 1940.32C978.345 1940.32 979.881 1941.26 980.865 1942.29L979.329 1944.02C978.537 1943.22 977.625 1942.72 976.401 1942.72C973.785 1942.72 971.985 1944.9 971.985 1948.48C971.985 1952.1 973.785 1954.34 976.473 1954.34C977.745 1954.34 978.729 1953.74 979.617 1952.75L981.177 1954.43C979.905 1955.92 978.297 1956.74 976.305 1956.74ZM990.288 1956.45V1942.94H985.368V1940.61H998.016V1942.94H993.072V1956.45H990.288ZM1003.31 1956.45V1954.1H1007.08V1942.94H1003.31V1940.61H1013.65V1942.94H1009.86V1954.1H1013.65V1956.45H1003.31ZM1025.26 1956.74C1021.64 1956.74 1019.09 1953.57 1019.09 1948.46C1019.09 1943.32 1021.64 1940.32 1025.26 1940.32C1028.91 1940.32 1031.43 1943.34 1031.43 1948.46C1031.43 1953.57 1028.91 1956.74 1025.26 1956.74ZM1025.26 1954.34C1027.28 1954.34 1028.6 1952.03 1028.6 1948.46C1028.6 1944.88 1027.28 1942.72 1025.26 1942.72C1023.25 1942.72 1021.95 1944.88 1021.95 1948.46C1021.95 1952.03 1023.25 1954.34 1025.26 1954.34ZM1036.65 1956.45V1940.61H1039.46L1043.68 1949.58L1045.15 1952.94H1045.22C1045.1 1951.31 1044.84 1949.32 1044.84 1947.57V1940.61H1047.48V1956.45H1044.64L1040.44 1947.45L1038.98 1944.11H1038.91C1039.03 1945.79 1039.29 1947.69 1039.29 1949.44V1956.45H1036.65Z" fill="#A0A0A0"/>
<path d="M834.253 1987.34L844.525 1969.41H846.901L836.605 1987.34H834.253ZM858.771 1986.74C854.763 1986.74 851.619 1983.81 851.619 1978.58C851.619 1973.39 854.715 1970.32 858.867 1970.32C860.811 1970.32 862.347 1971.26 863.331 1972.29L861.795 1974.02C861.003 1973.22 860.091 1972.72 858.867 1972.72C856.251 1972.72 854.451 1974.9 854.451 1978.48C854.451 1982.1 856.251 1984.34 858.939 1984.34C860.211 1984.34 861.195 1983.74 862.083 1982.75L863.643 1984.43C862.371 1985.92 860.763 1986.74 858.771 1986.74ZM874.146 1986.74C870.522 1986.74 867.978 1983.57 867.978 1978.46C867.978 1973.32 870.522 1970.32 874.146 1970.32C877.794 1970.32 880.314 1973.34 880.314 1978.46C880.314 1983.57 877.794 1986.74 874.146 1986.74ZM874.146 1984.34C876.162 1984.34 877.482 1982.03 877.482 1978.46C877.482 1974.88 876.162 1972.72 874.146 1972.72C872.13 1972.72 870.834 1974.88 870.834 1978.46C870.834 1982.03 872.13 1984.34 874.146 1984.34ZM885.536 1986.45V1970.61H888.344L892.568 1979.58L894.032 1982.94H894.104C893.984 1981.31 893.72 1979.32 893.72 1977.57V1970.61H896.36V1986.45H893.528L889.328 1977.45L887.864 1974.11H887.792C887.912 1975.79 888.176 1977.69 888.176 1979.44V1986.45H885.536ZM906.095 1986.45L901.223 1970.61H904.151L906.383 1978.6C906.887 1980.4 907.223 1981.94 907.751 1983.76H907.847C908.375 1981.94 908.735 1980.4 909.239 1978.6L911.423 1970.61H914.231L909.383 1986.45H906.095ZM919.838 1986.45V1970.61H929.846V1972.94H922.598V1977.04H928.742V1979.37H922.598V1984.1H930.086V1986.45H919.838ZM936.148 1986.45V1970.61H941.38C944.62 1970.61 947.14 1971.76 947.14 1975.29C947.14 1977.69 945.892 1979.15 943.996 1979.8L947.764 1986.45H944.644L941.236 1980.23H938.908V1986.45H936.148ZM938.908 1978H941.092C943.252 1978 944.404 1977.09 944.404 1975.29C944.404 1973.44 943.252 1972.82 941.092 1972.82H938.908V1978ZM956.707 1986.45V1972.94H951.787V1970.61H964.435V1972.94H959.491V1986.45H956.707ZM969.561 1979.51V1977.52H980.241V1979.51H969.561ZM987 1986.45V1970.61H997.008V1972.94H989.76V1977.04H995.904V1979.37H989.76V1984.1H997.248V1986.45H987ZM1002.97 1986.45V1970.61H1005.93L1008.11 1976.8L1008.88 1979.18H1008.97L1009.69 1976.8L1011.88 1970.61H1014.83V1986.45H1012.48V1979.32C1012.48 1977.81 1012.69 1974.83 1012.84 1973.34H1012.74L1011.54 1977.21L1009.55 1982.18H1008.21L1006.19 1977.21L1004.99 1973.34H1004.92C1005.04 1974.83 1005.28 1977.81 1005.28 1979.32V1986.45H1002.97ZM1021.16 1986.45V1970.61H1025.77C1028.99 1970.61 1031.34 1971.59 1031.34 1974.5C1031.34 1975.98 1030.45 1977.45 1028.6 1977.95V1978.05C1030.88 1978.43 1032.13 1979.63 1032.13 1981.79C1032.13 1984.96 1029.61 1986.45 1026.18 1986.45H1021.16ZM1023.92 1977.18H1025.51C1027.71 1977.18 1028.63 1976.32 1028.63 1974.83C1028.63 1973.37 1027.62 1972.77 1025.58 1972.77H1023.92V1977.18ZM1023.92 1984.29H1025.89C1028.19 1984.29 1029.42 1983.42 1029.42 1981.62C1029.42 1979.92 1028.24 1979.18 1025.89 1979.18H1023.92V1984.29ZM1038.22 1986.45V1970.61H1048.22V1972.94H1040.98V1977.04H1047.12V1979.37H1040.98V1984.1H1048.46V1986.45H1038.22ZM1054.29 1986.45V1970.61H1058.34C1062.97 1970.61 1065.76 1973.22 1065.76 1978.46C1065.76 1983.69 1062.97 1986.45 1058.49 1986.45H1054.29ZM1057.07 1984.19H1058.17C1061.2 1984.19 1062.9 1982.34 1062.9 1978.46C1062.9 1974.57 1061.2 1972.84 1058.17 1972.84H1057.07V1984.19ZM1071.08 1986.45V1970.61H1075.13C1079.77 1970.61 1082.55 1973.22 1082.55 1978.46C1082.55 1983.69 1079.77 1986.45 1075.28 1986.45H1071.08ZM1073.86 1984.19H1074.97C1077.99 1984.19 1079.69 1982.34 1079.69 1978.46C1079.69 1974.57 1077.99 1972.84 1074.97 1972.84H1073.86V1984.19ZM1088.11 1986.45V1984.1H1091.88V1972.94H1088.11V1970.61H1098.45V1972.94H1094.66V1984.1H1098.45V1986.45H1088.11ZM1104.66 1986.45V1970.61H1107.47L1111.69 1979.58L1113.15 1982.94H1113.23C1113.11 1981.31 1112.84 1979.32 1112.84 1977.57V1970.61H1115.48V1986.45H1112.65L1108.45 1977.45L1106.99 1974.11H1106.91C1107.03 1975.79 1107.3 1977.69 1107.3 1979.44V1986.45H1104.66ZM1127.81 1986.74C1123.82 1986.74 1120.82 1983.81 1120.82 1978.58C1120.82 1973.37 1123.85 1970.32 1127.93 1970.32C1130.02 1970.32 1131.43 1971.3 1132.39 1972.29L1130.86 1974.02C1130.14 1973.25 1129.3 1972.72 1127.93 1972.72C1125.43 1972.72 1123.68 1974.9 1123.68 1978.48C1123.68 1982.1 1125.19 1984.34 1127.98 1984.34C1128.82 1984.34 1129.63 1984.07 1130.11 1983.62V1980.16H1127.4V1977.88H1132.61V1984.86C1131.58 1985.87 1129.82 1986.74 1127.81 1986.74ZM1143.69 1986.74C1141.48 1986.74 1139.39 1985.9 1137.86 1984.41L1139.46 1982.51C1140.64 1983.59 1142.2 1984.34 1143.74 1984.34C1145.68 1984.34 1146.66 1983.52 1146.66 1982.25C1146.66 1980.93 1145.61 1980.52 1144.05 1979.9L1141.91 1978.96C1140.23 1978.31 1138.53 1977.06 1138.53 1974.76C1138.53 1972.24 1140.78 1970.32 1143.98 1970.32C1145.92 1970.32 1147.72 1971.06 1149.02 1972.34L1147.58 1974.09C1146.52 1973.22 1145.44 1972.72 1143.98 1972.72C1142.34 1972.72 1141.34 1973.42 1141.34 1974.62C1141.34 1975.86 1142.61 1976.3 1144.02 1976.87L1146.09 1977.76C1148.08 1978.58 1149.5 1979.73 1149.5 1982.03C1149.5 1984.6 1147.36 1986.74 1143.6Line truncated
<rect x="483.738" y="614.777" width="157" height="56" rx="28" fill="#EDEDED"/>
<rect x="484.988" y="616.027" width="154.5" height="53.5" rx="26.75" stroke="#4D4D4D" stroke-opacity="0.1" stroke-width="2.5"/>
<path d="M518.106 651.777V649.425H521.874V638.265H518.106V635.937H528.45V638.265H524.658V649.425H528.45V651.777H518.106ZM533.457 651.777V635.937H536.265L540.489 644.913L541.953 648.273H542.025C541.905 646.641 541.641 644.649 541.641 642.897V635.937H544.281V651.777H541.449L537.249 642.777L535.785 639.441H535.713C535.833 641.121 536.097 643.017 536.097 644.769V651.777H533.457ZM554.496 652.065C552.288 652.065 550.2 651.225 548.664 649.737L550.272 647.841C551.448 648.921 553.008 649.665 554.544 649.665C556.488 649.665 557.472 648.849 557.472 647.577C557.472 646.257 556.416 645.849 554.856 645.225L552.72 644.289C551.04 643.641 549.336 642.393 549.336 640.089C549.336 637.569 551.592 635.649 554.784 635.649C556.728 635.649 558.528 636.393 559.824 637.665L558.384 639.417C557.328 638.553 556.248 638.049 554.784 638.049C553.152 638.049 552.144 638.745 552.144 639.945C552.144 641.193 553.416 641.625 554.832 642.201L556.896 643.089C558.888 643.905 560.304 645.057 560.304 647.361C560.304 649.929 558.168 652.065 554.496 652.065ZM565.358 651.777V635.937H575.366V638.265H568.118V642.369H574.262V644.697H568.118V649.425H575.606V651.777H565.358ZM580.469 651.777V635.937H585.701C588.941 635.937 591.461 637.089 591.461 640.617C591.461 643.017 590.213 644.481 588.317 645.129L592.085 651.777H588.965L585.557 645.561H583.229V651.777H580.469ZM583.229 643.329H585.413C587.573 643.329 588.725 642.417 588.725 640.617C588.725 638.769 587.573 638.145 585.413 638.145H583.229V643.329ZM599.828 651.777V638.265H594.908V635.937H607.556V638.265H602.612V651.777H599.828Z" fill="#1E1E1E"/>
<path d="M331.431 136V120.16H334.239L338.463 129.136L339.927 132.496H339.999C339.879 130.864 339.615 128.872 339.615 127.12V120.16H342.255V136H339.423L335.223 127L333.759 123.664H333.687C333.807 125.344 334.071 127.24 334.071 128.992V136H331.431ZM348.941 136V120.16H358.949V122.488H351.701V126.592H357.845V128.92H351.701V133.648H359.189V136H348.941ZM365.636 136L363.38 120.136H366.188L367.076 129.352C367.124 130.696 367.22 132.016 367.292 133.336H367.364C367.652 132.016 367.988 130.672 368.276 129.352L369.644 124.216H371.42L372.764 129.352C373.028 130.648 373.388 131.992 373.676 133.336H373.772L373.988 129.352L374.828 120.136H377.444L375.308 136H372.356L370.964 130.144C370.772 129.184 370.58 128.152 370.46 127.216H370.388C370.244 128.152 370.076 129.184 369.86 130.144L368.54 136H365.636ZM398.833 136V120.16H404.065C407.305 120.16 409.825 121.312 409.825 124.84C409.825 127.24 408.577 128.704 406.681 129.352L410.449 136H407.329L403.921 129.784H401.593V136H398.833ZM401.593 127.552H403.777C405.937 127.552 407.089 126.64 407.089 124.84C407.089 122.992 405.937 122.368 403.777 122.368H401.593V127.552ZM420.784 136.288C417.16 136.288 414.616 133.12 414.616 128.008C414.616 122.872 417.16 119.872 420.784 119.872C424.432 119.872 426.952 122.896 426.952 128.008C426.952 133.12 424.432 136.288 420.784 136.288ZM420.784 133.888C422.8 133.888 424.12 131.584 424.12 128.008C424.12 124.432 422.8 122.272 420.784 122.272C418.768 122.272 417.472 124.432 417.472 128.008C417.472 131.584 418.768 133.888 420.784 133.888ZM432.799 136L430.543 120.136H433.351L434.239 129.352C434.287 130.696 434.383 132.016 434.455 133.336H434.527C434.815 132.016 435.151 130.672 435.439 129.352L436.807 124.216H438.583L439.927 129.352C440.191 130.648 440.551 131.992 440.839 133.336H440.935L441.151 129.352L441.991 120.136H444.607L442.471 136H439.519L438.127 130.144C437.935 129.184 437.743 128.152 437.623 127.216H437.551C437.407 128.152 437.239 129.184 437.023 130.144L435.703 136H432.799ZM465.996 136V133.648H469.764V122.488H465.996V120.16H476.34V122.488H472.548V133.648H476.34V136H465.996ZM482.546 136V120.16H485.354L489.578 129.136L491.042 132.496H491.114C490.994 130.864 490.73 128.872 490.73 127.12V120.16H493.37V136H490.538L486.338 127L484.874 123.664H484.802C484.922 125.344 485.186 127.24 485.186 128.992V136H482.546ZM504.785 136.288C502.577 136.288 500.489 135.448 498.953 133.96L500.561 132.064C501.737 133.144 503.297 133.888 504.833 133.888C506.777 133.888 507.761 133.072 507.761 131.8C507.761 130.48 506.705 130.072 505.145 129.448L503.009 128.512C501.329 127.864 499.625 126.616 499.625 124.312C499.625 121.792 501.881 119.872 505.073 119.872C507.017 119.872 508.817 120.616 510.113 121.888L508.673 123.64C507.617 122.776 506.537 122.272 505.073 122.272C503.441 122.272 502.433 122.968 502.433 124.168C502.433 125.416 503.705 125.848 505.121 126.424L507.185 127.312C509.177 128.128 510.593 129.28 510.593 131.584C510.593 134.152 508.457 136.288 504.785 136.288ZM516.848 136V120.16H526.856V122.488H519.608V126.592H525.752V128.92H519.608V133.648H527.096V136H516.848ZM533.158 136V120.16H538.39C541.63 120.16 544.15 121.312 544.15 124.84C544.15 127.24 542.902 128.704 541.006 129.352L544.774 136H541.654L538.246 129.784H535.918V136H533.158ZM535.918 127.552H538.102C540.262 127.552 541.414 126.64 541.414 124.84C541.414 122.992 540.262 122.368 538.102 122.368H535.918V127.552ZM553.717 136V122.488H548.797V120.16H561.445V122.488H556.501V136H553.717ZM567.22 136V120.16H577.228V122.488H569.98V126.592H576.124V128.92H569.98V133.648H577.468V136H567.22ZM583.29 136V120.16H587.346C591.978 120.16 594.762 122.776 594.762 128.008C594.762 133.24 591.978 136 587.49 136H583.29ZM586.074 133.744H587.178C590.202 133.744 591.906 131.896 591.906 128.008C591.906 124.12 590.202 122.392 587.178 122.392H586.074V133.744ZM617.111 136V133.648H620.879V122.488H617.111V120.16H627.455V122.488H623.663V133.648H627.455V136H617.111ZM633.662 136V120.16H636.47L640.694 129.136L642.158 132.496H642.23C642.11 130.864 641.846 128.872 641.846 127.12V120.16H644.486V136H641.654L637.454 127L635.99 123.664H635.918C636.038 125.344 636.302 127.24 636.302 128.992V136H633.662ZM654.461 136V122.488H649.541V120.16H662.189V122.488H657.245V136H654.461ZM672.643 136.288C669.019 136.288 666.475 133.12 666.475 128.008C666.475 122.872 669.019 119.872 672.643 119.872C676.291 119.872 678.811 122.896 678.811 128.008C678.811 133.12 676.291 136.288 672.643 136.288ZM672.643 133.888C674.659 133.888 675.979 131.584 675.979 128.008C675.979 124.432 674.659 122.272 672.643 122.272C670.627 122.272 669.331 124.432 669.331 128.008C669.331 131.584 670.627 133.888 672.643 133.888ZM704.833 136V122.488H699.913V120.16H712.561V122.488H707.617V136H704.833ZM716.319 136L721.407 120.16H724.647L729.735 136H726.807L725.583 131.68H720.375L719.127 136H716.319ZM720.975 129.496H724.983L724.431 127.528C723.951 125.848 723.471 124.072 723.015 122.32H722.919C722.487 124.072 722.007 125.848 721.527 127.528L720.975 129.496ZM734.862 136V120.16H739.47C742.686 120.16 745.038 121Line truncated
<path d="M340.3 1037.45V1021.61H343.108L347.332 1030.58L348.796 1033.94H348.868C348.748 1032.31 348.484 1030.32 348.484 1028.57V1021.61H351.124V1037.45H348.292L344.092 1028.45L342.628 1025.11H342.556C342.676 1026.79 342.94 1028.69 342.94 1030.44V1037.45H340.3ZM357.811 1037.45V1021.61H367.819V1023.94H360.571V1028.04H366.715V1030.37H360.571V1035.1H368.059V1037.45H357.811ZM374.505 1037.45L372.249 1021.58H375.057L375.945 1030.8C375.993 1032.14 376.089 1033.46 376.161 1034.78H376.233C376.521 1033.46 376.857 1032.12 377.145 1030.8L378.513 1025.66H380.289L381.633 1030.8C381.897 1032.1 382.257 1033.44 382.545 1034.78H382.641L382.857 1030.8L383.697 1021.58H386.313L384.177 1037.45H381.225L379.833 1031.59C379.641 1030.63 379.449 1029.6 379.329 1028.66H379.257C379.113 1029.6 378.945 1030.63 378.729 1031.59L377.409 1037.45H374.505ZM407.702 1037.45V1021.61H412.934C416.174 1021.61 418.694 1022.76 418.694 1026.29C418.694 1028.69 417.446 1030.15 415.55 1030.8L419.318 1037.45H416.198L412.79 1031.23H410.462V1037.45H407.702ZM410.462 1029H412.646C414.806 1029 415.958 1028.09 415.958 1026.29C415.958 1024.44 414.806 1023.82 412.646 1023.82H410.462V1029ZM429.653 1037.74C426.029 1037.74 423.485 1034.57 423.485 1029.46C423.485 1024.32 426.029 1021.32 429.653 1021.32C433.301 1021.32 435.821 1024.34 435.821 1029.46C435.821 1034.57 433.301 1037.74 429.653 1037.74ZM429.653 1035.34C431.669 1035.34 432.989 1033.03 432.989 1029.46C432.989 1025.88 431.669 1023.72 429.653 1023.72C427.637 1023.72 426.341 1025.88 426.341 1029.46C426.341 1033.03 427.637 1035.34 429.653 1035.34ZM441.668 1037.45L439.412 1021.58H442.22L443.108 1030.8C443.156 1032.14 443.252 1033.46 443.324 1034.78H443.396C443.684 1033.46 444.02 1032.12 444.308 1030.8L445.676 1025.66H447.452L448.796 1030.8C449.06 1032.1 449.42 1033.44 449.708 1034.78H449.804L450.02 1030.8L450.86 1021.58H453.476L451.34 1037.45H448.388L446.996 1031.59C446.804 1030.63 446.612 1029.6 446.492 1028.66H446.42C446.276 1029.6 446.108 1030.63 445.892 1031.59L444.572 1037.45H441.668ZM478.633 1037.45V1023.94H473.713V1021.61H486.361V1023.94H481.417V1037.45H478.633ZM491.656 1037.45V1021.61H496.888C500.128 1021.61 502.648 1022.76 502.648 1026.29C502.648 1028.69 501.4 1030.15 499.504 1030.8L503.272 1037.45H500.152L496.744 1031.23H494.416V1037.45H491.656ZM494.416 1029H496.6C498.76 1029 499.912 1028.09 499.912 1026.29C499.912 1024.44 498.76 1023.82 496.6 1023.82H494.416V1029ZM508.446 1037.45V1035.1H512.214V1023.94H508.446V1021.61H518.79V1023.94H514.998V1035.1H518.79V1037.45H508.446ZM531.357 1037.74C527.373 1037.74 524.373 1034.81 524.373 1029.58C524.373 1024.37 527.397 1021.32 531.477 1021.32C533.565 1021.32 534.981 1022.3 535.941 1023.29L534.405 1025.02C533.685 1024.25 532.845 1023.72 531.477 1023.72C528.981 1023.72 527.229 1025.9 527.229 1029.48C527.229 1033.1 528.741 1035.34 531.525 1035.34C532.365 1035.34 533.181 1035.07 533.661 1034.62V1031.16H530.949V1028.88H536.157V1035.86C535.125 1036.87 533.373 1037.74 531.357 1037.74ZM548.148 1037.74C544.164 1037.74 541.164 1034.81 541.164 1029.58C541.164 1024.37 544.188 1021.32 548.268 1021.32C550.356 1021.32 551.772 1022.3 552.732 1023.29L551.196 1025.02C550.476 1024.25 549.636 1023.72 548.268 1023.72C545.772 1023.72 544.02 1025.9 544.02 1029.48C544.02 1033.1 545.532 1035.34 548.316 1035.34C549.156 1035.34 549.972 1035.07 550.452 1034.62V1031.16H547.74V1028.88H552.948V1035.86C551.916 1036.87 550.164 1037.74 548.148 1037.74ZM559.298 1037.45V1021.61H569.306V1023.94H562.058V1028.04H568.202V1030.37H562.058V1035.1H569.546V1037.45H559.298ZM575.609 1037.45V1021.61H580.841C584.081 1021.61 586.601 1022.76 586.601 1026.29C586.601 1028.69 585.353 1030.15 583.457 1030.8L587.225 1037.45H584.105L580.697 1031.23H578.369V1037.45H575.609ZM578.369 1029H580.553C582.713 1029 583.865 1028.09 583.865 1026.29C583.865 1024.44 582.713 1023.82 580.553 1023.82H578.369V1029ZM597.607 1037.74C595.399 1037.74 593.311 1036.9 591.775 1035.41L593.383 1033.51C594.559 1034.59 596.119 1035.34 597.655 1035.34C599.599 1035.34 600.583 1034.52 600.583 1033.25C600.583 1031.93 599.527 1031.52 597.967 1030.9L595.831 1029.96C594.151 1029.31 592.447 1028.06 592.447 1025.76C592.447 1023.24 594.703 1021.32 597.895 1021.32C599.839 1021.32 601.639 1022.06 602.935 1023.34L601.495 1025.09C600.439 1024.22 599.359 1023.72 597.895 1023.72C596.263 1023.72 595.255 1024.42 595.255 1025.62C595.255 1026.86 596.527 1027.3 597.943 1027.87L600.007 1028.76C601.999 1029.58 603.415 1030.73 603.415 1033.03C603.415 1035.6 601.279 1037.74 597.607 1037.74ZM626.461 1037.45V1021.61H636.469V1023.94H629.221V1028.04H635.365V1030.37H629.221V1035.1H636.709V1037.45H626.461ZM642.531 1037.45V1021.61H646.587C651.219 1021.61 654.003 1024.22 654.003 1029.46C654.003 1034.69 651.219 1037.45 646.731 1037.45H642.531ZM645.315 1035.19H646.419C649.443 1035.19 651.147 1033.34 651.147 1029.46C651.147 1025.57 649.443 1023.84 646.419 1023.84H645.315V1035.19ZM665.682 1037.74C661.698 1037.74 658.698 1034.81 658.698 1029.58C658.698 1024.37 661.722 1021.32 665.802 1Line truncated
<path d="M266.666 1055.45H250.602V1051.06L257.642 1045.21C258.858 1044.16 259.733 1043.26 260.266 1042.49C260.8 1041.72 261.066 1040.91 261.066 1040.06V1039.74C261.066 1038.8 260.789 1038.09 260.234 1037.62C259.68 1037.13 258.933 1036.89 257.994 1036.89C256.928 1036.89 256.106 1037.2 255.53 1037.82C254.954 1038.43 254.549 1039.17 254.314 1040.02L250.122 1038.42C250.378 1037.66 250.73 1036.93 251.178 1036.25C251.626 1035.54 252.192 1034.94 252.874 1034.42C253.578 1033.91 254.389 1033.51 255.306 1033.21C256.224 1032.89 257.28 1032.73 258.474 1032.73C259.69 1032.73 260.778 1032.9 261.738 1033.24C262.698 1033.58 263.509 1034.05 264.17 1034.65C264.832 1035.24 265.333 1035.96 265.674 1036.79C266.016 1037.6 266.186 1038.49 266.186 1039.45C266.186 1040.39 266.026 1041.25 265.706 1042.04C265.408 1042.81 264.981 1043.53 264.426 1044.22C263.893 1044.9 263.253 1045.56 262.506 1046.2C261.781 1046.84 261.002 1047.48 260.17 1048.12L255.914 1051.42H266.666V1055.45Z" fill="#232323"/>
<path d="M251.914 139V135.128H257.93V120.152H257.642L253.098 126.104L250.026 123.704L255.37 116.664H262.73V135.128H267.466V139H251.914Z" fill="#232323"/>
<rect x="1174.37" y="1550.45" width="157" height="56" rx="28" fill="#EDEDED"/>
<rect x="1175.62" y="1551.7" width="154.5" height="53.5" rx="26.75" stroke="#4D4D4D" stroke-opacity="0.1" stroke-width="2.5"/>
<path d="M1208.74 1587.45V1585.1H1212.51V1573.94H1208.74V1571.61H1219.08V1573.94H1215.29V1585.1H1219.08V1587.45H1208.74ZM1224.09 1587.45V1571.61H1226.9L1231.12 1580.58L1232.58 1583.94H1232.66C1232.54 1582.31 1232.27 1580.32 1232.27 1578.57V1571.61H1234.91V1587.45H1232.08L1227.88 1578.45L1226.42 1575.11H1226.34C1226.46 1576.79 1226.73 1578.69 1226.73 1580.44V1587.45H1224.09ZM1245.13 1587.74C1242.92 1587.74 1240.83 1586.9 1239.29 1585.41L1240.9 1583.51C1242.08 1584.59 1243.64 1585.34 1245.17 1585.34C1247.12 1585.34 1248.1 1584.52 1248.1 1583.25C1248.1 1581.93 1247.05 1581.52 1245.49 1580.9L1243.35 1579.96C1241.67 1579.31 1239.97 1578.06 1239.97 1575.76C1239.97 1573.24 1242.22 1571.32 1245.41 1571.32C1247.36 1571.32 1249.16 1572.06 1250.45 1573.34L1249.01 1575.09C1247.96 1574.22 1246.88 1573.72 1245.41 1573.72C1243.78 1573.72 1242.77 1574.42 1242.77 1575.62C1242.77 1576.86 1244.05 1577.3 1245.46 1577.87L1247.53 1578.76C1249.52 1579.58 1250.93 1580.73 1250.93 1583.03C1250.93 1585.6 1248.8 1587.74 1245.13 1587.74ZM1255.99 1587.45V1571.61H1266V1573.94H1258.75V1578.04H1264.89V1580.37H1258.75V1585.1H1266.24V1587.45H1255.99ZM1271.1 1587.45V1571.61H1276.33C1279.57 1571.61 1282.09 1572.76 1282.09 1576.29C1282.09 1578.69 1280.84 1580.15 1278.95 1580.8L1282.72 1587.45H1279.6L1276.19 1581.23H1273.86V1587.45H1271.1ZM1273.86 1579H1276.04C1278.2 1579 1279.36 1578.09 1279.36 1576.29C1279.36 1574.44 1278.2 1573.82 1276.04 1573.82H1273.86V1579ZM1290.46 1587.45V1573.94H1285.54V1571.61H1298.19V1573.94H1293.24V1587.45H1290.46Z" fill="#1E1E1E"/>
<rect x="926.5" y="1835.45" width="314" height="56" rx="28" fill="#EDEDED"/>
<rect x="927.75" y="1836.7" width="311.5" height="53.5" rx="26.75" stroke="#4D4D4D" stroke-opacity="0.1" stroke-width="2.5"/>
<path d="M967.569 1872.74C963.561 1872.74 960.417 1869.81 960.417 1864.58C960.417 1859.39 963.513 1856.32 967.665 1856.32C969.609 1856.32 971.145 1857.26 972.129 1858.29L970.593 1860.02C969.801 1859.22 968.889 1858.72 967.665 1858.72C965.049 1858.72 963.249 1860.9 963.249 1864.48C963.249 1868.1 965.049 1870.34 967.737 1870.34C969.009 1870.34 969.993 1869.74 970.881 1868.75L972.441 1870.43C971.169 1871.92 969.561 1872.74 967.569 1872.74ZM976.584 1872.45V1856.61H981.816C985.056 1856.61 987.576 1857.76 987.576 1861.29C987.576 1863.69 986.328 1865.15 984.432 1865.8L988.2 1872.45H985.08L981.672 1866.23H979.344V1872.45H976.584ZM979.344 1864H981.528C983.688 1864 984.84 1863.09 984.84 1861.29C984.84 1859.44 983.688 1858.82 981.528 1858.82H979.344V1864ZM992.654 1872.45V1856.61H1002.66V1858.94H995.414V1863.04H1001.56V1865.37H995.414V1870.1H1002.9V1872.45H992.654ZM1006.23 1872.45L1011.32 1856.61H1014.56L1019.64 1872.45H1016.72L1015.49 1868.13H1010.28L1009.04 1872.45H1006.23ZM1010.88 1865.94H1014.89L1014.34 1863.98C1013.86 1862.3 1013.38 1860.52 1012.92 1858.77H1012.83C1012.4 1860.52 1011.92 1862.3 1011.44 1863.98L1010.88 1865.94ZM1027.12 1872.45V1858.94H1022.2V1856.61H1034.85V1858.94H1029.91V1872.45H1027.12ZM1039.43 1872.45V1856.61H1049.43V1858.94H1042.19V1863.04H1048.33V1865.37H1042.19V1870.1H1049.67V1872.45H1039.43ZM1070.61 1872.45V1856.61H1080.62V1858.94H1073.37V1863.04H1079.51V1865.37H1073.37V1870.1H1080.86V1872.45H1070.61ZM1085.38 1872.45V1856.61H1088.33L1090.52 1862.8L1091.29 1865.18H1091.38L1092.1 1862.8L1094.29 1856.61H1097.24V1872.45H1094.89V1865.32C1094.89 1863.81 1095.1 1860.83 1095.25 1859.34H1095.15L1093.95 1863.21L1091.96 1868.18H1090.61L1088.6 1863.21L1087.4 1859.34H1087.33C1087.45 1860.83 1087.69 1863.81 1087.69 1865.32V1872.45H1085.38ZM1102.37 1872.45V1856.61H1106.98C1110.19 1856.61 1112.54 1857.59 1112.54 1860.5C1112.54 1861.98 1111.66 1863.45 1109.81 1863.95V1864.05C1112.09 1864.43 1113.34 1865.63 1113.34 1867.79C1113.34 1870.96 1110.82 1872.45 1107.38 1872.45H1102.37ZM1105.13 1863.18H1106.71C1108.92 1863.18 1109.83 1862.32 1109.83 1860.83C1109.83 1859.37 1108.82 1858.77 1106.78 1858.77H1105.13V1863.18ZM1105.13 1870.29H1107.1C1109.4 1870.29 1110.62 1869.42 1110.62 1867.62C1110.62 1865.92 1109.45 1865.18 1107.1 1865.18H1105.13V1870.29ZM1118.22 1872.45V1856.61H1128.23V1858.94H1120.98V1863.04H1127.13V1865.37H1120.98V1870.1H1128.47V1872.45H1118.22ZM1133.09 1872.45V1856.61H1137.15C1141.78 1856.61 1144.57 1859.22 1144.57 1864.46C1144.57 1869.69 1141.78 1872.45 1137.29 1872.45H1133.09ZM1135.88 1870.19H1136.98C1140.01 1870.19 1141.71 1868.34 1141.71 1864.46C1141.71 1860.57 1140.01 1858.84 1136.98 1858.84H1135.88V1870.19ZM1148.68 1872.45V1856.61H1152.74C1157.37 1856.61 1160.16 1859.22 1160.16 1864.46C1160.16 1869.69 1157.37 1872.45 1152.88 1872.45H1148.68ZM1151.47 1870.19H1152.57C1155.6 1870.19 1157.3 1868.34 1157.3 1864.46C1157.3 1860.57 1155.6 1858.84 1152.57 1858.84H1151.47V1870.19ZM1164.52 1872.45V1870.1H1168.28V1858.94H1164.52V1856.61H1174.86V1858.94H1171.07V1870.1H1174.86V1872.45H1164.52ZM1179.87 1872.45V1856.61H1182.67L1186.9 1865.58L1188.36 1868.94H1188.43C1188.31 1867.31 1188.05 1865.32 1188.05 1863.57V1856.61H1190.69V1872.45H1187.86L1183.66 1863.45L1182.19 1860.11H1182.12C1182.24 1861.79 1182.51 1863.69 1182.51 1865.44V1872.45H1179.87ZM1201.82 1872.74C1197.83 1872.74 1194.83 1869.81 1194.83 1864.58C1194.83 1859.37 1197.86 1856.32 1201.94 1856.32C1204.02 1856.32 1205.44 1857.3 1206.4 1858.29L1204.86 1860.02C1204.14 1859.25 1203.3 1858.72 1201.94 1858.72C1199.44 1858.72 1197.69 1860.9 1197.69 1864.48C1197.69 1868.1 1199.2 1870.34 1201.98 1870.34C1202.82 1870.34 1203.64 1870.07 1204.12 1869.62V1866.16H1201.41V1863.88H1206.62V1870.86C1205.58 1871.87 1203.83 1872.74 1201.82 1872.74Z" fill="#1E1E1E"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M859.09 1873.59C857.707 1870.5 856.938 1867.06 856.938 1863.45C856.938 1849.92 867.711 1838.95 881 1838.95C884.564 1838.95 887.952 1839.74 890.999 1841.16C892.343 1840.27 893.945 1839.75 895.666 1839.75C900.412 1839.75 904.26 1843.67 904.26 1848.5C904.26 1850.25 903.755 1851.88 902.886 1853.25C904.284 1856.36 905.062 1859.81 905.062 1863.45C905.062 1876.98 894.289 1887.95 881 1887.95C877.387 1887.95 873.956 1887.14 870.877 1885.68C869.57 1886.5 868.031 1886.97 866.384 1886.97C861.638 1886.97 857.79 1883.05 857.79 1878.22C857.79 1876.52 858.266 1874.93 859.09 1873.59ZM860.375 1863.45C860.375 1851.85 869.609 1842.45 881 1842.45C883.609 1842.45 886.102 1842.94 888.396 1843.84C887.558 1845.19 887.072 1846.79 887.072 1848.5C887.072 1848.66 887.076 1848.81 887.084 1848.96C885.217 1848.15 883.16 1847.7 881 1847.7C872.457 1847.7 865.531 1854.75 865.531 1863.45C865.531 1865.58 865.948 1867.62 866.704 1869.48C866.598 1869.47 866.491 1869.47 866.384 1869.47C864.658 1869.47 863.05 1869.99 861.703 1870.88C860.845 1868.57 860.375 1866.07 860.375 1863.45ZM873.558 1883.04C875.865 1883.95 878.374 1884.45 881 1884.45C892.391 1884.45 901.625 1875.05 901.625 1863.45C901.625 1860.79 901.14 1858.24 900.255 1855.9C898.927 1856.76 897.354 1857.25 895.666 1857.25C895.517 1857.25 895.369 1857.25 895.222 1857.24C896.024 1859.15 896.469 1861.24 896.469 1863.45C896.469 1872.15 889.543 1879.2 881 1879.2C878.862 1879.2 876.826 1878.76 874.974 1877.96C874.976 1878.04 874.978 1878.13 874.978 1878.22C874.978 1880 874.455 1881.66 873.558 1883.04ZM890.51 1848.5C890.51 1845.61 892.819 1843.25 895.666 1843.25C898.514 1843.25 900.822 1845.61 900.822 1848.5C900.822 1851.4 898.514 1853.75 895.666 1853.75C892.819 1853.75 890.51 1851.4 890.51 1848.5ZM872.076 1871.66C872.356 1871.92 872.619 1872.19 872.864 1872.47C875.006 1874.47 877.863 1875.7 881 1875.7C887.644 1875.7 893.031 1870.21 893.031 1863.45C893.031 1856.68 887.644 1851.2 881 1851.2C874.355 1851.2 868.969 1856.68 868.969 1863.45C868.969 1866.61 870.145 1869.49 872.076 1871.66ZM866.384 1872.97C867.638 1872.97 868.787 1873.43 869.681 1874.18C869.904 1874.43 870.135 1874.66 870.373 1874.89C871.102 1875.8 871.54 1876.96 871.54 1878.22C871.54 1881.12 869.232 1883.47 866.384 1883.47C863.536 1883.47 861.228 1881.12 861.228 1878.22C861.228 1875.32 863.536 1872.97 866.384 1872.97Z" fill="#EDEDED"/>
<path d="M0 889.447L1600 889.447" stroke="#343434" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,119 @@
<svg width="349" height="208" viewBox="0 0 349 208" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_763_9547)">
<rect width="349" height="208" fill="#171717"/>
<mask id="path-1-inside-1_763_9547" fill="white">
<path d="M273.69 4.26089C291.738 13.086 307.399 26.1231 319.351 42.272C331.303 58.4209 339.195 77.2078 342.362 97.0473L294.75 104.646C292.802 92.443 287.948 80.8875 280.596 70.9546C273.245 61.0217 263.612 53.0028 252.511 47.5746L273.69 4.26089Z"/>
</mask>
<path d="M273.69 4.26089C291.738 13.086 307.399 26.1231 319.351 42.272C331.303 58.4209 339.195 77.2078 342.362 97.0473L294.75 104.646C292.802 92.443 287.948 80.8875 280.596 70.9546C273.245 61.0217 263.612 53.0028 252.511 47.5746L273.69 4.26089Z" fill="#171717" stroke="#333333" mask="url(#path-1-inside-1_763_9547)"/>
<mask id="path-2-inside-2_763_9547" fill="white">
<path d="M278.558 226.802C258.513 237.715 235.866 242.943 213.066 241.923C190.265 240.902 168.176 233.671 149.186 221.011L176.036 180.736C187.688 188.504 201.24 192.941 215.23 193.567C229.22 194.194 243.115 190.986 255.415 184.29L278.558 226.802Z"/>
</mask>
<path d="M278.558 226.802C258.513 237.715 235.866 242.943 213.066 241.923C190.265 240.902 168.176 233.671 149.186 221.011L176.036 180.736C187.688 188.504 201.24 192.941 215.23 193.567C229.22 194.194 243.115 190.986 255.415 184.29L278.558 226.802Z" stroke="#333333" mask="url(#path-2-inside-2_763_9547)"/>
<mask id="path-3-inside-3_763_9547" fill="white">
<path d="M121.433 195.753C107.384 178.453 98.2043 157.718 94.8419 135.687C91.4796 113.656 94.056 91.1263 102.305 70.423L147.271 88.34C142.209 101.043 140.629 114.866 142.692 128.384C144.755 141.902 150.387 154.624 159.007 165.239L121.433 195.753Z"/>
</mask>
<path d="M121.433 195.753C107.384 178.453 98.2043 157.718 94.8419 135.687C91.4796 113.656 94.056 91.1263 102.305 70.423L147.271 88.34C142.209 101.043 140.629 114.866 142.692 128.384C144.755 141.902 150.387 154.624 159.007 165.239L121.433 195.753Z" fill="#171717" stroke="#333333" mask="url(#path-3-inside-3_763_9547)"/>
<mask id="path-4-inside-4_763_9547" fill="white">
<path d="M146.929 14.1071C173.176 -4.23054 205.449 -11.8208 237.118 -7.10456L230.011 40.6183C210.541 37.7187 190.699 42.3853 174.562 53.6594L146.929 14.1071Z"/>
</mask>
<path d="M146.929 14.1071C173.176 -4.23054 205.449 -11.8208 237.118 -7.10456L230.011 40.6183C210.541 37.7187 190.699 42.3853 174.562 53.6594L146.929 14.1071Z" fill="#171717" stroke="#333333" mask="url(#path-4-inside-4_763_9547)"/>
<mask id="path-5-inside-5_763_9547" fill="white">
<path d="M236.19 -7.23917C241.776 -6.45004 247.302 -5.2845 252.73 -3.75052L239.619 42.6469C236.28 41.7034 232.881 40.9865 229.446 40.5011L236.19 -7.23917Z"/>
</mask>
<path d="M236.19 -7.23917C241.776 -6.45004 247.302 -5.2845 252.73 -3.75052L239.619 42.6469C236.28 41.7034 232.881 40.9865 229.446 40.5011L236.19 -7.23917Z" fill="#171717" stroke="#333333" mask="url(#path-5-inside-5_763_9547)"/>
<mask id="path-6-inside-6_763_9547" fill="white">
<path d="M308.046 -66.0023C337.365 -51.6666 362.804 -30.4891 382.219 -4.25674C401.634 21.9756 414.454 52.4932 419.597 84.7207L342.256 97.0641C339.092 77.2415 331.207 58.4706 319.265 42.3355C307.324 26.2004 291.676 13.1744 273.643 4.35682L308.046 -66.0023Z"/>
</mask>
<path d="M308.046 -66.0023C337.365 -51.6666 362.804 -30.4891 382.219 -4.25674C401.634 21.9756 414.454 52.4932 419.597 84.7207L342.256 97.0641C339.092 77.2415 331.207 58.4706 319.265 42.3355C307.324 26.2004 291.676 13.1744 273.643 4.35682L308.046 -66.0023Z" fill="#242424" stroke="#333333" mask="url(#path-6-inside-6_763_9547)"/>
<mask id="path-7-inside-7_763_9547" fill="white">
<path d="M185.523 317.543C140.754 310.152 99.7412 288.009 69.0018 254.633L126.837 201.366C145.698 221.844 170.862 235.431 198.331 239.966L185.523 317.543Z"/>
</mask>
<path d="M185.523 317.543C140.754 310.152 99.7412 288.009 69.0018 254.633L126.837 201.366C145.698 221.844 170.862 235.431 198.331 239.966L185.523 317.543Z" fill="#171717" stroke="#333333" mask="url(#path-7-inside-7_763_9547)"/>
<mask id="path-8-inside-8_763_9547" fill="white">
<path d="M19.9819 160.663C12.1757 125.313 13.9424 88.5197 25.0995 54.0799C36.2566 19.6402 56.4002 -11.1993 83.4522 -35.2569L135.703 23.4978C119.105 38.2588 106.745 57.181 99.8997 78.3123C93.054 99.4435 91.9701 122.019 96.7597 143.709L19.9819 160.663Z"/>
</mask>
<path d="M19.9819 160.663C12.1757 125.313 13.9424 88.5197 25.0995 54.0799C36.2566 19.6402 56.4002 -11.1993 83.4522 -35.2569L135.703 23.4978C119.105 38.2588 106.745 57.181 99.8997 78.3123C93.054 99.4435 91.9701 122.019 96.7597 143.709L19.9819 160.663Z" fill="#171717" stroke="#1F1F1F" mask="url(#path-8-inside-8_763_9547)"/>
<mask id="path-9-inside-9_763_9547" fill="white">
<path d="M69.4334 255.1C58.0028 242.767 48.1451 229.064 40.0859 214.305L109.095 176.622C114.04 185.678 120.088 194.085 127.102 201.653L69.4334 255.1Z"/>
</mask>
<path d="M69.4334 255.1C58.0028 242.767 48.1451 229.064 40.0859 214.305L109.095 176.622C114.04 185.678 120.088 194.085 127.102 201.653L69.4334 255.1Z" fill="#171717" stroke="#333333" mask="url(#path-9-inside-9_763_9547)"/>
<mask id="path-10-inside-10_763_9547" fill="white">
<path d="M102.135 -50.0079C144.771 -79.7958 197.195 -92.1256 248.639 -84.4644L237.094 -6.94301C205.466 -11.6531 173.235 -4.07273 147.022 14.241L102.135 -50.0079Z"/>
</mask>
<path d="M102.135 -50.0079C144.771 -79.7958 197.195 -92.1256 248.639 -84.4644L237.094 -6.94301C205.466 -11.6531 173.235 -4.07273 147.022 14.241L102.135 -50.0079Z" fill="#171717" stroke="#333333" mask="url(#path-10-inside-10_763_9547)"/>
<mask id="path-11-inside-11_763_9547" fill="white">
<path d="M257.714 -82.9021C275.394 -79.4451 292.536 -73.6556 308.691 -65.6854L274.04 4.55172C264.103 -0.350631 253.559 -3.91167 242.685 -6.03801L257.714 -82.9021Z"/>
</mask>
<path d="M257.714 -82.9021C275.394 -79.4451 292.536 -73.6556 308.691 -65.6854L274.04 4.55172C264.103 -0.350631 253.559 -3.91167 242.685 -6.03801L257.714 -82.9021Z" fill="#171717" stroke="#333333" mask="url(#path-11-inside-11_763_9547)"/>
<mask id="path-12-inside-12_763_9547" fill="white">
<path d="M202.38 192.552C183.607 188.516 167.001 177.654 155.78 162.071L180.082 144.573C186.966 154.134 197.155 160.798 208.674 163.275L202.38 192.552Z"/>
</mask>
<path d="M202.38 192.552C183.607 188.516 167.001 177.654 155.78 162.071L180.082 144.573C186.966 154.134 197.155 160.798 208.674 163.275L202.38 192.552Z" fill="#171717" stroke="#333333" mask="url(#path-12-inside-12_763_9547)"/>
<mask id="path-13-inside-13_763_9547" fill="white">
<path d="M142.988 133.458C140.022 119.993 140.702 105.98 144.958 92.8658C149.215 79.7514 156.893 68.0101 167.201 58.853L187.089 81.2409C180.764 86.8594 176.053 94.0636 173.442 102.11C170.83 110.157 170.413 118.755 172.232 127.016L142.988 133.458Z"/>
</mask>
<path d="M142.988 133.458C140.022 119.993 140.702 105.98 144.958 92.8658C149.215 79.7514 156.893 68.0101 167.201 58.853L187.089 81.2409C180.764 86.8594 176.053 94.0636 173.442 102.11C170.83 110.157 170.413 118.755 172.232 127.016L142.988 133.458Z" fill="#171717" stroke="#333333" mask="url(#path-13-inside-13_763_9547)"/>
<mask id="path-14-inside-14_763_9547" fill="white">
<path d="M174.285 53.2626C190.523 41.9176 210.49 37.2217 230.082 40.1396L225.686 69.6642C213.64 67.8704 201.364 70.7574 191.381 77.7324L174.285 53.2626Z"/>
</mask>
<path d="M174.285 53.2626C190.523 41.9176 210.49 37.2217 230.082 40.1396L225.686 69.6642C213.64 67.8704 201.364 70.7574 191.381 77.7324L174.285 53.2626Z" fill="#171717" stroke="#333333" mask="url(#path-14-inside-14_763_9547)"/>
<mask id="path-15-inside-15_763_9547" fill="white">
<path d="M229.509 40.0563C245.756 42.3518 260.856 49.7455 272.632 61.1724C284.409 72.5992 292.254 87.4693 295.038 103.64C297.822 119.812 295.401 136.449 288.124 151.156C280.847 165.863 269.089 177.881 254.544 185.478L240.735 159.038C249.681 154.365 256.913 146.974 261.389 137.928C265.865 128.881 267.354 118.648 265.642 108.701C263.93 98.7547 259.104 89.6083 251.861 82.5799C244.617 75.5514 235.329 71.0037 225.336 69.5917L229.509 40.0563Z"/>
</mask>
<path d="M229.509 40.0563C245.756 42.3518 260.856 49.7455 272.632 61.1724C284.409 72.5992 292.254 87.4693 295.038 103.64C297.822 119.812 295.401 136.449 288.124 151.156C280.847 165.863 269.089 177.881 254.544 185.478L240.735 159.038C249.681 154.365 256.913 146.974 261.389 137.928C265.865 128.881 267.354 118.648 265.642 108.701C263.93 98.7547 259.104 89.6083 251.861 82.5799C244.617 75.5514 235.329 71.0037 225.336 69.5917L229.509 40.0563Z" stroke="#333333" mask="url(#path-15-inside-15_763_9547)"/>
<mask id="path-16-inside-16_763_9547" fill="white">
<path d="M245.856 124.053C244.532 129.007 241.88 133.505 238.186 137.062C234.492 140.618 229.897 143.098 224.896 144.233L222.248 132.567C225.123 131.914 227.765 130.489 229.889 128.444C232.013 126.399 233.538 123.813 234.299 120.965L245.856 124.053Z"/>
</mask>
<path d="M245.856 124.053C244.532 129.007 241.88 133.505 238.186 137.062C234.492 140.618 229.897 143.098 224.896 144.233L222.248 132.567C225.123 131.914 227.765 130.489 229.889 128.444C232.013 126.399 233.538 123.813 234.299 120.965L245.856 124.053Z" fill="#1F1F1F" stroke="#242424" mask="url(#path-16-inside-16_763_9547)"/>
<mask id="path-17-inside-17_763_9547" fill="white">
<path d="M214.835 88.9085C219.484 88.2693 224.219 88.803 228.61 90.461C233 92.119 236.906 94.8486 239.973 98.4015C243.039 101.954 245.168 106.218 246.166 110.803C247.164 115.389 247 120.152 245.687 124.657L234.202 121.312C234.956 118.722 235.051 115.984 234.477 113.348C233.903 110.711 232.679 108.26 230.916 106.218C229.153 104.175 226.908 102.606 224.384 101.652C221.859 100.699 219.137 100.392 216.464 100.76L214.835 88.9085Z"/>
</mask>
<path d="M214.835 88.9085C219.484 88.2693 224.219 88.803 228.61 90.461C233 92.119 236.906 94.8486 239.973 98.4015C243.039 101.954 245.168 106.218 246.166 110.803C247.164 115.389 247 120.152 245.687 124.657L234.202 121.312C234.956 118.722 235.051 115.984 234.477 113.348C233.903 110.711 232.679 108.26 230.916 106.218C229.153 104.175 226.908 102.606 224.384 101.652C221.859 100.699 219.137 100.392 216.464 100.76L214.835 88.9085Z" fill="#171717" stroke="#242424" mask="url(#path-17-inside-17_763_9547)"/>
<mask id="path-18-inside-18_763_9547" fill="white">
<path d="M225.621 144.058C221.053 145.223 216.267 145.221 211.701 144.055C207.134 142.888 202.934 140.593 199.485 137.38C196.037 134.168 193.45 130.14 191.963 125.668C190.476 121.195 190.136 116.421 190.974 111.783L202.737 113.909C202.255 116.577 202.451 119.323 203.306 121.896C204.161 124.469 205.649 126.786 207.633 128.634C209.617 130.482 212.033 131.802 214.66 132.473C217.287 133.144 220.04 133.145 222.667 132.475L225.621 144.058Z"/>
</mask>
<path d="M225.621 144.058C221.053 145.223 216.267 145.221 211.701 144.055C207.134 142.888 202.934 140.593 199.485 137.38C196.037 134.168 193.45 130.14 191.963 125.668C190.476 121.195 190.136 116.421 190.974 111.783L202.737 113.909C202.255 116.577 202.451 119.323 203.306 121.896C204.161 124.469 205.649 126.786 207.633 128.634C209.617 130.482 212.033 131.802 214.66 132.473C217.287 133.144 220.04 133.145 222.667 132.475L225.621 144.058Z" fill="#171717" stroke="#242424" mask="url(#path-18-inside-18_763_9547)"/>
<mask id="path-19-inside-19_763_9547" fill="white">
<path d="M190.841 112.589C191.761 106.492 194.658 100.866 199.086 96.5758C203.515 92.2856 209.23 89.5686 215.352 88.8422L216.759 100.702C213.235 101.12 209.945 102.684 207.396 105.154C204.847 107.623 203.179 110.862 202.65 114.371L190.841 112.589Z"/>
</mask>
<path d="M190.841 112.589C191.761 106.492 194.658 100.866 199.086 96.5758C203.515 92.2856 209.23 89.5686 215.352 88.8422L216.759 100.702C213.235 101.12 209.945 102.684 207.396 105.154C204.847 107.623 203.179 110.862 202.65 114.371L190.841 112.589Z" fill="#171717" stroke="#242424" mask="url(#path-19-inside-19_763_9547)"/>
<mask id="path-20-inside-20_763_9547" fill="white">
<path d="M264.784 130.228C262.533 137.951 258.379 144.986 252.702 150.686C247.025 156.385 240.007 160.568 232.293 162.85C224.578 165.132 216.415 165.44 208.55 163.746C200.686 162.051 193.373 158.409 187.283 153.153L200.614 137.707C204.117 140.73 208.324 142.825 212.848 143.8C217.372 144.775 222.068 144.598 226.505 143.285C230.943 141.972 234.98 139.566 238.245 136.287C241.511 133.009 243.901 128.962 245.196 124.519L264.784 130.228Z"/>
</mask>
<path d="M264.784 130.228C262.533 137.951 258.379 144.986 252.702 150.686C247.025 156.385 240.007 160.568 232.293 162.85C224.578 165.132 216.415 165.44 208.55 163.746C200.686 162.051 193.373 158.409 187.283 153.153L200.614 137.707C204.117 140.73 208.324 142.825 212.848 143.8C217.372 144.775 222.068 144.598 226.505 143.285C230.943 141.972 234.98 139.566 238.245 136.287C241.511 133.009 243.901 128.962 245.196 124.519L264.784 130.228Z" fill="#171717" stroke="#333333" mask="url(#path-20-inside-20_763_9547)"/>
<mask id="path-21-inside-21_763_9547" fill="white">
<path d="M188.351 154.048C183.314 149.949 179.16 144.871 176.14 139.121L194.188 129.644C195.926 132.953 198.317 135.876 201.217 138.236L188.351 154.048Z"/>
</mask>
<path d="M188.351 154.048C183.314 149.949 179.16 144.871 176.14 139.121L194.188 129.644C195.926 132.953 198.317 135.876 201.217 138.236L188.351 154.048Z" fill="#171717" stroke="#333333" mask="url(#path-21-inside-21_763_9547)"/>
<mask id="path-22-inside-22_763_9547" fill="white">
<path d="M171.087 123.378C169.929 115.018 170.994 106.502 174.175 98.6848L193.094 106.383C191.265 110.876 190.653 115.771 191.319 120.576L171.087 123.378Z"/>
</mask>
<path d="M171.087 123.378C169.929 115.018 170.994 106.502 174.175 98.6848L193.094 106.383C191.265 110.876 190.653 115.771 191.319 120.576L171.087 123.378Z" fill="#171717" stroke="#333333" mask="url(#path-22-inside-22_763_9547)"/>
<mask id="path-23-inside-23_763_9547" fill="white">
<path d="M174.05 98.9951C177.943 89.2339 184.929 81.0187 193.938 75.6085C202.947 70.1984 213.482 67.8919 223.927 69.0426L221.684 89.4043C215.693 88.7443 209.651 90.0672 204.484 93.1701C199.317 96.2731 195.31 100.985 193.078 106.583L174.05 98.9951Z"/>
</mask>
<path d="M174.05 98.9951C177.943 89.2339 184.929 81.0187 193.938 75.6085C202.947 70.1984 213.482 67.8919 223.927 69.0426L221.684 89.4043C215.693 88.7443 209.651 90.0672 204.484 93.1701C199.317 96.2731 195.31 100.985 193.078 106.583L174.05 98.9951Z" fill="#212121" stroke="#333333" mask="url(#path-23-inside-23_763_9547)"/>
<path d="M174.05 98.9951C177.943 89.2339 184.929 81.0187 193.938 75.6085C202.947 70.1984 213.482 67.8919 223.927 69.0426L221.684 89.4043C215.693 88.7443 209.651 90.0672 204.484 93.1701C199.317 96.2731 195.31 100.985 193.078 106.583L174.05 98.9951Z" fill="#171717" stroke="#333333" stroke-width="0.5" stroke-miterlimit="16" stroke-linecap="round"/>
<mask id="path-25-inside-24_763_9547" fill="white">
<path d="M142.988 133.458C140.022 119.993 140.702 105.98 144.958 92.8658C149.215 79.7514 156.893 68.0101 167.201 58.853L187.089 81.2409C180.765 86.8594 176.053 94.0636 173.442 102.11C170.83 110.157 170.413 118.755 172.233 127.016L142.988 133.458Z"/>
</mask>
<path d="M142.988 133.458C140.022 119.993 140.702 105.98 144.958 92.8658C149.215 79.7514 156.893 68.0101 167.201 58.853L187.089 81.2409C180.765 86.8594 176.053 94.0636 173.442 102.11C170.83 110.157 170.413 118.755 172.233 127.016L142.988 133.458Z" fill="#1F1F1F" stroke="#4D4D4D" mask="url(#path-25-inside-24_763_9547)"/>
<mask id="path-26-inside-25_763_9547" fill="white">
<path d="M278.559 226.802C258.513 237.715 235.867 242.943 213.066 241.922C190.265 240.902 168.177 233.671 149.186 221.01L176.036 180.736C187.688 188.504 201.241 192.941 215.231 193.567C229.22 194.193 243.116 190.985 255.415 184.29L278.559 226.802Z"/>
</mask>
<path d="M278.559 226.802C258.513 237.715 235.867 242.943 213.066 241.922C190.265 240.902 168.177 233.671 149.186 221.01L176.036 180.736C187.688 188.504 201.241 192.941 215.231 193.567C229.22 194.193 243.116 190.985 255.415 184.29L278.559 226.802Z" fill="#1F1F1F" stroke="#4D4D4D" mask="url(#path-26-inside-25_763_9547)"/>
<mask id="path-27-inside-26_763_9547" fill="white">
<path d="M308.046 -66.0023C337.364 -51.6666 362.804 -30.4891 382.219 -4.25674C401.634 21.9756 414.454 52.4932 419.597 84.7207L342.256 97.0641C339.092 77.2415 331.207 58.4706 319.265 42.3355C307.324 26.2004 291.676 13.1744 273.643 4.35682L308.046 -66.0023Z"/>
</mask>
<path d="M308.046 -66.0023C337.364 -51.6666 362.804 -30.4891 382.219 -4.25674C401.634 21.9756 414.454 52.4932 419.597 84.7207L342.256 97.0641C339.092 77.2415 331.207 58.4706 319.265 42.3355C307.324 26.2004 291.676 13.1744 273.643 4.35682L308.046 -66.0023Z" fill="#1F1F1F" stroke="#4D4D4D" mask="url(#path-27-inside-26_763_9547)"/>
<mask id="path-28-inside-27_763_9547" fill="white">
<path d="M245.856 124.053C244.532 129.007 241.88 133.505 238.186 137.061C234.492 140.618 229.897 143.098 224.896 144.233L222.249 132.566C225.124 131.914 227.766 130.488 229.889 128.444C232.013 126.399 233.538 123.813 234.299 120.965L245.856 124.053Z"/>
</mask>
<path d="M245.856 124.053C244.532 129.007 241.88 133.505 238.186 137.061C234.492 140.618 229.897 143.098 224.896 144.233L222.249 132.566C225.124 131.914 227.766 130.488 229.889 128.444C232.013 126.399 233.538 123.813 234.299 120.965L245.856 124.053Z" fill="#1F1F1F" stroke="#4D4D4D" mask="url(#path-28-inside-27_763_9547)"/>
</g>
<defs>
<clipPath id="clip0_763_9547">
<rect width="349" height="208" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,124 @@
<svg width="764" height="208" viewBox="0 0 764 208" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_924_58879)">
<rect width="764" height="208" fill="#171717"/>
<mask id="path-1-inside-1_924_58879" fill="white">
<path d="M668.278 4.26089C686.326 13.086 701.987 26.1231 713.939 42.272C725.891 58.4209 733.783 77.2078 736.949 97.0473L689.338 104.646C687.39 92.443 682.536 80.8875 675.184 70.9546C667.833 61.0217 658.2 53.0028 647.099 47.5746L668.278 4.26089Z"/>
</mask>
<path d="M668.278 4.26089C686.326 13.086 701.987 26.1231 713.939 42.272C725.891 58.4209 733.783 77.2078 736.949 97.0473L689.338 104.646C687.39 92.443 682.536 80.8875 675.184 70.9546C667.833 61.0217 658.2 53.0028 647.099 47.5746L668.278 4.26089Z" fill="#171717" stroke="#333333" mask="url(#path-1-inside-1_924_58879)"/>
<mask id="path-2-inside-2_924_58879" fill="white">
<path d="M673.146 226.802C653.101 237.715 630.454 242.943 607.653 241.923C584.853 240.902 562.764 233.671 543.774 221.011L570.623 180.736C582.275 188.504 595.828 192.941 609.818 193.567C623.808 194.194 637.703 190.986 650.003 184.29L673.146 226.802Z"/>
</mask>
<path d="M673.146 226.802C653.101 237.715 630.454 242.943 607.653 241.923C584.853 240.902 562.764 233.671 543.774 221.011L570.623 180.736C582.275 188.504 595.828 192.941 609.818 193.567C623.808 194.194 637.703 190.986 650.003 184.29L673.146 226.802Z" stroke="#333333" mask="url(#path-2-inside-2_924_58879)"/>
<mask id="path-3-inside-3_924_58879" fill="white">
<path d="M516.021 195.753C501.972 178.453 492.792 157.718 489.43 135.687C486.067 113.656 488.644 91.1263 496.893 70.423L541.859 88.34C536.797 101.043 535.216 114.866 537.28 128.384C539.343 141.902 544.975 154.624 553.595 165.239L516.021 195.753Z"/>
</mask>
<path d="M516.021 195.753C501.972 178.453 492.792 157.718 489.43 135.687C486.067 113.656 488.644 91.1263 496.893 70.423L541.859 88.34C536.797 101.043 535.216 114.866 537.28 128.384C539.343 141.902 544.975 154.624 553.595 165.239L516.021 195.753Z" fill="#171717" stroke="#333333" mask="url(#path-3-inside-3_924_58879)"/>
<mask id="path-4-inside-4_924_58879" fill="white">
<path d="M541.517 14.1071C567.764 -4.23054 600.037 -11.8208 631.706 -7.10456L624.599 40.6183C605.129 37.7187 585.287 42.3853 569.15 53.6594L541.517 14.1071Z"/>
</mask>
<path d="M541.517 14.1071C567.764 -4.23054 600.037 -11.8208 631.706 -7.10456L624.599 40.6183C605.129 37.7187 585.287 42.3853 569.15 53.6594L541.517 14.1071Z" fill="#171717" stroke="#333333" mask="url(#path-4-inside-4_924_58879)"/>
<mask id="path-5-inside-5_924_58879" fill="white">
<path d="M630.778 -7.23917C636.364 -6.45004 641.89 -5.2845 647.318 -3.75052L634.207 42.6469C630.868 41.7034 627.469 40.9865 624.033 40.5011L630.778 -7.23917Z"/>
</mask>
<path d="M630.778 -7.23917C636.364 -6.45004 641.89 -5.2845 647.318 -3.75052L634.207 42.6469C630.868 41.7034 627.469 40.9865 624.033 40.5011L630.778 -7.23917Z" fill="#171717" stroke="#333333" mask="url(#path-5-inside-5_924_58879)"/>
<mask id="path-6-inside-6_924_58879" fill="white">
<path d="M702.634 -66.0023C731.952 -51.6666 757.392 -30.4891 776.807 -4.25674C796.222 21.9756 809.042 52.4932 814.185 84.7207L736.844 97.0641C733.68 77.2415 725.795 58.4706 713.853 42.3355C701.912 26.2004 686.264 13.1744 668.231 4.35682L702.634 -66.0023Z"/>
</mask>
<path d="M702.634 -66.0023C731.952 -51.6666 757.392 -30.4891 776.807 -4.25674C796.222 21.9756 809.042 52.4932 814.185 84.7207L736.844 97.0641C733.68 77.2415 725.795 58.4706 713.853 42.3355C701.912 26.2004 686.264 13.1744 668.231 4.35682L702.634 -66.0023Z" fill="#242424" stroke="#333333" mask="url(#path-6-inside-6_924_58879)"/>
<mask id="path-7-inside-7_924_58879" fill="white">
<path d="M580.111 317.543C535.342 310.152 494.329 288.009 463.59 254.633L521.425 201.366C540.286 221.844 565.45 235.431 592.919 239.966L580.111 317.543Z"/>
</mask>
<path d="M580.111 317.543C535.342 310.152 494.329 288.009 463.59 254.633L521.425 201.366C540.286 221.844 565.45 235.431 592.919 239.966L580.111 317.543Z" fill="#171717" stroke="#333333" mask="url(#path-7-inside-7_924_58879)"/>
<mask id="path-8-inside-8_924_58879" fill="white">
<path d="M414.57 160.663C406.764 125.313 408.53 88.5197 419.687 54.0799C430.845 19.6402 450.988 -11.1993 478.04 -35.2569L530.291 23.4978C513.693 38.2588 501.333 57.181 494.488 78.3123C487.642 99.4435 486.558 122.019 491.348 143.709L414.57 160.663Z"/>
</mask>
<path d="M414.57 160.663C406.764 125.313 408.53 88.5197 419.687 54.0799C430.845 19.6402 450.988 -11.1993 478.04 -35.2569L530.291 23.4978C513.693 38.2588 501.333 57.181 494.488 78.3123C487.642 99.4435 486.558 122.019 491.348 143.709L414.57 160.663Z" fill="#171717" stroke="#1F1F1F" mask="url(#path-8-inside-8_924_58879)"/>
<mask id="path-9-inside-9_924_58879" fill="white">
<path d="M464.021 255.1C452.591 242.767 442.733 229.064 434.674 214.305L503.683 176.622C508.628 185.678 514.676 194.085 521.69 201.653L464.021 255.1Z"/>
</mask>
<path d="M464.021 255.1C452.591 242.767 442.733 229.064 434.674 214.305L503.683 176.622C508.628 185.678 514.676 194.085 521.69 201.653L464.021 255.1Z" fill="#171717" stroke="#333333" mask="url(#path-9-inside-9_924_58879)"/>
<mask id="path-10-inside-10_924_58879" fill="white">
<path d="M496.722 -50.0079C539.359 -79.7958 591.783 -92.1256 643.227 -84.4644L631.682 -6.94301C600.054 -11.6531 567.823 -4.07273 541.61 14.241L496.722 -50.0079Z"/>
</mask>
<path d="M496.722 -50.0079C539.359 -79.7958 591.783 -92.1256 643.227 -84.4644L631.682 -6.94301C600.054 -11.6531 567.823 -4.07273 541.61 14.241L496.722 -50.0079Z" fill="#171717" stroke="#333333" mask="url(#path-10-inside-10_924_58879)"/>
<mask id="path-11-inside-11_924_58879" fill="white">
<path d="M652.302 -82.9021C669.982 -79.4451 687.124 -73.6556 703.279 -65.6854L668.628 4.55172C658.691 -0.350631 648.147 -3.91167 637.273 -6.03801L652.302 -82.9021Z"/>
</mask>
<path d="M652.302 -82.9021C669.982 -79.4451 687.124 -73.6556 703.279 -65.6854L668.628 4.55172C658.691 -0.350631 648.147 -3.91167 637.273 -6.03801L652.302 -82.9021Z" fill="#171717" stroke="#333333" mask="url(#path-11-inside-11_924_58879)"/>
<mask id="path-12-inside-12_924_58879" fill="white">
<path d="M596.968 192.552C578.195 188.516 561.588 177.654 550.368 162.071L574.67 144.573C581.554 154.134 591.743 160.798 603.262 163.275L596.968 192.552Z"/>
</mask>
<path d="M596.968 192.552C578.195 188.516 561.588 177.654 550.368 162.071L574.67 144.573C581.554 154.134 591.743 160.798 603.262 163.275L596.968 192.552Z" fill="#171717" stroke="#333333" mask="url(#path-12-inside-12_924_58879)"/>
<mask id="path-13-inside-13_924_58879" fill="white">
<path d="M537.575 133.458C534.61 119.993 535.29 105.98 539.546 92.8658C543.803 79.7514 551.481 68.0101 561.789 58.853L581.677 81.2409C575.352 86.8594 570.641 94.0636 568.03 102.11C565.418 110.157 565.001 118.755 566.82 127.016L537.575 133.458Z"/>
</mask>
<path d="M537.575 133.458C534.61 119.993 535.29 105.98 539.546 92.8658C543.803 79.7514 551.481 68.0101 561.789 58.853L581.677 81.2409C575.352 86.8594 570.641 94.0636 568.03 102.11C565.418 110.157 565.001 118.755 566.82 127.016L537.575 133.458Z" fill="#171717" stroke="#333333" mask="url(#path-13-inside-13_924_58879)"/>
<mask id="path-14-inside-14_924_58879" fill="white">
<path d="M568.873 53.2626C585.111 41.9176 605.078 37.2217 624.67 40.1396L620.273 69.6642C608.228 67.8704 595.952 70.7574 585.969 77.7324L568.873 53.2626Z"/>
</mask>
<path d="M568.873 53.2626C585.111 41.9176 605.078 37.2217 624.67 40.1396L620.273 69.6642C608.228 67.8704 595.952 70.7574 585.969 77.7324L568.873 53.2626Z" fill="#171717" stroke="#333333" mask="url(#path-14-inside-14_924_58879)"/>
<mask id="path-15-inside-15_924_58879" fill="white">
<path d="M624.096 40.0563C640.344 42.3518 655.444 49.7455 667.22 61.1724C678.997 72.5992 686.842 87.4693 689.626 103.64C692.41 119.812 689.989 136.449 682.712 151.156C675.435 165.863 663.677 177.881 649.132 185.478L635.323 159.038C644.269 154.365 651.501 146.974 655.977 137.928C660.453 128.881 661.942 118.648 660.23 108.701C658.517 98.7547 653.692 89.6083 646.448 82.5799C639.205 75.5514 629.917 71.0037 619.924 69.5917L624.096 40.0563Z"/>
</mask>
<path d="M624.096 40.0563C640.344 42.3518 655.444 49.7455 667.22 61.1724C678.997 72.5992 686.842 87.4693 689.626 103.64C692.41 119.812 689.989 136.449 682.712 151.156C675.435 165.863 663.677 177.881 649.132 185.478L635.323 159.038C644.269 154.365 651.501 146.974 655.977 137.928C660.453 128.881 661.942 118.648 660.23 108.701C658.517 98.7547 653.692 89.6083 646.448 82.5799C639.205 75.5514 629.917 71.0037 619.924 69.5917L624.096 40.0563Z" stroke="#333333" mask="url(#path-15-inside-15_924_58879)"/>
<mask id="path-16-inside-16_924_58879" fill="white">
<path d="M640.444 124.053C639.12 129.007 636.468 133.505 632.774 137.062C629.08 140.618 624.485 143.098 619.484 144.233L616.836 132.567C619.711 131.914 622.353 130.489 624.477 128.444C626.601 126.399 628.126 123.813 628.887 120.965L640.444 124.053Z"/>
</mask>
<path d="M640.444 124.053C639.12 129.007 636.468 133.505 632.774 137.062C629.08 140.618 624.485 143.098 619.484 144.233L616.836 132.567C619.711 131.914 622.353 130.489 624.477 128.444C626.601 126.399 628.126 123.813 628.887 120.965L640.444 124.053Z" fill="#1F1F1F" stroke="#242424" mask="url(#path-16-inside-16_924_58879)"/>
<mask id="path-17-inside-17_924_58879" fill="white">
<path d="M609.423 88.9085C614.072 88.2693 618.807 88.803 623.198 90.461C627.588 92.119 631.494 94.8486 634.56 98.4015C637.627 101.954 639.756 106.218 640.754 110.803C641.752 115.389 641.587 120.152 640.275 124.657L628.79 121.312C629.544 118.722 629.639 115.984 629.065 113.348C628.491 110.711 627.267 108.26 625.504 106.218C623.741 104.175 621.496 102.606 618.971 101.652C616.447 100.699 613.725 100.392 611.052 100.76L609.423 88.9085Z"/>
</mask>
<path d="M609.423 88.9085C614.072 88.2693 618.807 88.803 623.198 90.461C627.588 92.119 631.494 94.8486 634.56 98.4015C637.627 101.954 639.756 106.218 640.754 110.803C641.752 115.389 641.587 120.152 640.275 124.657L628.79 121.312C629.544 118.722 629.639 115.984 629.065 113.348C628.491 110.711 627.267 108.26 625.504 106.218C623.741 104.175 621.496 102.606 618.971 101.652C616.447 100.699 613.725 100.392 611.052 100.76L609.423 88.9085Z" fill="#171717" stroke="#242424" mask="url(#path-17-inside-17_924_58879)"/>
<mask id="path-18-inside-18_924_58879" fill="white">
<path d="M620.208 144.058C615.641 145.223 610.855 145.221 606.288 144.055C601.722 142.888 597.522 140.593 594.073 137.38C590.624 134.168 588.038 130.14 586.551 125.668C585.064 121.195 584.724 116.421 585.562 111.783L597.325 113.909C596.843 116.577 597.038 119.323 597.894 121.896C598.749 124.469 600.237 126.786 602.221 128.634C604.205 130.482 606.621 131.802 609.248 132.473C611.875 133.144 614.628 133.145 617.255 132.475L620.208 144.058Z"/>
</mask>
<path d="M620.208 144.058C615.641 145.223 610.855 145.221 606.288 144.055C601.722 142.888 597.522 140.593 594.073 137.38C590.624 134.168 588.038 130.14 586.551 125.668C585.064 121.195 584.724 116.421 585.562 111.783L597.325 113.909C596.843 116.577 597.038 119.323 597.894 121.896C598.749 124.469 600.237 126.786 602.221 128.634C604.205 130.482 606.621 131.802 609.248 132.473C611.875 133.144 614.628 133.145 617.255 132.475L620.208 144.058Z" fill="#171717" stroke="#242424" mask="url(#path-18-inside-18_924_58879)"/>
<mask id="path-19-inside-19_924_58879" fill="white">
<path d="M585.428 112.589C586.349 106.492 589.246 100.866 593.674 96.5758C598.103 92.2856 603.817 89.5686 609.94 88.8422L611.347 100.702C607.823 101.12 604.533 102.684 601.984 105.154C599.435 107.623 597.767 110.862 597.238 114.371L585.428 112.589Z"/>
</mask>
<path d="M585.428 112.589C586.349 106.492 589.246 100.866 593.674 96.5758C598.103 92.2856 603.817 89.5686 609.94 88.8422L611.347 100.702C607.823 101.12 604.533 102.684 601.984 105.154C599.435 107.623 597.767 110.862 597.238 114.371L585.428 112.589Z" fill="#171717" stroke="#242424" mask="url(#path-19-inside-19_924_58879)"/>
<mask id="path-20-inside-20_924_58879" fill="white">
<path d="M659.372 130.228C657.121 137.951 652.967 144.986 647.29 150.686C641.613 156.385 634.595 160.568 626.881 162.85C619.166 165.132 611.002 165.44 603.138 163.746C595.274 162.051 587.961 158.409 581.871 153.153L595.202 137.707C598.705 140.73 602.912 142.825 607.436 143.8C611.959 144.775 616.656 144.598 621.093 143.285C625.531 141.972 629.568 139.566 632.833 136.287C636.099 133.009 638.489 128.962 639.783 124.519L659.372 130.228Z"/>
</mask>
<path d="M659.372 130.228C657.121 137.951 652.967 144.986 647.29 150.686C641.613 156.385 634.595 160.568 626.881 162.85C619.166 165.132 611.002 165.44 603.138 163.746C595.274 162.051 587.961 158.409 581.871 153.153L595.202 137.707C598.705 140.73 602.912 142.825 607.436 143.8C611.959 144.775 616.656 144.598 621.093 143.285C625.531 141.972 629.568 139.566 632.833 136.287C636.099 133.009 638.489 128.962 639.783 124.519L659.372 130.228Z" fill="#171717" stroke="#333333" mask="url(#path-20-inside-20_924_58879)"/>
<mask id="path-21-inside-21_924_58879" fill="white">
<path d="M582.939 154.048C577.902 149.949 573.748 144.871 570.728 139.121L588.776 129.644C590.514 132.953 592.905 135.876 595.805 138.236L582.939 154.048Z"/>
</mask>
<path d="M582.939 154.048C577.902 149.949 573.748 144.871 570.728 139.121L588.776 129.644C590.514 132.953 592.905 135.876 595.805 138.236L582.939 154.048Z" fill="#171717" stroke="#333333" mask="url(#path-21-inside-21_924_58879)"/>
<mask id="path-22-inside-22_924_58879" fill="white">
<path d="M565.675 123.378C564.517 115.018 565.582 106.502 568.763 98.6848L587.681 106.383C585.853 110.876 585.241 115.771 585.906 120.576L565.675 123.378Z"/>
</mask>
<path d="M565.675 123.378C564.517 115.018 565.582 106.502 568.763 98.6848L587.681 106.383C585.853 110.876 585.241 115.771 585.906 120.576L565.675 123.378Z" fill="#171717" stroke="#333333" mask="url(#path-22-inside-22_924_58879)"/>
<mask id="path-23-inside-23_924_58879" fill="white">
<path d="M568.638 98.9951C572.531 89.2339 579.517 81.0187 588.526 75.6085C597.535 70.1984 608.07 67.8919 618.515 69.0426L616.272 89.4043C610.281 88.7443 604.239 90.0672 599.072 93.1701C593.905 96.2731 589.898 100.985 587.666 106.583L568.638 98.9951Z"/>
</mask>
<path d="M568.638 98.9951C572.531 89.2339 579.517 81.0187 588.526 75.6085C597.535 70.1984 608.07 67.8919 618.515 69.0426L616.272 89.4043C610.281 88.7443 604.239 90.0672 599.072 93.1701C593.905 96.2731 589.898 100.985 587.666 106.583L568.638 98.9951Z" fill="#212121" stroke="#333333" mask="url(#path-23-inside-23_924_58879)"/>
<path d="M568.638 98.9951C572.531 89.2339 579.517 81.0187 588.526 75.6085C597.535 70.1984 608.07 67.8919 618.515 69.0426L616.272 89.4043C610.281 88.7443 604.239 90.0672 599.072 93.1701C593.905 96.2731 589.898 100.985 587.666 106.583L568.638 98.9951Z" fill="#171717" stroke="#333333" stroke-width="0.5" stroke-miterlimit="16" stroke-linecap="round"/>
<mask id="path-25-inside-24_924_58879" fill="white">
<path d="M537.576 133.458C534.61 119.993 535.29 105.98 539.546 92.8658C543.803 79.7514 551.481 68.0101 561.789 58.853L581.677 81.2409C575.352 86.8594 570.641 94.0636 568.03 102.11C565.418 110.157 565.001 118.755 566.82 127.016L537.576 133.458Z"/>
</mask>
<path d="M537.576 133.458C534.61 119.993 535.29 105.98 539.546 92.8658C543.803 79.7514 551.481 68.0101 561.789 58.853L581.677 81.2409C575.352 86.8594 570.641 94.0636 568.03 102.11C565.418 110.157 565.001 118.755 566.82 127.016L537.576 133.458Z" fill="#1F1F1F" stroke="#4D4D4D" mask="url(#path-25-inside-24_924_58879)"/>
<mask id="path-26-inside-25_924_58879" fill="white">
<path d="M673.146 226.802C653.101 237.715 630.454 242.943 607.654 241.922C584.853 240.902 562.764 233.671 543.774 221.01L570.624 180.736C582.276 188.504 595.829 192.941 609.818 193.567C623.808 194.193 637.704 190.985 650.003 184.29L673.146 226.802Z"/>
</mask>
<path d="M673.146 226.802C653.101 237.715 630.454 242.943 607.654 241.922C584.853 240.902 562.764 233.671 543.774 221.01L570.624 180.736C582.276 188.504 595.829 192.941 609.818 193.567C623.808 194.193 637.704 190.985 650.003 184.29L673.146 226.802Z" fill="#1F1F1F" stroke="#4D4D4D" mask="url(#path-26-inside-25_924_58879)"/>
<mask id="path-27-inside-26_924_58879" fill="white">
<path d="M702.634 -66.0023C731.952 -51.6666 757.392 -30.4891 776.807 -4.25674C796.222 21.9756 809.041 52.4932 814.185 84.7207L736.844 97.0641C733.68 77.2415 725.795 58.4706 713.853 42.3355C701.912 26.2004 686.264 13.1744 668.231 4.35682L702.634 -66.0023Z"/>
</mask>
<path d="M702.634 -66.0023C731.952 -51.6666 757.392 -30.4891 776.807 -4.25674C796.222 21.9756 809.041 52.4932 814.185 84.7207L736.844 97.0641C733.68 77.2415 725.795 58.4706 713.853 42.3355C701.912 26.2004 686.264 13.1744 668.231 4.35682L702.634 -66.0023Z" fill="#1F1F1F" stroke="#4D4D4D" mask="url(#path-27-inside-26_924_58879)"/>
<mask id="path-28-inside-27_924_58879" fill="white">
<path d="M640.444 124.053C639.12 129.007 636.468 133.505 632.774 137.061C629.08 140.618 624.485 143.098 619.484 144.233L616.837 132.566C619.711 131.914 622.354 130.488 624.477 128.444C626.601 126.399 628.126 123.813 628.887 120.965L640.444 124.053Z"/>
</mask>
<path d="M640.444 124.053C639.12 129.007 636.468 133.505 632.774 137.061C629.08 140.618 624.485 143.098 619.484 144.233L616.837 132.566C619.711 131.914 622.354 130.488 624.477 128.444C626.601 126.399 628.126 123.813 628.887 120.965L640.444 124.053Z" fill="#1F1F1F" stroke="#4D4D4D" mask="url(#path-28-inside-27_924_58879)"/>
<rect x="203.23" width="489" height="208" fill="url(#paint0_linear_924_58879)"/>
</g>
<defs>
<linearGradient id="paint0_linear_924_58879" x1="605.113" y1="115" x2="207.056" y2="111.765" gradientUnits="userSpaceOnUse">
<stop stop-color="#171717" stop-opacity="0"/>
<stop offset="1" stop-color="#171717"/>
</linearGradient>
<clipPath id="clip0_924_58879">
<rect width="764" height="208" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,119 @@
<svg width="349" height="208" viewBox="0 0 349 208" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_763_9572)">
<rect width="349" height="208" fill="#FCFCFC"/>
<mask id="path-1-inside-1_763_9572" fill="white">
<path d="M273.69 4.26089C291.738 13.086 307.399 26.1231 319.351 42.272C331.303 58.4209 339.195 77.2078 342.362 97.0473L294.75 104.646C292.802 92.443 287.948 80.8875 280.597 70.9546C273.245 61.0217 263.612 53.0028 252.511 47.5746L273.69 4.26089Z"/>
</mask>
<path d="M273.69 4.26089C291.738 13.086 307.399 26.1231 319.351 42.272C331.303 58.4209 339.195 77.2078 342.362 97.0473L294.75 104.646C292.802 92.443 287.948 80.8875 280.597 70.9546C273.245 61.0217 263.612 53.0028 252.511 47.5746L273.69 4.26089Z" fill="white" stroke="#D4D4D4" mask="url(#path-1-inside-1_763_9572)"/>
<mask id="path-2-inside-2_763_9572" fill="white">
<path d="M278.558 226.802C258.513 237.715 235.866 242.943 213.066 241.923C190.265 240.902 168.176 233.671 149.186 221.011L176.036 180.736C187.688 188.504 201.241 192.941 215.23 193.567C229.22 194.194 243.115 190.986 255.415 184.29L278.558 226.802Z"/>
</mask>
<path d="M278.558 226.802C258.513 237.715 235.866 242.943 213.066 241.923C190.265 240.902 168.176 233.671 149.186 221.011L176.036 180.736C187.688 188.504 201.241 192.941 215.23 193.567C229.22 194.194 243.115 190.986 255.415 184.29L278.558 226.802Z" stroke="#D4D4D4" mask="url(#path-2-inside-2_763_9572)"/>
<mask id="path-3-inside-3_763_9572" fill="white">
<path d="M121.433 195.753C107.384 178.453 98.2044 157.718 94.8421 135.687C91.4797 113.656 94.0561 91.1263 102.305 70.423L147.271 88.34C142.21 101.043 140.629 114.866 142.692 128.384C144.755 141.902 150.387 154.624 159.007 165.239L121.433 195.753Z"/>
</mask>
<path d="M121.433 195.753C107.384 178.453 98.2044 157.718 94.8421 135.687C91.4797 113.656 94.0561 91.1263 102.305 70.423L147.271 88.34C142.21 101.043 140.629 114.866 142.692 128.384C144.755 141.902 150.387 154.624 159.007 165.239L121.433 195.753Z" fill="white" stroke="#D4D4D4" mask="url(#path-3-inside-3_763_9572)"/>
<mask id="path-4-inside-4_763_9572" fill="white">
<path d="M146.929 14.1071C173.176 -4.23054 205.449 -11.8208 237.118 -7.10456L230.011 40.6183C210.541 37.7187 190.699 42.3853 174.562 53.6594L146.929 14.1071Z"/>
</mask>
<path d="M146.929 14.1071C173.176 -4.23054 205.449 -11.8208 237.118 -7.10456L230.011 40.6183C210.541 37.7187 190.699 42.3853 174.562 53.6594L146.929 14.1071Z" fill="#F8F8F8" stroke="#D4D4D4" mask="url(#path-4-inside-4_763_9572)"/>
<mask id="path-5-inside-5_763_9572" fill="white">
<path d="M236.191 -7.23917C241.776 -6.45004 247.302 -5.2845 252.73 -3.75052L239.619 42.6469C236.28 41.7034 232.881 40.9865 229.446 40.5011L236.191 -7.23917Z"/>
</mask>
<path d="M236.191 -7.23917C241.776 -6.45004 247.302 -5.2845 252.73 -3.75052L239.619 42.6469C236.28 41.7034 232.881 40.9865 229.446 40.5011L236.191 -7.23917Z" fill="white" stroke="#D4D4D4" mask="url(#path-5-inside-5_763_9572)"/>
<mask id="path-6-inside-6_763_9572" fill="white">
<path d="M308.046 -66.0023C337.365 -51.6666 362.804 -30.4891 382.219 -4.25674C401.634 21.9756 414.454 52.4932 419.597 84.7207L342.256 97.0641C339.092 77.2415 331.207 58.4706 319.265 42.3355C307.324 26.2004 291.676 13.1744 273.643 4.35682L308.046 -66.0023Z"/>
</mask>
<path d="M308.046 -66.0023C337.365 -51.6666 362.804 -30.4891 382.219 -4.25674C401.634 21.9756 414.454 52.4932 419.597 84.7207L342.256 97.0641C339.092 77.2415 331.207 58.4706 319.265 42.3355C307.324 26.2004 291.676 13.1744 273.643 4.35682L308.046 -66.0023Z" fill="#F7F7F7" stroke="#D4D4D4" mask="url(#path-6-inside-6_763_9572)"/>
<mask id="path-7-inside-7_763_9572" fill="white">
<path d="M185.523 317.543C140.754 310.152 99.7412 288.009 69.0018 254.633L126.837 201.366C145.698 221.844 170.862 235.431 198.331 239.966L185.523 317.543Z"/>
</mask>
<path d="M185.523 317.543C140.754 310.152 99.7412 288.009 69.0018 254.633L126.837 201.366C145.698 221.844 170.862 235.431 198.331 239.966L185.523 317.543Z" fill="white" stroke="#D4D4D4" mask="url(#path-7-inside-7_763_9572)"/>
<mask id="path-8-inside-8_763_9572" fill="white">
<path d="M19.9819 160.663C12.1757 125.313 13.9424 88.5197 25.0995 54.0799C36.2566 19.6402 56.4002 -11.1993 83.4522 -35.2569L135.703 23.4978C119.105 38.2588 106.745 57.181 99.8997 78.3123C93.054 99.4435 91.9701 122.019 96.7597 143.709L19.9819 160.663Z"/>
</mask>
<path d="M19.9819 160.663C12.1757 125.313 13.9424 88.5197 25.0995 54.0799C36.2566 19.6402 56.4002 -11.1993 83.4522 -35.2569L135.703 23.4978C119.105 38.2588 106.745 57.181 99.8997 78.3123C93.054 99.4435 91.9701 122.019 96.7597 143.709L19.9819 160.663Z" fill="white" stroke="#FCFCFC" mask="url(#path-8-inside-8_763_9572)"/>
<mask id="path-9-inside-9_763_9572" fill="white">
<path d="M69.4334 255.1C58.0028 242.767 48.1451 229.064 40.0859 214.305L109.095 176.622C114.04 185.678 120.088 194.085 127.102 201.653L69.4334 255.1Z"/>
</mask>
<path d="M69.4334 255.1C58.0028 242.767 48.1451 229.064 40.0859 214.305L109.095 176.622C114.04 185.678 120.088 194.085 127.102 201.653L69.4334 255.1Z" fill="white" stroke="#D4D4D4" mask="url(#path-9-inside-9_763_9572)"/>
<mask id="path-10-inside-10_763_9572" fill="white">
<path d="M102.135 -50.0079C144.771 -79.7958 197.195 -92.1256 248.639 -84.4644L237.094 -6.94301C205.466 -11.6531 173.235 -4.07273 147.022 14.241L102.135 -50.0079Z"/>
</mask>
<path d="M102.135 -50.0079C144.771 -79.7958 197.195 -92.1256 248.639 -84.4644L237.094 -6.94301C205.466 -11.6531 173.235 -4.07273 147.022 14.241L102.135 -50.0079Z" fill="white" stroke="#D4D4D4" mask="url(#path-10-inside-10_763_9572)"/>
<mask id="path-11-inside-11_763_9572" fill="white">
<path d="M257.714 -82.9021C275.394 -79.4451 292.536 -73.6556 308.691 -65.6854L274.04 4.55172C264.103 -0.350631 253.559 -3.91167 242.685 -6.03801L257.714 -82.9021Z"/>
</mask>
<path d="M257.714 -82.9021C275.394 -79.4451 292.536 -73.6556 308.691 -65.6854L274.04 4.55172C264.103 -0.350631 253.559 -3.91167 242.685 -6.03801L257.714 -82.9021Z" fill="white" stroke="#D4D4D4" mask="url(#path-11-inside-11_763_9572)"/>
<mask id="path-12-inside-12_763_9572" fill="white">
<path d="M202.38 192.552C183.607 188.516 167.001 177.654 155.78 162.071L180.082 144.573C186.966 154.134 197.155 160.798 208.674 163.275L202.38 192.552Z"/>
</mask>
<path d="M202.38 192.552C183.607 188.516 167.001 177.654 155.78 162.071L180.082 144.573C186.966 154.134 197.155 160.798 208.674 163.275L202.38 192.552Z" fill="white" stroke="#D4D4D4" mask="url(#path-12-inside-12_763_9572)"/>
<mask id="path-13-inside-13_763_9572" fill="white">
<path d="M142.988 133.458C140.022 119.993 140.702 105.98 144.958 92.8658C149.215 79.7514 156.893 68.0101 167.201 58.853L187.089 81.2409C180.765 86.8594 176.053 94.0636 173.442 102.11C170.83 110.157 170.413 118.755 172.233 127.016L142.988 133.458Z"/>
</mask>
<path d="M142.988 133.458C140.022 119.993 140.702 105.98 144.958 92.8658C149.215 79.7514 156.893 68.0101 167.201 58.853L187.089 81.2409C180.765 86.8594 176.053 94.0636 173.442 102.11C170.83 110.157 170.413 118.755 172.233 127.016L142.988 133.458Z" fill="white" stroke="#D4D4D4" mask="url(#path-13-inside-13_763_9572)"/>
<mask id="path-14-inside-14_763_9572" fill="white">
<path d="M174.285 53.2626C190.523 41.9176 210.49 37.2217 230.083 40.1396L225.686 69.6642C213.64 67.8704 201.364 70.7574 191.381 77.7324L174.285 53.2626Z"/>
</mask>
<path d="M174.285 53.2626C190.523 41.9176 210.49 37.2217 230.083 40.1396L225.686 69.6642C213.64 67.8704 201.364 70.7574 191.381 77.7324L174.285 53.2626Z" fill="white" stroke="#D4D4D4" mask="url(#path-14-inside-14_763_9572)"/>
<mask id="path-15-inside-15_763_9572" fill="white">
<path d="M229.509 40.0563C245.756 42.3518 260.856 49.7455 272.633 61.1724C284.409 72.5992 292.254 87.4693 295.038 103.64C297.822 119.812 295.401 136.449 288.124 151.156C280.847 165.863 269.089 177.881 254.544 185.478L240.735 159.038C249.681 154.365 256.913 146.974 261.389 137.928C265.865 128.881 267.355 118.648 265.642 108.701C263.93 98.7547 259.104 89.6083 251.861 82.5799C244.617 75.5514 235.33 71.0037 225.336 69.5917L229.509 40.0563Z"/>
</mask>
<path d="M229.509 40.0563C245.756 42.3518 260.856 49.7455 272.633 61.1724C284.409 72.5992 292.254 87.4693 295.038 103.64C297.822 119.812 295.401 136.449 288.124 151.156C280.847 165.863 269.089 177.881 254.544 185.478L240.735 159.038C249.681 154.365 256.913 146.974 261.389 137.928C265.865 128.881 267.355 118.648 265.642 108.701C263.93 98.7547 259.104 89.6083 251.861 82.5799C244.617 75.5514 235.33 71.0037 225.336 69.5917L229.509 40.0563Z" stroke="#D4D4D4" mask="url(#path-15-inside-15_763_9572)"/>
<mask id="path-16-inside-16_763_9572" fill="white">
<path d="M245.856 124.053C244.532 129.007 241.88 133.505 238.186 137.062C234.492 140.618 229.897 143.098 224.896 144.233L222.248 132.567C225.123 131.914 227.765 130.489 229.889 128.444C232.013 126.399 233.538 123.813 234.299 120.965L245.856 124.053Z"/>
</mask>
<path d="M245.856 124.053C244.532 129.007 241.88 133.505 238.186 137.062C234.492 140.618 229.897 143.098 224.896 144.233L222.248 132.567C225.123 131.914 227.765 130.489 229.889 128.444C232.013 126.399 233.538 123.813 234.299 120.965L245.856 124.053Z" fill="#FCFCFC" stroke="#EDEDED" mask="url(#path-16-inside-16_763_9572)"/>
<mask id="path-17-inside-17_763_9572" fill="white">
<path d="M214.835 88.9085C219.484 88.2693 224.219 88.803 228.61 90.461C233 92.119 236.906 94.8486 239.973 98.4015C243.039 101.954 245.168 106.218 246.166 110.803C247.164 115.389 247 120.152 245.687 124.657L234.202 121.312C234.956 118.722 235.051 115.984 234.477 113.348C233.903 110.711 232.679 108.26 230.916 106.218C229.153 104.175 226.908 102.606 224.384 101.652C221.859 100.699 219.137 100.392 216.464 100.76L214.835 88.9085Z"/>
</mask>
<path d="M214.835 88.9085C219.484 88.2693 224.219 88.803 228.61 90.461C233 92.119 236.906 94.8486 239.973 98.4015C243.039 101.954 245.168 106.218 246.166 110.803C247.164 115.389 247 120.152 245.687 124.657L234.202 121.312C234.956 118.722 235.051 115.984 234.477 113.348C233.903 110.711 232.679 108.26 230.916 106.218C229.153 104.175 226.908 102.606 224.384 101.652C221.859 100.699 219.137 100.392 216.464 100.76L214.835 88.9085Z" fill="white" stroke="#EDEDED" mask="url(#path-17-inside-17_763_9572)"/>
<mask id="path-18-inside-18_763_9572" fill="white">
<path d="M225.621 144.058C221.053 145.223 216.267 145.221 211.701 144.055C207.134 142.888 202.934 140.593 199.485 137.38C196.037 134.168 193.45 130.14 191.963 125.668C190.476 121.195 190.136 116.421 190.974 111.783L202.737 113.909C202.255 116.577 202.451 119.323 203.306 121.896C204.161 124.469 205.649 126.786 207.633 128.634C209.617 130.482 212.033 131.802 214.66 132.473C217.287 133.144 220.04 133.145 222.667 132.475L225.621 144.058Z"/>
</mask>
<path d="M225.621 144.058C221.053 145.223 216.267 145.221 211.701 144.055C207.134 142.888 202.934 140.593 199.485 137.38C196.037 134.168 193.45 130.14 191.963 125.668C190.476 121.195 190.136 116.421 190.974 111.783L202.737 113.909C202.255 116.577 202.451 119.323 203.306 121.896C204.161 124.469 205.649 126.786 207.633 128.634C209.617 130.482 212.033 131.802 214.66 132.473C217.287 133.144 220.04 133.145 222.667 132.475L225.621 144.058Z" fill="white" stroke="#EDEDED" mask="url(#path-18-inside-18_763_9572)"/>
<mask id="path-19-inside-19_763_9572" fill="white">
<path d="M190.841 112.589C191.761 106.492 194.658 100.866 199.086 96.5758C203.515 92.2856 209.23 89.5686 215.352 88.8422L216.759 100.702C213.235 101.12 209.945 102.684 207.396 105.154C204.847 107.623 203.179 110.862 202.65 114.371L190.841 112.589Z"/>
</mask>
<path d="M190.841 112.589C191.761 106.492 194.658 100.866 199.086 96.5758C203.515 92.2856 209.23 89.5686 215.352 88.8422L216.759 100.702C213.235 101.12 209.945 102.684 207.396 105.154C204.847 107.623 203.179 110.862 202.65 114.371L190.841 112.589Z" fill="white" stroke="#EDEDED" mask="url(#path-19-inside-19_763_9572)"/>
<mask id="path-20-inside-20_763_9572" fill="white">
<path d="M264.784 130.228C262.533 137.951 258.379 144.986 252.702 150.686C247.025 156.385 240.007 160.568 232.293 162.85C224.578 165.132 216.415 165.44 208.55 163.746C200.686 162.051 193.373 158.409 187.283 153.153L200.614 137.707C204.117 140.73 208.324 142.825 212.848 143.8C217.372 144.775 222.068 144.598 226.505 143.285C230.943 141.972 234.98 139.566 238.245 136.287C241.511 133.009 243.901 128.962 245.196 124.519L264.784 130.228Z"/>
</mask>
<path d="M264.784 130.228C262.533 137.951 258.379 144.986 252.702 150.686C247.025 156.385 240.007 160.568 232.293 162.85C224.578 165.132 216.415 165.44 208.55 163.746C200.686 162.051 193.373 158.409 187.283 153.153L200.614 137.707C204.117 140.73 208.324 142.825 212.848 143.8C217.372 144.775 222.068 144.598 226.505 143.285C230.943 141.972 234.98 139.566 238.245 136.287C241.511 133.009 243.901 128.962 245.196 124.519L264.784 130.228Z" fill="white" stroke="#D4D4D4" mask="url(#path-20-inside-20_763_9572)"/>
<mask id="path-21-inside-21_763_9572" fill="white">
<path d="M188.351 154.048C183.314 149.949 179.16 144.871 176.14 139.121L194.188 129.644C195.926 132.953 198.317 135.876 201.217 138.236L188.351 154.048Z"/>
</mask>
<path d="M188.351 154.048C183.314 149.949 179.16 144.871 176.14 139.121L194.188 129.644C195.926 132.953 198.317 135.876 201.217 138.236L188.351 154.048Z" fill="white" stroke="#D4D4D4" mask="url(#path-21-inside-21_763_9572)"/>
<mask id="path-22-inside-22_763_9572" fill="white">
<path d="M171.087 123.378C169.929 115.018 170.994 106.502 174.175 98.6848L193.094 106.383C191.265 110.876 190.653 115.771 191.319 120.576L171.087 123.378Z"/>
</mask>
<path d="M171.087 123.378C169.929 115.018 170.994 106.502 174.175 98.6848L193.094 106.383C191.265 110.876 190.653 115.771 191.319 120.576L171.087 123.378Z" fill="white" stroke="#D4D4D4" mask="url(#path-22-inside-22_763_9572)"/>
<mask id="path-23-inside-23_763_9572" fill="white">
<path d="M174.05 98.9951C177.943 89.2339 184.929 81.0187 193.938 75.6085C202.947 70.1984 213.482 67.8919 223.927 69.0426L221.684 89.4043C215.693 88.7443 209.651 90.0672 204.484 93.1701C199.317 96.2731 195.31 100.985 193.078 106.583L174.05 98.9951Z"/>
</mask>
<path d="M174.05 98.9951C177.943 89.2339 184.929 81.0187 193.938 75.6085C202.947 70.1984 213.482 67.8919 223.927 69.0426L221.684 89.4043C215.693 88.7443 209.651 90.0672 204.484 93.1701C199.317 96.2731 195.31 100.985 193.078 106.583L174.05 98.9951Z" fill="#F3F3F3" stroke="#D4D4D4" mask="url(#path-23-inside-23_763_9572)"/>
<path d="M174.05 98.9951C177.943 89.2339 184.929 81.0187 193.938 75.6085C202.947 70.1984 213.482 67.8919 223.927 69.0426L221.684 89.4043C215.693 88.7443 209.651 90.0672 204.484 93.1701C199.317 96.2731 195.31 100.985 193.078 106.583L174.05 98.9951Z" fill="white" stroke="#D4D4D4" stroke-width="0.5" stroke-miterlimit="16" stroke-linecap="round"/>
<mask id="path-25-inside-24_763_9572" fill="white">
<path d="M142.988 133.458C140.022 119.993 140.702 105.98 144.958 92.8658C149.215 79.7514 156.893 68.0101 167.201 58.853L187.089 81.2409C180.765 86.8594 176.053 94.0636 173.442 102.11C170.83 110.157 170.413 118.755 172.233 127.016L142.988 133.458Z"/>
</mask>
<path d="M142.988 133.458C140.022 119.993 140.702 105.98 144.958 92.8658C149.215 79.7514 156.893 68.0101 167.201 58.853L187.089 81.2409C180.765 86.8594 176.053 94.0636 173.442 102.11C170.83 110.157 170.413 118.755 172.233 127.016L142.988 133.458Z" fill="#FCFCFC" stroke="#B2B2B2" mask="url(#path-25-inside-24_763_9572)"/>
<mask id="path-26-inside-25_763_9572" fill="white">
<path d="M278.558 226.802C258.513 237.715 235.866 242.943 213.066 241.922C190.265 240.902 168.176 233.671 149.186 221.01L176.036 180.736C187.688 188.504 201.241 192.941 215.23 193.567C229.22 194.193 243.115 190.985 255.415 184.29L278.558 226.802Z"/>
</mask>
<path d="M278.558 226.802C258.513 237.715 235.866 242.943 213.066 241.922C190.265 240.902 168.176 233.671 149.186 221.01L176.036 180.736C187.688 188.504 201.241 192.941 215.23 193.567C229.22 194.193 243.115 190.985 255.415 184.29L278.558 226.802Z" fill="#FCFCFC" stroke="#B2B2B2" mask="url(#path-26-inside-25_763_9572)"/>
<mask id="path-27-inside-26_763_9572" fill="white">
<path d="M308.046 -66.0023C337.365 -51.6666 362.804 -30.4891 382.219 -4.25674C401.634 21.9756 414.454 52.4932 419.597 84.7207L342.256 97.0641C339.092 77.2415 331.207 58.4706 319.265 42.3355C307.324 26.2004 291.676 13.1744 273.643 4.35682L308.046 -66.0023Z"/>
</mask>
<path d="M308.046 -66.0023C337.365 -51.6666 362.804 -30.4891 382.219 -4.25674C401.634 21.9756 414.454 52.4932 419.597 84.7207L342.256 97.0641C339.092 77.2415 331.207 58.4706 319.265 42.3355C307.324 26.2004 291.676 13.1744 273.643 4.35682L308.046 -66.0023Z" fill="#FCFCFC" stroke="#B2B2B2" mask="url(#path-27-inside-26_763_9572)"/>
<mask id="path-28-inside-27_763_9572" fill="white">
<path d="M245.856 124.053C244.532 129.007 241.88 133.505 238.186 137.061C234.492 140.618 229.897 143.098 224.896 144.233L222.248 132.566C225.123 131.914 227.765 130.488 229.889 128.444C232.013 126.399 233.538 123.813 234.299 120.965L245.856 124.053Z"/>
</mask>
<path d="M245.856 124.053C244.532 129.007 241.88 133.505 238.186 137.061C234.492 140.618 229.897 143.098 224.896 144.233L222.248 132.566C225.123 131.914 227.765 130.488 229.889 128.444C232.013 126.399 233.538 123.813 234.299 120.965L245.856 124.053Z" fill="#FCFCFC" stroke="#B2B2B2" mask="url(#path-28-inside-27_763_9572)"/>
</g>
<defs>
<clipPath id="clip0_763_9572">
<rect width="349" height="208" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,124 @@
<svg width="764" height="208" viewBox="0 0 764 208" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_924_58988)">
<rect width="764" height="208" fill="white"/>
<mask id="path-1-inside-1_924_58988" fill="white">
<path d="M668.278 4.26089C686.326 13.086 701.987 26.1231 713.939 42.272C725.891 58.4209 733.783 77.2078 736.949 97.0473L689.338 104.646C687.39 92.443 682.536 80.8875 675.184 70.9546C667.833 61.0217 658.2 53.0028 647.099 47.5746L668.278 4.26089Z"/>
</mask>
<path d="M668.278 4.26089C686.326 13.086 701.987 26.1231 713.939 42.272C725.891 58.4209 733.783 77.2078 736.949 97.0473L689.338 104.646C687.39 92.443 682.536 80.8875 675.184 70.9546C667.833 61.0217 658.2 53.0028 647.099 47.5746L668.278 4.26089Z" fill="white" stroke="#D4D4D4" mask="url(#path-1-inside-1_924_58988)"/>
<mask id="path-2-inside-2_924_58988" fill="white">
<path d="M673.146 226.802C653.101 237.715 630.454 242.943 607.653 241.923C584.853 240.902 562.764 233.671 543.774 221.011L570.623 180.736C582.275 188.504 595.828 192.941 609.818 193.567C623.808 194.194 637.703 190.986 650.003 184.29L673.146 226.802Z"/>
</mask>
<path d="M673.146 226.802C653.101 237.715 630.454 242.943 607.653 241.923C584.853 240.902 562.764 233.671 543.774 221.011L570.623 180.736C582.275 188.504 595.828 192.941 609.818 193.567C623.808 194.194 637.703 190.986 650.003 184.29L673.146 226.802Z" stroke="#D4D4D4" mask="url(#path-2-inside-2_924_58988)"/>
<mask id="path-3-inside-3_924_58988" fill="white">
<path d="M516.021 195.753C501.972 178.453 492.792 157.718 489.43 135.687C486.067 113.656 488.644 91.1263 496.893 70.423L541.859 88.34C536.797 101.043 535.216 114.866 537.28 128.384C539.343 141.902 544.975 154.624 553.595 165.239L516.021 195.753Z"/>
</mask>
<path d="M516.021 195.753C501.972 178.453 492.792 157.718 489.43 135.687C486.067 113.656 488.644 91.1263 496.893 70.423L541.859 88.34C536.797 101.043 535.216 114.866 537.28 128.384C539.343 141.902 544.975 154.624 553.595 165.239L516.021 195.753Z" fill="white" stroke="#D4D4D4" mask="url(#path-3-inside-3_924_58988)"/>
<mask id="path-4-inside-4_924_58988" fill="white">
<path d="M541.517 14.1071C567.764 -4.23054 600.037 -11.8208 631.706 -7.10456L624.599 40.6183C605.129 37.7187 585.287 42.3853 569.15 53.6594L541.517 14.1071Z"/>
</mask>
<path d="M541.517 14.1071C567.764 -4.23054 600.037 -11.8208 631.706 -7.10456L624.599 40.6183C605.129 37.7187 585.287 42.3853 569.15 53.6594L541.517 14.1071Z" fill="#F8F8F8" stroke="#D4D4D4" mask="url(#path-4-inside-4_924_58988)"/>
<mask id="path-5-inside-5_924_58988" fill="white">
<path d="M630.778 -7.23917C636.364 -6.45004 641.89 -5.2845 647.318 -3.75052L634.207 42.6469C630.868 41.7034 627.469 40.9865 624.033 40.5011L630.778 -7.23917Z"/>
</mask>
<path d="M630.778 -7.23917C636.364 -6.45004 641.89 -5.2845 647.318 -3.75052L634.207 42.6469C630.868 41.7034 627.469 40.9865 624.033 40.5011L630.778 -7.23917Z" fill="white" stroke="#D4D4D4" mask="url(#path-5-inside-5_924_58988)"/>
<mask id="path-6-inside-6_924_58988" fill="white">
<path d="M702.634 -66.0023C731.952 -51.6666 757.392 -30.4891 776.807 -4.25674C796.222 21.9756 809.042 52.4932 814.185 84.7207L736.844 97.0641C733.68 77.2415 725.795 58.4706 713.853 42.3355C701.912 26.2004 686.264 13.1744 668.231 4.35682L702.634 -66.0023Z"/>
</mask>
<path d="M702.634 -66.0023C731.952 -51.6666 757.392 -30.4891 776.807 -4.25674C796.222 21.9756 809.042 52.4932 814.185 84.7207L736.844 97.0641C733.68 77.2415 725.795 58.4706 713.853 42.3355C701.912 26.2004 686.264 13.1744 668.231 4.35682L702.634 -66.0023Z" fill="#F7F7F7" stroke="#D4D4D4" mask="url(#path-6-inside-6_924_58988)"/>
<mask id="path-7-inside-7_924_58988" fill="white">
<path d="M580.111 317.543C535.342 310.152 494.329 288.009 463.59 254.633L521.425 201.366C540.286 221.844 565.45 235.431 592.919 239.966L580.111 317.543Z"/>
</mask>
<path d="M580.111 317.543C535.342 310.152 494.329 288.009 463.59 254.633L521.425 201.366C540.286 221.844 565.45 235.431 592.919 239.966L580.111 317.543Z" fill="white" stroke="#D4D4D4" mask="url(#path-7-inside-7_924_58988)"/>
<mask id="path-8-inside-8_924_58988" fill="white">
<path d="M414.57 160.663C406.764 125.313 408.53 88.5197 419.687 54.0799C430.845 19.6402 450.988 -11.1993 478.04 -35.2569L530.291 23.4978C513.693 38.2588 501.333 57.181 494.488 78.3123C487.642 99.4435 486.558 122.019 491.348 143.709L414.57 160.663Z"/>
</mask>
<path d="M414.57 160.663C406.764 125.313 408.53 88.5197 419.687 54.0799C430.845 19.6402 450.988 -11.1993 478.04 -35.2569L530.291 23.4978C513.693 38.2588 501.333 57.181 494.488 78.3123C487.642 99.4435 486.558 122.019 491.348 143.709L414.57 160.663Z" fill="white" stroke="#FCFCFC" mask="url(#path-8-inside-8_924_58988)"/>
<mask id="path-9-inside-9_924_58988" fill="white">
<path d="M464.021 255.1C452.591 242.767 442.733 229.064 434.674 214.305L503.683 176.622C508.628 185.678 514.676 194.085 521.69 201.653L464.021 255.1Z"/>
</mask>
<path d="M464.021 255.1C452.591 242.767 442.733 229.064 434.674 214.305L503.683 176.622C508.628 185.678 514.676 194.085 521.69 201.653L464.021 255.1Z" fill="white" stroke="#D4D4D4" mask="url(#path-9-inside-9_924_58988)"/>
<mask id="path-10-inside-10_924_58988" fill="white">
<path d="M496.722 -50.0079C539.359 -79.7958 591.783 -92.1256 643.227 -84.4644L631.682 -6.94301C600.054 -11.6531 567.823 -4.07273 541.61 14.241L496.722 -50.0079Z"/>
</mask>
<path d="M496.722 -50.0079C539.359 -79.7958 591.783 -92.1256 643.227 -84.4644L631.682 -6.94301C600.054 -11.6531 567.823 -4.07273 541.61 14.241L496.722 -50.0079Z" fill="white" stroke="#D4D4D4" mask="url(#path-10-inside-10_924_58988)"/>
<mask id="path-11-inside-11_924_58988" fill="white">
<path d="M652.302 -82.9021C669.982 -79.4451 687.124 -73.6556 703.279 -65.6854L668.628 4.55172C658.691 -0.350631 648.147 -3.91167 637.273 -6.03801L652.302 -82.9021Z"/>
</mask>
<path d="M652.302 -82.9021C669.982 -79.4451 687.124 -73.6556 703.279 -65.6854L668.628 4.55172C658.691 -0.350631 648.147 -3.91167 637.273 -6.03801L652.302 -82.9021Z" fill="white" stroke="#D4D4D4" mask="url(#path-11-inside-11_924_58988)"/>
<mask id="path-12-inside-12_924_58988" fill="white">
<path d="M596.968 192.552C578.195 188.516 561.588 177.654 550.368 162.071L574.67 144.573C581.554 154.134 591.743 160.798 603.262 163.275L596.968 192.552Z"/>
</mask>
<path d="M596.968 192.552C578.195 188.516 561.588 177.654 550.368 162.071L574.67 144.573C581.554 154.134 591.743 160.798 603.262 163.275L596.968 192.552Z" fill="white" stroke="#D4D4D4" mask="url(#path-12-inside-12_924_58988)"/>
<mask id="path-13-inside-13_924_58988" fill="white">
<path d="M537.575 133.458C534.61 119.993 535.29 105.98 539.546 92.8658C543.803 79.7514 551.481 68.0101 561.789 58.853L581.677 81.2409C575.352 86.8594 570.641 94.0636 568.03 102.11C565.418 110.157 565.001 118.755 566.82 127.016L537.575 133.458Z"/>
</mask>
<path d="M537.575 133.458C534.61 119.993 535.29 105.98 539.546 92.8658C543.803 79.7514 551.481 68.0101 561.789 58.853L581.677 81.2409C575.352 86.8594 570.641 94.0636 568.03 102.11C565.418 110.157 565.001 118.755 566.82 127.016L537.575 133.458Z" fill="white" stroke="#D4D4D4" mask="url(#path-13-inside-13_924_58988)"/>
<mask id="path-14-inside-14_924_58988" fill="white">
<path d="M568.873 53.2626C585.111 41.9176 605.078 37.2217 624.67 40.1396L620.273 69.6642C608.228 67.8704 595.952 70.7574 585.969 77.7324L568.873 53.2626Z"/>
</mask>
<path d="M568.873 53.2626C585.111 41.9176 605.078 37.2217 624.67 40.1396L620.273 69.6642C608.228 67.8704 595.952 70.7574 585.969 77.7324L568.873 53.2626Z" fill="white" stroke="#D4D4D4" mask="url(#path-14-inside-14_924_58988)"/>
<mask id="path-15-inside-15_924_58988" fill="white">
<path d="M624.096 40.0563C640.344 42.3518 655.444 49.7455 667.22 61.1724C678.997 72.5992 686.842 87.4693 689.626 103.64C692.41 119.812 689.989 136.449 682.712 151.156C675.435 165.863 663.677 177.881 649.132 185.478L635.323 159.038C644.269 154.365 651.501 146.974 655.977 137.928C660.453 128.881 661.942 118.648 660.23 108.701C658.517 98.7547 653.692 89.6083 646.448 82.5799C639.205 75.5514 629.917 71.0037 619.924 69.5917L624.096 40.0563Z"/>
</mask>
<path d="M624.096 40.0563C640.344 42.3518 655.444 49.7455 667.22 61.1724C678.997 72.5992 686.842 87.4693 689.626 103.64C692.41 119.812 689.989 136.449 682.712 151.156C675.435 165.863 663.677 177.881 649.132 185.478L635.323 159.038C644.269 154.365 651.501 146.974 655.977 137.928C660.453 128.881 661.942 118.648 660.23 108.701C658.517 98.7547 653.692 89.6083 646.448 82.5799C639.205 75.5514 629.917 71.0037 619.924 69.5917L624.096 40.0563Z" stroke="#D4D4D4" mask="url(#path-15-inside-15_924_58988)"/>
<mask id="path-16-inside-16_924_58988" fill="white">
<path d="M640.444 124.053C639.12 129.007 636.468 133.505 632.774 137.062C629.08 140.618 624.485 143.098 619.484 144.233L616.836 132.567C619.711 131.914 622.353 130.489 624.477 128.444C626.601 126.399 628.126 123.813 628.887 120.965L640.444 124.053Z"/>
</mask>
<path d="M640.444 124.053C639.12 129.007 636.468 133.505 632.774 137.062C629.08 140.618 624.485 143.098 619.484 144.233L616.836 132.567C619.711 131.914 622.353 130.489 624.477 128.444C626.601 126.399 628.126 123.813 628.887 120.965L640.444 124.053Z" fill="#FCFCFC" stroke="#EDEDED" mask="url(#path-16-inside-16_924_58988)"/>
<mask id="path-17-inside-17_924_58988" fill="white">
<path d="M609.423 88.9085C614.072 88.2693 618.807 88.803 623.198 90.461C627.588 92.119 631.494 94.8486 634.56 98.4015C637.627 101.954 639.756 106.218 640.754 110.803C641.752 115.389 641.587 120.152 640.275 124.657L628.79 121.312C629.544 118.722 629.639 115.984 629.065 113.348C628.491 110.711 627.267 108.26 625.504 106.218C623.741 104.175 621.496 102.606 618.971 101.652C616.447 100.699 613.725 100.392 611.052 100.76L609.423 88.9085Z"/>
</mask>
<path d="M609.423 88.9085C614.072 88.2693 618.807 88.803 623.198 90.461C627.588 92.119 631.494 94.8486 634.56 98.4015C637.627 101.954 639.756 106.218 640.754 110.803C641.752 115.389 641.587 120.152 640.275 124.657L628.79 121.312C629.544 118.722 629.639 115.984 629.065 113.348C628.491 110.711 627.267 108.26 625.504 106.218C623.741 104.175 621.496 102.606 618.971 101.652C616.447 100.699 613.725 100.392 611.052 100.76L609.423 88.9085Z" fill="white" stroke="#EDEDED" mask="url(#path-17-inside-17_924_58988)"/>
<mask id="path-18-inside-18_924_58988" fill="white">
<path d="M620.208 144.058C615.641 145.223 610.855 145.221 606.288 144.055C601.722 142.888 597.522 140.593 594.073 137.38C590.624 134.168 588.038 130.14 586.551 125.668C585.064 121.195 584.724 116.421 585.562 111.783L597.325 113.909C596.843 116.577 597.038 119.323 597.894 121.896C598.749 124.469 600.237 126.786 602.221 128.634C604.205 130.482 606.621 131.802 609.248 132.473C611.875 133.144 614.628 133.145 617.255 132.475L620.208 144.058Z"/>
</mask>
<path d="M620.208 144.058C615.641 145.223 610.855 145.221 606.288 144.055C601.722 142.888 597.522 140.593 594.073 137.38C590.624 134.168 588.038 130.14 586.551 125.668C585.064 121.195 584.724 116.421 585.562 111.783L597.325 113.909C596.843 116.577 597.038 119.323 597.894 121.896C598.749 124.469 600.237 126.786 602.221 128.634C604.205 130.482 606.621 131.802 609.248 132.473C611.875 133.144 614.628 133.145 617.255 132.475L620.208 144.058Z" fill="white" stroke="#EDEDED" mask="url(#path-18-inside-18_924_58988)"/>
<mask id="path-19-inside-19_924_58988" fill="white">
<path d="M585.428 112.589C586.349 106.492 589.246 100.866 593.674 96.5758C598.103 92.2856 603.817 89.5686 609.94 88.8422L611.347 100.702C607.823 101.12 604.533 102.684 601.984 105.154C599.435 107.623 597.767 110.862 597.238 114.371L585.428 112.589Z"/>
</mask>
<path d="M585.428 112.589C586.349 106.492 589.246 100.866 593.674 96.5758C598.103 92.2856 603.817 89.5686 609.94 88.8422L611.347 100.702C607.823 101.12 604.533 102.684 601.984 105.154C599.435 107.623 597.767 110.862 597.238 114.371L585.428 112.589Z" fill="white" stroke="#EDEDED" mask="url(#path-19-inside-19_924_58988)"/>
<mask id="path-20-inside-20_924_58988" fill="white">
<path d="M659.372 130.228C657.121 137.951 652.967 144.986 647.29 150.686C641.613 156.385 634.595 160.568 626.881 162.85C619.166 165.132 611.002 165.44 603.138 163.746C595.274 162.051 587.961 158.409 581.871 153.153L595.202 137.707C598.705 140.73 602.912 142.825 607.436 143.8C611.959 144.775 616.656 144.598 621.093 143.285C625.531 141.972 629.568 139.566 632.833 136.287C636.099 133.009 638.489 128.962 639.783 124.519L659.372 130.228Z"/>
</mask>
<path d="M659.372 130.228C657.121 137.951 652.967 144.986 647.29 150.686C641.613 156.385 634.595 160.568 626.881 162.85C619.166 165.132 611.002 165.44 603.138 163.746C595.274 162.051 587.961 158.409 581.871 153.153L595.202 137.707C598.705 140.73 602.912 142.825 607.436 143.8C611.959 144.775 616.656 144.598 621.093 143.285C625.531 141.972 629.568 139.566 632.833 136.287C636.099 133.009 638.489 128.962 639.783 124.519L659.372 130.228Z" fill="white" stroke="#D4D4D4" mask="url(#path-20-inside-20_924_58988)"/>
<mask id="path-21-inside-21_924_58988" fill="white">
<path d="M582.939 154.048C577.902 149.949 573.748 144.871 570.728 139.121L588.776 129.644C590.514 132.953 592.905 135.876 595.805 138.236L582.939 154.048Z"/>
</mask>
<path d="M582.939 154.048C577.902 149.949 573.748 144.871 570.728 139.121L588.776 129.644C590.514 132.953 592.905 135.876 595.805 138.236L582.939 154.048Z" fill="white" stroke="#D4D4D4" mask="url(#path-21-inside-21_924_58988)"/>
<mask id="path-22-inside-22_924_58988" fill="white">
<path d="M565.675 123.378C564.517 115.018 565.582 106.502 568.763 98.6848L587.681 106.383C585.853 110.876 585.241 115.771 585.906 120.576L565.675 123.378Z"/>
</mask>
<path d="M565.675 123.378C564.517 115.018 565.582 106.502 568.763 98.6848L587.681 106.383C585.853 110.876 585.241 115.771 585.906 120.576L565.675 123.378Z" fill="white" stroke="#D4D4D4" mask="url(#path-22-inside-22_924_58988)"/>
<mask id="path-23-inside-23_924_58988" fill="white">
<path d="M568.638 98.9951C572.531 89.2339 579.517 81.0187 588.526 75.6085C597.535 70.1984 608.07 67.8919 618.515 69.0426L616.272 89.4043C610.281 88.7443 604.239 90.0672 599.072 93.1701C593.905 96.2731 589.898 100.985 587.666 106.583L568.638 98.9951Z"/>
</mask>
<path d="M568.638 98.9951C572.531 89.2339 579.517 81.0187 588.526 75.6085C597.535 70.1984 608.07 67.8919 618.515 69.0426L616.272 89.4043C610.281 88.7443 604.239 90.0672 599.072 93.1701C593.905 96.2731 589.898 100.985 587.666 106.583L568.638 98.9951Z" fill="#F3F3F3" stroke="#D4D4D4" mask="url(#path-23-inside-23_924_58988)"/>
<path d="M568.638 98.9951C572.531 89.2339 579.517 81.0187 588.526 75.6085C597.535 70.1984 608.07 67.8919 618.515 69.0426L616.272 89.4043C610.281 88.7443 604.239 90.0672 599.072 93.1701C593.905 96.2731 589.898 100.985 587.666 106.583L568.638 98.9951Z" fill="white" stroke="#D4D4D4" stroke-width="0.5" stroke-miterlimit="16" stroke-linecap="round"/>
<mask id="path-25-inside-24_924_58988" fill="white">
<path d="M537.576 133.458C534.61 119.993 535.29 105.98 539.546 92.8658C543.803 79.7514 551.481 68.0101 561.789 58.853L581.677 81.2409C575.352 86.8594 570.641 94.0636 568.03 102.11C565.418 110.157 565.001 118.755 566.82 127.016L537.576 133.458Z"/>
</mask>
<path d="M537.576 133.458C534.61 119.993 535.29 105.98 539.546 92.8658C543.803 79.7514 551.481 68.0101 561.789 58.853L581.677 81.2409C575.352 86.8594 570.641 94.0636 568.03 102.11C565.418 110.157 565.001 118.755 566.82 127.016L537.576 133.458Z" fill="#FCFCFC" stroke="#B2B2B2" mask="url(#path-25-inside-24_924_58988)"/>
<mask id="path-26-inside-25_924_58988" fill="white">
<path d="M673.146 226.802C653.101 237.715 630.454 242.943 607.654 241.922C584.853 240.902 562.764 233.671 543.774 221.01L570.624 180.736C582.276 188.504 595.829 192.941 609.818 193.567C623.808 194.193 637.704 190.985 650.003 184.29L673.146 226.802Z"/>
</mask>
<path d="M673.146 226.802C653.101 237.715 630.454 242.943 607.654 241.922C584.853 240.902 562.764 233.671 543.774 221.01L570.624 180.736C582.276 188.504 595.829 192.941 609.818 193.567C623.808 194.193 637.704 190.985 650.003 184.29L673.146 226.802Z" fill="#FCFCFC" stroke="#B2B2B2" mask="url(#path-26-inside-25_924_58988)"/>
<mask id="path-27-inside-26_924_58988" fill="white">
<path d="M702.634 -66.0023C731.952 -51.6666 757.392 -30.4891 776.807 -4.25674C796.222 21.9756 809.041 52.4932 814.185 84.7207L736.844 97.0641C733.68 77.2415 725.795 58.4706 713.853 42.3355C701.912 26.2004 686.264 13.1744 668.231 4.35682L702.634 -66.0023Z"/>
</mask>
<path d="M702.634 -66.0023C731.952 -51.6666 757.392 -30.4891 776.807 -4.25674C796.222 21.9756 809.041 52.4932 814.185 84.7207L736.844 97.0641C733.68 77.2415 725.795 58.4706 713.853 42.3355C701.912 26.2004 686.264 13.1744 668.231 4.35682L702.634 -66.0023Z" fill="#FCFCFC" stroke="#B2B2B2" mask="url(#path-27-inside-26_924_58988)"/>
<mask id="path-28-inside-27_924_58988" fill="white">
<path d="M640.444 124.053C639.12 129.007 636.468 133.505 632.774 137.061C629.08 140.618 624.485 143.098 619.484 144.233L616.837 132.566C619.711 131.914 622.354 130.488 624.477 128.444C626.601 126.399 628.126 123.813 628.887 120.965L640.444 124.053Z"/>
</mask>
<path d="M640.444 124.053C639.12 129.007 636.468 133.505 632.774 137.061C629.08 140.618 624.485 143.098 619.484 144.233L616.837 132.566C619.711 131.914 622.354 130.488 624.477 128.444C626.601 126.399 628.126 123.813 628.887 120.965L640.444 124.053Z" fill="#FCFCFC" stroke="#B2B2B2" mask="url(#path-28-inside-27_924_58988)"/>
<rect x="203.23" width="489" height="208" fill="url(#paint0_linear_924_58988)"/>
</g>
<defs>
<linearGradient id="paint0_linear_924_58988" x1="605.113" y1="115" x2="207.056" y2="111.765" gradientUnits="userSpaceOnUse">
<stop stop-color="white" stop-opacity="0"/>
<stop offset="1" stop-color="white"/>
</linearGradient>
<clipPath id="clip0_924_58988">
<rect width="764" height="208" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

+1
View File
@@ -60,6 +60,7 @@ SMTP_PORT=2500
SMTP_USER=fake_mail_user
SMTP_PASS=fake_mail_password
SMTP_SENDER_NAME=fake_sender
ENABLE_ANONYMOUS_USERS=false
## Phone auth
ENABLE_PHONE_SIGNUP=true
+1
View File
@@ -116,6 +116,7 @@ services:
GOTRUE_JWT_SECRET: ${JWT_SECRET}
GOTRUE_EXTERNAL_EMAIL_ENABLED: ${ENABLE_EMAIL_SIGNUP}
GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED: ${ENABLE_ANONYMOUS_USERS}
GOTRUE_MAILER_AUTOCONFIRM: ${ENABLE_EMAIL_AUTOCONFIRM}
# GOTRUE_MAILER_SECURE_EMAIL_CHANGE_ENABLED: true
# GOTRUE_SMTP_MAX_FREQUENCY: 1s
+2
View File
@@ -1,5 +1,7 @@
import roles from './pg-meta-roles'
import schemas from './pg-meta-schemas'
export default {
roles,
schemas,
}
+253
View File
@@ -0,0 +1,253 @@
import { ident, literal } from 'pg-format'
import { ROLES_SQL } from './sql/roles'
import { z } from 'zod'
const pgRoleZod = z.object({
id: z.number(),
name: z.string(),
isSuperuser: z.boolean(),
canCreateDb: z.boolean(),
canCreateRole: z.boolean(),
inheritRole: z.boolean(),
canLogin: z.boolean(),
isReplicationRole: z.boolean(),
canBypassRls: z.boolean(),
activeConnections: z.number(),
connectionLimit: z.number(),
validUntil: z.union([z.string(), z.null()]),
config: z.record(z.string(), z.string()),
})
const pgRoleArrayZod = z.array(pgRoleZod)
const pgRoleOptionalZod = z.optional(pgRoleZod)
function list({
includeDefaultRoles: includeDefaultRoles = false,
limit,
offset,
}: {
includeDefaultRoles?: boolean
limit?: number
offset?: number
} = {}): {
sql: string
zod: typeof pgRoleArrayZod
} {
let sql = `
with
roles as (${ROLES_SQL})
select
*
from
roles
where
true
`
if (!includeDefaultRoles) {
// All default/predefined roles start with pg_: https://www.postgresql.org/docs/15/predefined-roles.html
// The pg_ prefix is also reserved:
//
// ```
// postgres=# create role pg_myrole;
// ERROR: role name "pg_myrole" is reserved
// DETAIL: Role names starting with "pg_" are reserved.
// ```
sql += ` and not pg_catalog.starts_with(name, 'pg_')`
}
if (limit) {
sql += ` limit ${limit}`
}
if (offset) {
sql += ` offset ${offset}`
}
return {
sql,
zod: pgRoleArrayZod,
}
}
function retrieve({ id }: { id: number }): { sql: string; zod: typeof pgRoleOptionalZod }
function retrieve({ name }: { name: string }): { sql: string; zod: typeof pgRoleOptionalZod }
function retrieve({ id, name }: { id?: number; name?: string }): { sql: string; zod: typeof pgRoleOptionalZod } {
if (id) {
const sql = `${ROLES_SQL} where r.oid = ${literal(id)};`
return {
sql,
zod: pgRoleOptionalZod,
}
} else {
const sql = `${ROLES_SQL} where rolname = ${literal(name)};`
return {
sql,
zod: pgRoleOptionalZod,
}
}
}
type RoleCreateParams = {
name: string,
isSuperuser?: boolean,
canCreateDb?: boolean,
canCreateRole?: boolean,
inheritRole?: boolean,
canLogin?: boolean,
isReplicationRole?: boolean,
canBypassRls?: boolean,
connectionLimit?: number,
password?: string,
validUntil?: string,
memberOf?: string[],
members?: string[],
admins?: string[],
config?: Record<string, string>,
}
function create({
name,
isSuperuser = false,
canCreateDb = false,
canCreateRole = false,
inheritRole = true,
canLogin = false,
isReplicationRole = false,
canBypassRls = false,
connectionLimit = -1,
password,
validUntil,
memberOf = [],
members = [],
admins = [],
config = {},
}: RoleCreateParams): { sql: string } {
const sql = `
create role ${ident(name)}
${isSuperuser ? 'superuser' : ''}
${canCreateDb ? 'createdb' : ''}
${canCreateRole ? 'createrole' : ''}
${inheritRole ? '' : 'noinherit'}
${canLogin ? 'login' : ''}
${isReplicationRole ? 'replication' : ''}
${canBypassRls ? 'bypassrls' : ''}
connection limit ${connectionLimit}
${password === undefined ? '' : `password ${literal(password)}`}
${validUntil === undefined ? '' : `valid until ${literal(validUntil)}`}
${memberOf.length === 0 ? '' : `in role ${memberOf.map(ident).join(',')}`}
${members.length === 0 ? '' : `role ${members.map(ident).join(',')}`}
${admins.length === 0 ? '' : `admin ${admins.map(ident).join(',')}`}
;
${Object.entries(config).map(([param, value]) => `alter role ${ident(name)} set ${ident(param)} = ${literal(value)};`).join('\n')}
`
return { sql }
}
type RoleUpdateParams = {
name?: string,
isSuperuser?: boolean,
canCreateDb?: boolean,
canCreateRole?: boolean,
inheritRole?: boolean,
canLogin?: boolean,
isReplicationRole?: boolean,
canBypassRls?: boolean,
connectionLimit?: number,
password?: string,
validUntil?: string,
}
function update({ id }: { id: number }, params: RoleUpdateParams): { sql: string }
function update({ name }: { name: string }, params: RoleUpdateParams): { sql: string }
function update(
{
id,
name,
}: {
id?: number
name?: string
},
{
name: newName,
isSuperuser,
canCreateDb,
canCreateRole,
inheritRole,
canLogin,
isReplicationRole,
canBypassRls,
connectionLimit,
password,
validUntil,
}: RoleUpdateParams): { sql: string } {
const sql = `
do $$
declare
id oid := ${id === undefined ? `${literal(name)}::regrole` : literal(id)};
old record;
begin
select * into old from pg_roles where oid = id;
if old is null then
raise exception 'Cannot find role with id %', id;
end if;
execute(format('alter role %I
${isSuperuser === undefined ? '' : isSuperuser ? 'superuser' : 'nosuperuser'}
${canCreateDb === undefined ? '' : canCreateDb ? 'createdb' : 'nocreatedb'}
${canCreateRole === undefined ? '' : canCreateRole ? 'createrole' : 'nocreaterole'}
${inheritRole === undefined ? '' : inheritRole ? 'inherit' : 'noinherit'}
${canLogin === undefined ? '' : canLogin ? 'login' : 'nologin'}
${isReplicationRole === undefined ? '' : isReplicationRole ? 'replication' : 'noreplication'}
${canBypassRls === undefined ? '' : canBypassRls ? 'bypassrls' : 'nobypassrls'}
${connectionLimit === undefined ? '' : `connection limit ${literal(connectionLimit)}`}
${password === undefined ? '' : `password ${literal(password)}`}
${validUntil === undefined ? '' : `valid until ${literal(validUntil)}`}
', old.rolname));
${newName === undefined ? '' : `
-- Using the same name in the rename clause gives an error, so only do it if the new name is different.
if new_name != old.nspname then
execute(format('alter role %I rename to ${ident(newName)};', old.nspname));
end if;
`}
end
$$;
`
return { sql }
}
type RoleRemoveParams = {
ifExists?: boolean
}
function remove({ id }: { id: number }, params?: RoleRemoveParams): { sql: string }
function remove({ name }: { name: string }, params?: RoleRemoveParams): { sql: string }
function remove(
{
id,
name,
}: {
id?: number
name?: string
},
{ ifExists = false }: RoleRemoveParams = {}
): { sql: string } {
const sql = `
do $$
declare
id oid := ${id === undefined ? `${literal(name)}::regrole` : literal(id)};
old record;
begin
select * into old from pg_roles where oid = id;
if old is null then
raise exception 'Cannot find role with id %', id;
end if;
execute(format('drop role ${ifExists ? 'if exists' : ''} %I;', old.rolname));
end
$$;
`
return { sql }
}
export default {
list,
retrieve,
create,
update,
remove,
zod: pgRoleZod,
}
+1 -1
View File
@@ -41,7 +41,7 @@ function list({
function retrieve({ id }: { id: number }): { sql: string; zod: typeof pgSchemaOptionalZod }
function retrieve({ name }: { name: string }): { sql: string; zod: typeof pgSchemaOptionalZod }
function retrieve({ id, name }: { id?: number; name?: string }) {
function retrieve({ id, name }: { id?: number; name?: string }): { sql: string; zod: typeof pgSchemaOptionalZod } {
if (id) {
const sql = `${SCHEMAS_SQL} and n.oid = ${literal(id)};`
return {
+46
View File
@@ -0,0 +1,46 @@
export const ROLES_SQL = /* SQL */ `
-- Can't use pg_authid here since some managed Postgres providers don't expose it
-- https://github.com/supabase/postgres-meta/issues/212
select
r.oid :: int8 as id,
rolname as name,
rolsuper as "isSuperuser",
rolcreatedb as "canCreateDb",
rolcreaterole as "canCreateRole",
rolinherit as "inheritRole",
rolcanlogin as "canLogin",
rolreplication as "isReplicationRole",
rolbypassrls as "canBypassRls",
(
select
count(*)
from
pg_stat_activity
where
r.rolname = pg_stat_activity.usename
) as "activeConnections",
case when rolconnlimit = -1 then current_setting('max_connections') :: int8
else rolconnlimit
end as "connectionLimit",
rolvaliduntil as "validUntil",
coalesce(r_config.role_configs, '{}') as config
from
pg_roles r
left join (
select
oid,
jsonb_object_agg(param, value) filter (where param is not null) as role_configs
from
(
select
oid,
(string_to_array(unnest(rolconfig), '='))[1] as param,
(string_to_array(unnest(rolconfig), '='))[2] as value
from
pg_roles
) as _
group by
oid
) r_config on r_config.oid = r.oid
`
Loaded 100 of 105 files, more files were not shown because too many files have changed in this diff. Show more