1
0
mirror of https://github.com/konpa/devicon.git synced 2025-08-16 19:44:05 +02:00

Merge branch 'develop' into thomas/feature/websiteUpgrade

This commit is contained in:
David Leal
2021-12-21 23:39:14 -06:00
committed by GitHub
15 changed files with 184 additions and 26 deletions

View File

@@ -3,4 +3,4 @@ Proxy for using W3C WebDriver compatible clients to interact with Gecko-based br
This program provides the HTTP API described by the WebDriver protocol to communicate with Gecko browsers, such as Firefox.
It translates calls into the Marionette remote protocol by acting as a proxy between the local- and remote ends.
This application was taken from: https://github.com/mozilla/geckodriver/releases/tag/v0.29.1
This application was taken from: https://github.com/mozilla/geckodriver/releases/tag/v0.30.0

View File

@@ -5,17 +5,18 @@ from build_assets.selenium_runner.SeleniumRunner import SeleniumRunner
from build_assets.selenium_runner.enums import IcomoonPage, IcomoonAlerts
class PeekSeleniumRunner(SeleniumRunner):
def peek(self, svgs: List[str], screenshot_folder: str):
def peek(self, svgs: List[str], screenshot_folder: str, icon_info: dict):
"""
Upload the SVGs and peek at how Icomoon interpret its SVGs and
font versions.
:param svgs: a list of svg Paths that we'll upload to icomoon.
:param screenshot_folder: the name of the screenshot_folder.
:param icon_info: a dictionary containing info on an icon. Taken from the devicon.json.
:return an array of svgs with strokes as strings. These show which icon
contains stroke.
"""
messages = self.peek_svgs(svgs, screenshot_folder)
self.peek_icons(svgs, screenshot_folder)
self.peek_icons(screenshot_folder, icon_info)
return messages
def peek_svgs(self, svgs: List[str], screenshot_folder: str):
@@ -61,10 +62,11 @@ class PeekSeleniumRunner(SeleniumRunner):
print("Finished peeking the svgs...")
return svgs_with_strokes
def peek_icons(self, svgs: List[str], screenshot_folder: str):
def peek_icons(self, screenshot_folder: str, icon_info: dict):
"""
Peek at the icon versions of the SVGs that were uploaded.
:param screenshot_folder: the name of the screenshot_folder.
:param icon_info: a dictionary containing info on an icon. Taken from the devicon.json.
"""
print("Begin peeking at the icons...")
# ensure all icons in the set is selected.
@@ -85,7 +87,7 @@ class PeekSeleniumRunner(SeleniumRunner):
main_content = self.driver.find_element_by_xpath(main_content_xpath)
main_content.screenshot(new_icons_path);
# go downward so we get the oldest icon first
# go in reverse order so we get the oldest icon first
icon_divs_xpath = f'//div[@id="glyphSet0"]/div'
icon_divs = self.driver.find_elements_by_xpath(icon_divs_xpath)
icon_divs.reverse()
@@ -98,6 +100,23 @@ class PeekSeleniumRunner(SeleniumRunner):
Path(screenshot_folder, f"new_icon_{i}.png").resolve()
)
icon_div.screenshot(icon_screenshot)
i += 1
# test the colors
style = "#glyphSet0 span:first-of-type {color: " + icon_info["color"] + "}"
script = f"document.styleSheets[0].insertRule('{style}', 0)"
self.driver.execute_script(script)
i = 0
for icon_div in icon_divs:
if not icon_div.is_displayed():
continue
icon_screenshot = str(
Path(screenshot_folder, f"new_colored_icon_{i}.png").resolve()
)
icon_div.screenshot(icon_screenshot)
i += 1
print("Finished peeking the icons...")

View File

@@ -1,6 +1,8 @@
from pathlib import Path
from selenium.webdriver.common import service
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
@@ -69,6 +71,11 @@ class SeleniumRunner:
IcomoonPage.GENERATE_FONT: ICOMOON_URL + "/font"
}
"""
Number of retries for creating a web driver instance.
"""
MAX_RETRY = 5
"""
The different types of alerts that this workflow will encounter.
It contains part of the text in the actual alert and buttons
@@ -126,6 +133,7 @@ class SeleniumRunner:
:raises AssertionError: if the page title does not contain
"IcoMoon App".
"""
# customize the download options
options = Options()
allowed_mime_types = "application/zip, application/gzip, application/octet-stream"
# disable prompt to download from Firefox
@@ -138,15 +146,62 @@ class SeleniumRunner:
options.headless = headless
print("Activating browser client...")
self.driver = WebDriver(options=options, executable_path=geckodriver_path)
self.driver = self.create_driver_instance(options, geckodriver_path)
self.driver.get(self.ICOMOON_URL)
assert "IcoMoon App" in self.driver.title
# wait until the whole web page is loaded by testing the hamburger input
WebDriverWait(self.driver, self.LONG_WAIT_IN_SEC).until(
ec.element_to_be_clickable((By.XPATH, "(//i[@class='icon-menu'])[2]"))
)
print("Accessed icomoon.io")
def create_driver_instance(self, options: Options, geckodriver_path: str):
"""
Create a WebDriver instance. Isolate retrying code here to address
"no connection can be made" error.
:param options: the FirefoxOptions for the browser.
:param geckodriver_path: the path to the firefox executable.
the icomoon.zip to.
"""
retries = SeleniumRunner.MAX_RETRY
finished = False
driver = None
err_msgs = [] # keep for logging purposes
while not finished and retries > 0:
try:
# order matters, don't change the lines below
finished = True # signal we are done in case we are actually done
# customize the local server
service = None
# first retry: use 8080
# else: random
if retries == SeleniumRunner.MAX_RETRY:
service = Service(executable_path=geckodriver_path, port=8080)
else:
service = Service(executable_path=geckodriver_path)
driver = WebDriver(options=options, service=service)
except SeleniumTimeoutException as e:
# retry. This is intended to catch "no connection could be made" error
retries -= 1
finished = False # flip the var so we can retry
msg = f"Retry {retries}/{SeleniumRunner.MAX_RETRY} SeleniumTimeoutException: {e.msg}"
print(msg)
err_msgs.append(msg)
except Exception as e:
# anything else: unsure if retry works. Just end the retry
msg = f"Retry {retries}/{SeleniumRunner.MAX_RETRY} Exception: {e}"
err_msgs.append(msg)
print(msg)
break
if driver is not None:
return driver
err_msg_formatted = '\n'.join(reversed(err_msgs))
msg = f"Unable to create WebDriver Instance:\n{err_msg_formatted}"
raise Exception(msg)
def switch_toolbar_option(self, option: IcomoonOptionState):
"""
Switch the toolbar option to the option argument.
@@ -248,7 +303,7 @@ class SeleniumRunner:
except SeleniumTimeoutException:
pass # do nothing cause sometimes, the color tab doesn't appear in the site
if screenshot_folder != None and index != None:
if screenshot_folder is not None and index is not None:
edit_screen_selector = "div.overlay div.overlayWindow"
screenshot_path = str(
Path(screenshot_folder, f"new_svg_{index}.png").resolve()

View File

@@ -7,17 +7,17 @@ def main():
runner = None
try:
args = arg_getters.get_selenium_runner_args(peek_mode=True)
new_icons = filehandler.get_json_file_content(args.devicon_json_path)
all_icons = filehandler.get_json_file_content(args.devicon_json_path)
# get only the icon object that has the name matching the pr title
filtered_icon = util.find_object_added_in_pr(new_icons, args.pr_title)
filtered_icon = util.find_object_added_in_pr(all_icons, args.pr_title)
check_devicon_object(filtered_icon)
print("Icon being checked:", filtered_icon, sep = "\n", end='\n\n')
runner = PeekSeleniumRunner(args.download_path, args.geckodriver_path, args.headless)
svgs = filehandler.get_svgs_paths([filtered_icon], args.icons_folder_path, True)
screenshot_folder = filehandler.create_screenshot_folder("./")
svgs_with_strokes = runner.peek(svgs, screenshot_folder)
svgs_with_strokes = runner.peek(svgs, screenshot_folder, filtered_icon)
print("Task completed.")
message = ""
@@ -36,6 +36,7 @@ def main():
def check_devicon_object(icon: dict):
"""
Check that the devicon object added is up to standard.
:param icon: a dictionary containing info on an icon. Taken from the devicon.json.
:return a string containing the error messages if any.
"""
err_msgs = []

View File

@@ -1,2 +1,2 @@
selenium==3.141.0
selenium==4.1.0
requests==2.25.1

View File

@@ -30,7 +30,7 @@ jobs:
run: echo $PR_NUM > pr_num.txt
- name: Upload the PR number
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2.2.4
with:
name: pr_num
path: ./pr_num.txt
@@ -41,25 +41,25 @@ jobs:
shell: cmd
run: >
python ./.github/scripts/icomoon_peek.py
./.github/scripts/build_assets/geckodriver-v0.29.1-win64/geckodriver.exe ./icomoon.json
./.github/scripts/build_assets/geckodriver-v0.30.0-win64/geckodriver.exe ./icomoon.json
./devicon.json ./icons ./ --headless --pr_title "%PR_TITLE%"
- name: Upload the err messages (created by icomoon_peek.py)
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2.2.4
if: always()
with:
name: err_messages
path: ./err_messages.txt
- name: Upload screenshots for comments
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2.2.4
if: success()
with:
name: screenshots
path: ./screenshots/*.png
- name: Upload geckodriver.log for debugging purposes
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2.2.4
if: failure()
with:
name: geckodriver-log

View File

@@ -72,6 +72,14 @@ jobs:
path: ./screenshots/new_icon_*.png
client_id: ${{secrets.IMGUR_CLIENT_ID}}
- name: Upload zoomed in screenshot of the colored icons gotten from the artifacts
id: colored_icons_detailed_img_step
uses: devicons/public-upload-to-imgur@v2.2.2
if: env.PEEK_STATUS == 'success' && success()
with:
path: ./screenshots/new_colored_icon_*.png
client_id: ${{secrets.IMGUR_CLIENT_ID}}
- name: Comment on the PR about the result - Success
uses: jungwinter/comment@v1 # let us comment on a specific PR
if: env.PEEK_STATUS == 'success' && success()
@@ -80,20 +88,22 @@ jobs:
Hi there,
I'm Devicons' Peek Bot and I just peeked at the icons that you wanted to add using [icomoon.io](https://icomoon.io/app/#/select).
{0}
Here are the SVGs as intepreted by Icomoon when we upload the files:
{0}
Here are the zoomed-in screenshots of the added icons as **SVGs**:
{1}
Here are the zoomed-in screenshots of the added icons as **SVGs**. This is how Icomoon intepret the uploaded SVGs:
Here are the icons that will be generated by Icomoon:
{2}
Here are the icons that will be generated by Icomoon:
Here are the zoomed-in screenshots of the added icons as **icons**:
{3}
Here are the zoomed-in screenshots of the added icons as **icons**. This is what the font will look like:
Here are the colored versions:
{4}
You can click on the pictures and zoom on them if needed.
{5}
The maintainers will now check for:
1. The number of Glyphs matches the number of SVGs that were selected.
@@ -104,7 +114,7 @@ jobs:
Thank you for contributing to Devicon! I hope that your icons are accepted into the repository.
Note: If the images don't show up, it's probably because it has been autodeleted by Imgur after 6 months due to our API choice.
Note: If the images don't show up, it has been autodeleted by Imgur after 6 months due to our API choice.
Cheers,
Peek Bot :blush:
@@ -116,11 +126,12 @@ jobs:
${{
format(
env.MESSAGE,
steps.err_message_reader.outputs.content,
fromJSON(steps.svgs_overview_img_step.outputs.markdown_urls)[0],
join(fromJSON(steps.svgs_detailed_img_step.outputs.markdown_urls), ' '),
fromJSON(steps.icons_overview_img_step.outputs.markdown_urls)[0],
join(fromJSON(steps.icons_detailed_img_step.outputs.markdown_urls), ' ')
join(fromJSON(steps.icons_detailed_img_step.outputs.markdown_urls), ' '),
join(fromJSON(steps.colored_icons_detailed_img_step.outputs.markdown_urls), ' '),
steps.err_message_reader.outputs.content
)
}}

View File

@@ -20,6 +20,7 @@ First of all, thanks for taking the time to contribute! This project can only gr
<li><a href="#bugs">Common Bugs and Solutions</a></li>
<li><a href="#discordServer">Discord server</a></li>
<li><a href="#release">Release strategy, conventions, preparation and execution</a></li>
<li><a href="#resources">Recommended resources and tools</a></li>
</ul>
<hr>
@@ -490,3 +491,13 @@ We are running a Discord server. You can go here to talk, discuss, and more with
<li>Create a <a href="https://github.com/devicons/devicon/releases/new">new release</a> using the format "<b>Release v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i></b>" as tag and release title. Use the earlier created description as description of the release.</li>
<li>Publishing the release will trigger the <a href="/.github/workflows/npm_publish.yml">npm_publish.yml</a> workflow which will execute a <code>npm publish</code> leading to a updated <a href="https://www.npmjs.com/package/devicon">npm package</a> (v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i>).</li>
</ol>
<h2 id='resources'>Recommended resources and tools</h2>
| Tool Name | Link | Description & Usage |
| :----------------- | :------------------------------------------------- | :------------------------------------------------- |
| Inkscape | https://inkscape.org/ | Desktop application for editing and Making SVG's |
| Visual Studio Code | https://code.visualstudio.com/ | A code editor for editing code |
| vscode.dev | https://vscode.dev/ | Visual Studio Code in the browser |
| Iloveimg | https://www.iloveimg.com/resize-image/resize-svg | Resizing SVG's |
| svgviewer.dev | https://www.svgviewer.dev/ | View, save, and optimize SVGs |

View File

@@ -3979,6 +3979,28 @@
}
]
},
{
"name": "sqlite",
"tags": [
"sql",
"database",
"db"
],
"versions": {
"svg": [
"original",
"original-wordmark",
"plain",
"plain-wordmark"
],
"font": [
"plain",
"plain-wordmark"
]
},
"color": "#0f80cc",
"aliases": []
},
{
"name": "subversion",
"tags": [

View File

@@ -0,0 +1,15 @@
<svg version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="a" x1="-15.615" x2="-6.741" y1="-9.1083" y2="-9.1083" gradientTransform="matrix(-1.7776e-7 4.0868 -4.0632 -1.7878e-7 -14.448 103.81)" gradientUnits="userSpaceOnUse">
<stop stop-color="#95d7f4" offset="0"/>
<stop stop-color="#0f7fcc" offset=".92024"/>
<stop stop-color="#0f7fcc" offset="1"/>
</linearGradient>
</defs>
<g>
<path d="m48.648 63.613c-1.7031 0-3.0898 0.51172-4.1562 1.5273-1.0625 1.0156-1.5977 2.3477-1.5977 3.9805 0 0.84375 0.12891 1.6172 0.39453 2.3242 0.26563 0.70703 0.67578 1.3633 1.2305 1.957 0.55078 0.59375 1.6562 1.3945 3.3008 2.4219 2.0234 1.2422 3.3438 2.25 3.9805 3.0352s0.95312 1.6094 0.95312 2.4688c0 1.1484-0.375 2.0703-1.1523 2.7578-0.77344 0.6875-1.8086 1.0352-3.0977 1.0352-1.3516 0-2.5312-0.48438-3.543-1.4375-1.0156-0.95312-1.5273-2.2148-1.5391-3.8008h-0.62891v5.75h0.62891c0.19141-0.54687 0.46094-0.82422 0.80859-0.82422 0.16797 0 0.55859 0.11328 1.1719 0.33203 1.4883 0.53125 2.707 0.79297 3.668 0.79297 1.6523 0 3.0703-0.58594 4.2422-1.7695 1.1758-1.1836 1.7695-2.6133 1.7695-4.2812 0-1.293-0.39062-2.4453-1.1562-3.4453-0.77344-1.0039-2.2656-2.1758-4.5-3.5156-1.9219-1.1641-3.1719-2.1055-3.75-2.8438s-0.875-1.5508-0.875-2.4453c0-0.97266 0.35547-1.7461 1.0547-2.3281 0.69531-0.57813 1.6055-0.86719 2.7539-0.86719 1.2812 0 2.3555 0.38672 3.2031 1.1562 0.84766 0.77734 1.3359 1.8477 1.4805 3.2266h0.63281v-4.9844h-0.58594c-0.074219 0.25781-0.14062 0.41797-0.19922 0.49219-0.0625 0.074219-0.17188 0.10938-0.34766 0.10938-0.19922 0-0.5625-0.085938-1.0781-0.25391-1.1055-0.375-2.125-0.57031-3.0664-0.57031zm20.598 0c-2.0781 0-3.9648 0.49609-5.6719 1.4805-1.707 0.98828-3.0586 2.3516-4.0586 4.0938-0.99219 1.7383-1.4922 3.5898-1.4922 5.5586 0 2.6445 0.86328 5.0039 2.5977 7.0703 1.7422 2.0664 3.8203 3.3555 6.2344 3.8477 0.55469 0.28906 1.3477 1.0352 2.3828 2.25 1.1602 1.3594 2.1484 2.3438 2.9609 2.9297 0.80469 0.58984 1.6836 1.0195 2.6094 1.3047 0.92188 0.28125 1.9219 0.41797 3.0039 0.41797 1.3086 0 2.4844-0.22656 3.5156-0.69922l-0.23047-0.57813c-0.60156 0.21875-1.2422 0.32422-1.9141 0.32422-0.91016 0-1.8359-0.30469-2.7617-0.91406s-2.0859-1.7734-3.4609-3.4883c-0.64844-0.82422-1.0977-1.3438-1.3477-1.5469 2.6406-0.51953 4.8164-1.8047 6.5117-3.8672s2.5391-4.4141 2.5391-7.0508c0-3.1328-1.1055-5.7617-3.3047-7.9062-2.1992-2.1445-4.9062-3.2266-8.1133-3.2266zm12.855 0 0.035157 0.68359c1.3828 0 2.1562 0.40625 2.3281 1.2305 0.066406 0.29688 0.097656 0.84375 0.10547 1.625l-0.011718 15c-0.015625 1.1211-0.17188 1.8359-0.47656 2.1445-0.30469 0.30859-0.82422 0.50391-1.5703 0.57812l-0.03125 0.67969h13.793l0.35547-3.4023h-0.63281c-0.17578 0.92578-0.58984 1.5898-1.25 1.9648-0.65625 0.37891-1.8203 0.57031-3.5 0.57031h-1.3086c-1.5117 0-2.3867-0.55078-2.6172-1.6562-0.046874-0.21875-0.0625-0.45312-0.066406-0.71484l0.054688-15.164c0-1.1172 0.14062-1.8672 0.43359-2.2344 0.28906-0.36719 0.82422-0.57031 1.5898-0.62109l-0.03125-0.68359zm-12.633 0.82422c2.3398 0 4.2578 0.92969 5.7344 2.8008 1.4805 1.8789 2.2109 4.4453 2.2109 7.6953 0 3.082-0.74219 5.5508-2.2305 7.4062-1.4883 1.8555-3.4727 2.7812-5.9375 2.7812-2.3672 0-4.2852-0.95312-5.7578-2.8711-1.4727-1.9141-2.2031-4.3984-2.2031-7.4609 0-3.1406 0.73828-5.6562 2.2227-7.5391 1.4844-1.875 3.4727-2.8125 5.9609-2.8125zm31.723 3.2266c-0.33203 0-0.59375 0.11719-0.78125 0.34375-0.19922 0.23047-0.25781 0.50781-0.19141 0.84375 0.066406 0.33203 0.25391 0.61328 0.54688 0.85938 0.28516 0.23828 0.60156 0.36719 0.9375 0.36719 0.32422 0 0.57422-0.12891 0.75-0.36719 0.17969-0.24609 0.23438-0.52734 0.16797-0.85938-0.070313-0.33594-0.25-0.61328-0.51953-0.84375-0.27734-0.22656-0.58203-0.34375-0.91016-0.34375zm9.0977 2.3008c-0.56641 2.2109-1.8086 3.4102-3.7109 3.6016l0.019531 0.63281h2.2227l-0.042968 7.4961c0.003906 1.2812 0.039062 2.1328 0.13281 2.5664 0.21875 1.0391 0.89453 1.5703 2.0234 1.5703 1.6328 0 3.3477-1 5.1367-3.0039l-0.53906-0.46484c-1.293 1.3164-2.4375 1.9766-3.4375 1.9766-0.61719 0-0.99609-0.35156-1.1406-1.0547-0.035156-0.16797-0.050781-0.37109-0.050781-0.60156l0.019531-8.4844h3.3945l-0.035156-1.0078h-3.3477v-3.2266zm13.125 2.8242c-1.8984 0-3.4414 0.92969-4.6445 2.7695-1.1914 1.8438-1.5625 3.8867-1.0938 6.1367 0.27734 1.3164 0.82812 2.3359 1.6719 3.0586 0.83984 0.71875 1.9102 1.0742 3.1836 1.0742 1.1875 0 2.8398-0.30078 3.5391-0.91016 0.69531-0.60547 1.3398-1.5938 1.9336-2.9453l-0.47656-0.5c-0.94922 1.75-2.8594 2.6328-4.3008 2.6328-1.9844 0-3.1953-1.0938-3.6484-3.2656-0.058594-0.28125-0.10547-0.57812-0.13281-0.89062 2.3594-0.375 4.1445-1.0391 5.3477-2 1.2109-0.96094 2.418-1.9844 2.1914-3.0586-0.13281-0.64062-0.46484-1.1445-0.97266-1.5234-0.51562-0.37891-1.8516-0.57813-2.5977-0.57813zm-20.75 0.078126-4.0898 0.94531v0.73438l1.4141-0.17578c0.6875 0 1.0898 0.30859 1.2188 0.92969 0.039063 0.21094 0.070313 0.5 0.078125 0.86719l-0.046875 6.7305c-0.011719 0.92578-0.11328 1.4688-0.32031 1.6328-0.20703 0.16016-0.75391 0.24219-1.6445 0.24219l-0.027344 0.63672h6.4922l-0.011719-0.63672c-0.89844 0-1.4844-0.070313-1.7461-0.21094-0.25391-0.14062-0.43359-0.39062-0.51172-0.77734-0.054688-0.27734-0.082031-0.75781-0.085938-1.4219l0.019532-9.4961zm19.711 1.2461c0.39453 0 0.77734 0.15234 1.1602 0.45312 0.38281 0.30078 0.61328 0.64062 0.6875 1.0039 0.37109 1.7852-1.207 3.0234-4.7578 3.7109-0.097656-1.3047 0.125-2.4883 0.69922-3.5547 0.57031-1.0703 1.3125-1.6133 2.2109-1.6133z" fill="#003956"/>
<path d="m39.492 37.938h-35.203c-2.3594 0-4.2891 1.9414-4.2891 4.3125v39.043c0 2.3711 1.9297 4.3125 4.2891 4.3125h23.184c-0.26172-11.602 3.6758-34.117 12.02-47.672z" fill="#0b7fcc"/>
<path d="m38.207 39.195h-33.918c-1.6758 0-3.0391 1.3672-3.0391 3.0547v36.195c7.6836-2.9648 19.211-5.5273 27.184-5.4062 1.6055-8.4297 6.3125-24.941 9.7734-33.848z" fill="url(#a)"/>
<path d="m47.699 36.656c-2.4102-2.1602-5.332-1.293-8.207 1.2773-0.42969 0.38281-0.85938 0.80469-1.2852 1.2578-4.9258 5.2617-9.5 15-10.918 22.441 0.55078 1.125 0.98438 2.5664 1.2695 3.668 0.070312 0.28125 0.13672 0.55078 0.1875 0.77344 0.12891 0.53516 0.19531 0.88281 0.19531 0.88281s-0.046875-0.17188-0.22656-0.69922c-0.035156-0.10156-0.074219-0.21484-0.12109-0.34766-0.015625-0.050781-0.042969-0.11328-0.074219-0.18359-0.32031-0.75391-1.2109-2.3398-1.6016-3.0312-0.33594 0.99219-0.62891 1.9219-0.875 2.7617 1.125 2.0781 1.8125 5.6445 1.8125 5.6445s-0.054688-0.23437-0.33984-1.0352c-0.25391-0.71484-1.5078-2.9258-1.8086-3.4453-0.50781 1.8906-0.70703 3.1641-0.52734 3.4766 0.35547 0.60156 0.69531 1.6367 0.99219 2.7891 0.66797 2.5859 1.1289 5.7305 1.1289 5.7305s0.015625 0.21094 0.039063 0.53125c-0.089844 2.1719-0.035156 4.4219 0.13281 6.4609 0.21875 2.6914 0.64062 5.0039 1.168 6.2461l0.36328-0.19922c-0.78125-2.4414-1.0977-5.6406-0.96094-9.3281 0.21094-5.6367 1.5-12.438 3.8828-19.52 4.0312-10.699 9.6133-19.281 14.727-23.379-4.6602 4.2344-10.965 17.934-12.855 23.012-2.1133 5.6758-3.6094 11.008-4.5156 16.121 1.5625-4.7891 6.5977-6.8477 6.5977-6.8477s2.4688-3.0625 5.3555-7.4453c-1.7266 0.39844-4.5703 1.0781-5.5195 1.4766-1.4062 0.59375-1.7812 0.79688-1.7812 0.79688s4.5469-2.7812 8.4414-4.0469c5.3633-8.4922 11.207-20.559 5.3242-25.84" fill="#003956"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -0,0 +1,14 @@
<svg version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="a" x1="-15.615" x2="-6.741" y1="-9.1083" y2="-9.1083" gradientTransform="matrix(-4.0559e-7 9.2712 -9.2712 -4.0559e-7 -25.853 155.12)" gradientUnits="userSpaceOnUse">
<stop stop-color="#95d7f4" offset="0"/>
<stop stop-color="#0f7fcc" offset=".92024"/>
<stop stop-color="#0f7fcc" offset="1"/>
</linearGradient>
</defs>
<g>
<path d="m69.5 99.176c-0.058594-0.73047-0.09375-1.1992-0.09375-1.1992s-2.207-14.891-4.8359-19.336c-0.41406-0.70703 0.042969-3.5938 1.207-7.8789 0.67969 1.168 3.5391 6.1914 4.1172 7.8086 0.64844 1.8242 0.78125 2.3477 0.78125 2.3477s-1.5703-8.082-4.1445-12.797c0.5625-1.9062 1.2383-4.0156 2.0039-6.2656 0.97266 1.7109 3.3125 5.8594 3.8281 7.3008 0.10156 0.29297 0.19141 0.54297 0.26953 0.77344 0.023438-0.13672 0.050782-0.27344 0.074219-0.41406-0.58984-2.5039-1.75-6.8594-3.3359-10.082 3.5195-18.328 15.531-42.824 27.84-53.754h-80.312c-5.3867 0-9.7891 4.4062-9.7891 9.7891v88.57c0 5.3828 4.4062 9.7891 9.7891 9.7891h52.898c-0.38281-4.6172-0.51172-9.7266-0.29688-14.652" fill="#0b7fcc"/>
<path d="m65.777 70.762c0.67969 1.168 3.5391 6.1875 4.1172 7.8086 0.64844 1.8242 0.78125 2.3477 0.78125 2.3477s-1.5703-8.082-4.1445-12.797c0.5625-1.9062 1.2383-4.0156 2.0039-6.2695 0.88672 1.5664 2.9219 5.168 3.6523 6.8711 0.027344-0.32031 0.054688-0.64062 0.082031-0.96094-0.64844-2.4961-1.6328-5.7656-2.8984-8.3281 3.2422-16.871 13.68-38.969 24.926-50.898h-77.398c-3.8242 0-6.9336 3.1094-6.9336 6.9336v82.109c17.527-6.7305 38.664-12.879 56.855-12.613-0.67187-2.6055-1.4414-4.9609-2.25-6.3242-0.41406-0.70703 0.042969-3.5977 1.207-7.8789" fill="url(#a)"/>
<path d="m115.95 2.7812c-5.5-4.9062-12.164-2.9336-18.734 2.8984-0.97656 0.86719-1.9492 1.8281-2.9141 2.8594-11.25 11.926-21.684 34.023-24.926 50.895 1.2617 2.5625 2.25 5.832 2.8945 8.3281 0.16797 0.64062 0.32031 1.2422 0.44141 1.7539 0.28516 1.207 0.4375 1.9961 0.4375 1.9961s-0.10156-0.38281-0.51563-1.582c-0.078124-0.23047-0.16797-0.48438-0.26953-0.77344-0.042969-0.125-0.10547-0.27344-0.17188-0.43359-0.73438-1.7031-2.7656-5.3047-3.6562-6.8672-0.76172 2.25-1.4375 4.3594-2.0039 6.2656 2.5781 4.7148 4.1484 12.797 4.1484 12.797s-0.13672-0.52344-0.78125-2.3477c-0.57813-1.6211-3.4414-6.6406-4.1172-7.8086-1.1641 4.2812-1.625 7.1719-1.207 7.8789 0.80859 1.3633 1.5742 3.7227 2.25 6.3242 1.5234 5.8672 2.5859 13.012 2.5859 13.012s0.03125 0.46875 0.09375 1.1992c-0.21484 4.9258-0.085937 10.035 0.29688 14.652 0.50391 6.1094 1.4531 11.363 2.6641 14.172l0.82812-0.44922c-1.7812-5.5352-2.5039-12.793-2.1875-21.156 0.48047-12.793 3.4219-28.215 8.8555-44.289 9.1914-24.27 21.938-43.738 33.602-53.035-10.633 9.6016-25.023 40.684-29.332 52.195-4.8203 12.891-8.2383 24.984-10.301 36.574 3.5508-10.863 15.047-15.531 15.047-15.531s5.6367-6.957 12.227-16.887c-3.9492 0.90234-10.43 2.4414-12.598 3.3516-3.1992 1.3438-4.0664 1.8008-4.0664 1.8008s10.371-6.3125 19.27-9.1719c12.234-19.27 25.562-46.648 12.141-58.621" fill="#003956"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,7 @@
<svg version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
<g>
<path d="m48.648 63.617c-1.7031 0-3.0938 0.50781-4.1562 1.5234s-1.6016 2.3477-1.6016 3.9805c0 0.84375 0.13281 1.6172 0.39844 2.3242 0.26172 0.70703 0.67578 1.3594 1.2266 1.9531 0.55469 0.59375 1.6602 1.3984 3.3047 2.4258 2.0195 1.2422 3.3438 2.25 3.9805 3.0352s0.95312 1.6094 0.95312 2.4688c0 1.1484-0.375 2.0703-1.1523 2.7578-0.77344 0.6875-1.8086 1.0352-3.0977 1.0352-1.3516 0-2.5312-0.48047-3.5469-1.4336-1.0117-0.95703-1.5234-2.2188-1.5391-3.8047h-0.625v5.75h0.625c0.19531-0.54297 0.46484-0.82422 0.80859-0.82422 0.17188 0 0.5625 0.11328 1.1758 0.33203 1.4883 0.53516 2.707 0.79297 3.668 0.79297 1.6523 0 3.0664-0.58594 4.2422-1.7695 1.1758-1.1836 1.7695-2.6133 1.7695-4.2812 0-1.293-0.39062-2.4453-1.1562-3.4453-0.77344-1.0039-2.2656-2.1758-4.5-3.5156-1.9219-1.1641-3.1719-2.1055-3.75-2.8438s-0.875-1.5508-0.875-2.4453c0-0.96875 0.35547-1.7461 1.0508-2.3281 0.69922-0.57813 1.6094-0.86719 2.7578-0.86719 1.2812 0 2.3555 0.38672 3.2031 1.1562 0.84766 0.77734 1.3359 1.8477 1.4805 3.2266h0.63281v-4.9844h-0.58594c-0.074219 0.25781-0.14062 0.41797-0.19922 0.49219-0.0625 0.074219-0.17188 0.10938-0.34766 0.10938-0.20312 0-0.5625-0.085938-1.0781-0.25391-1.1055-0.375-2.125-0.57031-3.0664-0.57031zm20.594 0c-2.0781 0-3.9609 0.49219-5.668 1.4805-1.707 0.98438-3.0586 2.3477-4.0586 4.0898-0.99219 1.7383-1.4922 3.5898-1.4922 5.5586 0 2.6445 0.86328 5.0039 2.5977 7.0703 1.7422 2.0664 3.8203 3.3555 6.2344 3.8477 0.55469 0.28906 1.3438 1.0352 2.3789 2.25 1.1641 1.3594 2.1484 2.3438 2.9609 2.9297 0.80859 0.58984 1.6875 1.0195 2.6133 1.3047 0.92188 0.28125 1.9219 0.42187 3.0039 0.42187 1.3086 0 2.4844-0.23047 3.5156-0.70312l-0.23047-0.57813c-0.60156 0.21875-1.2422 0.32422-1.9141 0.32422-0.91016 0-1.8359-0.30078-2.7617-0.91406-0.92578-0.60938-2.082-1.7734-3.4609-3.4883-0.64844-0.82422-1.0977-1.3438-1.3477-1.5469 2.6406-0.51953 4.8164-1.8047 6.5117-3.8672 1.6914-2.0625 2.5391-4.4141 2.5391-7.0508 0-3.1328-1.1055-5.7617-3.3047-7.9062-2.1992-2.1445-4.9062-3.2227-8.1172-3.2227zm12.859 0 0.035157 0.67969c1.3789 0 2.1562 0.40625 2.3281 1.2305 0.066406 0.29688 0.097656 0.84375 0.10547 1.625l-0.015624 15c-0.011719 1.1211-0.16797 1.8359-0.47266 2.1445-0.30469 0.30859-0.82422 0.50391-1.5703 0.57812l-0.035157 0.67969h13.797l0.35547-3.4023h-0.63281c-0.17969 0.92578-0.58984 1.5898-1.25 1.9648-0.65625 0.37891-1.8242 0.57031-3.5 0.57031h-1.3086c-1.5117 0-2.3867-0.55469-2.6172-1.6562-0.046874-0.21875-0.0625-0.45312-0.066406-0.71484l0.050782-15.164c0-1.1172 0.14062-1.8672 0.43359-2.2344 0.29297-0.36719 0.82422-0.56641 1.5938-0.62109l-0.035156-0.67969zm-12.633 0.82031c2.3398 0 4.2578 0.92969 5.7344 2.8008 1.4805 1.8789 2.2109 4.4453 2.2109 7.6953 0 3.082-0.74219 5.5508-2.2305 7.4062-1.4883 1.8594-3.4727 2.7812-5.9414 2.7812-2.3672 0-4.2852-0.95312-5.7539-2.8711-1.4727-1.9141-2.2031-4.3984-2.2031-7.4609 0-3.1406 0.73828-5.6562 2.2227-7.5391 1.4844-1.875 3.4727-2.8125 5.9609-2.8125zm31.723 3.2266c-0.33594 0-0.59375 0.11719-0.78516 0.34375-0.19531 0.23047-0.25391 0.50391-0.1875 0.84375 0.066406 0.32813 0.25 0.61328 0.54297 0.85938 0.28906 0.23828 0.60547 0.36719 0.94141 0.36719 0.32031 0 0.57422-0.12891 0.75-0.36719 0.17578-0.24609 0.23047-0.53125 0.16406-0.85938-0.070313-0.33984-0.24609-0.61328-0.51953-0.84375-0.27344-0.22656-0.58203-0.34375-0.90625-0.34375zm9.0977 2.3008c-0.57031 2.2109-1.8125 3.4102-3.7109 3.6016l0.019531 0.63281h2.2227l-0.042968 7.4922c0.003906 1.2852 0.039062 2.1367 0.12891 2.5703 0.21875 1.0391 0.89844 1.5664 2.0273 1.5664 1.6328 0 3.3477-0.99609 5.1367-3l-0.53906-0.46875c-1.2969 1.3203-2.4375 1.9844-3.4414 1.9844-0.61328 0-0.99219-0.35547-1.1367-1.0586-0.039063-0.16797-0.054687-0.37109-0.054687-0.60156l0.023437-8.4844h3.3906l-0.03125-1.0078h-3.3477v-3.2266zm13.121 2.8242c-1.8984 0-3.4375 0.92969-4.6445 2.7695-1.1914 1.8438-1.5625 3.8867-1.0898 6.1328 0.27344 1.3203 0.82812 2.3398 1.668 3.0625 0.84375 0.71875 1.9102 1.0742 3.1836 1.0742 1.1875 0 2.8438-0.30078 3.5391-0.91016 0.69531-0.60547 1.3398-1.5938 1.9336-2.9453l-0.47266-0.5c-0.94922 1.75-2.8633 2.6328-4.3008 2.6328-1.9844 0-3.1953-1.0898-3.6523-3.2656-0.054688-0.28125-0.10156-0.57812-0.12891-0.89062 2.3594-0.375 4.1445-1.0391 5.3477-2 1.207-0.96094 2.418-1.9844 2.1914-3.0586-0.13281-0.64062-0.46875-1.1445-0.97656-1.5234-0.51562-0.37891-1.8516-0.57813-2.5977-0.57813zm-20.746 0.078126-4.0898 0.94531v0.73438l1.4141-0.17578c0.68359 0 1.0859 0.30859 1.2148 0.92969 0.042969 0.21094 0.070313 0.5 0.078125 0.86719l-0.042969 6.7305c-0.015625 0.92578-0.11719 1.4688-0.32422 1.6328-0.20312 0.16016-0.75391 0.24219-1.6445 0.24219l-0.023437 0.63672h6.4883l-0.011719-0.63672c-0.89844 0-1.4844-0.070313-1.7422-0.21094-0.25781-0.13672-0.43359-0.39062-0.51172-0.77734-0.058594-0.27734-0.082031-0.75781-0.085938-1.4219l0.019532-9.4961zm19.707 1.2461c0.39453 0 0.78125 0.15234 1.1641 0.45312 0.37891 0.30469 0.60938 0.64062 0.68359 1.0039 0.37109 1.7852-1.2031 3.0234-4.7539 3.7109-0.097656-1.3047 0.125-2.4883 0.69531-3.5547 0.57031-1.0703 1.3125-1.6133 2.2109-1.6133z"/>
<path d="m11.512 76.5c-0.003907 0.046875-0.003907 0.0625-0.007813 0.089844 0.003906 0.10938 0.007813 0.22266 0.007813 0.33203 0.003906-0.074219 0.003906-0.10938 0.003906-0.19141 0-0.050781-0.003906-0.19531-0.003906-0.23047z"/>
<path d="m47.711 36.66c-2.4141-2.1641-5.3281-1.2969-8.2148 1.2773-0.44141 0.40234-0.86719 0.82031-1.2773 1.2617-4.9297 5.2617-9.5039 15.008-10.926 22.449 0.55078 1.1328 0.98438 2.5742 1.2695 3.6758 0.14453 0.54297 0.27344 1.0977 0.38672 1.6523 0 0-0.046875-0.16797-0.22656-0.69922l-0.11719-0.33984c-0.023438-0.066406-0.050781-0.12891-0.078125-0.1875-0.32031-0.75391-1.2109-2.3438-1.6016-3.0352-0.33594 0.99609-0.63281 1.9258-0.87891 2.7656 1.1289 2.082 1.8164 5.6484 1.8164 5.6484s-0.058593-0.23438-0.34375-1.0391c-0.25-0.71484-1.5039-2.9297-1.8047-3.4453-0.50781 1.8906-0.70703 3.168-0.52734 3.4766 0.35547 0.60156 0.69141 1.6406 0.98438 2.7891 0.67188 2.5898 1.1367 5.7422 1.1367 5.7422l0.039062 0.52344c-0.089844 2.1562-0.042968 4.3164 0.13281 6.4648 0.21875 2.6992 0.63672 5.0117 1.168 6.2539l0.35937-0.19922c-0.77734-2.4414-1.0977-5.6445-0.95703-9.332 0.21094-5.6406 1.5-12.445 3.8828-19.535 4.0312-10.703 9.6172-19.293 14.73-23.395-4.6602 4.2344-10.969 17.949-12.859 23.023-2.1133 5.6875-3.6133 11.02-4.5156 16.133 1.5586-4.793 6.5977-6.8516 6.5977-6.8516s2.4688-3.0664 5.3555-7.4453c-1.7266 0.39453-4.5703 1.0742-5.5195 1.4766-1.4023 0.59375-1.7812 0.79297-1.7812 0.79297s4.5469-2.7852 8.4453-4.0469c5.3633-8.5 11.207-20.574 5.3242-25.855m-43.422 1.2773c-2.3672 0.007812-4.2812 1.9375-4.2891 4.3164v39.074c0.0078125 2.3789 1.9258 4.3047 4.2891 4.3125h22.02c-0.16406-2.1211-0.20703-4.2461-0.12109-6.3672-0.015625-0.14844-0.027344-0.33203-0.039062-0.47266-0.28516-1.8789-0.65625-3.7461-1.1055-5.5938-0.28516-1.1055-0.64453-2.1133-0.86328-2.4844-0.26953-0.46484-0.23047-0.73047-0.22656-1.0195 0-0.28125 0.035156-0.57422 0.085937-0.90625 0.14063-0.82812 0.32031-1.6484 0.54688-2.4609l0.50781-0.0625c-0.039062-0.082032-0.03125-0.15625-0.074219-0.23047l-0.09375-0.89453c0.28125-0.94141 0.57812-1.8789 0.89453-2.8086l0.46484-0.046875c-0.015625-0.035157-0.023437-0.089844-0.042968-0.125l-0.097657-0.74219c1.4727-7.7148 6.0469-17.512 11.219-23.031 0.15625-0.16406 0.3125-0.30078 0.46484-0.45703z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -0,0 +1,3 @@
<svg version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
<path d="m115.95 2.7812c-5.5039-4.9062-12.16-2.9336-18.738 2.9023-1.0117 0.91016-1.9844 1.8594-2.918 2.8555-11.246 11.93-21.684 34.02-24.926 50.895 1.2617 2.5625 2.25 5.832 2.9023 8.3281 0.32422 1.2383 0.61719 2.4883 0.875 3.7461 0 0-0.10156-0.37891-0.51563-1.5781l-0.26562-0.77734c-0.054688-0.14453-0.11328-0.28516-0.17578-0.42578-0.73438-1.707-2.7617-5.3086-3.6562-6.875-0.76562 2.2539-1.4414 4.3633-2.0078 6.2695 2.582 4.7148 4.1484 12.801 4.1484 12.801s-0.13281-0.52734-0.78125-2.3555c-0.57031-1.6172-3.4375-6.6367-4.1172-7.8086-1.1602 4.2891-1.6211 7.1797-1.207 7.8828 0.8125 1.3633 1.5781 3.7227 2.25 6.3242 1.5273 5.8672 2.5859 13.016 2.5859 13.016l0.09375 1.1914c-0.20312 4.8867-0.10156 9.7812 0.29688 14.656 0.50781 6.1133 1.457 11.359 2.668 14.172l0.82422-0.44922c-1.7812-5.5352-2.5039-12.793-2.1836-21.156 0.47656-12.789 3.4219-28.215 8.8555-44.289 9.1914-24.262 21.938-43.734 33.602-53.035-10.629 9.6016-25.023 40.695-29.332 52.203-4.8242 12.887-8.2383 24.977-10.297 36.566 3.5547-10.863 15.043-15.527 15.043-15.527s5.6367-6.9531 12.223-16.883c-3.9453 0.89844-10.426 2.4414-12.598 3.3516-3.1992 1.3398-4.0625 1.7969-4.0625 1.7969s10.371-6.3125 19.27-9.1719c12.234-19.27 25.566-46.645 12.145-58.625m-99.055 2.8984c-5.3984 0.019531-9.7695 4.3906-9.7852 9.7891v88.574c0.015625 5.3984 4.3906 9.7656 9.7852 9.7852h50.227c-0.375-4.8047-0.46875-9.625-0.27734-14.438-0.03125-0.33203-0.058594-0.75391-0.085937-1.0664-0.64844-4.2617-1.4922-8.4961-2.5234-12.684-0.64453-2.5078-1.4648-4.7891-1.9648-5.6367-0.62109-1.0508-0.52344-1.6523-0.51953-2.3047 0-0.64062 0.082032-1.3047 0.19922-2.0586 0.31641-1.8789 0.73047-3.7383 1.2461-5.5742l1.1562-0.14844c-0.089844-0.1875-0.074219-0.34766-0.16406-0.51562l-0.21875-2.0312c0.64062-2.1367 1.3164-4.2617 2.0391-6.3711l1.0664-0.10156c-0.042969-0.082032-0.054687-0.20313-0.097656-0.28125l-0.23047-1.6836c3.3633-17.496 13.801-39.699 25.602-52.219 0.35156-0.37109 0.71094-0.68359 1.0547-1.0352z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB