[weather] fix #161 + redesign with breaking change

This commit is contained in:
streetturtle 2020-07-12 17:36:28 -04:00
parent 4136f1b7ec
commit bcbde507eb
42 changed files with 1731 additions and 212 deletions

View file

@ -1,8 +1,13 @@
# Weather widget
![Weather Widget](./weather-widget.png)
<p align="center">
<img src="https://github.com/streetturtle/awesome-wm-widgets/raw/master/weather-widget/screenshots/weather-widget.png" alt="screenshot" style="max-width:100%;">
</p>
Note that widget uses the Arc icon theme, so it should be [installed](https://github.com/horst3180/arc-icon-theme#installation) first under **/usr/share/icons/Arc/** folder.
Widget consists of three sections:
- current weather, including humidity, wind speed, UV index
- hourly forecast for the next 24 hours
- daily forecast for the next five days
## Customization
@ -10,34 +15,63 @@ It is possible to customize widget by providing a table with all or some of the
| Name | Default | Description |
|---|---|---|
| `font` | `Play 9` | Font |
| `city` | `Montreal,ca` | City name and country code, [more info](https://openweathermap.org/current) |
| `api_key` | none| API key, required |
| `units` | `metric` | `metric` for celsius, `imperial` for fahrenheit |
| `both_units_widget` | `false` | show temperature in both units (15°C (59°F)) or in one (15°C) |
| `both_units_popup` | `false` | same as above but for popup |
| `notification_position` | `top_right` | The notification position |
| coordinates | Required | Table with two elements: latitude and longitude, e.g. `{46.204400, 6.143200}` |
| api_key | Required | Get it [here](https://openweathermap.org/appid) |
| font_name | `beautiful.font:gsub("%s%d+$", "")` | **Name** of the font to use e.g. 'Play' |
| both_units_widget | false | Show temperature in both units - '28°C (83°F) |
| units | metric | `metric` for celsius, `imperial` for fahrenheit |
| show_hourly_forecast | false | Show hourly forecase section |
| time_format_12h |false | 12 or 24 hour format (13:00 - default or 1pm) |
| show_daily_forecast | false | Show daily forecast section |
| icon_pack_name | weather-underground-icons | Name of the icon pack, could be `weather-underground-icon` or `VitalyGorbachev` or create your own, more details below |
| icons_extension | `.svg` | File extension of icons in the pack |
### Example:
### Icons:
Widget comes with two predefined icon packs:
- weather-underground-icons taken from [here](https://github.com/manifestinteractive/weather-underground-icons)
- VitalyGorbachev taken from [here](https://www.flaticon.com/authors/vitaly-gorbachev)
To add your custom icons, create a folder with the pack name under `/icons` and use the folder name in widget's config. There should be 18 icons, preferably 128x128 minimum. Icons should also respect the naming convention, please check widget's source.
### Examples:
#### Custom font, icons
![example1](./screenshots/example1.png)
```lua
weather_widget({
api_key = 'your-api-key',
weather_curl_widget({
api_key='<your-key>',
coordinates = {45.5017, -73.5673},
time_format_12h = true,
units = 'imperial',
font = 'Ubuntu Mono 9'
both_units_widget = true,
font_name = 'Carter One',
icons = 'VitalyGorbachev',
show_hourly_forecast = true,
show_daily_forecast = true,
}),
```
#### Only current weather
![example2](./screenshots/example2.png)
```lua
weather_curl_widget({
api_key='<your-key>',
coordinates = {45.5017, -73.5673},
}),
```
## Installation
1. Install lua socket - to make HTTP calls to get the weather information.
```bash
$ sudo apt-get install lua-socket
```
1. Download json parser for lua from [github.com/rxi/json.lua](https://github.com/rxi/json.lua) and place it under **~/.config/awesome/** (don't forget to star a repo <i class="fa fa-github-alt"></i> ):
```bash
@ -66,15 +100,27 @@ weather_widget({
layout = wibox.layout.fixed.horizontal,
...
--default
weather_widget({api_key = 'your-api-key'}),
--customized
weather_widget({
api_key = 'your-api-key',
coordinates = {45.5017, -73.5673},
api_key='c3d7320b359da4e48c2d682a04076576',
}),
,
--customized
weather_curl_widget({
api_key='<your-key>',
coordinates = {45.5017, -73.5673},
time_format_12h = true,
units = 'imperial',
font = 'Ubuntu Mono 9'
})
both_units_widget = true,
font_name = 'Carter One',
icons = 'VitalyGorbachev',
show_hourly_forecast = true,
show_daily_forecast = true,
}),
...
```
You can read how it works in more details [here](http://pavelmakhov.com/2017/02/weather-widget-for-awesome-wm)
## How it works
TBW

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512.035 512.035" height="512" viewBox="0 0 512.035 512.035" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m160.635 282.678c-.399 3.06-.6 6.17-.6 9.34-35.859 0-62.514 33.291-54.64 68.3-55.9-13.72-97.36-64.17-97.36-124.3 0-70.69 57.31-128 128-128h24c-39.92 8.34-72 45.6-72 88 0 43.35 31.34 79.379 72.6 86.66z" fill="#ffdf81"/><path d="m139.325 276.017h-11.29c-35.859 0-62.514 33.291-54.64 68.3l2.75 4.85c6.486 3.176 14.789 7.592 29.25 11.15-7.864-34.964 18.744-68.3 54.64-68.3 0-3.17.2-6.28.6-9.34-7.348-1.311-14.478-3.509-21.31-6.66z" fill="#ffcd76"/><path d="m160.035 108.017c-14.71 3.07-28.36 10.07-39.72 19.82-90.558 22.603-127.09 132.195-68.42 204.64-26.88-23.46-43.86-57.98-43.86-96.46 0-70.69 57.31-128 128-128z" fill="#f9ecb4"/><path d="m184.045 235.508c.27-26.28 21.65-47.49 47.99-47.49-26.51 0-48-21.49-48-48 0 26.51-21.49 48-48 48 26.34 0 47.73 21.22 47.99 47.5z" fill="#ffcd76"/><path d="m432.035 404.017h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#5989b3"/><path d="m417.135 218.908c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.916 50.225-46.779 86.78-15.201-10.01-25.221-27.22-25.221-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.402 122.233-57.326 165.18-3.9z" fill="#436786"/><path d="m443.637 252.855c-25.196-86.926-138.057-109.482-194.836-39.078-18.043-3.848-37.109-1.421-53.879 7.401 5.928-14.712 20.371-25.161 37.113-25.161 4.418 0 8-3.581 8-8 0-4.418-3.582-8-8-8-22.056 0-40-17.944-40-40 0-4.418-3.582-8-8-8s-8 3.582-8 8c0 22.056-17.944 40-40 40-4.418 0-8 3.582-8 8 0 4.419 3.582 8 8 8 21.631 0 39.429 17.427 39.969 38.971-10.447 10.267-18.101 23.365-21.688 38.046-54.738-15.31-77.633-82.299-39.099-128.676 12.192-14.674 28.69-24.798 46.453-28.509 4.014-.838 6.743-4.575 6.322-8.653-.422-4.078-3.858-7.178-7.958-7.178h-24c-114.113 0-176.619 132.321-106.547 220.53 17.697 22.277 42.194 38.589 69.381 46.311 8.063 26.122 32.432 45.159 61.166 45.159h88c4.418 0 8-3.581 8-8 0-4.418-3.582-8-8-8h-88c-26.468 0-48-21.533-48-48s21.532-48 48-48c4.418 0 8-3.581 8-8 0-35.26 28.681-64 64-64 35.786 0 64 29.266 64 64 0 4.419 3.582 8 8 8s8-3.581 8-8c0-31.505-18.765-59.95-46.817-72.79 52.765-57.536 146.992-31.064 164.288 42.804.798 3.41 3.721 5.904 7.214 6.156 33.261 2.398 59.315 30.436 59.315 63.831 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8 0 4.419 3.582 8 8 8h136c44.112 0 80-35.888 80-80 .001-39.796-29.603-73.504-68.397-79.164zm-278.818-64.816c7.863-4.731 14.479-11.342 19.216-19.202 4.738 7.861 11.352 14.471 19.218 19.203-7.857 4.745-14.475 11.365-19.216 19.229-4.741-7.865-11.358-14.485-19.218-19.23zm-68.755 161.145c-47.653-16.722-80.029-61.699-80.029-113.167 0-61.104 45.906-111.687 105.041-119.072-64.735 47.467-49.382 143.472 22.144 169.322-27.299 7.442-47.684 32.66-47.156 62.917z"/><path d="m272.035 396.017c-4.417 0-8 3.577-8 8 0 4.415 3.575 8 8 8 4.417 0 8-3.578 8-8 0-4.417-3.577-8-8-8z"/><circle cx="144.035" cy="372.017" fill="#436786" r="8"/><circle cx="132.035" cy="360.017" fill="#436786" r="4"/><g fill="#ffcd76"><circle cx="56.035" cy="300.017" r="8"/><circle cx="44.035" cy="288.017" r="4"/></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m222.66 220.6c-35.35 4.58-62.66 34.81-62.66 71.4-20.92 0-39.15 11.46-48.76 28.46-36.313-10.61-63.24-44.243-63.24-84.46 0-48.586 39.399-88 88-88 43.692 0 79.442 31.706 86.66 72.6z" fill="#ffdf81"/><path d="m205.71 182.3c-35.032-27.064-84.728-23.74-115.93 7.48-31.241 31.222-34.517 80.933-7.48 115.93-21.095-16.244-34.3-41.635-34.3-69.71 0-48.586 39.399-88 88-88 28.054 0 53.457 13.194 69.71 34.3z" fill="#f9ecb4"/><path d="m222.66 220.6c-35.35 4.58-62.66 34.81-62.66 71.4-20.92 0-39.15 11.46-48.76 28.46-18.921-5.528-35.498-17.355-46.99-33.51 9.31 7.96 20.29 13.99 32.33 17.51 9.61-17 27.84-28.46 48.76-28.46 0-36.59 27.31-66.82 62.66-71.4-2.31-13.08-7.51-25.16-14.91-35.56 15.486 13.209 26.014 31.411 29.57 51.56z" fill="#ffcd76"/><path d="m432 404h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#add9ff"/><g fill="#d6ecff"><path d="m417.1 218.89c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.917 50.224-46.78 86.78-15.2-10.01-25.22-27.22-25.22-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.325 165.18-3.9z"/><circle cx="144" cy="372" r="8"/><circle cx="132" cy="360" r="4"/></g><circle cx="88" cy="276" fill="#ffcd76" r="8"/><circle cx="76" cy="264" fill="#ffcd76" r="4"/><path d="m443.602 252.838c-25.196-86.926-138.057-109.482-194.836-39.078-6.722-1.433-13.209-1.932-19.768-1.689-3.59-14.029-10.297-26.969-19.701-38.055l28.361-28.36c3.125-3.124 3.125-8.189 0-11.313-3.124-3.124-8.189-3.124-11.313 0l-28.359 28.357c-15.281-12.971-34.006-20.729-53.986-22.367v-32.333c0-4.419-3.581-8-8-8s-8 3.581-8 8v32.333c-19.981 1.638-38.707 9.397-53.986 22.367l-28.357-28.357c-3.124-3.124-8.189-3.124-11.313 0-3.125 3.124-3.125 8.189 0 11.313l28.356 28.358c-12.971 15.28-20.729 34.006-22.367 53.986h-32.333c-4.418 0-8 3.581-8 8s3.582 8 8 8h32.333c1.638 19.982 9.396 38.708 22.367 53.986l-28.357 28.357c-3.125 3.124-3.125 8.189 0 11.313 3.124 3.124 8.189 3.124 11.313 0l28.365-28.365c7.846 6.638 16.716 11.991 26.219 15.811-16.034 41.708 14.888 86.898 59.76 86.898h88c4.419 0 8-3.582 8-8s-3.581-8-8-8h-88c-26.467 0-48-21.533-48-48s21.533-48 48-48c4.419 0 8-3.582 8-8 0-35.29 28.71-64 64-64 35.786 0 64 29.266 64 64 0 4.418 3.582 8 8 8s8-3.582 8-8c0-31.505-18.765-59.95-46.817-72.79 52.83-57.606 147.007-31.003 164.288 42.804.798 3.41 3.721 5.904 7.214 6.156 33.26 2.397 59.315 30.435 59.315 63.83 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8s3.582 8 8 8h136c44.112 0 80-35.888 80-80 0-39.794-29.603-73.503-68.398-79.162zm-291.249 31.616c-18.303 2.189-34.246 12.143-44.461 26.453-53.943-20.263-69.902-90.047-28.453-131.472 43.546-43.571 117.258-23.281 133.571 34.845-32.607 7.968-57.443 35.974-60.657 70.174z"/><circle cx="272" cy="404" r="8"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512.058 512.058" height="512" viewBox="0 0 512.058 512.058" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m504.058 208c-16.51 75.45-87.6 136-168 136-92.78 0-168-75.22-168-168 0-80.4 52.561-151.49 128.011-168-16.011 0-25.021 0-40.011 0-136.97 0-248 111.03-248 248s111.03 248 248 248 248-111.03 248-248c0-14.99 0-32 0-48z" fill="#ffdf81"/><path d="m320.058 360c-92.78 0-168-75.22-168-168 0-52.61 22.51-101.24 59.21-133.18-27.14 31.11-43.21 72.72-43.21 117.18 0 143.398 168.991 222.916 280.84 124.12-31.93 36.2-78.56 59.88-128.84 59.88z" fill="#ffcd76"/><path d="m40.058 256c0 131.6 102.49 239.25 232 247.5-144.868 9.04-264-105.835-264-247.5 0-136.97 111.03-248 248-248h32c-136.97 0-248 111.03-248 248z" fill="#f9ecb4"/><path d="m472.058 104s-56 0-56 64c0-64-56-64-56-64s56 0 56-64c0 64 56 64 56 64z" fill="#ffcd76"/><path d="m360.058 216s-56 0-56 64c0-64-56-64-56-64s56 0 56-64c0 64 56 64 56 64z" fill="#ffcd76"/><path d="" fill="#f9ecb4"/><path d="m416.058 176c-4.418 0-8-3.581-8-8 0-23.203-7.893-39.607-23.458-48.758-11.98-7.044-24.396-7.24-24.573-7.242-4.404-.017-7.969-3.592-7.969-8 0-4.803 4.399-8.359 7.923-7.999.107-.019 12.742-.26 24.619-7.243 15.565-9.151 23.458-25.555 23.458-48.758 0-4.418 3.582-8 8-8s8 3.582 8 8c0 23.203 7.893 39.607 23.458 48.758 11.98 7.044 24.396 7.24 24.573 7.242 4.404.017 7.969 3.592 7.969 8 0 4.379-3.52 7.937-7.884 7.999 1.722 0-11.862-.279-24.658 7.243-15.565 9.151-23.458 25.555-23.458 48.758 0 4.419-3.582 8-8 8zm-25.952-72c11.129 5.861 20.085 14.733 25.951 26.376 5.866-11.642 14.822-20.515 25.951-26.376-11.129-5.861-20.085-14.733-25.951-26.376-5.865 11.642-14.821 20.515-25.951 26.376z"/><path d="m304.058 288c-4.418 0-8-3.582-8-8 0-23.203-7.893-39.607-23.458-48.758-11.98-7.044-24.396-7.24-24.573-7.242-4.404-.017-7.969-3.592-7.969-8 0-4.455 3.642-7.999 7.923-7.999.107-.019 12.742-.26 24.619-7.243 15.565-9.151 23.458-25.555 23.458-48.758 0-4.419 3.582-8 8-8s8 3.581 8 8c0 23.203 7.893 39.607 23.458 48.758 11.98 7.044 24.396 7.24 24.573 7.242 4.404.017 7.969 3.592 7.969 8 0 4.379-3.52 7.937-7.884 7.999.842 0-12.06-.163-24.658 7.243-15.565 9.151-23.458 25.555-23.458 48.758 0 4.418-3.582 8-8 8zm-25.952-72c11.129 5.861 20.085 14.733 25.951 26.376 5.866-11.642 14.822-20.515 25.951-26.376-11.129-5.861-20.085-14.733-25.951-26.376-5.865 11.642-14.821 20.515-25.951 26.376z"/><circle cx="248.058" cy="320" r="8"/><path d="m360.026 112c.177.002 12.593.199 24.573 7.242 15.565 9.151 23.458 25.555 23.458 48.758 0 4.419 3.582 8 8 8s8-3.581 8-8c0-23.203 7.893-39.607 23.458-48.758 12.006-7.058 24.45-7.241 24.542-7.242 4.415 0 8-3.579 8-8 0-4.408-3.564-7.983-7.969-8-.177-.002-12.593-.199-24.573-7.242-15.565-9.151-23.457-25.555-23.457-48.758 0-4.418-3.582-8-8-8s-8 3.582-8 8c0 23.203-7.893 39.607-23.458 48.758-12.006 7.058-24.45 7.241-24.542 7.242-4.634.05-8 3.745-8 8 0 4.408 3.564 7.983 7.968 8zm56.032-34.376c5.866 11.642 14.822 20.515 25.951 26.376-11.129 5.861-20.085 14.733-25.951 26.376-5.866-11.642-14.822-20.515-25.951-26.376 11.128-5.861 20.085-14.733 25.951-26.376z"/><path d="m296.058 152c0 23.203-7.893 39.607-23.458 48.758-12.006 7.058-24.45 7.241-24.542 7.242-4.634.05-8 3.745-8 8 0 4.408 3.564 7.983 7.969 8 .177.002 12.593.199 24.573 7.242 15.565 9.151 23.458 25.555 23.458 48.758 0 4.418 3.582 8 8 8s8-3.582 8-8c0-23.203 7.893-39.607 23.458-48.758 6.717-3.949 15.186-6.907 24.658-7.243 4.362-.155 7.884-3.62 7.884-7.999 0-4.408-3.564-7.983-7.969-8-.177-.002-12.593-.199-24.573-7.242-15.565-9.151-23.458-25.555-23.458-48.758 0-4.419-3.582-8-8-8s-8 3.581-8 8zm33.951 64c-11.129 5.861-20.085 14.733-25.951 26.376-5.866-11.642-14.822-20.515-25.951-26.376 11.129-5.861 20.085-14.733 25.951-26.376 5.865 11.642 14.822 20.515 25.951 26.376z"/><path d="m242.397 314.34c-3.114 3.114-3.117 8.203 0 11.32 3.113 3.113 8.201 3.119 11.32 0 3.113-3.115 3.115-8.203 0-11.32-3.113-3.114-8.203-3.117-11.32 0z"/><path d="m504.058 199.99c-3.911 0-7.167 2.807-7.862 6.517-20.257 91.913-123.668 157.679-221.125 117.46-4.084-1.687-8.762.258-10.447 4.343-1.685 4.084.26 8.761 4.344 10.447 87.651 36.17 184.754-4.964 227.091-85.81 0 140.926-111.37 243.053-240 243.053-132.643 0-240-107.337-240-240 0-131.778 105.691-237.786 235.876-239.965-102.292 55.569-127.095 206.855-33.414 290.965 3.288 2.952 8.346 2.678 11.298-.608 2.951-3.288 2.679-8.346-.608-11.297-97.612-87.639-52.252-252.642 68.335-279.23 3.713-.693 6.522-3.95 6.522-7.864 0-4.418-3.582-8-8-8h-40.011c-68.381-.001-132.668 26.627-181.02 74.978-100.042 100.041-100.057 261.985 0 362.041 100.042 100.042 261.984 100.057 362.041 0 48.352-48.351 74.98-112.638 74.98-181.02v-48.01c0-4.418-3.582-8-8-8z"/><circle cx="448.058" cy="344" fill="#ffcd76" r="16"/><circle cx="424.058" cy="368" fill="#ffcd76" r="8"/><g fill="#f9ecb4"><circle cx="160.058" cy="72" r="16"/><circle cx="136.058" cy="96" r="8"/></g></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><circle cx="255.999" cy="256" fill="#ffcd76" r="192"/><circle cx="255.999" cy="256" fill="#ffb562" r="152"/><path d="m256 80c4.418 0 8-3.581 8-8v-64c0-4.418-3.582-8-8-8s-8 3.582-8 8v64c0 4.419 3.582 8 8 8z"/><path d="m256 432c-4.418 0-8 3.582-8 8v64c0 4.418 3.582 8 8 8s8-3.582 8-8v-64c0-4.418-3.582-8-8-8z"/><path d="m504 248h-64.001c-4.418 0-8 3.581-8 8 0 4.418 3.582 8 8 8h64.001c4.418 0 8-3.582 8-8 0-4.419-3.582-8-8-8z"/><path d="m79.999 256c0-4.419-3.582-8-8-8h-63.999c-4.418 0-8 3.581-8 8 0 4.418 3.582 8 8 8h63.999c4.418 0 8-3.582 8-8z"/><path d="m122.342 133.657c3.125 3.125 8.189 3.124 11.314 0 3.124-3.124 3.124-8.189 0-11.313l-56-56c-3.125-3.124-8.189-3.124-11.314 0-3.124 3.124-3.124 8.189 0 11.313z"/><path d="m383.999 136c2.048 0 4.095-.781 5.657-2.343l56-56c3.124-3.124 3.124-8.189 0-11.313-3.125-3.124-8.189-3.124-11.314 0l-56 56c-5.056 5.055-1.405 13.656 5.657 13.656z"/><path d="m389.656 378.343c-3.125-3.124-8.189-3.124-11.314 0-3.124 3.124-3.124 8.189 0 11.313l56 56c1.563 1.562 3.609 2.343 5.657 2.343 7.061 0 10.714-8.6 5.657-13.657z"/><path d="m122.342 378.343-56 56c-3.124 3.124-3.124 8.189 0 11.313 3.125 3.125 8.189 3.124 11.314 0l56-56c3.124-3.124 3.124-8.189 0-11.313-3.125-3.124-8.189-3.124-11.314 0z"/><path d="m255.999 96c-88.225 0-160 71.776-160 160s71.775 160 160 160 160-71.776 160-160-71.775-160-160-160zm0 304c-79.402 0-144-64.598-144-144s64.598-144 144-144 144 64.598 144 144-64.598 144-144 144z"/><path d="m373.767 280.522c-4.252-1.182-8.666 1.307-9.851 5.563-13.416 48.23-57.793 81.915-107.916 81.915-61.757 0-112-50.243-112-112s50.243-112 112-112c50.314 0 94.736 33.847 108.024 82.309 1.167 4.26 5.564 6.765 9.83 5.6 4.261-1.169 6.768-5.57 5.6-9.831-15.187-55.392-65.954-94.078-123.454-94.078-70.579 0-128 57.42-128 128s57.421 128 128 128c57.281 0 107.996-38.5 123.33-93.626 1.185-4.257-1.307-8.668-5.563-9.852z"/><path d="m381.648 250.34c-3.086-3.108-8.188-3.121-11.31 0-3.114 3.114-3.117 8.203 0 11.32 3.128 3.128 8.229 3.103 11.31 0 3.129-3.128 3.13-8.19 0-11.32z"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512.035 512.035" height="512" viewBox="0 0 512.035 512.035" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m160.635 282.678c-.399 3.06-.6 6.17-.6 9.34-35.859 0-62.514 33.291-54.64 68.3-55.9-13.72-97.36-64.17-97.36-124.3 0-70.69 57.31-128 128-128h24c-39.92 8.34-72 45.6-72 88 0 43.35 31.34 79.379 72.6 86.66z" fill="#ffdf81"/><path d="m139.325 276.017h-11.29c-35.859 0-62.514 33.291-54.64 68.3l2.75 4.85c6.486 3.176 14.789 7.592 29.25 11.15-7.864-34.964 18.744-68.3 54.64-68.3 0-3.17.2-6.28.6-9.34-7.348-1.311-14.478-3.509-21.31-6.66z" fill="#ffcd76"/><path d="m160.035 108.017c-14.71 3.07-28.36 10.07-39.72 19.82-90.558 22.603-127.09 132.195-68.42 204.64-26.88-23.46-43.86-57.98-43.86-96.46 0-70.69 57.31-128 128-128z" fill="#f9ecb4"/><path d="m184.045 235.508c.27-26.28 21.65-47.49 47.99-47.49-26.51 0-48-21.49-48-48 0 26.51-21.49 48-48 48 26.34 0 47.73 21.22 47.99 47.5z" fill="#ffcd76"/><path d="m432.035 404.017h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#5989b3"/><path d="m417.135 218.908c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.916 50.225-46.779 86.78-15.201-10.01-25.221-27.22-25.221-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.402 122.233-57.326 165.18-3.9z" fill="#436786"/><path d="m443.637 252.855c-25.196-86.926-138.057-109.482-194.836-39.078-18.043-3.848-37.109-1.421-53.879 7.401 5.928-14.712 20.371-25.161 37.113-25.161 4.418 0 8-3.581 8-8 0-4.418-3.582-8-8-8-22.056 0-40-17.944-40-40 0-4.418-3.582-8-8-8s-8 3.582-8 8c0 22.056-17.944 40-40 40-4.418 0-8 3.582-8 8 0 4.419 3.582 8 8 8 21.631 0 39.429 17.427 39.969 38.971-10.447 10.267-18.101 23.365-21.688 38.046-54.738-15.31-77.633-82.299-39.099-128.676 12.192-14.674 28.69-24.798 46.453-28.509 4.014-.838 6.743-4.575 6.322-8.653-.422-4.078-3.858-7.178-7.958-7.178h-24c-114.113 0-176.619 132.321-106.547 220.53 17.697 22.277 42.194 38.589 69.381 46.311 8.063 26.122 32.432 45.159 61.166 45.159h88c4.418 0 8-3.581 8-8 0-4.418-3.582-8-8-8h-88c-26.468 0-48-21.533-48-48s21.532-48 48-48c4.418 0 8-3.581 8-8 0-35.26 28.681-64 64-64 35.786 0 64 29.266 64 64 0 4.419 3.582 8 8 8s8-3.581 8-8c0-31.505-18.765-59.95-46.817-72.79 52.765-57.536 146.992-31.064 164.288 42.804.798 3.41 3.721 5.904 7.214 6.156 33.261 2.398 59.315 30.436 59.315 63.831 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8 0 4.419 3.582 8 8 8h136c44.112 0 80-35.888 80-80 .001-39.796-29.603-73.504-68.397-79.164zm-278.818-64.816c7.863-4.731 14.479-11.342 19.216-19.202 4.738 7.861 11.352 14.471 19.218 19.203-7.857 4.745-14.475 11.365-19.216 19.229-4.741-7.865-11.358-14.485-19.218-19.23zm-68.755 161.145c-47.653-16.722-80.029-61.699-80.029-113.167 0-61.104 45.906-111.687 105.041-119.072-64.735 47.467-49.382 143.472 22.144 169.322-27.299 7.442-47.684 32.66-47.156 62.917z"/><path d="m272.035 396.017c-4.417 0-8 3.577-8 8 0 4.415 3.575 8 8 8 4.417 0 8-3.578 8-8 0-4.417-3.577-8-8-8z"/><circle cx="144.035" cy="372.017" fill="#436786" r="8"/><circle cx="132.035" cy="360.017" fill="#436786" r="4"/><g fill="#ffcd76"><circle cx="56.035" cy="300.017" r="8"/><circle cx="44.035" cy="288.017" r="4"/></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m222.66 220.6c-35.35 4.58-62.66 34.81-62.66 71.4-20.92 0-39.15 11.46-48.76 28.46-36.313-10.61-63.24-44.243-63.24-84.46 0-48.586 39.399-88 88-88 43.692 0 79.442 31.706 86.66 72.6z" fill="#ffdf81"/><path d="m205.71 182.3c-35.032-27.064-84.728-23.74-115.93 7.48-31.241 31.222-34.517 80.933-7.48 115.93-21.095-16.244-34.3-41.635-34.3-69.71 0-48.586 39.399-88 88-88 28.054 0 53.457 13.194 69.71 34.3z" fill="#f9ecb4"/><path d="m222.66 220.6c-35.35 4.58-62.66 34.81-62.66 71.4-20.92 0-39.15 11.46-48.76 28.46-18.921-5.528-35.498-17.355-46.99-33.51 9.31 7.96 20.29 13.99 32.33 17.51 9.61-17 27.84-28.46 48.76-28.46 0-36.59 27.31-66.82 62.66-71.4-2.31-13.08-7.51-25.16-14.91-35.56 15.486 13.209 26.014 31.411 29.57 51.56z" fill="#ffcd76"/><path d="m432 404h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#add9ff"/><g fill="#d6ecff"><path d="m417.1 218.89c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.917 50.224-46.78 86.78-15.2-10.01-25.22-27.22-25.22-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.325 165.18-3.9z"/><circle cx="144" cy="372" r="8"/><circle cx="132" cy="360" r="4"/></g><circle cx="88" cy="276" fill="#ffcd76" r="8"/><circle cx="76" cy="264" fill="#ffcd76" r="4"/><path d="m443.602 252.838c-25.196-86.926-138.057-109.482-194.836-39.078-6.722-1.433-13.209-1.932-19.768-1.689-3.59-14.029-10.297-26.969-19.701-38.055l28.361-28.36c3.125-3.124 3.125-8.189 0-11.313-3.124-3.124-8.189-3.124-11.313 0l-28.359 28.357c-15.281-12.971-34.006-20.729-53.986-22.367v-32.333c0-4.419-3.581-8-8-8s-8 3.581-8 8v32.333c-19.981 1.638-38.707 9.397-53.986 22.367l-28.357-28.357c-3.124-3.124-8.189-3.124-11.313 0-3.125 3.124-3.125 8.189 0 11.313l28.356 28.358c-12.971 15.28-20.729 34.006-22.367 53.986h-32.333c-4.418 0-8 3.581-8 8s3.582 8 8 8h32.333c1.638 19.982 9.396 38.708 22.367 53.986l-28.357 28.357c-3.125 3.124-3.125 8.189 0 11.313 3.124 3.124 8.189 3.124 11.313 0l28.365-28.365c7.846 6.638 16.716 11.991 26.219 15.811-16.034 41.708 14.888 86.898 59.76 86.898h88c4.419 0 8-3.582 8-8s-3.581-8-8-8h-88c-26.467 0-48-21.533-48-48s21.533-48 48-48c4.419 0 8-3.582 8-8 0-35.29 28.71-64 64-64 35.786 0 64 29.266 64 64 0 4.418 3.582 8 8 8s8-3.582 8-8c0-31.505-18.765-59.95-46.817-72.79 52.83-57.606 147.007-31.003 164.288 42.804.798 3.41 3.721 5.904 7.214 6.156 33.26 2.397 59.315 30.435 59.315 63.83 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8s3.582 8 8 8h136c44.112 0 80-35.888 80-80 0-39.794-29.603-73.503-68.398-79.162zm-291.249 31.616c-18.303 2.189-34.246 12.143-44.461 26.453-53.943-20.263-69.902-90.047-28.453-131.472 43.546-43.571 117.258-23.281 133.571 34.845-32.607 7.968-57.443 35.974-60.657 70.174z"/><circle cx="272" cy="404" r="8"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m178.55 135.77c-11.53 12.77-18.55 29.68-18.55 48.23-32.644 0-58.973 27.981-55.72 61.65-54.91-11-96.28-59.5-96.28-117.65 0-66.27 53.73-120 120-120h32c-23.71 9.37-40 36.95-40 64 0 33.52 25.75 61.01 58.55 63.77z" fill="#ffdf81"/><path d="m178.55 135.77c-11.53 12.77-18.55 29.68-18.55 48.23-32.644 0-58.973 27.981-55.72 61.65-8.45-1.69-16.58-4.27-24.28-7.65v-11.65c0-30.93 25.07-56 56-56 0-16.41 5.49-31.54 14.75-43.65 8.22 5.01 17.68 8.22 27.8 9.07z" fill="#ffcd76"/><path d="m160 8c-8.47 3.34-16 9.01-22.17 16.16-99.005 4.997-148.56 121.137-86.3 196.32-26.59-22.01-43.53-55.27-43.53-92.48 0-66.27 53.73-120 120-120z" fill="#f9ecb4"/><circle cx="64" cy="200" fill="#ffcd76" r="8"/><circle cx="52" cy="188" fill="#ffcd76" r="4"/><path d="m432 296h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#5989b3"/><g fill="#436786"><path d="m417.1 110.89c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.917 50.224-46.78 86.78-15.2-10.01-25.22-27.22-25.22-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.325 165.18-3.9z"/><circle cx="144" cy="264" r="8"/><circle cx="132" cy="252" r="4"/></g><path d="m352 376c0-22.056-17.944-40-40-40s-40 17.944-40 40c0 4.418 3.581 8 8 8 4.418 0 8-3.582 8-8 0-13.233 10.767-24 24-24s24 10.767 24 24-10.767 24-24 24h-304c-4.418 0-8 3.582-8 8s3.582 8 8 8h304c22.056 0 40-17.944 40-40z"/><path d="m472 432h-304c-4.419 0-8 3.582-8 8s3.581 8 8 8h304c13.233 0 24 10.767 24 24s-10.767 24-24 24-24-10.767-24-24c0-4.418-3.582-8-8-8-4.419 0-8 3.582-8 8 0 22.056 17.944 40 40 40s40-17.944 40-40-17.944-40-40-40z"/><path d="m392 464h-288c-4.419 0-8 3.582-8 8s3.581 8 8 8h288c4.418 0 8-3.582 8-8s-3.582-8-8-8z"/><path d="m72 464c-4.418 0-8 3.577-8 8 0 4.415 3.575 8 8 8 4.417 0 8-3.578 8-8 0-4.417-3.577-8-8-8z"/><path d="m248 368h-176c-4.419 0-8 3.582-8 8s3.581 8 8 8h176c4.418 0 8-3.582 8-8s-3.582-8-8-8z"/><path d="m34.34 370.34c-3.114 3.115-3.116 8.203 0 11.32 3.115 3.115 8.203 3.117 11.32 0 3.115-3.115 3.117-8.203 0-11.32-3.114-3.114-8.203-3.117-11.32 0z"/><path d="m376 368c-4.419 0-8 3.582-8 8s3.581 8 8 8h64c4.418 0 8-3.582 8-8s-3.582-8-8-8z"/><path d="m466.34 370.34c-3.113 3.113-3.117 8.203 0 11.32 3.115 3.115 8.203 3.117 11.32 0 3.115-3.115 3.117-8.203 0-11.32-3.114-3.114-8.203-3.117-11.32 0z"/><path d="m97.191 252.261c5.738 29.443 31.713 51.739 62.809 51.739h88c4.418 0 8-3.582 8-8s-3.582-8-8-8h-88c-26.467 0-48-21.533-48-48s21.533-48 48-48c4.419 0 8-3.581 8-8 0-42.632 40.994-73.223 81.709-61.521 27.255 7.831 46.291 33.129 46.291 61.521 0 4.419 3.581 8 8 8 4.418 0 8-3.581 8-8 0-31.505-18.765-59.95-46.817-72.79 52.104-56.817 146.738-32.164 164.288 42.804.798 3.41 3.722 5.904 7.214 6.156 33.26 2.397 59.315 30.435 59.315 63.83 0 35.29-28.71 64-64 64h-136c-4.419 0-8 3.582-8 8s3.581 8 8 8h136c44.112 0 80-35.888 80-80 0-39.794-29.604-73.503-68.398-79.162-25.026-86.33-137.742-109.872-194.836-39.078-25.67-5.474-53.344 1.815-73.198 21.595-27.143-4.095-47.568-27.473-47.568-55.355 0-24.373 15.021-48.688 34.94-56.56 8.179-3.232 5.844-15.44-2.94-15.44h-32c-70.58 0-128 57.42-128 128 0 58.899 40.544 110.273 97.191 124.261zm30.809-236.261h6.497c-13.771 14.296-22.497 34.91-22.497 56 0 32.394 21.598 60.603 52.391 69.29-6.569 10.361-10.831 22.324-12.038 35.164-30.202 3.611-53.992 28.345-56.172 58.958-47.007-13.889-80.181-57.57-80.181-107.412 0-61.757 50.243-112 112-112z"/><path d="m266.34 290.34c-3.114 3.114-3.117 8.203 0 11.32 3.115 3.115 8.203 3.117 11.32 0 3.115-3.115 3.117-8.203 0-11.32-3.113-3.114-8.203-3.117-11.32 0z"/></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m214.9 114.05c-31.51 7.67-54.9 36.08-54.9 69.95-21.63 0-40.39 12.26-49.71 30.21-40.11-8.19-70.29-43.68-70.29-86.21 0-48.6 39.4-88 88-88 43.85 0 80.21 32.08 86.9 74.05z" fill="#ffdf81"/><path d="m197.71 74.3c-57.029-44.085-141.71-3.868-141.71 69.7 0 20.21 6.82 38.84 18.29 53.7-20.86-16.08-34.29-41.33-34.29-69.7 0-48.6 39.4-88 88-88 28.38 0 53.63 13.44 69.71 34.3z" fill="#f9ecb4"/><g fill="#ffcd76"><path d="m214.9 114.05c-31.51 7.67-54.9 36.08-54.9 69.95-21.63 0-40.391 12.26-49.71 30.21-21.04-4.3-39.351-16.11-52-32.51 10.399 8.04 22.649 13.79 36 16.51 9.319-17.95 28.08-30.21 49.71-30.21 0-33.87 23.391-62.28 54.9-69.95-2.36-14.81-8.41-28.38-17.19-39.75 17.37 13.39 29.59 33.14 33.19 55.75z"/><circle cx="88" cy="176" r="8"/><circle cx="76" cy="164" r="4"/></g><path d="m432 296h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#add9ff"/><path d="m417.1 110.89c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.916 50.225-46.779 86.78-15.201-10.01-25.221-27.22-25.221-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.325 165.18-3.9z" fill="#d6ecff"/><circle cx="144" cy="264" fill="#d6ecff" r="8"/><circle cx="132" cy="252" fill="#d6ecff" r="4"/><path d="m8 136h24.344c1.701 20.252 9.803 38.986 22.418 53.925l-20.419 20.419c-3.124 3.124-3.124 8.189 0 11.313 3.125 3.125 8.189 3.124 11.314 0l20.4-20.401c9.603 8.155 20.855 14.477 33.271 18.36-13.906 41.293 16.927 84.384 60.672 84.384h88c4.418 0 8-3.582 8-8s-3.582-8-8-8h-88c-26.468 0-48-21.533-48-48s21.532-48 48-48c4.418 0 8-3.581 8-8 0-35.29 28.71-64 64-64 35.786 0 64 29.266 64 64 0 4.419 3.582 8 8 8s8-3.581 8-8c0-31.505-18.765-59.95-46.817-72.79 52.832-57.61 147.007-31.001 164.288 42.804.798 3.41 3.721 5.904 7.214 6.156 33.26 2.397 59.315 30.435 59.315 63.83 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8s3.582 8 8 8h136c44.112 0 80-35.888 80-80 0-39.794-29.603-73.503-68.398-79.162-25.197-86.926-138.058-109.482-194.836-39.078-8.889-1.896-18.193-2.298-27.612-1.015-3.558-14.252-10.385-27.5-19.869-38.715l20.373-20.374c3.124-3.124 3.124-8.189 0-11.313-3.125-3.124-8.189-3.124-11.314 0l-20.364 20.365c-15.261-12.914-34.153-20.704-53.98-22.363v-24.345c0-4.418-3.582-8-8-8s-8 3.582-8 8v24.336c-20.469 1.697-39.133 9.843-53.955 22.396l-20.388-20.389c-3.124-3.124-8.188-3.125-11.314 0-3.124 3.124-3.124 8.189 0 11.313l20.389 20.389c-12.553 14.823-20.699 33.486-22.396 53.955h-24.336c-4.418 0-8 3.581-8 8s3.582 8 8 8zm120-88c37.101 0 68.781 25.398 77.6 60.485-28.902 10.134-50.281 36.411-53.247 67.969-19.198 2.296-35.8 13.133-45.918 28.581-34.171-9.541-58.435-41.071-58.435-77.035 0-44.112 35.888-80 80-80z"/><path d="m352 376c0-22.056-17.944-40-40-40s-40 17.944-40 40c0 4.418 3.582 8 8 8s8-3.582 8-8c0-13.233 10.767-24 24-24s24 10.767 24 24-10.767 24-24 24h-304c-4.418 0-8 3.582-8 8s3.582 8 8 8h304c22.056 0 40-17.944 40-40z"/><path d="m472 432h-304c-4.418 0-8 3.582-8 8s3.582 8 8 8h304c13.233 0 24 10.767 24 24s-10.767 24-24 24-24-10.767-24-24c0-4.418-3.582-8-8-8s-8 3.582-8 8c0 22.056 17.944 40 40 40s40-17.944 40-40-17.944-40-40-40z"/><path d="m392 464h-288c-4.418 0-8 3.582-8 8s3.582 8 8 8h288c4.418 0 8-3.582 8-8s-3.582-8-8-8z"/><circle cx="72" cy="472" r="8"/><path d="m248 368h-176c-4.418 0-8 3.582-8 8s3.582 8 8 8h176c4.418 0 8-3.582 8-8s-3.582-8-8-8z"/><path d="m34.34 370.34c-3.114 3.114-3.117 8.203 0 11.32 3.113 3.113 8.201 3.119 11.32 0 3.121-3.122 3.109-8.209 0-11.32-3.116-3.115-8.203-3.116-11.32 0z"/><path d="m376 368c-4.418 0-8 3.582-8 8s3.582 8 8 8h64c4.418 0 8-3.582 8-8s-3.582-8-8-8z"/><path d="m466.34 370.34c-3.113 3.134-3.116 8.184 0 11.32 3.113 3.113 8.201 3.119 11.32 0 3.114-3.115 3.115-8.203 0-11.32-3.116-3.115-8.203-3.116-11.32 0z"/><path d="m266.34 290.34c-3.114 3.114-3.117 8.203 0 11.32 3.113 3.113 8.201 3.119 11.32 0 3.116-3.117 3.115-8.203 0-11.32-3.114-3.113-8.203-3.116-11.32 0z"/></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512.132 512.132" height="512" viewBox="0 0 512.132 512.132" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m376.316 405.45c-5.93-1.391-11.67-3.3-17.17-5.66 27.36-24.98 42.82-59.16 32.92-95.62-6.21-22.88-24.96-58.47-46.62-94.96l10.67-20.53c22.92 39.41 54.75 96.32 59.95 115.49 8.751 32.226-.64 68.869-39.75 101.28z" fill="#5989b3"/><path d="m504.066 304.17c0 75.116-77.051 124.797-144.92 95.62 27.36-24.98 42.82-59.16 32.92-95.62-6.21-22.88-24.96-58.47-46.62-94.96l54.62-105.04z" fill="#99d0ff"/><path d="m376.316 405.45c-5.93-1.391-11.67-3.3-17.17-5.66 27.36-24.98 42.82-59.16 32.92-95.62-6.21-22.88-24.96-58.47-46.62-94.96l10.67-20.53c22.92 39.41 54.75 96.32 59.95 115.49 8.751 32.226-.64 68.869-39.75 101.28z" fill="#5989b3"/><path d="m152.986 399.79c-67.914 29.196-144.92-20.56-144.92-95.62l104-200 54.62 105.04c-21.66 36.49-40.41 72.08-46.62 94.96-9.9 36.46 5.56 70.64 32.92 95.62z" fill="#add9ff"/><path d="m137.196 405.45c5.93-1.391 11.67-3.3 17.17-5.66-27.36-24.98-42.82-59.16-32.92-95.62 6.21-22.88 24.96-58.47 46.62-94.96l-10.67-20.53c-22.92 39.41-54.75 96.32-59.95 115.49-8.751 32.226.64 68.869 39.75 101.28z" fill="#99d0ff"/><path d="m392.066 304.17c-17.615-64.882-136-232-136-232s-118.385 167.118-136 232c-19.68 72.487 60.889 136 136 136 75.11 0 155.68-63.513 136-136z" fill="#c2e3ff"/><path d="m266.566 439.76c-78.855 6.08-166.972-60.185-146.5-135.59 17.62-64.88 136-232 136-232s3.94 5.57 10.5 15.06c-29.36 42.53-111.11 163.9-125.51 216.94-18.77 69.12 53.62 130.08 125.51 135.59z" fill="#d6ecff"/><path d="m407.164 100.48c-2.977-5.726-11.206-5.75-14.195 0l-48.003 92.315c-37.236-61.366-79.457-121.136-82.371-125.248-3.177-4.486-9.861-4.514-13.056 0-2.914 4.112-45.135 63.882-82.372 125.248l-48.003-92.315c-2.977-5.726-11.206-5.75-14.195 0-111.226 213.912-104.903 200.775-104.903 203.69 0 77.983 78.302 132.392 151.33 104.879 62.282 53.104 149.942 50.643 209.34 0 72.953 27.486 151.33-26.829 151.33-104.879 0-2.888 6.316 10.208-104.902-203.69zm-391.079 205.609 95.981-184.578 45.456 87.416c-20.991 35.682-38.973 70.297-45.177 93.148-9.247 34.06 1.774 67.737 26.077 94.433-60.262 17.239-121.099-27.436-122.337-90.419zm239.981 126.081c-69.792 0-146.486-58.847-128.279-125.904 14.689-54.103 103.322-184.169 128.279-220.131 24.957 35.959 113.588 166.018 128.279 220.131 18.208 67.066-58.494 125.904-128.279 125.904zm117.644-35.663c24.391-26.788 35.294-60.483 26.077-94.433-6.204-22.851-24.185-57.466-45.177-93.146l45.456-87.417 95.981 184.578c-1.236 62.889-62.002 107.678-122.337 90.418z"/><path d="m286.976 164.139c-2.227-3.814-7.123-5.105-10.941-2.879-3.816 2.227-5.105 7.125-2.879 10.941l56 96c1.487 2.549 4.165 3.971 6.918 3.971 6.102 0 10.032-6.669 6.902-12.033z"/><path d="m357.726 290.51c-3.114-3.114-8.203-3.117-11.32 0-3.116 3.117-3.114 8.206 0 11.32 3.112 3.11 8.197 3.121 11.32 0 3.165-3.188 3.068-8.25 0-11.32z"/></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512.132 512.132" height="512" viewBox="0 0 512.132 512.132" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m376.316 405.45c-5.93-1.391-11.67-3.3-17.17-5.66 27.36-24.98 42.82-59.16 32.92-95.62-6.21-22.88-24.96-58.47-46.62-94.96l10.67-20.53c22.92 39.41 54.75 96.32 59.95 115.49 8.751 32.226-.64 68.869-39.75 101.28z" fill="#5989b3"/><path d="m504.066 304.17c0 75.116-77.051 124.797-144.92 95.62 27.36-24.98 42.82-59.16 32.92-95.62-6.21-22.88-24.96-58.47-46.62-94.96l54.62-105.04z" fill="#99d0ff"/><path d="m376.316 405.45c-5.93-1.391-11.67-3.3-17.17-5.66 27.36-24.98 42.82-59.16 32.92-95.62-6.21-22.88-24.96-58.47-46.62-94.96l10.67-20.53c22.92 39.41 54.75 96.32 59.95 115.49 8.751 32.226-.64 68.869-39.75 101.28z" fill="#5989b3"/><path d="m152.986 399.79c-67.914 29.196-144.92-20.56-144.92-95.62l104-200 54.62 105.04c-21.66 36.49-40.41 72.08-46.62 94.96-9.9 36.46 5.56 70.64 32.92 95.62z" fill="#add9ff"/><path d="m137.196 405.45c5.93-1.391 11.67-3.3 17.17-5.66-27.36-24.98-42.82-59.16-32.92-95.62 6.21-22.88 24.96-58.47 46.62-94.96l-10.67-20.53c-22.92 39.41-54.75 96.32-59.95 115.49-8.751 32.226.64 68.869 39.75 101.28z" fill="#99d0ff"/><path d="m392.066 304.17c-17.615-64.882-136-232-136-232s-118.385 167.118-136 232c-19.68 72.487 60.889 136 136 136 75.11 0 155.68-63.513 136-136z" fill="#c2e3ff"/><path d="m266.566 439.76c-78.855 6.08-166.972-60.185-146.5-135.59 17.62-64.88 136-232 136-232s3.94 5.57 10.5 15.06c-29.36 42.53-111.11 163.9-125.51 216.94-18.77 69.12 53.62 130.08 125.51 135.59z" fill="#d6ecff"/><path d="m407.164 100.48c-2.977-5.726-11.206-5.75-14.195 0l-48.003 92.315c-37.236-61.366-79.457-121.136-82.371-125.248-3.177-4.486-9.861-4.514-13.056 0-2.914 4.112-45.135 63.882-82.372 125.248l-48.003-92.315c-2.977-5.726-11.206-5.75-14.195 0-111.226 213.912-104.903 200.775-104.903 203.69 0 77.983 78.302 132.392 151.33 104.879 62.282 53.104 149.942 50.643 209.34 0 72.953 27.486 151.33-26.829 151.33-104.879 0-2.888 6.316 10.208-104.902-203.69zm-391.079 205.609 95.981-184.578 45.456 87.416c-20.991 35.682-38.973 70.297-45.177 93.148-9.247 34.06 1.774 67.737 26.077 94.433-60.262 17.239-121.099-27.436-122.337-90.419zm239.981 126.081c-69.792 0-146.486-58.847-128.279-125.904 14.689-54.103 103.322-184.169 128.279-220.131 24.957 35.959 113.588 166.018 128.279 220.131 18.208 67.066-58.494 125.904-128.279 125.904zm117.644-35.663c24.391-26.788 35.294-60.483 26.077-94.433-6.204-22.851-24.185-57.466-45.177-93.146l45.456-87.417 95.981 184.578c-1.236 62.889-62.002 107.678-122.337 90.418z"/><path d="m286.976 164.139c-2.227-3.814-7.123-5.105-10.941-2.879-3.816 2.227-5.105 7.125-2.879 10.941l56 96c1.487 2.549 4.165 3.971 6.918 3.971 6.102 0 10.032-6.669 6.902-12.033z"/><path d="m357.726 290.51c-3.114-3.114-8.203-3.117-11.32 0-3.116 3.117-3.114 8.206 0 11.32 3.112 3.11 8.197 3.121 11.32 0 3.165-3.188 3.068-8.25 0-11.32z"/></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512.035 512.035" height="512" viewBox="0 0 512.035 512.035" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m160.635 282.678c-.399 3.06-.6 6.17-.6 9.34-35.859 0-62.514 33.291-54.64 68.3-55.9-13.72-97.36-64.17-97.36-124.3 0-70.69 57.31-128 128-128h24c-39.92 8.34-72 45.6-72 88 0 43.35 31.34 79.379 72.6 86.66z" fill="#ffdf81"/><path d="m139.325 276.017h-11.29c-35.859 0-62.514 33.291-54.64 68.3l2.75 4.85c6.486 3.176 14.789 7.592 29.25 11.15-7.864-34.964 18.744-68.3 54.64-68.3 0-3.17.2-6.28.6-9.34-7.348-1.311-14.478-3.509-21.31-6.66z" fill="#ffcd76"/><path d="m160.035 108.017c-14.71 3.07-28.36 10.07-39.72 19.82-90.558 22.603-127.09 132.195-68.42 204.64-26.88-23.46-43.86-57.98-43.86-96.46 0-70.69 57.31-128 128-128z" fill="#f9ecb4"/><path d="m184.045 235.508c.27-26.28 21.65-47.49 47.99-47.49-26.51 0-48-21.49-48-48 0 26.51-21.49 48-48 48 26.34 0 47.73 21.22 47.99 47.5z" fill="#ffcd76"/><path d="m432.035 404.017h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#5989b3"/><path d="m417.135 218.908c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.916 50.225-46.779 86.78-15.201-10.01-25.221-27.22-25.221-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.402 122.233-57.326 165.18-3.9z" fill="#436786"/><path d="m443.637 252.855c-25.196-86.926-138.057-109.482-194.836-39.078-18.043-3.848-37.109-1.421-53.879 7.401 5.928-14.712 20.371-25.161 37.113-25.161 4.418 0 8-3.581 8-8 0-4.418-3.582-8-8-8-22.056 0-40-17.944-40-40 0-4.418-3.582-8-8-8s-8 3.582-8 8c0 22.056-17.944 40-40 40-4.418 0-8 3.582-8 8 0 4.419 3.582 8 8 8 21.631 0 39.429 17.427 39.969 38.971-10.447 10.267-18.101 23.365-21.688 38.046-54.738-15.31-77.633-82.299-39.099-128.676 12.192-14.674 28.69-24.798 46.453-28.509 4.014-.838 6.743-4.575 6.322-8.653-.422-4.078-3.858-7.178-7.958-7.178h-24c-114.113 0-176.619 132.321-106.547 220.53 17.697 22.277 42.194 38.589 69.381 46.311 8.063 26.122 32.432 45.159 61.166 45.159h88c4.418 0 8-3.581 8-8 0-4.418-3.582-8-8-8h-88c-26.468 0-48-21.533-48-48s21.532-48 48-48c4.418 0 8-3.581 8-8 0-35.26 28.681-64 64-64 35.786 0 64 29.266 64 64 0 4.419 3.582 8 8 8s8-3.581 8-8c0-31.505-18.765-59.95-46.817-72.79 52.765-57.536 146.992-31.064 164.288 42.804.798 3.41 3.721 5.904 7.214 6.156 33.261 2.398 59.315 30.436 59.315 63.831 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8 0 4.419 3.582 8 8 8h136c44.112 0 80-35.888 80-80 .001-39.796-29.603-73.504-68.397-79.164zm-278.818-64.816c7.863-4.731 14.479-11.342 19.216-19.202 4.738 7.861 11.352 14.471 19.218 19.203-7.857 4.745-14.475 11.365-19.216 19.229-4.741-7.865-11.358-14.485-19.218-19.23zm-68.755 161.145c-47.653-16.722-80.029-61.699-80.029-113.167 0-61.104 45.906-111.687 105.041-119.072-64.735 47.467-49.382 143.472 22.144 169.322-27.299 7.442-47.684 32.66-47.156 62.917z"/><path d="m272.035 396.017c-4.417 0-8 3.577-8 8 0 4.415 3.575 8 8 8 4.417 0 8-3.578 8-8 0-4.417-3.577-8-8-8z"/><circle cx="144.035" cy="372.017" fill="#436786" r="8"/><circle cx="132.035" cy="360.017" fill="#436786" r="4"/><g fill="#ffcd76"><circle cx="56.035" cy="300.017" r="8"/><circle cx="44.035" cy="288.017" r="4"/></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m222.66 220.6c-35.35 4.58-62.66 34.81-62.66 71.4-20.92 0-39.15 11.46-48.76 28.46-36.313-10.61-63.24-44.243-63.24-84.46 0-48.586 39.399-88 88-88 43.692 0 79.442 31.706 86.66 72.6z" fill="#ffdf81"/><path d="m205.71 182.3c-35.032-27.064-84.728-23.74-115.93 7.48-31.241 31.222-34.517 80.933-7.48 115.93-21.095-16.244-34.3-41.635-34.3-69.71 0-48.586 39.399-88 88-88 28.054 0 53.457 13.194 69.71 34.3z" fill="#f9ecb4"/><path d="m222.66 220.6c-35.35 4.58-62.66 34.81-62.66 71.4-20.92 0-39.15 11.46-48.76 28.46-18.921-5.528-35.498-17.355-46.99-33.51 9.31 7.96 20.29 13.99 32.33 17.51 9.61-17 27.84-28.46 48.76-28.46 0-36.59 27.31-66.82 62.66-71.4-2.31-13.08-7.51-25.16-14.91-35.56 15.486 13.209 26.014 31.411 29.57 51.56z" fill="#ffcd76"/><path d="m432 404h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#add9ff"/><g fill="#d6ecff"><path d="m417.1 218.89c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.917 50.224-46.78 86.78-15.2-10.01-25.22-27.22-25.22-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.325 165.18-3.9z"/><circle cx="144" cy="372" r="8"/><circle cx="132" cy="360" r="4"/></g><circle cx="88" cy="276" fill="#ffcd76" r="8"/><circle cx="76" cy="264" fill="#ffcd76" r="4"/><path d="m443.602 252.838c-25.196-86.926-138.057-109.482-194.836-39.078-6.722-1.433-13.209-1.932-19.768-1.689-3.59-14.029-10.297-26.969-19.701-38.055l28.361-28.36c3.125-3.124 3.125-8.189 0-11.313-3.124-3.124-8.189-3.124-11.313 0l-28.359 28.357c-15.281-12.971-34.006-20.729-53.986-22.367v-32.333c0-4.419-3.581-8-8-8s-8 3.581-8 8v32.333c-19.981 1.638-38.707 9.397-53.986 22.367l-28.357-28.357c-3.124-3.124-8.189-3.124-11.313 0-3.125 3.124-3.125 8.189 0 11.313l28.356 28.358c-12.971 15.28-20.729 34.006-22.367 53.986h-32.333c-4.418 0-8 3.581-8 8s3.582 8 8 8h32.333c1.638 19.982 9.396 38.708 22.367 53.986l-28.357 28.357c-3.125 3.124-3.125 8.189 0 11.313 3.124 3.124 8.189 3.124 11.313 0l28.365-28.365c7.846 6.638 16.716 11.991 26.219 15.811-16.034 41.708 14.888 86.898 59.76 86.898h88c4.419 0 8-3.582 8-8s-3.581-8-8-8h-88c-26.467 0-48-21.533-48-48s21.533-48 48-48c4.419 0 8-3.582 8-8 0-35.29 28.71-64 64-64 35.786 0 64 29.266 64 64 0 4.418 3.582 8 8 8s8-3.582 8-8c0-31.505-18.765-59.95-46.817-72.79 52.83-57.606 147.007-31.003 164.288 42.804.798 3.41 3.721 5.904 7.214 6.156 33.26 2.397 59.315 30.435 59.315 63.83 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8s3.582 8 8 8h136c44.112 0 80-35.888 80-80 0-39.794-29.603-73.503-68.398-79.162zm-291.249 31.616c-18.303 2.189-34.246 12.143-44.461 26.453-53.943-20.263-69.902-90.047-28.453-131.472 43.546-43.571 117.258-23.281 133.571 34.845-32.607 7.968-57.443 35.974-60.657 70.174z"/><circle cx="272" cy="404" r="8"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m424 352c0-30.928-25.072-56-56-56s-56 25.072-56 56c0-30.928-25.072-56-56-56s-56 25.072-56 56c0-30.928-25.072-56-56-56s-56 25.072-56 56v-16c0-101.62 66.38-184 168-184s168 82.38 168 184z" fill="#add9ff"/><path d="m424 336v16c0-30.93-25.07-56-56-56s-56 25.07-56 56c0-30.93-25.07-56-56-56s-56 25.07-56 56v-144c0-30.93 25.07-56 56-56 101.62 0 168 82.38 168 184z" fill="#5989b3"/><path d="m122.86 300.13c-20.45 8.34-34.86 28.42-34.86 51.87v-16c0-109.054 75.918-192.805 184-183.3-80.72 7.13-136.28 68.12-149.14 147.43z" fill="#d6ecff"/><path d="m312 208v144c0-30.93-25.07-56-56-56s-56 25.07-56 56v-144c0-30.93 25.07-56 56-56s56 25.07 56 56z" fill="#99d0ff"/><path d="m384.113 200.608c-66.53-75.616-189.628-75.694-256.227 0-30.879 35.096-47.886 83.179-47.886 135.392v16c0 4.418 3.582 8 8 8s8-3.582 8-8c0-26.467 21.532-48 48-48s48 21.533 48 48c0 4.418 3.582 8 8 8s8-3.582 8-8c0-23.741 17.328-43.5 40-47.32v55.32c0 4.418 3.582 8 8 8s8-3.582 8-8v-55.32c22.672 3.821 40 23.579 40 47.32 0 4.418 3.582 8 8 8s8-3.582 8-8c0-26.467 21.532-48 48-48s48 21.533 48 48c0 4.418 3.582 8 8 8s8-3.582 8-8v-16c0-52.213-17.007-100.296-47.887-135.392zm-286.288 107.12c8.546-65.202 47.475-120.975 108.765-140.359-9.111 11.059-14.59 25.217-14.59 40.631v101.724c-24.83-28.159-68.208-29.069-94.175-1.996zm110.175 1.996v-101.724c0-26.467 21.533-48 48-48s48 21.533 48 48v101.724c-25.565-28.992-70.481-28.939-96 0zm112 0v-101.724c0-15.414-5.478-29.572-14.59-40.632 61.337 19.399 100.221 75.171 108.765 140.359-25.986-27.092-69.364-26.14-94.175 1.997z"/><path d="m256 416c-4.418 0-8 3.582-8 8v48c0 13.234-10.767 24-24 24s-24-10.766-24-24c0-4.418-3.582-8-8-8s-8 3.582-8 8c0 22.056 17.944 40 40 40s40-17.944 40-40v-48c0-4.418-3.582-8-8-8z"/><path d="m112 176c4.418 0 8-3.581 8-8v-160c0-4.418-3.582-8-8-8s-8 3.582-8 8v160c0 4.419 3.582 8 8 8z"/><path d="m400 176c4.418 0 8-3.581 8-8v-160c0-4.418-3.582-8-8-8s-8 3.582-8 8v160c0 4.419 3.582 8 8 8z"/><path d="m160 144c4.418 0 8-3.581 8-8v-96c0-4.418-3.582-8-8-8s-8 3.582-8 8v96c0 4.419 3.582 8 8 8z"/><path d="m352 144c4.418 0 8-3.581 8-8v-96c0-4.418-3.582-8-8-8s-8 3.582-8 8v96c0 4.419 3.582 8 8 8z"/><path d="m208 112c4.418 0 8-3.581 8-8v-96c0-4.418-3.582-8-8-8s-8 3.582-8 8v96c0 4.419 3.582 8 8 8z"/><path d="m256 96c4.418 0 8-3.581 8-8v-80c0-4.418-3.582-8-8-8s-8 3.582-8 8v80c0 4.419 3.582 8 8 8z"/><path d="m304 112c4.418 0 8-3.581 8-8v-96c0-4.418-3.582-8-8-8s-8 3.582-8 8v96c0 4.419 3.582 8 8 8z"/><circle cx="256" cy="120" r="8"/><circle cx="256" cy="392" r="8"/></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m424 352c0-30.928-25.072-56-56-56s-56 25.072-56 56c0-30.928-25.072-56-56-56s-56 25.072-56 56c0-30.928-25.072-56-56-56s-56 25.072-56 56v-16c0-101.62 66.38-184 168-184s168 82.38 168 184z" fill="#add9ff"/><path d="m424 336v16c0-30.93-25.07-56-56-56s-56 25.07-56 56c0-30.93-25.07-56-56-56s-56 25.07-56 56v-144c0-30.93 25.07-56 56-56 101.62 0 168 82.38 168 184z" fill="#5989b3"/><path d="m122.86 300.13c-20.45 8.34-34.86 28.42-34.86 51.87v-16c0-109.054 75.918-192.805 184-183.3-80.72 7.13-136.28 68.12-149.14 147.43z" fill="#d6ecff"/><path d="m312 208v144c0-30.93-25.07-56-56-56s-56 25.07-56 56v-144c0-30.93 25.07-56 56-56s56 25.07 56 56z" fill="#99d0ff"/><path d="m384.113 200.608c-66.53-75.616-189.628-75.694-256.227 0-30.879 35.096-47.886 83.179-47.886 135.392v16c0 4.418 3.582 8 8 8s8-3.582 8-8c0-26.467 21.532-48 48-48s48 21.533 48 48c0 4.418 3.582 8 8 8s8-3.582 8-8c0-23.741 17.328-43.5 40-47.32v55.32c0 4.418 3.582 8 8 8s8-3.582 8-8v-55.32c22.672 3.821 40 23.579 40 47.32 0 4.418 3.582 8 8 8s8-3.582 8-8c0-26.467 21.532-48 48-48s48 21.533 48 48c0 4.418 3.582 8 8 8s8-3.582 8-8v-16c0-52.213-17.007-100.296-47.887-135.392zm-286.288 107.12c8.546-65.202 47.475-120.975 108.765-140.359-9.111 11.059-14.59 25.217-14.59 40.631v101.724c-24.83-28.159-68.208-29.069-94.175-1.996zm110.175 1.996v-101.724c0-26.467 21.533-48 48-48s48 21.533 48 48v101.724c-25.565-28.992-70.481-28.939-96 0zm112 0v-101.724c0-15.414-5.478-29.572-14.59-40.632 61.337 19.399 100.221 75.171 108.765 140.359-25.986-27.092-69.364-26.14-94.175 1.997z"/><path d="m256 416c-4.418 0-8 3.582-8 8v48c0 13.234-10.767 24-24 24s-24-10.766-24-24c0-4.418-3.582-8-8-8s-8 3.582-8 8c0 22.056 17.944 40 40 40s40-17.944 40-40v-48c0-4.418-3.582-8-8-8z"/><path d="m112 176c4.418 0 8-3.581 8-8v-160c0-4.418-3.582-8-8-8s-8 3.582-8 8v160c0 4.419 3.582 8 8 8z"/><path d="m400 176c4.418 0 8-3.581 8-8v-160c0-4.418-3.582-8-8-8s-8 3.582-8 8v160c0 4.419 3.582 8 8 8z"/><path d="m160 144c4.418 0 8-3.581 8-8v-96c0-4.418-3.582-8-8-8s-8 3.582-8 8v96c0 4.419 3.582 8 8 8z"/><path d="m352 144c4.418 0 8-3.581 8-8v-96c0-4.418-3.582-8-8-8s-8 3.582-8 8v96c0 4.419 3.582 8 8 8z"/><path d="m208 112c4.418 0 8-3.581 8-8v-96c0-4.418-3.582-8-8-8s-8 3.582-8 8v96c0 4.419 3.582 8 8 8z"/><path d="m256 96c4.418 0 8-3.581 8-8v-80c0-4.418-3.582-8-8-8s-8 3.582-8 8v80c0 4.419 3.582 8 8 8z"/><path d="m304 112c4.418 0 8-3.581 8-8v-96c0-4.418-3.582-8-8-8s-8 3.582-8 8v96c0 4.419 3.582 8 8 8z"/><circle cx="256" cy="120" r="8"/><circle cx="256" cy="392" r="8"/></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m178.55 135.77c-11.53 12.77-18.55 29.68-18.55 48.23-32.644 0-58.973 27.981-55.72 61.65-54.91-11-96.28-59.5-96.28-117.65 0-66.27 53.73-120 120-120h32c-23.71 9.37-40 36.95-40 64 0 33.52 25.75 61.01 58.55 63.77z" fill="#ffdf81"/><path d="m178.55 135.77c-11.53 12.77-18.55 29.68-18.55 48.23-32.644 0-58.973 27.981-55.72 61.65-8.45-1.69-16.58-4.27-24.28-7.65v-11.65c0-30.93 25.07-56 56-56 0-16.41 5.49-31.54 14.75-43.65 8.22 5.01 17.68 8.22 27.8 9.07z" fill="#ffcd76"/><path d="m160 8c-8.47 3.34-16 9.01-22.17 16.16-99.005 4.997-148.56 121.137-86.3 196.32-26.59-22.01-43.53-55.27-43.53-92.48 0-66.27 53.73-120 120-120z" fill="#f9ecb4"/><circle cx="64" cy="200" fill="#ffcd76" r="8"/><circle cx="52" cy="188" fill="#ffcd76" r="4"/><path d="m432 296h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#5989b3"/><g fill="#436786"><path d="m417.1 110.89c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.917 50.224-46.78 86.78-15.2-10.01-25.22-27.22-25.22-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.325 165.18-3.9z"/><circle cx="144" cy="264" r="8"/><circle cx="132" cy="252" r="4"/></g><path d="m443.602 144.838c-25.197-86.926-138.058-109.482-194.836-39.078-25.612-5.462-53.305 1.775-73.198 21.595-12.522-1.889-24.031-7.962-32.716-17.364-29.377-31.803-10.874-82.315 20.089-94.552 8.178-3.231 5.843-15.439-2.941-15.439h-32c-70.58 0-128 57.42-128 128 0 58.899 40.544 110.273 97.191 124.261 5.738 29.443 31.713 51.739 62.809 51.739h88c4.419 0 8-3.582 8-8s-3.581-8-8-8h-88c-26.467 0-48-21.533-48-48s21.533-48 48-48c4.419 0 8-3.581 8-8 0-35.29 28.71-64 64-64 35.739 0 64 29.216 64 64 0 4.419 3.582 8 8 8s8-3.581 8-8c0-31.505-18.765-59.95-46.817-72.79 52.83-57.606 147.007-31.003 164.288 42.804.798 3.41 3.721 5.904 7.214 6.156 33.26 2.397 59.315 30.435 59.315 63.83 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8s3.582 8 8 8h136c44.112 0 80-35.888 80-80 0-39.794-29.603-73.503-68.398-79.162zm-291.249 31.616c-30.202 3.611-53.992 28.345-56.172 58.958-47.007-13.889-80.181-57.57-80.181-107.412 0-61.757 50.243-112 112-112h6.497c-40.491 42.037-23.726 110.163 29.894 125.29-6.57 10.361-10.831 22.324-12.038 35.164z"/><path d="m277.66 301.66c3.113-3.115 3.115-8.203 0-11.32-3.114-3.114-8.203-3.117-11.32 0-3.114 3.114-3.117 8.203 0 11.32 3.115 3.115 8.203 3.117 11.32 0z"/><path d="m157.122 337.854c-3.395-2.828-8.439-2.37-11.268 1.024l-80 96c-4.362 5.236-.567 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m445.121 337.854c-3.393-2.828-8.438-2.371-11.267 1.024l-80 96c-4.37 5.243-.554 13.122 6.142 13.122 2.292 0 4.567-.98 6.149-2.878l80-96c2.83-3.395 2.371-8.439-1.024-11.268z"/><path d="m157.122 401.854c-3.395-2.829-8.439-2.371-11.268 1.024l-80 96c-4.362 5.236-.567 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m445.121 401.854c-3.393-2.828-8.438-2.372-11.267 1.024l-80 96c-4.37 5.243-.554 13.122 6.142 13.122 2.292 0 4.567-.98 6.149-2.878l80-96c2.83-3.395 2.371-8.439-1.024-11.268z"/><path d="m325.657 370.343c-3.125-3.124-8.189-3.124-11.314 0l-29.658 29.657h-20.685v-20.685l29.657-29.658c3.124-3.124 3.124-8.189 0-11.313-3.125-3.124-8.189-3.124-11.314 0l-18.343 18.342v-12.686c0-4.418-3.582-8-8-8-4.419 0-8 3.582-8 8v12.686l-18.343-18.343c-3.124-3.124-8.189-3.124-11.313 0-3.125 3.124-3.125 8.189 0 11.313l29.656 29.658v20.686h-20.686l-29.657-29.657c-3.124-3.124-8.189-3.124-11.313 0-3.125 3.124-3.125 8.189 0 11.313l18.342 18.344h-12.686c-4.419 0-8 3.582-8 8s3.581 8 8 8h12.686l-18.343 18.343c-3.125 3.124-3.125 8.189 0 11.313 3.124 3.124 8.189 3.124 11.313 0l29.658-29.656h20.686v20.686l-29.657 29.657c-3.125 3.124-3.125 8.189 0 11.313 3.124 3.124 8.189 3.124 11.313 0l18.344-18.341v12.685c0 4.418 3.581 8 8 8 4.418 0 8-3.582 8-8v-12.685l18.343 18.342c3.125 3.125 8.189 3.124 11.314 0 3.124-3.124 3.124-8.189 0-11.313l-29.657-29.658v-20.686h20.685l29.657 29.657c1.563 1.562 3.609 2.343 5.657 2.343 7.061 0 10.714-8.6 5.657-13.657l-18.342-18.343h12.686c4.418 0 8-3.582 8-8s-3.582-8-8-8h-12.686l18.344-18.343c3.123-3.124 3.123-8.19-.001-11.314z"/></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m214.9 114.05c-31.51 7.67-54.9 36.08-54.9 69.95-21.63 0-40.39 12.26-49.71 30.21-40.11-8.19-70.29-43.68-70.29-86.21 0-48.6 39.4-88 88-88 43.85 0 80.21 32.08 86.9 74.05z" fill="#ffdf81"/><path d="m197.71 74.3c-57.028-44.086-141.71-3.868-141.71 69.7 0 20.21 6.82 38.84 18.29 53.7-20.86-16.08-34.29-41.33-34.29-69.7 0-48.6 39.4-88 88-88 28.38 0 53.63 13.44 69.71 34.3z" fill="#f9ecb4"/><g fill="#ffcd76"><path d="m214.9 114.05c-31.51 7.67-54.9 36.08-54.9 69.95-21.63 0-40.39 12.26-49.71 30.21-21.04-4.3-39.35-16.11-52-32.51 10.4 8.04 22.65 13.79 36 16.51 9.32-17.95 28.08-30.21 49.71-30.21 0-33.87 23.39-62.28 54.9-69.95-2.36-14.81-8.41-28.38-17.19-39.75 17.37 13.39 29.59 33.14 33.19 55.75z"/><circle cx="88" cy="176" r="8"/><circle cx="76" cy="164" r="4"/></g><path d="m432 296h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#add9ff"/><path d="m417.1 110.89c-46.079-37.029-114.104-28.239-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.917 50.224-46.78 86.78-15.2-10.01-25.22-27.22-25.22-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.325 165.18-3.9z" fill="#d6ecff"/><circle cx="144" cy="264" fill="#d6ecff" r="8"/><circle cx="132" cy="252" fill="#d6ecff" r="4"/><path d="m157.122 337.854c-3.396-2.828-8.439-2.37-11.268 1.024l-80 96c-4.362 5.236-.567 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m445.122 337.854c-3.396-2.828-8.438-2.37-11.268 1.024l-80 96c-4.362 5.235-.566 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m157.122 401.854c-3.396-2.829-8.439-2.371-11.268 1.024l-80 96c-4.362 5.236-.567 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m445.122 401.854c-3.396-2.829-8.438-2.371-11.268 1.024l-80 96c-4.362 5.235-.566 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m325.657 370.343c-3.124-3.124-8.189-3.124-11.313 0l-29.658 29.657h-20.686v-20.686l29.657-29.657c3.125-3.124 3.125-8.189 0-11.313-3.124-3.124-8.189-3.124-11.313 0l-18.344 18.342v-12.686c0-4.418-3.582-8-8-8-4.419 0-8 3.582-8 8v12.686l-18.343-18.343c-3.124-3.124-8.189-3.124-11.313 0s-3.124 8.189 0 11.313l29.656 29.658v20.686h-20.687l-29.657-29.657c-3.124-3.124-8.189-3.124-11.313 0s-3.124 8.189 0 11.313l18.343 18.344h-12.686c-4.419 0-8 3.582-8 8s3.581 8 8 8h12.686l-18.343 18.343c-3.124 3.124-3.124 8.189 0 11.313s8.189 3.124 11.313 0l29.657-29.656h20.687v20.686l-29.657 29.657c-3.124 3.124-3.124 8.189 0 11.313s8.189 3.124 11.313 0l18.344-18.341v12.685c0 4.418 3.581 8 8 8 4.418 0 8-3.582 8-8v-12.685l18.343 18.342c3.124 3.124 8.189 3.124 11.313 0 3.125-3.124 3.125-8.189 0-11.313l-29.656-29.658v-20.686h20.686l29.657 29.657c1.562 1.562 3.609 2.343 5.657 2.343 7.063 0 10.711-8.603 5.657-13.657l-18.343-18.343h12.686c4.418 0 8-3.582 8-8s-3.582-8-8-8h-12.686l18.343-18.343c3.124-3.124 3.124-8.19 0-11.314z"/><path d="m443.602 144.838c-25.199-86.926-138.056-109.483-194.836-39.078-8.889-1.896-18.194-2.298-27.612-1.015-3.557-14.252-10.385-27.501-19.869-38.716l20.372-20.373c3.125-3.124 3.125-8.189 0-11.313-3.124-3.124-8.189-3.124-11.313 0l-20.365 20.365c-15.26-12.914-34.152-20.704-53.979-22.363v-24.345c0-4.418-3.582-8-8-8-4.419 0-8 3.582-8 8v24.336c-20.469 1.697-39.133 9.843-53.955 22.396l-20.388-20.389c-3.124-3.124-8.189-3.124-11.313 0-3.125 3.124-3.125 8.189 0 11.313l20.388 20.388c-12.553 14.823-20.699 33.487-22.396 53.956h-24.336c-4.419 0-8 3.581-8 8s3.581 8 8 8h24.344c1.701 20.253 9.803 38.986 22.418 53.925l-20.418 20.419c-3.125 3.124-3.125 8.189 0 11.313 3.124 3.125 8.189 3.124 11.313 0l20.401-20.401c9.603 8.155 20.855 14.477 33.271 18.36-13.908 41.287 16.926 84.384 60.671 84.384h88c4.419 0 8-3.582 8-8s-3.581-8-8-8h-88c-26.467 0-48-21.533-48-48s21.533-48 48-48c4.418 0 8-3.581 8-8 0-35.29 28.71-64 64-64 35.786 0 64 29.266 64 64 0 4.419 3.582 8 8 8s8-3.581 8-8c0-31.505-18.765-59.95-46.817-72.79 52.764-57.536 146.995-31.065 164.288 42.804.798 3.41 3.722 5.904 7.214 6.156 33.26 2.397 59.315 30.435 59.315 63.83 0 35.29-28.71 64-64 64h-136c-4.418 0-8 3.582-8 8s3.582 8 8 8h136c44.112 0 80-35.888 80-80 0-39.794-29.603-73.503-68.398-79.162zm-291.249 31.616c-19.198 2.296-35.8 13.133-45.918 28.581-34.172-9.541-58.435-41.071-58.435-77.035 0-68.375 80.706-104.958 132.165-60.651 12.567 10.821 21.438 25.237 25.434 41.137-28.902 10.133-50.28 36.412-53.246 67.968z"/><path d="m277.66 301.66c3.115-3.114 3.117-8.203 0-11.32-3.116-3.116-8.207-3.114-11.32 0-3.114 3.114-3.117 8.203 0 11.32 3.114 3.115 8.203 3.117 11.32 0z"/></svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512.012 512.012" height="512" viewBox="0 0 512.012 512.012" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m178.556 135.77c-11.53 12.77-18.55 29.68-18.55 48.23-32.644 0-58.973 27.981-55.72 61.65-54.91-11-96.28-59.5-96.28-117.65 0-66.27 53.73-120 120-120h32c-23.71 9.37-40 36.95-40 64 0 33.52 25.75 61.01 58.55 63.77z" fill="#ffdf81"/><path d="m178.556 135.77c-11.53 12.77-18.55 29.68-18.55 48.23-32.644 0-58.973 27.981-55.72 61.65-8.45-1.69-16.58-4.27-24.28-7.65v-11.65c0-30.93 25.07-56 56-56 0-16.41 5.49-31.54 14.75-43.65 8.22 5.01 17.68 8.22 27.8 9.07z" fill="#ffcd76"/><path d="m160.006 8c-8.47 3.34-16 9.01-22.17 16.16-99.005 4.997-148.56 121.137-86.3 196.32-26.59-22.01-43.53-55.27-43.53-92.48 0-66.27 53.73-120 120-120h32z" fill="#f9ecb4"/><path d="m432.006 296h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#5989b3"/><path d="m417.106 110.89c-46.084-37.033-114.11-28.233-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.917 50.224-46.78 86.78-15.2-10.01-25.22-27.22-25.22-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.324 165.18-3.9z" fill="#436786"/><path d="m296.006 248-112 144h64l-48 112 128-144h-64z" fill="#ffdf81"/><path d="m443.608 144.838c-25.198-86.926-138.056-109.483-194.836-39.078-25.611-5.462-53.305 1.775-73.198 21.595-12.522-1.889-24.031-7.961-32.716-17.363-29.377-31.803-10.874-82.315 20.089-94.552 8.178-3.232 5.843-15.44-2.941-15.44h-32c-70.58 0-128 57.42-128 128 0 58.899 40.544 110.273 97.191 124.261 5.738 29.443 31.713 51.739 62.809 51.739h82.31l-64.624 83.088c-4.081 5.247-.329 12.912 6.315 12.912h51.868l-43.221 100.849c-3.582 8.358 7.409 15.129 13.332 8.466l128-144c4.575-5.147.913-13.315-5.979-13.315h-53.394l13.714-48h143.68c44.112 0 80-35.888 80-80-.001-39.794-29.604-73.503-68.399-79.162zm-427.602-16.838c0-61.757 50.243-112 112-112h6.497c-40.491 42.037-23.727 110.164 29.894 125.29-6.569 10.362-10.831 22.324-12.038 35.165-30.197 3.611-53.983 28.336-56.171 58.942-47.003-13.892-80.182-57.557-80.182-107.397zm294.185 240-83.413 93.839 28.581-66.688c2.259-5.269-1.611-11.151-7.353-11.151h-47.643l76.607-98.495-20.656 72.297c-1.46 5.11 2.385 10.198 7.692 10.198zm121.815-80h-139.108l10.801-37.802c2.407-8.427-8.629-14.023-14.007-7.109l-34.932 44.911h-94.754c-25.873 0-46.683-20.472-47.939-45.58-1.373-27.51 20.63-50.42 47.939-50.42 4.418 0 8-3.581 8-8 0-35.29 28.71-64 64-64 35.776 0 64 29.257 64 64 0 4.419 3.581 8 8 8 4.418 0 8-3.581 8-8 0-31.505-18.765-59.95-46.817-72.79 52.766-57.537 146.993-31.076 164.288 42.804.798 3.41 3.722 5.904 7.214 6.156 33.261 2.398 59.315 30.436 59.315 63.831 0 35.289-28.71 63.999-64 63.999z"/><path d="m157.128 321.854c-3.396-2.829-8.439-2.37-11.268 1.024l-80 96c-4.369 5.245-.553 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m445.128 321.854c-3.396-2.829-8.439-2.37-11.268 1.024l-80 96c-4.369 5.244-.553 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m157.128 385.854c-3.396-2.828-8.439-2.37-11.268 1.024l-80 96c-4.369 5.245-.553 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m445.128 385.854c-3.396-2.828-8.439-2.37-11.268 1.024l-80 96c-4.369 5.244-.553 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><circle cx="64.006" cy="200" fill="#ffcd76" r="8"/><circle cx="52.006" cy="188" fill="#ffcd76" r="4"/><g fill="#436786"><circle cx="144.006" cy="264" r="8"/><circle cx="132.006" cy="252" r="4"/></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -0,0 +1 @@
<svg id="Layer_1" enable-background="new 0 0 512.012 512.012" height="512" viewBox="0 0 512.012 512.012" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m214.906 114.05c-31.51 7.67-54.9 36.08-54.9 69.95-21.63 0-40.39 12.26-49.71 30.21-40.11-8.19-70.29-43.68-70.29-86.21 0-48.6 39.4-88 88-88 43.85 0 80.21 32.08 86.9 74.05z" fill="#ffdf81"/><path d="m197.716 74.3c-57.028-44.086-141.71-3.868-141.71 69.7 0 20.21 6.82 38.84 18.29 53.7-20.86-16.08-34.29-41.33-34.29-69.7 0-48.6 39.4-88 88-88 28.38 0 53.63 13.44 69.71 34.3z" fill="#f9ecb4"/><path d="m214.906 114.05c-31.51 7.67-54.9 36.08-54.9 69.95-21.63 0-40.39 12.26-49.71 30.21-21.04-4.3-39.35-16.11-52-32.51 10.4 8.04 22.65 13.79 36 16.51 9.32-17.95 28.08-30.21 49.71-30.21 0-33.87 23.39-62.28 54.9-69.95-2.36-14.81-8.41-28.38-17.19-39.75 17.37 13.39 29.59 33.14 33.19 55.75z" fill="#ffcd76"/><path d="m432.006 296h-272c-30.93 0-56-25.07-56-56s25.07-56 56-56c0-47.91 45.994-82.413 91.92-69.21 52.411-71.932 165.158-48.807 185.34 37.4 37.31 2.69 66.74 33.82 66.74 71.81 0 39.76-32.24 72-72 72z" fill="#add9ff"/><path d="m417.106 110.89c-46.084-37.033-114.11-28.233-149.18 19.9-46.024-13.231-91.92 21.386-91.92 69.21-45.061 0-70.917 50.224-46.78 86.78-15.2-10.01-25.22-27.22-25.22-46.78 0-30.93 25.07-56 56-56 0-47.91 45.994-82.413 91.92-69.21 40.366-55.401 122.233-57.324 165.18-3.9z" fill="#d6ecff"/><path d="m296.006 248-112 144h64l-48 112 128-144h-64z" fill="#ffdf81"/><path d="m443.608 144.838c-25.199-86.926-138.056-109.483-194.836-39.078-8.889-1.896-18.194-2.298-27.612-1.015-3.557-14.252-10.385-27.501-19.869-38.716l20.372-20.373c3.125-3.124 3.125-8.189 0-11.313-3.124-3.124-8.189-3.124-11.313 0l-20.365 20.365c-15.259-12.914-34.151-20.705-53.978-22.363v-24.345c0-4.418-3.582-8-8-8-4.419 0-8 3.582-8 8v24.336c-20.469 1.697-39.133 9.843-53.955 22.396l-20.389-20.389c-3.124-3.124-8.189-3.124-11.313 0-3.125 3.124-3.125 8.189 0 11.313l20.388 20.388c-12.553 14.823-20.699 33.487-22.396 53.956h-24.336c-4.419 0-8 3.581-8 8s3.581 8 8 8h24.344c1.701 20.253 9.803 38.986 22.418 53.925l-20.418 20.419c-3.125 3.124-3.125 8.189 0 11.313 3.124 3.125 8.189 3.124 11.313 0l20.401-20.401c9.603 8.155 20.855 14.477 33.271 18.36-13.908 41.287 16.926 84.384 60.671 84.384h82.31l-64.625 83.088c-4.081 5.247-.329 12.912 6.315 12.912h51.868l-43.221 100.849c-3.582 8.358 7.409 15.129 13.332 8.466l128-144c4.575-5.147.913-13.315-5.979-13.315h-53.394l13.714-48h143.68c44.112 0 80-35.888 80-80 0-39.794-29.603-73.503-68.398-79.162zm-395.602-16.838c0-68.375 80.706-104.958 132.165-60.651 12.567 10.821 21.438 25.237 25.434 41.137-28.902 10.134-50.28 36.412-53.246 67.969-19.198 2.296-35.8 13.133-45.918 28.581-34.172-9.542-58.435-41.072-58.435-77.036zm262.185 240-83.413 93.839 28.581-66.688c2.259-5.269-1.611-11.151-7.353-11.151h-47.643l76.607-98.495-20.656 72.297c-1.46 5.111 2.386 10.198 7.692 10.198zm121.815-80h-139.108l10.801-37.802c2.406-8.425-8.627-14.024-14.007-7.109l-34.932 44.911h-94.754c-26.467 0-48-21.533-48-48s21.533-48 48-48c4.418 0 8-3.581 8-8 0-35.29 28.71-64 64-64 35.776 0 64 29.257 64 64 0 4.419 3.581 8 8 8 4.418 0 8-3.581 8-8 0-31.505-18.765-59.95-46.817-72.79 52.766-57.537 146.993-31.076 164.288 42.804.798 3.41 3.722 5.904 7.214 6.156 33.261 2.398 59.315 30.436 59.315 63.831 0 35.289-28.71 63.999-64 63.999z"/><path d="m157.128 321.854c-3.396-2.829-8.438-2.37-11.268 1.024l-80 96c-4.369 5.244-.553 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m445.128 321.854c-3.395-2.829-8.438-2.37-11.268 1.024l-80 96c-4.369 5.244-.553 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m157.128 385.854c-3.396-2.828-8.438-2.37-11.268 1.024l-80 96c-4.369 5.244-.553 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><path d="m445.128 385.854c-3.395-2.828-8.438-2.37-11.268 1.024l-80 96c-4.369 5.244-.553 13.122 6.142 13.122 2.292 0 4.568-.98 6.15-2.878l80-96c2.828-3.395 2.37-8.439-1.024-11.268z"/><circle cx="144.006" cy="264" fill="#d6ecff" r="8"/><circle cx="132.006" cy="252" fill="#d6ecff" r="4"/><g fill="#ffcd76"><circle cx="76.006" cy="164" r="4"/><circle cx="88.006" cy="176" r="8"/></g></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

1224
weather-widget/weather.json Normal file

File diff suppressed because it is too large Load diff

View file

@ -3,225 +3,456 @@
-- https://openweathermap.org/
--
-- @author Pavel Makhov
-- @copyright 2018 Pavel Makhov
-- @copyright 2020 Pavel Makhov
-------------------------------------------------
local socket = require("socket")
local http = require("socket.http")
local ltn12 = require("ltn12")
local awful = require("awful")
local watch = require("awful.widget.watch")
local json = require("json")
local naughty = require("naughty")
local wibox = require("wibox")
local gears = require("gears")
local beautiful = require("beautiful")
local path_to_icons = "/usr/share/icons/Arc/status/symbolic/"
local HOME_DIR = os.getenv("HOME")
local WIDGET_DIR = HOME_DIR .. '/.config/awesome/awesome-wm-widgets/weather-widget'
local GET_FORECAST_CMD = [[bash -c "curl -s --show-error -X GET '%s'"]]
local function show_warning(message)
naughty.notify {
preset = naughty.config.presets.critical,
title = 'Weather Widget',
text = message
}
end
local weather_widget = {}
local warning_shown = false
local notification
local tooltip = awful.tooltip {
mode = 'outside',
preferred_positions = {'bottom'}
}
local weather_popup = awful.popup {
ontop = true,
visible = false,
shape = gears.shape.rounded_rect,
border_width = 1,
border_color = beautiful.bg_focus,
maximum_width = 400,
offset = {y = 5},
widget = {}
}
--- Maps openWeatherMap icon name to file name w/o extension
local icon_map = {
["01d"] = "clear-sky",
["02d"] = "few-clouds",
["03d"] = "scattered-clouds",
["04d"] = "broken-clouds",
["09d"] = "shower-rain",
["10d"] = "rain",
["11d"] = "thunderstorm",
["13d"] = "snow",
["50d"] = "mist",
["01n"] = "clear-sky-night",
["02n"] = "few-clouds-night",
["03n"] = "scattered-clouds-night",
["04n"] = "broken-clouds-night",
["09n"] = "shower-rain-night",
["10n"] = "rain-night",
["11n"] = "thunderstorm-night",
["13n"] = "snow-night",
["50n"] = "mist-night"
}
--- Return wind direction as a string
local function to_direction(degrees)
-- Ref: https://www.campbellsci.eu/blog/convert-wind-directions
if degrees == nil then return "Unknown dir" end
local directions = {
"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW",
"WSW", "W", "WNW", "NW", "NNW", "N"
}
return directions[math.floor((degrees % 360) / 22.5) + 1]
end
--- Convert degrees Celsius to Fahrenheit
local function celsius_to_fahrenheit(c) return c * 9 / 5 + 32 end
-- Convert degrees Fahrenheit to Celsius
local function fahrenheit_to_celsius(f) return (f - 32) * 5 / 9 end
local function gen_temperature_str(temp, fmt_str, show_other_units, units)
local temp_str = string.format(fmt_str, temp)
local s = temp_str .. '°' .. (units == 'metric' and 'C' or 'F')
if (show_other_units) then
local temp_conv, units_conv
if (units == 'metric') then
temp_conv = celsius_to_fahrenheit(temp)
units_conv = 'F'
else
temp_conv = fahrenheit_to_celsius(temp)
units_conv = 'C'
end
local temp_conv_str = string.format(fmt_str, temp_conv)
s = s .. ' ' .. '(' .. temp_conv_str .. '°' .. units_conv .. ')'
end
return s
end
local function uvi_index_color(uvi)
local color
if uvi >= 0 and uvi < 3 then color = '#A3BE8C'
elseif uvi >= 3 and uvi < 6 then color = '#EBCB8B'
elseif uvi >= 6 and uvi < 8 then color = '#D08770'
elseif uvi >= 8 and uvi < 11 then color = '#BF616A'
elseif uvi >= 11 then color = '#B48EAD'
end
return '<span weight="bold" foreground="' .. color .. '">' .. uvi .. '</span>'
end
local function worker(args)
local args = args or {}
local font = args.font or 'Play 9'
local city = args.city or 'Montreal,ca'
local api_key = args.api_key or naughty.notify{preset = naughty.config.presets.critical, text = 'OpenweatherMap API key is not set'}
--- Validate required parameters
if args.coordinates == nil or args.api_key == nil then
show_warning('Required parameters are not set: ' ..
(args.coordinates == nil and '<b>coordinates</b>' or '') ..
(args.api_key == nil and ', <b>api_key</b> ' or ''))
return
end
local coordinates = args.coordinates
local api_key = args.api_key
local font_name = args.font_name or beautiful.font:gsub("%s%d+$", "")
local units = args.units or 'metric'
local time_format_12h = args.time_format_12h
local both_units_widget = args.both_units_widget or false
local both_units_popup = args.both_units_popup or false
local position = args.notification_position or "top_right"
local show_hourly_forecast = args.show_hourly_forecast
local show_daily_forecast = args.show_daily_forecast
local icon_pack_name = args.icons or 'weather-underground-icons'
local icons_extension = args.icons_extension or '.png'
local weather_api_url = (
'https://api.openweathermap.org/data/2.5/weather'
.. '?q=' .. city
.. '&appid=' .. api_key
.. '&units=' .. units
)
local icon_widget = wibox.widget {
{
id = "icon",
resize = false,
widget = wibox.widget.imagebox,
},
layout = wibox.container.margin(_, 0, 0, 3),
set_image = function(self, path)
self.icon.image = path
end,
}
local temp_widget = wibox.widget {
font = font,
widget = wibox.widget.textbox,
}
local owm_one_cal_api =
('https://api.openweathermap.org/data/2.5/onecall' ..
'?lat=' .. coordinates[1] .. '&lon=' .. coordinates[2] .. '&appid=' .. api_key ..
'&units=' .. units .. '&exclude=minutely' ..
(show_hourly_forecast == false and ',hourly' or '') ..
(show_daily_forecast == false and ',daily' or ''))
weather_widget = wibox.widget {
icon_widget,
temp_widget,
{
{
id = 'icon',
resize = true,
widget = wibox.widget.imagebox
},
valign = 'center',
widget = wibox.container.place,
},
{
id = 'txt',
widget = wibox.widget.textbox
},
layout = wibox.layout.fixed.horizontal,
}
--- Maps openWeatherMap icons to Arc icons
local icon_map = {
["01d"] = "weather-clear-symbolic.svg",
["02d"] = "weather-few-clouds-symbolic.svg",
["03d"] = "weather-clouds-symbolic.svg",
["04d"] = "weather-overcast-symbolic.svg",
["09d"] = "weather-showers-scattered-symbolic.svg",
["10d"] = "weather-showers-symbolic.svg",
["11d"] = "weather-storm-symbolic.svg",
["13d"] = "weather-snow-symbolic.svg",
["50d"] = "weather-fog-symbolic.svg",
["01n"] = "weather-clear-night-symbolic.svg",
["02n"] = "weather-few-clouds-night-symbolic.svg",
["03n"] = "weather-clouds-night-symbolic.svg",
["04n"] = "weather-overcast-symbolic.svg",
["09n"] = "weather-showers-scattered-symbolic.svg",
["10n"] = "weather-showers-symbolic.svg",
["11n"] = "weather-storm-symbolic.svg",
["13n"] = "weather-snow-symbolic.svg",
["50n"] = "weather-fog-symbolic.svg"
}
--- Return wind direction as a string.
local function to_direction(degrees)
-- Ref: https://www.campbellsci.eu/blog/convert-wind-directions
if degrees == nil then
return "Unknown dir"
end
local directions = {
"N",
"NNE",
"NE",
"ENE",
"E",
"ESE",
"SE",
"SSE",
"S",
"SSW",
"SW",
"WSW",
"W",
"WNW",
"NW",
"NNW",
"N",
}
return directions[math.floor((degrees % 360) / 22.5) + 1]
end
-- Convert degrees Celsius to Fahrenheit
local function celsius_to_fahrenheit(c)
return c*9/5+32
end
-- Convert degrees Fahrenheit to Celsius
local function fahrenheit_to_celsius(f)
return (f-32)*5/9
end
local weather_timer = gears.timer({ timeout = 60 })
local resp
local function gen_temperature_str(temp, fmt_str, show_other_units)
local temp_str = string.format(fmt_str, temp)
local s = temp_str .. '°' .. (units == 'metric' and 'C' or 'F')
if (show_other_units) then
local temp_conv, units_conv
if (units == 'metric') then
temp_conv = celsius_to_fahrenheit(temp)
units_conv = 'F'
set_image = function(self, path)
self:get_children_by_id('icon')[1].image = path
end,
set_text = function(self, text)
self:get_children_by_id('txt')[1].text = text
end,
is_ok = function(self, is_ok)
if is_ok then
self:get_children_by_id('icon')[1]:set_opacity(1)
self:get_children_by_id('icon')[1]:emit_signal('widget:redraw_needed')
else
temp_conv = fahrenheit_to_celsius(temp)
units_conv = 'C'
self:get_children_by_id('icon')[1]:set_opacity(0.2)
self:get_children_by_id('icon')[1]:emit_signal('widget:redraw_needed')
end
local temp_conv_str = string.format(fmt_str, temp_conv)
s = s .. ' ' .. '('.. temp_conv_str .. '°' .. units_conv .. ')'
end
return s
end
}
local function error_display(resp_json)
weather_timer.timeout = math.min(15 * 60, weather_timer.timeout * 2)
weather_timer:again()
local err_resp = json.decode(resp_json)
naughty.notify{
title = 'Weather Widget Error',
text = err_resp.message,
preset = naughty.config.presets.critical,
}
end
weather_timer:connect_signal("timeout", function ()
local resp_json = {}
local res, status = http.request{
url=weather_api_url,
sink=ltn12.sink.table(resp_json),
-- ref:
-- http://w3.impa.br/~diego/software/luasocket/old/luasocket-2.0/http.html
create=function()
-- ref: https://stackoverflow.com/a/6021774/595220
local req_sock = socket.tcp()
-- 't' — overall timeout
req_sock:settimeout(0.2, 't')
-- 'b' — block timeout
req_sock:settimeout(0.001, 'b')
return req_sock
end
}
if (resp_json ~= nil) then
resp_json = table.concat(resp_json)
local current_weather_widget = wibox.widget {
{
{
{
id = 'icon',
resize = true,
forced_width = 128,
forced_height = 128,
widget = wibox.widget.imagebox
},
align = 'center',
widget = wibox.container.place
},
{
id = 'description',
font = font_name .. ' 10',
align = 'center',
widget = wibox.widget.textbox
},
forced_width = 128,
layout = wibox.layout.align.vertical
},
{
{
{
id = 'temp',
font = font_name .. ' 48',
widget = wibox.widget.textbox
},
{
id = 'feels_like_temp',
align = 'center',
font = font_name .. ' 9',
widget = wibox.widget.textbox
},
layout = wibox.layout.fixed.vertical
},
{
{
id = 'wind',
font = font_name .. ' 9',
widget = wibox.widget.textbox
},
{
id = 'humidity',
font = font_name .. ' 9',
widget = wibox.widget.textbox
},
{
id = 'uv',
font = font_name .. ' 9',
widget = wibox.widget.textbox
},
expand = 'inside',
layout = wibox.layout.align.vertical
},
spacing = 16,
forced_width = 150,
layout = wibox.layout.fixed.vertical
},
forced_width = 300,
layout = wibox.layout.flex.horizontal,
update = function(self, weather)
self:get_children_by_id('icon')[1]:set_image(WIDGET_DIR .. '/icons/' .. icon_pack_name .. '/' .. icon_map[weather.weather[1].icon] .. icons_extension)
self:get_children_by_id('temp')[1]:set_text(gen_temperature_str(weather.temp, '%.0f', false, units))
self:get_children_by_id('feels_like_temp')[1]:set_text('Feels like ' .. gen_temperature_str(weather.feels_like, '%.0f', false, units))
self:get_children_by_id('description')[1]:set_text(weather.weather[1].description)
self:get_children_by_id('wind')[1]:set_markup('Wind: <b>' .. weather.wind_speed .. 'm/s (' .. to_direction(weather.wind_deg) .. ')</b>')
self:get_children_by_id('humidity')[1]:set_markup('Humidity: <b>' .. weather.humidity .. '%</b>')
self:get_children_by_id('uv')[1]:set_markup('UV: ' .. uvi_index_color(weather.uvi))
end
}
if (status ~= 200 and resp_json ~= nil and resp_json ~= '') then
if (not pcall(error_display, resp_json)) then
naughty.notify{
title = 'Weather Widget Error',
text = 'Cannot parse answer',
preset = naughty.config.presets.critical,
local daily_forecast_widget = {
forced_width = 300,
layout = wibox.layout.flex.horizontal,
update = function(self, forecast, timezone_offset)
local count = #self
for i = 0, count do self[i]=nil end
for i, day in ipairs(forecast) do
if i > 5 then break end
local day_forecast = wibox.widget {
{
text = os.date('%a', tonumber(day.dt) + tonumber(timezone_offset)),
align = 'center',
font = font_name .. ' 9',
widget = wibox.widget.textbox
},
{
{
{
image = WIDGET_DIR .. '/icons/' .. icon_pack_name .. '/' .. icon_map[day.weather[1].icon] .. icons_extension,
resize = true,
forced_width = 48,
forced_height = 48,
widget = wibox.widget.imagebox
},
align = 'center',
layout = wibox.container.place
},
{
text = day.weather[1].description,
font = font_name .. ' 8',
align = 'center',
forced_height = 50,
widget = wibox.widget.textbox
},
layout = wibox.layout.fixed.vertical
},
{
{
text = gen_temperature_str(day.temp.day, '%.0f', false, units),
align = 'center',
font = font_name .. ' 9',
widget = wibox.widget.textbox
},
{
text = gen_temperature_str(day.temp.night, '%.0f', false, units),
align = 'center',
font = font_name .. ' 9',
widget = wibox.widget.textbox
},
layout = wibox.layout.fixed.vertical
},
spacing = 8,
layout = wibox.layout.fixed.vertical
}
table.insert(self, day_forecast)
end
elseif (resp_json ~= nil and resp_json ~= '') then
resp = json.decode(resp_json)
icon_widget.image = path_to_icons .. icon_map[resp.weather[1].icon]
temp_widget:set_text(gen_temperature_str(resp.main.temp, '%.0f', both_units_widget))
weather_timer.timeout = 60
weather_timer:again()
end
end)
weather_timer:start()
weather_timer:emit_signal("timeout")
}
--- Notification with weather information. Popups when mouse hovers over the icon
local notification
weather_widget:connect_signal("mouse::enter", function()
notification = naughty.notify{
icon = path_to_icons .. icon_map[resp.weather[1].icon],
icon_size=20,
text =
'<big>' .. resp.weather[1].main .. ' (' .. resp.weather[1].description .. ')</big><br>' ..
'<b>Humidity:</b> ' .. resp.main.humidity .. '%<br>' ..
'<b>Temperature:</b> ' .. gen_temperature_str(resp.main.temp, '%.1f',
both_units_popup) .. '<br>' ..
'<b>Pressure:</b> ' .. resp.main.pressure .. 'hPa<br>' ..
'<b>Clouds:</b> ' .. resp.clouds.all .. '%<br>' ..
'<b>Wind:</b> ' .. resp.wind.speed .. 'm/s (' .. to_direction(resp.wind.deg) .. ')',
timeout = 5, hover_timeout = 10,
position = position,
screen = mouse.screen,
width = (both_units_popup == true and 210 or 200)
local hourly_forecast_graph = wibox.widget {
step_width = 12,
color = '#EBCB8B',
background_color = beautiful.bg_normal,
forced_height = 100,
forced_width = 300,
widget = wibox.widget.graph,
set_max_value = function(self, new_max_value)
self.max_value = new_max_value
end,
set_min_value = function(self, new_min_value)
self.min_value = new_min_value
end
}
local hourly_forecast_widget = {
layout = wibox.layout.fixed.vertical,
update = function(self, hourly)
local hours_below = {
id = 'hours',
layout = wibox.layout.flex.horizontal
}
local temp_below = {
id = 'temp',
forced_width = 300,
layout = wibox.layout.flex.horizontal
}
local max_temp = -1000
local min_temp = 1000
local values = {}
for i, hour in ipairs(hourly) do
if i > 25 then break end
values[i] = hour.temp
if max_temp < hour.temp then max_temp = hour.temp end
if min_temp > hour.temp then min_temp = hour.temp end
if (i - 1) % 5 == 0 then
table.insert(hours_below, wibox.widget {
text = os.date(time_format_12h and '%I%p' or '%H:00', tonumber(hour.dt)),
align = 'center',
font = font_name .. ' 9',
widget = wibox.widget.textbox
})
table.insert(temp_below, wibox.widget {
markup = '<span foreground="#2E3440">' .. string.format('%.0f', hour.temp) .. '°' .. '</span>',
align = 'center',
font = font_name .. ' 9',
widget = wibox.widget.textbox
})
end
end
hourly_forecast_graph:set_max_value(max_temp)
hourly_forecast_graph:set_min_value(min_temp * 0.7) -- move graph a bit up
for i, value in ipairs(values) do
hourly_forecast_graph:add_value(value)
end
local count = #self
for i = 0, count do self[i]=nil end
table.insert(self, temp_below)
table.insert(self, wibox.widget{
{
hourly_forecast_graph,
reflection = {horizontal = true},
widget = wibox.container.mirror
},
{
temp_below,
valign = 'bottom',
widget = wibox.container.place
},
id = 'graph',
layout = wibox.layout.stack
})
table.insert(self, hours_below)
end
}
local function update_widget(widget, stdout, stderr)
if stderr ~= '' then
if not warning_shown then
show_warning(stderr)
warning_shown = true
widget:is_ok(false)
tooltip:add_to_object(widget)
widget:connect_signal('mouse::enter', function() tooltip.text = stderr end)
end
return
end
warning_shown = false
tooltip:remove_from_object(widget)
widget:is_ok(true)
local result = json.decode(stdout)
widget:set_image(WIDGET_DIR .. '/icons/' .. icon_pack_name .. '/' .. icon_map[result.current.weather[1].icon] .. icons_extension)
widget:set_text(gen_temperature_str(result.current.temp, '%.0f', both_units_widget, units))
current_weather_widget:update(result.current)
local final_widget = {
current_weather_widget,
spacing = 16,
layout = wibox.layout.fixed.vertical
}
end)
weather_widget:connect_signal("mouse::leave", function()
naughty.destroy(notification)
end)
if show_hourly_forecast then
hourly_forecast_widget:update(result.hourly)
table.insert(final_widget, hourly_forecast_widget)
end
if show_daily_forecast then
daily_forecast_widget:update(result.daily, result.timezone_offset)
table.insert(final_widget, daily_forecast_widget)
end
weather_popup:setup({
{
final_widget,
margins = 10,
widget = wibox.container.margin
},
bg = beautiful.bg_normal,
widget = wibox.container.background
})
end
weather_widget:buttons(awful.util.table.join(awful.button({}, 1, function()
if weather_popup.visible then
weather_popup.visible = not weather_popup.visible
else
weather_popup:move_next_to(mouse.current_widget_geometry)
end
end)))
-- watch('cat /home/pmakhov/.config/awesome/awesome-wm-widgets/weather-widget/weather.json', 5, update_widget, weather_widget)
watch(string.format(GET_FORECAST_CMD, owm_one_cal_api), 5, update_widget, weather_widget)
return weather_widget
end
return setmetatable(weather_widget, { __call = function(_, ...)
return worker(...)
end })
return setmetatable(weather_widget, {__call = function(_, ...) return worker(...) end})