Compare commits

...
118 Commits
Author SHA1 Message Date
grossmj 0561aba927 Release v2.2.47 2024-05-15 12:14:48 +07:00
grossmj 86a78f53cb Fix update-bundled-web-ui.sh script 2024-05-15 12:05:43 +07:00
grossmj f0bc74ff6e Bundle web-ui v2.2.47 2024-05-15 12:04:34 +07:00
grossmj f81128f717 Bundle web-ui v2.2.47 2024-05-15 11:55:47 +07:00
grossmj 9ce505cad3 Sync appliances 2024-05-15 11:43:04 +07:00
Jeremy Grossmann 6b8635f7d5 Merge pull request #2380 from GNS3/drop-python3.7
Drop Python 3.7
2024-05-09 19:10:04 +07:00
grossmj 388ffe9f00 Change sentry-sdk version 2024-05-09 19:03:08 +07:00
grossmj d01129a3cf Upgrade aiohttp, sentry-sdk and truststore 2024-05-09 18:58:37 +07:00
grossmj 535ea0ad9f Upgrade jsonschema and aiohttp 2024-05-09 18:37:40 +07:00
grossmj ccb5de6df1 Drop Python 3.7 2024-05-09 18:23:58 +07:00
Jeremy Grossmann cdcfc652db Merge pull request #2379 from GNS3/fix-warnings-in-tests
Fix warnings in tests
2024-05-09 18:13:13 +07:00
grossmj 7030dadbcb Remove dev requirements for Python 3.6 2024-05-09 18:04:19 +07:00
grossmj 46a9fdb61d Remove event_loop 2024-05-09 17:53:02 +07:00
grossmj 9958b876cf Do not run Docker VM tests on Windows 2024-05-09 17:36:58 +07:00
grossmj 259d3a0155 Fix cannot import UTC 2024-05-09 17:23:32 +07:00
grossmj 33499be425 Fix warnings in tests 2024-05-09 17:11:12 +07:00
grossmj 3fd44f5260 Do not wait for the server to close when shutting down. 2024-05-09 16:37:45 +07:00
grossmj c076275bd0 Fix test create image with not supported characters by filesystem. Fixes #2375 2024-05-09 16:01:55 +07:00
grossmj 081447ba2e Fix tests. Ref #2376 2024-05-09 15:37:42 +07:00
grossmj 3df7af12e1 Allow listing x86_64 IOU images. Fixes #2376 2024-05-09 15:21:05 +07:00
grossmj d9e4ce5639 Upgrade Jinja2 to version 3.1.4. Fixes #2378 2024-05-08 18:08:00 +07:00
grossmj 35b75f0f7f Fix link capture for ATM switch. Fixes https://github.com/GNS3/gns3-gui/issues/3570 2024-04-23 18:35:36 +07:00
grossmj 2609849507 Fix tests after updating error message when busybox is not installed. 2024-04-23 18:00:37 +07:00
grossmj 448b94f701 Add more details to error message when busybox is not installed. Fixes https://github.com/GNS3/gns3-gui/issues/3569 2024-04-23 17:54:06 +07:00
grossmj 18002a7580 Fix invalid escape sequences 2024-04-23 16:52:28 +07:00
Jeremy Grossmann 1414bdcadf Merge pull request #2369 from GNS3/feature/nat-symbols
NAT symbols
2024-04-22 19:00:19 +07:00
grossmj b6e68ba1a8 Add NAT symbols 2024-04-22 18:51:29 +07:00
grossmj 7a229e33f9 Sync appliances 2024-04-07 12:43:15 +07:00
grossmj 5b1ba5a57c Fix cannot stop Docker VM while console connection is still active. 2024-04-04 22:57:33 +07:00
grossmj a80aed5420 Development on 2.2.47.dev1 2024-03-05 01:07:16 +08:00
grossmj a53fd2e8b1 Upgrade sentry-sdk to version 1.40.6 2024-03-05 00:45:26 +08:00
grossmj e8a7e80456 Release v2.2.46 2024-02-26 16:55:12 +08:00
grossmj ab05784c33 Sync appliances 2024-02-26 16:45:37 +08:00
grossmj 6983e686ca Bundle web-ui v2.2.46 2024-02-26 16:42:46 +08:00
grossmj 3631202ce5 Merge remote-tracking branch 'origin/2.2' into 2.2 2024-02-26 16:36:21 +08:00
grossmj 8d8a3247c4 Bundle web-ui v2.2.46 2024-02-26 16:35:47 +08:00
Jeremy Grossmann d100a132d6 Merge pull request #2360 from GNS3/bugfix/3555
Fix export project
2024-02-26 16:27:39 +08:00
Jeremy Grossmann 52638a9a8d Merge branch '2.2' into bugfix/3555 2024-02-26 16:22:15 +08:00
grossmj 9a5af82a28 Save empty directories when exporting a project 2024-02-24 19:02:16 +08:00
Jeremy Grossmann 14a618766d Merge pull request #2359 from GNS3/bugfix/2357
Fix Docker VM hasn't access to all resources
2024-02-22 19:37:55 +08:00
grossmj 0137688ba7 Test busybox is installed 2024-02-22 13:05:48 +08:00
grossmj 84db3b9996 Fix not all Docker resources are copied to a writable location 2024-02-22 12:59:44 +08:00
Jeremy Grossmann 0a08031d85 Merge pull request #2355 from GNS3/refactor/busybox
Install Docker resources in writable location
2024-02-14 16:18:25 +08:00
grossmj 1a53c9aabf Backport from v3: install Docker resources in a writable location at runtime. 2024-02-14 16:13:45 +08:00
grossmj 1f5085608c Use Docker API v1.24 to get version. 2024-02-14 15:40:19 +08:00
Jeremy Grossmann 16f72b4d3d Merge pull request #2347 from SpikefishSolutions/DeadTelnetConsoleFix
Address the telnet console death bug.
2024-02-09 20:33:16 +11:00
grossmj 3ced41633f Upgrade dependencies 2024-02-09 17:07:35 +11:00
Jeremy Grossmann 4fa10be5aa Merge pull request #2353 from GNS3/feature/drop-python-3.6
Drop Python 3.6 support
2024-02-09 17:01:40 +11:00
grossmj f050fc7e00 Change runtime checks for Python version 2024-02-09 16:49:58 +11:00
grossmj c93aafc9af Fix aiohttp dependency for Python 3.7 2024-02-09 16:45:46 +11:00
grossmj 93520b4d6c Do not test with Python 3.6 2024-02-09 16:34:44 +11:00
grossmj 1fb0260ae6 Drop support for Python 3.6 2024-02-09 16:28:23 +11:00
John Fleming 763ef24108 Address the telnet console bug. Add wait_for for drain() call. If we're stuck on drain then the buffer isn't getting emptied. 5 seconds after drain() blocks, exception will be thrown and client will be removed from connection table and will no longer be a problem. 2024-02-02 22:09:31 -05:00
grossmj 17aabd6cda Merge branch 'master' into 2.2 2024-01-28 20:04:19 +11:00
grossmj d94adf4c8f Merge remote-tracking branch 'origin/master' 2024-01-28 19:56:40 +11:00
Jeremy Grossmann 4dd9cf2da2 Merge pull request #2340 from spikefishjohn/patch-3
Update telnet_server.py
2024-01-28 19:56:26 +11:00
grossmj e2a3d391d8 Merge remote-tracking branch 'origin/2.2' into 2.2 2024-01-28 12:14:28 +11:00
John Fleming 6c5f54fe57 Update telnet_server.py
Maybe use the correct object name this time for the socket objects.
2024-01-28 12:14:07 +11:00
John Fleming 082fbee1bd Update telnet_server.py
Set tcp keepalive timers to 60 seconds. Seems to default to 2 hours on ubuntu 22. Most firewalls will age out an idle tcp session at 1 hour.

Will not address telnet console failing after a tcp session has failed (TimeoutError).
2024-01-28 12:14:07 +11:00
Xatrekak 6d97feaced Fixed updating system and GNS3. 2024-01-28 12:14:01 +11:00
Dustin 8d35089661 Update welcome.py
Fixed an issue where the shell option in dialog failed to drop you back to bash.
2024-01-28 12:13:55 +11:00
Dustin 6455f62447 Update remote-install.sh
Removed an extra slash at the end when setting the user home directory. This was causing unexpected behavior for other scrips as ~ was aliased to /opt/gns3/ instead of the expected  /opt/gns3.

This caused an extra / to appear in commands unexpectedly.
2024-01-28 12:13:55 +11:00
grossmj 2fb3b1ebab Use Python 3.8 to publish API doc 2024-01-28 12:13:46 +11:00
grossmj 58399a9fa8 Upgrade sentry-sdk, psutil and distro dependencies 2024-01-28 12:13:12 +11:00
grossmj 907b305ecf Development on 2.2.46.dev1 2024-01-28 12:13:12 +11:00
grossmj 57f92db124 Release v2.2.45 2024-01-28 12:13:12 +11:00
grossmj 0f6f943a83 Bundle web-ui v2.2.45 2024-01-28 12:13:12 +11:00
grossmj 2cb76b2274 Remove old web-ui files 2024-01-28 12:13:11 +11:00
grossmj 2d2db52a8b Bundle web-ui v2.2.45 2024-01-28 12:13:11 +11:00
grossmj a8d0818e07 Sync appliances 2024-01-28 12:13:11 +11:00
grossmj f7eb2492d9 Fix mouse offset issues with VNC in Qemu. Fixes #2335 2024-01-28 12:13:11 +11:00
grossmj 218522b08c Fix issues when generating docs 2024-01-28 12:13:10 +11:00
grossmj 470f13f448 Update readthedocs.yml to use Python 3.12 2024-01-28 12:13:10 +11:00
grossmj 317aa669ac Update readthedocs.yml 2024-01-28 12:13:10 +11:00
grossmj 8d160ad5ed Update documentation 2024-01-28 12:13:10 +11:00
grossmj e3493870b2 Add project.created, project.opened and project.deleted controller notification stream.
Move project.updated and project.closed from project notification to controller notification stream.
2024-01-28 12:13:09 +11:00
grossmj d466c85385 Do not stop searching for Qemu binaries if one binary cannot be executed. Ref #2306 2024-01-28 12:13:09 +11:00
grossmj 35d4391fc0 Fix Ethernet switch and Ethernet hub port validations. Fixes #2334 2024-01-28 12:13:09 +11:00
grossmj eea0ab69bd Bundle dev version of the web-ui 2024-01-28 12:13:09 +11:00
grossmj 22ade94118 Update CORS policy 2024-01-28 12:13:08 +11:00
grossmj 08ee40548f Add custom executable paths on Windows 2024-01-28 12:13:08 +11:00
grossmj 7f05a06766 Upgrade sentry-sdk and aiohttp 2024-01-28 12:13:08 +11:00
grossmj 9fd2f58ef7 Development in 2.2.45.dev3 2024-01-28 12:13:08 +11:00
grossmj b9b802ebab Release v2.2.44.1 2024-01-28 12:13:08 +11:00
grossmj 1d86e322e9 Do not compute checksums on macOS 2024-01-28 12:13:07 +11:00
grossmj 8eb5f10971 Add multiprocessing.set_start_method() 2024-01-28 12:13:07 +11:00
grossmj cc4783ab98 Bump version to v2.2.45.dev2 2024-01-28 12:13:07 +11:00
grossmj 19792f328d Have freeze support for macOS as well 2024-01-28 12:13:07 +11:00
grossmj 596d1274a3 Catch exceptions when computing image checksums. Ref https://github.com/GNS3/gns3-server/issues/2228 2024-01-28 12:13:07 +11:00
grossmj 2f765747b8 Add freeze_support() for multiprocessing 2024-01-28 12:13:06 +11:00
grossmj 4fe57b6a15 Development on 2.2.45.dev1 2024-01-28 12:13:06 +11:00
grossmj 1177626a53 Release v2.2.44 2024-01-28 12:13:06 +11:00
grossmj c4cc346864 Sync appliances 2024-01-28 12:13:06 +11:00
grossmj 8915dfffa5 Bundle web-ui v2.2.44 2024-01-28 12:13:05 +11:00
grossmj ff027ebd17 Upgrade sentry-sdk 2024-01-28 12:13:05 +11:00
grossmj 27d5ac537f Non-blocking checksums computation when server starts. Fixes #2228 2024-01-28 12:13:05 +11:00
grossmj fe246cd413 Fix timeout issue when creating Qemu disk image. Fixes https://github.com/GNS3/gns3-server/issues/2313 2024-01-28 12:13:05 +11:00
grossmj 2bbb560b8e Support for web socket console over HTTPS 2024-01-28 12:13:04 +11:00
grossmj 1624c7d6ad Add back script create_cert.sh 2024-01-28 12:13:04 +11:00
grossmj 2a3bb81076 Bundle web-ui 2024-01-28 12:13:04 +11:00
grossmj e0a0dd83d7 Use Python 3.8 in appveyor.yml 2024-01-28 12:13:04 +11:00
grossmj 16ea395618 Upgrade sentry-sdk, psutil and distro dependencies 2024-01-27 17:04:02 +11:00
Jeremy Grossmann 9dd8da4f6e Merge pull request #2340 from spikefishjohn/patch-3
Update telnet_server.py
2024-01-26 17:55:11 +11:00
John Fleming 54abf85523 Update telnet_server.py
Maybe use the correct object name this time for the socket objects.
2024-01-25 01:41:57 -05:00
Jeremy Grossmann 385fffec56 Merge pull request #2339 from spikefishjohn/patch-2
Update telnet_server.py
2024-01-24 11:53:59 +11:00
John Fleming ac86717bc0 Update telnet_server.py
Set tcp keepalive timers to 60 seconds. Seems to default to 2 hours on ubuntu 22. Most firewalls will age out an idle tcp session at 1 hour.

Will not address telnet console failing after a tcp session has failed (TimeoutError).
2024-01-23 13:15:17 -05:00
grossmj 7b7af33920 Development on 2.2.46.dev1 2024-01-14 23:45:35 +11:00
Jeremy Grossmann 85fd3ef4a4 Merge pull request #2338 from GNS3/2.2
Release v2.2.45
2024-01-14 22:02:14 +11:00
Jeremy Grossmann de27a57a00 Merge pull request #2322 from GNS3/release-v2.2.44.1
Release v2.2.44.1
2023-11-07 18:35:29 +10:00
Jeremy Grossmann 46d9ada6d8 Merge pull request #2321 from Xatrekak/master
Fixed updating system and GNS3 via welcome.py.
2023-11-07 10:49:00 +10:00
Xatrekak 76bd5921c5 Fixed updating system and GNS3. 2023-11-06 19:02:29 -05:00
Jeremy Grossmann af3a618306 Merge pull request #2316 from GNS3/release-v2.2.44
Release v2.2.44
2023-11-06 17:05:54 +10:00
Jeremy Grossmann 531499bbfb Merge pull request #2314 from Xatrekak/master
[Fix] an issue where the shell option in dialog failed to drop you back to bash.
2023-11-06 13:01:35 +10:00
Dustin 7ad3afbdef Update welcome.py
Fixed an issue where the shell option in dialog failed to drop you back to bash.
2023-11-05 13:35:06 -05:00
Jeremy Grossmann 0e18762b36 Merge pull request #2308 from Xatrekak/master
Update remote-install.sh
2023-10-31 09:19:55 +10:00
Dustin cbc7e59d3f Update remote-install.sh
Removed an extra slash at the end when setting the user home directory. This was causing unexpected behavior for other scrips as ~ was aliased to /opt/gns3/ instead of the expected  /opt/gns3.

This caused an extra / to appear in commands unexpectedly.
2023-10-30 11:00:45 -04:00
Jeremy Grossmann 5a6e945db2 Merge pull request #2304 from GNS3/upgrade-python-api-doc
Upgrade to Python 3.8 for API doc publishing
2023-10-27 14:46:52 +10:00
grossmj 86c0b90951 Use Python 3.8 to publish API doc 2023-10-27 14:42:22 +10:00
105 changed files with 2023 additions and 359 deletions

No files matched your search

@@ -18,7 +18,7 @@ jobs:
ref: "gh-pages"
- uses: actions/setup-python@v3
with:
python-version: 3.7
python-version: 3.8
- name: Merge changes from 3.0 branch
run: |
git config user.name github-actions
+2 -2
View File
@@ -13,10 +13,10 @@ on:
jobs:
build:
runs-on: ubuntu-20.04 # Downgrade Ubuntu to 20.04 to fix missing Python 3.6
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v3
+35
View File
@@ -1,5 +1,40 @@
# Change Log
## 2.2.47 15/05/2024
* Fix update-bundled-web-ui.sh script
* Bundle web-ui v2.2.47
* Change sentry-sdk version
* Upgrade aiohttp, sentry-sdk and truststore
* Upgrade jsonschema and aiohttp
* Drop Python 3.7
* Remove dev requirements for Python 3.6
* Do not run Docker VM tests on Windows
* Do not wait for the server to close when shutting down.
* Fix test create image with not supported characters by filesystem. Fixes #2375
* Allow listing x86_64 IOU images. Fixes #2376
* Upgrade Jinja2 to version 3.1.4. Fixes #2378
* Fix link capture for ATM switch. Fixes https://github.com/GNS3/gns3-gui/issues/3570
* Fix tests after updating error message when busybox is not installed.
* Add more details to error message when busybox is not installed. Fixes https://github.com/GNS3/gns3-gui/issues/3569
* Fix invalid escape sequences
* Add NAT symbols
* Fix cannot stop Docker VM while console connection is still active.
* Upgrade sentry-sdk to version 1.40.6
## 2.2.46 26/02/2024
* Bundle web-ui v2.2.46
* Save empty directories when exporting a project
* Backport from v3: install Docker resources in a writable location at runtime.
* Use Docker API v1.24 to get version.
* Drop support for Python 3.6
* Address the telnet console bug.
* Update welcome.py
* Update remote-install.sh
* Use Python 3.8 to publish API doc
* Upgrade sentry-sdk, psutil and distro dependencies
## 2.2.45 12/01/2024
* Bundle web-ui v2.2.45
+2 -4
View File
@@ -1,8 +1,6 @@
-rrequirements.txt
pytest==7.2.0; python_version >= '3.7'
pytest==7.0.1; python_version < '3.7' # v7.0.1 is the last version to support Python 3.6
pytest==7.2.0
flake8==5.0.4
pytest-timeout==2.1.0
pytest-aiohttp==1.0.4; python_version >= '3.7'
pytest-aiohttp==0.3.0; python_version < '3.7' # last version to support Python 3.6
pytest-aiohttp==1.0.4
@@ -0,0 +1,49 @@
{
"appliance_id": "e8001e2b-8ef3-44eb-ace5-79f68f3773e8",
"name": "Asterfusion vAsterNOS",
"category": "multilayer_switch",
"description": "AsterNOS is the core technology of Asterfusion's one-stop turnkey SONiC solution for cloud, enterprise and AI. As an enterprise ready SONiC distribution, AsterNOS features rich functionality enhancement such as MC-LAG, VXLAN, BGP EVPN-Multihoming, RoCEv2(Easy RoCE), and more, making it powerful and easy-to-use in a variety of production scenarios. Currently, AsterNOS is compatible with top commercial switching chips (e.g. Marvell Teralynx, Prestera Falcon/Aldrin/Alleycat, Broadcom Tomahawk/Trident, Intel Tofino and some of NVIDIA's chips.)Through AsterNOS's rich L2/L3 features and enhancements in virtualization and management, cloud architecture built with Asterfusion switching families from 1G-800G (or other standard whitebox switches) can scale to tens of thousands of compute and storage nodes, working smoothly both in underlay nework and overlay cloud fabric with OpenStack integrated, supporting ultra low latency lossless RoCE network in AIGC, distributed storage , or building easily managed access clusters for campus networks.NOTICE: This appliance file is a virtualized version of AsterNOS and is intended to be used only to experience the basic functionality and industry standard CLI (Klish), not for official software testing. For more information about AsterNOS commercial version, please feel free to contact us via Email: bd@cloudswit.ch",
"vendor_name": "Asterfusion",
"vendor_url": "https://cloudswit.ch/",
"vendor_logo_url": "https://raw.githubusercontent.com/GNS3/gns3-registry/master/vendor-logos/asterfusion.png",
"documentation_url": "https://help.cloudswit.ch/portal/en/kb/articles/vasternos",
"product_name": "vAsterNOS",
"product_url": "https://cloudswit.ch/product/sonic-enterprise-distribution",
"registry_version": 4,
"status": "experimental",
"maintainer": "Asterfusion",
"maintainer_email": "bd@cloudswit.ch",
"usage": "The login is admin, passwd asteros",
"symbol": "asterfusion-vAsterNOS.svg",
"first_port_name": "eth0",
"port_name_format": "Ethernet{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 10,
"ram": 4096,
"cpus": 2,
"hda_disk_interface": "virtio",
"arch": "x86_64",
"console_type": "telnet",
"boot_priority": "d",
"kvm": "require"
},
"images": [
{
"filename": "vAsterNOS-V3.1.img",
"version": "V3.1",
"md5sum": "c323c9c3f60e1a93eca2acdc5034b85c",
"filesize": 2724659200,
"download_url": "https://drive.cloudswitch.io/external/8ae2e3932ad8bb2ec30dd25be415d288ff3e4a949c557c6bd48ac6e6265bcfc1"
}
],
"versions": [
{
"name": "V3.1",
"images": {
"hda_disk_image": "vAsterNOS-V3.1.img"
}
}
]
}
+14
View File
@@ -23,6 +23,14 @@
"kvm": "allow"
},
"images": [
{
"filename": "bird2-debian-2.14.qcow2",
"version": "2.14",
"md5sum": "029cf1756201ee79497c169502b08b88",
"filesize": 303717376,
"download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/",
"direct_download_url": "https://downloads.sourceforge.net/project/gns-3/Qemu%20Appliances/bird2-debian-2.14.qcow2"
},
{
"filename": "bird2-debian-2.0.12.qcow2",
"version": "2.0.12",
@@ -33,6 +41,12 @@
}
],
"versions": [
{
"name": "2.14",
"images": {
"hda_disk_image": "bird2-debian-2.14.qcow2"
}
},
{
"name": "2.0.12",
"images": {
+14 -1
View File
@@ -25,11 +25,18 @@
},
"images": [
{
"filename": "c8000v-universalk9_8G_serial.17.09.04a.qcow2",
"version": "17.09.04a 8G",
"md5sum": "d5dcba52b522f41648538737af80cdf9",
"filesize": 1858142208,
"download_url": "https://software.cisco.com/download/home/286327102/type/282046477/release/Cupertino-17.9.4a"
},
{
"filename": "c8000v-universalk9_8G_serial.17.09.01a.qcow2",
"version": "17.09.01a 8G",
"md5sum": "a10ae2c4d71f4eb611bc4d83ad7709f0",
"filesize": 1856634880,
"download_url": "https://software.cisco.com/download/home/286327102/type/282046477/release/Bengaluru-17.6.5"
"download_url": "https://software.cisco.com/download/home/286327102/type/282046477/release/Cupertino-17.9.1a"
},
{
"filename": "c8000v-universalk9_8G_serial.17.06.05.qcow2",
@@ -62,6 +69,12 @@
],
"versions": [
{
"name": "17.09.04a 8G",
"images": {
"hda_disk_image": "c8000v-universalk9_8G_serial.17.09.04a.qcow2"
}
},
{
"name": "17.09.01a 8G",
"images": {
"hda_disk_image": "c8000v-universalk9_8G_serial.17.09.01a.qcow2"
+16 -3
View File
@@ -12,20 +12,27 @@
"status": "experimental",
"maintainer": "GNS3 Team",
"maintainer_email": "developers@gns3.net",
"usage": "There is no default configuration present. Virtual Switch and Interfaces may take several minutes to be usable after appliance boot.",
"usage": "There is no default configuration present. Virtual Switch and Interfaces may take several minutes to be usable after appliance boot.\n\nOnly has basic Layer 2 switching features. Will need to enable advance features and reboot to gain access to things like BGP, etc... \n\nconfigure terminal \nlicense boot level network-advantage addon dna-advantage \nend \nwrite memory \nreload",
"first_port_name": "GigabitEthernet0/0",
"port_name_format": "GigabitEthernet1/0/{port1}",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 9,
"ram": 16384,
"cpus": 2,
"ram": 24576,
"cpus": 4,
"hda_disk_interface": "virtio",
"arch": "x86_64",
"console_type": "telnet",
"kvm": "require"
},
"images": [
{
"filename": "cat9kv-prd-17.12.01prd9.qcow2",
"version": "17.12(1)",
"md5sum": "e587e92186f42bdf69d7fa27f34425f7",
"filesize": 2739404800,
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "cat9kv-prd-17.10.01prd7.qcow2",
"version": "17.10(1)",
@@ -35,6 +42,12 @@
}
],
"versions": [
{
"name": "17.12(1)",
"images": {
"hda_disk_image": "cat9kv-prd-17.12.01prd9.qcow2"
}
},
{
"name": "17.10(1)",
"images": {
+14
View File
@@ -32,6 +32,13 @@
"download_url": "https://sourceforge.net/projects/gns-3/files",
"direct_download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/IOSv_startup_config.img/download"
},
{
"filename": "vios-adventerprisek9-m.spa.159-3.m8.qcow2",
"version": "15.9(3)M8",
"md5sum": "8d93a185c2fa778178a933f20b02150a",
"filesize": 57319424,
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "vios-adventerprisek9-m.spa.159-3.m6.qcow2",
"version": "15.9(3)M6",
@@ -97,6 +104,13 @@
}
],
"versions": [
{
"name": "15.9(3)M8",
"images": {
"hda_disk_image": "vios-adventerprisek9-m.spa.159-3.m8.qcow2",
"hdb_disk_image": "IOSv_startup_config.img"
}
},
{
"name": "15.9(3)M6",
"images": {
+12
View File
@@ -18,6 +18,12 @@
"startup_config": "iou_l2_base_startup-config.txt"
},
"images": [
{
"filename": "x86_64_crb_linux_l2-adventerprisek9-ms",
"version": "17.12.1",
"md5sum": "2b5055e4cef8fd257416d74a94adb626",
"filesize": 240355720
},
{
"filename": "i86bi-linux-l2-ipbasek9-15.1g.bin",
"version": "15.1g",
@@ -38,6 +44,12 @@
}
],
"versions": [
{
"name": "17.12.1",
"images": {
"image": "x86_64_crb_linux_l2-adventerprisek9-ms"
}
},
{
"name": "15.1g",
"images": {
+12
View File
@@ -18,6 +18,12 @@
"startup_config": "iou_l3_base_startup-config.txt"
},
"images": [
{
"filename": "x86_64_crb_linux-adventerprisek9-ms",
"version": "17.12.1",
"md5sum": "4a2fce8de21d1831fbceffd155e41ae7",
"filesize": 288947184
},
{
"filename": "i86bi_LinuxL3-AdvEnterpriseK9-M2_157_3_May_2018.bin",
"version": "15.7(3)M2",
@@ -38,6 +44,12 @@
}
],
"versions": [
{
"name": "17.12.1",
"images": {
"image": "x86_64_crb_linux-adventerprisek9-ms"
}
},
{
"name": "15.7(3)M2",
"images": {
+56
View File
@@ -47,6 +47,34 @@
"filesize": 1990983680,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/10.1(1)"
},
{
"filename": "nexus9500v.9.3.13.qcow2",
"version": "9500v 9.3.13",
"md5sum": "bacf0f664ee34625c85a9f278b2466a2",
"filesize": 2248409088,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(13)"
},
{
"filename": "nexus9300v.9.3.13.qcow2",
"version": "9300v 9.3.13",
"md5sum": "d8ce30cb762df02d77ec27786a2435ad",
"filesize": 2248343552,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(13)"
},
{
"filename": "nexus9500v.9.3.12.qcow2",
"version": "9500v 9.3.12",
"md5sum": "452e5cb2a7a25feaa3ba0624a82ff9ca",
"filesize": 1997996032,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(12)"
},
{
"filename": "nexus9300v.9.3.12.qcow2",
"version": "9300v 9.3.12",
"md5sum": "7b6b5dad1001e11d6ebb54662616e9f2",
"filesize": 1997930496,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(12)"
},
{
"filename": "nexus9500v.9.3.9.qcow2",
"version": "9500v 9.3.9",
@@ -226,6 +254,34 @@
"hda_disk_image": "nexus9300v.10.1.1.qcow2"
}
},
{
"name": "9500v 9.3.13",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9500v.9.3.13.qcow2"
}
},
{
"name": "9300v 9.3.13",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9300v.9.3.13.qcow2"
}
},
{
"name": "9500v 9.3.12",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9500v.9.3.12.qcow2"
}
},
{
"name": "9300v 9.3.12",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9300v.9.3.12.qcow2"
}
},
{
"name": "9500v 9.3.9",
"images": {
@@ -5,7 +5,7 @@
"description": "Clavister NetShield (cOS Stream) Virtual Appliance offers the same functionality as the Clavister NetShield physical NGappliances FWs in a virtual environment.",
"vendor_name": "Clavister",
"vendor_url": "https://www.clavister.com/",
"documentation_url": "https://kb.clavister.com",
"documentation_url": "https://docs.clavister.com",
"product_name": "NetShield",
"product_url": "https://www.clavister.com/products/netshield/",
"registry_version": 4,
@@ -13,7 +13,7 @@
"availability": "free-to-try",
"maintainer": "Mattias Nordlund",
"maintainer_email": "mattias.nordlund@clavister.com",
"usage": "No configuration by default, oen console to set IPs and activate configuration.",
"usage": "No configuration by default, use console to set IPs and activate configuration.",
"port_name_format": "if{0}",
"qemu": {
"adapter_type": "virtio-net-pci",
@@ -27,6 +27,13 @@
"options": "-cpu Nehalem"
},
"images": [
{
"filename": "clavister-cos-stream-4.00.00.34-virtual-x64-generic.qcow2",
"version": "cOS Stream 4.00.00",
"md5sum": "02b480621d9bf1a9a4e116cd47bef006",
"filesize": 132841472,
"download_url": "https://my.clavister.com/download/86399b21-44c7-ee11-a434-005056bdfeb0"
},
{
"filename": "clavister-cos-stream-3.80.09.01-virtual-x64-generic.qcow2",
"version": "cOS Stream 3.80.09",
@@ -36,6 +43,12 @@
}
],
"versions": [
{
"name": "cOS Stream 4.00.00",
"images": {
"hda_disk_image": "clavister-cos-stream-4.00.00.34-virtual-x64-generic.qcow2"
}
},
{
"name": "cOS Stream 3.80.09",
"images": {
+15 -2
View File
@@ -5,7 +5,7 @@
"description": "Clavister NetWall (cOS Core) Virtual Appliance offers the same functionality as the Clavister NetWall physical NGFWs in a virtual environment.",
"vendor_name": "Clavister",
"vendor_url": "https://www.clavister.com/",
"documentation_url": "https://kb.clavister.com",
"documentation_url": "https://docs.clavister.com",
"product_name": "NetWall",
"product_url": "https://www.clavister.com/products/ngfw/",
"registry_version": 4,
@@ -13,7 +13,7 @@
"availability": "free-to-try",
"maintainer": "Mattias Nordlund",
"maintainer_email": "mattias.nordlund@clavister.com",
"usage": "DHCP enabled on all interfaces by default, WebUI/SSH access enabled on the local network connected to If1.",
"usage": "DHCP & cloud-init enabled on all interfaces by default, WebUI/SSH access enabled on the local network connected to If1.",
"port_name_format": "If{0}",
"qemu": {
"adapter_type": "e1000",
@@ -26,6 +26,13 @@
"kvm": "allow"
},
"images": [
{
"filename": "clavister-cos-core-14.00.13.08-kvm-en.img",
"version": "cOS Core 14.00.13 (x86)",
"md5sum": "d36797077378accb2b8fc72d09d07ee1",
"filesize": 536870912,
"download_url": "https://my.clavister.com/download/f3f494a3-9ee7-ee11-a434-005056bdfeb0"
},
{
"filename": "clavister-cos-core-14.00.01.13-kvm-en.img",
"version": "cOS Core 14.00.01 (x86)",
@@ -42,6 +49,12 @@
}
],
"versions": [
{
"name": "cOS Core 14.00.13 (x86)",
"images": {
"hda_disk_image": "clavister-cos-core-14.00.13.08-kvm-en.img"
}
},
{
"name": "cOS Core 14.00.01 (x86)",
"images": {
+13 -151
View File
@@ -26,163 +26,25 @@
"kvm": "allow",
"options": "-cpu core2duo"
},
"images": [
{
"filename": "EXOS-VM_v32.1.1.6.qcow2",
"version": "32.1.1.6",
"md5sum": "48868bbcb4255d6365049b5941dd2af7",
"filesize": 231211008,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v32.1.1.6.qcow2"
},
{
"filename": "EXOS-VM_v31.7.1.4.qcow2",
"version": "31.7.1.4",
"md5sum": "a70e4fa3bc361434237ad12937aaf0fb",
"filesize": 458227712,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v31.7.1.4.qcow2"
},
{
"filename": "EXOS-VM_v31.1.1.3.qcow2",
"version": "31.1.1.3",
"md5sum": "e4936ad94a5304bfeeca8dfc6f285cc0",
"filesize": 561512448,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v31.1.1.3.qcow2"
},
{
"filename": "EXOS-VM_v30.7.1.1.qcow2",
"version": "30.7.1.1",
"md5sum": "c6b67023945102f984b47aa67c67fe33",
"filesize": 485687296,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.7.1.1.qcow2"
},
{
"filename": "EXOS-VM_v30.6.1.11.qcow2",
"version": "30.6.1.11",
"md5sum": "bf3e13570417d7e3464165b344c196eb",
"filesize": 475332608,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.6.1.11.qcow2"
},
{
"filename": "EXOS-VM_v30.5.1.15.qcow2",
"version": "30.5.1.15",
"md5sum": "380d0c7bb8f0aa272ceb84b85f367a63",
"filesize": 498663424,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.5.1.15.qcow2"
},
{
"filename": "EXOS-VM_v30.4.1.2.qcow2",
"version": "30.4.1.2",
"md5sum": "133fa38bf80daec9e389729c96e692c0",
"filesize": 454557696,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.4.1.2.qcow2"
},
{
"filename": "EXOS-VM_v30.3.1.6.qcow2",
"version": "30.3.1.6",
"md5sum": "edb86b406efe99434c6d5366d9bfa97f",
"filesize": 448266240,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.3.1.6.qcow2"
},
{
"filename": "EXOS-VM_v30.2.1.8.qcow2",
"version": "30.2.1.8",
"md5sum": "4bdbf3ddff7a030e19c6bb71270b56d2",
"filesize": 355205120,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.2.1.8.qcow2"
},
{
"filename": "EXOS-VM_v30.1.1.4.qcow2",
"version": "30.1.1.4",
"md5sum": "92d3f9b13d750f7bfa804823fa545772",
"filesize": 383385600,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v30.1.1.4.qcow2"
},
{
"filename": "EXOS-VM_v22.7.1.2.qcow2",
"version": "22.7.1.2",
"md5sum": "a13e839b3fa05e8a5b0fb31f7e3dda86",
"filesize": 180420608,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v22.7.1.2.qcow2"
},
{
"filename": "EXOS-VM_v21.1.1.4-disk1.qcow2",
"version": "21.1.1.4",
"md5sum": "654606809b6fd3bca400377483eb4a79",
"filesize": 117560832,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v21.1.1.4-disk1.qcow2"
{
"filename": "EXOS-VM_v32.6.3.126.qcow2",
"version": "32.6.3.126",
"md5sum": "5856b6c427bd605fe1c7adb6ee6b2659",
"filesize": 236716032,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_v32.6.3.126.qcow2"
}
],
"versions": [
{
"name": "32.1.1.6",
"name": "32.6.3.126",
"images": {
"hda_disk_image": "EXOS-VM_v32.1.1.6.qcow2"
}
},
{
"name": "31.7.1.4",
"images": {
"hda_disk_image": "EXOS-VM_v31.7.1.4.qcow2"
}
},
{
"name": "31.1.1.3",
"images": {
"hda_disk_image": "EXOS-VM_v31.1.1.3.qcow2"
}
},
{
"name": "30.7.1.1",
"images": {
"hda_disk_image": "EXOS-VM_v30.7.1.1.qcow2"
}
},
{
"name": "30.6.1.11",
"images": {
"hda_disk_image": "EXOS-VM_v30.6.1.11.qcow2"
}
},
{
"name": "30.5.1.15",
"images": {
"hda_disk_image": "EXOS-VM_v30.5.1.15.qcow2"
}
},
{
"name": "30.4.1.2",
"images": {
"hda_disk_image": "EXOS-VM_v30.4.1.2.qcow2"
}
},
{
"name": "30.3.1.6",
"images": {
"hda_disk_image": "EXOS-VM_v30.3.1.6.qcow2"
}
},
{
"name": "30.2.1.8",
"images": {
"hda_disk_image": "EXOS-VM_v30.2.1.8.qcow2"
}
},
{
"name": "30.1.1.4",
"images": {
"hda_disk_image": "EXOS-VM_v30.1.1.4.qcow2"
}
},
{
"name": "22.7.1.2",
"images": {
"hda_disk_image": "EXOS-VM_v22.7.1.2.qcow2"
}
},
{
"name": "21.1.1.4",
"images": {
"hda_disk_image": "EXOS-VM_v21.1.1.4-disk1.qcow2"
"hda_disk_image": "EXOS-VM_v32.6.3.126.qcow2"
}
}
]
+42
View File
@@ -29,6 +29,13 @@
"kvm": "allow"
},
"images": [
{
"filename": "FAZ_VM64_KVM-v7.4.2-build2397-FORTINET.out.kvm.qcow2",
"version": "7.4.2",
"md5sum": "33b2938e19a6cb61d4d64e6998a54d23",
"filesize": 480096256,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v7.4.1-build2308-FORTINET.out.kvm.qcow2",
"version": "7.4.1",
@@ -57,6 +64,13 @@
"filesize": 340631552,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v7.0.11-build0595-FORTINET.out.kvm.qcow2",
"version": "7.0.11",
"md5sum": "ae7ff37d00d0b518e9982a0785665fc2",
"filesize": 349257728,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v7.0.9-build0489-FORTINET.out.kvm.qcow2",
"version": "7.0.9",
@@ -78,6 +92,13 @@
"filesize": 334184448,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v6.4.14-build2660-FORTINET.out.kvm.qcow2",
"version": "6.4.14",
"md5sum": "1629d76776c9d625faee0304b5840c02",
"filesize": 300683264,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v6.4.12-build2610-FORTINET.out.kvm.qcow2",
"version": "6.4.12",
@@ -235,6 +256,13 @@
}
],
"versions": [
{
"name": "7.4.2",
"images": {
"hda_disk_image": "FAZ_VM64_KVM-v7.4.2-build2397-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.1",
"images": {
@@ -263,6 +291,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.11",
"images": {
"hda_disk_image": "FAZ_VM64_KVM-v7.0.11-build0595-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.9",
"images": {
@@ -284,6 +319,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.14",
"images": {
"hda_disk_image": "FAZ_VM64_KVM-v6.4.14-build2660-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.12",
"images": {
+56
View File
@@ -28,6 +28,13 @@
"kvm": "allow"
},
"images": [
{
"filename": "FGT_VM64_KVM-v7.4.3.F-build2573-FORTINET.out.kvm.qcow2",
"version": "7.4.3",
"md5sum": "e7517095c91dce1a76a9bcf114b5fa15",
"filesize": 100728832,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.4.1.F-build2463-FORTINET.out.kvm.qcow2",
"version": "7.4.1",
@@ -35,6 +42,13 @@
"filesize": 116064256,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.2.7.M-build1577-FORTINET.out.kvm.qcow2",
"version": "7.2.7",
"md5sum": "752b56844e464b0b135e57f72681c288",
"filesize": 102760448,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.2.6.F-build1575-FORTINET.out.kvm.qcow2",
"version": "7.2.6",
@@ -63,6 +77,13 @@
"filesize": 86704128,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.0.14.M-build0601-FORTINET.out.kvm.qcow2",
"version": "7.0.14",
"md5sum": "20c855889e1117902bcf448b30746d30",
"filesize": 77398016,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.0.13.M-build0566-FORTINET.out.kvm.qcow2",
"version": "7.0.13",
@@ -91,6 +112,13 @@
"filesize": 77135872,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v6.4.15.M-build2095-FORTINET.out.kvm.qcow2",
"version": "6.4.15",
"md5sum": "a0306a3905877de654dab7e1bb67089e",
"filesize": 81592320,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v6.4.14.M-build2093-FORTINET.out.kvm.qcow2",
"version": "6.4.14",
@@ -339,6 +367,13 @@
}
],
"versions": [
{
"name": "7.4.3",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v7.4.3.F-build2573-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.1",
"images": {
@@ -346,6 +381,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.2.7",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v7.2.7.M-build1577-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.2.6",
"images": {
@@ -374,6 +416,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.14",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v7.0.14.M-build0601-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.13",
"images": {
@@ -402,6 +451,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.15",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v6.4.15.M-build2095-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.14",
"images": {
+43 -1
View File
@@ -13,7 +13,7 @@
"status": "stable",
"maintainer": "Ean Towne",
"maintainer_email": "ean.fortinet@gmail.com",
"usage": "Default username is admin, no password is set.\n\n- Versions lower than 7.0.x require less CPU/RAM",
"usage": "Default username is admin, no password is set.\n\n- Versions lower than 7.0.x require less CPU/RAM\n7.4.x may require 16GB RAM.",
"symbol": "fortinet.svg",
"port_name_format": "Port{port1}",
"qemu": {
@@ -29,6 +29,13 @@
"kvm": "allow"
},
"images": [
{
"filename": "FMG_VM64_KVM-v7.4.2-build2397-FORTINET.out.kvm.qcow2",
"version": "7.4.2",
"md5sum": "36371fbf06210ded57c00b2ff290f2c5",
"filesize": 322514944,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v7.4.1-build2308-FORTINET.out.kvm.qcow2",
"version": "7.4.1",
@@ -57,6 +64,13 @@
"filesize": 242814976,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v7.0.11-build0595-FORTINET.out.kvm.qcow2",
"version": "7.0.11",
"md5sum": "7b166222136e26190159f37cccbaab6e",
"filesize": 249360384,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v7.0.9-build0489-FORTINET.out.kvm.qcow2",
"version": "7.0.9",
@@ -78,6 +92,13 @@
"filesize": 237535232,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v6.4.14-build2660-FORTINET.out.kvm.qcow2",
"version": "6.4.14",
"md5sum": "0fe56e363b166c07b710bde795e36049",
"filesize": 219430912,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v6.4.12-build2610-FORTINET.out.kvm.qcow2",
"version": "6.4.12",
@@ -235,6 +256,13 @@
}
],
"versions": [
{
"name": "7.4.2",
"images": {
"hda_disk_image": "FMG_VM64_KVM-v7.4.2-build2397-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.1",
"images": {
@@ -263,6 +291,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.11",
"images": {
"hda_disk_image": "FMG_VM64_KVM-v7.0.11-build0595-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.9",
"images": {
@@ -284,6 +319,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.14",
"images": {
"hda_disk_image": "FMG_VM64_KVM-v6.4.14-build2660-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.12",
"images": {
+17 -2
View File
@@ -24,13 +24,22 @@
"kvm": "require"
},
"images": [
{
"filename": "FreeBSD-14.0-RELEASE-amd64.qcow2",
"version": "14.0",
"md5sum": "87b988eaa4a8aaabea1c10649c98b3f0",
"filesize": 3506569216,
"download_url": "https://www.freebsd.org/where.html",
"direct_download_url": "https://download.freebsd.org/releases/VM-IMAGES/14.0-RELEASE/amd64/Latest/FreeBSD-14.0-RELEASE-amd64.qcow2.xz",
"compression": "xz"
},
{
"filename": "FreeBSD-13.0-RELEASE-amd64.qcow2",
"version": "13.0",
"md5sum": "e8e598959da456c03260421b5f9890de",
"filesize": 3466854400,
"download_url": "https://www.freebsd.org/where.html",
"direct_download_url": "https://download.freebsd.org/ftp/releases/VM-IMAGES/13.0-RELEASE/amd64/Latest/FreeBSD-13.0-RELEASE-amd64.qcow2.xz",
"direct_download_url": "http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/VM-IMAGES/13.0-RELEASE/amd64/Latest/FreeBSD-13.0-RELEASE-amd64.qcow2.xz",
"compression": "xz"
},
{
@@ -39,11 +48,17 @@
"md5sum": "3d7d5396f3d89ed30c2bfa2ee2e6b013",
"filesize": 3412000768,
"download_url": "https://www.freebsd.org/where.html",
"direct_download_url": "https://download.freebsd.org/ftp/releases/VM-IMAGES/12.3-RELEASE/amd64/Latest/FreeBSD-12.3-RELEASE-amd64.qcow2.xz",
"direct_download_url": "http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/VM-IMAGES/12.3-RELEASE/amd64/Latest/FreeBSD-12.3-RELEASE-amd64.qcow2.xz",
"compression": "xz"
}
],
"versions": [
{
"name": "14.0",
"images": {
"hda_disk_image": "FreeBSD-14.0-RELEASE-amd64.qcow2"
}
},
{
"name": "13.0",
"images": {
+9
View File
@@ -27,6 +27,15 @@
"options": "-nographic"
},
"images": [
{
"filename": "chr-7.14.2.img",
"version": "7.14.2",
"md5sum": "531901dac85b67b23011e946a62abc7b",
"filesize": 134217728,
"download_url": "http://www.mikrotik.com/download",
"direct_download_url": "https://download.mikrotik.com/routeros/7.14.2/chr-7.14.2.img.zip",
"compression": "zip"
},
{
"filename": "chr-7.11.2.img",
"version": "7.11.2",
@@ -8,7 +8,7 @@
"documentation_url": "http://wiki.mikrotik.com/wiki/Manual:CHR",
"product_name": "MikroTik RouterBOARD 1100AHx4 Dude Edition",
"product_url": "http://www.mikrotik.com/download",
"registry_version": 5,
"registry_version": 4,
"status": "stable",
"maintainer": "Azorian Solutions",
"maintainer_email": "help@azorian.solutions",
+1 -1
View File
@@ -8,7 +8,7 @@
"documentation_url": "http://wiki.mikrotik.com/wiki/Manual:CHR",
"product_name": "MikroTik RouterBOARD 450G",
"product_url": "http://www.mikrotik.com/download",
"registry_version": 5,
"registry_version": 4,
"status": "stable",
"maintainer": "Azorian Solutions",
"maintainer_email": "help@azorian.solutions",
@@ -8,7 +8,7 @@
"documentation_url": "http://wiki.mikrotik.com/wiki/Manual:CHR",
"product_name": "MikroTik RouterBOARD 450Gx4",
"product_url": "http://www.mikrotik.com/download",
"registry_version": 5,
"registry_version": 4,
"status": "stable",
"maintainer": "Azorian Solutions",
"maintainer_email": "help@azorian.solutions",
@@ -26,6 +26,14 @@
"kvm": "require"
},
"images": [
{
"filename": "openmediavault_7.0.32-amd64.iso",
"version": "7.0.32",
"md5sum": "36d1fda7de0c8dd6806a65145845d362",
"filesize": 981467136,
"download_url": "https://www.openmediavault.org/download.html",
"direct_download_url": "https://sourceforge.net/projects/openmediavault/files/iso/7.0-32/openmediavault_7.0-32-amd64.iso"
},
{
"filename": "openmediavault_6.5.0-amd64.iso",
"version": "6.5.0",
@@ -68,6 +76,14 @@
}
],
"versions": [
{
"name": "7.0.32",
"images": {
"hda_disk_image": "empty30G.qcow2",
"hdb_disk_image": "empty30G.qcow2",
"cdrom_image": "openmediavault_7.0.32-amd64.iso"
}
},
{
"name": "6.5.0",
"images": {
@@ -16,6 +16,6 @@
"docker": {
"adapters": 16,
"image": "gns3/openvswitch:latest",
"environment": "MANAGEMENT_INTERFACE=1"
"environment": "MANAGEMENT_INTERFACE=eth0"
}
}
+13
View File
@@ -25,6 +25,13 @@
"kvm": "require"
},
"images": [
{
"filename": "OPNsense-24.1-nano-amd64.img",
"version": "24.1",
"md5sum": "ea8472df2c272419b7834cddaf68048d",
"filesize": 3221225472,
"download_url": "https://opnsense.c0urier.net/releases/24.1/"
},
{
"filename": "OPNsense-23.1-OpenSSL-nano-amd64.img",
"version": "23.1",
@@ -62,6 +69,12 @@
}
],
"versions": [
{
"name": "24.1",
"images": {
"hda_disk_image": "OPNsense-24.1-nano-amd64.img"
}
},
{
"name": "23.1",
"images": {
+61 -1
View File
@@ -19,11 +19,15 @@
Docker server module.
"""
import os
import sys
import json
import asyncio
import logging
import aiohttp
import shutil
import platformdirs
from gns3server.utils import parse_version
from gns3server.utils.asyncio import locking
from gns3server.compute.base_manager import BaseManager
@@ -55,6 +59,62 @@ class Docker(BaseManager):
self._session = None
self._api_version = DOCKER_MINIMUM_API_VERSION
@staticmethod
async def install_busybox(dst_dir):
dst_busybox = os.path.join(dst_dir, "bin", "busybox")
if os.path.isfile(dst_busybox):
return
for busybox_exec in ("busybox-static", "busybox.static", "busybox"):
busybox_path = shutil.which(busybox_exec)
if busybox_path:
try:
# check that busybox is statically linked
# (dynamically linked busybox will fail to run in a container)
proc = await asyncio.create_subprocess_exec(
"ldd",
busybox_path,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.DEVNULL
)
stdout, _ = await proc.communicate()
if proc.returncode == 1:
# ldd returns 1 if the file is not a dynamic executable
log.info(f"Installing busybox from '{busybox_path}' to '{dst_busybox}'")
shutil.copy2(busybox_path, dst_busybox, follow_symlinks=True)
return
else:
log.warning(f"Busybox '{busybox_path}' is dynamically linked\n"
f"{stdout.decode('utf-8', errors='ignore').strip()}")
except OSError as e:
raise DockerError(f"Could not install busybox: {e}")
raise DockerError("No busybox executable could be found, please install busybox (apt install busybox-static on Debian/Ubuntu) and make sure it is in your PATH")
@staticmethod
def resources_path():
"""
Get the Docker resources storage directory
"""
appname = vendor = "GNS3"
docker_resources_dir = os.path.join(platformdirs.user_data_dir(appname, vendor, roaming=True), "docker", "resources")
os.makedirs(docker_resources_dir, exist_ok=True)
return docker_resources_dir
async def install_resources(self):
"""
Copy the necessary resources to a writable location and install busybox
"""
try:
dst_path = self.resources_path()
log.info(f"Installing Docker resources in '{dst_path}'")
from gns3server.controller import Controller
Controller.instance().install_resource_files(dst_path, "compute/docker/resources")
await self.install_busybox(dst_path)
except OSError as e:
raise DockerError(f"Could not install Docker resources to {dst_path}: {e}")
async def _check_connection(self):
if not self._connected:
@@ -135,7 +195,7 @@ class Docker(BaseManager):
timeout = 60 * 60 * 24 * 31 # One month timeout
if path == 'version':
url = "http://docker/v1.12/" + path # API of docker v1.0
url = "http://docker/v1.24/" + path
else:
url = "http://docker/v" + DOCKER_MINIMUM_API_VERSION + "/" + path
try:
+17 -7
View File
@@ -242,10 +242,13 @@ class DockerVM(BaseNode):
:returns: Return the path that we need to map to local folders
"""
resources = get_resource("compute/docker/resources")
if not os.path.exists(resources):
raise DockerError("{} is missing can't start Docker containers".format(resources))
binds = ["{}:/gns3:ro".format(resources)]
try:
resources_path = self.manager.resources_path()
except OSError as e:
raise DockerError(f"Cannot access resources: {e}")
log.info(f'Mount resources from "{resources_path}"')
binds = ["{}:/gns3:ro".format(resources_path)]
# We mount our own etc/network
try:
@@ -460,6 +463,8 @@ class DockerVM(BaseNode):
Starts this Docker container.
"""
await self.manager.install_resources()
try:
state = await self._get_container_state()
except DockerHttp404Error:
@@ -476,6 +481,9 @@ class DockerVM(BaseNode):
await self._start_vnc_process(restart=True)
monitor_process(self._vnc_process, self._vnc_callback)
if self._console_websocket:
await self._console_websocket.close()
self._console_websocket = None
await self._clean_servers()
await self.manager.query("POST", "containers/{}/start".format(self._cid))
@@ -697,9 +705,7 @@ class DockerVM(BaseNode):
self._console_websocket = await self.manager.websocket_query("containers/{}/attach/ws?stream=1&stdin=1&stdout=1&stderr=1".format(self._cid))
input_stream.ws = self._console_websocket
output_stream.feed_data(self.name.encode() + b" console is now available... Press RETURN to get started.\r\n")
asyncio.ensure_future(self._read_console_output(self._console_websocket, output_stream))
async def _read_console_output(self, ws, out):
@@ -722,13 +728,14 @@ class DockerVM(BaseNode):
out.feed_eof()
await ws.close()
break
await self.stop()
async def reset_console(self):
"""
Reset the console.
"""
if self._console_websocket:
await self._console_websocket.close()
await self._clean_servers()
await self._start_console()
@@ -773,6 +780,9 @@ class DockerVM(BaseNode):
"""
try:
if self._console_websocket:
await self._console_websocket.close()
self._console_websocket = None
await self._clean_servers()
await self._stop_ubridge()
+1 -1
View File
@@ -226,7 +226,7 @@ class Qemu(BaseManager):
else:
try:
output = await subprocess_check_output(qemu_path, "-version", "-nographic")
match = re.search("version\s+([0-9a-z\-\.]+)", output)
match = re.search(r"version\s+([0-9a-z\-\.]+)", output)
if match:
version = match.group(1)
return version
+1 -1
View File
@@ -701,7 +701,7 @@ class VMware(BaseManager):
path = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH)
ctypes.windll.shell32.SHGetFolderPathW(None, 5, None, 0, path)
documents_folder = path.value
return ['{}\My Virtual Machines'.format(documents_folder), '{}\Virtual Machines'.format(documents_folder)]
return [r'{}\My Virtual Machines'.format(documents_folder), r'{}\Virtual Machines'.format(documents_folder)]
elif sys.platform.startswith("darwin"):
return [os.path.expanduser("~/Documents/Virtual Machines.localized")]
else:
+3
View File
@@ -300,6 +300,9 @@ class Controller:
if entry.is_file() and not os.path.exists(full_path):
log.debug(f'Installing {resource_name} resource file "{entry.name}" to "{full_path}"')
shutil.copy(str(entry), os.path.join(dst_path, entry.name))
elif entry.is_dir():
os.makedirs(full_path, exist_ok=True)
Controller.install_resource_files(full_path, os.path.join(resource_name, entry.name))
def _install_base_configs(self):
"""
+1 -1
View File
@@ -484,7 +484,7 @@ class Compute:
return self._getUrl(path)
async def _run_http_query(self, method, path, data=None, timeout=20, raw=False):
with async_timeout.timeout(timeout):
async with async_timeout.timeout(delay=timeout):
url = self._getUrl(path)
headers = {}
headers['content-type'] = 'application/json'
+5
View File
@@ -83,6 +83,11 @@ async def export_project(zstream, project, temporary_dir, include_images=False,
continue
_patch_mtime(path)
zstream.write(path, os.path.relpath(path, project._path))
# save empty directories
for directory in dirs:
path = os.path.join(root, directory)
if not os.listdir(path):
zstream.write(path, os.path.relpath(path, project._path))
except FileNotFoundError as e:
log.warning("Cannot export local file: {}".format(e))
continue
+3 -3
View File
@@ -52,15 +52,15 @@ class Snapshot:
self._project = project
if name:
self._name = name
self._created_at = datetime.now().timestamp()
filename = self._name + "_" + datetime.utcfromtimestamp(self._created_at).replace(tzinfo=None).strftime(FILENAME_TIME_FORMAT) + ".gns3project"
self._created_at = datetime.now(timezone.utc).timestamp()
filename = self._name + "_" + datetime.fromtimestamp(self._created_at, tz=timezone.utc).replace(tzinfo=None).strftime(FILENAME_TIME_FORMAT) + ".gns3project"
else:
self._name = filename.split("_")[0]
datestring = filename.replace(self._name + "_", "").split(".")[0]
try:
self._created_at = datetime.strptime(datestring, FILENAME_TIME_FORMAT).replace(tzinfo=timezone.utc).timestamp()
except ValueError:
self._created_at = datetime.utcnow().timestamp()
self._created_at = datetime.now(timezone.utc)
self._path = os.path.join(project.path, "snapshots", filename)
@property
+7
View File
@@ -17,6 +17,7 @@
CLASSIC_SYMBOL_THEME = {"cloud": ":/symbols/classic/cloud.svg",
"nat": ":/symbols/classic/nat.svg",
"ethernet_switch": ":/symbols/classic/ethernet_switch.svg",
"ethernet_hub": ":/symbols/classic/hub.svg",
"frame_relay_switch": ":/symbols/classic/frame_relay_switch.svg",
@@ -32,6 +33,7 @@ CLASSIC_SYMBOL_THEME = {"cloud": ":/symbols/classic/cloud.svg",
"docker_guest": ":/symbols/classic/docker_guest.svg"}
AFFINITY_SQUARE_BLUE_SYMBOL_THEME = {"cloud": ":/symbols/affinity/square/blue/cloud.svg",
"nat": ":/symbols/affinity/square/blue/nat.svg",
"ethernet_switch": ":/symbols/affinity/square/blue/switch.svg",
"ethernet_hub": ":/symbols/affinity/square/blue/hub.svg",
"frame_relay_switch.svg": ":/symbols/affinity/square/blue/isdn.svg",
@@ -47,6 +49,7 @@ AFFINITY_SQUARE_BLUE_SYMBOL_THEME = {"cloud": ":/symbols/affinity/square/blue/cl
"docker_guest": ":/symbols/affinity/square/blue/docker.svg"}
AFFINITY_SQUARE_RED_SYMBOL_THEME = {"cloud": ":/symbols/affinity/square/red/cloud.svg",
"nat": ":/symbols/affinity/square/red/nat.svg",
"ethernet_switch": ":/symbols/affinity/square/red/switch.svg",
"ethernet_hub": ":/symbols/affinity/square/red/hub.svg",
"frame_relay_switch": ":/symbols/affinity/square/red/isdn.svg",
@@ -62,6 +65,7 @@ AFFINITY_SQUARE_RED_SYMBOL_THEME = {"cloud": ":/symbols/affinity/square/red/clou
"docker_guest": ":/symbols/affinity/square/red/docker.svg"}
AFFINITY_SQUARE_GRAY_SYMBOL_THEME = {"cloud": ":/symbols/affinity/square/gray/cloud.svg",
"nat": ":/symbols/affinity/square/gray/nat.svg",
"ethernet_switch": ":/symbols/affinity/square/gray/switch.svg",
"ethernet_hub": ":/symbols/affinity/square/gray/hub.svg",
"frame_relay_switch": ":/symbols/affinity/square/gray/isdn.svg",
@@ -77,6 +81,7 @@ AFFINITY_SQUARE_GRAY_SYMBOL_THEME = {"cloud": ":/symbols/affinity/square/gray/cl
"docker_guest": ":/symbols/affinity/square/gray/docker.svg"}
AFFINITY_CIRCLE_BLUE_SYMBOL_THEME = {"cloud": ":/symbols/affinity/circle/blue/cloud.svg",
"nat": ":/symbols/affinity/circle/blue/nat.svg",
"ethernet_switch": ":/symbols/affinity/circle/blue/switch.svg",
"ethernet_hub": ":/symbols/affinity/circle/blue/hub.svg",
"frame_relay_switch": ":/symbols/affinity/circle/blue/isdn.svg",
@@ -92,6 +97,7 @@ AFFINITY_CIRCLE_BLUE_SYMBOL_THEME = {"cloud": ":/symbols/affinity/circle/blue/cl
"docker_guest": ":/symbols/affinity/circle/blue/docker.svg"}
AFFINITY_CIRCLE_RED_SYMBOL_THEME = {"cloud": ":/symbols/affinity/circle/red/cloud.svg",
"nat": ":/symbols/affinity/circle/red/nat.svg",
"ethernet_switch": ":/symbols/affinity/circle/red/switch.svg",
"ethernet_hub": ":/symbols/affinity/circle/red/hub.svg",
"frame_relay_switch": ":/symbols/affinity/circle/red/isdn.svg",
@@ -107,6 +113,7 @@ AFFINITY_CIRCLE_RED_SYMBOL_THEME = {"cloud": ":/symbols/affinity/circle/red/clou
"docker_guest": ":/symbols/affinity/circle/red/docker.svg"}
AFFINITY_CIRCLE_GRAY_SYMBOL_THEME = {"cloud": ":/symbols/affinity/circle/gray/cloud.svg",
"nat": ":/symbols/affinity/circle/gray/nat.svg",
"ethernet_switch": ":/symbols/affinity/circle/gray/switch.svg",
"ethernet_hub": ":/symbols/affinity/circle/gray/hub.svg",
"frame_relay_switch": ":/symbols/affinity/circle/gray/isdn.svg",
+1 -1
View File
@@ -63,7 +63,7 @@ class TemplateManager:
builtins = []
if Config.instance().get_section_config("Server").getboolean("enable_builtin_templates", True):
builtins.append(Template(uuid.uuid3(uuid.NAMESPACE_DNS, "cloud"), {"template_type": "cloud", "name": "Cloud", "default_name_format": "Cloud{0}", "category": 2, "symbol": ":/symbols/cloud.svg"}, builtin=True))
builtins.append(Template(uuid.uuid3(uuid.NAMESPACE_DNS, "nat"), {"template_type": "nat", "name": "NAT", "default_name_format": "NAT{0}", "category": 2, "symbol": ":/symbols/cloud.svg"}, builtin=True))
builtins.append(Template(uuid.uuid3(uuid.NAMESPACE_DNS, "nat"), {"template_type": "nat", "name": "NAT", "default_name_format": "NAT{0}", "category": 2, "symbol": ":/symbols/nat.svg"}, builtin=True))
builtins.append(Template(uuid.uuid3(uuid.NAMESPACE_DNS, "vpcs"), {"template_type": "vpcs", "name": "VPCS", "default_name_format": "PC{0}", "category": 2, "symbol": ":/symbols/vpcs_guest.svg", "properties": {"base_script_file": "vpcs_base_config.txt"}}, builtin=True))
builtins.append(Template(uuid.uuid3(uuid.NAMESPACE_DNS, "ethernet_switch"), {"template_type": "ethernet_switch", "console_type": "none", "name": "Ethernet switch", "default_name_format": "Switch{0}", "category": 1, "symbol": ":/symbols/ethernet_switch.svg"}, builtin=True))
builtins.append(Template(uuid.uuid3(uuid.NAMESPACE_DNS, "ethernet_hub"), {"template_type": "ethernet_hub", "name": "Ethernet hub", "default_name_format": "Hub{0}", "category": 1, "symbol": ":/symbols/hub.svg"}, builtin=True))
+1 -1
View File
@@ -189,7 +189,7 @@ class UDPLink(Link):
:returns: Node where the capture should run
"""
ALWAYS_RUNNING_NODES_TYPE = ("cloud", "nat", "ethernet_switch", "ethernet_hub")
ALWAYS_RUNNING_NODES_TYPE = ("cloud", "nat", "ethernet_switch", "ethernet_hub", "frame_relay_switch", "atm_switch")
for node in self._nodes:
if node["node"].compute.id == "local" and node["node"].node_type in ALWAYS_RUNNING_NODES_TYPE and node["node"].status == "started":
+1 -1
View File
@@ -57,7 +57,7 @@ class CrashReport:
Report crash to a third party service
"""
DSN = "https://ffea69bec1b4f934d815234ea0046382@o19455.ingest.sentry.io/38482"
DSN = "https://ec32b24c329df619c8b9b1c58cfedcdb@o19455.ingest.us.sentry.io/38482"
_instance = None
def __init__(self):
@@ -268,7 +268,7 @@ class ATMSwitchHandler:
response.json({"pcap_file_path": pcap_file_path})
@Route.post(
r"/projects/{project_id}/atm_relay_switch/nodes/{node_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/stop_capture",
r"/projects/{project_id}/atm_switch/nodes/{node_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/stop_capture",
parameters={
"project_id": "Project UUID",
"node_id": "Node UUID",
@@ -290,7 +290,7 @@ class ATMSwitchHandler:
response.set_status(204)
@Route.get(
r"/projects/{project_id}/atm_relay_switch/nodes/{node_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/pcap",
r"/projects/{project_id}/atm_switch/nodes/{node_id}/adapters/{adapter_number:\d+}/ports/{port_number:\d+}/pcap",
description="Stream the pcap capture file",
parameters={
"project_id": "Project UUID",
+3 -3
View File
@@ -235,9 +235,9 @@ def run():
return
log.info("HTTP authentication is enabled with username '{}'".format(user))
# we only support Python 3 version >= 3.6
if sys.version_info < (3, 6, 0):
raise SystemExit("Python 3.6 or higher is required")
# we only support Python 3 version >= 3.8
if sys.version_info < (3, 8, 0):
raise SystemExit("Python 3.8 or higher is required")
user_log.info("Running with Python {major}.{minor}.{micro} and has PID {pid}".format(major=sys.version_info[0], minor=sys.version_info[1],
micro=sys.version_info[2], pid=os.getpid()))
+1 -1
View File
@@ -46,6 +46,6 @@
gtag('config', 'G-5D6FZL9923');
</script>
<script src="runtime.ecefb4ce510d1c218e7d.js" defer></script><script src="polyfills-es5.865074f5cd9a121111a2.js" nomodule defer></script><script src="polyfills.2f91a039d848e57ff02e.js" defer></script><script src="main.054d2e56a89c0b6f1b49.js" defer></script>
<script src="runtime.415291667f70565cd8ef.js" defer></script><script src="polyfills-es5.865074f5cd9a121111a2.js" nomodule defer></script><script src="polyfills.2f91a039d848e57ff02e.js" defer></script><script src="main.0e7dc9152b2aa567227c.js" defer></script>
</body></html>
@@ -1 +0,0 @@
(self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[]).push([[179],{98255:function(ue){function q(f){return Promise.resolve().then(function(){var B=new Error("Cannot find module '"+f+"'");throw B.code="MODULE_NOT_FOUND",B})}q.keys=function(){return[]},q.resolve=q,q.id=98255,ue.exports=q},82908:function(ue){ue.exports=function(f,B){(null==B||B>f.length)&&(B=f.length);for(var U=0,V=new Array(B);U<B;U++)V[U]=f[U];return V},ue.exports.default=ue.exports,ue.exports.__esModule=!0},36457:function(ue){ue.exports=function(f){if(Array.isArray(f))return f},ue.exports.default=ue.exports,ue.exports.__esModule=!0},35036:function(ue){ue.exports=function(f,B){var U=null==f?null:"undefined"!=typeof Symbol&&f[Symbol.iterator]||f["@@iterator"];if(null!=U){var N,b,V=[],Z=!0,w=!1;try{for(U=U.call(f);!(Z=(N=U.next()).done)&&(V.push(N.value),!B||V.length!==B);Z=!0);}catch(_){w=!0,b=_}finally{try{!Z&&null!=U.return&&U.return()}finally{if(w)throw b}}return V}},ue.exports.default=ue.exports,ue.exports.__esModule=!0},13969:function(ue){ue.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},ue.exports.default=ue.exports,ue.exports.__esModule=!0},6326:function(ue,q,f){var B=f(36457),U=f(35036),V=f(54850),Z=f(13969);ue.exports=function(N,b){return B(N)||U(N,b)||V(N,b)||Z()},ue.exports.default=ue.exports,ue.exports.__esModule=!0},54850:function(ue,q,f){var B=f(82908);ue.exports=function(V,Z){if(V){if("string"==typeof V)return B(V,Z);var w=Object.prototype.toString.call(V).slice(8,-1);if("Object"===w&&V.constructor&&(w=V.constructor.name),"Map"===w||"Set"===w)return Array.from(V);if("Arguments"===w||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(w))return B(V,Z)}},ue.exports.default=ue.exports,ue.exports.__esModule=!0},26552:function(ue,q,f){ue.exports=f(55590)},61855:function(ue,q,f){"use strict";f.d(q,{ZT:function(){return U},mG:function(){return _},Jh:function(){return I},ev:function(){return R}});var B=function($,ae){return(B=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(se,ce){se.__proto__=ce}||function(se,ce){for(var le in ce)Object.prototype.hasOwnProperty.call(ce,le)&&(se[le]=ce[le])})($,ae)};function U($,ae){if("function"!=typeof ae&&null!==ae)throw new TypeError("Class extends value "+String(ae)+" is not a constructor or null");function se(){this.constructor=$}B($,ae),$.prototype=null===ae?Object.create(ae):(se.prototype=ae.prototype,new se)}function _($,ae,se,ce){return new(se||(se=Promise))(function(oe,Ae){function be(_t){try{qe(ce.next(_t))}catch(yt){Ae(yt)}}function it(_t){try{qe(ce.throw(_t))}catch(yt){Ae(yt)}}function qe(_t){_t.done?oe(_t.value):function(oe){return oe instanceof se?oe:new se(function(Ae){Ae(oe)})}(_t.value).then(be,it)}qe((ce=ce.apply($,ae||[])).next())})}function I($,ae){var ce,le,oe,Ae,se={label:0,sent:function(){if(1&oe[0])throw oe[1];return oe[1]},trys:[],ops:[]};return Ae={next:be(0),throw:be(1),return:be(2)},"function"==typeof Symbol&&(Ae[Symbol.iterator]=function(){return this}),Ae;function be(qe){return function(_t){return function(qe){if(ce)throw new TypeError("Generator is already executing.");for(;se;)try{if(ce=1,le&&(oe=2&qe[0]?le.return:qe[0]?le.throw||((oe=le.return)&&oe.call(le),0):le.next)&&!(oe=oe.call(le,qe[1])).done)return oe;switch(le=0,oe&&(qe=[2&qe[0],oe.value]),qe[0]){case 0:case 1:oe=qe;break;case 4:return se.label++,{value:qe[1],done:!1};case 5:se.label++,le=qe[1],qe=[0];continue;case 7:qe=se.ops.pop(),se.trys.pop();continue;default:if(!(oe=(oe=se.trys).length>0&&oe[oe.length-1])&&(6===qe[0]||2===qe[0])){se=0;continue}if(3===qe[0]&&(!oe||qe[1]>oe[0]&&qe[1]<oe[3])){se.label=qe[1];break}if(6===qe[0]&&se.label<oe[1]){se.label=oe[1],oe=qe;break}if(oe&&se.label<oe[2]){se.label=oe[2],se.ops.push(qe);break}oe[2]&&se.ops.pop(),se.trys.pop();continue}qe=ae.call($,se)}catch(_t){qe=[6,_t],le=0}finally{ce=oe=0}if(5&qe[0])throw qe[1];return{value:qe[0]?qe[1]:void 0,done:!0}}([qe,_t])}}}function R($,ae,se){if(se||2===arguments.length)for(var oe,ce=0,le=ae.length;ce<le;ce++)(oe||!(ce in ae))&&(oe||(oe=Array.prototype.slice.call(ae,0,ce)),oe[ce]=ae[ce]);return $.concat(oe||Array.prototype.slice.call(ae))}},739:function(ue,q,f){"use strict";f.d(q,{l3:function(){return w},_j:function(){return V},LC:function(){return Z},ZN:function(){return O},jt:function(){return b},pV:function(){return T},F4:function(){return S},IO:function(){return k},vP:function(){return I},SB:function(){return A},oB:function(){return D},eR:function(){return v},X$:function(){return N},ZE:function(){return F},k1:function(){return z}});var B=f(14105),U=f(18967),V=function K(){(0,U.Z)(this,K)},Z=function K(){(0,U.Z)(this,K)},w="*";function N(K,j){return{type:7,name:K,definitions:j,options:{}}}function b(K){var j=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:4,styles:j,timings:K}}function I(K){var j=arguments.length>1&&void 0!==arguments[1]?arguments[1]Line truncated
@@ -0,0 +1 @@
(self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[]).push([[179],{98255:function(ue){function q(f){return Promise.resolve().then(function(){var B=new Error("Cannot find module '"+f+"'");throw B.code="MODULE_NOT_FOUND",B})}q.keys=function(){return[]},q.resolve=q,q.id=98255,ue.exports=q},82908:function(ue){ue.exports=function(f,B){(null==B||B>f.length)&&(B=f.length);for(var U=0,V=new Array(B);U<B;U++)V[U]=f[U];return V},ue.exports.default=ue.exports,ue.exports.__esModule=!0},36457:function(ue){ue.exports=function(f){if(Array.isArray(f))return f},ue.exports.default=ue.exports,ue.exports.__esModule=!0},35036:function(ue){ue.exports=function(f,B){var U=null==f?null:"undefined"!=typeof Symbol&&f[Symbol.iterator]||f["@@iterator"];if(null!=U){var N,b,V=[],Z=!0,w=!1;try{for(U=U.call(f);!(Z=(N=U.next()).done)&&(V.push(N.value),!B||V.length!==B);Z=!0);}catch(_){w=!0,b=_}finally{try{!Z&&null!=U.return&&U.return()}finally{if(w)throw b}}return V}},ue.exports.default=ue.exports,ue.exports.__esModule=!0},13969:function(ue){ue.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},ue.exports.default=ue.exports,ue.exports.__esModule=!0},6326:function(ue,q,f){var B=f(36457),U=f(35036),V=f(54850),Z=f(13969);ue.exports=function(N,b){return B(N)||U(N,b)||V(N,b)||Z()},ue.exports.default=ue.exports,ue.exports.__esModule=!0},54850:function(ue,q,f){var B=f(82908);ue.exports=function(V,Z){if(V){if("string"==typeof V)return B(V,Z);var w=Object.prototype.toString.call(V).slice(8,-1);if("Object"===w&&V.constructor&&(w=V.constructor.name),"Map"===w||"Set"===w)return Array.from(V);if("Arguments"===w||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(w))return B(V,Z)}},ue.exports.default=ue.exports,ue.exports.__esModule=!0},26552:function(ue,q,f){ue.exports=f(55590)},61855:function(ue,q,f){"use strict";f.d(q,{ZT:function(){return U},mG:function(){return _},Jh:function(){return I},ev:function(){return R}});var B=function($,ae){return(B=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(se,ce){se.__proto__=ce}||function(se,ce){for(var le in ce)Object.prototype.hasOwnProperty.call(ce,le)&&(se[le]=ce[le])})($,ae)};function U($,ae){if("function"!=typeof ae&&null!==ae)throw new TypeError("Class extends value "+String(ae)+" is not a constructor or null");function se(){this.constructor=$}B($,ae),$.prototype=null===ae?Object.create(ae):(se.prototype=ae.prototype,new se)}function _($,ae,se,ce){return new(se||(se=Promise))(function(oe,Ae){function be(_t){try{qe(ce.next(_t))}catch(yt){Ae(yt)}}function it(_t){try{qe(ce.throw(_t))}catch(yt){Ae(yt)}}function qe(_t){_t.done?oe(_t.value):function(oe){return oe instanceof se?oe:new se(function(Ae){Ae(oe)})}(_t.value).then(be,it)}qe((ce=ce.apply($,ae||[])).next())})}function I($,ae){var ce,le,oe,Ae,se={label:0,sent:function(){if(1&oe[0])throw oe[1];return oe[1]},trys:[],ops:[]};return Ae={next:be(0),throw:be(1),return:be(2)},"function"==typeof Symbol&&(Ae[Symbol.iterator]=function(){return this}),Ae;function be(qe){return function(_t){return function(qe){if(ce)throw new TypeError("Generator is already executing.");for(;se;)try{if(ce=1,le&&(oe=2&qe[0]?le.return:qe[0]?le.throw||((oe=le.return)&&oe.call(le),0):le.next)&&!(oe=oe.call(le,qe[1])).done)return oe;switch(le=0,oe&&(qe=[2&qe[0],oe.value]),qe[0]){case 0:case 1:oe=qe;break;case 4:return se.label++,{value:qe[1],done:!1};case 5:se.label++,le=qe[1],qe=[0];continue;case 7:qe=se.ops.pop(),se.trys.pop();continue;default:if(!(oe=(oe=se.trys).length>0&&oe[oe.length-1])&&(6===qe[0]||2===qe[0])){se=0;continue}if(3===qe[0]&&(!oe||qe[1]>oe[0]&&qe[1]<oe[3])){se.label=qe[1];break}if(6===qe[0]&&se.label<oe[1]){se.label=oe[1],oe=qe;break}if(oe&&se.label<oe[2]){se.label=oe[2],se.ops.push(qe);break}oe[2]&&se.ops.pop(),se.trys.pop();continue}qe=ae.call($,se)}catch(_t){qe=[6,_t],le=0}finally{ce=oe=0}if(5&qe[0])throw qe[1];return{value:qe[0]?qe[1]:void 0,done:!0}}([qe,_t])}}}function R($,ae,se){if(se||2===arguments.length)for(var oe,ce=0,le=ae.length;ce<le;ce++)(oe||!(ce in ae))&&(oe||(oe=Array.prototype.slice.call(ae,0,ce)),oe[ce]=ae[ce]);return $.concat(oe||Array.prototype.slice.call(ae))}},739:function(ue,q,f){"use strict";f.d(q,{l3:function(){return w},_j:function(){return V},LC:function(){return Z},ZN:function(){return O},jt:function(){return b},pV:function(){return T},F4:function(){return S},IO:function(){return k},vP:function(){return I},SB:function(){return A},oB:function(){return D},eR:function(){return v},X$:function(){return N},ZE:function(){return F},k1:function(){return z}});var B=f(14105),U=f(18967),V=function K(){(0,U.Z)(this,K)},Z=function K(){(0,U.Z)(this,K)},w="*";function N(K,j){return{type:7,name:K,definitions:j,options:{}}}function b(K){var j=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:4,styles:j,timings:K}}function I(K){var j=arguments.length>1&&void 0!==arguments[1]?arguments[1]Line truncated
@@ -1 +1 @@
!function(){"use strict";var e,v={},g={};function n(e){var a=g[e];if(void 0!==a)return a.exports;var t=g[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=v,e=[],n.O=function(a,t,u,o){if(!t){var r=1/0;for(i=0;i<e.length;i++){t=e[i][0],u=e[i][1],o=e[i][2];for(var l=!0,f=0;f<t.length;f++)(!1&o||r>=o)&&Object.keys(n.O).every(function(b){return n.O[b](t[f])})?t.splice(f--,1):(l=!1,o<r&&(r=o));if(l){e.splice(i--,1);var s=u();void 0!==s&&(a=s)}}return a}o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[t,u,o]},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,{a:a}),a},n.d=function(e,a){for(var t in a)n.o(a,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(a,t){return n.f[t](e,a),a},[]))},n.u=function(e){return e+".49028ab13de5de406c90.js"},n.miniCssF=function(e){return"styles.f8555f2eecf8cf87f666.css"},n.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},n.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},function(){var e={},a="gns3-web-ui:";n.l=function(t,u,o,i){if(e[t])e[t].push(u);else{var r,l;if(void 0!==o)for(var f=document.getElementsByTagName("script"),s=0;s<f.length;s++){var c=f[s];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==a+o){r=c;break}}r||(l=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",a+o),r.src=n.tu(t)),e[t]=[u];var d=function(h,b){r.onerror=r.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],r.parentNode&&r.parentNode.removeChild(r),_&&_.forEach(function(m){return m(b)}),h)return h(b)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=d.bind(null,r.onerror),r.onload=d.bind(null,r.onload),l&&document.head.appendChild(r)}}}(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e;n.tu=function(a){return void 0===e&&(e={createScriptURL:function(t){return t}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e.createScriptURL(a)}}(),n.p="",function(){var e={666:0};n.f.j=function(u,o){var i=n.o(e,u)?e[u]:void 0;if(0!==i)if(i)o.push(i[2]);else if(666!=u){var r=new Promise(function(c,d){i=e[u]=[c,d]});o.push(i[2]=r);var l=n.p+n.u(u),f=new Error;n.l(l,function(c){if(n.o(e,u)&&(0!==(i=e[u])&&(e[u]=void 0),i)){var d=c&&("load"===c.type?"missing":c.type),p=c&&c.target&&c.target.src;f.message="Loading chunk "+u+" failed.\n("+d+": "+p+")",f.name="ChunkLoadError",f.type=d,f.request=p,i[1](f)}},"chunk-"+u,u)}else e[u]=0},n.O.j=function(u){return 0===e[u]};var a=function(u,o){var f,s,i=o[0],r=o[1],l=o[2],c=0;for(f in r)n.o(r,f)&&(n.m[f]=r[f]);if(l)var d=l(n);for(u&&u(o);c<i.length;c++)n.o(e,s=i[c])&&e[s]&&e[s][0](),e[i[c]]=0;return n.O(d)},t=self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))}()}();
!function(){"use strict";var e,v={},g={};function n(e){var a=g[e];if(void 0!==a)return a.exports;var t=g[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=v,e=[],n.O=function(a,t,u,o){if(!t){var r=1/0;for(i=0;i<e.length;i++){t=e[i][0],u=e[i][1],o=e[i][2];for(var l=!0,f=0;f<t.length;f++)(!1&o||r>=o)&&Object.keys(n.O).every(function(b){return n.O[b](t[f])})?t.splice(f--,1):(l=!1,o<r&&(r=o));if(l){e.splice(i--,1);var s=u();void 0!==s&&(a=s)}}return a}o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[t,u,o]},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,{a:a}),a},n.d=function(e,a){for(var t in a)n.o(a,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(a,t){return n.f[t](e,a),a},[]))},n.u=function(e){return e+".77d4bfd104f37c42e028.js"},n.miniCssF=function(e){return"styles.f8555f2eecf8cf87f666.css"},n.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},n.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},function(){var e={},a="gns3-web-ui:";n.l=function(t,u,o,i){if(e[t])e[t].push(u);else{var r,l;if(void 0!==o)for(var f=document.getElementsByTagName("script"),s=0;s<f.length;s++){var c=f[s];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==a+o){r=c;break}}r||(l=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",a+o),r.src=n.tu(t)),e[t]=[u];var d=function(h,b){r.onerror=r.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],r.parentNode&&r.parentNode.removeChild(r),_&&_.forEach(function(m){return m(b)}),h)return h(b)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=d.bind(null,r.onerror),r.onload=d.bind(null,r.onload),l&&document.head.appendChild(r)}}}(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e;n.tu=function(a){return void 0===e&&(e={createScriptURL:function(t){return t}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e.createScriptURL(a)}}(),n.p="",function(){var e={666:0};n.f.j=function(u,o){var i=n.o(e,u)?e[u]:void 0;if(0!==i)if(i)o.push(i[2]);else if(666!=u){var r=new Promise(function(c,d){i=e[u]=[c,d]});o.push(i[2]=r);var l=n.p+n.u(u),f=new Error;n.l(l,function(c){if(n.o(e,u)&&(0!==(i=e[u])&&(e[u]=void 0),i)){var d=c&&("load"===c.type?"missing":c.type),p=c&&c.target&&c.target.src;f.message="Loading chunk "+u+" failed.\n("+d+": "+p+")",f.name="ChunkLoadError",f.type=d,f.request=p,i[1](f)}},"chunk-"+u,u)}else e[u]=0},n.O.j=function(u){return 0===e[u]};var a=function(u,o){var f,s,i=o[0],r=o[1],l=o[2],c=0;for(f in r)n.o(r,f)&&(n.m[f]=r[f]);if(l)var d=l(n);for(u&&u(o);c<i.length;c++)n.o(e,s=i[c])&&e[s]&&e[s][0](),e[i[c]]=0;return n.O(d)},t=self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))}()}();
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
version="1.1"
id="svg8"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs12" /><sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958275"
inkscape:cy="30"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<circle
cx="150"
cy="150"
r="150"
style="fill:#fffefe"
id="circle2" />
<path
d="M150 0c82.787 0 150 67.213 150 150s-67.213 150-150 150S0 232.787 0 150 67.213 0 150 0Zm0 16c73.957 0 134 60.043 134 134s-60.043 134-134 134S16 223.957 16 150 76.043 16 150 16Z"
style="fill:#2d67b9"
id="path4" />
<path
d="M 125.73252,227.39216 C 162.6821,181.25328 159.68479,109.80627 119.01184,67.8525 l -0.0404,-0.0415 a 8.4262645,9.5474485 0 0 1 -0.51796,-13.437497 c 3.1284,-3.89368 8.4597,-4.177124 11.89613,-0.632472 47.587,49.085569 51.05025,132.713399 7.72895,186.632269 -3.1284,3.89367 -8.45969,4.17712 -11.89613,0.63246 a 8.4262645,9.5474485 0 0 1 -0.5582,-13.47898 z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:1.37905;stroke-linejoin:round;stroke-miterlimit:2"
id="path8" /><path
d="M 55.837588,106.71509 H 105.55874 L 95.373313,97.858202 H 111.1846 l 15.82341,13.759468 -15.82341,13.75882 H 95.389703 l 10.317287,-8.97155 H 55.837588 Z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-3" /><path
d="M 55.837592,146.71508 H 105.55874 L 95.373313,137.85819 H 111.1846 l 15.82341,13.75947 -15.82341,13.75883 H 95.389703 l 10.317287,-8.97155 H 55.837592 Z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-3-5" /><path
d="m 185.83759,146.71508 h 49.72115 l -10.18542,-8.85689 h 15.81128 l 15.82341,13.75947 -15.82341,13.75883 h -15.79489 l 10.31728,-8.97155 h -49.8694 z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-3-5-2" /><path
d="M 55.837592,186.71508 H 105.55874 L 95.373313,177.85819 H 111.1846 l 15.82341,13.75947 -15.82341,13.75883 H 95.389703 l 10.317287,-8.97155 H 55.837592 Z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-3-5-6" /></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
version="1.1"
id="svg8"
sodipodi:docname="nat2.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs12" /><sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958275"
inkscape:cy="30"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<circle
cx="150"
cy="150"
r="150"
style="fill:#fffefe"
id="circle2" />
<path
d="M150 0c82.787 0 150 67.213 150 150s-67.213 150-150 150S0 232.787 0 150 67.213 0 150 0Zm0 16c73.957 0 134 60.043 134 134s-60.043 134-134 134S16 223.957 16 150 76.043 16 150 16Z"
style="fill:#2d67b9"
id="path4" />
<path
d="M93.524 228.429c-.175.003-.349.004-.524.004-21.764 0-39.433-17.669-39.433-39.433 0-19.528 14.227-35.76 32.872-38.888.478-34.678 28.775-62.679 63.561-62.679s63.083 28.001 63.561 62.679c18.645 3.128 32.872 19.36 32.872 38.888 0 21.764-17.669 39.433-39.433 39.433-.273 0-.545-.003-.815-.009v.005H93.524ZM93 215h114c14.037 0 25.433-11.396 25.433-25.433 0-12.32-8.779-22.606-20.417-24.937l-.223-.044-.086-.015-.225-.042-.087-.015-.225-.039-.091-.014-.223-.035-.095-.014-.22-.032-.102-.014-.214-.028-.11-.014-.207-.025-.12-.013-.198-.021-.13-.012-.19-.018-.14-.012-.181-.015-.151-.01-.171-.012-.162-.009-.161-.01-.174-.007-.15-.007-.19-.006-.136-.004-.215-.004-.111-.002-.328-.003-.318.002-.106.002-.212.004-.126.004-.19.006-.134.006-.182.008-.138.007-.176.01-.141.009-.173.013-.142.011-.17.014-.143.012-.169.016-.143.015-.168.018-.143.016-.166.02-.143.018-.166.022-.142.02-.167.024-.14.021-.168.027-.137.022-.178.031-.126.021-.295.055-.144.029-.157.031-.153.032-.146.031-.156.034-.141.032-.159.037-.138.033-.159.039-.135.034-.16.042-.134.035-.16.043-.131.037-.161.045-.13.038-.161.048-.127.039-.162.05-.125.039-.163.053-.122.04-.163.055-.119.041-.166.058-.113.04-.169.062-.087.032-.188.07-.147.057-.075.03A49.912 49.912 0 0 0 200 151c0-27.596-22.404-50-50-50s-50 22.404-50 50c0 5.18.789 10.177 2.253 14.874l-.075-.03-.147-.057-.188-.07-.087-.032-.169-.062-.113-.04-.166-.058-.119-.041-.163-.055-.122-.04-.163-.053-.125-.039-.162-.05-.127-.039-.161-.048-.13-.038-.161-.045-.131-.037-.16-.043-.134-.035-.16-.042-.135-.034-.159-.039-.138-.033-.159-.037-.141-.032-.156-.034-.146-.031-.153-.032-.157-.031-.144-.029-.295-.055-.126-.021-.178-.031-.137-.022-.168-.027-.14-.021-.167-.024-.142-.02-.166-.022-.143-.018-.166-.02-.143-.016-.168-.018-.143-.015-.169-.016-.143-.012-.17-.014-.142-.011-.173-.013-.141-.009-.176-.01-.138-.007-.182-.008-.134-.006-.19-.006-.126-.004-.212-.004-.106-.002-.318-.002-.328.003-.111.002-.215.004-.136.004-.19.006-.15.007-.174.007-.161.01-.162.009-.171.012-.151.01-.181.015-.14.012-.19.018-.13.012-.198.021-.12.013-.207.025-.11.014-.214.028-.102.014-.22.032-.095.014-.223.035-.091.014-.225.039-.087.015-.225.042-.086.015-.223.044c-11.638 2.331-20.417 12.617-20.417 24.937C67.567 203.604 78.963 215 93 215Z"
style="fill:#2d67b9"
transform="matrix(1.0372 0 0 .99188 -5.58 -13.784)"
id="path6" />
<path
d="m 114.18486,133.39431 h 50.31577 L 154.19339,122.4189 h 16.00038 l 16.01264,17.05067 -16.01264,17.04991 h -15.98379 l 10.44067,-11.1175 h -50.46579 z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-7" /><path
d="m 186.32326,162.03715 h -50.31577 l 10.30725,-10.97542 h -16.00039 l -16.01264,17.05067 16.01264,17.04991 h 15.98379 l -10.44067,-11.1175 h 50.46579 z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path10-5" /></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
version="1.1"
id="svg8"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs12" /><sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<circle
cx="150"
cy="150"
r="150"
style="fill:#fffefe"
id="circle2" />
<path
d="M150 0c82.787 0 150 67.213 150 150s-67.213 150-150 150S0 232.787 0 150 67.213 0 150 0Zm0 16c73.957 0 134 60.043 134 134s-60.043 134-134 134S16 223.957 16 150 76.043 16 150 16Z"
style="fill:#4d4d4d;fill-opacity:1"
id="path4" />
<path
d="M 125.73252,227.39216 C 162.6821,181.25328 159.68479,109.80627 119.01184,67.8525 l -0.0404,-0.0415 a 8.4262645,9.5474485 0 0 1 -0.51796,-13.437497 c 3.1284,-3.89368 8.4597,-4.177124 11.89613,-0.632472 47.587,49.085569 51.05025,132.713399 7.72895,186.632269 -3.1284,3.89367 -8.45969,4.17712 -11.89613,0.63246 a 8.4262645,9.5474485 0 0 1 -0.5582,-13.47898 z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:1.37905;stroke-linejoin:round;stroke-miterlimit:2;fill-opacity:1"
id="path8" /><path
d="M 55.837588,106.71509 H 105.55874 L 95.373313,97.858202 H 111.1846 l 15.82341,13.759468 -15.82341,13.75882 H 95.389703 l 10.317287,-8.97155 H 55.837588 Z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3" /><path
d="M 55.837592,146.71508 H 105.55874 L 95.373313,137.85819 H 111.1846 l 15.82341,13.75947 -15.82341,13.75883 H 95.389703 l 10.317287,-8.97155 H 55.837592 Z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5" /><path
d="m 185.83759,146.71508 h 49.72115 l -10.18542,-8.85689 h 15.81128 l 15.82341,13.75947 -15.82341,13.75883 h -15.79489 l 10.31728,-8.97155 h -49.8694 z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-2" /><path
d="M 55.837592,186.71508 H 105.55874 L 95.373313,177.85819 H 111.1846 l 15.82341,13.75947 -15.82341,13.75883 H 95.389703 l 10.317287,-8.97155 H 55.837592 Z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-6" /></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
version="1.1"
id="svg8"
sodipodi:docname="nat2.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs12" /><sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<circle
cx="150"
cy="150"
r="150"
style="fill:#fffefe"
id="circle2" />
<path
d="M150 0c82.787 0 150 67.213 150 150s-67.213 150-150 150S0 232.787 0 150 67.213 0 150 0Zm0 16c73.957 0 134 60.043 134 134s-60.043 134-134 134S16 223.957 16 150 76.043 16 150 16Z"
style="fill:#4d4d4d;fill-opacity:1"
id="path4" />
<path
d="M93.524 228.429c-.175.003-.349.004-.524.004-21.764 0-39.433-17.669-39.433-39.433 0-19.528 14.227-35.76 32.872-38.888.478-34.678 28.775-62.679 63.561-62.679s63.083 28.001 63.561 62.679c18.645 3.128 32.872 19.36 32.872 38.888 0 21.764-17.669 39.433-39.433 39.433-.273 0-.545-.003-.815-.009v.005H93.524ZM93 215h114c14.037 0 25.433-11.396 25.433-25.433 0-12.32-8.779-22.606-20.417-24.937l-.223-.044-.086-.015-.225-.042-.087-.015-.225-.039-.091-.014-.223-.035-.095-.014-.22-.032-.102-.014-.214-.028-.11-.014-.207-.025-.12-.013-.198-.021-.13-.012-.19-.018-.14-.012-.181-.015-.151-.01-.171-.012-.162-.009-.161-.01-.174-.007-.15-.007-.19-.006-.136-.004-.215-.004-.111-.002-.328-.003-.318.002-.106.002-.212.004-.126.004-.19.006-.134.006-.182.008-.138.007-.176.01-.141.009-.173.013-.142.011-.17.014-.143.012-.169.016-.143.015-.168.018-.143.016-.166.02-.143.018-.166.022-.142.02-.167.024-.14.021-.168.027-.137.022-.178.031-.126.021-.295.055-.144.029-.157.031-.153.032-.146.031-.156.034-.141.032-.159.037-.138.033-.159.039-.135.034-.16.042-.134.035-.16.043-.131.037-.161.045-.13.038-.161.048-.127.039-.162.05-.125.039-.163.053-.122.04-.163.055-.119.041-.166.058-.113.04-.169.062-.087.032-.188.07-.147.057-.075.03A49.912 49.912 0 0 0 200 151c0-27.596-22.404-50-50-50s-50 22.404-50 50c0 5.18.789 10.177 2.253 14.874l-.075-.03-.147-.057-.188-.07-.087-.032-.169-.062-.113-.04-.166-.058-.119-.041-.163-.055-.122-.04-.163-.053-.125-.039-.162-.05-.127-.039-.161-.048-.13-.038-.161-.045-.131-.037-.16-.043-.134-.035-.16-.042-.135-.034-.159-.039-.138-.033-.159-.037-.141-.032-.156-.034-.146-.031-.153-.032-.157-.031-.144-.029-.295-.055-.126-.021-.178-.031-.137-.022-.168-.027-.14-.021-.167-.024-.142-.02-.166-.022-.143-.018-.166-.02-.143-.016-.168-.018-.143-.015-.169-.016-.143-.012-.17-.014-.142-.011-.173-.013-.141-.009-.176-.01-.138-.007-.182-.008-.134-.006-.19-.006-.126-.004-.212-.004-.106-.002-.318-.002-.328.003-.111.002-.215.004-.136.004-.19.006-.15.007-.174.007-.161.01-.162.009-.171.012-.151.01-.181.015-.14.012-.19.018-.13.012-.198.021-.12.013-.207.025-.11.014-.214.028-.102.014-.22.032-.095.014-.223.035-.091.014-.225.039-.087.015-.225.042-.086.015-.223.044c-11.638 2.331-20.417 12.617-20.417 24.937C67.567 203.604 78.963 215 93 215Z"
style="fill:#4d4d4d;fill-opacity:1"
transform="matrix(1.0372 0 0 .99188 -5.58 -13.784)"
id="path6" />
<path
d="m 114.18486,133.39431 h 50.31577 L 154.19339,122.4189 h 16.00038 l 16.01264,17.05067 -16.01264,17.04991 h -15.98379 l 10.44067,-11.1175 h -50.46579 z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-7" /><path
d="m 186.32326,162.03715 h -50.31577 l 10.30725,-10.97542 h -16.00039 l -16.01264,17.05067 16.01264,17.04991 h 15.98379 l -10.44067,-11.1175 h 50.46579 z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path10-5" /></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
version="1.1"
id="svg8"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs12" /><sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<circle
cx="150"
cy="150"
r="150"
style="fill:#fffefe"
id="circle2" />
<path
d="M150 0c82.787 0 150 67.213 150 150s-67.213 150-150 150S0 232.787 0 150 67.213 0 150 0Zm0 16c73.957 0 134 60.043 134 134s-60.043 134-134 134S16 223.957 16 150 76.043 16 150 16Z"
style="fill:#109e00;fill-opacity:1"
id="path4" />
<path
d="M 125.73252,227.39216 C 162.6821,181.25328 159.68479,109.80627 119.01184,67.8525 l -0.0404,-0.0415 a 8.4262645,9.5474485 0 0 1 -0.51796,-13.437497 c 3.1284,-3.89368 8.4597,-4.177124 11.89613,-0.632472 47.587,49.085569 51.05025,132.713399 7.72895,186.632269 -3.1284,3.89367 -8.45969,4.17712 -11.89613,0.63246 a 8.4262645,9.5474485 0 0 1 -0.5582,-13.47898 z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:1.37905;stroke-linejoin:round;stroke-miterlimit:2;fill-opacity:1"
id="path8" /><path
d="M 55.837588,106.71509 H 105.55874 L 95.373313,97.858202 H 111.1846 l 15.82341,13.759468 -15.82341,13.75882 H 95.389703 l 10.317287,-8.97155 H 55.837588 Z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3" /><path
d="M 55.837592,146.71508 H 105.55874 L 95.373313,137.85819 H 111.1846 l 15.82341,13.75947 -15.82341,13.75883 H 95.389703 l 10.317287,-8.97155 H 55.837592 Z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5" /><path
d="m 185.83759,146.71508 h 49.72115 l -10.18542,-8.85689 h 15.81128 l 15.82341,13.75947 -15.82341,13.75883 h -15.79489 l 10.31728,-8.97155 h -49.8694 z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-2" /><path
d="M 55.837592,186.71508 H 105.55874 L 95.373313,177.85819 H 111.1846 l 15.82341,13.75947 -15.82341,13.75883 H 95.389703 l 10.317287,-8.97155 H 55.837592 Z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-6" /></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
version="1.1"
id="svg8"
sodipodi:docname="nat2.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs12" /><sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<circle
cx="150"
cy="150"
r="150"
style="fill:#fffefe"
id="circle2" />
<path
d="M150 0c82.787 0 150 67.213 150 150s-67.213 150-150 150S0 232.787 0 150 67.213 0 150 0Zm0 16c73.957 0 134 60.043 134 134s-60.043 134-134 134S16 223.957 16 150 76.043 16 150 16Z"
style="fill:#109e00;fill-opacity:1"
id="path4" />
<path
d="M93.524 228.429c-.175.003-.349.004-.524.004-21.764 0-39.433-17.669-39.433-39.433 0-19.528 14.227-35.76 32.872-38.888.478-34.678 28.775-62.679 63.561-62.679s63.083 28.001 63.561 62.679c18.645 3.128 32.872 19.36 32.872 38.888 0 21.764-17.669 39.433-39.433 39.433-.273 0-.545-.003-.815-.009v.005H93.524ZM93 215h114c14.037 0 25.433-11.396 25.433-25.433 0-12.32-8.779-22.606-20.417-24.937l-.223-.044-.086-.015-.225-.042-.087-.015-.225-.039-.091-.014-.223-.035-.095-.014-.22-.032-.102-.014-.214-.028-.11-.014-.207-.025-.12-.013-.198-.021-.13-.012-.19-.018-.14-.012-.181-.015-.151-.01-.171-.012-.162-.009-.161-.01-.174-.007-.15-.007-.19-.006-.136-.004-.215-.004-.111-.002-.328-.003-.318.002-.106.002-.212.004-.126.004-.19.006-.134.006-.182.008-.138.007-.176.01-.141.009-.173.013-.142.011-.17.014-.143.012-.169.016-.143.015-.168.018-.143.016-.166.02-.143.018-.166.022-.142.02-.167.024-.14.021-.168.027-.137.022-.178.031-.126.021-.295.055-.144.029-.157.031-.153.032-.146.031-.156.034-.141.032-.159.037-.138.033-.159.039-.135.034-.16.042-.134.035-.16.043-.131.037-.161.045-.13.038-.161.048-.127.039-.162.05-.125.039-.163.053-.122.04-.163.055-.119.041-.166.058-.113.04-.169.062-.087.032-.188.07-.147.057-.075.03A49.912 49.912 0 0 0 200 151c0-27.596-22.404-50-50-50s-50 22.404-50 50c0 5.18.789 10.177 2.253 14.874l-.075-.03-.147-.057-.188-.07-.087-.032-.169-.062-.113-.04-.166-.058-.119-.041-.163-.055-.122-.04-.163-.053-.125-.039-.162-.05-.127-.039-.161-.048-.13-.038-.161-.045-.131-.037-.16-.043-.134-.035-.16-.042-.135-.034-.159-.039-.138-.033-.159-.037-.141-.032-.156-.034-.146-.031-.153-.032-.157-.031-.144-.029-.295-.055-.126-.021-.178-.031-.137-.022-.168-.027-.14-.021-.167-.024-.142-.02-.166-.022-.143-.018-.166-.02-.143-.016-.168-.018-.143-.015-.169-.016-.143-.012-.17-.014-.142-.011-.173-.013-.141-.009-.176-.01-.138-.007-.182-.008-.134-.006-.19-.006-.126-.004-.212-.004-.106-.002-.318-.002-.328.003-.111.002-.215.004-.136.004-.19.006-.15.007-.174.007-.161.01-.162.009-.171.012-.151.01-.181.015-.14.012-.19.018-.13.012-.198.021-.12.013-.207.025-.11.014-.214.028-.102.014-.22.032-.095.014-.223.035-.091.014-.225.039-.087.015-.225.042-.086.015-.223.044c-11.638 2.331-20.417 12.617-20.417 24.937C67.567 203.604 78.963 215 93 215Z"
style="fill:#109e00;fill-opacity:1"
transform="matrix(1.0372 0 0 .99188 -5.58 -13.784)"
id="path6" />
<path
d="m 114.18486,133.39431 h 50.31577 L 154.19339,122.4189 h 16.00038 l 16.01264,17.05067 -16.01264,17.04991 h -15.98379 l 10.44067,-11.1175 h -50.46579 z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-7" /><path
d="m 186.32326,162.03715 h -50.31577 l 10.30725,-10.97542 h -16.00039 l -16.01264,17.05067 16.01264,17.04991 h 15.98379 l -10.44067,-11.1175 h 50.46579 z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path10-5" /></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
version="1.1"
id="svg8"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs12" /><sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<circle
cx="150"
cy="150"
r="150"
style="fill:#fffefe"
id="circle2" />
<path
d="M150 0c82.787 0 150 67.213 150 150s-67.213 150-150 150S0 232.787 0 150 67.213 0 150 0Zm0 16c73.957 0 134 60.043 134 134s-60.043 134-134 134S16 223.957 16 150 76.043 16 150 16Z"
style="fill:#e3292e;fill-opacity:1"
id="path4" />
<path
d="M 125.73252,227.39216 C 162.6821,181.25328 159.68479,109.80627 119.01184,67.8525 l -0.0404,-0.0415 a 8.4262645,9.5474485 0 0 1 -0.51796,-13.437497 c 3.1284,-3.89368 8.4597,-4.177124 11.89613,-0.632472 47.587,49.085569 51.05025,132.713399 7.72895,186.632269 -3.1284,3.89367 -8.45969,4.17712 -11.89613,0.63246 a 8.4262645,9.5474485 0 0 1 -0.5582,-13.47898 z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:1.37905;stroke-linejoin:round;stroke-miterlimit:2;fill-opacity:1"
id="path8" /><path
d="M 55.837588,106.71509 H 105.55874 L 95.373313,97.858202 H 111.1846 l 15.82341,13.759468 -15.82341,13.75882 H 95.389703 l 10.317287,-8.97155 H 55.837588 Z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3" /><path
d="M 55.837592,146.71508 H 105.55874 L 95.373313,137.85819 H 111.1846 l 15.82341,13.75947 -15.82341,13.75883 H 95.389703 l 10.317287,-8.97155 H 55.837592 Z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5" /><path
d="m 185.83759,146.71508 h 49.72115 l -10.18542,-8.85689 h 15.81128 l 15.82341,13.75947 -15.82341,13.75883 h -15.79489 l 10.31728,-8.97155 h -49.8694 z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-2" /><path
d="M 55.837592,186.71508 H 105.55874 L 95.373313,177.85819 H 111.1846 l 15.82341,13.75947 -15.82341,13.75883 H 95.389703 l 10.317287,-8.97155 H 55.837592 Z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-6" /></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
version="1.1"
id="svg8"
sodipodi:docname="nat2.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs12" /><sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<circle
cx="150"
cy="150"
r="150"
style="fill:#fffefe"
id="circle2" />
<path
d="M150 0c82.787 0 150 67.213 150 150s-67.213 150-150 150S0 232.787 0 150 67.213 0 150 0Zm0 16c73.957 0 134 60.043 134 134s-60.043 134-134 134S16 223.957 16 150 76.043 16 150 16Z"
style="fill:#e3292e;fill-opacity:1"
id="path4" />
<path
d="M93.524 228.429c-.175.003-.349.004-.524.004-21.764 0-39.433-17.669-39.433-39.433 0-19.528 14.227-35.76 32.872-38.888.478-34.678 28.775-62.679 63.561-62.679s63.083 28.001 63.561 62.679c18.645 3.128 32.872 19.36 32.872 38.888 0 21.764-17.669 39.433-39.433 39.433-.273 0-.545-.003-.815-.009v.005H93.524ZM93 215h114c14.037 0 25.433-11.396 25.433-25.433 0-12.32-8.779-22.606-20.417-24.937l-.223-.044-.086-.015-.225-.042-.087-.015-.225-.039-.091-.014-.223-.035-.095-.014-.22-.032-.102-.014-.214-.028-.11-.014-.207-.025-.12-.013-.198-.021-.13-.012-.19-.018-.14-.012-.181-.015-.151-.01-.171-.012-.162-.009-.161-.01-.174-.007-.15-.007-.19-.006-.136-.004-.215-.004-.111-.002-.328-.003-.318.002-.106.002-.212.004-.126.004-.19.006-.134.006-.182.008-.138.007-.176.01-.141.009-.173.013-.142.011-.17.014-.143.012-.169.016-.143.015-.168.018-.143.016-.166.02-.143.018-.166.022-.142.02-.167.024-.14.021-.168.027-.137.022-.178.031-.126.021-.295.055-.144.029-.157.031-.153.032-.146.031-.156.034-.141.032-.159.037-.138.033-.159.039-.135.034-.16.042-.134.035-.16.043-.131.037-.161.045-.13.038-.161.048-.127.039-.162.05-.125.039-.163.053-.122.04-.163.055-.119.041-.166.058-.113.04-.169.062-.087.032-.188.07-.147.057-.075.03A49.912 49.912 0 0 0 200 151c0-27.596-22.404-50-50-50s-50 22.404-50 50c0 5.18.789 10.177 2.253 14.874l-.075-.03-.147-.057-.188-.07-.087-.032-.169-.062-.113-.04-.166-.058-.119-.041-.163-.055-.122-.04-.163-.053-.125-.039-.162-.05-.127-.039-.161-.048-.13-.038-.161-.045-.131-.037-.16-.043-.134-.035-.16-.042-.135-.034-.159-.039-.138-.033-.159-.037-.141-.032-.156-.034-.146-.031-.153-.032-.157-.031-.144-.029-.295-.055-.126-.021-.178-.031-.137-.022-.168-.027-.14-.021-.167-.024-.142-.02-.166-.022-.143-.018-.166-.02-.143-.016-.168-.018-.143-.015-.169-.016-.143-.012-.17-.014-.142-.011-.173-.013-.141-.009-.176-.01-.138-.007-.182-.008-.134-.006-.19-.006-.126-.004-.212-.004-.106-.002-.318-.002-.328.003-.111.002-.215.004-.136.004-.19.006-.15.007-.174.007-.161.01-.162.009-.171.012-.151.01-.181.015-.14.012-.19.018-.13.012-.198.021-.12.013-.207.025-.11.014-.214.028-.102.014-.22.032-.095.014-.223.035-.091.014-.225.039-.087.015-.225.042-.086.015-.223.044c-11.638 2.331-20.417 12.617-20.417 24.937C67.567 203.604 78.963 215 93 215Z"
style="fill:#e3292e;fill-opacity:1"
transform="matrix(1.0372 0 0 .99188 -5.58 -13.784)"
id="path6" />
<path
d="m 114.18486,133.39431 h 50.31577 L 154.19339,122.4189 h 16.00038 l 16.01264,17.05067 -16.01264,17.04991 h -15.98379 l 10.44067,-11.1175 h -50.46579 z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-7" /><path
d="m 186.32326,162.03715 h -50.31577 l 10.30725,-10.97542 h -16.00039 l -16.01264,17.05067 16.01264,17.04991 h 15.98379 l -10.44067,-11.1175 h 50.46579 z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path10-5" /></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421"
version="1.1"
id="svg18"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs22" /><sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958275"
inkscape:cy="30"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg18" />
<path
d="M300 30.271C300 13.564 286.436 0 269.729 0H30.271C13.564 0 0 13.564 0 30.271v239.458C0 286.436 13.564 300 30.271 300h239.458C286.436 300 300 286.436 300 269.729V30.271Z"
style="fill:#fffefe"
id="path2" /><path
d="m 126.0992,224.81393 c 36.94958,-46.13888 33.95227,-117.5859 -6.72068,-159.539672 l -0.0404,-0.0415 a 8.4262645,9.5474485 0 0 1 -0.51796,-13.437497 c 3.1284,-3.89368 8.4597,-4.177124 11.89613,-0.632472 47.587,49.085571 51.05025,132.713411 7.72895,186.632281 -3.1284,3.89367 -8.45969,4.17712 -11.89613,0.63246 a 8.4262645,9.5474485 0 0 1 -0.5582,-13.47898 z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:1.37905;stroke-linejoin:round;stroke-miterlimit:2"
id="path8" />
<path
d="m269.925.001.195.001.39.008.195.005.194.007.194.008.193.009.386.022.193.013.192.014.192.016.191.016.192.018.191.018.19.02.38.044.19.023.189.025.188.026.189.027.188.028.187.029.188.031.186.031.187.033.186.034.186.035.185.036.185.037.368.078.184.041.183.042.183.043.182.043.364.092.181.047.18.048.181.05.179.05.18.052.179.052.178.054.178.055.177.056.177.057.177.058.176.059.175.06.175.061.175.062.174.063.174.064.173.066.172.066.172.067.172.068.171.07.17.07.17.071.17.073.169.073.168.074.168.076.167.076.167.077.332.158.165.08.165.081.164.083.163.083.163.084.162.085.162.086.161.087.161.088.16.088.159.09.159.091.316.184.157.094.156.094.156.095.155.096.308.196.306.198.152.101.302.204.15.104.149.104.149.105.148.106.294.214.146.109.145.109.145.111.144.111.143.112.143.113.142.113.282.23.139.116.14.117.276.236.137.12.136.12.135.121.135.122.134.122.134.124.132.124.132.125.131.125.26.254.129.128.128.129.254.26.125.131.125.132.124.132.124.134.122.134.122.135.121.135.12.136.12.137.236.276.117.14.116.139.23.282.113.142.113.143.112.143.111.144.111.145.109.145.109.146.214.294.106.148.105.149.104.149.104.15.204.302.101.152.198.306.196.308.096.155.095.156.094.156.094.157.184.316.091.159.09.159.088.16.088.161.087.161.086.162.085.162.084.163.083.163.083.164.081.165.08.165.158.332.077.167.076.167.076.168.074.168.073.169.073.17.071.17.07.17.07.171.068.172.067.172.066.172.066.173.064.174.063.174.062.175.061.175.06.175.059.176.058.177.057.177.056.177.055.178.054.178.052.179.052.18.05.179.05.181.048.18.047.181.092.364.043.182.043.183.042.183.041.184.078.368.037.185.036.185.035.186.034.186.033.187.031.186.031.188.029.187.028.188.027.189.026.188.025.189.023.19.044.38.02.19.018.191.018.192.016.191.016.192.014.192.013.193.022.386.009.193.008.194.007.194.005.195.008.39.002.391v239.458l-.001.196-.001.195-.004.195-.004.195-.005.195-.007.194-.008.194-.009.193-.011.193-.011.193-.013.193-.014.192-.016.192-.016.191-.018.192-.018.191-.02.19-.022.19-.022.19-.023.19-.025.189-.026.188-.027.189-.028.188-.029.187-.031.188-.031.186-.033.187-.034.186-.035.186-.036.185-.037.185-.039.184-.039.184-.041.184-.042.183-.043.183-.043.182-.046.182-.046.182-.047.181-.048.18-.05.181-.05.179-.052.18-.052.179-.054.178-.055.178-.056.177-.057.177-.058.177-.059.176-.06.175-.061.175-.062.175-.063.174-.064.174-.066.173-.066.172-.067.172-.068.172-.07.171-.07.17-.071.17-.073.17-.073.169-.074.168-.076.168-.076.167-.077.167-.079.166-.079.166-.08.165-.081.165-.083.164-.083.163-.084.163-.085.162-.086.162-.087.161-.088.161-.088.16-.09.159-.091.159-.092.158-.092.158-.094.157-.094.156-.095.156-.096.155-.098.154-.098.154-.099.153-.099.153-.101.152-.102.151-.102.151-.104.15-.104.149-.105.149-.106.148-.107.147-.107.147-.109.146-.109.145-.111.145-.111.144-.112.143-.113.143-.113.142-.115.141-.115.141-.116.139-.117.14-.118.138-.118.138-.12.137-.12.136-.121.135-.122.135-.122.134-.124.134-.124.132-.125.132-.125.131-.127.13-.127.13-.128.129-.129.128-.13.127-.13.127-.131.125-.132.125-.132.124-.134.124-.134.122-.135.122-.135.121-.136.12-.137.12-.138.118-.138.118-.14.117-.139.116-.141.115-.141.115-.142.113-.143.113-.143.112-.144.111-.145.111-.145.109-.146.109-.147.107-.147.107-.148.106-.149.105-.149.104-.15.104-.151.102-.151.102-.152.101-.153.099-.153.099-.154.098-.154.098-.155.096-.156.095-.156.094-.157.094-.158.092-.158.092-.159.091-.159.09-.16.088-.161.088-.161.087-.162.086-.162.085-.163.084-.163.083-.164.083-.165.081-.165.08-.166.079-.166.079-.167.077-.167.076-.168.076-.168.074-.169.073-.17.073-.17.071-.17.07-.171.07-.172.068-.172.067-.172.066-.173.066-.174.064-.174.063-.175.062-.175.061-.175.06-.176.059-.177.058-.177.057-.177.056-.178.055-.178.054-.179.052-.18.052-.179.05-.181.05-.18.048-.181.047-.182.046-.182.046-.182.043-.183.043-.183.042-.184.041-.184.039-.184.039-.185.037-.185.036-.186.035-.186.034-.187.033-.186.031-.188.031-.187.029-.188.028-.189.027-.188.026-.189.025-.19.023-.19.022-.19.022-.19.02-.191.018-.192.018-.191.016-.192.016-.192.014-.193.013-.193.011-.193.011-.193.009-.194.008-.194.007-.195.005-.195.004-.195.004-.195.001-.196.001H30.271l-.196-.001-.195-.001-.195-.004-.195-.004-.195-.005-.194-.007-.194-.008-.193-.009-.193-.011-.193-.011-.193-.013-.192-.014-.192-.016-.191-.016-.192-.018-.191-.018-.19-.02-.19-.022-.19-.022-.19-.023-.189-.025-.188-.026-.189-.027-.188-.028-.187-.029-.188-.031-.186-.031-.187-.033-.186-.034-.186-.035-.185-.036-.185-.037-.184-.039-.184-.039-.184-.041-.183-.042-.183-.043-.182-.043-.182-.046-.182-.046-.181-.047-.18-.048-.181-.05-.179-.05-.18-.052-.179-.052-.178-.054-.178-.055-.177-.056-.177-.057-.177-.058-.176-.059-.175-.06-.175-.061-.175-.062-.174-.063-.174-.064-.173-.066-.172-.066-.172-.067-.172-.068-.171-.07-.17-.07-.17-.071-.17-.073-.169-.073-.168-.074-.168-.076-.167-.076-.167-.077-.166-.079-.166-.079-.165-.08-.165-.081-.164-.083-.163-.083-.163-.084-.162-.085-.162-.086-.161-.087-.161-.088-.16-.088-.159-.09-.159-.091-.158-.092-.158-.092-.157-.094-.156-.094-.156-.095-.155-.096-.154-.098-.154-.098-.153-.099-.153-.099-.152-.101-.151-.102-.151-Line truncated
style="fill:#2d67b9"
id="path4" />
<path
d="M 56.204265,104.13685 H 105.92542 L 95.739989,95.27996 h 15.811291 l 15.82341,13.75947 -15.82341,13.75883 H 95.756379 l 10.317291,-8.97155 H 56.204265 Z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-3" /><path
d="m 56.204269,144.13685 h 49.721151 l -10.185427,-8.85689 h 15.811287 l 15.82341,13.75947 -15.82341,13.75883 H 95.756383 l 10.317287,-8.97155 H 56.204269 Z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-3-5" /><path
d="m 186.20427,144.13685 h 49.72115 L 225.74,135.27996 h 15.81128 l 15.82341,13.75947 -15.82341,13.75883 h -15.79489 l 10.31728,-8.97155 h -49.8694 z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-3-5-2" /><path
d="m 56.204269,184.13685 h 49.721151 l -10.185427,-8.85689 h 15.811287 l 15.82341,13.75947 -15.82341,13.75883 H 95.756383 l 10.317287,-8.97155 H 56.204269 Z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-3-5-6" /></svg>

After

Width:  |  Height:  |  Size: 20 KiB

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421"
version="1.1"
id="svg18"
sodipodi:docname="nat2.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs22" /><sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958275"
inkscape:cy="30"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg18" />
<path
d="M300 30.271C300 13.564 286.436 0 269.729 0H30.271C13.564 0 0 13.564 0 30.271v239.458C0 286.436 13.564 300 30.271 300h239.458C286.436 300 300 286.436 300 269.729V30.271Z"
style="fill:#fffefe"
id="path2" />
<path
d="m269.925.001.195.001.39.008.195.005.194.007.194.008.193.009.386.022.193.013.192.014.192.016.191.016.192.018.191.018.19.02.38.044.19.023.189.025.188.026.189.027.188.028.187.029.188.031.186.031.187.033.186.034.186.035.185.036.185.037.368.078.184.041.183.042.183.043.182.043.364.092.181.047.18.048.181.05.179.05.18.052.179.052.178.054.178.055.177.056.177.057.177.058.176.059.175.06.175.061.175.062.174.063.174.064.173.066.172.066.172.067.172.068.171.07.17.07.17.071.17.073.169.073.168.074.168.076.167.076.167.077.332.158.165.08.165.081.164.083.163.083.163.084.162.085.162.086.161.087.161.088.16.088.159.09.159.091.316.184.157.094.156.094.156.095.155.096.308.196.306.198.152.101.302.204.15.104.149.104.149.105.148.106.294.214.146.109.145.109.145.111.144.111.143.112.143.113.142.113.282.23.139.116.14.117.276.236.137.12.136.12.135.121.135.122.134.122.134.124.132.124.132.125.131.125.26.254.129.128.128.129.254.26.125.131.125.132.124.132.124.134.122.134.122.135.121.135.12.136.12.137.236.276.117.14.116.139.23.282.113.142.113.143.112.143.111.144.111.145.109.145.109.146.214.294.106.148.105.149.104.149.104.15.204.302.101.152.198.306.196.308.096.155.095.156.094.156.094.157.184.316.091.159.09.159.088.16.088.161.087.161.086.162.085.162.084.163.083.163.083.164.081.165.08.165.158.332.077.167.076.167.076.168.074.168.073.169.073.17.071.17.07.17.07.171.068.172.067.172.066.172.066.173.064.174.063.174.062.175.061.175.06.175.059.176.058.177.057.177.056.177.055.178.054.178.052.179.052.18.05.179.05.181.048.18.047.181.092.364.043.182.043.183.042.183.041.184.078.368.037.185.036.185.035.186.034.186.033.187.031.186.031.188.029.187.028.188.027.189.026.188.025.189.023.19.044.38.02.19.018.191.018.192.016.191.016.192.014.192.013.193.022.386.009.193.008.194.007.194.005.195.008.39.002.391v239.458l-.001.196-.001.195-.004.195-.004.195-.005.195-.007.194-.008.194-.009.193-.011.193-.011.193-.013.193-.014.192-.016.192-.016.191-.018.192-.018.191-.02.19-.022.19-.022.19-.023.19-.025.189-.026.188-.027.189-.028.188-.029.187-.031.188-.031.186-.033.187-.034.186-.035.186-.036.185-.037.185-.039.184-.039.184-.041.184-.042.183-.043.183-.043.182-.046.182-.046.182-.047.181-.048.18-.05.181-.05.179-.052.18-.052.179-.054.178-.055.178-.056.177-.057.177-.058.177-.059.176-.06.175-.061.175-.062.175-.063.174-.064.174-.066.173-.066.172-.067.172-.068.172-.07.171-.07.17-.071.17-.073.17-.073.169-.074.168-.076.168-.076.167-.077.167-.079.166-.079.166-.08.165-.081.165-.083.164-.083.163-.084.163-.085.162-.086.162-.087.161-.088.161-.088.16-.09.159-.091.159-.092.158-.092.158-.094.157-.094.156-.095.156-.096.155-.098.154-.098.154-.099.153-.099.153-.101.152-.102.151-.102.151-.104.15-.104.149-.105.149-.106.148-.107.147-.107.147-.109.146-.109.145-.111.145-.111.144-.112.143-.113.143-.113.142-.115.141-.115.141-.116.139-.117.14-.118.138-.118.138-.12.137-.12.136-.121.135-.122.135-.122.134-.124.134-.124.132-.125.132-.125.131-.127.13-.127.13-.128.129-.129.128-.13.127-.13.127-.131.125-.132.125-.132.124-.134.124-.134.122-.135.122-.135.121-.136.12-.137.12-.138.118-.138.118-.14.117-.139.116-.141.115-.141.115-.142.113-.143.113-.143.112-.144.111-.145.111-.145.109-.146.109-.147.107-.147.107-.148.106-.149.105-.149.104-.15.104-.151.102-.151.102-.152.101-.153.099-.153.099-.154.098-.154.098-.155.096-.156.095-.156.094-.157.094-.158.092-.158.092-.159.091-.159.09-.16.088-.161.088-.161.087-.162.086-.162.085-.163.084-.163.083-.164.083-.165.081-.165.08-.166.079-.166.079-.167.077-.167.076-.168.076-.168.074-.169.073-.17.073-.17.071-.17.07-.171.07-.172.068-.172.067-.172.066-.173.066-.174.064-.174.063-.175.062-.175.061-.175.06-.176.059-.177.058-.177.057-.177.056-.178.055-.178.054-.179.052-.18.052-.179.05-.181.05-.18.048-.181.047-.182.046-.182.046-.182.043-.183.043-.183.042-.184.041-.184.039-.184.039-.185.037-.185.036-.186.035-.186.034-.187.033-.186.031-.188.031-.187.029-.188.028-.189.027-.188.026-.189.025-.19.023-.19.022-.19.022-.19.02-.191.018-.192.018-.191.016-.192.016-.192.014-.193.013-.193.011-.193.011-.193.009-.194.008-.194.007-.195.005-.195.004-.195.004-.195.001-.196.001H30.271l-.196-.001-.195-.001-.195-.004-.195-.004-.195-.005-.194-.007-.194-.008-.193-.009-.193-.011-.193-.011-.193-.013-.192-.014-.192-.016-.191-.016-.192-.018-.191-.018-.19-.02-.19-.022-.19-.022-.19-.023-.189-.025-.188-.026-.189-.027-.188-.028-.187-.029-.188-.031-.186-.031-.187-.033-.186-.034-.186-.035-.185-.036-.185-.037-.184-.039-.184-.039-.184-.041-.183-.042-.183-.043-.182-.043-.182-.046-.182-.046-.181-.047-.18-.048-.181-.05-.179-.05-.18-.052-.179-.052-.178-.054-.178-.055-.177-.056-.177-.057-.177-.058-.176-.059-.175-.06-.175-.061-.175-.062-.174-.063-.174-.064-.173-.066-.172-.066-.172-.067-.172-.068-.171-.07-.17-.07-.17-.071-.17-.073-.169-.073-.168-.074-.168-.076-.167-.076-.167-.077-.166-.079-.166-.079-.165-.08-.165-.081-.164-.083-.163-.083-.163-.084-.162-.085-.162-.086-.161-.087-.161-.088-.16-.088-.159-.09-.159-.091-.158-.092-.158-.092-.157-.094-.156-.094-.156-.095-.155-.096-.154-.098-.154-.098-.153-.099-.153-.099-.152-.101-.151-.102-.151-Line truncated
style="fill:#2d67b9"
id="path4" />
<g
id="g16">
<path
d="M94.657 208.957h-1.486v-.027c-21.178-.783-38.132-18.223-38.132-39.592 0-19.576 14.229-35.855 32.9-39.05v-.161c0-35.453 28.783-64.237 64.237-64.237 35.454 0 64.238 28.784 64.238 64.237 0 .271-.002.538-.005.804 19.045 3.122 33.574 19.29 33.574 38.74 0 21.683-18.054 39.286-40.293 39.286H94.657Zm105.717-77.514.019-.004c.011-.436.017-.873.017-1.312 0-26.621-21.613-48.234-48.234-48.234-4.677 0-9.199.667-13.476 1.911-20.932 5.493-36.369 24.279-36.369 46.582a47.305 47.305 0 0 0 3.775 18.568 23.546 23.546 0 0 0-11.449-2.952c-13.063 0-23.669 10.606-23.669 23.669 0 13.064 10.606 23.67 23.669 23.67h115.614c13.064 0 23.67-10.606 23.67-23.67 0-13.063-10.606-23.669-23.67-23.669a23.56 23.56 0 0 0-14.616 5.056 47.28 47.28 0 0 0 4.719-19.615Z"
style="fill:#2d67b9"
transform="translate(-2.511 12.577)"
id="path6" />
<path
d="m152.591 65.891.415.004.414.007.413.009.413.012.412.014.411.017.411.019.41.023.409.024.409.027.407.03.408.033.406.034.406.038.405.04.404.042.404.045.403.047.402.05.401.053.401.054.399.058.399.059.398.063.398.064.396.067.396.07.395.072.394.074.393.077.392.079.392.081.39.084.39.086.389.089.388.091.387.093.386.096.385.098.384.1.384.102.382.105.381.107.381.11.379.112.379.114.378.116.376.118.376.121.374.123.374.125.372.128.372.129.37.132.37.134.368.137.367.138.366.141.366.142.364.145.363.148.361.149.361.151.36.154.358.155.358.158.356.16.355.162.354.164.353.166.351.168.351.171.349.172.348.174.347.177.345.178.345.181.343.182.342.185.341.186.339.189.338.19.337.193.336.194.334.196.333.199.332.2.33.202.33.205.327.206.327.208.325.21.324.211.322.214.321.216.32.217.319.22.316.221.316.223.314.225.313.226.311.229.31.23.309.233.307.234.305.235.304.238.303.239.301.242.3.242.298.245.297.247.295.248.294.25.292.251.291.254.289.255.287.256.286.259.285.26.283.262.281.263.28.265.278.267.277.269.275.27.273.271.272.274.27.275.268.276.267.278.265.28.264.281.261.283.261.285.258.286.257.287.255.29.253.29.252.292.25.294.248.295.246.297.245.298.243.3.241.301.239.303.238.304.236.306.234.307.232.308.23.31.229.311.227.313.224.314.224.316.221.317.219.318.218.32.215.321.214.322.212.324.21.325.208.327.206.328.204.329.202.33.2.332.199.333.196.335.195.335.192.337.191.338.188.34.187.34.184.342.183.343.18.345.179.346.176.346.174.348.173.35.17.35.168.352.166.352.164.354.162.355.16.357.158.357.156.359.153.359.152.361.149.362.147.363.145.364.143.365.14.366.139.367.136.369.134.369.132.371.13.371.127.373.125.373.123.375.121.375.119.377.116.377.114.379.112.379.109.381.107.381.105.383.103.383.1.384.098.385.095.387.094.387.09.387.089.389.086.39.084.391.082.391.079.392.076.393.075.395.072.394.069.396.067.397.065.397.062.398.06.399.057.4.055.4.052.402.05.402.047.402.045.404.043.404.04.405.037.406.035.407.032.407.03.408.027.408.025.41.022.41.019.41.017.412.015.412.012.412.009.414.006.414.004.414.002.415-.001.404-.004.4.223.037.223.038.222.04.222.041.221.042.221.043.22.044.22.045.22.047.219.048.218.049.219.05.217.051.218.052.216.054.217.055.216.055.215.057.215.059.214.059.214.06.214.062.213.062.212.064.212.065.212.066.211.067.21.068.21.069.21.07.208.072.209.072.208.074.207.074.207.076.206.077.206.078.205.079.204.08.205.081.203.082.203.083.202.084.202.085.402.174.2.088.2.09.199.09.198.091.198.093.197.093.392.19.196.097.194.097.388.198.193.101.192.101.192.103.191.103.38.21.189.106.376.216.187.109.187.11.37.224.185.113.184.114.183.115.364.232.181.118.36.238.179.121.178.121.178.123.177.123.176.124.176.125.174.126.174.127.174.128.172.128.172.13.171.13.171.131.338.266.168.133.168.135.332.272.165.137.328.278.163.139.162.141.161.142.16.142.16.143.159.144.158.145.157.145.157.147.155.147.155.148.154.149.306.3.151.151.151.153.15.152.149.154.148.154.147.155.147.156.146.157.288.316.143.159.143.16.141.16.14.161.14.162.139.163.138.163.137.165.136.165.135.165.268.334.132.167.132.169.13.169.13.17.129.171.128.171.127.172.126.173.125.173.124.174.123.175.123.176.121.176.24.354.118.178.118.179.116.179.116.18.115.181.226.364.112.182.22.368.109.184.108.185.106.186.106.187.105.187.103.187.103.189.102.189.1.189.1.19.099.191.097.191.097.192.095.192.095.193.093.194.092.194.092.195.09.195.089.196.088.196.087.197.086.198.085.198.084.198.082.2.082.199.081.201.079.2.078.202.078.201.076.203.075.203.074.203.073.204.071.204.071.205.069.205.069.206.067.207.066.207.065.207.126.416.122.418.059.21.058.21.057.211.11.422.053.212.052.213.051.213.05.213.096.428.046.215.045.215.044.215.084.432.04.217.039.217.074.436.035.218.034.219.033.219.062.44.029.22.027.22.027.222.025.221.024.222.023.222.021.222.02.223.019.223.018.224.016.224.015.224.014.225.013.225.011.225.01.225.008.226.008.227.006.226.004.227.003.227.002.228.001.227-.001.254-.002.254-.004.253-.006.253-.007.252-.009.252-.011.252-.012.251-.014.251-.016.25-.017.25-.018.249-.021.249-.022.249-.023.248-.025.248-.027.247-.028.247-.03.246-.031.246-.033.246-.034.244-.036.245-.038.244-.039.243-.04.243-.042.243-.044.242-.045.241-.046.241-.049.241-.049.24-.051.239-.053.239-.054.238-.055.238-.057.237-.059.237-.06.236-.061.236-.063.235-.065.234-.065.234-.068.233-.068.233-.07.232-.072.231-.073.231-.074.231-.076.229-.077.229-.078.229-.08.228-.082.227-.082.226-.085.226-.085.226-.087.224-.088.224-.09.223-.091.223-.092.222-.093.221-.095.221-.097.22-.097.219-.099.219-.101.218-.101.217-.103.216-.104.216-.106.215-.107.214-.108.214-.109.213-.111.212-.112.211-.113.211-.114.21-.116.209-.117.208-.118.208-.12.207-.12.206-.122.205-.124.204-.124.204-.126.203-.127.202-.128.201-.129.201-.13.199-.132.199-.133.198-.134.198-.135.196-.137.195-.137.195-.139.194-.14.193-.141.192-.142.191-.144.191-.144.189-.146.189-.146.188-.148.187-.149.186-.151.185-.151.184-.152.183-.154.183-.154.181-.156.181-.157.179-.157.179-.159.178-.16.177-.161.175-.162.175-.164.174-.164.173-.165.172-.166.171-.168.171-.168.169-.17.168-.17.167-.171.166-.173.165-.173.165-.175.163-.175.162-.177.161-.177.Line truncated
style="fill:#2d67b9"
transform="translate(-2.511 12.577)"
id="path8" />
<g
id="g14">
<path
d="M94.657 208.957h-1.486v-.027c-21.178-.783-38.132-18.223-38.132-39.592 0-19.576 14.229-35.855 32.9-39.05v-.161c0-35.453 28.783-64.237 64.237-64.237 35.454 0 64.238 28.784 64.238 64.237 0 .271-.002.538-.005.804 19.045 3.122 33.574 19.29 33.574 38.74 0 21.683-18.054 39.286-40.293 39.286H94.657Zm105.717-77.514.019-.004c.011-.436.017-.873.017-1.312 0-26.621-21.613-48.234-48.234-48.234-4.677 0-9.199.667-13.476 1.911-20.932 5.493-36.369 24.279-36.369 46.582a47.305 47.305 0 0 0 3.775 18.568 23.546 23.546 0 0 0-11.449-2.952c-13.063 0-23.669 10.606-23.669 23.669 0 13.064 10.606 23.67 23.669 23.67h115.614c13.064 0 23.67-10.606 23.67-23.67 0-13.063-10.606-23.669-23.67-23.669a23.56 23.56 0 0 0-14.616 5.056 47.28 47.28 0 0 0 4.719-19.615Z"
style="fill:#2d67b9"
transform="matrix(-1 0 0 1 302.511 12.577)"
id="path10" />
<path
d="m151.761 65.891-.415.004-.414.007-.413.009-.413.012-.412.014-.411.017-.411.019-.41.023-.409.024-.408.027-.408.03-.408.033-.406.034-.406.038-.405.04-.404.042-.404.045-.403.047-.402.05-.401.053-.401.054-.399.058-.399.059-.398.063-.398.064-.396.067-.396.07-.395.072-.394.074-.393.077-.392.079-.392.081-.39.084-.39.086-.389.089-.388.091-.387.093-.386.096-.385.098-.384.1-.384.102-.382.105-.381.107-.381.11-.379.112-.379.114-.377.116-.377.118-.376.121-.374.123-.374.125-.372.128-.372.129-.37.132-.369.134-.369.137-.367.138-.366.141-.365.142-.365.145-.362.148-.362.149-.361.151-.36.154-.358.155-.358.158-.356.16-.355.162-.354.164-.353.166-.351.168-.351.171-.349.172-.348.174-.347.177-.345.178-.345.181-.343.182-.342.185-.341.186-.339.189-.338.19-.337.193-.336.194-.334.196-.333.199-.332.2-.33.202-.33.205-.327.206-.327.208-.325.21-.324.211-.322.214-.321.216-.32.217-.318.22-.317.221-.316.223-.314.225-.313.226-.311.229-.31.23-.309.233-.307.234-.305.235-.304.238-.303.239-.301.242-.3.242-.298.245-.297.247-.295.248-.294.25-.292.251-.291.254-.289.255-.287.256-.286.259-.285.26-.283.262-.281.263-.28.265-.278.267-.277.269-.275.27-.273.271-.272.274-.27.275-.268.276-.267.278-.265.28-.263.281-.262.283-.26.285-.259.286-.257.287-.255.29-.253.29-.252.292-.25.294-.248.295-.246.297-.245.298-.243.3-.241.301-.239.303-.238.304-.236.306-.234.307-.232.308-.23.31-.229.311-.226.313-.225.314-.223.316-.222.317-.219.318-.217.32-.216.321-.214.322-.212.324-.21.325-.208.327-.206.328-.204.329-.202.33-.2.332-.199.333-.196.335-.195.335-.192.337-.191.338-.188.34-.187.34-.184.342-.183.343-.18.345-.179.346-.176.346-.174.348-.173.35-.17.35-.168.352-.166.352-.164.354-.162.355-.16.357-.158.357-.156.359-.153.359-.151.361-.15.362-.147.363-.145.364-.143.365-.14.366-.139.367-.136.369-.134.369-.132.371-.13.371-.127.373-.125.373-.123.375-.121.375-.118.377-.117.377-.114.379-.111.379-.11.381-.107.381-.105.383-.102.383-.101.384-.098.385-.095.387-.093.387-.091.387-.089.389-.086.39-.084.391-.081.391-.08.392-.076.393-.075.395-.071.394-.07.396-.067.397-.065.397-.062.398-.06.399-.057.4-.055.4-.052.402-.05.402-.047.402-.045.404-.043.404-.039.405-.038.406-.035.407-.032.407-.03.408-.027.408-.025.41-.022.41-.019.41-.017.412-.015.412-.011.412-.01.414-.006.414-.004.414-.001.415v.161l-.219.039-.218.039-.218.04-.217.042-.217.043-.217.044-.216.045-.216.046-.215.048-.215.048-.214.05-.214.051-.213.052-.213.053-.213.055-.212.055-.211.057-.212.058-.21.059-.21.06-.21.061-.209.063-.209.063-.208.065-.208.066-.208.067-.206.068-.207.069-.205.07-.206.071-.204.072-.205.074-.203.074-.204.076-.202.077-.202.077-.202.079-.201.08-.201.081-.2.082-.199.083-.199.084-.198.085-.198.087-.197.087-.197.088-.196.09-.196.09-.195.091-.194.093-.194.093-.193.095-.193.095-.192.097-.191.097-.191.099-.19.1-.19.1-.189.102-.188.102-.188.104-.187.104-.187.106-.186.106-.185.107-.185.109-.184.109-.183.111-.183.111-.182.112-.181.113-.181.114-.18.115-.18.116-.178.117-.179.118-.177.119-.177.12-.176.121-.175.121-.175.123-.174.123-.173.125-.173.125-.172.126-.171.127-.171.128-.17.129-.169.13-.168.13-.168.132-.167.132-.166.133-.165.135-.165.135-.164.135-.163.137-.163.138-.162.138-.161.14-.16.14-.159.141-.159.142-.158.142-.157.144-.157.144-.155.145-.155.146-.154.147-.154.148-.152.148-.152.149-.151.15-.15.151-.149.152-.148.152-.148.154-.147.154-.146.154-.145.156-.145.156-.143.158-.143.157-.142.159-.141.16-.14.16-.139.161-.139.162-.138.162-.136.163-.136.164-.135.165-.134.165-.134.166-.132.167-.132.168-.13.168-.13.169-.129.17-.128.171-.127.171-.127.172-.125.172-.124.174-.124.174-.122.174-.122.176-.121.176-.12.177-.118.177-.118.178-.117.179-.116.179-.116.18-.114.181-.113.181-.112.182-.112.183-.11.183-.109.184-.109.185-.107.185-.107.186-.105.187-.105.187-.104.188-.102.188-.102.189-.1.19-.1.19-.098.191-.098.191-.097.192-.095.193-.095.193-.093.194-.093.194-.091.195-.091.195-.089.196-.088.197-.088.197-.086.198-.085.198-.085.199-.083.2-.082.2-.081.2-.08.201-.079.202-.077.202-.077.203-.076.203-.074.203-.074.205-.072.204-.072.206-.07.205-.069.207-.068.206-.067.208-.066.207-.064.209-.064.208-.062.21-.062.209-.06.211-.059.21-.058.211-.057.212-.055.212-.055.212-.053.213-.052.214-.051.214-.05.214-.049.215-.048.215-.046.216-.045.216-.044.216-.043.217-.042.217-.04.218-.04.218-.038.219-.037.219-.035.219-.035.22-.033.22-.032.221-.031.221-.03.221-.028.222-.027.222-.026.222-.025.223-.024.223-.022.224-.021.224-.02.224-.018.225-.017.225-.016.225-.015.226-.014.226-.012.226-.011.227-.009.227-.009.228-.007.227-.006.228-.004.229-.004.228-.002.229v.229l.001.251.002.25.004.249.005.249.007.249.009.248.01.248.011.248.013.247.015.247.016.246.017.246.019.246.021.245.022.245.023.244.025.244.027.243.028.243.029.243.031.242.032.241.034.242.035.24.037.241.038.239.04.24.041.238.042.239.044.238.045.237.047.237.048.236.049.236.051.235.052.235.054.234.055.234.056.233.058.233.059.232.122.462.064.231.064.23.066.229.067.229.069.228.07.228.071.227.073.226.074.226.075.225.076.225.078.224.079.223.081.223.082.222.083.222.084.221.085.22.087.22.088.219.18.436.092.217.093.Line truncated
style="fill:#2d67b9"
transform="matrix(-1 0 0 1 302.511 12.577)"
id="path12" />
</g>
</g>
<path
d="m 114.30977,144.2723 h 50.31577 L 154.3183,133.29689 h 16.00038 l 16.01264,17.05067 -16.01264,17.04991 h -15.98379 l 10.44067,-11.1175 h -50.46579 z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path8-7" /><path
d="M 186.44817,172.91513 H 136.1324 l 10.30725,-10.97541 h -16.00039 l -16.01264,17.05067 16.01264,17.04991 h 15.98379 l -10.44067,-11.1175 h 50.46579 z"
style="clip-rule:evenodd;fill:#2d67b9;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421"
id="path10-5" /></svg>

After

Width:  |  Height:  |  Size: 78 KiB

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421"
version="1.1"
id="svg18"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs22" /><sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg18" />
<path
d="M300 30.271C300 13.564 286.436 0 269.729 0H30.271C13.564 0 0 13.564 0 30.271v239.458C0 286.436 13.564 300 30.271 300h239.458C286.436 300 300 286.436 300 269.729V30.271Z"
style="fill:#fffefe"
id="path2" /><path
d="m 126.0992,224.81393 c 36.94958,-46.13888 33.95227,-117.5859 -6.72068,-159.539672 l -0.0404,-0.0415 a 8.4262645,9.5474485 0 0 1 -0.51796,-13.437497 c 3.1284,-3.89368 8.4597,-4.177124 11.89613,-0.632472 47.587,49.085571 51.05025,132.713411 7.72895,186.632281 -3.1284,3.89367 -8.45969,4.17712 -11.89613,0.63246 a 8.4262645,9.5474485 0 0 1 -0.5582,-13.47898 z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:1.37905;stroke-linejoin:round;stroke-miterlimit:2;fill-opacity:1"
id="path8" />
<path
d="m269.925.001.195.001.39.008.195.005.194.007.194.008.193.009.386.022.193.013.192.014.192.016.191.016.192.018.191.018.19.02.38.044.19.023.189.025.188.026.189.027.188.028.187.029.188.031.186.031.187.033.186.034.186.035.185.036.185.037.368.078.184.041.183.042.183.043.182.043.364.092.181.047.18.048.181.05.179.05.18.052.179.052.178.054.178.055.177.056.177.057.177.058.176.059.175.06.175.061.175.062.174.063.174.064.173.066.172.066.172.067.172.068.171.07.17.07.17.071.17.073.169.073.168.074.168.076.167.076.167.077.332.158.165.08.165.081.164.083.163.083.163.084.162.085.162.086.161.087.161.088.16.088.159.09.159.091.316.184.157.094.156.094.156.095.155.096.308.196.306.198.152.101.302.204.15.104.149.104.149.105.148.106.294.214.146.109.145.109.145.111.144.111.143.112.143.113.142.113.282.23.139.116.14.117.276.236.137.12.136.12.135.121.135.122.134.122.134.124.132.124.132.125.131.125.26.254.129.128.128.129.254.26.125.131.125.132.124.132.124.134.122.134.122.135.121.135.12.136.12.137.236.276.117.14.116.139.23.282.113.142.113.143.112.143.111.144.111.145.109.145.109.146.214.294.106.148.105.149.104.149.104.15.204.302.101.152.198.306.196.308.096.155.095.156.094.156.094.157.184.316.091.159.09.159.088.16.088.161.087.161.086.162.085.162.084.163.083.163.083.164.081.165.08.165.158.332.077.167.076.167.076.168.074.168.073.169.073.17.071.17.07.17.07.171.068.172.067.172.066.172.066.173.064.174.063.174.062.175.061.175.06.175.059.176.058.177.057.177.056.177.055.178.054.178.052.179.052.18.05.179.05.181.048.18.047.181.092.364.043.182.043.183.042.183.041.184.078.368.037.185.036.185.035.186.034.186.033.187.031.186.031.188.029.187.028.188.027.189.026.188.025.189.023.19.044.38.02.19.018.191.018.192.016.191.016.192.014.192.013.193.022.386.009.193.008.194.007.194.005.195.008.39.002.391v239.458l-.001.196-.001.195-.004.195-.004.195-.005.195-.007.194-.008.194-.009.193-.011.193-.011.193-.013.193-.014.192-.016.192-.016.191-.018.192-.018.191-.02.19-.022.19-.022.19-.023.19-.025.189-.026.188-.027.189-.028.188-.029.187-.031.188-.031.186-.033.187-.034.186-.035.186-.036.185-.037.185-.039.184-.039.184-.041.184-.042.183-.043.183-.043.182-.046.182-.046.182-.047.181-.048.18-.05.181-.05.179-.052.18-.052.179-.054.178-.055.178-.056.177-.057.177-.058.177-.059.176-.06.175-.061.175-.062.175-.063.174-.064.174-.066.173-.066.172-.067.172-.068.172-.07.171-.07.17-.071.17-.073.17-.073.169-.074.168-.076.168-.076.167-.077.167-.079.166-.079.166-.08.165-.081.165-.083.164-.083.163-.084.163-.085.162-.086.162-.087.161-.088.161-.088.16-.09.159-.091.159-.092.158-.092.158-.094.157-.094.156-.095.156-.096.155-.098.154-.098.154-.099.153-.099.153-.101.152-.102.151-.102.151-.104.15-.104.149-.105.149-.106.148-.107.147-.107.147-.109.146-.109.145-.111.145-.111.144-.112.143-.113.143-.113.142-.115.141-.115.141-.116.139-.117.14-.118.138-.118.138-.12.137-.12.136-.121.135-.122.135-.122.134-.124.134-.124.132-.125.132-.125.131-.127.13-.127.13-.128.129-.129.128-.13.127-.13.127-.131.125-.132.125-.132.124-.134.124-.134.122-.135.122-.135.121-.136.12-.137.12-.138.118-.138.118-.14.117-.139.116-.141.115-.141.115-.142.113-.143.113-.143.112-.144.111-.145.111-.145.109-.146.109-.147.107-.147.107-.148.106-.149.105-.149.104-.15.104-.151.102-.151.102-.152.101-.153.099-.153.099-.154.098-.154.098-.155.096-.156.095-.156.094-.157.094-.158.092-.158.092-.159.091-.159.09-.16.088-.161.088-.161.087-.162.086-.162.085-.163.084-.163.083-.164.083-.165.081-.165.08-.166.079-.166.079-.167.077-.167.076-.168.076-.168.074-.169.073-.17.073-.17.071-.17.07-.171.07-.172.068-.172.067-.172.066-.173.066-.174.064-.174.063-.175.062-.175.061-.175.06-.176.059-.177.058-.177.057-.177.056-.178.055-.178.054-.179.052-.18.052-.179.05-.181.05-.18.048-.181.047-.182.046-.182.046-.182.043-.183.043-.183.042-.184.041-.184.039-.184.039-.185.037-.185.036-.186.035-.186.034-.187.033-.186.031-.188.031-.187.029-.188.028-.189.027-.188.026-.189.025-.19.023-.19.022-.19.022-.19.02-.191.018-.192.018-.191.016-.192.016-.192.014-.193.013-.193.011-.193.011-.193.009-.194.008-.194.007-.195.005-.195.004-.195.004-.195.001-.196.001H30.271l-.196-.001-.195-.001-.195-.004-.195-.004-.195-.005-.194-.007-.194-.008-.193-.009-.193-.011-.193-.011-.193-.013-.192-.014-.192-.016-.191-.016-.192-.018-.191-.018-.19-.02-.19-.022-.19-.022-.19-.023-.189-.025-.188-.026-.189-.027-.188-.028-.187-.029-.188-.031-.186-.031-.187-.033-.186-.034-.186-.035-.185-.036-.185-.037-.184-.039-.184-.039-.184-.041-.183-.042-.183-.043-.182-.043-.182-.046-.182-.046-.181-.047-.18-.048-.181-.05-.179-.05-.18-.052-.179-.052-.178-.054-.178-.055-.177-.056-.177-.057-.177-.058-.176-.059-.175-.06-.175-.061-.175-.062-.174-.063-.174-.064-.173-.066-.172-.066-.172-.067-.172-.068-.171-.07-.17-.07-.17-.071-.17-.073-.169-.073-.168-.074-.168-.076-.167-.076-.167-.077-.166-.079-.166-.079-.165-.08-.165-.081-.164-.083-.163-.083-.163-.084-.162-.085-.162-.086-.161-.087-.161-.088-.16-.088-.159-.09-.159-.091-.158-.092-.158-.092-.157-.094-.156-.094-.156-.095-.155-.096-.154-.098-.154-.098-.153-.099-.153-.099-.152-.101-.151-.102-.151-Line truncated
style="fill:#4d4d4d;fill-opacity:1"
id="path4" />
<path
d="M 56.204265,104.13685 H 105.92542 L 95.739989,95.27996 h 15.811291 l 15.82341,13.75947 -15.82341,13.75883 H 95.756379 l 10.317291,-8.97155 H 56.204265 Z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3" /><path
d="m 56.204269,144.13685 h 49.721151 l -10.185427,-8.85689 h 15.811287 l 15.82341,13.75947 -15.82341,13.75883 H 95.756383 l 10.317287,-8.97155 H 56.204269 Z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5" /><path
d="m 186.20427,144.13685 h 49.72115 L 225.74,135.27996 h 15.81128 l 15.82341,13.75947 -15.82341,13.75883 h -15.79489 l 10.31728,-8.97155 h -49.8694 z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-2" /><path
d="m 56.204269,184.13685 h 49.721151 l -10.185427,-8.85689 h 15.811287 l 15.82341,13.75947 -15.82341,13.75883 H 95.756383 l 10.317287,-8.97155 H 56.204269 Z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-6" /></svg>

After

Width:  |  Height:  |  Size: 20 KiB

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421"
version="1.1"
id="svg18"
sodipodi:docname="nat2.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs22" /><sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg18" />
<path
d="M300 30.271C300 13.564 286.436 0 269.729 0H30.271C13.564 0 0 13.564 0 30.271v239.458C0 286.436 13.564 300 30.271 300h239.458C286.436 300 300 286.436 300 269.729V30.271Z"
style="fill:#fffefe"
id="path2" />
<path
d="m269.925.001.195.001.39.008.195.005.194.007.194.008.193.009.386.022.193.013.192.014.192.016.191.016.192.018.191.018.19.02.38.044.19.023.189.025.188.026.189.027.188.028.187.029.188.031.186.031.187.033.186.034.186.035.185.036.185.037.368.078.184.041.183.042.183.043.182.043.364.092.181.047.18.048.181.05.179.05.18.052.179.052.178.054.178.055.177.056.177.057.177.058.176.059.175.06.175.061.175.062.174.063.174.064.173.066.172.066.172.067.172.068.171.07.17.07.17.071.17.073.169.073.168.074.168.076.167.076.167.077.332.158.165.08.165.081.164.083.163.083.163.084.162.085.162.086.161.087.161.088.16.088.159.09.159.091.316.184.157.094.156.094.156.095.155.096.308.196.306.198.152.101.302.204.15.104.149.104.149.105.148.106.294.214.146.109.145.109.145.111.144.111.143.112.143.113.142.113.282.23.139.116.14.117.276.236.137.12.136.12.135.121.135.122.134.122.134.124.132.124.132.125.131.125.26.254.129.128.128.129.254.26.125.131.125.132.124.132.124.134.122.134.122.135.121.135.12.136.12.137.236.276.117.14.116.139.23.282.113.142.113.143.112.143.111.144.111.145.109.145.109.146.214.294.106.148.105.149.104.149.104.15.204.302.101.152.198.306.196.308.096.155.095.156.094.156.094.157.184.316.091.159.09.159.088.16.088.161.087.161.086.162.085.162.084.163.083.163.083.164.081.165.08.165.158.332.077.167.076.167.076.168.074.168.073.169.073.17.071.17.07.17.07.171.068.172.067.172.066.172.066.173.064.174.063.174.062.175.061.175.06.175.059.176.058.177.057.177.056.177.055.178.054.178.052.179.052.18.05.179.05.181.048.18.047.181.092.364.043.182.043.183.042.183.041.184.078.368.037.185.036.185.035.186.034.186.033.187.031.186.031.188.029.187.028.188.027.189.026.188.025.189.023.19.044.38.02.19.018.191.018.192.016.191.016.192.014.192.013.193.022.386.009.193.008.194.007.194.005.195.008.39.002.391v239.458l-.001.196-.001.195-.004.195-.004.195-.005.195-.007.194-.008.194-.009.193-.011.193-.011.193-.013.193-.014.192-.016.192-.016.191-.018.192-.018.191-.02.19-.022.19-.022.19-.023.19-.025.189-.026.188-.027.189-.028.188-.029.187-.031.188-.031.186-.033.187-.034.186-.035.186-.036.185-.037.185-.039.184-.039.184-.041.184-.042.183-.043.183-.043.182-.046.182-.046.182-.047.181-.048.18-.05.181-.05.179-.052.18-.052.179-.054.178-.055.178-.056.177-.057.177-.058.177-.059.176-.06.175-.061.175-.062.175-.063.174-.064.174-.066.173-.066.172-.067.172-.068.172-.07.171-.07.17-.071.17-.073.17-.073.169-.074.168-.076.168-.076.167-.077.167-.079.166-.079.166-.08.165-.081.165-.083.164-.083.163-.084.163-.085.162-.086.162-.087.161-.088.161-.088.16-.09.159-.091.159-.092.158-.092.158-.094.157-.094.156-.095.156-.096.155-.098.154-.098.154-.099.153-.099.153-.101.152-.102.151-.102.151-.104.15-.104.149-.105.149-.106.148-.107.147-.107.147-.109.146-.109.145-.111.145-.111.144-.112.143-.113.143-.113.142-.115.141-.115.141-.116.139-.117.14-.118.138-.118.138-.12.137-.12.136-.121.135-.122.135-.122.134-.124.134-.124.132-.125.132-.125.131-.127.13-.127.13-.128.129-.129.128-.13.127-.13.127-.131.125-.132.125-.132.124-.134.124-.134.122-.135.122-.135.121-.136.12-.137.12-.138.118-.138.118-.14.117-.139.116-.141.115-.141.115-.142.113-.143.113-.143.112-.144.111-.145.111-.145.109-.146.109-.147.107-.147.107-.148.106-.149.105-.149.104-.15.104-.151.102-.151.102-.152.101-.153.099-.153.099-.154.098-.154.098-.155.096-.156.095-.156.094-.157.094-.158.092-.158.092-.159.091-.159.09-.16.088-.161.088-.161.087-.162.086-.162.085-.163.084-.163.083-.164.083-.165.081-.165.08-.166.079-.166.079-.167.077-.167.076-.168.076-.168.074-.169.073-.17.073-.17.071-.17.07-.171.07-.172.068-.172.067-.172.066-.173.066-.174.064-.174.063-.175.062-.175.061-.175.06-.176.059-.177.058-.177.057-.177.056-.178.055-.178.054-.179.052-.18.052-.179.05-.181.05-.18.048-.181.047-.182.046-.182.046-.182.043-.183.043-.183.042-.184.041-.184.039-.184.039-.185.037-.185.036-.186.035-.186.034-.187.033-.186.031-.188.031-.187.029-.188.028-.189.027-.188.026-.189.025-.19.023-.19.022-.19.022-.19.02-.191.018-.192.018-.191.016-.192.016-.192.014-.193.013-.193.011-.193.011-.193.009-.194.008-.194.007-.195.005-.195.004-.195.004-.195.001-.196.001H30.271l-.196-.001-.195-.001-.195-.004-.195-.004-.195-.005-.194-.007-.194-.008-.193-.009-.193-.011-.193-.011-.193-.013-.192-.014-.192-.016-.191-.016-.192-.018-.191-.018-.19-.02-.19-.022-.19-.022-.19-.023-.189-.025-.188-.026-.189-.027-.188-.028-.187-.029-.188-.031-.186-.031-.187-.033-.186-.034-.186-.035-.185-.036-.185-.037-.184-.039-.184-.039-.184-.041-.183-.042-.183-.043-.182-.043-.182-.046-.182-.046-.181-.047-.18-.048-.181-.05-.179-.05-.18-.052-.179-.052-.178-.054-.178-.055-.177-.056-.177-.057-.177-.058-.176-.059-.175-.06-.175-.061-.175-.062-.174-.063-.174-.064-.173-.066-.172-.066-.172-.067-.172-.068-.171-.07-.17-.07-.17-.071-.17-.073-.169-.073-.168-.074-.168-.076-.167-.076-.167-.077-.166-.079-.166-.079-.165-.08-.165-.081-.164-.083-.163-.083-.163-.084-.162-.085-.162-.086-.161-.087-.161-.088-.16-.088-.159-.09-.159-.091-.158-.092-.158-.092-.157-.094-.156-.094-.156-.095-.155-.096-.154-.098-.154-.098-.153-.099-.153-.099-.152-.101-.151-.102-.151-Line truncated
style="fill:#4d4d4d;fill-opacity:1"
id="path4" />
<g
id="g16">
<path
d="M94.657 208.957h-1.486v-.027c-21.178-.783-38.132-18.223-38.132-39.592 0-19.576 14.229-35.855 32.9-39.05v-.161c0-35.453 28.783-64.237 64.237-64.237 35.454 0 64.238 28.784 64.238 64.237 0 .271-.002.538-.005.804 19.045 3.122 33.574 19.29 33.574 38.74 0 21.683-18.054 39.286-40.293 39.286H94.657Zm105.717-77.514.019-.004c.011-.436.017-.873.017-1.312 0-26.621-21.613-48.234-48.234-48.234-4.677 0-9.199.667-13.476 1.911-20.932 5.493-36.369 24.279-36.369 46.582a47.305 47.305 0 0 0 3.775 18.568 23.546 23.546 0 0 0-11.449-2.952c-13.063 0-23.669 10.606-23.669 23.669 0 13.064 10.606 23.67 23.669 23.67h115.614c13.064 0 23.67-10.606 23.67-23.67 0-13.063-10.606-23.669-23.67-23.669a23.56 23.56 0 0 0-14.616 5.056 47.28 47.28 0 0 0 4.719-19.615Z"
style="fill:#2d67b9"
transform="translate(-2.511 12.577)"
id="path6" />
<path
d="m152.591 65.891.415.004.414.007.413.009.413.012.412.014.411.017.411.019.41.023.409.024.409.027.407.03.408.033.406.034.406.038.405.04.404.042.404.045.403.047.402.05.401.053.401.054.399.058.399.059.398.063.398.064.396.067.396.07.395.072.394.074.393.077.392.079.392.081.39.084.39.086.389.089.388.091.387.093.386.096.385.098.384.1.384.102.382.105.381.107.381.11.379.112.379.114.378.116.376.118.376.121.374.123.374.125.372.128.372.129.37.132.37.134.368.137.367.138.366.141.366.142.364.145.363.148.361.149.361.151.36.154.358.155.358.158.356.16.355.162.354.164.353.166.351.168.351.171.349.172.348.174.347.177.345.178.345.181.343.182.342.185.341.186.339.189.338.19.337.193.336.194.334.196.333.199.332.2.33.202.33.205.327.206.327.208.325.21.324.211.322.214.321.216.32.217.319.22.316.221.316.223.314.225.313.226.311.229.31.23.309.233.307.234.305.235.304.238.303.239.301.242.3.242.298.245.297.247.295.248.294.25.292.251.291.254.289.255.287.256.286.259.285.26.283.262.281.263.28.265.278.267.277.269.275.27.273.271.272.274.27.275.268.276.267.278.265.28.264.281.261.283.261.285.258.286.257.287.255.29.253.29.252.292.25.294.248.295.246.297.245.298.243.3.241.301.239.303.238.304.236.306.234.307.232.308.23.31.229.311.227.313.224.314.224.316.221.317.219.318.218.32.215.321.214.322.212.324.21.325.208.327.206.328.204.329.202.33.2.332.199.333.196.335.195.335.192.337.191.338.188.34.187.34.184.342.183.343.18.345.179.346.176.346.174.348.173.35.17.35.168.352.166.352.164.354.162.355.16.357.158.357.156.359.153.359.152.361.149.362.147.363.145.364.143.365.14.366.139.367.136.369.134.369.132.371.13.371.127.373.125.373.123.375.121.375.119.377.116.377.114.379.112.379.109.381.107.381.105.383.103.383.1.384.098.385.095.387.094.387.09.387.089.389.086.39.084.391.082.391.079.392.076.393.075.395.072.394.069.396.067.397.065.397.062.398.06.399.057.4.055.4.052.402.05.402.047.402.045.404.043.404.04.405.037.406.035.407.032.407.03.408.027.408.025.41.022.41.019.41.017.412.015.412.012.412.009.414.006.414.004.414.002.415-.001.404-.004.4.223.037.223.038.222.04.222.041.221.042.221.043.22.044.22.045.22.047.219.048.218.049.219.05.217.051.218.052.216.054.217.055.216.055.215.057.215.059.214.059.214.06.214.062.213.062.212.064.212.065.212.066.211.067.21.068.21.069.21.07.208.072.209.072.208.074.207.074.207.076.206.077.206.078.205.079.204.08.205.081.203.082.203.083.202.084.202.085.402.174.2.088.2.09.199.09.198.091.198.093.197.093.392.19.196.097.194.097.388.198.193.101.192.101.192.103.191.103.38.21.189.106.376.216.187.109.187.11.37.224.185.113.184.114.183.115.364.232.181.118.36.238.179.121.178.121.178.123.177.123.176.124.176.125.174.126.174.127.174.128.172.128.172.13.171.13.171.131.338.266.168.133.168.135.332.272.165.137.328.278.163.139.162.141.161.142.16.142.16.143.159.144.158.145.157.145.157.147.155.147.155.148.154.149.306.3.151.151.151.153.15.152.149.154.148.154.147.155.147.156.146.157.288.316.143.159.143.16.141.16.14.161.14.162.139.163.138.163.137.165.136.165.135.165.268.334.132.167.132.169.13.169.13.17.129.171.128.171.127.172.126.173.125.173.124.174.123.175.123.176.121.176.24.354.118.178.118.179.116.179.116.18.115.181.226.364.112.182.22.368.109.184.108.185.106.186.106.187.105.187.103.187.103.189.102.189.1.189.1.19.099.191.097.191.097.192.095.192.095.193.093.194.092.194.092.195.09.195.089.196.088.196.087.197.086.198.085.198.084.198.082.2.082.199.081.201.079.2.078.202.078.201.076.203.075.203.074.203.073.204.071.204.071.205.069.205.069.206.067.207.066.207.065.207.126.416.122.418.059.21.058.21.057.211.11.422.053.212.052.213.051.213.05.213.096.428.046.215.045.215.044.215.084.432.04.217.039.217.074.436.035.218.034.219.033.219.062.44.029.22.027.22.027.222.025.221.024.222.023.222.021.222.02.223.019.223.018.224.016.224.015.224.014.225.013.225.011.225.01.225.008.226.008.227.006.226.004.227.003.227.002.228.001.227-.001.254-.002.254-.004.253-.006.253-.007.252-.009.252-.011.252-.012.251-.014.251-.016.25-.017.25-.018.249-.021.249-.022.249-.023.248-.025.248-.027.247-.028.247-.03.246-.031.246-.033.246-.034.244-.036.245-.038.244-.039.243-.04.243-.042.243-.044.242-.045.241-.046.241-.049.241-.049.24-.051.239-.053.239-.054.238-.055.238-.057.237-.059.237-.06.236-.061.236-.063.235-.065.234-.065.234-.068.233-.068.233-.07.232-.072.231-.073.231-.074.231-.076.229-.077.229-.078.229-.08.228-.082.227-.082.226-.085.226-.085.226-.087.224-.088.224-.09.223-.091.223-.092.222-.093.221-.095.221-.097.22-.097.219-.099.219-.101.218-.101.217-.103.216-.104.216-.106.215-.107.214-.108.214-.109.213-.111.212-.112.211-.113.211-.114.21-.116.209-.117.208-.118.208-.12.207-.12.206-.122.205-.124.204-.124.204-.126.203-.127.202-.128.201-.129.201-.13.199-.132.199-.133.198-.134.198-.135.196-.137.195-.137.195-.139.194-.14.193-.141.192-.142.191-.144.191-.144.189-.146.189-.146.188-.148.187-.149.186-.151.185-.151.184-.152.183-.154.183-.154.181-.156.181-.157.179-.157.179-.159.178-.16.177-.161.175-.162.175-.164.174-.164.173-.165.172-.166.171-.168.171-.168.169-.17.168-.17.167-.171.166-.173.165-.173.165-.175.163-.175.162-.177.161-.177.Line truncated
style="fill:#4d4d4d;fill-opacity:1"
transform="translate(-2.511 12.577)"
id="path8" />
<g
id="g14">
<path
d="M94.657 208.957h-1.486v-.027c-21.178-.783-38.132-18.223-38.132-39.592 0-19.576 14.229-35.855 32.9-39.05v-.161c0-35.453 28.783-64.237 64.237-64.237 35.454 0 64.238 28.784 64.238 64.237 0 .271-.002.538-.005.804 19.045 3.122 33.574 19.29 33.574 38.74 0 21.683-18.054 39.286-40.293 39.286H94.657Zm105.717-77.514.019-.004c.011-.436.017-.873.017-1.312 0-26.621-21.613-48.234-48.234-48.234-4.677 0-9.199.667-13.476 1.911-20.932 5.493-36.369 24.279-36.369 46.582a47.305 47.305 0 0 0 3.775 18.568 23.546 23.546 0 0 0-11.449-2.952c-13.063 0-23.669 10.606-23.669 23.669 0 13.064 10.606 23.67 23.669 23.67h115.614c13.064 0 23.67-10.606 23.67-23.67 0-13.063-10.606-23.669-23.67-23.669a23.56 23.56 0 0 0-14.616 5.056 47.28 47.28 0 0 0 4.719-19.615Z"
style="fill:#2d67b9"
transform="matrix(-1 0 0 1 302.511 12.577)"
id="path10" />
<path
d="m151.761 65.891-.415.004-.414.007-.413.009-.413.012-.412.014-.411.017-.411.019-.41.023-.409.024-.408.027-.408.03-.408.033-.406.034-.406.038-.405.04-.404.042-.404.045-.403.047-.402.05-.401.053-.401.054-.399.058-.399.059-.398.063-.398.064-.396.067-.396.07-.395.072-.394.074-.393.077-.392.079-.392.081-.39.084-.39.086-.389.089-.388.091-.387.093-.386.096-.385.098-.384.1-.384.102-.382.105-.381.107-.381.11-.379.112-.379.114-.377.116-.377.118-.376.121-.374.123-.374.125-.372.128-.372.129-.37.132-.369.134-.369.137-.367.138-.366.141-.365.142-.365.145-.362.148-.362.149-.361.151-.36.154-.358.155-.358.158-.356.16-.355.162-.354.164-.353.166-.351.168-.351.171-.349.172-.348.174-.347.177-.345.178-.345.181-.343.182-.342.185-.341.186-.339.189-.338.19-.337.193-.336.194-.334.196-.333.199-.332.2-.33.202-.33.205-.327.206-.327.208-.325.21-.324.211-.322.214-.321.216-.32.217-.318.22-.317.221-.316.223-.314.225-.313.226-.311.229-.31.23-.309.233-.307.234-.305.235-.304.238-.303.239-.301.242-.3.242-.298.245-.297.247-.295.248-.294.25-.292.251-.291.254-.289.255-.287.256-.286.259-.285.26-.283.262-.281.263-.28.265-.278.267-.277.269-.275.27-.273.271-.272.274-.27.275-.268.276-.267.278-.265.28-.263.281-.262.283-.26.285-.259.286-.257.287-.255.29-.253.29-.252.292-.25.294-.248.295-.246.297-.245.298-.243.3-.241.301-.239.303-.238.304-.236.306-.234.307-.232.308-.23.31-.229.311-.226.313-.225.314-.223.316-.222.317-.219.318-.217.32-.216.321-.214.322-.212.324-.21.325-.208.327-.206.328-.204.329-.202.33-.2.332-.199.333-.196.335-.195.335-.192.337-.191.338-.188.34-.187.34-.184.342-.183.343-.18.345-.179.346-.176.346-.174.348-.173.35-.17.35-.168.352-.166.352-.164.354-.162.355-.16.357-.158.357-.156.359-.153.359-.151.361-.15.362-.147.363-.145.364-.143.365-.14.366-.139.367-.136.369-.134.369-.132.371-.13.371-.127.373-.125.373-.123.375-.121.375-.118.377-.117.377-.114.379-.111.379-.11.381-.107.381-.105.383-.102.383-.101.384-.098.385-.095.387-.093.387-.091.387-.089.389-.086.39-.084.391-.081.391-.08.392-.076.393-.075.395-.071.394-.07.396-.067.397-.065.397-.062.398-.06.399-.057.4-.055.4-.052.402-.05.402-.047.402-.045.404-.043.404-.039.405-.038.406-.035.407-.032.407-.03.408-.027.408-.025.41-.022.41-.019.41-.017.412-.015.412-.011.412-.01.414-.006.414-.004.414-.001.415v.161l-.219.039-.218.039-.218.04-.217.042-.217.043-.217.044-.216.045-.216.046-.215.048-.215.048-.214.05-.214.051-.213.052-.213.053-.213.055-.212.055-.211.057-.212.058-.21.059-.21.06-.21.061-.209.063-.209.063-.208.065-.208.066-.208.067-.206.068-.207.069-.205.07-.206.071-.204.072-.205.074-.203.074-.204.076-.202.077-.202.077-.202.079-.201.08-.201.081-.2.082-.199.083-.199.084-.198.085-.198.087-.197.087-.197.088-.196.09-.196.09-.195.091-.194.093-.194.093-.193.095-.193.095-.192.097-.191.097-.191.099-.19.1-.19.1-.189.102-.188.102-.188.104-.187.104-.187.106-.186.106-.185.107-.185.109-.184.109-.183.111-.183.111-.182.112-.181.113-.181.114-.18.115-.18.116-.178.117-.179.118-.177.119-.177.12-.176.121-.175.121-.175.123-.174.123-.173.125-.173.125-.172.126-.171.127-.171.128-.17.129-.169.13-.168.13-.168.132-.167.132-.166.133-.165.135-.165.135-.164.135-.163.137-.163.138-.162.138-.161.14-.16.14-.159.141-.159.142-.158.142-.157.144-.157.144-.155.145-.155.146-.154.147-.154.148-.152.148-.152.149-.151.15-.15.151-.149.152-.148.152-.148.154-.147.154-.146.154-.145.156-.145.156-.143.158-.143.157-.142.159-.141.16-.14.16-.139.161-.139.162-.138.162-.136.163-.136.164-.135.165-.134.165-.134.166-.132.167-.132.168-.13.168-.13.169-.129.17-.128.171-.127.171-.127.172-.125.172-.124.174-.124.174-.122.174-.122.176-.121.176-.12.177-.118.177-.118.178-.117.179-.116.179-.116.18-.114.181-.113.181-.112.182-.112.183-.11.183-.109.184-.109.185-.107.185-.107.186-.105.187-.105.187-.104.188-.102.188-.102.189-.1.19-.1.19-.098.191-.098.191-.097.192-.095.193-.095.193-.093.194-.093.194-.091.195-.091.195-.089.196-.088.197-.088.197-.086.198-.085.198-.085.199-.083.2-.082.2-.081.2-.08.201-.079.202-.077.202-.077.203-.076.203-.074.203-.074.205-.072.204-.072.206-.07.205-.069.207-.068.206-.067.208-.066.207-.064.209-.064.208-.062.21-.062.209-.06.211-.059.21-.058.211-.057.212-.055.212-.055.212-.053.213-.052.214-.051.214-.05.214-.049.215-.048.215-.046.216-.045.216-.044.216-.043.217-.042.217-.04.218-.04.218-.038.219-.037.219-.035.219-.035.22-.033.22-.032.221-.031.221-.03.221-.028.222-.027.222-.026.222-.025.223-.024.223-.022.224-.021.224-.02.224-.018.225-.017.225-.016.225-.015.226-.014.226-.012.226-.011.227-.009.227-.009.228-.007.227-.006.228-.004.229-.004.228-.002.229v.229l.001.251.002.25.004.249.005.249.007.249.009.248.01.248.011.248.013.247.015.247.016.246.017.246.019.246.021.245.022.245.023.244.025.244.027.243.028.243.029.243.031.242.032.241.034.242.035.24.037.241.038.239.04.24.041.238.042.239.044.238.045.237.047.237.048.236.049.236.051.235.052.235.054.234.055.234.056.233.058.233.059.232.122.462.064.231.064.23.066.229.067.229.069.228.07.228.071.227.073.226.074.226.075.225.076.225.078.224.079.223.081.223.082.222.083.222.084.221.085.22.087.22.088.219.18.436.092.217.093.Line truncated
style="fill:#4d4d4d;fill-opacity:1"
transform="matrix(-1 0 0 1 302.511 12.577)"
id="path12" />
</g>
</g>
<path
d="m 114.30977,144.2723 h 50.31577 L 154.3183,133.29689 h 16.00038 l 16.01264,17.05067 -16.01264,17.04991 h -15.98379 l 10.44067,-11.1175 h -50.46579 z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-7" /><path
d="M 186.44817,172.91513 H 136.1324 l 10.30725,-10.97541 h -16.00039 l -16.01264,17.05067 16.01264,17.04991 h 15.98379 l -10.44067,-11.1175 h 50.46579 z"
style="clip-rule:evenodd;fill:#4d4d4d;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path10-5" /></svg>

After

Width:  |  Height:  |  Size: 78 KiB

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421"
version="1.1"
id="svg18"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs22" /><sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg18" />
<path
d="M300 30.271C300 13.564 286.436 0 269.729 0H30.271C13.564 0 0 13.564 0 30.271v239.458C0 286.436 13.564 300 30.271 300h239.458C286.436 300 300 286.436 300 269.729V30.271Z"
style="fill:#fffefe"
id="path2" /><path
d="m 126.0992,224.81393 c 36.94958,-46.13888 33.95227,-117.5859 -6.72068,-159.539672 l -0.0404,-0.0415 a 8.4262645,9.5474485 0 0 1 -0.51796,-13.437497 c 3.1284,-3.89368 8.4597,-4.177124 11.89613,-0.632472 47.587,49.085571 51.05025,132.713411 7.72895,186.632281 -3.1284,3.89367 -8.45969,4.17712 -11.89613,0.63246 a 8.4262645,9.5474485 0 0 1 -0.5582,-13.47898 z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:1.37905;stroke-linejoin:round;stroke-miterlimit:2;fill-opacity:1"
id="path8" />
<path
d="m269.925.001.195.001.39.008.195.005.194.007.194.008.193.009.386.022.193.013.192.014.192.016.191.016.192.018.191.018.19.02.38.044.19.023.189.025.188.026.189.027.188.028.187.029.188.031.186.031.187.033.186.034.186.035.185.036.185.037.368.078.184.041.183.042.183.043.182.043.364.092.181.047.18.048.181.05.179.05.18.052.179.052.178.054.178.055.177.056.177.057.177.058.176.059.175.06.175.061.175.062.174.063.174.064.173.066.172.066.172.067.172.068.171.07.17.07.17.071.17.073.169.073.168.074.168.076.167.076.167.077.332.158.165.08.165.081.164.083.163.083.163.084.162.085.162.086.161.087.161.088.16.088.159.09.159.091.316.184.157.094.156.094.156.095.155.096.308.196.306.198.152.101.302.204.15.104.149.104.149.105.148.106.294.214.146.109.145.109.145.111.144.111.143.112.143.113.142.113.282.23.139.116.14.117.276.236.137.12.136.12.135.121.135.122.134.122.134.124.132.124.132.125.131.125.26.254.129.128.128.129.254.26.125.131.125.132.124.132.124.134.122.134.122.135.121.135.12.136.12.137.236.276.117.14.116.139.23.282.113.142.113.143.112.143.111.144.111.145.109.145.109.146.214.294.106.148.105.149.104.149.104.15.204.302.101.152.198.306.196.308.096.155.095.156.094.156.094.157.184.316.091.159.09.159.088.16.088.161.087.161.086.162.085.162.084.163.083.163.083.164.081.165.08.165.158.332.077.167.076.167.076.168.074.168.073.169.073.17.071.17.07.17.07.171.068.172.067.172.066.172.066.173.064.174.063.174.062.175.061.175.06.175.059.176.058.177.057.177.056.177.055.178.054.178.052.179.052.18.05.179.05.181.048.18.047.181.092.364.043.182.043.183.042.183.041.184.078.368.037.185.036.185.035.186.034.186.033.187.031.186.031.188.029.187.028.188.027.189.026.188.025.189.023.19.044.38.02.19.018.191.018.192.016.191.016.192.014.192.013.193.022.386.009.193.008.194.007.194.005.195.008.39.002.391v239.458l-.001.196-.001.195-.004.195-.004.195-.005.195-.007.194-.008.194-.009.193-.011.193-.011.193-.013.193-.014.192-.016.192-.016.191-.018.192-.018.191-.02.19-.022.19-.022.19-.023.19-.025.189-.026.188-.027.189-.028.188-.029.187-.031.188-.031.186-.033.187-.034.186-.035.186-.036.185-.037.185-.039.184-.039.184-.041.184-.042.183-.043.183-.043.182-.046.182-.046.182-.047.181-.048.18-.05.181-.05.179-.052.18-.052.179-.054.178-.055.178-.056.177-.057.177-.058.177-.059.176-.06.175-.061.175-.062.175-.063.174-.064.174-.066.173-.066.172-.067.172-.068.172-.07.171-.07.17-.071.17-.073.17-.073.169-.074.168-.076.168-.076.167-.077.167-.079.166-.079.166-.08.165-.081.165-.083.164-.083.163-.084.163-.085.162-.086.162-.087.161-.088.161-.088.16-.09.159-.091.159-.092.158-.092.158-.094.157-.094.156-.095.156-.096.155-.098.154-.098.154-.099.153-.099.153-.101.152-.102.151-.102.151-.104.15-.104.149-.105.149-.106.148-.107.147-.107.147-.109.146-.109.145-.111.145-.111.144-.112.143-.113.143-.113.142-.115.141-.115.141-.116.139-.117.14-.118.138-.118.138-.12.137-.12.136-.121.135-.122.135-.122.134-.124.134-.124.132-.125.132-.125.131-.127.13-.127.13-.128.129-.129.128-.13.127-.13.127-.131.125-.132.125-.132.124-.134.124-.134.122-.135.122-.135.121-.136.12-.137.12-.138.118-.138.118-.14.117-.139.116-.141.115-.141.115-.142.113-.143.113-.143.112-.144.111-.145.111-.145.109-.146.109-.147.107-.147.107-.148.106-.149.105-.149.104-.15.104-.151.102-.151.102-.152.101-.153.099-.153.099-.154.098-.154.098-.155.096-.156.095-.156.094-.157.094-.158.092-.158.092-.159.091-.159.09-.16.088-.161.088-.161.087-.162.086-.162.085-.163.084-.163.083-.164.083-.165.081-.165.08-.166.079-.166.079-.167.077-.167.076-.168.076-.168.074-.169.073-.17.073-.17.071-.17.07-.171.07-.172.068-.172.067-.172.066-.173.066-.174.064-.174.063-.175.062-.175.061-.175.06-.176.059-.177.058-.177.057-.177.056-.178.055-.178.054-.179.052-.18.052-.179.05-.181.05-.18.048-.181.047-.182.046-.182.046-.182.043-.183.043-.183.042-.184.041-.184.039-.184.039-.185.037-.185.036-.186.035-.186.034-.187.033-.186.031-.188.031-.187.029-.188.028-.189.027-.188.026-.189.025-.19.023-.19.022-.19.022-.19.02-.191.018-.192.018-.191.016-.192.016-.192.014-.193.013-.193.011-.193.011-.193.009-.194.008-.194.007-.195.005-.195.004-.195.004-.195.001-.196.001H30.271l-.196-.001-.195-.001-.195-.004-.195-.004-.195-.005-.194-.007-.194-.008-.193-.009-.193-.011-.193-.011-.193-.013-.192-.014-.192-.016-.191-.016-.192-.018-.191-.018-.19-.02-.19-.022-.19-.022-.19-.023-.189-.025-.188-.026-.189-.027-.188-.028-.187-.029-.188-.031-.186-.031-.187-.033-.186-.034-.186-.035-.185-.036-.185-.037-.184-.039-.184-.039-.184-.041-.183-.042-.183-.043-.182-.043-.182-.046-.182-.046-.181-.047-.18-.048-.181-.05-.179-.05-.18-.052-.179-.052-.178-.054-.178-.055-.177-.056-.177-.057-.177-.058-.176-.059-.175-.06-.175-.061-.175-.062-.174-.063-.174-.064-.173-.066-.172-.066-.172-.067-.172-.068-.171-.07-.17-.07-.17-.071-.17-.073-.169-.073-.168-.074-.168-.076-.167-.076-.167-.077-.166-.079-.166-.079-.165-.08-.165-.081-.164-.083-.163-.083-.163-.084-.162-.085-.162-.086-.161-.087-.161-.088-.16-.088-.159-.09-.159-.091-.158-.092-.158-.092-.157-.094-.156-.094-.156-.095-.155-.096-.154-.098-.154-.098-.153-.099-.153-.099-.152-.101-.151-.102-.151-Line truncated
style="fill:#109e00;fill-opacity:1"
id="path4" />
<path
d="M 56.204265,104.13685 H 105.92542 L 95.739989,95.27996 h 15.811291 l 15.82341,13.75947 -15.82341,13.75883 H 95.756379 l 10.317291,-8.97155 H 56.204265 Z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3" /><path
d="m 56.204269,144.13685 h 49.721151 l -10.185427,-8.85689 h 15.811287 l 15.82341,13.75947 -15.82341,13.75883 H 95.756383 l 10.317287,-8.97155 H 56.204269 Z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5" /><path
d="m 186.20427,144.13685 h 49.72115 L 225.74,135.27996 h 15.81128 l 15.82341,13.75947 -15.82341,13.75883 h -15.79489 l 10.31728,-8.97155 h -49.8694 z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-2" /><path
d="m 56.204269,184.13685 h 49.721151 l -10.185427,-8.85689 h 15.811287 l 15.82341,13.75947 -15.82341,13.75883 H 95.756383 l 10.317287,-8.97155 H 56.204269 Z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-6" /></svg>

After

Width:  |  Height:  |  Size: 20 KiB

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421"
version="1.1"
id="svg18"
sodipodi:docname="nat2.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs22" /><sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg18" />
<path
d="M300 30.271C300 13.564 286.436 0 269.729 0H30.271C13.564 0 0 13.564 0 30.271v239.458C0 286.436 13.564 300 30.271 300h239.458C286.436 300 300 286.436 300 269.729V30.271Z"
style="fill:#fffefe"
id="path2" />
<path
d="m269.925.001.195.001.39.008.195.005.194.007.194.008.193.009.386.022.193.013.192.014.192.016.191.016.192.018.191.018.19.02.38.044.19.023.189.025.188.026.189.027.188.028.187.029.188.031.186.031.187.033.186.034.186.035.185.036.185.037.368.078.184.041.183.042.183.043.182.043.364.092.181.047.18.048.181.05.179.05.18.052.179.052.178.054.178.055.177.056.177.057.177.058.176.059.175.06.175.061.175.062.174.063.174.064.173.066.172.066.172.067.172.068.171.07.17.07.17.071.17.073.169.073.168.074.168.076.167.076.167.077.332.158.165.08.165.081.164.083.163.083.163.084.162.085.162.086.161.087.161.088.16.088.159.09.159.091.316.184.157.094.156.094.156.095.155.096.308.196.306.198.152.101.302.204.15.104.149.104.149.105.148.106.294.214.146.109.145.109.145.111.144.111.143.112.143.113.142.113.282.23.139.116.14.117.276.236.137.12.136.12.135.121.135.122.134.122.134.124.132.124.132.125.131.125.26.254.129.128.128.129.254.26.125.131.125.132.124.132.124.134.122.134.122.135.121.135.12.136.12.137.236.276.117.14.116.139.23.282.113.142.113.143.112.143.111.144.111.145.109.145.109.146.214.294.106.148.105.149.104.149.104.15.204.302.101.152.198.306.196.308.096.155.095.156.094.156.094.157.184.316.091.159.09.159.088.16.088.161.087.161.086.162.085.162.084.163.083.163.083.164.081.165.08.165.158.332.077.167.076.167.076.168.074.168.073.169.073.17.071.17.07.17.07.171.068.172.067.172.066.172.066.173.064.174.063.174.062.175.061.175.06.175.059.176.058.177.057.177.056.177.055.178.054.178.052.179.052.18.05.179.05.181.048.18.047.181.092.364.043.182.043.183.042.183.041.184.078.368.037.185.036.185.035.186.034.186.033.187.031.186.031.188.029.187.028.188.027.189.026.188.025.189.023.19.044.38.02.19.018.191.018.192.016.191.016.192.014.192.013.193.022.386.009.193.008.194.007.194.005.195.008.39.002.391v239.458l-.001.196-.001.195-.004.195-.004.195-.005.195-.007.194-.008.194-.009.193-.011.193-.011.193-.013.193-.014.192-.016.192-.016.191-.018.192-.018.191-.02.19-.022.19-.022.19-.023.19-.025.189-.026.188-.027.189-.028.188-.029.187-.031.188-.031.186-.033.187-.034.186-.035.186-.036.185-.037.185-.039.184-.039.184-.041.184-.042.183-.043.183-.043.182-.046.182-.046.182-.047.181-.048.18-.05.181-.05.179-.052.18-.052.179-.054.178-.055.178-.056.177-.057.177-.058.177-.059.176-.06.175-.061.175-.062.175-.063.174-.064.174-.066.173-.066.172-.067.172-.068.172-.07.171-.07.17-.071.17-.073.17-.073.169-.074.168-.076.168-.076.167-.077.167-.079.166-.079.166-.08.165-.081.165-.083.164-.083.163-.084.163-.085.162-.086.162-.087.161-.088.161-.088.16-.09.159-.091.159-.092.158-.092.158-.094.157-.094.156-.095.156-.096.155-.098.154-.098.154-.099.153-.099.153-.101.152-.102.151-.102.151-.104.15-.104.149-.105.149-.106.148-.107.147-.107.147-.109.146-.109.145-.111.145-.111.144-.112.143-.113.143-.113.142-.115.141-.115.141-.116.139-.117.14-.118.138-.118.138-.12.137-.12.136-.121.135-.122.135-.122.134-.124.134-.124.132-.125.132-.125.131-.127.13-.127.13-.128.129-.129.128-.13.127-.13.127-.131.125-.132.125-.132.124-.134.124-.134.122-.135.122-.135.121-.136.12-.137.12-.138.118-.138.118-.14.117-.139.116-.141.115-.141.115-.142.113-.143.113-.143.112-.144.111-.145.111-.145.109-.146.109-.147.107-.147.107-.148.106-.149.105-.149.104-.15.104-.151.102-.151.102-.152.101-.153.099-.153.099-.154.098-.154.098-.155.096-.156.095-.156.094-.157.094-.158.092-.158.092-.159.091-.159.09-.16.088-.161.088-.161.087-.162.086-.162.085-.163.084-.163.083-.164.083-.165.081-.165.08-.166.079-.166.079-.167.077-.167.076-.168.076-.168.074-.169.073-.17.073-.17.071-.17.07-.171.07-.172.068-.172.067-.172.066-.173.066-.174.064-.174.063-.175.062-.175.061-.175.06-.176.059-.177.058-.177.057-.177.056-.178.055-.178.054-.179.052-.18.052-.179.05-.181.05-.18.048-.181.047-.182.046-.182.046-.182.043-.183.043-.183.042-.184.041-.184.039-.184.039-.185.037-.185.036-.186.035-.186.034-.187.033-.186.031-.188.031-.187.029-.188.028-.189.027-.188.026-.189.025-.19.023-.19.022-.19.022-.19.02-.191.018-.192.018-.191.016-.192.016-.192.014-.193.013-.193.011-.193.011-.193.009-.194.008-.194.007-.195.005-.195.004-.195.004-.195.001-.196.001H30.271l-.196-.001-.195-.001-.195-.004-.195-.004-.195-.005-.194-.007-.194-.008-.193-.009-.193-.011-.193-.011-.193-.013-.192-.014-.192-.016-.191-.016-.192-.018-.191-.018-.19-.02-.19-.022-.19-.022-.19-.023-.189-.025-.188-.026-.189-.027-.188-.028-.187-.029-.188-.031-.186-.031-.187-.033-.186-.034-.186-.035-.185-.036-.185-.037-.184-.039-.184-.039-.184-.041-.183-.042-.183-.043-.182-.043-.182-.046-.182-.046-.181-.047-.18-.048-.181-.05-.179-.05-.18-.052-.179-.052-.178-.054-.178-.055-.177-.056-.177-.057-.177-.058-.176-.059-.175-.06-.175-.061-.175-.062-.174-.063-.174-.064-.173-.066-.172-.066-.172-.067-.172-.068-.171-.07-.17-.07-.17-.071-.17-.073-.169-.073-.168-.074-.168-.076-.167-.076-.167-.077-.166-.079-.166-.079-.165-.08-.165-.081-.164-.083-.163-.083-.163-.084-.162-.085-.162-.086-.161-.087-.161-.088-.16-.088-.159-.09-.159-.091-.158-.092-.158-.092-.157-.094-.156-.094-.156-.095-.155-.096-.154-.098-.154-.098-.153-.099-.153-.099-.152-.101-.151-.102-.151-Line truncated
style="fill:#109e00;fill-opacity:1"
id="path4" />
<g
id="g16">
<path
d="M94.657 208.957h-1.486v-.027c-21.178-.783-38.132-18.223-38.132-39.592 0-19.576 14.229-35.855 32.9-39.05v-.161c0-35.453 28.783-64.237 64.237-64.237 35.454 0 64.238 28.784 64.238 64.237 0 .271-.002.538-.005.804 19.045 3.122 33.574 19.29 33.574 38.74 0 21.683-18.054 39.286-40.293 39.286H94.657Zm105.717-77.514.019-.004c.011-.436.017-.873.017-1.312 0-26.621-21.613-48.234-48.234-48.234-4.677 0-9.199.667-13.476 1.911-20.932 5.493-36.369 24.279-36.369 46.582a47.305 47.305 0 0 0 3.775 18.568 23.546 23.546 0 0 0-11.449-2.952c-13.063 0-23.669 10.606-23.669 23.669 0 13.064 10.606 23.67 23.669 23.67h115.614c13.064 0 23.67-10.606 23.67-23.67 0-13.063-10.606-23.669-23.67-23.669a23.56 23.56 0 0 0-14.616 5.056 47.28 47.28 0 0 0 4.719-19.615Z"
style="fill:#2d67b9"
transform="translate(-2.511 12.577)"
id="path6" />
<path
d="m152.591 65.891.415.004.414.007.413.009.413.012.412.014.411.017.411.019.41.023.409.024.409.027.407.03.408.033.406.034.406.038.405.04.404.042.404.045.403.047.402.05.401.053.401.054.399.058.399.059.398.063.398.064.396.067.396.07.395.072.394.074.393.077.392.079.392.081.39.084.39.086.389.089.388.091.387.093.386.096.385.098.384.1.384.102.382.105.381.107.381.11.379.112.379.114.378.116.376.118.376.121.374.123.374.125.372.128.372.129.37.132.37.134.368.137.367.138.366.141.366.142.364.145.363.148.361.149.361.151.36.154.358.155.358.158.356.16.355.162.354.164.353.166.351.168.351.171.349.172.348.174.347.177.345.178.345.181.343.182.342.185.341.186.339.189.338.19.337.193.336.194.334.196.333.199.332.2.33.202.33.205.327.206.327.208.325.21.324.211.322.214.321.216.32.217.319.22.316.221.316.223.314.225.313.226.311.229.31.23.309.233.307.234.305.235.304.238.303.239.301.242.3.242.298.245.297.247.295.248.294.25.292.251.291.254.289.255.287.256.286.259.285.26.283.262.281.263.28.265.278.267.277.269.275.27.273.271.272.274.27.275.268.276.267.278.265.28.264.281.261.283.261.285.258.286.257.287.255.29.253.29.252.292.25.294.248.295.246.297.245.298.243.3.241.301.239.303.238.304.236.306.234.307.232.308.23.31.229.311.227.313.224.314.224.316.221.317.219.318.218.32.215.321.214.322.212.324.21.325.208.327.206.328.204.329.202.33.2.332.199.333.196.335.195.335.192.337.191.338.188.34.187.34.184.342.183.343.18.345.179.346.176.346.174.348.173.35.17.35.168.352.166.352.164.354.162.355.16.357.158.357.156.359.153.359.152.361.149.362.147.363.145.364.143.365.14.366.139.367.136.369.134.369.132.371.13.371.127.373.125.373.123.375.121.375.119.377.116.377.114.379.112.379.109.381.107.381.105.383.103.383.1.384.098.385.095.387.094.387.09.387.089.389.086.39.084.391.082.391.079.392.076.393.075.395.072.394.069.396.067.397.065.397.062.398.06.399.057.4.055.4.052.402.05.402.047.402.045.404.043.404.04.405.037.406.035.407.032.407.03.408.027.408.025.41.022.41.019.41.017.412.015.412.012.412.009.414.006.414.004.414.002.415-.001.404-.004.4.223.037.223.038.222.04.222.041.221.042.221.043.22.044.22.045.22.047.219.048.218.049.219.05.217.051.218.052.216.054.217.055.216.055.215.057.215.059.214.059.214.06.214.062.213.062.212.064.212.065.212.066.211.067.21.068.21.069.21.07.208.072.209.072.208.074.207.074.207.076.206.077.206.078.205.079.204.08.205.081.203.082.203.083.202.084.202.085.402.174.2.088.2.09.199.09.198.091.198.093.197.093.392.19.196.097.194.097.388.198.193.101.192.101.192.103.191.103.38.21.189.106.376.216.187.109.187.11.37.224.185.113.184.114.183.115.364.232.181.118.36.238.179.121.178.121.178.123.177.123.176.124.176.125.174.126.174.127.174.128.172.128.172.13.171.13.171.131.338.266.168.133.168.135.332.272.165.137.328.278.163.139.162.141.161.142.16.142.16.143.159.144.158.145.157.145.157.147.155.147.155.148.154.149.306.3.151.151.151.153.15.152.149.154.148.154.147.155.147.156.146.157.288.316.143.159.143.16.141.16.14.161.14.162.139.163.138.163.137.165.136.165.135.165.268.334.132.167.132.169.13.169.13.17.129.171.128.171.127.172.126.173.125.173.124.174.123.175.123.176.121.176.24.354.118.178.118.179.116.179.116.18.115.181.226.364.112.182.22.368.109.184.108.185.106.186.106.187.105.187.103.187.103.189.102.189.1.189.1.19.099.191.097.191.097.192.095.192.095.193.093.194.092.194.092.195.09.195.089.196.088.196.087.197.086.198.085.198.084.198.082.2.082.199.081.201.079.2.078.202.078.201.076.203.075.203.074.203.073.204.071.204.071.205.069.205.069.206.067.207.066.207.065.207.126.416.122.418.059.21.058.21.057.211.11.422.053.212.052.213.051.213.05.213.096.428.046.215.045.215.044.215.084.432.04.217.039.217.074.436.035.218.034.219.033.219.062.44.029.22.027.22.027.222.025.221.024.222.023.222.021.222.02.223.019.223.018.224.016.224.015.224.014.225.013.225.011.225.01.225.008.226.008.227.006.226.004.227.003.227.002.228.001.227-.001.254-.002.254-.004.253-.006.253-.007.252-.009.252-.011.252-.012.251-.014.251-.016.25-.017.25-.018.249-.021.249-.022.249-.023.248-.025.248-.027.247-.028.247-.03.246-.031.246-.033.246-.034.244-.036.245-.038.244-.039.243-.04.243-.042.243-.044.242-.045.241-.046.241-.049.241-.049.24-.051.239-.053.239-.054.238-.055.238-.057.237-.059.237-.06.236-.061.236-.063.235-.065.234-.065.234-.068.233-.068.233-.07.232-.072.231-.073.231-.074.231-.076.229-.077.229-.078.229-.08.228-.082.227-.082.226-.085.226-.085.226-.087.224-.088.224-.09.223-.091.223-.092.222-.093.221-.095.221-.097.22-.097.219-.099.219-.101.218-.101.217-.103.216-.104.216-.106.215-.107.214-.108.214-.109.213-.111.212-.112.211-.113.211-.114.21-.116.209-.117.208-.118.208-.12.207-.12.206-.122.205-.124.204-.124.204-.126.203-.127.202-.128.201-.129.201-.13.199-.132.199-.133.198-.134.198-.135.196-.137.195-.137.195-.139.194-.14.193-.141.192-.142.191-.144.191-.144.189-.146.189-.146.188-.148.187-.149.186-.151.185-.151.184-.152.183-.154.183-.154.181-.156.181-.157.179-.157.179-.159.178-.16.177-.161.175-.162.175-.164.174-.164.173-.165.172-.166.171-.168.171-.168.169-.17.168-.17.167-.171.166-.173.165-.173.165-.175.163-.175.162-.177.161-.177.Line truncated
style="fill:#109e00;fill-opacity:1"
transform="translate(-2.511 12.577)"
id="path8" />
<g
id="g14">
<path
d="M94.657 208.957h-1.486v-.027c-21.178-.783-38.132-18.223-38.132-39.592 0-19.576 14.229-35.855 32.9-39.05v-.161c0-35.453 28.783-64.237 64.237-64.237 35.454 0 64.238 28.784 64.238 64.237 0 .271-.002.538-.005.804 19.045 3.122 33.574 19.29 33.574 38.74 0 21.683-18.054 39.286-40.293 39.286H94.657Zm105.717-77.514.019-.004c.011-.436.017-.873.017-1.312 0-26.621-21.613-48.234-48.234-48.234-4.677 0-9.199.667-13.476 1.911-20.932 5.493-36.369 24.279-36.369 46.582a47.305 47.305 0 0 0 3.775 18.568 23.546 23.546 0 0 0-11.449-2.952c-13.063 0-23.669 10.606-23.669 23.669 0 13.064 10.606 23.67 23.669 23.67h115.614c13.064 0 23.67-10.606 23.67-23.67 0-13.063-10.606-23.669-23.67-23.669a23.56 23.56 0 0 0-14.616 5.056 47.28 47.28 0 0 0 4.719-19.615Z"
style="fill:#2d67b9"
transform="matrix(-1 0 0 1 302.511 12.577)"
id="path10" />
<path
d="m151.761 65.891-.415.004-.414.007-.413.009-.413.012-.412.014-.411.017-.411.019-.41.023-.409.024-.408.027-.408.03-.408.033-.406.034-.406.038-.405.04-.404.042-.404.045-.403.047-.402.05-.401.053-.401.054-.399.058-.399.059-.398.063-.398.064-.396.067-.396.07-.395.072-.394.074-.393.077-.392.079-.392.081-.39.084-.39.086-.389.089-.388.091-.387.093-.386.096-.385.098-.384.1-.384.102-.382.105-.381.107-.381.11-.379.112-.379.114-.377.116-.377.118-.376.121-.374.123-.374.125-.372.128-.372.129-.37.132-.369.134-.369.137-.367.138-.366.141-.365.142-.365.145-.362.148-.362.149-.361.151-.36.154-.358.155-.358.158-.356.16-.355.162-.354.164-.353.166-.351.168-.351.171-.349.172-.348.174-.347.177-.345.178-.345.181-.343.182-.342.185-.341.186-.339.189-.338.19-.337.193-.336.194-.334.196-.333.199-.332.2-.33.202-.33.205-.327.206-.327.208-.325.21-.324.211-.322.214-.321.216-.32.217-.318.22-.317.221-.316.223-.314.225-.313.226-.311.229-.31.23-.309.233-.307.234-.305.235-.304.238-.303.239-.301.242-.3.242-.298.245-.297.247-.295.248-.294.25-.292.251-.291.254-.289.255-.287.256-.286.259-.285.26-.283.262-.281.263-.28.265-.278.267-.277.269-.275.27-.273.271-.272.274-.27.275-.268.276-.267.278-.265.28-.263.281-.262.283-.26.285-.259.286-.257.287-.255.29-.253.29-.252.292-.25.294-.248.295-.246.297-.245.298-.243.3-.241.301-.239.303-.238.304-.236.306-.234.307-.232.308-.23.31-.229.311-.226.313-.225.314-.223.316-.222.317-.219.318-.217.32-.216.321-.214.322-.212.324-.21.325-.208.327-.206.328-.204.329-.202.33-.2.332-.199.333-.196.335-.195.335-.192.337-.191.338-.188.34-.187.34-.184.342-.183.343-.18.345-.179.346-.176.346-.174.348-.173.35-.17.35-.168.352-.166.352-.164.354-.162.355-.16.357-.158.357-.156.359-.153.359-.151.361-.15.362-.147.363-.145.364-.143.365-.14.366-.139.367-.136.369-.134.369-.132.371-.13.371-.127.373-.125.373-.123.375-.121.375-.118.377-.117.377-.114.379-.111.379-.11.381-.107.381-.105.383-.102.383-.101.384-.098.385-.095.387-.093.387-.091.387-.089.389-.086.39-.084.391-.081.391-.08.392-.076.393-.075.395-.071.394-.07.396-.067.397-.065.397-.062.398-.06.399-.057.4-.055.4-.052.402-.05.402-.047.402-.045.404-.043.404-.039.405-.038.406-.035.407-.032.407-.03.408-.027.408-.025.41-.022.41-.019.41-.017.412-.015.412-.011.412-.01.414-.006.414-.004.414-.001.415v.161l-.219.039-.218.039-.218.04-.217.042-.217.043-.217.044-.216.045-.216.046-.215.048-.215.048-.214.05-.214.051-.213.052-.213.053-.213.055-.212.055-.211.057-.212.058-.21.059-.21.06-.21.061-.209.063-.209.063-.208.065-.208.066-.208.067-.206.068-.207.069-.205.07-.206.071-.204.072-.205.074-.203.074-.204.076-.202.077-.202.077-.202.079-.201.08-.201.081-.2.082-.199.083-.199.084-.198.085-.198.087-.197.087-.197.088-.196.09-.196.09-.195.091-.194.093-.194.093-.193.095-.193.095-.192.097-.191.097-.191.099-.19.1-.19.1-.189.102-.188.102-.188.104-.187.104-.187.106-.186.106-.185.107-.185.109-.184.109-.183.111-.183.111-.182.112-.181.113-.181.114-.18.115-.18.116-.178.117-.179.118-.177.119-.177.12-.176.121-.175.121-.175.123-.174.123-.173.125-.173.125-.172.126-.171.127-.171.128-.17.129-.169.13-.168.13-.168.132-.167.132-.166.133-.165.135-.165.135-.164.135-.163.137-.163.138-.162.138-.161.14-.16.14-.159.141-.159.142-.158.142-.157.144-.157.144-.155.145-.155.146-.154.147-.154.148-.152.148-.152.149-.151.15-.15.151-.149.152-.148.152-.148.154-.147.154-.146.154-.145.156-.145.156-.143.158-.143.157-.142.159-.141.16-.14.16-.139.161-.139.162-.138.162-.136.163-.136.164-.135.165-.134.165-.134.166-.132.167-.132.168-.13.168-.13.169-.129.17-.128.171-.127.171-.127.172-.125.172-.124.174-.124.174-.122.174-.122.176-.121.176-.12.177-.118.177-.118.178-.117.179-.116.179-.116.18-.114.181-.113.181-.112.182-.112.183-.11.183-.109.184-.109.185-.107.185-.107.186-.105.187-.105.187-.104.188-.102.188-.102.189-.1.19-.1.19-.098.191-.098.191-.097.192-.095.193-.095.193-.093.194-.093.194-.091.195-.091.195-.089.196-.088.197-.088.197-.086.198-.085.198-.085.199-.083.2-.082.2-.081.2-.08.201-.079.202-.077.202-.077.203-.076.203-.074.203-.074.205-.072.204-.072.206-.07.205-.069.207-.068.206-.067.208-.066.207-.064.209-.064.208-.062.21-.062.209-.06.211-.059.21-.058.211-.057.212-.055.212-.055.212-.053.213-.052.214-.051.214-.05.214-.049.215-.048.215-.046.216-.045.216-.044.216-.043.217-.042.217-.04.218-.04.218-.038.219-.037.219-.035.219-.035.22-.033.22-.032.221-.031.221-.03.221-.028.222-.027.222-.026.222-.025.223-.024.223-.022.224-.021.224-.02.224-.018.225-.017.225-.016.225-.015.226-.014.226-.012.226-.011.227-.009.227-.009.228-.007.227-.006.228-.004.229-.004.228-.002.229v.229l.001.251.002.25.004.249.005.249.007.249.009.248.01.248.011.248.013.247.015.247.016.246.017.246.019.246.021.245.022.245.023.244.025.244.027.243.028.243.029.243.031.242.032.241.034.242.035.24.037.241.038.239.04.24.041.238.042.239.044.238.045.237.047.237.048.236.049.236.051.235.052.235.054.234.055.234.056.233.058.233.059.232.122.462.064.231.064.23.066.229.067.229.069.228.07.228.071.227.073.226.074.226.075.225.076.225.078.224.079.223.081.223.082.222.083.222.084.221.085.22.087.22.088.219.18.436.092.217.093.Line truncated
style="fill:#109e00;fill-opacity:1"
transform="matrix(-1 0 0 1 302.511 12.577)"
id="path12" />
</g>
</g>
<path
d="m 114.30977,144.2723 h 50.31577 L 154.3183,133.29689 h 16.00038 l 16.01264,17.05067 -16.01264,17.04991 h -15.98379 l 10.44067,-11.1175 h -50.46579 z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-7" /><path
d="M 186.44817,172.91513 H 136.1324 l 10.30725,-10.97541 h -16.00039 l -16.01264,17.05067 16.01264,17.04991 h 15.98379 l -10.44067,-11.1175 h 50.46579 z"
style="clip-rule:evenodd;fill:#109e00;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path10-5" /></svg>

After

Width:  |  Height:  |  Size: 78 KiB

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421"
version="1.1"
id="svg18"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs22" /><sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg18" />
<path
d="M300 30.271C300 13.564 286.436 0 269.729 0H30.271C13.564 0 0 13.564 0 30.271v239.458C0 286.436 13.564 300 30.271 300h239.458C286.436 300 300 286.436 300 269.729V30.271Z"
style="fill:#fffefe"
id="path2" /><path
d="m 126.0992,224.81393 c 36.94958,-46.13888 33.95227,-117.5859 -6.72068,-159.539672 l -0.0404,-0.0415 a 8.4262645,9.5474485 0 0 1 -0.51796,-13.437497 c 3.1284,-3.89368 8.4597,-4.177124 11.89613,-0.632472 47.587,49.085571 51.05025,132.713411 7.72895,186.632281 -3.1284,3.89367 -8.45969,4.17712 -11.89613,0.63246 a 8.4262645,9.5474485 0 0 1 -0.5582,-13.47898 z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:1.37905;stroke-linejoin:round;stroke-miterlimit:2;fill-opacity:1"
id="path8" />
<path
d="m269.925.001.195.001.39.008.195.005.194.007.194.008.193.009.386.022.193.013.192.014.192.016.191.016.192.018.191.018.19.02.38.044.19.023.189.025.188.026.189.027.188.028.187.029.188.031.186.031.187.033.186.034.186.035.185.036.185.037.368.078.184.041.183.042.183.043.182.043.364.092.181.047.18.048.181.05.179.05.18.052.179.052.178.054.178.055.177.056.177.057.177.058.176.059.175.06.175.061.175.062.174.063.174.064.173.066.172.066.172.067.172.068.171.07.17.07.17.071.17.073.169.073.168.074.168.076.167.076.167.077.332.158.165.08.165.081.164.083.163.083.163.084.162.085.162.086.161.087.161.088.16.088.159.09.159.091.316.184.157.094.156.094.156.095.155.096.308.196.306.198.152.101.302.204.15.104.149.104.149.105.148.106.294.214.146.109.145.109.145.111.144.111.143.112.143.113.142.113.282.23.139.116.14.117.276.236.137.12.136.12.135.121.135.122.134.122.134.124.132.124.132.125.131.125.26.254.129.128.128.129.254.26.125.131.125.132.124.132.124.134.122.134.122.135.121.135.12.136.12.137.236.276.117.14.116.139.23.282.113.142.113.143.112.143.111.144.111.145.109.145.109.146.214.294.106.148.105.149.104.149.104.15.204.302.101.152.198.306.196.308.096.155.095.156.094.156.094.157.184.316.091.159.09.159.088.16.088.161.087.161.086.162.085.162.084.163.083.163.083.164.081.165.08.165.158.332.077.167.076.167.076.168.074.168.073.169.073.17.071.17.07.17.07.171.068.172.067.172.066.172.066.173.064.174.063.174.062.175.061.175.06.175.059.176.058.177.057.177.056.177.055.178.054.178.052.179.052.18.05.179.05.181.048.18.047.181.092.364.043.182.043.183.042.183.041.184.078.368.037.185.036.185.035.186.034.186.033.187.031.186.031.188.029.187.028.188.027.189.026.188.025.189.023.19.044.38.02.19.018.191.018.192.016.191.016.192.014.192.013.193.022.386.009.193.008.194.007.194.005.195.008.39.002.391v239.458l-.001.196-.001.195-.004.195-.004.195-.005.195-.007.194-.008.194-.009.193-.011.193-.011.193-.013.193-.014.192-.016.192-.016.191-.018.192-.018.191-.02.19-.022.19-.022.19-.023.19-.025.189-.026.188-.027.189-.028.188-.029.187-.031.188-.031.186-.033.187-.034.186-.035.186-.036.185-.037.185-.039.184-.039.184-.041.184-.042.183-.043.183-.043.182-.046.182-.046.182-.047.181-.048.18-.05.181-.05.179-.052.18-.052.179-.054.178-.055.178-.056.177-.057.177-.058.177-.059.176-.06.175-.061.175-.062.175-.063.174-.064.174-.066.173-.066.172-.067.172-.068.172-.07.171-.07.17-.071.17-.073.17-.073.169-.074.168-.076.168-.076.167-.077.167-.079.166-.079.166-.08.165-.081.165-.083.164-.083.163-.084.163-.085.162-.086.162-.087.161-.088.161-.088.16-.09.159-.091.159-.092.158-.092.158-.094.157-.094.156-.095.156-.096.155-.098.154-.098.154-.099.153-.099.153-.101.152-.102.151-.102.151-.104.15-.104.149-.105.149-.106.148-.107.147-.107.147-.109.146-.109.145-.111.145-.111.144-.112.143-.113.143-.113.142-.115.141-.115.141-.116.139-.117.14-.118.138-.118.138-.12.137-.12.136-.121.135-.122.135-.122.134-.124.134-.124.132-.125.132-.125.131-.127.13-.127.13-.128.129-.129.128-.13.127-.13.127-.131.125-.132.125-.132.124-.134.124-.134.122-.135.122-.135.121-.136.12-.137.12-.138.118-.138.118-.14.117-.139.116-.141.115-.141.115-.142.113-.143.113-.143.112-.144.111-.145.111-.145.109-.146.109-.147.107-.147.107-.148.106-.149.105-.149.104-.15.104-.151.102-.151.102-.152.101-.153.099-.153.099-.154.098-.154.098-.155.096-.156.095-.156.094-.157.094-.158.092-.158.092-.159.091-.159.09-.16.088-.161.088-.161.087-.162.086-.162.085-.163.084-.163.083-.164.083-.165.081-.165.08-.166.079-.166.079-.167.077-.167.076-.168.076-.168.074-.169.073-.17.073-.17.071-.17.07-.171.07-.172.068-.172.067-.172.066-.173.066-.174.064-.174.063-.175.062-.175.061-.175.06-.176.059-.177.058-.177.057-.177.056-.178.055-.178.054-.179.052-.18.052-.179.05-.181.05-.18.048-.181.047-.182.046-.182.046-.182.043-.183.043-.183.042-.184.041-.184.039-.184.039-.185.037-.185.036-.186.035-.186.034-.187.033-.186.031-.188.031-.187.029-.188.028-.189.027-.188.026-.189.025-.19.023-.19.022-.19.022-.19.02-.191.018-.192.018-.191.016-.192.016-.192.014-.193.013-.193.011-.193.011-.193.009-.194.008-.194.007-.195.005-.195.004-.195.004-.195.001-.196.001H30.271l-.196-.001-.195-.001-.195-.004-.195-.004-.195-.005-.194-.007-.194-.008-.193-.009-.193-.011-.193-.011-.193-.013-.192-.014-.192-.016-.191-.016-.192-.018-.191-.018-.19-.02-.19-.022-.19-.022-.19-.023-.189-.025-.188-.026-.189-.027-.188-.028-.187-.029-.188-.031-.186-.031-.187-.033-.186-.034-.186-.035-.185-.036-.185-.037-.184-.039-.184-.039-.184-.041-.183-.042-.183-.043-.182-.043-.182-.046-.182-.046-.181-.047-.18-.048-.181-.05-.179-.05-.18-.052-.179-.052-.178-.054-.178-.055-.177-.056-.177-.057-.177-.058-.176-.059-.175-.06-.175-.061-.175-.062-.174-.063-.174-.064-.173-.066-.172-.066-.172-.067-.172-.068-.171-.07-.17-.07-.17-.071-.17-.073-.169-.073-.168-.074-.168-.076-.167-.076-.167-.077-.166-.079-.166-.079-.165-.08-.165-.081-.164-.083-.163-.083-.163-.084-.162-.085-.162-.086-.161-.087-.161-.088-.16-.088-.159-.09-.159-.091-.158-.092-.158-.092-.157-.094-.156-.094-.156-.095-.155-.096-.154-.098-.154-.098-.153-.099-.153-.099-.152-.101-.151-.102-.151-Line truncated
style="fill:#e3292e;fill-opacity:1"
id="path4" />
<path
d="M 56.204265,104.13685 H 105.92542 L 95.739989,95.27996 h 15.811291 l 15.82341,13.75947 -15.82341,13.75883 H 95.756379 l 10.317291,-8.97155 H 56.204265 Z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3" /><path
d="m 56.204269,144.13685 h 49.721151 l -10.185427,-8.85689 h 15.811287 l 15.82341,13.75947 -15.82341,13.75883 H 95.756383 l 10.317287,-8.97155 H 56.204269 Z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5" /><path
d="m 186.20427,144.13685 h 49.72115 L 225.74,135.27996 h 15.81128 l 15.82341,13.75947 -15.82341,13.75883 h -15.79489 l 10.31728,-8.97155 h -49.8694 z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-2" /><path
d="m 56.204269,184.13685 h 49.721151 l -10.185427,-8.85689 h 15.811287 l 15.82341,13.75947 -15.82341,13.75883 H 95.756383 l 10.317287,-8.97155 H 56.204269 Z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.664657;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-3-5-6" /></svg>

After

Width:  |  Height:  |  Size: 20 KiB

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="60"
height="60"
viewBox="0 0 300 300"
xml:space="preserve"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421"
version="1.1"
id="svg18"
sodipodi:docname="nat2.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs22" /><sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="11.983333"
inkscape:cx="29.958276"
inkscape:cy="30.000001"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g16" />
<path
d="M300 30.271C300 13.564 286.436 0 269.729 0H30.271C13.564 0 0 13.564 0 30.271v239.458C0 286.436 13.564 300 30.271 300h239.458C286.436 300 300 286.436 300 269.729V30.271Z"
style="fill:#fffefe"
id="path2" />
<path
d="m269.925.001.195.001.39.008.195.005.194.007.194.008.193.009.386.022.193.013.192.014.192.016.191.016.192.018.191.018.19.02.38.044.19.023.189.025.188.026.189.027.188.028.187.029.188.031.186.031.187.033.186.034.186.035.185.036.185.037.368.078.184.041.183.042.183.043.182.043.364.092.181.047.18.048.181.05.179.05.18.052.179.052.178.054.178.055.177.056.177.057.177.058.176.059.175.06.175.061.175.062.174.063.174.064.173.066.172.066.172.067.172.068.171.07.17.07.17.071.17.073.169.073.168.074.168.076.167.076.167.077.332.158.165.08.165.081.164.083.163.083.163.084.162.085.162.086.161.087.161.088.16.088.159.09.159.091.316.184.157.094.156.094.156.095.155.096.308.196.306.198.152.101.302.204.15.104.149.104.149.105.148.106.294.214.146.109.145.109.145.111.144.111.143.112.143.113.142.113.282.23.139.116.14.117.276.236.137.12.136.12.135.121.135.122.134.122.134.124.132.124.132.125.131.125.26.254.129.128.128.129.254.26.125.131.125.132.124.132.124.134.122.134.122.135.121.135.12.136.12.137.236.276.117.14.116.139.23.282.113.142.113.143.112.143.111.144.111.145.109.145.109.146.214.294.106.148.105.149.104.149.104.15.204.302.101.152.198.306.196.308.096.155.095.156.094.156.094.157.184.316.091.159.09.159.088.16.088.161.087.161.086.162.085.162.084.163.083.163.083.164.081.165.08.165.158.332.077.167.076.167.076.168.074.168.073.169.073.17.071.17.07.17.07.171.068.172.067.172.066.172.066.173.064.174.063.174.062.175.061.175.06.175.059.176.058.177.057.177.056.177.055.178.054.178.052.179.052.18.05.179.05.181.048.18.047.181.092.364.043.182.043.183.042.183.041.184.078.368.037.185.036.185.035.186.034.186.033.187.031.186.031.188.029.187.028.188.027.189.026.188.025.189.023.19.044.38.02.19.018.191.018.192.016.191.016.192.014.192.013.193.022.386.009.193.008.194.007.194.005.195.008.39.002.391v239.458l-.001.196-.001.195-.004.195-.004.195-.005.195-.007.194-.008.194-.009.193-.011.193-.011.193-.013.193-.014.192-.016.192-.016.191-.018.192-.018.191-.02.19-.022.19-.022.19-.023.19-.025.189-.026.188-.027.189-.028.188-.029.187-.031.188-.031.186-.033.187-.034.186-.035.186-.036.185-.037.185-.039.184-.039.184-.041.184-.042.183-.043.183-.043.182-.046.182-.046.182-.047.181-.048.18-.05.181-.05.179-.052.18-.052.179-.054.178-.055.178-.056.177-.057.177-.058.177-.059.176-.06.175-.061.175-.062.175-.063.174-.064.174-.066.173-.066.172-.067.172-.068.172-.07.171-.07.17-.071.17-.073.17-.073.169-.074.168-.076.168-.076.167-.077.167-.079.166-.079.166-.08.165-.081.165-.083.164-.083.163-.084.163-.085.162-.086.162-.087.161-.088.161-.088.16-.09.159-.091.159-.092.158-.092.158-.094.157-.094.156-.095.156-.096.155-.098.154-.098.154-.099.153-.099.153-.101.152-.102.151-.102.151-.104.15-.104.149-.105.149-.106.148-.107.147-.107.147-.109.146-.109.145-.111.145-.111.144-.112.143-.113.143-.113.142-.115.141-.115.141-.116.139-.117.14-.118.138-.118.138-.12.137-.12.136-.121.135-.122.135-.122.134-.124.134-.124.132-.125.132-.125.131-.127.13-.127.13-.128.129-.129.128-.13.127-.13.127-.131.125-.132.125-.132.124-.134.124-.134.122-.135.122-.135.121-.136.12-.137.12-.138.118-.138.118-.14.117-.139.116-.141.115-.141.115-.142.113-.143.113-.143.112-.144.111-.145.111-.145.109-.146.109-.147.107-.147.107-.148.106-.149.105-.149.104-.15.104-.151.102-.151.102-.152.101-.153.099-.153.099-.154.098-.154.098-.155.096-.156.095-.156.094-.157.094-.158.092-.158.092-.159.091-.159.09-.16.088-.161.088-.161.087-.162.086-.162.085-.163.084-.163.083-.164.083-.165.081-.165.08-.166.079-.166.079-.167.077-.167.076-.168.076-.168.074-.169.073-.17.073-.17.071-.17.07-.171.07-.172.068-.172.067-.172.066-.173.066-.174.064-.174.063-.175.062-.175.061-.175.06-.176.059-.177.058-.177.057-.177.056-.178.055-.178.054-.179.052-.18.052-.179.05-.181.05-.18.048-.181.047-.182.046-.182.046-.182.043-.183.043-.183.042-.184.041-.184.039-.184.039-.185.037-.185.036-.186.035-.186.034-.187.033-.186.031-.188.031-.187.029-.188.028-.189.027-.188.026-.189.025-.19.023-.19.022-.19.022-.19.02-.191.018-.192.018-.191.016-.192.016-.192.014-.193.013-.193.011-.193.011-.193.009-.194.008-.194.007-.195.005-.195.004-.195.004-.195.001-.196.001H30.271l-.196-.001-.195-.001-.195-.004-.195-.004-.195-.005-.194-.007-.194-.008-.193-.009-.193-.011-.193-.011-.193-.013-.192-.014-.192-.016-.191-.016-.192-.018-.191-.018-.19-.02-.19-.022-.19-.022-.19-.023-.189-.025-.188-.026-.189-.027-.188-.028-.187-.029-.188-.031-.186-.031-.187-.033-.186-.034-.186-.035-.185-.036-.185-.037-.184-.039-.184-.039-.184-.041-.183-.042-.183-.043-.182-.043-.182-.046-.182-.046-.181-.047-.18-.048-.181-.05-.179-.05-.18-.052-.179-.052-.178-.054-.178-.055-.177-.056-.177-.057-.177-.058-.176-.059-.175-.06-.175-.061-.175-.062-.174-.063-.174-.064-.173-.066-.172-.066-.172-.067-.172-.068-.171-.07-.17-.07-.17-.071-.17-.073-.169-.073-.168-.074-.168-.076-.167-.076-.167-.077-.166-.079-.166-.079-.165-.08-.165-.081-.164-.083-.163-.083-.163-.084-.162-.085-.162-.086-.161-.087-.161-.088-.16-.088-.159-.09-.159-.091-.158-.092-.158-.092-.157-.094-.156-.094-.156-.095-.155-.096-.154-.098-.154-.098-.153-.099-.153-.099-.152-.101-.151-.102-.151-Line truncated
style="fill:#e3292e;fill-opacity:1"
id="path4" />
<g
id="g16">
<path
d="M94.657 208.957h-1.486v-.027c-21.178-.783-38.132-18.223-38.132-39.592 0-19.576 14.229-35.855 32.9-39.05v-.161c0-35.453 28.783-64.237 64.237-64.237 35.454 0 64.238 28.784 64.238 64.237 0 .271-.002.538-.005.804 19.045 3.122 33.574 19.29 33.574 38.74 0 21.683-18.054 39.286-40.293 39.286H94.657Zm105.717-77.514.019-.004c.011-.436.017-.873.017-1.312 0-26.621-21.613-48.234-48.234-48.234-4.677 0-9.199.667-13.476 1.911-20.932 5.493-36.369 24.279-36.369 46.582a47.305 47.305 0 0 0 3.775 18.568 23.546 23.546 0 0 0-11.449-2.952c-13.063 0-23.669 10.606-23.669 23.669 0 13.064 10.606 23.67 23.669 23.67h115.614c13.064 0 23.67-10.606 23.67-23.67 0-13.063-10.606-23.669-23.67-23.669a23.56 23.56 0 0 0-14.616 5.056 47.28 47.28 0 0 0 4.719-19.615Z"
style="fill:#2d67b9"
transform="translate(-2.511 12.577)"
id="path6" />
<path
d="m152.591 65.891.415.004.414.007.413.009.413.012.412.014.411.017.411.019.41.023.409.024.409.027.407.03.408.033.406.034.406.038.405.04.404.042.404.045.403.047.402.05.401.053.401.054.399.058.399.059.398.063.398.064.396.067.396.07.395.072.394.074.393.077.392.079.392.081.39.084.39.086.389.089.388.091.387.093.386.096.385.098.384.1.384.102.382.105.381.107.381.11.379.112.379.114.378.116.376.118.376.121.374.123.374.125.372.128.372.129.37.132.37.134.368.137.367.138.366.141.366.142.364.145.363.148.361.149.361.151.36.154.358.155.358.158.356.16.355.162.354.164.353.166.351.168.351.171.349.172.348.174.347.177.345.178.345.181.343.182.342.185.341.186.339.189.338.19.337.193.336.194.334.196.333.199.332.2.33.202.33.205.327.206.327.208.325.21.324.211.322.214.321.216.32.217.319.22.316.221.316.223.314.225.313.226.311.229.31.23.309.233.307.234.305.235.304.238.303.239.301.242.3.242.298.245.297.247.295.248.294.25.292.251.291.254.289.255.287.256.286.259.285.26.283.262.281.263.28.265.278.267.277.269.275.27.273.271.272.274.27.275.268.276.267.278.265.28.264.281.261.283.261.285.258.286.257.287.255.29.253.29.252.292.25.294.248.295.246.297.245.298.243.3.241.301.239.303.238.304.236.306.234.307.232.308.23.31.229.311.227.313.224.314.224.316.221.317.219.318.218.32.215.321.214.322.212.324.21.325.208.327.206.328.204.329.202.33.2.332.199.333.196.335.195.335.192.337.191.338.188.34.187.34.184.342.183.343.18.345.179.346.176.346.174.348.173.35.17.35.168.352.166.352.164.354.162.355.16.357.158.357.156.359.153.359.152.361.149.362.147.363.145.364.143.365.14.366.139.367.136.369.134.369.132.371.13.371.127.373.125.373.123.375.121.375.119.377.116.377.114.379.112.379.109.381.107.381.105.383.103.383.1.384.098.385.095.387.094.387.09.387.089.389.086.39.084.391.082.391.079.392.076.393.075.395.072.394.069.396.067.397.065.397.062.398.06.399.057.4.055.4.052.402.05.402.047.402.045.404.043.404.04.405.037.406.035.407.032.407.03.408.027.408.025.41.022.41.019.41.017.412.015.412.012.412.009.414.006.414.004.414.002.415-.001.404-.004.4.223.037.223.038.222.04.222.041.221.042.221.043.22.044.22.045.22.047.219.048.218.049.219.05.217.051.218.052.216.054.217.055.216.055.215.057.215.059.214.059.214.06.214.062.213.062.212.064.212.065.212.066.211.067.21.068.21.069.21.07.208.072.209.072.208.074.207.074.207.076.206.077.206.078.205.079.204.08.205.081.203.082.203.083.202.084.202.085.402.174.2.088.2.09.199.09.198.091.198.093.197.093.392.19.196.097.194.097.388.198.193.101.192.101.192.103.191.103.38.21.189.106.376.216.187.109.187.11.37.224.185.113.184.114.183.115.364.232.181.118.36.238.179.121.178.121.178.123.177.123.176.124.176.125.174.126.174.127.174.128.172.128.172.13.171.13.171.131.338.266.168.133.168.135.332.272.165.137.328.278.163.139.162.141.161.142.16.142.16.143.159.144.158.145.157.145.157.147.155.147.155.148.154.149.306.3.151.151.151.153.15.152.149.154.148.154.147.155.147.156.146.157.288.316.143.159.143.16.141.16.14.161.14.162.139.163.138.163.137.165.136.165.135.165.268.334.132.167.132.169.13.169.13.17.129.171.128.171.127.172.126.173.125.173.124.174.123.175.123.176.121.176.24.354.118.178.118.179.116.179.116.18.115.181.226.364.112.182.22.368.109.184.108.185.106.186.106.187.105.187.103.187.103.189.102.189.1.189.1.19.099.191.097.191.097.192.095.192.095.193.093.194.092.194.092.195.09.195.089.196.088.196.087.197.086.198.085.198.084.198.082.2.082.199.081.201.079.2.078.202.078.201.076.203.075.203.074.203.073.204.071.204.071.205.069.205.069.206.067.207.066.207.065.207.126.416.122.418.059.21.058.21.057.211.11.422.053.212.052.213.051.213.05.213.096.428.046.215.045.215.044.215.084.432.04.217.039.217.074.436.035.218.034.219.033.219.062.44.029.22.027.22.027.222.025.221.024.222.023.222.021.222.02.223.019.223.018.224.016.224.015.224.014.225.013.225.011.225.01.225.008.226.008.227.006.226.004.227.003.227.002.228.001.227-.001.254-.002.254-.004.253-.006.253-.007.252-.009.252-.011.252-.012.251-.014.251-.016.25-.017.25-.018.249-.021.249-.022.249-.023.248-.025.248-.027.247-.028.247-.03.246-.031.246-.033.246-.034.244-.036.245-.038.244-.039.243-.04.243-.042.243-.044.242-.045.241-.046.241-.049.241-.049.24-.051.239-.053.239-.054.238-.055.238-.057.237-.059.237-.06.236-.061.236-.063.235-.065.234-.065.234-.068.233-.068.233-.07.232-.072.231-.073.231-.074.231-.076.229-.077.229-.078.229-.08.228-.082.227-.082.226-.085.226-.085.226-.087.224-.088.224-.09.223-.091.223-.092.222-.093.221-.095.221-.097.22-.097.219-.099.219-.101.218-.101.217-.103.216-.104.216-.106.215-.107.214-.108.214-.109.213-.111.212-.112.211-.113.211-.114.21-.116.209-.117.208-.118.208-.12.207-.12.206-.122.205-.124.204-.124.204-.126.203-.127.202-.128.201-.129.201-.13.199-.132.199-.133.198-.134.198-.135.196-.137.195-.137.195-.139.194-.14.193-.141.192-.142.191-.144.191-.144.189-.146.189-.146.188-.148.187-.149.186-.151.185-.151.184-.152.183-.154.183-.154.181-.156.181-.157.179-.157.179-.159.178-.16.177-.161.175-.162.175-.164.174-.164.173-.165.172-.166.171-.168.171-.168.169-.17.168-.17.167-.171.166-.173.165-.173.165-.175.163-.175.162-.177.161-.177.Line truncated
style="fill:#e3292e;fill-opacity:1"
transform="translate(-2.511 12.577)"
id="path8" />
<g
id="g14">
<path
d="M94.657 208.957h-1.486v-.027c-21.178-.783-38.132-18.223-38.132-39.592 0-19.576 14.229-35.855 32.9-39.05v-.161c0-35.453 28.783-64.237 64.237-64.237 35.454 0 64.238 28.784 64.238 64.237 0 .271-.002.538-.005.804 19.045 3.122 33.574 19.29 33.574 38.74 0 21.683-18.054 39.286-40.293 39.286H94.657Zm105.717-77.514.019-.004c.011-.436.017-.873.017-1.312 0-26.621-21.613-48.234-48.234-48.234-4.677 0-9.199.667-13.476 1.911-20.932 5.493-36.369 24.279-36.369 46.582a47.305 47.305 0 0 0 3.775 18.568 23.546 23.546 0 0 0-11.449-2.952c-13.063 0-23.669 10.606-23.669 23.669 0 13.064 10.606 23.67 23.669 23.67h115.614c13.064 0 23.67-10.606 23.67-23.67 0-13.063-10.606-23.669-23.67-23.669a23.56 23.56 0 0 0-14.616 5.056 47.28 47.28 0 0 0 4.719-19.615Z"
style="fill:#2d67b9"
transform="matrix(-1 0 0 1 302.511 12.577)"
id="path10" />
<path
d="m151.761 65.891-.415.004-.414.007-.413.009-.413.012-.412.014-.411.017-.411.019-.41.023-.409.024-.408.027-.408.03-.408.033-.406.034-.406.038-.405.04-.404.042-.404.045-.403.047-.402.05-.401.053-.401.054-.399.058-.399.059-.398.063-.398.064-.396.067-.396.07-.395.072-.394.074-.393.077-.392.079-.392.081-.39.084-.39.086-.389.089-.388.091-.387.093-.386.096-.385.098-.384.1-.384.102-.382.105-.381.107-.381.11-.379.112-.379.114-.377.116-.377.118-.376.121-.374.123-.374.125-.372.128-.372.129-.37.132-.369.134-.369.137-.367.138-.366.141-.365.142-.365.145-.362.148-.362.149-.361.151-.36.154-.358.155-.358.158-.356.16-.355.162-.354.164-.353.166-.351.168-.351.171-.349.172-.348.174-.347.177-.345.178-.345.181-.343.182-.342.185-.341.186-.339.189-.338.19-.337.193-.336.194-.334.196-.333.199-.332.2-.33.202-.33.205-.327.206-.327.208-.325.21-.324.211-.322.214-.321.216-.32.217-.318.22-.317.221-.316.223-.314.225-.313.226-.311.229-.31.23-.309.233-.307.234-.305.235-.304.238-.303.239-.301.242-.3.242-.298.245-.297.247-.295.248-.294.25-.292.251-.291.254-.289.255-.287.256-.286.259-.285.26-.283.262-.281.263-.28.265-.278.267-.277.269-.275.27-.273.271-.272.274-.27.275-.268.276-.267.278-.265.28-.263.281-.262.283-.26.285-.259.286-.257.287-.255.29-.253.29-.252.292-.25.294-.248.295-.246.297-.245.298-.243.3-.241.301-.239.303-.238.304-.236.306-.234.307-.232.308-.23.31-.229.311-.226.313-.225.314-.223.316-.222.317-.219.318-.217.32-.216.321-.214.322-.212.324-.21.325-.208.327-.206.328-.204.329-.202.33-.2.332-.199.333-.196.335-.195.335-.192.337-.191.338-.188.34-.187.34-.184.342-.183.343-.18.345-.179.346-.176.346-.174.348-.173.35-.17.35-.168.352-.166.352-.164.354-.162.355-.16.357-.158.357-.156.359-.153.359-.151.361-.15.362-.147.363-.145.364-.143.365-.14.366-.139.367-.136.369-.134.369-.132.371-.13.371-.127.373-.125.373-.123.375-.121.375-.118.377-.117.377-.114.379-.111.379-.11.381-.107.381-.105.383-.102.383-.101.384-.098.385-.095.387-.093.387-.091.387-.089.389-.086.39-.084.391-.081.391-.08.392-.076.393-.075.395-.071.394-.07.396-.067.397-.065.397-.062.398-.06.399-.057.4-.055.4-.052.402-.05.402-.047.402-.045.404-.043.404-.039.405-.038.406-.035.407-.032.407-.03.408-.027.408-.025.41-.022.41-.019.41-.017.412-.015.412-.011.412-.01.414-.006.414-.004.414-.001.415v.161l-.219.039-.218.039-.218.04-.217.042-.217.043-.217.044-.216.045-.216.046-.215.048-.215.048-.214.05-.214.051-.213.052-.213.053-.213.055-.212.055-.211.057-.212.058-.21.059-.21.06-.21.061-.209.063-.209.063-.208.065-.208.066-.208.067-.206.068-.207.069-.205.07-.206.071-.204.072-.205.074-.203.074-.204.076-.202.077-.202.077-.202.079-.201.08-.201.081-.2.082-.199.083-.199.084-.198.085-.198.087-.197.087-.197.088-.196.09-.196.09-.195.091-.194.093-.194.093-.193.095-.193.095-.192.097-.191.097-.191.099-.19.1-.19.1-.189.102-.188.102-.188.104-.187.104-.187.106-.186.106-.185.107-.185.109-.184.109-.183.111-.183.111-.182.112-.181.113-.181.114-.18.115-.18.116-.178.117-.179.118-.177.119-.177.12-.176.121-.175.121-.175.123-.174.123-.173.125-.173.125-.172.126-.171.127-.171.128-.17.129-.169.13-.168.13-.168.132-.167.132-.166.133-.165.135-.165.135-.164.135-.163.137-.163.138-.162.138-.161.14-.16.14-.159.141-.159.142-.158.142-.157.144-.157.144-.155.145-.155.146-.154.147-.154.148-.152.148-.152.149-.151.15-.15.151-.149.152-.148.152-.148.154-.147.154-.146.154-.145.156-.145.156-.143.158-.143.157-.142.159-.141.16-.14.16-.139.161-.139.162-.138.162-.136.163-.136.164-.135.165-.134.165-.134.166-.132.167-.132.168-.13.168-.13.169-.129.17-.128.171-.127.171-.127.172-.125.172-.124.174-.124.174-.122.174-.122.176-.121.176-.12.177-.118.177-.118.178-.117.179-.116.179-.116.18-.114.181-.113.181-.112.182-.112.183-.11.183-.109.184-.109.185-.107.185-.107.186-.105.187-.105.187-.104.188-.102.188-.102.189-.1.19-.1.19-.098.191-.098.191-.097.192-.095.193-.095.193-.093.194-.093.194-.091.195-.091.195-.089.196-.088.197-.088.197-.086.198-.085.198-.085.199-.083.2-.082.2-.081.2-.08.201-.079.202-.077.202-.077.203-.076.203-.074.203-.074.205-.072.204-.072.206-.07.205-.069.207-.068.206-.067.208-.066.207-.064.209-.064.208-.062.21-.062.209-.06.211-.059.21-.058.211-.057.212-.055.212-.055.212-.053.213-.052.214-.051.214-.05.214-.049.215-.048.215-.046.216-.045.216-.044.216-.043.217-.042.217-.04.218-.04.218-.038.219-.037.219-.035.219-.035.22-.033.22-.032.221-.031.221-.03.221-.028.222-.027.222-.026.222-.025.223-.024.223-.022.224-.021.224-.02.224-.018.225-.017.225-.016.225-.015.226-.014.226-.012.226-.011.227-.009.227-.009.228-.007.227-.006.228-.004.229-.004.228-.002.229v.229l.001.251.002.25.004.249.005.249.007.249.009.248.01.248.011.248.013.247.015.247.016.246.017.246.019.246.021.245.022.245.023.244.025.244.027.243.028.243.029.243.031.242.032.241.034.242.035.24.037.241.038.239.04.24.041.238.042.239.044.238.045.237.047.237.048.236.049.236.051.235.052.235.054.234.055.234.056.233.058.233.059.232.122.462.064.231.064.23.066.229.067.229.069.228.07.228.071.227.073.226.074.226.075.225.076.225.078.224.079.223.081.223.082.222.083.222.084.221.085.22.087.22.088.219.18.436.092.217.093.Line truncated
style="fill:#e3292e;fill-opacity:1"
transform="matrix(-1 0 0 1 302.511 12.577)"
id="path12" />
</g>
</g>
<path
d="m 114.30977,144.2723 h 50.31577 L 154.3183,133.29689 h 16.00038 l 16.01264,17.05067 -16.01264,17.04991 h -15.98379 l 10.44067,-11.1175 h -50.46579 z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path8-7" /><path
d="M 186.44817,172.91513 H 136.1324 l 10.30725,-10.97541 h -16.00039 l -16.01264,17.05067 16.01264,17.04991 h 15.98379 l -10.44067,-11.1175 h 50.46579 z"
style="clip-rule:evenodd;fill:#e3292e;fill-rule:evenodd;stroke-width:0.744302;stroke-linejoin:round;stroke-miterlimit:1.41421;fill-opacity:1"
id="path10-5" /></svg>

After

Width:  |  Height:  |  Size: 78 KiB

+207
View File
@@ -0,0 +1,207 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
version="1.1"
width="4.5009999cm"
height="2.0009999cm"
viewBox="0.2 0.149 4.7 2.151"
id="svg2"
sodipodi:docname="nat.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<sodipodi:namedview
id="namedview30"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="cm"
showgrid="false"
inkscape:lockguides="true"
inkscape:zoom="5.7444245"
inkscape:cx="75.725602"
inkscape:cy="42.040765"
inkscape:window-width="1658"
inkscape:window-height="1016"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<metadata
id="metadata57">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<dc:creator>
<cc:Agent>
<dc:title>Jeremy Grossmann</dc:title>
</cc:Agent>
</dc:creator>
<dc:publisher>
<cc:Agent>
<dc:title>GNS-3</dc:title>
</cc:Agent>
</dc:publisher>
<dc:description>Created for the GNS-3 project (www.gns3.net)</dc:description>
<cc:license
rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
<cc:requires
rdf:resource="http://web.resource.org/cc/SourceCode" />
</cc:License>
</rdf:RDF>
</metadata>
<defs
id="defs55" />
<path
d="m 3.7599791,0.61531938 -10e-4,-0.021 -0.003,-0.021 -0.007,-0.02 -0.009,-0.02 -0.011,-0.021 -0.013,-0.02 -0.017,-0.02 -0.018,-0.019 -0.021,-0.019 -0.023,-0.019 -0.024,-0.017 -0.028,-0.017 -0.03,-0.017 -0.031,-0.017 -0.033,-0.015 -0.035,-0.015 -0.037,-0.014 -0.038,-0.013 -0.04,-0.012 -0.041,-0.011 -0.043,-0.011 -0.045,-0.01 -0.044,-0.008 -0.046,-0.008 -0.048,-0.007 -0.047,-0.006 -0.048,-0.004 -0.049,-0.004 -0.05,-0.003 -0.049,-0.001 -0.049,-0.001 0,0 -0.05,0.001 -0.049,0.001 -0.05,0.003 -0.048,0.004 -0.049,0.004 -0.047,0.006 -0.047,0.007 -0.046,0.008 -0.045,0.008 -0.043,0.01 -0.043,0.011 -0.042,0.011 -0.04,0.012 -0.039,0.013 -0.036,0.014 -0.035,0.015 -0.033,0.015 -0.032,0.017 -0.029,0.017 -0.027,0.017 -0.026,0.017 -0.023,0.019 -0.02,0.019 -0.019,0.019 -0.016,0.02 -0.014,0.02 -0.01,0.021 -0.009,0.02 -0.006,0.02 -0.005,0.021 -0.001,0.021 0,0 0.001,0.02 0.005,0.022 0.006,0.02 0.009,0.021 0.01,0.02 0.014,0.019 0.016,0.02 0.019,0.02 0.02,0.019 0.023,0.018 0.026,0.018 0.027,0.017 0.029,0.017 0.032,0.016 0.033,0.016 0.035,0.014 0.036,0.014 0.039,0.013 0.04,0.013 0.042,0.011 0.043,0.01 0.043,0.011 0.045,0.008 0.046,0.007 0.047,0.007 0.047,0.006 0.049,0.005 0.048,0.003 0.05,0.003 0.049,10e-4 0.05,0.001 0,0 0.049,-0.001 0.049,-10e-4 0.05,-0.003 0.049,-0.003 0.048,-0.005 0.047,-0.006 0.048,-0.007 0.046,-0.007 0.044,-0.008 0.045,-0.011 0.043,-0.01 0.041,-0.011 0.04,-0.013 0.038,-0.013 0.037,-0.014 0.035,-0.014 0.033,-0.016 0.031,-0.016 0.03,-0.017 0.028,-0.017 0.024,-0.018 0.023,-0.018 0.021,-0.019 0.018,-0.02 0.017,-0.02 0.013,-0.019 0.011,-0.02 0.009,-0.021 0.007,-0.02 0.003,-0.022 10e-4,-0.02"
id="path4"
style="fill:#ffffff;stroke:none" />
<path
d="m 2.2259791,0.83031938 -10e-4,-0.021 -0.003,-0.02 -0.004,-0.021 -0.007,-0.02 -0.009,-0.021 -0.01,-0.02 -0.012,-0.02 -0.015,-0.018 -0.015,-0.019 -0.018,-0.019 -0.019,-0.018 -0.021,-0.017 -0.022,-0.017 -0.024,-0.016 -0.026,-0.015 -0.026,-0.015 -0.029,-0.014 -0.029,-0.013 -0.031,-0.013 -0.032,-0.011 -0.032,-0.011 -0.034,-0.009 -0.035,-0.009 -0.035,-0.008 -0.036,-0.006 -0.036,-0.006 -0.037,-0.005 -0.038,-0.004 -0.037,-0.002 -0.039,-0.002 -0.038,0 0,0 -0.037,0 -0.038,0.002 -0.038,0.002 -0.038,0.004 -0.037,0.005 -0.036,0.006 -0.036,0.006 -0.035,0.008 -0.035,0.009 -0.033,0.009 -0.033,0.011 -0.032,0.011 -0.03,0.013 -0.03,0.013 -0.028,0.014 -0.027,0.015 -0.025,0.015 -0.024,0.016 -0.023,0.017 -0.021,0.017 -0.018,0.018 -0.019,0.019 -0.015,0.019 -0.015,0.018 -0.012,0.02 -0.011,0.02 -0.008,0.021 -0.007,0.02 -0.005,0.021 -0.002,0.02 -0.001,0.021 0,0 0.001,0.021 0.002,0.021 0.005,0.02 0.007,0.021 0.008,0.02 0.011,0.02 0.012,0.02 0.015,0.019 0.015,0.019 0.019,0.018 0.018,0.018 0.021,0.018 0.023,0.016 0.024,0.016 0.025,0.016 0.027,0.014 0.028,0.015 0.03,0.012 0.03,0.013 0.032,0.012 0.033,0.01 0.033,0.01 0.035,0.008 0.035,0.008 0.036,0.007 0.036,0.005 0.037,0.005 0.038,0.004 0.038,0.002 0.038,0.002 0.037,0 0,0 0.038,0 0.039,-0.002 0.037,-0.002 0.038,-0.004 0.037,-0.005 0.036,-0.005 0.036,-0.007 0.035,-0.008 0.035,-0.008 0.034,-0.01 0.032,-0.01 0.032,-0.012 0.031,-0.013 0.029,-0.012 0.029,-0.015 0.026,-0.014 0.026,-0.016 0.024,-0.016 0.022,-0.016 0.021,-0.018 0.019,-0.018 0.018,-0.018 0.015,-0.019 0.015,-0.019 0.012,-0.02 0.01,-0.02 0.009,-0.02 0.007,-0.021 0.004,-0.02 0.003,-0.021 10e-4,-0.021"
id="path6"
style="fill:#ffffff;stroke:none" />
<path
d="m 1.2809791,1.2493194 -10e-4,-0.017 -0.001,-0.017 -0.004,-0.017 -0.005,-0.017 -0.005,-0.016 -0.007,-0.016 -0.009,-0.016 -0.009,-0.017 -0.011,-0.015 -0.012,-0.015 -0.012,-0.014 -0.014,-0.015 -0.015,-0.014 -0.017,-0.012 -0.017,-0.013 -0.018,-0.012 -0.019,-0.011 -0.02,-0.011 -0.02,-0.01 -0.022,-0.01 -0.022,-0.008 -0.023,-0.008 -0.023,-0.007 -0.024,-0.006 -0.024,-0.006 -0.025,-0.004 -0.024,-0.005 -0.026,-0.002 -0.025,-0.002 -0.025,-0.002 -0.026,0 0,0 -0.026,0 -0.026,0.002 -0.025,0.002 -0.025,0.002 -0.024,0.005 -0.026,0.004 -0.024,0.006 -0.023,0.006 -0.023,0.007 -0.023,0.008 -0.022,0.008 -0.022,0.01 -0.021,0.01 -0.019,0.011 -0.019,0.011 -0.018,0.012 -0.017,0.013 -0.017,0.012 -0.015,0.014 -0.014,0.015 -0.013,0.014 -0.011,0.015 -0.011,0.015 -0.01,0.017 -0.008,0.016 -0.007,0.016 -0.006,0.016 -0.004,0.017 -0.004,0.017 -0.002,0.017 0,0.017 0,0 0,0.016 0.002,0.018 0.004,0.016 0.004,0.017 0.006,0.017 0.007,0.016 0.008,0.016 0.01,0.015 0.011,0.016 0.011,0.015 0.013,0.015 0.014,0.014 0.015,0.014 0.017,0.013 0.017,0.012 0.018,0.012 0.019,0.012 0.019,0.01 0.021,0.01 0.022,0.01 0.022,0.008 0.023,0.008 0.023,0.007 0.023,0.007 0.024,0.005 0.026,0.005 0.024,0.004 0.025,0.003 0.025,10e-4 0.026,0.002 0.026,0.001 0,0 0.026,-0.001 0.025,-0.002 0.025,-10e-4 0.026,-0.003 0.024,-0.004 0.025,-0.005 0.024,-0.005 0.024,-0.007 0.023,-0.007 0.023,-0.008 0.022,-0.008 0.022,-0.01 0.02,-0.01 0.02,-0.01 0.019,-0.012 0.018,-0.012 0.017,-0.012 0.017,-0.013 0.015,-0.014 0.014,-0.014 0.012,-0.015 0.012,-0.015 0.011,-0.016 0.009,-0.015 0.009,-0.016 0.007,-0.016 0.005,-0.017 0.005,-0.017 0.004,-0.016 0.001,-0.018 10e-4,-0.016"
id="path8"
style="fill:#ffffff;stroke:none" />
<path
d="m 2.0969791,1.5713194 -0.002,-0.018 -0.003,-0.018 -0.004,-0.019 -0.007,-0.018 -0.009,-0.017 -0.01,-0.018 -0.013,-0.017 -0.015,-0.018 -0.016,-0.016 -0.017,-0.016 -0.019,-0.016 -0.021,-0.016 -0.024,-0.015 -0.024,-0.014 -0.026,-0.013 -0.027,-0.013 -0.028,-0.012 -0.031,-0.012 -0.03,-0.011 -0.032,-0.01 -0.034,-0.009 -0.035,-0.009 -0.034,-0.008 -0.036,-0.007 -0.036,-0.005 -0.038,-0.006 -0.037,-0.004 -0.038,-0.003 -0.038,-0.002 -0.039,-0.002 -0.038,0 0,0 -0.038,0 -0.039,0.002 -0.039,0.002 -0.038,0.003 -0.037,0.004 -0.037,0.006 -0.037,0.005 -0.035,0.007 -0.035,0.008 -0.034,0.009 -0.034,0.009 -0.032,0.01 -0.031,0.011 -0.03,0.012 -0.029,0.012 -0.027,0.013 -0.026,0.013 -0.024,0.014 -0.023,0.015 -0.021,0.016 -0.019,0.016 -0.018,0.016 -0.017,0.016 -0.014,0.018 -0.012,0.017 -0.01,0.018 -0.01,0.017 -0.006,0.018 -0.005,0.019 -0.003,0.018 -0.001,0.018 0,0 0.001,0.019 0.003,0.018 0.005,0.018 0.006,0.018 0.01,0.019 0.01,0.017 0.012,0.017 0.014,0.018 0.017,0.016 0.018,0.016 0.019,0.016 0.021,0.015 0.023,0.015 0.024,0.015 0.026,0.014 0.027,0.012 0.029,0.013 0.03,0.011 0.031,0.011 0.032,0.01 0.034,0.01 0.034,0.008 0.035,0.008 0.035,0.006 0.037,0.007 0.037,0.004 0.037,0.005 0.038,0.003 0.039,0.003 0.039,10e-4 0.038,0 0,0 0.038,0 0.039,-10e-4 0.038,-0.003 0.038,-0.003 0.037,-0.005 0.038,-0.004 0.036,-0.007 0.036,-0.006 0.034,-0.008 0.035,-0.008 0.034,-0.01 0.032,-0.01 0.03,-0.011 0.031,-0.011 0.028,-0.013 0.027,-0.012 0.026,-0.014 0.024,-0.015 0.024,-0.015 0.021,-0.015 0.019,-0.016 0.017,-0.016 0.016,-0.016 0.015,-0.018 0.013,-0.017 0.01,-0.017 0.009,-0.019 0.007,-0.018 0.004,-0.018 0.003,-0.018 0.002,-0.019"
id="path10"
style="fill:#ffffff;stroke:none" />
<path
d="m 3.9229791,1.7583194 -0.002,-0.021 -0.004,-0.022 -0.007,-0.022 -0.011,-0.021 -0.012,-0.021 -0.016,-0.021 -0.019,-0.021 -0.021,-0.02 -0.024,-0.02 -0.027,-0.02 -0.029,-0.018 -0.032,-0.019 -0.033,-0.017 -0.037,-0.017 -0.039,-0.016 -0.04,-0.016 -0.043,-0.014 -0.045,-0.014 -0.046,-0.013 -0.048,-0.012 -0.05,-0.01 -0.051,-0.011 -0.052,-0.009 -0.054,-0.008 -0.054,-0.007 -0.056,-0.006 -0.055,-0.005 -0.057,-0.004 -0.057,-0.002 -0.058,-0.002 -0.057,0 0,0 -0.057,0 -0.058,0.002 -0.057,0.002 -0.057,0.004 -0.056,0.005 -0.055,0.006 -0.054,0.007 -0.054,0.008 -0.052,0.009 -0.051,0.011 -0.05,0.01 -0.048,0.012 -0.047,0.013 -0.044,0.014 -0.043,0.014 -0.04,0.016 -0.039,0.016 -0.037,0.017 -0.034,0.017 -0.031,0.019 -0.029,0.018 -0.027,0.02 -0.024,0.02 -0.021,0.02 -0.018,0.021 -0.017,0.021 -0.012,0.021 -0.011,0.021 -0.007,0.022 -0.005,0.022 -10e-4,0.021 0,0 10e-4,0.023 0.005,0.021 0.007,0.022 0.011,0.021 0.012,0.022 0.017,0.02 0.018,0.021 0.021,0.02 0.024,0.02 0.027,0.02 0.029,0.018 0.031,0.018 0.034,0.018 0.037,0.017 0.039,0.016 0.04,0.016 0.043,0.015 0.044,0.013 0.047,0.013 0.048,0.012 0.05,0.011 0.051,0.01 0.052,0.009 0.054,0.009 0.054,0.007 0.055,0.005 0.056,0.005 0.057,0.004 0.057,0.003 0.058,0.002 0.057,0 0,0 0.057,0 0.058,-0.002 0.057,-0.003 0.057,-0.004 0.055,-0.005 0.056,-0.005 0.054,-0.007 0.054,-0.009 0.052,-0.009 0.051,-0.01 0.05,-0.011 0.048,-0.012 0.046,-0.013 0.045,-0.013 0.043,-0.015 0.04,-0.016 0.039,-0.016 0.037,-0.017 0.033,-0.018 0.032,-0.018 0.029,-0.018 0.027,-0.02 0.024,-0.02 0.021,-0.02 0.019,-0.021 0.016,-0.02 0.012,-0.022 0.011,-0.021 0.007,-0.022 0.004,-0.021 0.002,-0.023"
id="path12"
style="fill:#ffffff;stroke:none" />
<path
d="m 4.5529791,0.76631938 0,-0.016 -0.003,-0.016 -0.004,-0.017 -0.008,-0.016 -0.007,-0.016 -0.011,-0.016 -0.012,-0.015 -0.013,-0.015 -0.016,-0.015 -0.017,-0.015 -0.019,-0.013 -0.02,-0.014 -0.022,-0.013 -0.023,-0.013 -0.025,-0.012 -0.026,-0.011 -0.027,-0.012 -0.029,-0.01 -0.03,-0.01 -0.031,-0.009 -0.031,-0.008 -0.033,-0.008 -0.034,-0.007 -0.034,-0.006 -0.035,-0.005 -0.035,-0.005 -0.036,-0.003 -0.037,-0.003 -0.036,-0.002 -0.037,-0.001 -0.037,0 0,0 -0.037,0 -0.036,0.001 -0.038,0.002 -0.035,0.003 -0.036,0.003 -0.036,0.005 -0.034,0.005 -0.035,0.006 -0.034,0.007 -0.032,0.008 -0.032,0.008 -0.031,0.009 -0.03,0.01 -0.028,0.01 -0.028,0.012 -0.026,0.011 -0.025,0.012 -0.023,0.013 -0.022,0.013 -0.02,0.014 -0.019,0.013 -0.016,0.015 -0.016,0.015 -0.014,0.015 -0.012,0.015 -0.01,0.016 -0.009,0.016 -0.006,0.016 -0.005,0.017 -0.002,0.016 -10e-4,0.016 0,0 10e-4,0.016 0.002,0.016 0.005,0.017 0.006,0.016 0.009,0.016 0.01,0.016 0.012,0.016 0.014,0.014 0.016,0.016 0.016,0.014 0.019,0.014 0.02,0.013 0.022,0.014 0.023,0.013 0.025,0.012 0.026,0.011 0.028,0.011 0.028,0.011 0.03,0.009 0.031,0.009 0.032,0.009 0.032,0.007 0.034,0.007 0.035,0.006 0.034,0.006 0.036,0.004 0.036,0.003 0.035,0.003 0.038,0.003 0.036,0 0.037,10e-4 0,0 0.037,-10e-4 0.037,0 0.036,-0.003 0.037,-0.003 0.036,-0.003 0.035,-0.004 0.035,-0.006 0.034,-0.006 0.034,-0.007 0.033,-0.007 0.031,-0.009 0.031,-0.009 0.03,-0.009 0.029,-0.011 0.027,-0.011 0.026,-0.011 0.025,-0.012 0.023,-0.013 0.022,-0.014 0.02,-0.013 0.019,-0.014 0.017,-0.014 0.016,-0.016 0.013,-0.014 0.012,-0.016 0.011,-0.016 0.007,-0.016 0.008,-0.016 0.004,-0.017 0.003,-0.016 0,-0.016"
id="path14"
style="fill:#ffffff;stroke:none" />
<path
d="m 4.7599791,1.1813194 -10e-4,-0.016 -0.002,-0.016 -0.005,-0.017 -0.007,-0.016 -0.008,-0.016 -0.01,-0.016 -0.012,-0.016 -0.013,-0.014 -0.015,-0.015 -0.018,-0.015 -0.019,-0.014 -0.019,-0.013 -0.022,-0.013 -0.023,-0.014 -0.024,-0.011 -0.027,-0.012 -0.027,-0.011 -0.028,-0.01 -0.03,-0.01 -0.03,-0.009 -0.032,-0.008 -0.033,-0.008 -0.033,-0.007 -0.033,-0.005 -0.035,-0.006 -0.035,-0.004 -0.036,-0.004 -0.036,-0.003 -0.036,-0.002 -0.037,-0.001 -0.036,-0.001 0,0 -0.038,0.001 -0.036,0.001 -0.036,0.002 -0.036,0.003 -0.036,0.004 -0.035,0.004 -0.035,0.006 -0.033,0.005 -0.034,0.007 -0.032,0.008 -0.032,0.008 -0.03,0.009 -0.03,0.01 -0.028,0.01 -0.027,0.011 -0.027,0.012 -0.024,0.011 -0.022,0.014 -0.022,0.013 -0.021,0.013 -0.018,0.014 -0.018,0.015 -0.015,0.015 -0.013,0.014 -0.012,0.016 -0.01,0.016 -0.008,0.016 -0.007,0.016 -0.005,0.017 -0.002,0.016 -10e-4,0.016 0,0 10e-4,0.016 0.002,0.016 0.005,0.016 0.007,0.016 0.008,0.017 0.01,0.016 0.012,0.015 0.013,0.015 0.015,0.015 0.018,0.015 0.018,0.013 0.021,0.014 0.022,0.013 0.022,0.013 0.024,0.012 0.027,0.011 0.027,0.012 0.028,0.01 0.03,0.01 0.03,0.009 0.032,0.008 0.032,0.007 0.034,0.007 0.033,0.006 0.035,0.005 0.035,0.005 0.036,0.004 0.036,0.003 0.036,0.002 0.036,0.001 0.038,0 0,0 0.036,0 0.037,-0.001 0.036,-0.002 0.036,-0.003 0.036,-0.004 0.035,-0.005 0.035,-0.005 0.033,-0.006 0.033,-0.007 0.033,-0.007 0.032,-0.008 0.03,-0.009 0.03,-0.01 0.028,-0.01 0.027,-0.012 0.027,-0.011 0.024,-0.012 0.023,-0.013 0.022,-0.013 0.019,-0.014 0.019,-0.013 0.018,-0.015 0.015,-0.015 0.013,-0.015 0.012,-0.015 0.01,-0.016 0.008,-0.017 0.007,-0.016 0.005,-0.016 0.002,-0.016 10e-4,-0.016"
id="path16"
style="fill:#ffffff;stroke:none" />
<path
d="m 4.6189791,1.5243194 -10e-4,-0.027 -0.002,-0.027 -0.005,-0.026 -0.006,-0.027 -0.009,-0.026 -0.01,-0.026 -0.012,-0.025 -0.014,-0.025 -0.014,-0.025 -0.017,-0.023 -0.018,-0.024 -0.021,-0.022 -0.021,-0.022 -0.023,-0.02 -0.024,-0.021 -0.027,-0.018 -0.027,-0.018 -0.027,-0.018 -0.029,-0.015 -0.031,-0.015 -0.032,-0.013 -0.031,-0.013 -0.033,-0.011 -0.034,-0.01 -0.035,-0.009 -0.035,-0.007 -0.036,-0.006 -0.035,-0.005 -0.036,-0.003 -0.036,-0.002 -0.036,-0.001 0,0 -0.037,0.001 -0.036,0.002 -0.036,0.003 -0.036,0.005 -0.035,0.006 -0.035,0.007 -0.035,0.009 -0.034,0.01 -0.033,0.011 -0.032,0.013 -0.031,0.013 -0.031,0.015 -0.029,0.015 -0.028,0.018 -0.027,0.018 -0.026,0.018 -0.024,0.021 -0.023,0.02 -0.022,0.022 -0.019,0.022 -0.019,0.024 -0.017,0.023 -0.015,0.025 -0.014,0.025 -0.011,0.025 -0.01,0.026 -0.008,0.026 -0.007,0.027 -0.005,0.026 -0.002,0.027 -10e-4,0.027 0,0 10e-4,0.027 0.002,0.027 0.005,0.026 0.007,0.026 0.008,0.026 0.01,0.026 0.011,0.026 0.014,0.025 0.015,0.024 0.017,0.024 0.019,0.023 0.019,0.022 0.022,0.022 0.023,0.021 0.024,0.02 0.026,0.019 0.027,0.018 0.028,0.017 0.029,0.016 0.031,0.015 0.031,0.013 0.032,0.013 0.033,0.011 0.034,0.01 0.035,0.008 0.035,0.008 0.035,0.006 0.036,0.005 0.036,0.003 0.036,0.002 0.037,10e-4 0,0 0.036,-10e-4 0.036,-0.002 0.036,-0.003 0.035,-0.005 0.036,-0.006 0.035,-0.008 0.035,-0.008 0.034,-0.01 0.033,-0.011 0.031,-0.013 0.032,-0.013 0.031,-0.015 0.029,-0.016 0.027,-0.017 0.027,-0.018 0.027,-0.019 0.024,-0.02 0.023,-0.021 0.021,-0.022 0.021,-0.022 0.018,-0.023 0.017,-0.024 0.014,-0.024 0.014,-0.025 0.012,-0.026 0.01,-0.026 0.009,-0.026 0.006,-0.026 0.005,-0.026 0.002,-0.027 10e-4,-0.027"
id="path18"
style="fill:#ffffff;stroke:none" />
<path
d="m 2.7919791,0.61131938 0.965,-0.091 -0.013,-0.021 -0.014,-0.019 -0.017,-0.02 -0.019,-0.02 -0.022,-0.019 -0.024,-0.018 -0.026,-0.018 -0.028,-0.017 -0.031,-0.017 -0.032,-0.016 -0.034,-0.015 -0.036,-0.014 -0.038,-0.014 -0.039,-0.013 -0.042,-0.012 -0.042,-0.011 -0.043,-0.011 -0.045,-0.009 -0.046,-0.009 -0.047,-0.007 -0.048,-0.007 -0.048,-0.005 -0.049,-0.004 -0.049,-0.004 -0.049,-0.002 -0.051,-0.001 -0.05,0 -0.05,0 -0.049,0.003 -0.05,0.002 -0.049,0.004 -0.049,0.006 -0.047,0.006 -0.048,0.007 -0.046,0.008 -0.045,0.009 -0.044,0.01 -0.043,0.011 -0.041,0.012 -0.04,0.013 -0.038,0.013 -0.036,0.014 -0.036,0.016 -0.032,0.015 -0.032,0.017 -0.029,0.017 -0.026,0.018 -0.024,0.018 -0.024,0.019 -0.02,0.018 -0.018,0.02 -0.015,0.02 -0.012,0.021 -0.011,0.02 0.971,0.077"
id="path22"
style="fill:#ffffff;stroke:none" />
<path
d="m 3.7569791,0.51931938 -0.013,-0.021 -0.014,-0.019 -0.017,-0.02 -0.02,-0.019 -0.022,-0.019 -0.024,-0.018 -0.026,-0.018 -0.029,-0.018 -0.03,-0.016 -0.032,-0.016 -0.035,-0.016 -0.035,-0.014 -0.038,-0.014 -0.04,-0.012 -0.04,-0.013 -0.042,-0.011 -0.044,-0.01 -0.045,-0.01 -0.046,-0.008 -0.046,-0.008 -0.048,-0.006 -0.048,-0.005 -0.049,-0.004 -0.05,-0.004 -0.05,-0.002 -0.049,-0.001 -0.051,0 -0.049,0 -0.049,0.003 -0.051,0.002 -0.048,0.004 -0.049,0.006 -0.047,0.006 -0.048,0.007 -0.046,0.008 -0.045,0.009 -0.043,0.01 -0.043,0.011 -0.042,0.012 -0.039,0.013 -0.038,0.013 -0.036,0.014 -0.036,0.015 -0.033,0.015 -0.031,0.017 -0.028,0.018 -0.028,0.017 -0.024,0.018 -0.022,0.019 -0.021,0.019 -0.018,0.019 -0.016,0.02 -0.012,0.021 -0.011,0.02"
id="path24"
style="fill:none;stroke:#6c8f93;stroke-width:0.06067566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="m 1.4819791,0.82631938 0.486,-0.317 -0.029,-0.013 -0.032,-0.012 -0.032,-0.012 -0.033,-0.01 -0.034,-0.01 -0.035,-0.008 -0.036,-0.008 -0.036,-0.006 -0.037,-0.006 -0.037,-0.005 -0.038,-0.003 -0.038,-0.003 -0.039,-0.001 -0.038,0 -0.038,0 -0.038,0.002 -0.038,0.003 -0.038,0.004 -0.037,0.005 -0.036,0.006 -0.037,0.007 -0.035,0.008 -0.034,0.009 -0.034,0.009 -0.033,0.011 -0.031,0.013 -0.031,0.012 -0.029,0.013 -0.028,0.015 -0.027,0.015 -0.026,0.015 -0.024,0.016 -0.022,0.018 -0.021,0.017 -0.018,0.018 -0.018,0.02 -0.016,0.018 -0.014,0.02 -0.012,0.02 -0.01,0.02 -0.008,0.02 -0.006,0.022 -0.005,0.02 -0.003,0.021 0,0.021 0.001,0.021 0.003,0.021 0.005,0.021 0.74600003,-0.067"
id="path26"
style="fill:#ffffff;stroke:none" />
<path
d="m 1.9659791,0.50831938 -0.03,-0.014 -0.031,-0.011 -0.033,-0.012 -0.033,-0.01 -0.035,-0.01 -0.034,-0.008 -0.036,-0.008 -0.036,-0.006 -0.037,-0.005 -0.037,-0.005 -0.038,-0.004 -0.038,-0.002 -0.039,-0.001 -0.038,0 -0.038,0 -0.038,0.003 -0.038,0.002 -0.038,0.004 -0.037,0.005 -0.036,0.007 -0.036,0.006 -0.035,0.009 -0.034,0.008 -0.034,0.011 -0.033,0.011 -0.032,0.011 -0.03,0.013 -0.029,0.013 -0.028,0.015 -0.027,0.015 -0.025,0.015 -0.024,0.016 -0.022,0.018 -0.02,0.017 -0.02,0.019 -0.017,0.018 -0.016,0.019 -0.013,0.02 -0.012,0.02 -0.01,0.02 -0.008,0.021 -0.006,0.02 -0.005,0.021 -0.003,0.02 0,0.022 0.002,0.021 0.002,0.02 0.006,0.021"
id="path28"
style="fill:none;stroke:#6c8f93;stroke-width:0.06067566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="m 1.3459791,1.5683194 -0.78100003,-0.012 0,0.019 0.001,0.019 0.003,0.019 0.006,0.018 0.008,0.019 0.009,0.018 0.012,0.018 0.014,0.018 0.015,0.017 0.017,0.017 0.019,0.017 0.02,0.016 0.023,0.015 0.023,0.015 0.026,0.015 0.027,0.014 0.027,0.012 0.03,0.013 0.031,0.012 0.032,0.01 0.034,0.011 0.033,0.009 0.035,0.008 0.036,0.008 0.037,0.007 0.038,0.006 0.037,0.005 0.039,0.004 0.039,0.003 0.039,0.003 0.04,10e-4 0.039,0 0.039,-10e-4 0.039,-0.002 0.039,-0.002 0.039,-0.003 0.039,-0.005 0.037,-0.006 0.037,-0.005 0.037,-0.008 0.035,-0.008 0.035,-0.009 0.033,-0.009 0.033,-0.01 0.033,-0.011 0.03,-0.013 -0.513,-0.282"
id="path30"
style="fill:#ffffff;stroke:none" />
<path
d="m 0.56497907,1.5563194 -0.001,0.019 0.002,0.019 0.003,0.018 0.006,0.019 0.008,0.018 0.01,0.019 0.011,0.018 0.014,0.018 0.015,0.017 0.017,0.017 0.018,0.016 0.02,0.016 0.023,0.016 0.024,0.015 0.024,0.014 0.026,0.014 0.029,0.013 0.029,0.013 0.032,0.011 0.032,0.011 0.032,0.01 0.034,0.009 0.035,0.009 0.037,0.008 0.036,0.006 0.037,0.007 0.038,0.005 0.038,0.004 0.039,0.003 0.039,0.002 0.039,0.002 0.04,0 0.039,0 0.039,-0.003 0.039,-0.002 0.038,-0.003 0.038,-0.005 0.038,-0.004 0.038,-0.007 0.036,-0.007 0.036,-0.008 0.034,-0.009 0.034,-0.009 0.034,-0.01 0.031,-0.011 0.03,-0.012"
id="path32"
style="fill:none;stroke:#6c8f93;stroke-width:0.06067566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="m 3.8359791,0.75931938 0.689,0.104 0.011,-0.016 0.01,-0.015 0.007,-0.016 0.006,-0.016 0.003,-0.016 0.002,-0.017 0,-0.016 -0.002,-0.017 -0.003,-0.016 -0.006,-0.016 -0.007,-0.016 -0.01,-0.016 -0.01,-0.016 -0.013,-0.015 -0.015,-0.015 -0.016,-0.015 -0.018,-0.014 -0.02,-0.014 -0.022,-0.014 -0.021,-0.012 -0.025,-0.013 -0.025,-0.012 -0.027,-0.011 -0.029,-0.011 -0.028,-0.01 -0.03,-0.009 -0.032,-0.009 -0.032,-0.008 -0.034,-0.007 -0.033,-0.006 -0.036,-0.006 -0.034,-0.005 -0.037,-0.004 -0.036,-0.003 -0.037,-0.003 -0.037,-0.001 -0.036,-0.001 -0.037,0 -0.037,0.001 -0.037,0.002 -0.036,0.002 -0.036,0.003 -0.036,0.004 -0.036,0.005 0.238,0.306"
id="path34"
style="fill:#ffffff;stroke:none" />
<path
d="m 4.4569791,0.92331938 0.067,-0.059 0.011,-0.016 0.009,-0.015 0.009,-0.016 0.005,-0.017 0.004,-0.016 0.002,-0.016 0.001,-0.016 -0.003,-0.017 -0.003,-0.016 -0.006,-0.017 -0.007,-0.015 -0.009,-0.016 -0.011,-0.016 -0.012,-0.015 -0.016,-0.015 -0.016,-0.015 -0.017,-0.014 -0.02,-0.014 -0.021,-0.014 -0.023,-0.013 -0.023,-0.012 -0.026,-0.012 -0.027,-0.011 -0.028,-0.011 -0.029,-0.011 -0.03,-0.009 -0.032,-0.008 -0.031,-0.008 -0.033,-0.008 -0.034,-0.006 -0.035,-0.006 -0.035,-0.005 -0.036,-0.004 -0.036,-0.003 -0.037,-0.002 -0.037,-0.002 -0.037,-0.001 -0.037,0 -0.037,0.001 -0.037,0.002 -0.036,0.002 -0.036,0.003 -0.036,0.004 -0.035,0.005"
id="path36"
style="fill:none;stroke:#6c8f93;stroke-width:0.06067566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="m 3.9329791,1.1853194 0.775,0.132 0.016,-0.017 0.013,-0.017 0.012,-0.018 0.008,-0.018 0.008,-0.018 0.004,-0.019 10e-4,-0.018 0,-0.018 -0.003,-0.019 -0.004,-0.019 -0.008,-0.018 -0.009,-0.018 -0.012,-0.017 -0.014,-0.018 -0.016,-0.017 -0.018,-0.017 -0.02,-0.016 -0.023,-0.016 -0.024,-0.015 -0.686,0.20100002"
id="path38"
style="fill:#ffffff;stroke:none" />
<path
d="m 4.6121701,1.38473 0.098479,-0.059128 0.014482,-0.018039 0.013517,-0.018039 0.01062,-0.018039 0.00869,-0.018039 0.00772,-0.018039 0.00386,-0.018039 0.00193,-0.019041 0,-0.018039 -0.00386,-0.020044 -0.00386,-0.018039 -0.00676,-0.018039 -0.00965,-0.018039 -0.011586,-0.018039 -0.013517,-0.018039 -0.015448,-0.017037 -0.018344,-0.017037 -0.021241,-0.016035 -0.020275,-0.016035 -0.024137,-0.0160349 -0.1544773,-0.0591286"
id="path40"
style="fill:none;stroke:#6c8f93;stroke-width:0.0596842;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="m 3.9009791,1.5363194 -0.245,0.503 0.036,0.008 0.036,0.007 0.037,0.006 0.038,0.004 0.038,0.003 0.037,0.002 0.037,0 0.038,-0.002 0.037,-0.002 0.038,-0.004 0.036,-0.005 0.038,-0.007 0.035,-0.008 0.036,-0.009 0.034,-0.011 0.034,-0.012 0.033,-0.013 0.032,-0.014 0.031,-0.016 0.03,-0.016 0.028,-0.018 0.027,-0.019 0.027,-0.02 0.025,-0.02 0.022,-0.022 0.022,-0.021 0.02,-0.024 0.018,-0.024 0.016,-0.024 0.015,-0.025 0.014,-0.026 0.01,-0.025 0.01,-0.027 0.008,-0.027 0.006,-0.026 0.003,-0.028 0.002,-0.027 0,-0.027 -0.002,-0.027 -0.004,-0.027 -0.006,-0.026 -0.008,-0.028 -0.009,-0.025 -0.71,0.149"
id="path42"
style="fill:#ffffff;stroke:none" />
<path
d="m 3.6589791,2.0403194 0.036,0.008 0.036,0.007 0.037,0.006 0.037,0.004 0.037,0.002 0.038,0.002 0.038,10e-4 0.037,-0.003 0.038,-0.002 0.037,-0.004 0.037,-0.005 0.036,-0.007 0.036,-0.009 0.036,-0.009 0.034,-0.011 0.033,-0.011 0.034,-0.014 0.032,-0.014 0.031,-0.015 0.029,-0.018 0.029,-0.017 0.027,-0.019 0.026,-0.019 0.025,-0.021 0.023,-0.022 0.021,-0.022 0.019,-0.024 0.019,-0.023 0.016,-0.024 0.015,-0.025 0.014,-0.026 0.011,-0.026 0.008,-0.026 0.008,-0.027 0.006,-0.027 0.003,-0.027 0.002,-0.027 0,-0.027 -0.002,-0.027 -0.005,-0.027 -0.005,-0.028 -0.008,-0.026 -0.01,-0.026"
id="path44"
style="fill:none;stroke:#6c8f93;stroke-width:0.06067566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="m 0.80297907,1.2493194 -0.037,-0.34200002 -0.028,0.002 -0.026,0.002 -0.027,0.004 -0.026,0.004 -0.026,0.005 -0.026,0.006 -0.024,0.007 -0.025,0.008 -0.024,0.008 -0.023,0.009 -0.022,0.01 -0.021,0.01 -0.021,0.012 -0.02,0.012 -0.019,0.013 -0.017,0.013 -0.017,0.014 -0.015,0.014 -0.015,0.015 -0.013,0.015 -0.011,0.016 -0.011,0.016 -0.01,0.016 -0.008,0.017 -0.006,0.017 -0.006,0.016 -0.004,0.018 -0.003,0.018 -0.001,0.017 0,0.017 0.001,0.018 0.003,0.017 0.004,0.017 0.006,0.017 0.007,0.017 0.008,0.017 0.009,0.016 0.011,0.016 0.012,0.016 0.013,0.015 0.016,0.015 0.015,0.014 0.017,0.014 0.018,0.013 0.018,0.013 0.02,0.011 0.021,0.011 0.021,0.012 0.022,0.009 0.024,0.009 0.023,0.009 0.243,-0.305"
id="path46"
style="fill:#ffffff;stroke:none" />
<path
d="m 0.76697907,0.90731938 -0.027,0.002 -0.027,0.002 -0.026,0.003 -0.026,0.005 -0.025,0.004 -0.026,0.006 -0.025,0.007 -0.023,0.007 -0.023,0.009 -0.023,0.009 -0.023,0.009 -0.021,0.01 -0.02,0.011 -0.02,0.012 -0.018,0.012 -0.018,0.013 -0.017,0.013 -0.016,0.015 -0.015,0.014 -0.012,0.014 -0.012,0.016 -0.012,0.015 -0.009,0.016 -0.009,0.016 -0.007,0.017 -0.006,0.017 -0.005,0.017 -0.003,0.017 -0.002,0.017 0,0.017 0,0.017 0.003,0.017 0.003,0.018 0.004,0.016 0.007,0.017 0.006,0.016 0.009,0.017 0.009,0.016 0.012,0.015 0.012,0.016 0.014,0.014 0.014,0.014 0.016,0.015 0.016,0.013 0.018,0.013 0.019,0.012 0.019,0.011 0.021,0.012 0.021,0.01 0.022,0.009 0.023,0.009 0.024,0.009"
id="path48"
style="fill:none;stroke:#6c8f93;stroke-width:0.06067566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="m 2.7759791,1.7874896 -1.109,0.040159 0.008,0.020594 0.009,0.019565 0.013,0.020594 0.015,0.020595 0.018,0.019565 0.021,0.018535 0.023,0.018535 0.025,0.018535 0.029,0.018535 0.031,0.017505 0.032,0.015446 0.036,0.016475 0.037,0.015446 0.039,0.015446 0.042,0.013386 0.043,0.013386 0.045,0.011327 0.047,0.012357 0.048,0.010297 0.049,0.00927 0.051,0.00927 0.052,0.00824 0.053,0.00618 0.053,0.00618 0.055,0.00515 0.055,0.00412 0.056,0.00206 0.055,0.00206 0.057,0.00103 0.055,0 0.057,-0.00103 0.055,-0.00309 0.055,-0.00309 0.055,-0.00515 0.054,-0.00515 0.053,-0.00618 0.052,-0.00721 0.052,-0.00824 0.05,-0.010297 0.049,-0.00927 0.047,-0.011327 0.046,-0.011327 0.044,-0.013386 0.042,-0.014416 0.04,-0.013386 0.039,-0.015446 0.036,-0.015446 0.034,-0.016476 0.031,-0.016476 0.03,-0.017505 0.027,-0.019565 0.025,-0.017505 0.022,-0.019565 0.018,-0.018535 -1.056,-0.1307748"
id="path50"
style="fill:#ffffff;stroke:none" />
<path
d="m 1.6669791,1.8393194 0.008,0.019 0.01,0.02 0.012,0.02 0.016,0.019 0.017,0.019 0.021,0.018 0.023,0.018 0.025,0.019 0.03,0.017 0.03,0.017 0.032,0.015 0.036,0.016 0.037,0.015 0.039,0.015 0.042,0.013 0.044,0.013 0.043,0.011 0.048,0.012 0.047,0.01 0.049,0.009 0.051,0.009 0.052,0.008 0.053,0.006 0.053,0.005 0.055,0.006 0.054,0.003 0.056,0.003 0.056,0.002 0.056,10e-4 0.056,0 0.056,-10e-4 0.055,-0.003 0.055,-0.003 0.055,-0.005 0.054,-0.005 0.054,-0.006 0.051,-0.007 0.052,-0.008 0.05,-0.009 0.048,-0.01 0.048,-0.011 0.046,-0.011 0.043,-0.013 0.043,-0.012 0.04,-0.015 0.039,-0.014 0.036,-0.016 0.034,-0.015 0.032,-0.017 0.029,-0.016 0.027,-0.018 0.024,-0.018 0.022,-0.019 0.02,-0.018"
id="path52"
style="fill:none;stroke:#6c8f93;stroke-width:0.06067566;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<rect
width="2.7800133"
height="0.61515152"
rx="0"
ry="0.28983101"
x="1.2692652"
y="0.80605406"
transform="matrix(0.999604,0.02812984,-0.02812984,0.999604,0,0)"
id="rect1892"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
<path
d="m 2.5029776,1.9073766 0.023,-0.00895 0.020913,-0.00976 0.022119,-0.011947 0.021191,-0.0142 0.021284,-0.015682 0.02031,-0.017195 0.020402,-0.018676 0.020541,-0.020897 0.018455,-0.021702 0.018546,-0.023184 0.018685,-0.025405 0.016552,-0.02547 0.016691,-0.027691 0.014651,-0.029236 0.015717,-0.029204 0.013676,-0.03075 0.012702,-0.032263 0.012748,-0.033004 0.010665,-0.033809 0.010665,-0.033809 0.00863,-0.035354 0.00756,-0.035386 0.00653,-0.036158 0.00658,-0.0369 0.00445,-0.036963 0.00333,-0.036256 0.00236,-0.037768 0.00226,-0.036288 -9.319e-4,-0.036384 2.273e-4,-0.037833 -0.00205,-0.035676 -0.00413,-0.03648 L 2.883076,0.9720976 2.877836,0.9363258 2.871426,0.902003 2.863906,0.8683889 2.855226,0.8362236 2.845476,0.8040261 2.834621,0.7725371 2.82256,0.7432375 2.810453,0.7146786 2.797187,0.6875686 2.782854,0.6604265 2.768383,0.635506 2.751686,0.6120024 2.733784,0.590685 2.716948,0.569403 2.69886,0.5510511 2.679613,0.5341483 2.660319,0.517986 2.640887,0.5040454 2.620296,0.4915538 2.598453,0.4819918 2.577631,0.4732028"
id="path24-7"
style="fill:none;stroke:#6c8f93;stroke-width:0.107496;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
id="path2057-3"
d="M 1.5298421,1.2403194 H 2.3548856 V 1.303797 L 2.577141,1.1602384 2.3548856,1.0313279 v 0.064457 H 1.5298421 v 0.1445348"
style="fill:#6c8f93;fill-opacity:1;stroke:none;stroke-width:5.35746e-05;stroke-opacity:0.994961" />
<path
id="path2057-3-9"
d="M 3.1225773,1.2403194 H 3.9476208 V 1.303797 L 4.1698762,1.1602384 3.9476208,1.0313279 v 0.064457 H 3.1225773 v 0.1445348"
style="fill:#6c8f93;fill-opacity:1;stroke:none;stroke-width:5.35746e-05;stroke-opacity:0.994961" />
<path
id="path2057-3-5"
d="m 1.5278616,0.86827348 h 0.8319275 v 0.063478 L 2.5838989,0.78819244 2.3597891,0.65928186 v 0.064457 H 1.5278616 v 0.14453482"
style="fill:#6c8f93;fill-opacity:1;stroke:none;stroke-width:5.37977e-05;stroke-opacity:0.994961" />
<path
id="path2057-3-6"
d="m 1.527029,1.6225499 h 0.8217599 v 0.063478 L 2.5701597,1.5424689 2.3487889,1.4135585 v 0.064457 H 1.5270291 v 0.1445347"
style="fill:#6c8f93;fill-opacity:1;stroke:none;stroke-width:5.34679e-05;stroke-opacity:0.994961" />
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

+1 -1
View File
@@ -60,7 +60,7 @@ def parse_version(version):
"""
release_type_found = False
version_infos = re.split('(\.|[a-z]+)', version)
version_infos = re.split(r'(\.|[a-z]+)', version)
version = []
for info in version_infos:
if info == '.' or len(info) == 0:
+16 -3
View File
@@ -190,6 +190,11 @@ class AsyncioTelnetServer:
sock = network_writer.get_extra_info("socket")
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
# 60 sec keep alives, close tcp session after 4 missed
# Will keep a firewall from aging out telnet console.
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 10)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 4)
#log.debug("New connection from {}".format(sock.getpeername()))
# Keep track of connected clients
@@ -292,9 +297,17 @@ class AsyncioTelnetServer:
reader_read = await self._get_reader(network_reader)
# Replicate the output on all clients
for connection in self._connections.values():
connection.writer.write(data)
await connection.writer.drain()
for connection_key in list(self._connections.keys()):
client_info = connection_key.get_extra_info("socket").getpeername()
connection = self._connections[connection_key]
try:
connection.writer.write(data)
await asyncio.wait_for(connection.writer.drain(), timeout=10)
except:
log.debug(f"Timeout while sending data to client: {client_info}, closing and removing from connection table.")
connection.close()
del self._connections[connection_key]
async def _read(self, cmd, buffer, location, reader):
""" Reads next op from the buffer or reader"""
+3 -3
View File
@@ -53,7 +53,6 @@ def list_images(emulator_type):
directory = os.path.normpath(directory)
for root, _, filenames in _os_walk(directory, recurse=recurse):
for filename in filenames:
path = os.path.join(root, filename)
if filename not in files:
if filename.endswith(".md5sum") or filename.startswith("."):
continue
@@ -73,8 +72,9 @@ def list_images(emulator_type):
with open(os.path.join(root, filename), "rb") as f:
# read the first 7 bytes of the file.
elf_header_start = f.read(7)
# valid IOS images must start with the ELF magic number, be 32-bit, big endian and have an ELF version of 1
if not elf_header_start == b'\x7fELF\x01\x02\x01' and not elf_header_start == b'\x7fELF\x01\x01\x01':
# valid IOU or IOS images must start with the ELF magic number, be 32-bit or 64-bit,
# little endian and have an ELF version of 1
if elf_header_start != b'\x7fELF\x02\x01\x01' and elf_header_start != b'\x7fELF\x01\x01\x01':
continue
images.append({
+2 -2
View File
@@ -46,7 +46,7 @@ def _get_windows_interfaces_from_registry():
hkeycard = winreg.OpenKey(hkey, network_card_id)
guid, _ = winreg.QueryValueEx(hkeycard, "ServiceName")
netcard, _ = winreg.QueryValueEx(hkeycard, "Description")
connection = r"SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}" + "\{}\Connection".format(guid)
connection = r"SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}" + r"\{}\Connection".format(guid)
hkeycon = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, connection)
name, _ = winreg.QueryValueEx(hkeycon, "Name")
interface = r"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{}".format(guid)
@@ -92,7 +92,7 @@ def get_windows_interfaces():
interfaces = []
try:
locator = win32com.client.Dispatch("WbemScripting.SWbemLocator")
service = locator.ConnectServer(".", "root\cimv2")
service = locator.ConnectServer(".", r"root\cimv2")
network_configs = service.InstancesOf("Win32_NetworkAdapterConfiguration")
# more info on Win32_NetworkAdapter: http://msdn.microsoft.com/en-us/library/aa394216%28v=vs.85%29.aspx
for adapter in service.InstancesOf("Win32_NetworkAdapter"):
+2 -2
View File
@@ -23,8 +23,8 @@
# or negative for a release candidate or beta (after the base version
# number has been incremented)
__version__ = "2.2.45"
__version_info__ = (2, 2, 45, 0)
__version__ = "2.2.47"
__version_info__ = (2, 2, 47, 0)
if "dev" in __version__:
try:
+1 -1
View File
@@ -118,7 +118,7 @@ class WebServer:
if self._server:
self._server.close()
await self._server.wait_closed()
# await self._server.wait_closed()
if self._app:
await self._app.shutdown()
if self._handler:
-1
View File
@@ -1,4 +1,3 @@
[pytest]
asyncio_mode=auto
log_level=NOTSET
ignore=env
+9 -15
View File
@@ -1,19 +1,13 @@
jsonschema>=4.17.3,<4.18; python_version >= '3.7' # v4.17.3 is the last version to support Python 3.7
jsonschema==3.2.0; python_version < '3.7' # v3.2.0 is the last version to support Python 3.6
aiohttp>=3.8.5,<3.9; python_version <= '3.7'
aiohttp>=3.9.0,<3.10; python_version > '3.7'
jsonschema>=4.22.0,<4.23
aiohttp>=3.9.5,<3.10
aiohttp-cors>=0.7.0,<0.8
aiofiles>=23.2.1,<23.3; python_version >= '3.7'
aiofiles==0.8.0; python_version < '3.7' # v0.8.0 is the last version to support Python 3.6
Jinja2>=3.1.2,<3.2; python_version >= '3.7'
Jinja2==3.0.3; python_version < '3.7' # v3.0.3 is the last version to support Python 3.6
sentry-sdk==1.36.0,<1.37
psutil==5.9.6
async-timeout>=4.0.2,<4.1
distro>=1.8.0
aiofiles>=23.2.1,<23.3
Jinja2>=3.1.4,<3.2
sentry-sdk==2.1.1,<2.2
psutil==5.9.8
async-timeout>=4.0.3,<4.1
distro>=1.9.0
py-cpuinfo>=9.0.0,<10.0
platformdirs>=2.4.0
importlib-resources>=1.3; python_version < '3.9'
truststore>=0.8.0; python_version >= '3.10'
setuptools>=60.8.1; python_version >= '3.7'
setuptools==59.6.0; python_version < '3.7' # v59.6.0 is the last version to support Python 3.6
truststore>=0.9.1; python_version >= '3.10'
+8 -3
View File
@@ -163,9 +163,9 @@ log "Install GNS3 packages"
apt-get install -y gns3-server
log "Create user GNS3 with /opt/gns3 as home directory"
if [ ! -d "/opt/gns3/" ]
if [ ! -d "/opt/gns3" ]
then
useradd -m -d /opt/gns3/ gns3
useradd -m -d /opt/gns3 gns3
fi
@@ -304,6 +304,11 @@ log "GNS3 installed with success"
if [ $WELCOME_SETUP == 1 ]
then
cat <<EOFI > /etc/sudoers.d/gns3
gns3 ALL = (ALL) NOPASSWD: /usr/bin/apt-key
gns3 ALL = (ALL) NOPASSWD: /usr/bin/apt-get
gns3 ALL = (ALL) NOPASSWD: /usr/sbin/reboot
EOFI
NEEDRESTART_MODE=a apt-get install -y net-tools
NEEDRESTART_MODE=a apt-get install -y python3-pip
NEEDRESTART_MODE=a apt-get install -y dialog
@@ -462,4 +467,4 @@ NEEDRESTART_MODE=a apt-get upgrade
python3 -c 'import sys; sys.path.append("/usr/local/bin/"); import welcome; ws = welcome.Welcome_dialog(); ws.repair_remote_install()'
cd /opt/gns3
su gns3
fi
fi
+14 -14
View File
@@ -69,21 +69,21 @@ mkdir -p "$GNS3SERVER_DIR/gns3server/static/web-ui/"
if [ "$CUSTOM_REPO" = false ] ; then
if [ ! -d /tmp/gns3-web-ui ]; then
git clone https://github.com/GNS3/gns3-web-ui.git "$REPO_DIR"
else
cd "$REPO_DIR"
git checkout 2.2
git fetch --tags
git pull
if [[ -n "$TAG" ]]
then
echo "Switching to tag: ${TAG}"
git checkout "tags/${TAG}"
fi
cd "$CURRENT_DIR"
fi
cd "$REPO_DIR"
git checkout 2.2
git fetch --tags
git pull
if [[ -n "$TAG" ]]
then
echo "Switching to tag: ${TAG}"
git checkout "tags/${TAG}"
fi
cd "$CURRENT_DIR"
fi
echo "Current working dir $REPO_DIR"
+32 -12
View File
@@ -163,19 +163,38 @@ class Welcome_dialog:
def update(self, force=False):
if not force:
if self.display.yesno("PLEASE SNAPSHOT THE VM BEFORE RUNNING THE UPGRADE IN CASE OF FAILURE. The server will reboot at the end of the upgrade process. Continue?") != self.display.OK:
if self.display.yesno("It is recommended to ensure all Nodes are shutdown before upgrading. Continue?") != self.display.OK:
return
release = self.get_release()
if release == "2.2":
if self.display.yesno("It is recommended to run GNS3 version 2.2 with lastest GNS3 VM based on Ubuntu 18.04 LTS, please download this VM from our website or continue at your own risk!") != self.display.OK:
code, option = self.display.menu("Select an option",
choices=[("Upgrade GNS3", "Upgrades only the GNS3 pakage and dependences."),
("Upgrade All", "Upgrades all avaiable packages"),
("Dist Upgrade", "Upgrades all avaiable packages and the Linux Kernel. Requires a reboot.")])
if code == Dialog.OK:
if option == "Upgrade GNS3":
ret = os.system(
"sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A2E3EF7B \
&& sudo apt-get update \
&& sudo apt-get install -y --only-upgrade gns3-server"
)
elif option == "Upgrade All":
ret = os.system(
'sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com \
&& sudo apt-get update \
&& sudo apt-get upgrade --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"'
)
elif option == "Dist Upgrade":
ret = os.system(
'sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com \
&& sudo apt-get update \
&& sudo apt-get dist-upgrade --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"'
)
if ret != 0:
print("ERROR DURING UPGRADE PROCESS PLEASE TAKE A SCREENSHOT IF YOU NEED SUPPORT")
time.sleep(15)
return
if release.endswith("dev"):
ret = os.system("curl -Lk https://raw.githubusercontent.com/GNS3/gns3-vm/unstable/scripts/update_{}.sh > /tmp/update.sh && bash -x /tmp/update.sh".format(release))
else:
ret = os.system("curl -Lk https://raw.githubusercontent.com/GNS3/gns3-vm/master/scripts/update_{}.sh > /tmp/update.sh && bash -x /tmp/update.sh".format(release))
if ret != 0:
print("ERROR DURING UPGRADE PROCESS PLEASE TAKE A SCREENSHOT IF YOU NEED SUPPORT")
time.sleep(15)
if option == "Dist Upgrade":
if self.display.yesno("Reboot now?") == self.display.OK:
os.system("sudo reboot now")
def migrate(self):
@@ -438,7 +457,8 @@ Images and projects are located in /opt/gns3
self.display.clear()
if code == Dialog.OK:
if tag == "Shell":
os.execvp("bash", ['/bin/bash'])
print("Type: 'welcome.py' to get back to the dialog menu.")
sys.exit(0)
elif tag == "Version":
self.mode()
elif tag == "Restore":
+4 -28
View File
@@ -23,9 +23,9 @@ import subprocess
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand
# we only support Python 3 version >= 3.5.3
if len(sys.argv) >= 2 and sys.argv[1] == "install" and sys.version_info < (3, 5, 3):
raise SystemExit("Python 3.5.3 or higher is required")
# we only support Python 3 version >= 3.7
if len(sys.argv) >= 2 and sys.argv[1] == "install" and sys.version_info < (3, 7):
raise SystemExit("Python 3.7 or higher is required")
class PyTest(TestCommand):
@@ -43,28 +43,6 @@ class PyTest(TestCommand):
sys.exit(errcode)
BUSYBOX_PATH = "gns3server/compute/docker/resources/bin/busybox"
def copy_busybox():
if not sys.platform.startswith("linux"):
return
if os.path.isfile(BUSYBOX_PATH):
return
for bb_cmd in ("busybox-static", "busybox.static", "busybox"):
bb_path = shutil.which(bb_cmd)
if bb_path:
if subprocess.call(["ldd", bb_path],
stdin=subprocess.DEVNULL,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL):
shutil.copy2(bb_path, BUSYBOX_PATH, follow_symlinks=True)
break
else:
raise SystemExit("No static busybox found")
copy_busybox()
dependencies = open("requirements.txt", "r").read().splitlines()
setup(
@@ -89,7 +67,7 @@ setup(
include_package_data=True,
zip_safe=False,
platforms="any",
python_requires='>=3.6.0',
python_requires='>=3.7',
setup_requires=["setuptools>=17.1"],
classifiers=[
"Development Status :: 5 - Production/Stable",
@@ -103,8 +81,6 @@ setup(
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
+4 -4
View File
@@ -31,7 +31,7 @@ def nio():
@pytest.fixture
async def manager(loop):
async def manager():
m = MagicMock()
m.module_name = "builtins"
@@ -113,7 +113,7 @@ def test_json_without_ports(on_gns3vm, compute_project, manager):
}
async def test_update_port_mappings(loop, on_gns3vm, compute_project):
async def test_update_port_mappings(on_gns3vm, compute_project):
"""
We don't allow an empty interface in the middle of port list
"""
@@ -153,7 +153,7 @@ async def test_update_port_mappings(loop, on_gns3vm, compute_project):
assert cloud.ports_mapping == ports1
async def test_linux_ethernet_raw_add_nio(loop, linux_platform, compute_project, nio):
async def test_linux_ethernet_raw_add_nio(linux_platform, compute_project, nio):
ports = [
{
"interface": "eth0",
@@ -180,7 +180,7 @@ async def test_linux_ethernet_raw_add_nio(loop, linux_platform, compute_project,
])
async def test_linux_ethernet_raw_add_nio_bridge(loop, linux_platform, compute_project, nio):
async def test_linux_ethernet_raw_add_nio_bridge(linux_platform, compute_project, nio):
"""
Bridge can't be connected directly to a cloud we use a tap in the middle
"""
+51 -1
View File
@@ -15,6 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import asyncio
import pytest
from unittest.mock import MagicMock, patch
@@ -24,7 +25,7 @@ from gns3server.compute.docker.docker_error import DockerError, DockerHttp404Err
@pytest.fixture
async def vm(loop):
async def vm():
vm = Docker()
vm._connected = True
@@ -200,3 +201,52 @@ async def test_docker_check_connection_docker_preferred_version_against_older(vm
vm._connected = False
await vm._check_connection()
assert vm._api_version == DOCKER_MINIMUM_API_VERSION
@pytest.mark.asyncio
async def test_install_busybox():
mock_process = MagicMock()
mock_process.returncode = 1 # means that busybox is not dynamically linked
mock_process.communicate = AsyncioMagicMock(return_value=(b"", b"not a dynamic executable"))
with patch("gns3server.compute.docker.os.path.isfile", return_value=False):
with patch("gns3server.compute.docker.shutil.which", return_value="/usr/bin/busybox"):
with asyncio_patch("gns3server.compute.docker.asyncio.create_subprocess_exec", return_value=mock_process) as create_subprocess_mock:
with patch("gns3server.compute.docker.shutil.copy2") as copy2_mock:
dst_dir = Docker.resources_path()
await Docker.install_busybox(dst_dir)
create_subprocess_mock.assert_called_with(
"ldd",
"/usr/bin/busybox",
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.DEVNULL,
)
assert copy2_mock.called
@pytest.mark.asyncio
async def test_install_busybox_dynamic_linked():
mock_process = MagicMock()
mock_process.returncode = 0 # means that busybox is dynamically linked
mock_process.communicate = AsyncioMagicMock(return_value=(b"Dynamically linked library", b""))
with patch("os.path.isfile", return_value=False):
with patch("gns3server.compute.docker.shutil.which", return_value="/usr/bin/busybox"):
with asyncio_patch("gns3server.compute.docker.asyncio.create_subprocess_exec", return_value=mock_process):
with pytest.raises(DockerError) as e:
dst_dir = Docker.resources_path()
await Docker.install_busybox(dst_dir)
assert str(e.value) == "No busybox executable could be found, please install busybox (apt install busybox-static on Debian/Ubuntu) and make sure it is in your PATH"
@pytest.mark.asyncio
async def test_install_busybox_no_executables():
with patch("gns3server.compute.docker.os.path.isfile", return_value=False):
with patch("gns3server.compute.docker.shutil.which", return_value=None):
with pytest.raises(DockerError) as e:
dst_dir = Docker.resources_path()
await Docker.install_busybox(dst_dir)
assert str(e.value) == "No busybox executable could be found, please install busybox (apt install busybox-static on Debian/Ubuntu) and make sure it is in your PATH"
+48 -22
View File
@@ -25,16 +25,17 @@ from tests.utils import asyncio_patch, AsyncioMagicMock
from gns3server.ubridge.ubridge_error import UbridgeNamespaceError
from gns3server.compute.docker.docker_vm import DockerVM
from gns3server.compute.docker.docker_error import DockerError, DockerHttp404Error, DockerHttp304Error
from gns3server.compute.docker.docker_error import DockerError, DockerHttp404Error
from gns3server.compute.docker import Docker
from gns3server.utils.get_resource import get_resource
from unittest.mock import patch, MagicMock, call
pytestmark = pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported on Windows")
@pytest.fixture()
async def manager(loop, port_manager):
async def manager(port_manager):
m = Docker.instance()
m.port_manager = port_manager
@@ -42,7 +43,7 @@ async def manager(loop, port_manager):
@pytest.fixture(scope="function")
async def vm(loop, compute_project, manager):
async def vm(compute_project, manager):
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest")
vm._cid = "e90e34656842"
@@ -101,7 +102,7 @@ async def test_create(compute_project, manager):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network"))
],
"Privileged": True
@@ -139,7 +140,7 @@ async def test_create_with_tag(compute_project, manager):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network"))
],
"Privileged": True
@@ -180,7 +181,7 @@ async def test_create_vnc(compute_project, manager):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")),
"/tmp/.X11-unix/X{0}:/tmp/.X11-unix/X{0}:ro".format(vm._display)
],
@@ -310,7 +311,7 @@ async def test_create_start_cmd(compute_project, manager):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network"))
],
"Privileged": True
@@ -408,7 +409,7 @@ async def test_create_image_not_available(compute_project, manager):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network"))
],
"Privileged": True
@@ -451,7 +452,7 @@ async def test_create_with_user(compute_project, manager):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network"))
],
"Privileged": True
@@ -533,7 +534,7 @@ async def test_create_with_extra_volumes_duplicate_1_image(compute_project, mana
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")),
"{}:/gns3volumes/vol/1".format(os.path.join(vm.working_dir, "vol", "1")),
],
@@ -572,7 +573,7 @@ async def test_create_with_extra_volumes_duplicate_2_user(compute_project, manag
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")),
"{}:/gns3volumes/vol/1".format(os.path.join(vm.working_dir, "vol", "1")),
],
@@ -611,7 +612,7 @@ async def test_create_with_extra_volumes_duplicate_3_subdir(compute_project, man
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")),
"{}:/gns3volumes/vol".format(os.path.join(vm.working_dir, "vol")),
],
@@ -650,7 +651,7 @@ async def test_create_with_extra_volumes_duplicate_4_backslash(compute_project,
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")),
"{}:/gns3volumes/vol".format(os.path.join(vm.working_dir, "vol")),
],
@@ -689,7 +690,7 @@ async def test_create_with_extra_volumes_duplicate_5_subdir_issue_1595(compute_p
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc".format(os.path.join(vm.working_dir, "etc")),
],
"Privileged": True
@@ -727,7 +728,7 @@ async def test_create_with_extra_volumes_duplicate_6_subdir_issue_1595(compute_p
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc".format(os.path.join(vm.working_dir, "etc")),
],
"Privileged": True
@@ -771,7 +772,7 @@ async def test_create_with_extra_volumes(compute_project, manager):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")),
"{}:/gns3volumes/vol/1".format(os.path.join(vm.working_dir, "vol", "1")),
"{}:/gns3volumes/vol/2".format(os.path.join(vm.working_dir, "vol", "2")),
@@ -854,7 +855,7 @@ async def test_unpause(vm):
mock.assert_called_with("POST", "containers/e90e34656842/unpause")
async def test_start(vm, manager, free_console_port):
async def test_start(vm, manager, free_console_port, tmpdir):
assert vm.status != "started"
vm.adapters = 1
@@ -882,6 +883,31 @@ async def test_start(vm, manager, free_console_port):
assert vm.status == "started"
async def test_resources_installed(vm, manager, tmpdir):
assert vm.status != "started"
vm.adapters = 1
docker_resources_path = os.path.join(tmpdir, "docker", "resources")
os.makedirs(docker_resources_path, exist_ok=True)
manager.resources_path = MagicMock(return_value=docker_resources_path)
with asyncio_patch("gns3server.compute.docker.DockerVM._get_container_state", return_value="stopped"):
with asyncio_patch("gns3server.compute.docker.Docker.query"):
with asyncio_patch("gns3server.compute.docker.DockerVM._start_ubridge"):
with asyncio_patch("gns3server.compute.docker.DockerVM._get_namespace", return_value=42):
with asyncio_patch("gns3server.compute.docker.DockerVM._add_ubridge_connection"):
with asyncio_patch("gns3server.compute.docker.DockerVM._start_console"):
await vm.start()
assert vm.status == "started"
assert os.path.exists(os.path.join(docker_resources_path, "init.sh"))
assert os.path.exists(os.path.join(docker_resources_path, "run-cmd.sh"))
assert os.path.exists(os.path.join(docker_resources_path, "bin", "busybox"))
assert os.path.exists(os.path.join(docker_resources_path, "bin", "udhcpc"))
assert os.path.exists(os.path.join(docker_resources_path, "etc", "udhcpc", "default.script"))
async def test_start_namespace_failed(vm, manager, free_console_port):
assert vm.status != "started"
@@ -996,7 +1022,7 @@ async def test_update(vm):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network"))
],
"Privileged": True
@@ -1064,7 +1090,7 @@ async def test_update_running(vm):
{
"CapAdd": ["ALL"],
"Binds": [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network"))
],
"Privileged": True
@@ -1325,7 +1351,7 @@ async def test_mount_binds(vm):
dst = os.path.join(vm.working_dir, "test/experimental")
assert vm._mount_binds(image_infos) == [
"{}:/gns3:ro".format(get_resource("compute/docker/resources")),
"{}:/gns3:ro".format(Docker.resources_path()),
"{}:/gns3volumes/etc/network".format(os.path.join(vm.working_dir, "etc", "network")),
"{}:/gns3volumes{}".format(dst, "/test/experimental")
]
@@ -29,7 +29,7 @@ from tests.utils import asyncio_patch, AsyncioMagicMock
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = Dynamips.instance()
m.port_manager = port_manager
@@ -26,7 +26,7 @@ from gns3server.config import Config
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = Dynamips.instance()
m.port_manager = port_manager
+2 -2
View File
@@ -37,7 +37,7 @@ if not sys.platform.startswith("win"):
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = IOU.instance()
m.port_manager = port_manager
@@ -45,7 +45,7 @@ async def manager(loop, port_manager):
@pytest.fixture(scope="function")
async def vm(loop, compute_project, manager, tmpdir, fake_iou_bin, iourc_file):
async def vm(compute_project, manager, tmpdir, fake_iou_bin, iourc_file):
vm = IOUVM("test", str(uuid.uuid4()), compute_project, manager, application_id=1)
config = manager.config.get_section_config("IOU")
+1 -1
View File
@@ -66,7 +66,7 @@ def test_invalid_empty_file(tmpdir):
@pytest.mark.skipif(qemu_img() is None, reason="qemu-img is not available")
async def test_rebase(loop, tmpdir):
async def test_rebase(tmpdir):
shutil.copy("tests/resources/empty8G.qcow2", str(tmpdir / "empty16G.qcow2"))
shutil.copy("tests/resources/linked.qcow2", str(tmpdir / "linked.qcow2"))
+1
View File
@@ -195,6 +195,7 @@ async def test_create_image_with_not_supported_characters_by_filesystem(tmpdir,
# patching os.makedirs is necessary as it depends on already mocked os.path.exists
with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()) as process, \
patch("gns3server.compute.qemu.Qemu._init_config_disk", return_value=MagicMock()), \
patch("gns3server.compute.qemu.Qemu.get_images_directory", return_value=str(tmpdir)), \
patch("os.path.exists", side_effect=UnicodeEncodeError('error', u"", 1, 2, 'Emulated Unicode Err')),\
patch("os.makedirs"):
+1 -1
View File
@@ -34,7 +34,7 @@ from gns3server.compute.notification_manager import NotificationManager
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = Qemu.instance()
m.port_manager = port_manager
+1 -1
View File
@@ -29,7 +29,7 @@ from gns3server.compute.nios.nio_udp import NIOUDP
@pytest.fixture(scope="function")
async def manager(loop, port_manager):
async def manager(port_manager):
m = VPCS.instance()
m.port_manager = port_manager
+2 -2
View File
@@ -29,7 +29,7 @@ from gns3server.utils import force_unix_path
@pytest.fixture(scope="function")
async def vpcs(loop, port_manager):
async def vpcs(port_manager):
VPCS._instance = None
vpcs = VPCS.instance()
@@ -38,7 +38,7 @@ async def vpcs(loop, port_manager):
@pytest.fixture(scope="function")
async def qemu(loop, port_manager):
async def qemu(port_manager):
Qemu._instance = None
Qemu._init_config_disk = MagicMock() # do not create the config.img image
+1 -1
View File
@@ -33,7 +33,7 @@ from gns3server.config import Config
@pytest.fixture(scope="function")
async def manager(loop, port_manager):
async def manager(port_manager):
m = VPCS.instance()
m.port_manager = port_manager
+1 -1
View File
@@ -28,7 +28,7 @@ from gns3server.compute.notification_manager import NotificationManager
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = TraceNG.instance()
m.port_manager = port_manager
@@ -29,7 +29,7 @@ from tests.utils import asyncio_patch
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = VirtualBox.instance()
m.port_manager = port_manager
@@ -25,7 +25,7 @@ from gns3server.compute.virtualbox import VirtualBox
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = VirtualBox.instance()
m.port_manager = port_manager
+1 -1
View File
@@ -21,7 +21,7 @@ from gns3server.compute.vmware import VMware
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = VMware.instance()
m.port_manager = port_manager
+1 -1
View File
@@ -22,7 +22,7 @@ from gns3server.compute.vmware import VMware
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = VMware.instance()
m.port_manager = port_manager
+2 -2
View File
@@ -31,7 +31,7 @@ from gns3server.compute.notification_manager import NotificationManager
@pytest.fixture
async def manager(loop, port_manager):
async def manager(port_manager):
m = VPCS.instance()
m.port_manager = port_manager
@@ -39,7 +39,7 @@ async def manager(loop, port_manager):
@pytest.fixture(scope="function")
async def vm(loop, compute_project, manager, tmpdir, ubridge_path):
async def vm(compute_project, manager, tmpdir, ubridge_path):
vm = VPCSVM("test", "00010203-0405-0607-0809-0a0b0c0d0e0f", compute_project, manager)
vm._vpcs_version = parse_version("0.9")
+2 -2
View File
@@ -24,7 +24,7 @@ sys.original_platform = sys.platform
if sys.platform.startswith("win"):
@pytest.yield_fixture(scope="session")
@pytest.fixture(scope="session")
def loop(request):
"""Return an event loop and destroy it at the end of test"""
@@ -72,7 +72,7 @@ def compute(controller):
@pytest.fixture
async def project(loop, tmpdir, controller):
async def project(tmpdir, controller):
return await controller.add_project(name="Test")
@@ -55,7 +55,7 @@ async def test_start(gns3vm, controller):
assert gns3vm.password == "world"
async def test_start_invalid_vm(loop, gns3vm, controller):
async def test_start_invalid_vm(gns3vm, controller):
await controller.add_compute("r1",
name="R1",
@@ -63,7 +63,8 @@ async def test_start_invalid_vm(loop, gns3vm, controller):
host="r1.local",
port=8484,
user="hello",
password="world")
password="world",
connect=False)
gns3vm.vmname = "R2"
with pytest.raises(GNS3VMError):
@@ -25,7 +25,7 @@ from gns3server.controller.gns3vm.virtualbox_gns3_vm import VirtualBoxGNS3VM
@pytest.fixture
async def gns3vm(loop, controller):
async def gns3vm(controller):
vm = VirtualBoxGNS3VM(controller)
vm.vmname = "GNS3 VM"
@@ -21,7 +21,7 @@ from gns3server.controller.gns3vm.vmware_gns3_vm import VMwareGNS3VM
@pytest.fixture
async def gns3vm(loop, controller):
async def gns3vm(controller):
vm = VMwareGNS3VM(controller)
vm.vmname = "GNS3 VM"
+3 -1
View File
@@ -33,7 +33,7 @@ from gns3server.utils.asyncio import aiozipstream
@pytest.fixture
async def project(loop, controller):
async def project(controller):
p = Project(controller=controller, name="test")
p.dump = MagicMock()
@@ -111,6 +111,7 @@ async def test_export(tmpdir, project):
f.write("HELLO")
with open(os.path.join(path, "vm-1", "dynamips", "test_log.txt"), 'w+') as f:
f.write("LOG")
os.makedirs(os.path.join(path, "vm-1", "dynamips", "empty-dir"))
os.makedirs(os.path.join(path, "project-files", "snapshots"))
with open(os.path.join(path, "project-files", "snapshots", "test"), 'w+') as f:
f.write("WORLD")
@@ -127,6 +128,7 @@ async def test_export(tmpdir, project):
assert 'test.gns3' not in myzip.namelist()
assert 'project.gns3' in myzip.namelist()
assert 'vm-1/dynamips/empty-dir/' in myzip.namelist()
assert 'project-files/snapshots/test' not in myzip.namelist()
assert 'vm-1/dynamips/test_log.txt' not in myzip.namelist()
+3 -3
View File
@@ -47,7 +47,7 @@ def dummy_gns3vm(controller, dummy_engine):
return vm
async def test_list(loop, controller):
async def test_list(controller):
vm = GNS3VM(controller)
with asyncio_patch("gns3server.controller.gns3vm.vmware_gns3_vm.VMwareGNS3VM.list", return_value=[{"vmname": "test", "vmx_path": "test"}]):
@@ -60,14 +60,14 @@ async def test_list(loop, controller):
await vm.list("hyperv")
async def test_json(loop, controller):
async def test_json(controller):
vm = GNS3VM(controller)
assert vm.__json__() == vm._settings
@pytest.mark.skipif(sys.platform.startswith("win"), reason="Not working well on Windows")
async def test_update_settings(loop, controller):
async def test_update_settings(controller):
vm = GNS3VM(controller)
vm.settings = {
+6 -6
View File
@@ -166,7 +166,7 @@ async def test_import_with_images(tmpdir, controller):
assert os.path.exists(path), path
async def test_import_iou_linux_no_vm(loop, linux_platform, tmpdir, controller):
async def test_import_iou_linux_no_vm(linux_platform, tmpdir, controller):
"""
On non linux host IOU should be local if we don't have a GNS3 VM
"""
@@ -210,7 +210,7 @@ async def test_import_iou_linux_no_vm(loop, linux_platform, tmpdir, controller):
assert topo["topology"]["nodes"][0]["compute_id"] == "local"
async def test_import_iou_linux_with_vm(loop, linux_platform, tmpdir, controller):
async def test_import_iou_linux_with_vm(linux_platform, tmpdir, controller):
"""
On non linux host IOU should be vm if we have a GNS3 VM configured
"""
@@ -255,7 +255,7 @@ async def test_import_iou_linux_with_vm(loop, linux_platform, tmpdir, controller
assert topo["topology"]["nodes"][0]["compute_id"] == "vm"
async def test_import_nat_non_linux(loop, windows_platform, tmpdir, controller):
async def test_import_nat_non_linux(windows_platform, tmpdir, controller):
"""
On non linux host NAT should be moved to the GNS3 VM
"""
@@ -300,7 +300,7 @@ async def test_import_nat_non_linux(loop, windows_platform, tmpdir, controller):
assert topo["topology"]["nodes"][0]["compute_id"] == "vm"
async def test_import_iou_non_linux(loop, windows_platform, tmpdir, controller):
async def test_import_iou_non_linux(windows_platform, tmpdir, controller):
"""
On non linux host IOU should be moved to the GNS3 VM
"""
@@ -356,7 +356,7 @@ async def test_import_iou_non_linux(loop, windows_platform, tmpdir, controller):
mock.assert_called_with(controller._computes["vm"], project_id, project.path, os.path.join('project-files', 'iou', topo["topology"]["nodes"][0]['node_id']))
async def test_import_node_id(loop, linux_platform, tmpdir, controller):
async def test_import_node_id(linux_platform, tmpdir, controller):
"""
When importing a node, node_id should change
"""
@@ -449,7 +449,7 @@ async def test_import_node_id(loop, linux_platform, tmpdir, controller):
assert os.path.exists(os.path.join(project.path, "project-files", "iou", topo["topology"]["nodes"][0]["node_id"], "startup.cfg"))
async def test_import_keep_compute_id(loop, windows_platform, tmpdir, controller):
async def test_import_keep_compute_id(windows_platform, tmpdir, controller):
"""
On linux host IOU should be moved to the GNS3 VM
"""
+2 -2
View File
@@ -144,7 +144,7 @@ def fake_image(tmpdir):
path = str(tmpdir / "7200.bin")
with open(path, "wb+") as f:
f.write(b'\x7fELF\x01\x02\x01')
f.write(b'\x7fELF\x01\x01\x01')
os.chmod(path, stat.S_IREAD)
return path
@@ -168,7 +168,7 @@ async def test_images(compute_api, tmpdir, fake_image, fake_file):
assert response.json == [{"filename": "7200.bin",
"path": "7200.bin",
"filesize": 7,
"md5sum": "b0d5aa897d937aced5a6b1046e8f7e2e"
"md5sum": "e573e8f5c93c6c00783f20c7a170aa6c"
}]
Loaded 100 of 105 files, more files were not shown because too many files have changed in this diff. Show more