Compare commits

..

132 Commits

Author SHA1 Message Date
975ca254fd Release v3.0.5
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-05-14 19:11:44 +02:00
89cf5ea8e7 Bundle web-ui v3.0.5 2025-05-14 19:06:42 +02:00
bfbe2bf885 Sync appliances 2025-05-14 18:55:51 +02:00
5c036dfd90 Upgrade uvicorn and pydantic 2025-05-14 18:54:55 +02:00
2fbfe5385a Use Ubuntu 24.04 LTS in Dockerfile. Ref #2523 2025-05-14 18:30:43 +02:00
2cdaa1cd06 Fix tests 2025-05-14 17:19:18 +02:00
f2080979a1 Fix tests 2025-05-14 16:56:46 +02:00
df576f0668 Merge remote-tracking branch 'origin/2.2' into 3.0
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
# Conflicts:
#	gns3server/compute/qemu/qemu_vm.py
#	gns3server/schemas/template.py
2025-05-14 16:42:59 +02:00
c2c89b0ff3 Add missing 'nat' template type in schema. Fixes #2529
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-05-13 20:52:44 +02:00
ef3570dc95 Merge branch 'master' into 2.2 2025-05-13 20:48:59 +02:00
2bf3eff143 Remove debug message in tests
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-05-13 20:47:38 +02:00
add8c4e8a2 Merge pull request #2526 from emmanuel-ferdman/master
Some checks failed
CodeQL / Analyze (python) (push) Has been cancelled
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
Resolve deprecation warnings of regex library
2025-04-30 14:14:37 +07:00
53eac771d6 Merge pull request #2528 from tobiasstein/fix-pci-bridges
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
Fix adding pci_bridges to qemu vms
2025-04-30 14:09:22 +07:00
2b96e54629 Fix tests and require Qemu version >= 2.4 2025-04-30 13:38:52 +07:00
cdf819f820 Fix adding pci_bridges to qemu vms
* Offset pci_device_id for network devices by 32 (formerly 4)
  to reserve first 32 IDs for non-netdev devices
  * This implies a new pci_bridge for the netdevs and
    the pci_device_ids starting at 0 (using modulo)
  * Fixes a bug in the creation of the qemu command
    when the number of qemu pcie devices (storage_controller, disks, …)
    was greater than 4 and the number of network devices
    saturated the 32 pcie ids of the root bridge
    causing qemu not to start.
2025-04-28 21:07:52 +02:00
c05e6f4de4 Resolve deprecation warnings of regex library
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-04-26 00:15:16 -07:00
d9dcc2738d Merge remote-tracking branch 'origin/2.2' into 3.0
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
# Conflicts:
#	CHANGELOG
#	Dockerfile
#	README.md
#	gns3server/appliances/infix.gns3a
#	gns3server/compute/docker/docker_vm.py
#	gns3server/compute/qemu/qemu_vm.py
#	gns3server/controller/gns3vm/virtualbox_gns3_vm.py
#	gns3server/crash_report.py
#	gns3server/static/web-ui/index.html
#	gns3server/static/web-ui/main.9bcf455e62558dedfd48.js
#	gns3server/version.py
2025-04-21 20:13:31 +07:00
e32576d5ed Development on 2.2.55.dev1
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-04-21 19:35:13 +07:00
bd3657d8f3 Merge pull request #2524 from GNS3/release/v2.2.54
Some checks failed
CodeQL / Analyze (python) (push) Has been cancelled
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
Release v2.2.54
2025-04-21 19:30:57 +07:00
4418d6bb2b Release v2.2.54 2025-04-21 17:15:22 +07:00
dbcafdd314 Merge branch 'master' into 2.2 2025-04-21 17:08:59 +07:00
4dd1803a70 Bundle web-ui v2.2.54 2025-04-21 16:40:59 +07:00
99272fb7e0 Sync appliances
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-04-21 16:30:32 +07:00
a24d2e25ed Add new method to find the IP address of a VBox GNS3 VM + allow NAT Network 2025-04-21 16:29:32 +07:00
a5a663bc99 Remove OVMF_CODE_4M.secboot.fd and associated code
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-04-18 17:31:31 +07:00
2b7eb91694 Add edk2-stable202502 UEFI firmwares and try to first use firmwares from the ovmf package if installed. Fixes #2494 2025-04-18 17:13:29 +07:00
684770a220 Prettify TPM error message 2025-04-18 15:25:50 +07:00
f6546bf1de Fix bug in qemu_stdout message 2025-04-18 15:19:06 +07:00
355b97398b Reduce matching error for TPM result 2025-04-18 15:13:41 +07:00
6242a0be80 Try to detect swtpm and AppArmor issue. Ref https://github.com/GNS3/gns3-gui/issues/3725
Some checks are pending
testing / build (ubuntu-latest, 3.10) (push) Waiting to run
testing / build (ubuntu-latest, 3.11) (push) Waiting to run
testing / build (ubuntu-latest, 3.12) (push) Waiting to run
testing / build (ubuntu-latest, 3.13) (push) Waiting to run
testing / build (ubuntu-latest, 3.8) (push) Waiting to run
testing / build (ubuntu-latest, 3.9) (push) Waiting to run
2025-04-18 15:06:49 +07:00
18413c923c Development on 2.2.54.dev1 2025-04-18 15:05:34 +07:00
ffd628902c Fix Docker logs decoding. Ref #2522 2025-04-18 13:58:56 +07:00
ca34053125 Add delay after starting a Docker container and adding connections in uBridge. Ref #2522 2025-04-18 13:50:20 +07:00
d06f93e772 Fix TypeError when reading Docker container logs. Ref #2522 2025-04-18 13:47:29 +07:00
90cf73e434 Fix tests
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-04-18 13:38:01 +07:00
aa8ccf4f82 Allow an image to be uploaded to the controller again even if it is already in the database
Some checks are pending
testing / build (ubuntu-latest, 3.10) (push) Waiting to run
testing / build (ubuntu-latest, 3.11) (push) Waiting to run
testing / build (ubuntu-latest, 3.12) (push) Waiting to run
testing / build (ubuntu-latest, 3.13) (push) Waiting to run
testing / build (ubuntu-latest, 3.9) (push) Waiting to run
2025-04-17 19:07:22 +07:00
0826b9c259 Fix controller not reporting an error if invalid options are passed to Qemu command line. Fixes #2517 2025-04-17 19:00:52 +07:00
0e8d969cd2 Merge branch '2.2' into 3.0
Some checks are pending
testing / build (ubuntu-latest, 3.10) (push) Waiting to run
testing / build (ubuntu-latest, 3.11) (push) Waiting to run
testing / build (ubuntu-latest, 3.12) (push) Waiting to run
testing / build (ubuntu-latest, 3.13) (push) Waiting to run
testing / build (ubuntu-latest, 3.9) (push) Waiting to run
# Conflicts:
#	gns3server/compute/docker/__init__.py
#	gns3server/compute/docker/docker_vm.py
#	requirements.txt
2025-04-16 17:53:44 +07:00
0e89ff56a8 Replace "Docker hub" by "Docker repository" because it is possible to use different repositories
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-04-16 17:42:40 +07:00
ffb5bc7ffd Upgrade aiohttp to v3.11.16 2025-04-16 17:09:09 +07:00
f00f21c4bd Upgrade dependencies 2025-04-16 17:08:08 +07:00
773076c40e Fix unable to add NAT cloud after configuring “allowed_interfaces” in configuration file. Fixes #2508 2025-04-16 16:04:57 +07:00
5019167098 Fix interface information API endpoint for Cloud/NAT devices 2025-04-16 15:26:56 +07:00
f525916195 Merge remote-tracking branch 'origin/3.0' into 3.0 2025-04-16 14:39:59 +07:00
2ac3e0b39f Upgrade dependencies 2025-04-16 14:39:36 +07:00
e532c83538 Merge pull request #2518 from markparonyan/get-link-ifaces
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
Get iface/udp tunnel from links with Cloud,Nat
2025-03-23 20:10:23 +07:00
f21887dbab tests(get_iface): add unittests 2025-03-23 14:28:58 +00:00
bab173ee52 feat(get_iface): add type information in response 2025-03-23 14:28:27 +00:00
ea2856289a feat: add endpoint to get iface/udp tunnel from links with Cloud,Nat 2025-03-23 13:46:27 +00:00
8e6f5d2b57 Merge branch '2.2' into 3.0
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
# Conflicts:
#	requirements.txt
2025-03-18 21:34:43 +07:00
2e9127449c Upgrade Jinja2 to v3.1.6. Fixes #2515
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-03-18 21:33:31 +07:00
ee9f974362 Fix packet capture for links connected to a cloud node. Fixes #2513
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-03-16 21:12:33 +07:00
c9231d7b83 Upgrade dependencies 2025-03-16 20:26:26 +07:00
483719568f Merge pull request #2511 from NAKNAO-nnct/feature/update-dockerfile-ubuntu-2404
Some checks failed
CodeQL / Analyze (python) (push) Has been cancelled
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
Update Dockerfile base image to Ubuntu 24.04
2025-03-08 20:26:12 +07:00
018598a300 refactor 2025-03-08 20:22:06 +09:00
e262a46cfd rm space 2025-03-08 20:19:37 +09:00
00bf1c028b Update README to Run Docker Compose 2025-03-08 14:11:42 +09:00
21ebb934f4 add compose.yaml 2025-03-08 14:08:42 +09:00
2ecd2cfe3b update Ubuntu24.04 2025-03-08 13:59:05 +09:00
ce4b3091dd Merge pull request #2507 from GNS3/fix-remote-install-script
Some checks failed
CodeQL / Analyze (python) (push) Has been cancelled
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.8) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
Improvements for remote-install.sh
2025-03-03 05:55:42 +07:00
f722816849 Improvements for remote-install.sh
* Use apt-add-repository to install repository
* Add option to not upgrade the system
* Check if Python version is >= 3.9 when installing from ppa-v3 repository
2025-03-02 22:27:53 +07:00
4cb38b23eb Merge pull request #2506 from FedericoTorres233/patch-1
Some checks are pending
CodeQL / Analyze (python) (push) Waiting to run
testing / build (ubuntu-latest, 3.10) (push) Waiting to run
testing / build (ubuntu-latest, 3.11) (push) Waiting to run
testing / build (ubuntu-latest, 3.12) (push) Waiting to run
testing / build (ubuntu-latest, 3.13) (push) Waiting to run
testing / build (ubuntu-latest, 3.8) (push) Waiting to run
testing / build (ubuntu-latest, 3.9) (push) Waiting to run
Check if remote-install.sh is being run as root
2025-03-02 16:14:33 +08:00
f3e46227d8 fix: check if remote-install.sh is being run as root 2025-03-01 16:56:21 -03:00
3ba109c651 Development on 3.0.5.dev1
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-02-25 22:39:38 +08:00
3a1ad8c08b Release v3.0.4
Some checks are pending
testing / build (ubuntu-latest, 3.10) (push) Waiting to run
testing / build (ubuntu-latest, 3.11) (push) Waiting to run
testing / build (ubuntu-latest, 3.12) (push) Waiting to run
testing / build (ubuntu-latest, 3.13) (push) Waiting to run
testing / build (ubuntu-latest, 3.9) (push) Waiting to run
2025-02-25 18:24:26 +08:00
edc855dcb5 Sync appliances 2025-02-25 17:12:28 +08:00
59c2eeb536 Upgrade aiohttp to v3.11.13 2025-02-25 19:01:00 +10:00
a7f2b1fddc Require minimum 8 characters for passwords
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-02-23 12:05:19 +10:00
1f4071af93 Bundle web-ui v3.0.4 2025-02-23 12:04:22 +10:00
dbdb4a53c7 Sync appliances
Some checks are pending
testing / build (ubuntu-latest, 3.10) (push) Waiting to run
testing / build (ubuntu-latest, 3.11) (push) Waiting to run
testing / build (ubuntu-latest, 3.12) (push) Waiting to run
testing / build (ubuntu-latest, 3.13) (push) Waiting to run
testing / build (ubuntu-latest, 3.9) (push) Waiting to run
2025-02-22 21:18:41 +10:00
2659ab2c35 Upgrade dependencies 2025-02-22 21:10:33 +10:00
0c3f6712b4 Fix auto idle-pc for IOS templates 2025-02-22 20:14:13 +10:00
9122cab6c1 Update schemas to add constraints for values like ram, nvram etc.
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-02-04 10:39:55 +10:00
2516b1952c Install custom symbols. Fixes #2492
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-01-29 18:32:04 +10:00
f2bb785037 Remove txt files in custom symbols 2025-01-29 18:25:06 +10:00
fc938a069b Sync appliances 2025-01-29 18:24:04 +10:00
4fd41991db Fix VMware add ubridge connection. Fixes #2490
Some checks failed
testing / build (ubuntu-latest, 3.10) (push) Has been cancelled
testing / build (ubuntu-latest, 3.11) (push) Has been cancelled
testing / build (ubuntu-latest, 3.12) (push) Has been cancelled
testing / build (ubuntu-latest, 3.13) (push) Has been cancelled
testing / build (ubuntu-latest, 3.9) (push) Has been cancelled
2025-01-27 12:12:43 +10:00
cfc4bb371a Upgrade FastAPI to v0.115.7 2025-01-23 13:32:11 +10:00
ce59e84e13 Development on 3.0.4 2025-01-23 13:31:32 +10:00
b5e2bb1561 Release v3.0.3 2025-01-22 19:06:42 +10:00
3003ed1465 Bundle web-ui v3.0.3 2025-01-22 18:57:21 +10:00
09774a3a56 Merge branch '2.2' into 3.0
# Conflicts:
#	CHANGELOG
#	gns3server/compute/virtualbox/virtualbox_vm.py
#	gns3server/controller/compute.py
#	gns3server/crash_report.py
#	gns3server/static/web-ui/index.html
#	gns3server/static/web-ui/main.c83939cdfe3af0ec27df.js
#	gns3server/version.py
#	gns3server/web/web_server.py
#	requirements.txt
#	tests/controller/test_compute.py
2025-01-22 18:37:17 +10:00
185cd01e19 Merge pull request #2488 from GNS3/release/v2.2.53
Some checks failed
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Release v2.2.53
2025-01-21 09:47:43 +07:00
369fcaa512 Release v2.2.53 2025-01-21 11:52:11 +10:00
7b7d3d676f Bundle web-ui v2.2.53 2025-01-21 11:43:11 +10:00
d1186b2acc Sync appliances 2025-01-21 11:29:28 +10:00
bd58196817 Add more information when patching .vbox file. Ref https://github.com/GNS3/gns3-gui/issues/3542 2025-01-20 13:22:22 +10:00
b3a822df8f Merge pull request #2487 from GNS3/upgrade-tests
Refactor tests and upgrade dev package requirements
2025-01-17 16:38:32 +07:00
ba4e0c945d Refactor tests and upgrade dev package requirements 2025-01-17 19:12:44 +10:00
f6725a37dd Merge pull request #2486 from GNS3/feature/args-parsing
Refactor command line arguments parsing
2025-01-17 08:26:05 +07:00
8e96c4c2e8 Refactor command line arguments parsing 2025-01-17 07:57:42 +07:00
035a104957 Fix capture on IOU/IOL links. Fixes #2477 2025-01-11 18:46:55 +07:00
54c0b383cb Use Python 3.9 to publish API documentation 2025-01-08 00:03:18 +07:00
7c0384a8d4 Development on 3.0.3.dev1 2025-01-07 11:12:02 +07:00
469bd692a0 Release v3.0.2 2025-01-03 21:44:00 +07:00
d34c3a0ac7 Bundle web-ui v3.0.2 2025-01-03 21:40:11 +07:00
fb3409c1a1 Merge pull request #2474 from GNS3/install-all-images
Support to create templates based on image checksums
2025-01-03 21:38:59 +07:00
08693871ae Support to create templates based on image checksums. 2025-01-03 21:35:14 +07:00
f5ea20347e Merge pull request #2472 from GNS3/builtin-disks-improvements
Improvements for built-in disks
2025-01-03 20:01:06 +07:00
ac4c5f5985 Improve tests for pruning images 2025-01-03 19:56:41 +07:00
e17a79e261 Fix tests 2025-01-02 23:17:55 +07:00
4758431c76 Improvements for built-in disks
* Checksum is updated in the database for updated disks.
* It is not possible to prune them.
2025-01-02 23:10:51 +07:00
b472f6dbf8 Merge pull request #2471 from GNS3/watchdog-migration
Watchdog migration
2024-12-31 17:30:24 +07:00
b39c7541fb Add timeout for waiting watchdog observer thread to complete 2024-12-31 17:24:19 +07:00
82779d816f Use watchdog instead of watchfiles to monitor for new images on the file system 2024-12-31 17:19:32 +07:00
ccc8974d92 Fix tests 2024-12-30 16:14:33 +07:00
0090ff3722 Increase timeout to run compute HTTP queries. Fixes #2461 2024-12-30 16:10:04 +07:00
96c6805ace Merge pull request #2469 from GNS3/joserfc-migration
Replace python-jose library by joserfc
2024-12-30 16:02:17 +07:00
efb84b3063 Add back ValidationError 2024-12-30 15:59:01 +07:00
0be45c7da2 Merge branch '3.0' into joserfc-migration 2024-12-30 15:52:54 +07:00
a4222b4d03 Merge pull request #2470 from GNS3/drop-python3.8
Drop Python 3.8
2024-12-30 15:51:23 +07:00
5f75fc7573 Add greenlet dependency 2024-12-30 15:45:17 +07:00
5269d4386c Drop Python 3.8 2024-12-30 15:36:40 +07:00
9d6cea665a Replace python-jose library by joserfc 2024-12-30 15:25:24 +07:00
2c727c6bd2 Use 'allow_methods="*"' in aiohttp_cors.ResourceOptions(). Fixes #2459 2024-12-30 11:06:19 +07:00
13b0caef4f Upgrade dependencies 2024-12-30 10:49:35 +07:00
8b57fbaa0a Downgrade uvicorn to v0.33.0 2024-12-28 18:23:46 +07:00
d4a9a21af9 Upgrade dependencies 2024-12-28 18:21:18 +07:00
8a900588ca Merge branch '2.2' into 3.0 2024-12-28 18:04:25 +07:00
8ed1fa6ad5 Merge branch 'master' into 2.2 2024-12-28 18:03:39 +07:00
a689a55937 Merge pull request #2467 from GNS3/update-remote-install-script
Some checks failed
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
Use iptables to block IOU home call
2024-12-28 18:01:25 +07:00
1c0b0ae423 Remove blocking IOU phone home call. 2024-12-28 18:00:22 +07:00
ad7813d04b Use iptables to block IOU home call 2024-12-28 17:50:59 +07:00
685bf88005 Merge pull request #2457 from GNS3/update-remote-install-script
Some checks failed
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
Update remote install script
2024-12-22 22:07:33 +07:00
a1090a3da8 Fallback when cannot use deb822 format 2024-12-22 21:52:18 +07:00
c8e5b41f39 Add compatibility for earlier Ubuntu versions 2024-12-22 21:29:05 +07:00
94b5d3e636 Update remote-install.sh to support a custom repository and the deb822 source format 2024-12-22 20:26:24 +07:00
e94b55e3bf Merge pull request #2452 from GNS3/release/v2.2.52
release/v2.2.52
2024-12-02 11:36:09 +10:00
1a6a729736 Merge pull request #2442 from Xatrekak/master
Fixed issues with installing on Ubuntu 24.04 via remote-install.sh
2024-11-08 10:02:43 +10:00
77c356c82c Update remote-install.sh
Fixes for Ubuntu 24.04
2024-11-07 18:15:52 -05:00
b4819b5500 Update remote-install.sh
Fixing changes for Ubuntu 24.04
2024-11-07 17:44:42 -05:00
11a9451098 Merge pull request #2440 from GNS3/release/v2.2.51
release/v2.2.51
2024-11-07 23:13:03 +10:00
169 changed files with 20972 additions and 5786 deletions

View File

@ -18,7 +18,7 @@ jobs:
ref: "gh-pages"
- uses: actions/setup-python@v5
with:
python-version: 3.8
python-version: 3.9
- name: Merge changes from 3.0 branch
run: |
git config user.name github-actions

View File

@ -18,7 +18,7 @@ jobs:
strategy:
matrix:
os: ["ubuntu-latest"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
#include:
# only test with Python 3.10 on Windows
# - os: windows-latest

View File

@ -1,5 +1,83 @@
# Change Log
## 3.0.5 14/05/2025
* Bundle web-ui v3.0.5
* Sync appliances
* Use Ubuntu 24.04 LTS in Dockerfile. Ref #2523
* Fix tests and require Qemu version >= 2.4
* Fix adding pci_bridges to qemu vms
* Resolve deprecation warnings of regex library
* Remove OVMF_CODE_4M.secboot.fd and associated code
* Add edk2-stable202502 UEFI firmwares and try to first use firmwares from the ovmf package if installed. Fixes #2494
* Prettify TPM error message
* Fix bug in qemu_stdout message
* Try to detect swtpm and AppArmor issue. Ref https://github.com/GNS3/gns3-gui/issues/3725
* Fix Docker logs decoding. Ref #2522
* Add delay after starting a Docker container and adding connections in uBridge. Ref #2522
* Fix TypeError when reading Docker container logs. Ref #2522
* Allow an image to be uploaded to the controller again even if it is already in the database
* Fix controller not reporting an error if invalid options are passed to Qemu command line. Fixes #2517
* Replace "Docker hub" by "Docker repository" because it is possible to use different repositories
* Fix unable to add NAT cloud after configuring “allowed_interfaces” in configuration file. Fixes #2508
* Fix interface information API endpoint for Cloud/NAT devices
* Upgrade Jinja2 to v3.1.6. Fixes #2515
* Fix packet capture for links connected to a cloud node. Fixes #2513
* fix: check if remote-install.sh is being run as root
## 2.2.54 21/04/2025
* Bundle web-ui v2.2.54
* Add new method to find the IP address of a VBox GNS3 VM + allow NAT Network
* Add edk2-stable202502 UEFI firmwares and try to first use firmwares from the ovmf package if installed. Fixes #2494
* Try to detect swtpm and AppArmor issue. Ref https://github.com/GNS3/gns3-gui/issues/3725
* Fix Docker logs decoding. Ref #2522
* Add delay after starting a Docker container and adding connections in uBridge. Ref #2522
* Fix TypeError when reading Docker container logs. Ref #2522
* Replace "Docker hub" by "Docker repository" because it is possible to use different repositories
* Upgrade dependencies
* Improvements for remote-install.sh
## 3.0.4 25/02/2025
* Require minimum 8 characters for passwords
* Bundle web-ui v3.0.4
* Upgrade dependencies
* Fix auto idle-pc for IOS templates
* Update schemas to add constraints for values like ram, nvram etc.
* Install custom symbols. Fixes #2492
* Fix VMware add ubridge connection. Fixes #2490
## 3.0.3 22/01/2025
* Bundle web-ui v3.0.3
* Refactor command line arguments parsing
* Fix capture on IOU/IOL links. Fixes #2477
* Use Python 3.9 to publish API documentation
* Upgrade dependencies
## 2.2.53 21/01/2025
* Bundle web-ui v2.2.53
* Add more information when patching .vbox file. Ref https://github.com/GNS3/gns3-gui/issues/3542
* Increase timeout to run compute HTTP queries. Fixes #2461
* Use 'allow_methods="*"' in aiohttp_cors.ResourceOptions(). Fixes #2459
* Upgrade dependencies
* Update remote-install.sh to support a custom repository and the deb822 source format
* Fix: do not use the iourc file if IOU licence check is not enabled
## 3.0.2 03/01/2025
* Bundle web-ui v3.0.2
* Support to create templates based on image checksums.
* Improvements for installing built-in disks.
* Use watchdog instead of watchfiles to monitor for new images on the file system
* Drop Python 3.8
* Replace python-jose library by joserfc
* Upgrade dependencies
* Remove blocking IOU phone home call.
## 3.0.1 27/12/2024
* Bundle web-ui v3.0.1
@ -20,7 +98,6 @@
## 2.2.52 02/12/2024
* Bundle web-ui v2.2.52
* Sync appliances
* Remove restrictions based on file extension when listing images and fix ELF header checks
* Fix use project name instead of ID for fast duplication when running local server. Fixes #2446
* Overwrite user resources when the originals have changed.

View File

@ -1,4 +1,4 @@
FROM ubuntu:focal
FROM ubuntu:noble
WORKDIR /gns3server
@ -34,4 +34,4 @@ COPY . /gns3server
RUN mkdir -p ~/.config/GNS3/3.0/
RUN cp scripts/gns3_server.conf ~/.config/GNS3/3.0/
RUN python3 -m pip install .
RUN python3 -m pip install --break-system-packages .

View File

@ -99,6 +99,12 @@ Alternatively, you can run the GNS3 server in a container
bash scripts/docker_dev_server.sh
```
#### use Docker Compose
``` {.bash}
docker compose up -d
```
### Running tests
First, install the development dependencies:

7
compose.yaml Normal file
View File

@ -0,0 +1,7 @@
services:
gen3-server:
build:
context: .
dockerfile: Dockerfile
ports:
- "8001:3080"

View File

@ -1,7 +1,7 @@
pytest==8.3.3
pytest==8.3.4
flake8==7.1.1
pytest-timeout==2.3.1
pytest-asyncio==0.21.2
pytest-asyncio==0.25.2
requests==2.32.3
httpx==0.27.2 # version 0.24.1 is required by httpx_ws
httpx_ws==0.6.2
httpx==0.28.1
httpx_ws==0.7.1

View File

@ -232,7 +232,7 @@ async def stop_cloud_capture(
await node.stop_capture(port_number)
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/pcap")
@router.get("/{node_id}/adapters/{adapter_number}/ports/{port_number}/capture/stream")
async def stream_pcap_file(
*,
adapter_number: int = Path(..., ge=0, le=0),

View File

@ -284,7 +284,7 @@ async def start_iou_node_capture(
"""
pcap_file_path = os.path.join(node.project.capture_working_directory(), node_capture_data.capture_file_name)
await node.start_capture(adapter_number, pcap_file_path)
await node.start_capture(adapter_number, port_number, pcap_file_path)
return {"pcap_file_path": str(pcap_file_path)}

View File

@ -188,7 +188,7 @@ async def vmware_vms(compute_id: Union[str, UUID]) -> List[schemas.ComputeVMware
@router.post("/{compute_id}/dynamips/auto_idlepc")
async def dynamips_autoidlepc(compute_id: Union[str, UUID], auto_idle_pc: schemas.AutoIdlePC) -> str:
async def dynamips_autoidlepc(compute_id: Union[str, UUID], auto_idle_pc: schemas.AutoIdlePC):
"""
Find a suitable Idle-PC value for a given IOS image. This may take a few minutes.
"""

View File

@ -27,11 +27,11 @@ from fastapi.encoders import jsonable_encoder
from starlette.requests import ClientDisconnect
from sqlalchemy.orm.exc import MultipleResultsFound
from typing import List, Optional
from gns3server import schemas
from gns3server import schemas
from gns3server.config import Config
from gns3server.compute.qemu import Qemu
from gns3server.utils.images import InvalidImageError, write_image, read_image_info, default_images_directory
from gns3server.utils.images import InvalidImageError, write_image, read_image_info, default_images_directory, get_builtin_disks
from gns3server.db.repositories.images import ImagesRepository
from gns3server.db.repositories.templates import TemplatesRepository
from gns3server.db.repositories.rbac import RbacRepository
@ -51,7 +51,6 @@ log = logging.getLogger(__name__)
router = APIRouter()
@router.post(
"/qemu/{image_path:path}",
response_model=schemas.Image,
@ -149,11 +148,6 @@ async def upload_image(
if os.path.commonprefix([base_images_directory, full_path]) != base_images_directory:
raise ControllerForbiddenError(f"Cannot write image, '{image_path}' is forbidden")
image = await images_repo.get_image(image_path)
if image:
log.warning(f"Image '{image_path}' already exists")
return image
try:
allow_raw_image = Config.instance().settings.Server.allow_raw_images
image = await write_image(image_path, full_path, request.stream(), images_repo, allow_raw_image=allow_raw_image)
@ -175,6 +169,61 @@ async def upload_image(
return image
@router.delete(
"/prune",
status_code=status.HTTP_204_NO_CONTENT,
dependencies=[Depends(has_privilege("Image.Allocate"))]
)
async def prune_images(
images_repo: ImagesRepository = Depends(get_repository(ImagesRepository)),
) -> None:
"""
Prune images not attached to any template.
Required privilege: Image.Allocate
"""
skip_images = get_builtin_disks()
await images_repo.prune_images(skip_images)
@router.post(
"/install",
status_code=status.HTTP_204_NO_CONTENT,
dependencies=[Depends(has_privilege("Image.Allocate"))]
)
async def install_images(
images_repo: ImagesRepository = Depends(get_repository(ImagesRepository)),
templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository))
) -> None:
"""
Attempt to automatically create templates based on image checksums.
Required privilege: Image.Allocate
"""
skip_images = get_builtin_disks()
images = await images_repo.get_images()
for image in images:
if skip_images and image.filename in skip_images:
log.debug(f"Skipping image '{image.path}' for image installation")
continue
templates = await images_repo.get_image_templates(image.image_id)
if templates:
# the image is already used by a template
log.warning(f"Image '{image.path}' is used by one or more templates")
continue
await Controller.instance().appliance_manager.install_appliances_from_image(
image.path,
image.checksum,
images_repo,
templates_repo,
None,
None,
os.path.dirname(image.path)
)
@router.get(
"/{image_path:path}",
response_model=schemas.Image,
@ -218,7 +267,7 @@ async def delete_image(
image = await images_repo.get_image(image_path)
except MultipleResultsFound:
raise ControllerBadRequestError(f"Image '{image_path}' matches multiple images. "
f"Please include the relative path of the image")
f"Please include the absolute path of the image")
if not image:
raise ControllerNotFoundError(f"Image '{image_path}' not found")
@ -236,20 +285,3 @@ async def delete_image(
success = await images_repo.delete_image(image_path)
if not success:
raise ControllerError(f"Image '{image_path}' could not be deleted")
@router.post(
"/prune",
status_code=status.HTTP_204_NO_CONTENT,
dependencies=[Depends(has_privilege("Image.Allocate"))]
)
async def prune_images(
images_repo: ImagesRepository = Depends(get_repository(ImagesRepository)),
) -> None:
"""
Prune images not attached to any template.
Required privilege: Image.Allocate
"""
await images_repo.prune_images()

View File

@ -24,7 +24,7 @@ import aiohttp
from fastapi import APIRouter, Depends, Request, status
from fastapi.responses import StreamingResponse
from fastapi.encoders import jsonable_encoder
from typing import List
from typing import List, Union
from uuid import UUID
from gns3server.controller import Controller
@ -285,3 +285,54 @@ async def stream_pcap(request: Request, link: Link = Depends(dep_link)) -> Strea
raise ControllerError(f"Client error received when receiving pcap stream from compute: {e}")
return StreamingResponse(compute_pcap_stream(), media_type="application/vnd.tcpdump.pcap")
@router.get(
"/{link_id}/iface",
response_model=Union[schemas.UDPPortInfo, schemas.EthernetPortInfo],
dependencies=[Depends(has_privilege("Link.Audit"))]
)
async def get_iface(link: Link = Depends(dep_link)) -> Union[schemas.UDPPortInfo, schemas.EthernetPortInfo]:
"""
Return iface info for links to Cloud or NAT devices.
Required privilege: Link.Audit
"""
ifaces_info = {}
for node_data in link._nodes:
node = node_data["node"]
if node.node_type not in ("cloud", "nat"):
continue
port_number = node_data["port_number"]
compute = node.compute
project_id = link.project.id
response = await compute.get(f"/projects/{project_id}/{node.node_type}/nodes/{node.id}")
if "ports_mapping" not in response.json:
continue
ports_mapping = response.json["ports_mapping"]
for port in ports_mapping:
port_num = port.get("port_number")
if port_num and int(port_num) == int(port_number):
port_type = port.get("type", "")
if "udp" in port_type.lower():
ifaces_info = {
"node_id": node.id,
"type": f"{port_type}",
"lport": port["lport"],
"rhost": port["rhost"],
"rport": port["rport"]
}
else:
ifaces_info = {
"node_id": node.id,
"type": f"{port_type}",
"interface": port["interface"],
}
if not ifaces_info:
raise ControllerError("Link not connected to Cloud/NAT")
return ifaces_info

View File

@ -18,6 +18,7 @@
API routes for templates.
"""
import os
import hashlib
import json
@ -34,6 +35,8 @@ from gns3server.db.repositories.templates import TemplatesRepository
from gns3server.services.templates import TemplatesService
from gns3server.db.repositories.rbac import RbacRepository
from gns3server.db.repositories.images import ImagesRepository
from gns3server.controller.controller_error import ControllerError
from gns3server.utils.images import get_builtin_disks
from .dependencies.authentication import get_current_active_user
from .dependencies.rbac import has_privilege
@ -132,10 +135,28 @@ async def delete_template(
Required privilege: Template.Allocate
"""
images = await templates_repo.get_template_images(template_id)
await TemplatesService(templates_repo).delete_template(template_id)
await rbac_repo.delete_all_ace_starting_with_path(f"/templates/{template_id}")
if prune_images:
await images_repo.prune_images()
if prune_images and images:
skip_images = get_builtin_disks()
for image in images:
if image.filename in skip_images:
continue
templates = await images_repo.get_image_templates(image.image_id)
if templates:
template_names = ", ".join([template.name for template in templates])
raise ControllerError(f"Image '{image.path}' is used by one or more templates: {template_names}")
try:
os.remove(image.path)
except OSError:
log.warning(f"Could not delete image file {image.path}")
print(f"Deleting image '{image.path}'")
success = await images_repo.delete_image(image.path)
if not success:
raise ControllerError(f"Image '{image.path}' could not removed from the database")
@router.get(

View File

@ -25,6 +25,14 @@
"options": "-cpu host -nographic"
},
"images": [
{
"filename": "AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2",
"version": "9.4",
"md5sum": "7c5040c044a989c524d40824cebb4a4d",
"filesize": 591724544,
"download_url": "https://vault.almalinux.org/9.4/cloud/x86_64/images/",
"direct_download_url": "https://vault.almalinux.org/9.4/cloud/x86_64/images/AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2"
},
{
"filename": "AlmaLinux-9-GenericCloud-9.2-20230513.x86_64.qcow2",
"version": "9.2",
@ -33,6 +41,14 @@
"download_url": "https://vault.almalinux.org/9.2/cloud/x86_64/images/",
"direct_download_url": "https://vault.almalinux.org/9.2/cloud/x86_64/images/AlmaLinux-9-GenericCloud-9.2-20230513.x86_64.qcow2"
},
{
"filename": "AlmaLinux-8-GenericCloud-8.9-20231128.x86_64.qcow2",
"version": "8.9",
"md5sum": "1afc48c798960f0c6ebb65428c0ea973",
"filesize": 697434112,
"download_url": "https://vault.almalinux.org/8.9/cloud/x86_64/images/",
"direct_download_url": "https://vault.almalinux.org/8.9/cloud/x86_64/images/AlmaLinux-8-GenericCloud-8.9-20231128.x86_64.qcow2"
},
{
"filename": "AlmaLinux-8-GenericCloud-8.8-20230524.x86_64.qcow2",
"version": "8.8",
@ -59,6 +75,13 @@
}
],
"versions": [
{
"name": "9.4",
"images": {
"hda_disk_image": "AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2",
"cdrom_image": "almalinux-cloud-init-data.iso"
}
},
{
"name": "9.2",
"images": {
@ -66,6 +89,13 @@
"cdrom_image": "almalinux-cloud-init-data.iso"
}
},
{
"name": "8.9",
"images": {
"hda_disk_image": "AlmaLinux-8-GenericCloud-8.9-20231128.x86_64.qcow2",
"cdrom_image": "almalinux-cloud-init-data.iso"
}
},
{
"name": "8.8",
"images": {

View File

@ -0,0 +1,56 @@
{
"appliance_id": "edbaa01e-2032-4ee2-bb9f-dd5c4d84c270",
"name": "Alpine Cloud Guest",
"category": "guest",
"description": "Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.",
"vendor_name": "Alpine Linux Development Team",
"vendor_url": "http://alpinelinux.org",
"vendor_logo_url": "https://raw.githubusercontent.com/GNS3/gns3-registry/master/vendor-logos/Alpine Linux.png",
"documentation_url": "http://wiki.alpinelinux.org",
"product_name": "Alpine Linux",
"product_url": "https://www.alpinelinux.org/cloud/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",
"maintainer_email": "developers@gns3.net",
"usage": "\nUsername: alpine\nPassword: alpine",
"port_name_format": "Ethernet{0}",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 1,
"ram": 1024,
"hda_disk_interface": "virtio",
"arch": "x86_64",
"console_type": "telnet",
"boot_priority": "c",
"kvm": "require",
"options": "-nographic"
},
"images": [
{
"filename": "generic_alpine-3.21.2-x86_64-bios-cloudinit-r0.qcow2",
"version": "3.21.2",
"md5sum": "b40825dff2867e0ffaffbc4c87674462",
"filesize": 189726720,
"download_url": "https://www.alpinelinux.org/cloud/",
"direct_download_url": "https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/cloud/generic_alpine-3.21.2-x86_64-bios-cloudinit-r0.qcow2"
},
{
"filename": "alpine-cloud-init-data.iso",
"version": "1.0",
"md5sum": "b1b4b16cc3bf0250c0fa377c19c97683",
"filesize": 374784,
"download_url": "https://github.com/GNS3/gns3-registry/tree/master/cloud-init/alpine-cloud",
"direct_download_url": "https://github.com/GNS3/gns3-registry/raw/master/cloud-init/alpine-cloud/alpine-cloud-init-data.iso"
}
],
"versions": [
{
"name": "3.21.2",
"images": {
"hda_disk_image": "generic_alpine-3.21.2-x86_64-bios-cloudinit-r0.qcow2",
"cdrom_image": "alpine-cloud-init-data.iso"
}
}
]
}

View File

@ -29,23 +29,23 @@
},
"images": [
{
"filename": "vEOS-lab-4.33.1F.qcow2",
"version": "4.33.1F",
"md5sum": "8f662409c0732ed9f682edce63601e8a",
"filesize": 611909632,
"filename": "vEOS64-lab-4.33.2F.qcow2",
"version": "4.33.2F",
"md5sum": "fbe629a8342cd0b3b19566b9d7ef4f4f",
"filesize": 610992128,
"download_url": "https://www.arista.com/en/support/software-download"
},
{
"filename": "vEOS-lab-4.32.3M.qcow2",
"version": "4.32.3M",
"md5sum": "46fc46f5ed1da8752eed8396f08862f8",
"filesize": 605683712,
"filename": "vEOS64-lab-4.32.4.1M.qcow2",
"version": "4.32.4.1M",
"md5sum": "cd369b5ccfd87ccd83a34538681ba35f",
"filesize": 605159424,
"download_url": "https://www.arista.com/en/support/software-download"
},
{
"filename": "vEOS-lab-4.31.6M.qcow2",
"filename": "vEOS64-lab-4.31.6M.qcow2",
"version": "4.31.6M",
"md5sum": "7410110b77472f058322ec4681f8a356",
"md5sum": "02fbd929de9416e1096cd2454507d6ce",
"filesize": 590479360,
"download_url": "https://www.arista.com/en/support/software-download"
},
@ -59,24 +59,24 @@
],
"versions": [
{
"name": "4.33.1F",
"name": "4.33.2F",
"images": {
"hda_disk_image": "Aboot-veos-serial-8.0.2.iso",
"hdb_disk_image": "vEOS-lab-4.33.1F.qcow2"
"hdb_disk_image": "vEOS64-lab-4.33.2F.qcow2"
}
},
{
"name": "4.32.3M",
"name": "4.32.4.1M",
"images": {
"hda_disk_image": "Aboot-veos-serial-8.0.2.iso",
"hdb_disk_image": "vEOS-lab-4.32.3M.qcow2"
"hdb_disk_image": "vEOS64-lab-4.32.4.1M.qcow2"
}
},
{
"name": "4.31.6M",
"images": {
"hda_disk_image": "Aboot-veos-serial-8.0.2.iso",
"hdb_disk_image": "vEOS-lab-4.31.6M.qcow2"
"hdb_disk_image": "vEOS64-lab-4.31.6M.qcow2"
}
}
]

View File

@ -32,6 +32,27 @@
"process_priority": "normal"
},
"images": [
{
"filename": "arubaoscx-disk-image-genericx86-p4-20241115202521.vmdk",
"version": "10.15.0005",
"md5sum": "69b3675391c04c1a6e0fd0bf8d8bc2d9",
"filesize": 420049408,
"download_url": "https://networkingsupport.hpe.com"
},
{
"filename": "arubaoscx-disk-image-genericx86-p4-20240731173624.vmdk",
"version": "10.14.1000",
"md5sum": "01d6932fbc9c46180a4f41aee9e98301",
"filesize": 412140544,
"download_url": "https://networkingsupport.hpe.com"
},
{
"filename": "arubaoscx-disk-image-genericx86-p4-20240528190307.vmdk",
"version": "10.14.0001",
"md5sum": "83902dbaa74c37cdda3f066f79431933",
"filesize": 401023488,
"download_url": "https://networkingsupport.hpe.com"
},
{
"filename": "arubaoscx-disk-image-genericx86-p4-20240129204649.vmdk",
"version": "10.13.1000",
@ -139,6 +160,24 @@
}
],
"versions": [
{
"name": "10.15.0005",
"images": {
"hda_disk_image": "arubaoscx-disk-image-genericx86-p4-20241115202521.vmdk"
}
},
{
"name": "10.14.1000",
"images": {
"hda_disk_image": "arubaoscx-disk-image-genericx86-p4-20240731173624.vmdk"
}
},
{
"name": "10.14.0001",
"images": {
"hda_disk_image": "arubaoscx-disk-image-genericx86-p4-20240528190307.vmdk"
}
},
{
"name": "10.13.1000",
"images": {

View File

@ -0,0 +1,50 @@
{
"appliance_id": "9e934470-d898-4289-a5ed-50af094e629e",
"name": "Asterfusion vAsterNOS campus",
"category": "multilayer_switch",
"description": "AsterNOS is the core technology of Asterfusions one-stop SONiC turnkey solution designed for cloud, enterprise, and AI-driven scenarios. AsterNOS v5.2 Campus is specifically designed for traditional campus networks, offering comprehensive L2/L3 capabilities suitable for various campus scenarios such as schools, office buildings, and hospitals. This version supports a fully cloud-integrated Layer 3 network architecture, providing rich routing and switching functionalities to ensure high-performance operation and ease of maintenance. It can also be deployed in the GNS3 simulation environment to experience a complete All-Layer 3 Cloud-Campus network. This version is ideal for enterprises and campus networks requiring high-performance multi-service transport, supporting cross-domain connectivity and providing nanosecond-level time synchronization. It is well-suited for applications with stringent time accuracy requirements, such as financial trading, industrial automation, and smart manufacturing. 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/",
"registry_version": 4,
"status": "experimental",
"maintainer": "Asterfusion",
"maintainer_email": "bd@cloudswit.ch",
"usage": "The login is admin and the password is asteros",
"symbol": "asterfusion-vAsterNOS.svg",
"first_port_name": "eth0",
"port_name_format": "Ethernet{0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 10,
"ram": 4096,
"cpus": 4,
"hda_disk_interface": "virtio",
"arch": "x86_64",
"console_type": "telnet",
"boot_priority": "d",
"kvm": "require"
},
"images": [
{
"filename": "vAsterNOS-V5.2R012P01.img",
"version": "5.2-12-1",
"md5sum": "d18c0cfd786607ccc6dc1069a8f40465",
"filesize": 2823290880,
"download_url": "https://drive.cloudswitch.io/external/d29f6d0a6c8322fea42b3c08e95113d026b8ec6aafbe29193c338333077f3da7"
}
],
"versions": [
{
"name": "5.2-12-1",
"images": {
"hda_disk_image": "vAsterNOS-V5.2R012P01.img"
}
}
]
}

View File

@ -13,7 +13,7 @@
"status": "experimental",
"maintainer": "Asterfusion",
"maintainer_email": "bd@cloudswit.ch",
"usage": "The login is admin, passwd asteros",
"usage": "The login is admin and the password is asteros",
"symbol": "asterfusion-vAsterNOS.svg",
"first_port_name": "eth0",
"port_name_format": "Ethernet{0}",

View File

@ -27,44 +27,28 @@
},
"images": [
{
"filename": "CentOS-Stream-GenericCloud-9-20230704.1.x86_64.qcow2",
"version": "Stream-9 (20230704.1)",
"md5sum": "e04511e019325a97837edd9eafe02b48",
"filesize": 1087868416,
"filename": "CentOS-Stream-GenericCloud-x86_64-10-20250331.0.x86_64.qcow2",
"version": "Stream-10 (20250331.0)",
"md5sum": "776033371ca346001dd6390f0cbaf0d0",
"filesize": 952041472,
"download_url": "https://cloud.centos.org/centos/10-stream/x86_64/images",
"direct_download_url": "https://cloud.centos.org/centos/10-stream/x86_64/images/CentOS-Stream-GenericCloud-x86_64-10-20250331.0.x86_64.qcow2"
},
{
"filename": "CentOS-Stream-GenericCloud-9-20250331.0.x86_64.qcow2",
"version": "Stream-9 (20250331.0)",
"md5sum": "4aaeddc6ca497065522c75a7471f9bfd",
"filesize": 1250625536,
"download_url": "https://cloud.centos.org/centos/9-stream/x86_64/images",
"direct_download_url": "https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-20230704.1.x86_64.qcow2"
"direct_download_url": "https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-20250331.0.x86_64.qcow2"
},
{
"filename": "CentOS-Stream-GenericCloud-8-20230710.0.x86_64.qcow2",
"version": "Stream-8 (20230710.0)",
"md5sum": "83e02ce98c29753c86fb7be7d802aa75",
"filesize": 1676164096,
"filename": "CentOS-Stream-GenericCloud-8-20240603.0.x86_64.qcow2",
"version": "Stream-8 (20240603.0)",
"md5sum": "77f3c9650785b8e977209796e09ee33e",
"filesize": 2003698688,
"download_url": "https://cloud.centos.org/centos/8-stream/x86_64/images",
"direct_download_url": "https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20230710.0.x86_64.qcow2"
},
{
"filename": "CentOS-8-GenericCloud-8.4.2105-20210603.0.x86_64.qcow2",
"version": "8.4 (2105)",
"md5sum": "032eed270415526546eac07628905a62",
"filesize": 1309652992,
"download_url": "https://cloud.centos.org/centos/8/x86_64/images",
"direct_download_url": "https://cloud.centos.org/centos/8/x86_64/images/CentOS-8-GenericCloud-8.4.2105-20210603.0.x86_64.qcow2"
},
{
"filename": "CentOS-7-x86_64-GenericCloud-2111.qcow2",
"version": "7 (2111)",
"md5sum": "730b8662695831670721c8245be61dac",
"filesize": 897384448,
"download_url": "https://cloud.centos.org/centos/7/images",
"direct_download_url": "https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2111.qcow2"
},
{
"filename": "CentOS-7-x86_64-GenericCloud-1809.qcow2",
"version": "7 (1809)",
"md5sum": "da79108d1324b27bd1759362b82fbe40",
"filesize": 914948096,
"download_url": "https://cloud.centos.org/centos/7/images",
"direct_download_url": "https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1809.qcow2"
"direct_download_url": "https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20240603.0.x86_64.qcow2"
},
{
"filename": "centos-cloud-init-data.iso",
@ -77,37 +61,23 @@
],
"versions": [
{
"name": "Stream-9 (20230704.1)",
"name": "Stream-10 (20250331.0)",
"images": {
"hda_disk_image": "CentOS-Stream-GenericCloud-9-20230704.1.x86_64.qcow2",
"hda_disk_image": "CentOS-Stream-GenericCloud-x86_64-10-20250331.0.x86_64.qcow2",
"cdrom_image": "centos-cloud-init-data.iso"
}
},
{
"name": "Stream-8 (20230710.0)",
"name": "Stream-9 (20250331.0)",
"images": {
"hda_disk_image": "CentOS-Stream-GenericCloud-8-20230710.0.x86_64.qcow2",
"hda_disk_image": "CentOS-Stream-GenericCloud-9-20250331.0.x86_64.qcow2",
"cdrom_image": "centos-cloud-init-data.iso"
}
},
{
"name": "8.4 (2105)",
"name": "Stream-8 (20240603.0)",
"images": {
"hda_disk_image": "CentOS-8-GenericCloud-8.4.2105-20210603.0.x86_64.qcow2",
"cdrom_image": "centos-cloud-init-data.iso"
}
},
{
"name": "7 (2111)",
"images": {
"hda_disk_image": "CentOS-7-x86_64-GenericCloud-2111.qcow2",
"cdrom_image": "centos-cloud-init-data.iso"
}
},
{
"name": "7 (1809)",
"images": {
"hda_disk_image": "CentOS-7-x86_64-GenericCloud-1809.qcow2",
"hda_disk_image": "CentOS-Stream-GenericCloud-8-20240603.0.x86_64.qcow2",
"cdrom_image": "centos-cloud-init-data.iso"
}
}

View File

@ -5,9 +5,9 @@
"description": "The Adaptive Security Virtual Appliance is a virtualized network security solution based on the market-leading Cisco ASA 5500-X Series firewalls. It supports both traditional and next-generation software-defined network (SDN) and Cisco Application Centric Infrastructure (ACI) environments to provide policy enforcement and threat inspection across heterogeneous multisite environments.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "http://www.cisco.com/c/en/us/support/security/virtual-adaptive-security-appliance-firewall/products-installation-guides-list.html",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/asav/",
"product_name": "ASAv",
"product_url": "http://www.cisco.com/c/en/us/products/security/virtual-adaptive-security-appliance-firewall/index.html",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",

View File

@ -5,9 +5,9 @@
"description": "The Cisco Catalyst 8000V Edge Software is a virtual, form-factor router deployed on a virtual machine (VM) running on an x86 server hardware.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "https://www.cisco.com/c/en/us/td/docs/routers/C8000V/Configuration/c8000v-installation-configuration-guide.html",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/cat-8000v/",
"product_name": "c8000v",
"product_url": "https://www.cisco.com/c/en/us/support/routers/catalyst-8000v-edge-software/series.html",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",
@ -24,6 +24,13 @@
"kvm": "require"
},
"images": [
{
"filename": "c8000v-universalk9_8G_serial.17.15.01a.qcow2",
"version": "17.15.01a 8G",
"md5sum": "41efa0aedd67f1f57cde1263c79d9ff6",
"filesize": 1846280192,
"download_url": "https://software.cisco.com/download/home/286327102/type/282046477/release/IOSXE-17.15.1a"
},
{
"filename": "c8000v-universalk9_8G_serial.17.09.04a.qcow2",
"version": "17.09.04a 8G",
@ -68,6 +75,12 @@
}
],
"versions": [
{
"name": "17.15.01a 8G",
"images": {
"hda_disk_image": "c8000v-universalk9_8G_serial.17.15.01a.qcow2"
}
},
{
"name": "17.09.04a 8G",
"images": {

View File

@ -5,9 +5,9 @@
"description": "Cisco IOS-XE 9000v. This appliance requires 16GB of memory to run! Recommend 2 or more vCPUs for faster boot performance",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/2-5/#!cml-release-notes",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/cat-9000v/",
"product_name": "Cisco CAT IOS-XE 9000v",
"product_url": "http://virl.cisco.com/",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "experimental",
"maintainer": "GNS3 Team",

View File

@ -5,9 +5,9 @@
"description": "The Cisco Cloud Services Router 1000V (CSR 1000V) is a router and network services platform in virtual form factor that is intended for deployment in cloud and virtual data centers. It is optimized to serve as a single-tenant or multitenant WAN gateway. Using proven, industry-leading Cisco IOS\u00ae XE Software networking and security features, the CSR 1000V enables enterprises to transparently extend their WANs into external provider-hosted clouds and cloud providers to offer their tenants enterprise-class networking services.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "http://www.cisco.com/c/en/us/support/routers/cloud-services-router-1000v-series/products-installation-and-configuration-guides-list.html",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/csr-1000v/",
"product_name": "CSR1000v",
"product_url": "http://www.cisco.com/c/en/us/support/routers/cloud-services-router-1000v-series/tsd-products-support-series-home.html",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",
@ -169,7 +169,7 @@
"version": "16.4.1",
"md5sum": "3428e0dcf5132a1b11ab7696d8c61b2e",
"filesize": 1261961216,
"download_url": "https://virl.mediuscorp.com/my-account/"
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "csr1000v-universalk9.16.6.1.qcow2",

View File

@ -5,8 +5,9 @@
"description": "Cisco Virtual IOS allows user to run IOS on a standard computer.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/iol/",
"product_name": "IOSv",
"product_url": "http://virl.cisco.com/",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",
@ -25,12 +26,11 @@
},
"images": [
{
"filename": "IOSv_startup_config.img",
"version": "1",
"md5sum": "bc605651c4688276f81fd59dcf5cc786",
"filesize": 1048576,
"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.m9.qcow2",
"version": "15.9(3)M9",
"md5sum": "01b707a2e33185d6d33e0255ced45d23",
"filesize": 57323008,
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "vios-adventerprisek9-m.spa.159-3.m8.qcow2",
@ -101,9 +101,24 @@
"md5sum": "79f613ac3b179d5a64520730925130b2",
"filesize": 127926272,
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "IOSv_startup_config.img",
"version": "1",
"md5sum": "bc605651c4688276f81fd59dcf5cc786",
"filesize": 1048576,
"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"
}
],
"versions": [
{
"name": "15.9(3)M9",
"images": {
"hda_disk_image": "vios-adventerprisek9-m.spa.159-3.m9.qcow2",
"hdb_disk_image": "IOSv_startup_config.img"
}
},
{
"name": "15.9(3)M8",
"images": {

View File

@ -5,8 +5,9 @@
"description": "Cisco Virtual IOS L2 allows user to run a IOS switching image on a standard computer.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/iosvl2/",
"product_name": "IOSvL2",
"product_url": "http://virl.cisco.com/",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",

View File

@ -5,9 +5,9 @@
"description": "IOS XRv supports the control plane features introduced in Cisco IOS XR.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "http://www.cisco.com/c/en/us/td/docs/ios_xr_sw/ios_xrv/release/notes/xrv-rn.html",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/ios-xrv/",
"product_name": "IOS XRv",
"product_url": "http://virl.cisco.com/",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",

View File

@ -5,9 +5,9 @@
"description": "IOS XRv 9000 (aka Sunstone) is the 1st VM released running the 64-bit IOS XR operating system as used on the NCS-6xxx platform. This appliance requires 4 vCPUs and 16GB of memory to run!",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "http://www.cisco.com/c/en/us/td/docs/ios_xr_sw/ios_xrv/release/notes/xrv-rn.html",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/ios-xrv-9000/",
"product_name": "IOS XRv 9000",
"product_url": "http://virl.cisco.com/",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "experimental",
"maintainer": "GNS3 Team",
@ -26,92 +26,35 @@
"options": "-smp 4 -cpu host"
},
"images": [
{
"filename": "xrv9k-fullk9-x-24.3.1.qcow2",
"version": "24.3.1",
"md5sum": "bd047c457e29952f265583f299bab845",
"filesize": 1704658432,
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "xrv9k-fullk9-x-7.7.1.qcow2",
"version": "7.7.1",
"md5sum": "682fff40d2ff373d8da3342906553b54",
"filesize": 1643905024,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/7.1.1"
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "xrv9k-fullk9-x-7.1.1.qcow2",
"version": "7.1.1",
"md5sum": "dcf241e3f8df0151fec2c7bfac9d96ac",
"filesize": 1443758080,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/7.1.1"
},
{
"filename": "xrv9k-fullk9-x-7.0.1.qcow2",
"version": "7.0.1",
"md5sum": "ca2817767fa546e303c3c536e211d33e",
"filesize": 1446445056,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/7.0.1"
},
{
"filename": "xrv9k-fullk9-x-6.6.2.qcow2",
"version": "6.6.2",
"md5sum": "fd630be3c449e625073286a3a66021ae",
"filesize": 1452998656,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/6.6.2"
},
{
"filename": "xrv9k-fullk9-x-6.5.3.qcow2",
"version": "6.5.3",
"md5sum": "71f018e3ea895b663129090fb4f0ff40",
"filesize": 1205075968,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/6.5.3"
},
{
"filename": "xrv9k-fullk9-x-6.5.2.qcow2",
"version": "6.5.2",
"md5sum": "506d9e23dda7365c99dd82b613859697",
"filesize": 1205010432,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/6.5.1"
},
{
"filename": "xrv9k-fullk9-x-6.5.1.qcow2",
"version": "6.5.1",
"md5sum": "730868e7cd46de9aa2e950899c7f9498",
"filesize": 1208811520,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/6.5.1"
},
{
"filename": "xrv9k-fullk9-x-6.4.2.qcow2",
"version": "6.4.2",
"md5sum": "6958763192c7bb59a1b8049d377de1b4",
"filesize": 1311703040,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/6.4.2"
},
{
"filename": "xrv9k-fullk9-x-6.4.1.qcow2",
"version": "6.4.1",
"md5sum": "9c56b684e307706005a503e289cb9317",
"filesize": 1304887296,
"download_url": "https://software.cisco.com/download/home/286288939/type/280805694/release/6.4.1"
},
{
"filename": "xrv9k-fullk9-x-6.2.25.qcow2",
"version": "6.2.25",
"md5sum": "3f54e62b6f7cedfb2607233e5e465766",
"filesize": 1190723584,
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "xrv9k-fullk9-x.qcow2-6.0.1",
"version": "6.0.1",
"md5sum": "e20d046807075046c35b6ce7d6766a7f",
"filesize": 2109210624,
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
},
{
"filename": "xrv9k-fullk9-x.qcow2-6.0.0",
"version": "6.0.0",
"md5sum": "64c538c34252aaeb4ed1ddb93d6803fd",
"filesize": 2572943360,
"download_url": "https://learningnetworkstore.cisco.com/myaccount"
}
],
"versions": [
{
"name": "24.3.1",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-24.3.1.qcow2"
}
},
{
"name": "7.7.1",
"images": {
@ -123,66 +66,6 @@
"images": {
"hda_disk_image": "xrv9k-fullk9-x-7.1.1.qcow2"
}
},
{
"name": "7.0.1",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-7.0.1.qcow2"
}
},
{
"name": "6.6.2",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-6.6.2.qcow2"
}
},
{
"name": "6.5.3",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-6.5.3.qcow2"
}
},
{
"name": "6.5.2",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-6.5.2.qcow2"
}
},
{
"name": "6.5.1",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-6.5.1.qcow2"
}
},
{
"name": "6.4.2",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-6.4.2.qcow2"
}
},
{
"name": "6.4.1",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-6.4.1.qcow2"
}
},
{
"name": "6.2.25",
"images": {
"hda_disk_image": "xrv9k-fullk9-x-6.2.25.qcow2"
}
},
{
"name": "6.0.1",
"images": {
"hda_disk_image": "xrv9k-fullk9-x.qcow2-6.0.1"
}
},
{
"name": "6.0.0",
"images": {
"hda_disk_image": "xrv9k-fullk9-x.qcow2-6.0.0"
}
}
]
}

View File

@ -5,7 +5,9 @@
"description": "Cisco IOS on UNIX Layer 2 image.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/iol-l2/",
"product_name": "Cisco IOU L2",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "experimental",
"maintainer": "GNS3 Team",

View File

@ -5,7 +5,9 @@
"description": "Cisco IOS on UNIX Layer 3 image.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/iol/",
"product_name": "Cisco IOU L3",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "experimental",
"maintainer": "GNS3 Team",

View File

@ -5,8 +5,9 @@
"description": "NXOSv is a reference platform for an implementation of the Cisco Nexus operating system, based on the Nexus 7000-series platforms, running as a full virtual machine on a hypervisor. This includes NXAPI and MPLS LDP support.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/nx-os/",
"product_name": "NX-OSv",
"product_url": "http://virl.cisco.com/",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",

View File

@ -5,8 +5,9 @@
"description": "The NX-OSv 9000 is a virtual platform that is designed to simulate the control plane aspects of a network element running Cisco Nexus 9000 software. The NX-OSv 9000 shares the same software image running on Cisco Nexus 9000 hardware platform although no specific hardware emulation is implemented. When the software runs as a virtual machine, line card (LC) ASIC provisioning or any interaction from the control plane to hardware ASIC is handled by the NX-OSv 9000 software data plane.\nThe NX-OSv 9000 for the Cisco Nexus 9000 Series provides a useful tool to enable the devops model and rapidly test changes to the infrastructure or to infrastructure automation tools. This enables network simulations in large scale for customers to validate configuration changes on a simulated network prior to applying them on a production network. Some users have also expressed interest in using the simulation system for feature test ,verification, and automation tooling development and test simualtion prior to deployment. NX-OSv 9000 can be used as a programmability vehicle to validate software defined networks (SDNs) and Network Function Virtualization (NFV) based solutions.",
"vendor_name": "Cisco",
"vendor_url": "http://www.cisco.com/",
"documentation_url": "http://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/nx-osv/configuration/guide/b_NX-OSv_9000/b_NX-OSv_chapter_01.html",
"documentation_url": "https://developer.cisco.com/docs/modeling-labs/nx-os-9000/",
"product_name": "NX-OSv 9000",
"product_url": "https://developer.cisco.com/modeling-labs/",
"registry_version": 4,
"status": "stable",
"availability": "service-contract",
@ -26,12 +27,33 @@
"kvm": "require"
},
"images": [
{
"filename": "nexus9500v64.10.5.1.F.qcow2",
"version": "9500v 10.5.1.F",
"md5sum": "2fa6fb4dd4c5e49d53896d60fa746e59",
"filesize": 2388459520,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/10.5(1)"
},
{
"filename": "nexus9300v64.10.5.1.F.qcow2",
"version": "9300v 10.5.1.F",
"md5sum": "2bbc767debbc7c1144eabe176ae67503",
"filesize": 2388393984,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/10.5(1)"
},
{
"filename": "nexus9500v64.10.3.1.F.qcow2",
"version": "9500v 10.3.1.F",
"md5sum": "41e3c1c0c003b13f1bf774f0d1873e87",
"filesize": 2097510400,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/10.3(1)"
},
{
"filename": "nexus9300v64.10.3.1.F.qcow2",
"version": "9300v 10.3.1.F",
"md5sum": "a6ffd2501a5791c11cee319943b912da",
"filesize": 2097086464,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/10.1(1)"
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/10.3(1)"
},
{
"filename": "nexus9500v64.10.1.1.qcow2",
@ -47,181 +69,6 @@
"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",
"md5sum": "30c25039927f89aebe73ea20d15abd6d",
"filesize": 1980760064,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(9)"
},
{
"filename": "nexus9300v.9.3.9.qcow2",
"version": "9300v 9.3.9",
"md5sum": "e807005cb7d2d2957b4af0e59f368b36",
"filesize": 1980563456,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(9)"
},
{
"filename": "nexus9300v.9.3.8.qcow2",
"version": "9300v 9.3.8",
"md5sum": "f8bd834f8395c134dc98d895c98441af",
"filesize": 1976434688,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(8)"
},
{
"filename": "nexus9500v.9.3.7.qcow2",
"version": "9500v 9.3.7",
"md5sum": "65f669e0dd379a05a8cdbb9d7592a064",
"filesize": 1986068480,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(7)"
},
{
"filename": "nexus9500v.9.3.3.qcow2",
"version": "9500v 9.3.3",
"md5sum": "7230c944041fdaa0e1b18cecccbc9a32",
"filesize": 1714159616,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(3)"
},
{
"filename": "nexus9300v.9.3.3.qcow2",
"version": "9300v 9.3.3",
"md5sum": "8e9a7c4815907ef47d850623f77042e2",
"filesize": 1714225152,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(3)"
},
{
"filename": "nxosv.9.3.1.qcow2",
"version": "9.3.1",
"md5sum": "148fd38cb1ff78df2883f844e172fad9",
"filesize": 1435041792,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.3(1)?i=!pp"
},
{
"filename": "nxosv-final.9.2.3.qcow2",
"version": "9.2.3",
"md5sum": "74bd9a5b4970e868685f753e48979194",
"filesize": 1357643776,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.2%25283%2529"
},
{
"filename": "nxosv-final.9.2.2.qcow2",
"version": "9.2.2",
"md5sum": "2119702c488552fc4d1b4210a04d4f64",
"filesize": 1344077824,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.2%25281%2529"
},
{
"filename": "nxosv-final.9.2.1.qcow2",
"version": "9.2.1",
"md5sum": "1d7fa4654602d7ffbf62544edfe71986",
"filesize": 1330315264,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/9.2%25281%2529"
},
{
"filename": "nxosv-final.7.0.3.I7.9.qcow2",
"version": "7.0.3.I7.9",
"md5sum": "50678c719f6b822c43dd096dbdf359e8",
"filesize": 1003618304,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/7.0(3)I7(9)?i=!pp"
},
{
"filename": "nxosv-final.7.0.3.I7.7.qcow2",
"version": "7.0.3.I7.7",
"md5sum": "5daab34b672f9534c9aee59a6c8903b3",
"filesize": 996212736,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/7.0%25283%2529I7%25287%2529"
},
{
"filename": "nxosv-final.7.0.3.I7.6.qcow2",
"version": "7.0.3.I7.6",
"md5sum": "a122ee954b4c11761abd99291b70544e",
"filesize": 1031995392,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/7.0%25283%2529I7%25286%2529"
},
{
"filename": "nxosv-final.7.0.3.I7.5.qcow2",
"version": "7.0.3.I7.5",
"md5sum": "68a4008e189c8a35ccb8ee58db9608bb",
"filesize": 1027670016,
"download_url": "https://software.cisco.com/download/home/286312239/type/282088129/release/7.0%25283%2529I7%25285%2529"
},
{
"filename": "nxosv-final.7.0.3.I7.4.qcow2",
"version": "7.0.3.I7.4",
"md5sum": "1e980c95ca47045ae45ded6e07fabfb8",
"filesize": 985792512,
"download_url": "https://software.cisco.com/download/"
},
{
"filename": "nxosv-final.7.0.3.I7.3.qcow2",
"version": "7.0.3.I7.3",
"md5sum": "9d7a20367bf681a239f14097bbce470a",
"filesize": 983629824,
"download_url": "https://software.cisco.com/download/"
},
{
"filename": "nxosv-final.7.0.3.I7.2.qcow2",
"version": "7.0.3.I7.2",
"md5sum": "17295efb13e83b24a439148449bfd5ab",
"filesize": 906231808,
"download_url": "https://software.cisco.com/download/"
},
{
"filename": "nxosv-final.7.0.3.I7.1.qcow2",
"version": "7.0.3.I7.1",
"md5sum": "3c122f27d0c3684c63657207eadf4d06",
"filesize": 903151616,
"download_url": "https://software.cisco.com/download/"
},
{
"filename": "nxosv-final.7.0.3.I6.1.qcow2",
"version": "7.0.3.I6.1",
"md5sum": "18bb991b814a508d1190575f99deed99",
"filesize": 780402688,
"download_url": "https://software.cisco.com/download/"
},
{
"filename": "nxosv-final.7.0.3.I5.2.qcow2",
"version": "7.0.3.I5.2",
"md5sum": "c06aaa02f758a64fd8fee9406756f1da",
"filesize": 777715712,
"download_url": "https://software.cisco.com/download/"
},
{
"filename": "nxosv-final.7.0.3.I5.1.qcow2",
"version": "7.0.3.I5.1",
"md5sum": "201ea658fa4c57452ee4b2aa4f5262a7",
"filesize": 784990208,
"download_url": "https://software.cisco.com/download/"
},
{
"filename": "OVMF-edk2-stable202305.fd",
"version": "stable202305",
@ -233,6 +80,27 @@
}
],
"versions": [
{
"name": "9500v 10.5.1.F",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9500v64.10.5.1.F.qcow2"
}
},
{
"name": "9300v 10.5.1.F",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9300v64.10.5.1.F.qcow2"
}
},
{
"name": "9500v 10.3.1.F",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9500v64.10.3.1.F.qcow2"
}
},
{
"name": "9300v 10.3.1.F",
"images": {
@ -253,181 +121,6 @@
"bios_image": "OVMF-edk2-stable202305.fd",
"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": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9500v.9.3.9.qcow2"
}
},
{
"name": "9300v 9.3.9",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9300v.9.3.9.qcow2"
}
},
{
"name": "9300v 9.3.8",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9300v.9.3.8.qcow2"
}
},
{
"name": "9500v 9.3.7",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9500v.9.3.7.qcow2"
}
},
{
"name": "9500v 9.3.3",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9500v.9.3.3.qcow2"
}
},
{
"name": "9300v 9.3.3",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nexus9300v.9.3.3.qcow2"
}
},
{
"name": "9.3.1",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv.9.3.1.qcow2"
}
},
{
"name": "9.2.3",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.9.2.3.qcow2"
}
},
{
"name": "9.2.2",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.9.2.2.qcow2"
}
},
{
"name": "9.2.1",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.9.2.1.qcow2"
}
},
{
"name": "7.0.3.I7.9",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I7.9.qcow2"
}
},
{
"name": "7.0.3.I7.7",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I7.7.qcow2"
}
},
{
"name": "7.0.3.I7.6",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I7.6.qcow2"
}
},
{
"name": "7.0.3.I7.5",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I7.5.qcow2"
}
},
{
"name": "7.0.3.I7.4",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I7.4.qcow2"
}
},
{
"name": "7.0.3.I7.3",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I7.3.qcow2"
}
},
{
"name": "7.0.3.I7.2",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I7.2.qcow2"
}
},
{
"name": "7.0.3.I7.1",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I7.1.qcow2"
}
},
{
"name": "7.0.3.I6.1",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I6.1.qcow2"
}
},
{
"name": "7.0.3.I5.2",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I5.2.qcow2"
}
},
{
"name": "7.0.3.I5.1",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "nxosv-final.7.0.3.I5.1.qcow2"
}
}
]
}

View File

@ -30,6 +30,13 @@
"images": [
{
"filename": "EXOS-VM_32.7.2.19.qcow2",
"version": "32.7.2.19",
"md5sum": "eba580a2e18d2a9cc972c9ece8917ea8",
"filesize": 236847104,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_EXOS/EXOS-VM_32.7.2.19.qcow2"
},
{
"filename": "EXOS-VM_v32.6.3.126.qcow2",
"version": "32.6.3.126",
"md5sum": "5856b6c427bd605fe1c7adb6ee6b2659",
@ -41,6 +48,12 @@
"versions": [
{
"name": "32.7.2.19",
"images": {
"hda_disk_image": "EXOS-VM_32.7.2.19.qcow2"
}
},
{
"name": "32.6.3.126",
"images": {

View File

@ -26,6 +26,22 @@
"options": "-nographic"
},
"images": [
{
"filename": "Fedora-Cloud-Base-Generic-41-1.4.x86_64.qcow2",
"version": "41-1.4",
"md5sum": "8efc9edc04f38775de72ce067166b2a1",
"filesize": 491716608,
"download_url": "https://download.fedoraproject.org/pub/fedora/linux/releases/41/Cloud/x86_64/images",
"direct_download_url": "https://fedora.mirrorservice.org/fedora/linux/releases/41/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-41-1.4.x86_64.qcow2"
},
{
"filename": "Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2",
"version": "40-1.14",
"md5sum": "3eed4b1a9de35208ed30d9bb72c1522d",
"filesize": 397475840,
"download_url": "https://download.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/x86_64/images",
"direct_download_url": "https://fedora.mirrorservice.org/fedora/linux/releases/40/Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2"
},
{
"filename": "Fedora-Cloud-Base-39-1.5.x86_64.qcow2",
"version": "39-1.5",
@ -52,6 +68,20 @@
}
],
"versions": [
{
"name": "41-1.4",
"images": {
"hda_disk_image": "Fedora-Cloud-Base-Generic-41-1.4.x86_64.qcow2",
"cdrom_image": "fedora-cloud-init-data.iso"
}
},
{
"name": "40-1.14",
"images": {
"hda_disk_image": "Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2",
"cdrom_image": "fedora-cloud-init-data.iso"
}
},
{
"name": "39-1.5",
"images": {

View File

@ -29,6 +29,27 @@
"kvm": "allow"
},
"images": [
{
"filename": "FAZ_VM64_KVM-v7.4.6.M-build2588-FORTINET.out.kvm.qcow2",
"version": "7.4.6",
"md5sum": "fba982436ff430465df6f6f283a2bd71",
"filesize": 511053824,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v7.4.5.M-build2553-FORTINET.out.kvm.qcow2",
"version": "7.4.5",
"md5sum": "78464ee460fce69c360901ca9ccfe4a0",
"filesize": 510988288,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v7.4.4.F-build2550-FORTINET.out.kvm.qcow2",
"version": "7.4.4",
"md5sum": "7bec1725b1e39dd66f4daae07492f1b4",
"filesize": 511217664,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v7.4.3-build2487-FORTINET.out.kvm.qcow2",
"version": "7.4.3",
@ -277,6 +298,27 @@
}
],
"versions": [
{
"name": "7.4.6",
"images": {
"hda_disk_image": "FAZ_VM64_KVM-v7.4.6.M-build2588-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.5",
"images": {
"hda_disk_image": "FAZ_VM64_KVM-v7.4.5.M-build2553-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.4",
"images": {
"hda_disk_image": "FAZ_VM64_KVM-v7.4.4.F-build2550-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.3",
"images": {

View File

@ -28,6 +28,27 @@
"kvm": "allow"
},
"images": [
{
"filename": "FGT_VM64_KVM-v7.4.7.M-build2731-FORTINET.out.kvm.qcow2",
"version": "7.4.7",
"md5sum": "2ce4039789e84b3fe85565e0c4110718",
"filesize": 103677952,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.4.6.M-build2726-FORTINET.out.kvm.qcow2",
"version": "7.4.6",
"md5sum": "b787c1c5ab365f267d7e4e88b1cdc10b",
"filesize": 103677952,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.4.5.M-build2702-FORTINET.out.kvm.qcow2",
"version": "7.4.5",
"md5sum": "8465e74c4ef1751619ebb989838d457c",
"filesize": 102367232,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.4.4.F-build2662-FORTINET.out.kvm.qcow2",
"version": "7.4.4",
@ -388,6 +409,27 @@
}
],
"versions": [
{
"name": "7.4.7",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v7.4.7.M-build2731-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.6",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v7.4.6.M-build2726-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.5",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v7.4.5.M-build2702-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.4",
"images": {

View File

@ -29,9 +29,30 @@
"kvm": "allow"
},
"images": [
{
"filename": "FMG_VM64_KVM-v7.4.6.M-build2588-FORTINET.out.kvm.qcow2",
"version": "7.4.6",
"md5sum": "7cb219e1070d393f61cf750d818b23b1",
"filesize": 349122560,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v7.4.5.M-build2553-FORTINET.out.kvm.qcow2",
"version": "7.4.5",
"md5sum": "fa59ddce0cb933741f16866472026723",
"filesize": 349769728,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v7.4.4.F-build2550-FORTINET.out.kvm.qcow2",
"version": "7.4.4",
"md5sum": "770727bb30555e6938308bbf95f19555",
"filesize": 349847552,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v7.4.3-build2487-FORTINET.out.kvm.qcow2",
"version": "7.4.23",
"version": "7.4.3",
"md5sum": "b01d9f86aa27c538407d518df1326863",
"filesize": 346107904,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
@ -277,6 +298,27 @@
}
],
"versions": [
{
"name": "7.4.6",
"images": {
"hda_disk_image": "FMG_VM64_KVM-v7.4.6.M-build2588-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.5",
"images": {
"hda_disk_image": "FMG_VM64_KVM-v7.4.5.M-build2553-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.4",
"images": {
"hda_disk_image": "FMG_VM64_KVM-v7.4.4.F-build2550-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.4.3",
"images": {

View File

@ -0,0 +1,118 @@
{
"appliance_id": "4d351078-c6f5-444c-ab30-0ef20e3d8c53",
"name": "Infix",
"category": "router",
"description": "Infix is a Network Operating System based on Linux. It can be set up both as a switch, with offloading using switchdev, and a router with firewalling.",
"vendor_name": "KernelKit",
"vendor_url": "https://github.com/kernelkit",
"vendor_logo_url": "https://kernelkit.org/assets/img/jack.png",
"product_name": "Infix",
"registry_version": 4,
"documentation_url": "https://github.com/kernelkit/infix/tree/main/doc",
"status": "stable",
"availability": "free",
"maintainer": "KernelKit",
"maintainer_email": "kernelkit@googlegroups.com",
"usage": "Default login, user/pass: admin/admin\n\nType 'cli' (and Enter) followed by 'help' for an overview of commands and relevant configuration files.",
"port_name_format": "eth{0}",
"linked_clone": true,
"symbol": "router_red.svg",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 10,
"ram": 512,
"cpus": 1,
"hda_disk_interface": "virtio",
"arch": "x86_64",
"console_type": "telnet",
"process_priority": "normal",
"kvm": "allow"
},
"images": [
{
"filename": "OVMF-edk2-stable202305.fd",
"version": "stable202305",
"md5sum": "6c4cf1519fec4a4b95525d9ae562963a",
"filesize": 4194304,
"download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/",
"direct_download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/OVMF-edk2-stable202305.fd.zip/download",
"compression": "zip"
},
{
"filename": "infix-x86_64-disk-24.11.1.img",
"filesize": 536870912,
"md5sum": "673a123fe122d1c2f5724baf9965a19d",
"version": "24.11.1",
"download_url": "https://github.com/kernelkit/infix/releases/download/v24.11.1/infix-x86_64-24.11.1.tar.gz",
"compression": "gzip"
},
{
"filename": "infix-x86_64-disk-25.01.0.img",
"filesize": 536870912,
"md5sum": "a814d93b385116b4a35712c445b5f830",
"version": "25.01.0",
"download_url": "https://github.com/kernelkit/infix/releases/download/v25.01.0/infix-x86_64-25.01.0.tar.gz",
"compression": "gzip"
},
{
"filename": "infix-x86_64-disk-25.02.0.img",
"filesize": 536870912,
"md5sum": "8e29474c97df3486eb063a8af5043f50",
"version": "25.02.0",
"download_url": "https://github.com/kernelkit/infix/releases/download/v25.02.0/infix-x86_64-25.02.0.tar.gz",
"compression": "gzip"
},
{
"filename": "infix-x86_64-disk-25.03.0.img",
"filesize": 536870912,
"md5sum": "5e1ed1081cd1673bfed4a9b5b1c58e08",
"version": "25.03.0",
"download_url": "https://github.com/kernelkit/infix/releases/download/v25.03.0/infix-x86_64-25.03.0.tar.gz",
"compression": "gzip"
},
{
"filename": "infix-x86_64-disk-25.04.0.qcow2",
"filesize": 259723776,
"md5sum": "84bd999513325d0007d0e6587abc6140",
"version": "25.04.0",
"direct_download_url": "https://github.com/kernelkit/infix/releases/download/v25.04.0/infix-x86_64-disk-25.04.0.qcow2"
}
],
"versions": [
{
"name": "25.04.0",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "infix-x86_64-disk-25.04.0.qcow2"
}
},
{
"name": "25.03.0",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "infix-x86_64-disk-25.03.0.img"
}
},
{
"name": "25.02.0",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "infix-x86_64-disk-25.02.0.img"
}
},
{
"name": "25.01.0",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "infix-x86_64-disk-25.01.0.img"
}
},
{
"name": "24.11.1",
"images": {
"bios_image": "OVMF-edk2-stable202305.fd",
"hda_disk_image": "infix-x86_64-disk-24.11.1.img"
}
}
]
}

View File

@ -0,0 +1,75 @@
{
"appliance_id": "12394e0d-9ac5-4da5-8e91-94a462536b61",
"name": "vJunos-router",
"category": "router",
"description": "vJunos-router",
"vendor_name": "Juniper",
"vendor_url": "https://www.juniper.net",
"documentation_url": "https://www.juniper.net/documentation/product/us/en/vjunos-router/",
"product_name": "vJunos Router",
"registry_version": 6,
"status": "stable",
"availability": "free",
"maintainer": "AAm-kun",
"maintainer_email": "github@sugarpapa.mozmail.com",
"usage": "GNS3 SHOULD be a baremetal installation. Using the GNS3 VM MIGHT result in unwanted issues. Default user is root. No password is needed.",
"symbol": "juniper-vmx.svg",
"first_port_name": "ge-0/0/0",
"port_name_format": "ge-0/0/{port0}",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 17,
"ram": 5120,
"cpus": 4,
"hda_disk_interface": "virtio",
"arch": "x86_64",
"console_type": "telnet",
"kvm": "require",
"options": "-serial mon:stdio -nographic -smbios type=1,product=VM-VMX,family=lab -cpu host",
"on_close": "power_off"
},
"images": [
{
"filename": "vJunos-router-24.2R1-S2.qcow2",
"version": "24.2R1-S2",
"md5sum": "dd906b4d19463e22f3e1a297ff1a7464",
"filesize": 3675783168,
"download_url": "https://support.juniper.net/support/downloads/?p=vjunos-router"
},
{
"filename": "vJunos-router-23.4R2-S2.1.qcow2",
"version": "23.4R2-S2.1",
"md5sum": "e25f5acdfc6c076d0023fd8289bcdd89",
"filesize": 3644063744,
"download_url": "https://support.juniper.net/support/downloads/?p=vjunos-router"
},
{
"filename": "vJunos-router-23.2R1.15.qcow2",
"version": "23.2R1.15",
"md5sum": "18670fb67633822697fdd3cf982e7eb1",
"filesize": 3653566464,
"download_url": "https://support.juniper.net/support/downloads/?p=vjunos-router"
}
],
"versions": [
{
"images": {
"hda_disk_image": "vJunos-router-24.2R1-S2.qcow2"
},
"name": "24.2R1-S2"
},
{
"images": {
"hda_disk_image": "vJunos-router-23.4R2-S2.1.qcow2"
},
"name": "23.4R2-S2.1"
},
{
"images": {
"hda_disk_image": "vJunos-router-23.2R1.15.qcow2"
},
"name": "23.2R1.15"
}
]
}

View File

@ -0,0 +1,44 @@
{
"appliance_id": "bb9ff73a-701e-40e8-b68a-6a6efeb04e99",
"name": "NethSecurity",
"category": "firewall",
"description": "NethSecurity is an Unified Threat Management (UTM) solution that provides a comprehensive suite of security features, including firewall, content filtering, deep packet inspection (DPI) using Netifyd, Dedalo hotspot, OpenVPN, and an optional remote controller. It is designed to be easy to install and configure, making it a good choice for both small and medium-sized businesses (SMBs) as well as enterprise organizations.",
"vendor_name": "Nethesis",
"vendor_url": "https://www.nethesis.it/",
"documentation_url": "https://docs.nethsecurity.org/en/latest/",
"product_name": "NethSecurity",
"product_url": "https://nethsecurity.org/",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",
"maintainer_email": "developers@gns3.net",
"usage": "Ethernet0 is the LAN link, Ethernet1 the WAN link. The default username is root and the password is Nethesis,1234",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 2,
"ram": 1024,
"hda_disk_interface": "scsi",
"arch": "x86_64",
"console_type": "telnet",
"kvm": "allow"
},
"images": [
{
"filename": "nethsecurity-8-24.10.0-ns.1.5.1-x86-64-generic-squashfs-combined-efi.img",
"version": "8-24.10.0-ns.1.5.1",
"md5sum": "be670218effca1b86dac6b8d95012791",
"filesize": 331644416,
"download_url": "https://nethsecurity.org/download",
"direct_download_url": "https://updates.nethsecurity.nethserver.org/stable/8-24.10.0-ns.1.5.1/targets/x86/64/nethsecurity-8-24.10.0-ns.1.5.1-x86-64-generic-squashfs-combined-efi.img.gz",
"compression": "gzip"
}
],
"versions": [
{
"name": "8-24.10.0-ns.1.5.1",
"images": {
"hda_disk_image": "nethsecurity-8-24.10.0-ns.1.5.1-x86-64-generic-squashfs-combined-efi.img"
}
}
]
}

View File

@ -26,6 +26,14 @@
"options": "-cpu host -nographic"
},
"images": [
{
"filename": "OL9U5_x86_64-kvm-b259.qcow2",
"version": "9.5",
"md5sum": "05e9b62c408ab49a02d6833fc683d1ad",
"filesize": 652935168,
"download_url": "https://yum.oracle.com/oracle-linux-templates.html",
"direct_download_url": "https://yum.oracle.com/templates/OracleLinux/OL9/u5/x86_64/OL9U5_x86_64-kvm-b259.qcow2"
},
{
"filename": "OL9U2_x86_64-kvm-b197.qcow",
"version": "9.2",
@ -42,6 +50,14 @@
"download_url": "https://yum.oracle.com/oracle-linux-templates.html",
"direct_download_url": "https://yum.oracle.com/templates/OracleLinux/OL9/u1/x86_64/OL9U1_x86_64-kvm-b158.qcow"
},
{
"filename": "OL8U10_x86_64-kvm-b258.qcow2",
"version": "8.10",
"md5sum": "bb07581af5122515b6822595ded5deef",
"filesize": 1251672064,
"download_url": "https://yum.oracle.com/oracle-linux-templates.html",
"direct_download_url": "https://yum.oracle.com/templates/OracleLinux/OL8/u10/x86_64/OL8U10_x86_64-kvm-b258.qcow2"
},
{
"filename": "OL8U8_x86_64-kvm-b198.qcow",
"version": "8.8",
@ -76,7 +92,14 @@
}
],
"versions": [
{
{
"name": "9.5",
"images": {
"hda_disk_image": "OL9U5_x86_64-kvm-b259.qcow2",
"cdrom_image": "oracle-cloud-init-data.iso"
}
},
{
"name": "9.2",
"images": {
"hda_disk_image": "OL9U2_x86_64-kvm-b197.qcow",
@ -90,6 +113,13 @@
"cdrom_image": "oracle-cloud-init-data.iso"
}
},
{
"name": "8.10",
"images": {
"hda_disk_image": "OL8U10_x86_64-kvm-b258.qcow2",
"cdrom_image": "oracle-cloud-init-data.iso"
}
},
{
"name": "8.8",
"images": {

View File

@ -13,7 +13,7 @@
"availability": "service-contract",
"maintainer": "Da-Geek",
"maintainer_email": "dageek@dageeks-geeks.gg",
"usage": "You should download Red Hat Enterprise Linux KVM Guest Image from https://access.redhat.com/downloads/content/479/ver=/rhel---9/9.3/x86_64/product-software attach/customize rhel-cloud-init.iso and start.\nusername: cloud-user\npassword: redhat",
"usage": "You should download Red Hat Enterprise Linux KVM Guest Image from https://access.redhat.com/downloads/content/479/ver=/rhel---9/9.5/x86_64/product-software attach/customize rhel-cloud-init.iso and start.\nusername: cloud-user\npassword: redhat",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 1,
@ -26,6 +26,20 @@
"options": "-cpu host -nographic"
},
"images": [
{
"filename": "rhel-9.5-x86_64-kvm.qcow2",
"version": "9.5",
"md5sum": "8174396d5cb47727c59dd04dd9a05418",
"filesize": 974389248,
"download_url": "https://access.redhat.com/downloads/content/479/ver=/rhel---9/9.5/x86_64/product-software"
},
{
"filename": "rhel-9.4-x86_64-kvm.qcow2",
"version": "9.4",
"md5sum": "77a2ca9a4cb0448260e04f0d2ebf9807",
"filesize": 957218816,
"download_url": "https://access.redhat.com/downloads/content/479/ver=/rhel---9/9.4/x86_64/product-software"
},
{
"filename": "rhel-9.3-x86_64-kvm.qcow2",
"version": "9.3",
@ -54,6 +68,20 @@
"filesize": 696582144,
"download_url": "https://access.redhat.com/downloads/content/479/ver=/rhel---8/9.0/x86_64/product-software"
},
{
"filename": "rhel-8.10-x86_64-kvm.qcow2",
"version": "8.10",
"md5sum": "5fda99fcab47e3b235c6ccdb6e80d362",
"filesize": 1065091072,
"download_url": "https://access.redhat.com/downloads/content/479/ver=/rhel---8/8.10/x86_64/product-software"
},
{
"filename": "rhel-8.9-x86_64-kvm.qcow2",
"version": "8.9",
"md5sum": "23295fe508678cbdebfbdbd41ef6e6e2",
"filesize": 971833344,
"download_url": "https://access.redhat.com/downloads/content/479/ver=/rhel---8/8.9/x86_64/product-software"
},
{
"filename": "rhel-8.8-x86_64-kvm.qcow2",
"version": "8.8",
@ -119,6 +147,20 @@
}
],
"versions": [
{
"name": "9.5",
"images": {
"hda_disk_image": "rhel-9.5-x86_64-kvm.qcow2",
"cdrom_image": "rhel-cloud-init.iso"
}
},
{
"name": "9.4",
"images": {
"hda_disk_image": "rhel-9.4-x86_64-kvm.qcow2",
"cdrom_image": "rhel-cloud-init.iso"
}
},
{
"name": "9.3",
"images": {
@ -147,6 +189,20 @@
"cdrom_image": "rhel-cloud-init.iso"
}
},
{
"name": "8.10",
"images": {
"hda_disk_image": "rhel-8.10-x86_64-kvm.qcow2",
"cdrom_image": "rhel-cloud-init.iso"
}
},
{
"name": "8.9",
"images": {
"hda_disk_image": "rhel-8.9-x86_64-kvm.qcow2",
"cdrom_image": "rhel-cloud-init.iso"
}
},
{
"name": "8.8",
"images": {

View File

@ -26,6 +26,14 @@
"options": "-nographic -cpu host"
},
"images": [
{
"filename": "Rocky-9-GenericCloud-Base-9.5-20241118.0.x86_64.qcow2",
"version": "9.5",
"md5sum": "880eccf788301bb9f34669faebe09276",
"filesize": 609812480,
"download_url": "https://download.rockylinux.org/pub/rocky/9/images/x86_64/",
"direct_download_url": "https://download.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-GenericCloud-Base-9.5-20241118.0.x86_64.qcow2"
},
{
"filename": "Rocky-9-GenericCloud-Base-9.3-20231113.0.x86_64.qcow2",
"version": "9.3",
@ -68,6 +76,13 @@
}
],
"versions": [
{
"name": "9.5",
"images": {
"hda_disk_image": "Rocky-9-GenericCloud-Base-9.5-20241118.0.x86_64.qcow2",
"cdrom_image": "rocky-cloud-init-data.iso"
}
},
{
"name": "9.3",
"images": {

View File

@ -0,0 +1,50 @@
{
"appliance_id": "60801097-332e-4f40-a63e-8ad62047c01f",
"name": "Stormshield EVA",
"category": "firewall",
"description": "Stormshield EVA (Elastic Virtual Appliance) is a french virtual firewall designed to protect network infrastructures. It offers advanced features such as filtering, intrusion prevention (IPS), VPN management (IPSec/SSL), and access control.",
"vendor_name": "Stormshield",
"vendor_url": "https://www.stormshield.com/",
"vendor_logo_url": "https://www.stormshield.com/wp-content/uploads/stormshield-logo.png",
"documentation_url": "https://www.stormshield.com/fr/ressourcescenter/network-security-elastic-virtual-appliances/",
"product_name": "Stormshield EVA",
"product_url": "https://www.stormshield.com/fr/produits-et-services/produits/protection-des-reseaux/nos-produits/appliances-virtuelles/",
"registry_version": 4,
"status": "stable",
"availability": "service-contract",
"maintainer": "Samy SCANNA",
"maintainer_email": "samy.scanna@outlook.com",
"usage": "After the first boot, the appliance automatically runs the configuration script to set up the password, and network interfaces.",
"symbol": "stormshield.png",
"port_name_format": "port{port1}",
"qemu": {
"adapter_type": "vmxnet3",
"adapters": 8,
"ram": 2048,
"cpus": 1,
"hda_disk_interface": "scsi",
"arch": "x86_64",
"console_type": "telnet",
"kvm": "allow",
"options": "-serial stdio",
"on_close": "shutdown_signal",
"process_priority": "normal"
},
"images": [
{
"filename": "utm-SNS-EVA-4.3.33-kvm.qcow2",
"version": "4.3.33",
"md5sum": "21d94d0e20f2e270f06c5853fd750d5b",
"filesize": 284360704,
"download_url": "https://mystormshield.eu/product/download/"
}
],
"versions": [
{
"images": {
"hda_disk_image": "utm-SNS-EVA-4.3.33-kvm.qcow2"
},
"name": "4.3.33"
}
]
}

View File

@ -30,6 +30,13 @@
"on_close": "shutdown_signal"
},
"images": [
{
"filename": "vyos-1.4.1-kvm-amd64.qcow2",
"version": "1.4.1",
"md5sum": "5b8ebcd9905719d24405ed093afdd8ba",
"filesize": 513736704,
"download_url": "https://support.vyos.io/"
},
{
"filename": "vyos-1.4.0-kvm-amd64.qcow2",
"version": "1.4.0",
@ -109,6 +116,12 @@
}
],
"versions": [
{
"name": "1.4.1",
"images": {
"hda_disk_image": "vyos-1.4.1-kvm-amd64.qcow2"
}
},
{
"name": "1.4.0",
"images": {

View File

@ -37,7 +37,7 @@ class Nat(Cloud):
def __init__(self, name, node_id, project, manager, ports=None):
allowed_interfaces = Config.instance().settings.Server.allowed_interfaces
if allowed_interfaces:
if allowed_interfaces and isinstance(allowed_interfaces, str):
allowed_interfaces = allowed_interfaces.split(',')
if sys.platform.startswith("linux"):
nat_interface = Config.instance().settings.Server.default_nat_interface

View File

@ -115,7 +115,7 @@ class Docker(BaseManager):
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 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}")
@ -175,11 +175,10 @@ class Docker(BaseManager):
response = await self.http_query(method, path, data=data, params=params)
body = await response.read()
response.close()
if body and len(body):
if response.headers.get('CONTENT-TYPE') == 'application/json':
body = json.loads(body.decode("utf-8"))
else:
body = body.decode("utf-8")
if response.headers.get('CONTENT-TYPE') == 'application/json':
body = json.loads(body.decode("utf-8", errors="ignore"))
else:
body = body.decode("utf-8", errors="ignore")
log.debug("Query Docker %s %s params=%s data=%s Response: %s", method, path, params, data, body)
return body
@ -267,12 +266,12 @@ class Docker(BaseManager):
pass
if progress_callback:
progress_callback(f"Pulling '{image}' from docker hub")
progress_callback(f"Pulling '{image}' from Docker repository")
try:
response = await self.http_query("POST", "images/create", params={"fromImage": image}, timeout=None)
except DockerError as e:
raise DockerError(
f"Could not pull the '{image}' image from Docker Hub, "
f"Could not pull the '{image}' image from Docker repository, "
f"please check your Internet connection (original error: {e})"
)
# The pull api will stream status via an HTTP JSON stream
@ -281,10 +280,10 @@ class Docker(BaseManager):
try:
chunk = await response.content.read(CHUNK_SIZE)
except aiohttp.ServerDisconnectedError:
log.error(f"Disconnected from server while pulling Docker image '{image}' from docker hub")
log.error(f"Disconnected from server while pulling Docker image '{image}' from Docker repository")
break
except asyncio.TimeoutError:
log.error(f"Timeout while pulling Docker image '{image}' from docker hub")
log.error("Timeout while pulling Docker image '{}' from Docker repository".format(image))
break
if not chunk:
break

View File

@ -437,7 +437,7 @@ class DockerVM(BaseNode):
try:
image_infos = await self._get_image_information()
except DockerHttp404Error:
log.info(f"Image '{self._image}' is missing, pulling it from Docker hub...")
log.info("Image '{}' is missing, pulling it from Docker repository...".format(self._image))
await self.pull_image(self._image)
image_infos = await self._get_image_information()
@ -617,6 +617,7 @@ class DockerVM(BaseNode):
await self._clean_servers()
await self.manager.query("POST", f"containers/{self._cid}/start")
await asyncio.sleep(0.5) # give the Docker container some time to start
self._namespace = await self._get_namespace()
await self._start_ubridge(require_privileged_access=True)

View File

@ -32,6 +32,7 @@ import subprocess
import time
import json
import shlex
import psutil
from gns3server.utils import parse_version
from gns3server.utils.asyncio import subprocess_check_output, cancellable_wait_run_in_executor
@ -265,17 +266,10 @@ class QemuVM(BaseNode):
if qemu_bin == "qemu":
self._platform = "i386"
else:
self._platform = re.sub(r'^qemu-system-(\w+).*$', r'\1', qemu_bin, re.IGNORECASE)
try:
QemuPlatform(self._platform.split(".")[0])
except ValueError:
self._platform = re.sub(r'^qemu-system-(\w+).*$', r'\1', qemu_bin, flags=re.IGNORECASE)
if self._platform.split(".")[0] not in list(QemuPlatform):
raise QemuError(f"Platform {self._platform} is unknown")
log.info(
'QEMU VM "{name}" [{id}] has set the QEMU path to {qemu_path}'.format(
name=self._name, id=self._id, qemu_path=qemu_path
)
)
log.info(f'QEMU VM "{self._name}" [{self._name}] has set the QEMU path to {qemu_path}')
def _check_qemu_path(self, qemu_path):
@ -1225,6 +1219,21 @@ class QemuVM(BaseNode):
except OSError as e:
raise QemuError(f"Could not start Telnet QEMU console {e}\n")
def _find_partition_for_path(self, path):
"""
Finds the disk partition for a given path.
"""
path = os.path.abspath(path)
partitions = psutil.disk_partitions()
# find the partition with the longest matching mount point
matching_partition = None
for partition in partitions:
if path.startswith(partition.mountpoint):
if matching_partition is None or len(partition.mountpoint) > len(matching_partition.mountpoint):
matching_partition = partition
return matching_partition
async def _termination_callback(self, returncode):
"""
Called when the process has stopped.
@ -1236,9 +1245,19 @@ class QemuVM(BaseNode):
log.info("QEMU process has stopped, return code: %d", returncode)
await self.stop()
if returncode != 0:
qemu_stdout = self.read_stdout()
# additional permissions need to be configured for swtpm in AppArmor if the working dir
# is located on a different partition than the partition for the root directory
if "TPM result for CMD_INIT" in qemu_stdout:
partition = self._find_partition_for_path(self.project.path)
if partition and partition.mountpoint != "/":
qemu_stdout += "\nTPM error: the project directory is not on the same partition as the root directory which can be a problem when using AppArmor.\n" \
"Please try to execute the following commands on the server:\n\n" \
"echo 'owner {}/** rwk,' | sudo tee /etc/apparmor.d/local/usr.bin.swtpm > /dev/null\n" \
"sudo service apparmor restart".format(os.path.dirname(self.project.path))
self.project.emit(
"log.error",
{"message": f"QEMU process has stopped, return code: {returncode}\n{self.read_stdout()}"},
{"message": f"QEMU process has stopped, return code: {returncode}\n{qemu_stdout}"},
)
async def stop(self):
@ -2287,19 +2306,42 @@ class QemuVM(BaseNode):
else:
raise QemuError(f"bios image '{self._bios_image}' is not accessible")
options.extend(["-bios", self._bios_image.replace(",", ",,")])
elif self._uefi:
# get the OVMF firmware from the images directory
ovmf_firmware_path = self.manager.get_abs_image_path("OVMF_CODE.fd")
old_ovmf_vars_path = os.path.join(self.working_dir, "OVMF_VARS.fd")
if os.path.exists(old_ovmf_vars_path):
# the node has its own UEFI variables store already, we must also use the old UEFI firmware
ovmf_firmware_path = self.manager.get_abs_image_path("OVMF_CODE.fd")
else:
system_ovmf_firmware_path = "/usr/share/OVMF/OVMF_CODE_4M.fd"
if os.path.exists(system_ovmf_firmware_path):
ovmf_firmware_path = system_ovmf_firmware_path
else:
# otherwise, get the UEFI firmware from the images directory
ovmf_firmware_path = self.manager.get_abs_image_path("OVMF_CODE_4M.fd")
log.info("Configuring UEFI boot mode using OVMF file: '{}'".format(ovmf_firmware_path))
options.extend(["-drive", "if=pflash,format=raw,readonly,file={}".format(ovmf_firmware_path)])
# try to use the UEFI variables store from the system first
system_ovmf_vars_path = "/usr/share/OVMF/OVMF_VARS_4M.fd"
if os.path.exists(system_ovmf_vars_path):
ovmf_vars_path = system_ovmf_vars_path
else:
# otherwise, get the UEFI variables store from the images directory
ovmf_vars_path = self.manager.get_abs_image_path("OVMF_VARS_4M.fd")
# the node should have its own copy of OVMF_VARS.fd (the UEFI variables store)
ovmf_vars_node_path = os.path.join(self.working_dir, "OVMF_VARS.fd")
if not os.path.exists(ovmf_vars_node_path):
try:
shutil.copyfile(self.manager.get_abs_image_path("OVMF_VARS.fd"), ovmf_vars_node_path)
except OSError as e:
raise QemuError("Cannot copy OVMF_VARS.fd file to the node working directory: {}".format(e))
if os.path.exists(old_ovmf_vars_path):
ovmf_vars_node_path = old_ovmf_vars_path
else:
ovmf_vars_node_path = os.path.join(self.working_dir, "OVMF_VARS_4M.fd")
if not os.path.exists(ovmf_vars_node_path):
try:
shutil.copyfile(ovmf_vars_path, ovmf_vars_node_path)
except OSError as e:
raise QemuError("Cannot copy OVMF_VARS_4M.fd file to the node working directory: {}".format(e))
options.extend(["-drive", "if=pflash,format=raw,file={}".format(ovmf_vars_node_path)])
return options
@ -2396,16 +2438,13 @@ class QemuVM(BaseNode):
) # we do not want any user networking back-end if no adapter is connected.
# Each 32 PCI device we need to add a PCI bridge with max 9 bridges
pci_devices = 4 + len(self._ethernet_adapters) # 4 PCI devices are use by default by qemu
pci_bridges = math.floor(pci_devices / 32)
# Reserve 32 devices on root pci_bridge,
# since the number of devices used by templates may differ significantly
# and pci_bridges also consume IDs.
# Move network devices to their own bridge
pci_devices_reserved = 32
pci_bridges_created = 0
if pci_bridges >= 1:
if self._qemu_version and parse_version(self._qemu_version) < parse_version("2.4.0"):
raise QemuError(
"Qemu version 2.4 or later is required to run this VM with a large number of network adapters"
)
pci_device_id = 4 + pci_bridges # Bridge consume PCI ports
pci_device_id = pci_devices_reserved
for adapter_number, adapter in enumerate(self._ethernet_adapters):
mac = int_to_macaddress(macaddress_to_int(self._mac_address) + adapter_number)
@ -2596,6 +2635,8 @@ class QemuVM(BaseNode):
"""
self._qemu_version = await self.manager.get_qemu_version(self.qemu_path)
if self._qemu_version and parse_version(self._qemu_version) < parse_version("2.4.0"):
raise QemuError("Qemu version 2.4 or later is required to run Qemu VMs")
vm_name = self._name.replace(",", ",,")
project_path = self.project.path.replace(",", ",,")
additional_options = self._options.strip()

View File

@ -233,32 +233,36 @@ class VirtualBoxVM(BaseNode):
"""
Fix the VM uuid in the case of linked clone
"""
if os.path.exists(self._linked_vbox_file()):
try:
tree = ET.parse(self._linked_vbox_file())
except ET.ParseError:
raise VirtualBoxError(
"Cannot modify VirtualBox linked nodes file. "
"File {} is corrupted.".format(self._linked_vbox_file())
linked_vbox_file = self._linked_vbox_file()
if not os.path.exists(linked_vbox_file):
raise VirtualBoxError("Cannot find VirtualBox linked node file: {}".format(linked_vbox_file))
try:
tree = ET.parse(linked_vbox_file)
except ET.ParseError:
raise VirtualBoxError(f"Cannot modify VirtualBox linked node file. "
"File {linked_vbox_file} is corrupted.")
except OSError as e:
raise VirtualBoxError(f"Cannot modify VirtualBox linked nodes file '{self._linked_vbox_file()}': {e}")
machine = tree.getroot().find("{http://www.virtualbox.org/}Machine")
if machine is not None and machine.get("uuid") != "{" + self.id + "}":
for image in tree.getroot().findall("{http://www.virtualbox.org/}Image"):
currentSnapshot = machine.get("currentSnapshot")
if currentSnapshot:
newSnapshot = re.sub(r"\{.*\}", "{" + str(uuid.uuid4()) + "}", currentSnapshot)
shutil.move(
os.path.join(self.working_dir, self._vmname, "Snapshots", currentSnapshot) + ".vdi",
os.path.join(self.working_dir, self._vmname, "Snapshots", newSnapshot) + ".vdi"
)
except OSError as e:
raise VirtualBoxError(f"Cannot modify VirtualBox linked nodes file '{self._linked_vbox_file()}': {e}")
log.info(f"VirtualBox VM '{self.name}' [{self.id}] snapshot file moved from '{currentSnapshot}' to '{newSnapshot}'")
image.set("uuid", newSnapshot)
machine = tree.getroot().find("{http://www.virtualbox.org/}Machine")
if machine is not None and machine.get("uuid") != "{" + self.id + "}":
for image in tree.getroot().findall("{http://www.virtualbox.org/}Image"):
currentSnapshot = machine.get("currentSnapshot")
if currentSnapshot:
newSnapshot = re.sub(r"\{.*\}", "{" + str(uuid.uuid4()) + "}", currentSnapshot)
shutil.move(
os.path.join(self.working_dir, self._vmname, "Snapshots", currentSnapshot) + ".vdi",
os.path.join(self.working_dir, self._vmname, "Snapshots", newSnapshot) + ".vdi",
)
image.set("uuid", newSnapshot)
machine.set("uuid", "{" + self.id + "}")
tree.write(self._linked_vbox_file())
log.info(f"VirtualBox VM '{self.name}' [{self.id}] '{linked_vbox_file}' has been patched")
machine.set("uuid", "{" + self.id + "}")
tree.write(linked_vbox_file)
async def check_hw_virtualization(self):
"""
@ -488,7 +492,7 @@ class VirtualBoxVM(BaseNode):
async def save_linked_hdds_info(self):
"""
Save linked cloned hard disks information.
Save linked cloned hard disk information.
:returns: disk table information
"""

View File

@ -352,6 +352,7 @@ class VMwareVM(BaseNode):
vnet = self._get_vnet(adapter_number)
await self._ubridge_send(f"bridge create {vnet}")
vmnet_interface = os.path.basename(self._vmx_pairs[vnet])
block_host_traffic = self.manager.config.settings.VMware.block_host_traffic
if sys.platform.startswith("darwin"):
if parse_version(platform.mac_ver()[0]) >= parse_version("11.0.0"):
@ -360,13 +361,11 @@ class VMwareVM(BaseNode):
vmnet_interface = self.manager.find_bridge_interface(vmnet_interface)
if not vmnet_interface:
raise VMwareError(f"Could not find bridge interface linked with {vmnet_interface}")
block_host_traffic = self.manager.config.get_section_config("VMware").getboolean("block_host_traffic", False)
await self._add_ubridge_ethernet_connection(vnet, vmnet_interface, block_host_traffic)
else:
# special case on macOS, we cannot bind VMnet interfaces using the libpcap
await self._ubridge_send('bridge add_nio_fusion_vmnet {name} "{interface}"'.format(name=vnet, interface=vmnet_interface))
else:
block_host_traffic = self.manager.config.VMware.block_host_traffic
await self._add_ubridge_ethernet_connection(vnet, vmnet_interface, block_host_traffic)
if isinstance(nio, NIOUDP):

View File

@ -28,10 +28,10 @@ try:
except ImportError:
from importlib import resources as importlib_resources
from ..config import Config
from ..utils import parse_version, md5sum
from ..utils.images import default_images_directory
from ..utils.asyncio import wait_run_in_executor
from .project import Project
from .appliance import Appliance
@ -43,6 +43,7 @@ from .topology import load_topology
from .gns3vm import GNS3VM
from .gns3vm.gns3_vm_error import GNS3VMError
from .controller_error import ControllerError, ControllerNotFoundError
from ..db.tasks import update_disk_checksums
from ..version import __version__
import logging
@ -72,8 +73,12 @@ class Controller:
async def start(self, computes=None):
log.info("Controller is starting")
self._install_base_configs()
self._install_builtin_disks()
await self._install_base_configs()
await self._install_custom_symbols()
installed_disks = await self._install_builtin_disks()
if installed_disks:
await update_disk_checksums(installed_disks)
server_config = Config.instance().settings.Server
Config.instance().listen_for_config_changes(self._update_config)
name = server_config.name
@ -86,7 +91,7 @@ class Controller:
if host == "0.0.0.0":
host = "127.0.0.1"
self._load_controller_vars()
await self._load_controller_vars()
if server_config.enable_ssl:
self._ssl_context = self._create_ssl_context(server_config)
@ -190,7 +195,7 @@ class Controller:
async def reload(self):
log.info("Controller is reloading")
self._load_controller_vars()
await self._load_controller_vars()
# remove all projects deleted from disk.
for project in self._projects.copy().values():
@ -234,7 +239,7 @@ class Controller:
except OSError as e:
log.error(f"Cannot write controller vars file '{self._vars_file}': {e}")
def _load_controller_vars(self):
async def _load_controller_vars(self):
"""
Reload the controller vars from disk
"""
@ -274,9 +279,9 @@ class Controller:
builtin_appliances_path = self._appliance_manager.builtin_appliances_path()
if not previous_version or \
parse_version(__version__.split("+")[0]) > parse_version(previous_version.split("+")[0]):
self._appliance_manager.install_builtin_appliances()
await self._appliance_manager.install_builtin_appliances()
elif not os.listdir(builtin_appliances_path):
self._appliance_manager.install_builtin_appliances()
await self._appliance_manager.install_builtin_appliances()
else:
log.info(f"Built-in appliances are installed in '{builtin_appliances_path}'")
@ -307,18 +312,21 @@ class Controller:
@staticmethod
def install_resource_files(dst_path, resource_name, upgrade_resources=True):
async def install_resource_files(dst_path, resource_name, upgrade_resources=True):
"""
Install files from resources to user's file system
"""
def should_copy(src, dst, upgrade_resources):
installed_resources = []
async def should_copy(src, dst, upgrade_resources):
if not os.path.exists(dst):
return True
if upgrade_resources is False:
return False
# copy the resource if it is different
return md5sum(src) != md5sum(dst)
src_md5 = await wait_run_in_executor(md5sum, src)
dst_md5 = await wait_run_in_executor(md5sum, dst)
return src_md5 != dst_md5
if hasattr(sys, "frozen") and sys.platform.startswith("win"):
resource_path = os.path.normpath(os.path.join(os.path.dirname(sys.executable), resource_name))
@ -328,14 +336,16 @@ class Controller:
else:
for entry in importlib_resources.files('gns3server').joinpath(resource_name).iterdir():
full_path = os.path.join(dst_path, entry.name)
if entry.is_file() and should_copy(str(entry), full_path, upgrade_resources):
if entry.is_file() and await should_copy(str(entry), full_path, upgrade_resources):
log.debug(f'Installing {resource_name} resource file "{entry.name}" to "{full_path}"')
shutil.copy(str(entry), os.path.join(dst_path, entry.name))
shutil.copy(str(entry), os.path.join(full_path))
installed_resources.append(full_path)
elif entry.is_dir():
os.makedirs(full_path, exist_ok=True)
Controller.install_resource_files(full_path, os.path.join(resource_name, entry.name))
await Controller.install_resource_files(full_path, os.path.join(resource_name, entry.name))
return installed_resources
def _install_base_configs(self):
async def _install_base_configs(self):
"""
At startup we copy base configs to the user location to allow
them to customize it
@ -345,11 +355,11 @@ class Controller:
log.info(f"Installing base configs in '{dst_path}'")
try:
# do not overwrite base configs because they may have been customized by the user
Controller.install_resource_files(dst_path, "configs", upgrade_resources=False)
await Controller.install_resource_files(dst_path, "configs", upgrade_resources=False)
except OSError as e:
log.error(f"Could not install base config files to {dst_path}: {e}")
def _install_builtin_disks(self):
async def _install_builtin_disks(self):
"""
At startup we copy built-in Qemu disks to the user location to allow
them to use with appliances
@ -358,10 +368,23 @@ class Controller:
dst_path = self.disks_path()
log.info(f"Installing built-in disks in '{dst_path}'")
try:
Controller.install_resource_files(dst_path, "disks")
return await Controller.install_resource_files(dst_path, "disks")
except OSError as e:
log.error(f"Could not install disk files to {dst_path}: {e}")
async def _install_custom_symbols(self):
"""
At startup we copy custom symbols to the user location to allow
them to use with appliances
"""
dst_path = self.symbols.symbols_path()
log.info(f"Installing custom symbols in '{dst_path}'")
try:
return await Controller.install_resource_files(dst_path, "custom_symbols", upgrade_resources=False)
except OSError as e:
log.error(f"Could not install custom symbols to {dst_path}: {e}")
def images_path(self):
"""
Get the image storage directory

View File

@ -110,7 +110,7 @@ class ApplianceManager:
os.makedirs(appliances_dir, exist_ok=True)
return appliances_dir
def install_builtin_appliances(self):
async def install_builtin_appliances(self):
"""
At startup we copy the built-in appliances files.
"""
@ -119,7 +119,7 @@ class ApplianceManager:
log.info(f"Installing built-in appliances in '{dst_path}'")
from . import Controller
try:
Controller.instance().install_resource_files(dst_path, "appliances")
await Controller.instance().install_resource_files(dst_path, "appliances")
except OSError as e:
log.error(f"Could not install built-in appliance files to {dst_path}: {e}")

View File

@ -18,14 +18,19 @@
import ipaddress
import aiohttp
import asyncio
import async_timeout
import socket
import json
import sys
import io
from fastapi import HTTPException
from aiohttp import web
if sys.version_info >= (3, 11):
from asyncio import timeout as asynctimeout
else:
from async_timeout import timeout as asynctimeout
from ..utils import parse_version
from ..utils.asyncio import locking
from ..controller.controller_error import (
@ -453,10 +458,11 @@ class Compute:
# FIXME: slow down number of compute events
self._controller.notification.controller_emit("compute.updated", self.asdict())
else:
if action == "log.error":
log.error(event.pop("message"))
await self._controller.notification.dispatch(
action, event, project_id=project_id, compute_id=self.id
action,
event,
project_id=project_id,
compute_id=self.id
)
else:
if response.type == aiohttp.WSMsgType.CLOSE:
@ -503,7 +509,7 @@ class Compute:
return self._getUrl(path)
async def _run_http_query(self, method, path, data=None, timeout=120, raw=False):
async with async_timeout.timeout(delay=timeout):
async with asynctimeout(delay=timeout):
url = self._getUrl(path)
headers = {"content-type": "application/json"}
chunked = None

View File

@ -249,6 +249,7 @@ class VirtualBoxGNS3VM(BaseGNS3VM):
return True
return False
async def list(self):
"""
List all VirtualBox VMs
@ -269,8 +270,8 @@ class VirtualBoxGNS3VM(BaseGNS3VM):
# get a NAT interface number
nat_interface_number = await self._look_for_interface("nat")
if nat_interface_number < 0:
raise GNS3VMError(f'VM "{self.vmname}" must have a NAT interface configured in order to start')
if nat_interface_number < 0 and await self._look_for_interface("natnetwork") < 0:
raise GNS3VMError(f'VM "{self.vmname}" must have a NAT interface or NAT Network configured in order to start')
if sys.platform.startswith("darwin") and parse_version(self._system_properties["API version"]) >= parse_version("7_0"):
# VirtualBox 7.0+ on macOS requires a host-only network interface
@ -339,42 +340,68 @@ class VirtualBoxGNS3VM(BaseGNS3VM):
elif vm_state == "paused":
args = [self._vmname, "resume"]
await self._execute("controlvm", args)
ip_address = "127.0.0.1"
try:
# get a random port on localhost
with socket.socket() as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((ip_address, 0))
api_port = s.getsockname()[1]
except OSError as e:
raise GNS3VMError(f"Error while getting random port: {e}")
if await self._check_vbox_port_forwarding():
# delete the GNS3VM NAT port forwarding rule if it exists
log.info(f"Removing GNS3VM NAT port forwarding rule from interface {nat_interface_number}")
await self._execute("controlvm", [self._vmname, f"natpf{nat_interface_number}", "delete", "GNS3VM"])
log.info("Retrieving IP address from GNS3 VM...")
ip = await self._get_ip_from_guest_property()
if ip:
self.ip_address = ip
else:
# if we can't get the IP address from the guest property, we try to get it from the GNS3 server (a NAT interface is required)
if nat_interface_number < 0:
raise GNS3VMError("Could not find guest IP address for {}".format(self.vmname))
log.warning("Could not find IP address from guest property, trying to get it from GNS3 server")
ip_address = "127.0.0.1"
try:
# get a random port on localhost
with socket.socket() as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((ip_address, 0))
api_port = s.getsockname()[1]
except OSError as e:
raise GNS3VMError("Error while getting random port: {}".format(e))
# add a GNS3VM NAT port forwarding rule to redirect 127.0.0.1 with random port to the port in the VM
log.info(f"Adding GNS3VM NAT port forwarding rule with port {api_port} to interface {nat_interface_number}")
await self._execute(
"controlvm",
[self._vmname, f"natpf{nat_interface_number}", f"GNS3VM,tcp,{ip_address},{api_port},,{self.port}"],
)
if await self._check_vbox_port_forwarding():
# delete the GNS3VM NAT port forwarding rule if it exists
log.info("Removing GNS3VM NAT port forwarding rule from interface {}".format(nat_interface_number))
await self._execute("controlvm", [self._vmname, "natpf{}".format(nat_interface_number), "delete", "GNS3VM"])
self.ip_address = await self._get_ip(interface_number, api_port)
log.info("GNS3 VM has been started with IP {}".format(self.ip_address))
# add a GNS3VM NAT port forwarding rule to redirect 127.0.0.1 with random port to the port in the VM
log.info("Adding GNS3VM NAT port forwarding rule with port {} to interface {}".format(api_port, nat_interface_number))
await self._execute("controlvm", [self._vmname, "natpf{}".format(nat_interface_number),
"GNS3VM,tcp,{},{},,{}".format(ip_address, api_port, self.port)])
self.ip_address = await self._get_ip_from_server(interface_number, api_port)
log.info("GNS3 VM has been started with IP '{}'".format(self.ip_address))
self.running = True
async def _get_ip(self, hostonly_interface_number, api_port):
async def _get_ip_from_guest_property(self):
"""
Get the IP from VirtualBox.
Get the IP from VirtualBox by retrieving the guest property (Guest Additions must be installed).
"""
remaining_try = 180 # try for 3 minutes
while remaining_try > 0:
result = await self._execute("guestproperty", ["get", self._vmname, "/VirtualBox/GuestInfo/Net/0/V4/IP"])
for info in result.splitlines():
if ':' in info:
name, value = info.split(':', 1)
if name == "Value":
return value.strip()
remaining_try -= 1
await asyncio.sleep(1)
return None
async def _get_ip_from_server(self, hostonly_interface_number, api_port):
"""
Get the IP from VirtualBox by sending a request to the GNS3 server.
Due to VirtualBox limitation the only way is to send request each
second to a GNS3 endpoint in order to get the list of the interfaces and
their IP and after that match it with VirtualBox host only.
"""
remaining_try = 300
remaining_try = 180 # try for 3 minutes
while remaining_try > 0:
try:
async with HTTPClient.get(f"http://127.0.0.1:{api_port}/v3/compute/network/interfaces") as resp:

View File

@ -58,7 +58,7 @@ class CrashReport:
Report crash to a third party service
"""
DSN = "https://847198b87dbd50ef8962901641918a08@o19455.ingest.us.sentry.io/38482"
DSN = "https://61bb46252cabeebd49ee1e09fb8ba72e@o19455.ingest.us.sentry.io/38482"
_instance = None
def __init__(self):

View File

@ -0,0 +1 @@
<svg id="f6fe4215-7336-420b-bd07-06692844737a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 67.6 65.59"><title>vrouter-logo-generic</title><circle cx="34" cy="32.75" r="19.09" style="fill:#3d4859;opacity:0.8999999761581421;isolation:isolate"/><circle cx="34.04" cy="32.79" r="11.18" style="fill:#5e7ce2;opacity:0.8999999761581421;isolation:isolate"/><path d="M44.61,7.88l20.74-5.6c1.22-.33,2,.41,1.7,1.65L62.21,24.86c-.47,2-3.1,3.65-4.17,2.62l-4.92-4.76-7.84,8.13c-1.07,1.11-2.48,1.49-3.15.85l-3.62-3.49c-.66-.64-.33-2.07.73-3.18l7.84-8.13-4.93-4.76C41.07,11.1,42.62,8.42,44.61,7.88Z" transform="translate(-1.16 -2.2)" style="fill:#0aaded;opacity:0.8999999761581421;isolation:isolate"/><path d="M26.06,62.11,5.32,67.72c-1.21.33-2-.42-1.7-1.65L8.47,45.14c.44-2,3.08-3.65,4.15-2.62l4.93,4.76,7.84-8.13c1.07-1.11,2.49-1.49,3.15-.85l3.63,3.49c.67.64.33,2.07-.72,3.18L23.61,53.1l4.91,4.76C29.6,58.9,28.05,61.58,26.06,62.11Z" transform="translate(-1.16 -2.2)" style="fill:#5e7ce2;opacity:0.8999999761581421;isolation:isolate"/><path d="M25.29,8.71l5.6,20.75c.33,1.21-.41,2-1.64,1.69L8.31,26.31c-2-.47-3.65-3.1-2.61-4.17l4.75-4.91L2.32,9.38C1.21,8.31.83,6.9,1.47,6.24L5,2.6c.64-.66,2.07-.33,3.18.73l8.13,7.86L21,6.25C22.07,5.17,24.75,6.72,25.29,8.71Z" transform="translate(-1.16 -2.2)" style="fill:#5e7ce2;opacity:0.8999999761581421;isolation:isolate"/><path d="M44.64,61.15,39,40.4c-.33-1.21.42-2,1.65-1.7l20.93,4.84c2,.46,3.65,3.09,2.62,4.16l-4.76,4.94,8.13,7.84c1.11,1.06,1.49,2.48.85,3.14L65,67.24c-.64.67-2.07.34-3.18-.72l-8.13-7.84L48.9,63.61C47.85,64.69,45.17,63.14,44.64,61.15Z" transform="translate(-1.16 -2.2)" style="fill:#0aaded;opacity:0.8999999761581421;isolation:isolate"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<svg height="59.253815" id="Andysvg" version="1.0" width="65.414536" x="0.00000000" y="0.00000000" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com">
<defs id="defs3">
<linearGradient id="linearGradient891" x1="92.437965" x2="27.674332" y1="-3.9104078" y2="91.076988" gradientTransform="matrix(0.8184166,0,0,0.530237,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient905" x1="-77.726181" x2="95.64444" y1="208.43991" y2="11.699047" gradientTransform="matrix(0.7314635,0,0,0.5932693,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<radialGradient cx="60.004654" cy="56.485935" id="radialGradient1132" r="68.589226" gradientTransform="matrix(0.8184166,0,0,0.530237,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop1134" offset="0" style="stop-color:#8bb7df;stop-opacity:1.0000000;"/>
<stop id="stop1136" offset="0.7621" style="stop-color:#2a6092;stop-opacity:1.0000000;"/>
<stop id="stop1135" offset="1" style="stop-color:#375e82;stop-opacity:1.0000000;"/>
</radialGradient>
<linearGradient id="linearGradient1140" x1="45.685757" x2="41.96706" y1="110.4447" y2="232.24953" gradientTransform="matrix(1.2743811,0,0,0.3405213,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1144" x1="31.449743" x2="31.617281" y1="203.49899" y2="251.21892" gradientTransform="matrix(1.4044089,0,0,0.3089952,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1146" x1="39.810947" x2="17.87653" y1="90.197021" y2="113.71949" gradientTransform="matrix(0.8811179,0,0,0.4925045,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1156" x1="25.220816" x2="25.220816" y1="178.48862" y2="234.26866" gradientTransform="matrix(1.6156202,0,0,0.2685999,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1157" x1="51.46093" x2="-16.224497" y1="269.85831" y2="176.28694" gradientTransform="matrix(1.6156202,0,0,0.2685999,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
</defs>
<rect height="5.4088969" id="rect1155" style="fill: url(#linearGradient1156); fill-opacity: 1; fill-rule: evenodd; stroke: url(#linearGradient1157); stroke-width: 0.953444pt;" width="38.405891" x="12.350429" y="36.575089"/>
<path d="M 0.19287398,54.885213 C -0.67386281,56.46268 1.5579198,59.253939 3.3933636,59.253939 L 62.069027,59.253939 C 63.628857,59.253939 65.976201,57.281205 65.269522,55.925378 L 58.655165,43.235277 C 58.145696,42.257819 57.005954,41.779036 55.881408,41.779036 L 8.9408812,41.779036 C 8.0135624,41.779036 7.0317541,42.438291 6.5938539,43.235277 L 0.19287398,54.885213 z " id="path1139" style="fill: url(#linearGradient1140); fill-opacity: 1; fill-rule: evenodd; stroke-width: 1.44735pt;"/>
<rect height="39.110481" id="rect1137" rx="3.6272225" ry="3.536587" style="fill: url(#linearGradient905); fill-opacity: 1; fill-rule: evenodd; stroke-width: 1.62827;" width="48.220726" x="7.4732022" y="-0.010164791"/>
<rect height="24.74659" id="rect1131" style="fill: url(#radialGradient1132); fill-opacity: 1; fill-rule: evenodd; stroke: url(#linearGradient891); stroke-width: 0.965037pt;" width="38.813015" x="12.390426" y="6.027596"/>
<path d="M 8.5906358,19.782157 L 8.3772707,34.032521 C 8.3432557,36.304242 9.6712558,37.75887 12.004493,37.777143 L 38.568566,37.985175 L 41.128957,32.160207 L 11.471076,31.952177 L 11.257713,19.678141 L 8.5906358,19.782157 z " id="path1145" style="fill: url(#linearGradient1146); fill-opacity: 1; fill-rule: evenodd; stroke-width: 1pt;"/>
<path d="M 2.7205883,54.675124 C 2.1113822,55.866786 2.9089235,57.975349 4.9701318,57.975349 L 60.179981,57.975349 C 61.276346,57.975349 62.926231,56.48511 62.429524,55.460899 L 57.78047,45.874547 C 57.422369,45.136152 56.621274,44.774474 55.830865,44.774474 L 8.8693353,44.774468 C 8.2175462,44.774468 7.5274604,45.272486 7.2196723,45.874547 L 2.7205883,54.675124 z " id="path1143" style="fill: url(#linearGradient1144); fill-opacity: 1; fill-rule: evenodd; stroke-width: 1pt;"/>
<rect x="12.664" y="6.294" width="38.092" height="24.48" style="fill: rgb(255, 255, 255);"/>
<path d="M 28.718 20.949 L 28.718 18.69 L 27.09 20.318 C 27.266 20.44 27.431 20.541 27.587 20.622 C 27.741 20.704 27.887 20.768 28.023 20.815 C 28.159 20.864 28.284 20.896 28.399 20.918 C 28.516 20.939 28.622 20.948 28.718 20.949 M 37.035 20.762 C 37.038 20.764 37.054 20.778 37.082 20.796 C 37.113 20.815 37.155 20.839 37.212 20.862 C 37.269 20.886 37.339 20.91 37.426 20.927 C 37.512 20.945 37.613 20.956 37.728 20.956 C 37.825 20.956 37.931 20.948 38.048 20.927 C 38.164 20.907 38.292 20.875 38.429 20.826 C 38.566 20.779 38.713 20.716 38.871 20.633 C 39.029 20.551 39.196 20.449 39.374 20.325 L 38.14 19.116 L 34.048 15.009 L 32.253 16.805 L 29.832 14.307 L 23.753 20.317 C 23.931 20.442 24.098 20.542 24.256 20.624 C 24.413 20.707 24.561 20.771 24.697 20.818 C 24.835 20.866 24.961 20.899 25.078 20.919 C 25.195 20.939 25.301 20.948 25.398 20.948 C 25.513 20.948 25.614 20.936 25.7 20.919 C 25.785 20.901 25.856 20.878 25.914 20.855 C 25.97 20.831 26.013 20.806 26.043 20.788 C 26.072 20.769 26.088 20.755 26.091 20.753 L 28.835 18.009 L 29.816 17.068 L 32.534 19.786 L 33.483 20.762 C 33.485 20.764 33.501 20.778 33.53 20.796 C 33.56 20.815 33.602 20.839 33.66 20.862 C 33.716 20.886 33.788 20.91 33.873 20.927 C 33.959 20.945 34.06 20.956 34.176 20.956 C 34.273 20.956 34.379 20.948 34.496 20.927 C 34.613 20.907 34.74 20.875 34.877 20.826 C 35.014 20.779 35.161 20.716 35.319 20.633 C 35.476 20.551 35.644 20.449 35.823 20.325 L 33.642 18.19 L 34.047 17.785 L 35.934 19.672 L 37.035 20.762 M 37.011 9.382 L 42.371 18.668 L 37.011 27.955 L 26.288 27.955 L 20.926 18.668 L 26.288 9.382 L 37.011 9.382 Z" style="fill: rgb(13, 89, 127); fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path58" bx:origin="0 0"/>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<svg id="svg1998" width="51.358818" height="47.630692" version="1.0" xmlns="http://www.w3.org/2000/svg">
<defs id="defs2001">
<marker orient="auto" refY="0" refX="0" id="Arrow2Lstart" style="overflow:visible">
<path id="path11918" style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " transform="matrix(1.1,0,0,1.1,1.1,0)"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Send" style="overflow:visible">
<path id="path11921" d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none" transform="matrix(-0.2,0,0,-0.2,-1.2,0)"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Lstart" style="overflow:visible">
<path id="path11936" d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none" transform="matrix(0.8,0,0,0.8,10,0)"/>
</marker>
<linearGradient id="linearGradient9199" gradientUnits="userSpaceOnUse" gradientTransform="matrix(24.666332,1.3331909e-2,-1.2883406e-2,23.708747,-8.6563136,-4.6316275)" x1="2.1178279" y1="0.30649999" x2="-0.4954865" y2="0.30649999">
<stop style="stop-opacity: 1; stop-color: rgb(239, 239, 239);" offset="0" id="stop8333"/>
<stop style="stop-opacity: 1; stop-color: rgb(255, 255, 255);" offset="1" id="stop8335"/>
</linearGradient>
</defs>
<path id="path11907" d="M 1.8402723,44.565612 L 1.8402723,47.615693 L 44.293781,47.615693 L 44.293781,44.565612 L 1.8402723,44.565612" style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001"/>
<path id="path11020" d="M 44.370594,6.1851672 L 51.194316,1.0980117 L 51.358819,41.344844 L 44.266438,47.63069 L 44.370594,6.1851672" style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001"/>
<path id="path2037" d="M 0.062500355,5.0439492 L 0.062500355,46.326915 L 44.31814,46.326915 L 44.31814,5.0439492 L 0.062500355,5.0439492" style="fill-opacity: 1; stroke: none; stroke-width: 0.001; fill: rgb(239, 239, 239);"/>
<path id="path2041" d="M -0.028418806,5.1647552 L 5.5982489,0.11782966 L 50.022311,0.14184042 L 44.346312,5.1887393 L -0.028418806,5.1647552" style="fill:url(#linearGradient9199);fill-opacity:1;stroke:none;stroke-width:0.001"/>
<path id="path2045" d="M 44.228586,5.0887264 L 49.976169,0.12831483 L 49.976169,41.348635 L 44.228586,46.309047 L 44.228586,5.0887264" style="fill-opacity: 1; stroke: none; stroke-width: 0.001; fill: rgb(223, 223, 223);"/>
<path class="st0" d="M 40.254 38.435 L 24.509 13.686 C 23.584 12.049 20.925 12.049 19.901 13.789 L 4.254 38.435 L 9.369 38.435 L 14.073 30.969 L 24.099 30.969 L 26.753 26.67 L 16.731 26.67 L 22.255 18.082 L 35.039 38.435 L 40.254 38.435 Z" style="fill: rgb(24, 61, 100);"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="_图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 66 44.52">
<defs>
<style>
.cls-1 {
fill: none;
}
.cls-2 {
clip-path: url(#clippath);
}
.cls-3 {
fill: #fff;
}
.cls-4 {
fill: #abbbed;
}
.cls-5 {
fill: #96aae9;
}
.cls-6 {
fill: #7989bb;
}
</style>
<clipPath id="clippath">
<rect class="cls-1" x=".1" y="8.18" width="64.89" height="27.34"/>
</clipPath>
</defs>
<rect x="1.34" y="23.21" width="49.53" height="13.54"/>
<polygon points="50.88 23.21 50.88 36.75 66 23.21 66 9.64 50.88 23.21"/>
<rect class="cls-1" x=".1" y="8.18" width="64.89" height="27.34"/>
<rect class="cls-1" x=".1" y="8.18" width="64.89" height="27.34"/>
<rect class="cls-5" x=".22" y="21.87" width="49.53" height="13.54"/>
<polygon class="cls-4" points="15.34 8.3 .22 21.87 49.75 21.87 64.87 8.3 15.34 8.3"/>
<polygon class="cls-6" points="49.75 21.87 49.75 35.4 64.87 21.87 64.87 8.3 49.75 21.87"/>
<polygon class="cls-3" points="33.17 12.87 25.08 14.56 31.96 17.27 40.04 15.58 33.17 12.87"/>
<polygon class="cls-3" points="24.77 15.66 28.21 17.02 14.88 19.81 16.6 20.49 9.1 19.98 9.73 17.78 11.45 18.46 24.77 15.66"/>
<polygon class="cls-3" points="36.9 13.12 40.33 14.48 53.69 11.68 55.41 12.35 56 10.15 48.54 9.64 50.26 10.32 36.9 13.12"/>
<polygon class="cls-3" points="35.71 17.52 39.75 16.68 44.9 18.71 46.92 18.29 46.33 20.49 38.83 19.98 40.86 19.56 35.71 17.52"/>
<polygon class="cls-3" points="25.39 13.46 29.44 12.61 24.28 10.58 26.29 10.15 18.83 9.64 18.2 11.85 20.24 11.42 25.39 13.46"/>
<g class="cls-2">
<path class="cls-3" d="m25.84,29.93c0-.2-.07-.35-.21-.46-.14-.11-.39-.22-.74-.34s-.64-.23-.86-.34c-.73-.36-1.09-.85-1.09-1.47,0-.31.09-.58.27-.82.18-.24.44-.42.77-.56s.7-.2,1.12-.2.77.07,1.09.21c.32.15.57.35.74.62.18.26.26.57.26.91h-1.35c0-.23-.07-.41-.21-.53-.14-.13-.33-.19-.57-.19s-.43.05-.57.16c-.14.1-.21.24-.21.41,0,.15.08.27.23.39.16.12.42.24.81.36.39.12.71.26.95.4.61.35.91.83.91,1.45,0,.49-.18.88-.56,1.15-.37.28-.88.42-1.52.42-.46,0-.87-.08-1.24-.25s-.65-.39-.83-.67c-.19-.28-.28-.61-.28-.98h1.35c0,.3.08.52.23.67.16.14.41.21.76.21.22,0,.4-.05.53-.15.13-.1.2-.23.2-.41"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,498 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1998"
sodipodi:version="0.32"
inkscape:version="0.92.1 r15371"
width="78"
height="60"
version="1.0"
sodipodi:docname="Cisco-FMCv.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<title
id="title3303">ASA</title>
<metadata
id="metadata2003">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<cc:license
rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
<dc:title>ASA</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Jeremy Grossmann</dc:title>
</cc:Agent>
</dc:creator>
<dc:description>Created for the GNS-3 project (www.gns3.net)</dc:description>
<dc:publisher>
<cc:Agent>
<dc:title>GNS-3</dc:title>
</cc:Agent>
</dc:publisher>
</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>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2001">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 23.815346 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="51.358818 : 23.815346 : 1"
inkscape:persp3d-origin="25.679409 : 15.876897 : 1"
id="perspective43" />
<linearGradient
inkscape:collect="always"
id="linearGradient10123">
<stop
style="stop-color:#e4405c;stop-opacity:1;"
offset="0"
id="stop10125" />
<stop
style="stop-color:#e4405c;stop-opacity:0;"
offset="1"
id="stop10127" />
</linearGradient>
<linearGradient
id="linearGradient8331">
<stop
style="stop-color:#6e8caa;stop-opacity:1;"
offset="0"
id="stop8333" />
<stop
style="stop-color:#dde3ef;stop-opacity:1;"
offset="1"
id="stop8335" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6603">
<stop
style="stop-color:#506eaa;stop-opacity:1;"
offset="0"
id="stop6605" />
<stop
style="stop-color:#506eaa;stop-opacity:0;"
offset="1"
id="stop6607" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6587">
<stop
style="stop-color:#506eaa;stop-opacity:1;"
offset="0"
id="stop6589" />
<stop
style="stop-color:#506eaa;stop-opacity:0;"
offset="1"
id="stop6591" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path11918"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(1.1,0,0,1.1,1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path11921"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;marker-start:none"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path11936"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;marker-start:none"
transform="matrix(0.8,0,0,0.8,10,0)"
inkscape:connector-curvature="0" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6587"
id="linearGradient6593"
x1="3.95626"
y1="0.64267641"
x2="-1.2664427"
y2="0.62730032"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.060042,0,0,1.074658,-0.00394248,-0.356572)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6603"
id="linearGradient6609"
x1="2.2801981"
y1="1.4519272"
x2="-0.41311559"
y2="1.4649135"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.060042,0,0,1.074658,-0.00394248,-0.356572)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10123"
id="linearGradient10129"
x1="1.3990936"
y1="1.4711363"
x2="0.49966058"
y2="0.56367606"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.117962,0,0,1.035008,-0.040973,-0.00678868)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8331"
id="linearGradient6875"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(25.476818,0,0,24.653619,16.134224,-3.6500723)"
x1="2.1178279"
y1="0.30649999"
x2="-0.4954865"
y2="0.30649999" />
<inkscape:perspective
id="perspective418"
inkscape:persp3d-origin="283.46457 : 188.97638 : 1"
inkscape:vp_z="566.92914 : 283.46457 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 283.46457 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3145"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8331"
id="linearGradient6875-3"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(36.770425,0,0,24.653619,-12.632753,-3.5809148)"
x1="2.1178279"
y1="0.30649999"
x2="-0.4954865"
y2="0.30649999" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8331"
id="linearGradient6875-35"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(25.476818,0,0,24.653619,-8.67999,-3.71127)"
x1="2.1178279"
y1="0.30649999"
x2="-0.4954865"
y2="0.30649999" />
</defs>
<sodipodi:namedview
inkscape:window-height="1031"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="11.313708"
inkscape:cx="68.617052"
inkscape:cy="48.72766"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:current-layer="svg1998"
showgrid="false"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<path
id="path11907"
d="m 3.5551186,56.156296 v 2.959818 H 70.766282 V 56.156296 H 3.5551186"
style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:1.23817813"
inkscape:connector-curvature="0" />
<path
id="path11020"
d="M 70.872922,8.6798666 77.855353,2.4891617 77.840347,53.678671 70.766282,59.116114 70.872856,8.6798666"
style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.99648201"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0" />
<path
id="path2037"
d="M 0.22635933,6.2224304 V 55.734506 H 70.747763 V 6.2224304 H 0.22635933"
style="fill:#6e8caa;fill-opacity:1;stroke:none;stroke-width:1.38291967"
inkscape:connector-curvature="0" />
<path
id="path2041"
d="m 25.05111,6.5318764 5.808715,-5.251224 h 45.883749 l -5.859667,5.251224 H 25.05111"
style="fill:url(#linearGradient6875);fill-opacity:1;stroke:none;stroke-width:0.99648201"
inkscape:connector-curvature="0" />
<path
id="path2045"
d="M 70.747763,6.2224304 76.53739,1.2372012 V 42.663756 l -5.789627,4.985229 V 6.2224304"
style="fill:#6e8296;fill-opacity:1;stroke:none;stroke-width:1.01408982"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99412811"
d="M 63.650138,-114.23927 H 93.96577 v -2.43552 l 6.51758,4.87105 -6.51758,5.27408 v -2.43553 H 63.650138 v -5.27408"
id="path39" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#ffffff;stroke-width:0.99412817;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="M 53.221305,-111.80373 H 65.932861"
id="path61" />
<path
inkscape:connector-curvature="0"
style="fill:#ff545c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99063075"
d="M 40.583264,56.043952 H 25.452717 v -5.604136 h 15.130547 v 5.604136"
id="path99" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#e1e1e1;stroke-width:0.44807994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="M 40.583264,56.043952 H 25.599726"
id="path101" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#e1e1e1;stroke-width:0.44672814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m 25.689994,50.439816 h 14.89327 v 5.604136"
id="path103" />
<path
inkscape:connector-curvature="0"
style="fill:#ff545c;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.44672814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="M 70.883907,56.043952 H 55.737538 v -5.604136 h 15.146369 v 5.604136"
id="path105" />
<path
inkscape:connector-curvature="0"
style="fill:#ff545c;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.44672814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="M 63.688395,56.043952 H 48.526214 v -5.604136 h 15.162181 v 5.604136"
id="path107" />
<path
inkscape:connector-curvature="0"
style="fill:#ff545c;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.44672814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="M 48.526214,56.043952 H 33.387752 v -5.604136 h 15.138462 v 5.604136"
id="path109" />
<path
inkscape:connector-curvature="0"
style="fill:#ff2833;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.46981236;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m 73.772792,48.48091 2.530987,-2.488522 v -6.191459 l -2.530987,2.474883 v 6.205098"
id="path111" />
<path
inkscape:connector-curvature="0"
style="fill:#ff2833;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.44672814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m 73.772792,53.812465 2.530987,-1.971233 v -5.610305 l -2.530987,1.965074 v 5.616464"
id="path125" />
<path
inkscape:connector-curvature="0"
style="fill:#ff2833;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.44672814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m 70.883907,56.043952 2.888885,-2.231487 v -5.616464 l -2.888885,2.243815 v 5.604136"
id="path127" />
<path
inkscape:connector-curvature="0"
style="fill:#ff545c;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.44672814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="M 55.737538,50.439816 H 40.583264 v -5.610295 h 15.154274 v 5.610295"
id="path133" />
<path
inkscape:connector-curvature="0"
style="fill:#ff545c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99063075"
d="M 40.583264,50.439816 H 25.452717 v -5.610305 h 15.130547 v 5.610305"
id="path135" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#e1e1e1;stroke-width:0.44942763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="M 40.583264,50.439816 H 25.509457"
id="path137" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#e1e1e1;stroke-width:0.44878906;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m 25.552266,44.829521 h 15.030998 v 5.610295"
id="path139" />
<path
inkscape:connector-curvature="0"
style="fill:#ff545c;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.44672814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="M 70.883907,50.439816 H 55.737538 v -5.610295 h 15.146369 v 5.610295"
id="path141" />
<path
inkscape:connector-curvature="0"
style="fill:#ff2833;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.45488474;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m 70.883907,50.439816 2.888885,-2.326496 v -5.810658 l -2.888885,2.320122 v 5.817032"
id="path145" />
<path
id="path2041-9"
d="M 0.23689523,6.4706772 6.0456103,1.2194547 H 51.92936 L 46.069691,6.4706772 H 0.23689523"
style="fill:url(#linearGradient6875-35);fill-opacity:1;stroke:none;stroke-width:0.99648201"
inkscape:connector-curvature="0" />
<path
id="path2041-5"
d="M 0.23689523,6.6010339 8.6205533,1.3498071 H 74.84408 L 66.386884,6.6010339 H 0.23689523"
style="fill:url(#linearGradient6875-3);fill-opacity:1;stroke:none;stroke-width:1.19714344"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.43419823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 25.4631,6.6345316 25.34143,56.257182 25.4631,6.6345316"
id="path987"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.45158434;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 32.697436,1.4761415 25.481582,6.6155667 32.697436,1.4761415"
id="path987-2"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.44617558;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 25.397623,28.812118 0.47800664,28.706997 25.397623,28.812118"
id="path987-7"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:22.19543457px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#e1e1e1;fill-opacity:1;stroke:#e1e1e1;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="3.4368773"
y="27.197458"
id="text1030"
transform="scale(1.1150382,0.89683024)"><tspan
sodipodi:role="line"
id="tspan1028"
x="3.4368773"
y="27.197458"
style="fill:#e1e1e1;fill-opacity:1;stroke:#e1e1e1;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">X</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:cmex10;-inkscape-font-specification:cmex10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-20.137201"
y="37.709763"
id="text1038"><tspan
sodipodi:role="line"
id="tspan1036"
x="-20.137201"
y="50.984001" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.4306345px;line-height:125%;font-family:cmex10;-inkscape-font-specification:cmex10;letter-spacing:0px;word-spacing:0px;fill:#e1e1e1;fill-opacity:1;stroke:#e1e1e1;stroke-width:1.10999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="7.406137"
y="41.795387"
id="text1042"
transform="matrix(1.2652956,0.14571288,-0.10430839,0.77831689,0,0)"><tspan
sodipodi:role="line"
id="tspan1040"
x="7.406137"
y="41.795387"
style="fill:#e1e1e1;fill-opacity:1;stroke:#e1e1e1;stroke-width:1.10999999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">q</tspan></text>
<path
id="path3151"
d="m 31.317035,20.132255 h 19.167626 v -1.277787 l 4.122053,2.556266 -4.122053,2.768616 V 22.901598 H 31.317035 Z"
style="fill:#000000;fill-opacity:1"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 31.443673,19.752306 h 18.646458 v -1.277787 l 4.009979,2.556266 -4.009979,2.768616 V 22.521649 H 31.443673 Z"
id="path134"
inkscape:connector-curvature="0" />
<path
id="path3943"
d="M 59.823791,27.288424 H 43.953868 v -1.278496 l -4.32815,2.556284 4.32815,2.769324 v -1.278478 h 15.869923 z"
style="fill:#000000;fill-opacity:1"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="M 60.077102,26.781838 H 44.207179 v -1.278496 l -4.32815,2.556283 4.32815,2.769325 v -1.278478 h 15.869923 z"
id="path136"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 67.290672,40.200944 -2.679324,3.40859 -9.686817,-8.09495 2.679307,-3.620941 z"
id="path142"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.27946547"
d="m 67.290672,40.200944 -2.679324,3.40859 -9.686817,-8.09495 2.679307,-3.620941 9.686834,8.307301"
id="path144"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="M 32.253177,22.308554 C 31.428756,30.615855 37.199634,38.070849 45.0316,38.923174 53.069574,39.987867 60.283198,34.023737 61.313751,25.716436 62.138084,17.409117 56.367259,9.9541413 48.329196,9.1018153 40.497354,8.0371403 33.077616,14.001236 32.253177,22.308554 l 2.061053,0.213095 c 0.824439,-7.029531 7.007457,-12.141354 13.80887,-11.289738 7.007545,0.63923 11.954002,7.242608 11.129563,14.271431 -0.824404,7.029549 -7.00751,12.141354 -14.014967,11.502814 C 38.436283,36.153832 33.489809,29.550472 34.31423,22.521649 Z"
id="path146"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.27946547"
d="M 32.253177,22.308554 C 31.428756,30.615855 37.199634,38.070849 45.0316,38.923174 53.069574,39.987867 60.283198,34.023737 61.313751,25.716436 62.138084,17.409117 56.367259,9.9541413 48.329196,9.1018153 40.497354,8.0371403 33.077616,14.001236 32.253177,22.308554"
id="path148"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.27946547"
d="m 34.31423,22.521649 c 0.824439,-7.029531 7.007457,-12.141354 13.80887,-11.289738 7.007545,0.63923 11.954002,7.242608 11.129563,14.271431 -0.824404,7.029549 -7.00751,12.141354 -14.014967,11.502814 C 38.436283,36.153832 33.489809,29.550472 34.31423,22.521649"
id="path150"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="M 30.398291,22.947802 C 29.573887,31.255103 35.344766,38.71008 43.38274,39.77479 51.214688,40.627115 58.634356,34.662985 59.458794,26.355684 60.283198,18.048365 54.718417,10.593389 46.680372,9.7410633 38.642397,8.6763713 31.428756,14.640501 30.398291,22.947802 l 2.061,0.212368 c 0.824421,-7.028804 7.007528,-12.141318 14.014984,-11.289029 6.801413,0.639248 11.74787,7.241917 10.923466,14.271449 C 56.573373,33.172139 50.390285,38.283926 43.588854,37.644696 36.581327,36.79308 31.634852,30.402779 32.459291,23.16017 Z"
id="path152"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.27946547"
d="M 30.398291,22.947802 C 29.573887,31.255103 35.344766,38.71008 43.38274,39.77479 51.214688,40.627115 58.634356,34.662985 59.458794,26.355684 60.283198,18.048365 54.718417,10.593389 46.680372,9.7410633 38.642397,8.6763713 31.428756,14.640501 30.398291,22.947802"
id="path154"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.27946547"
d="m 32.459291,23.16017 c 0.824421,-7.028804 7.007528,-12.141318 14.014984,-11.289029 6.801413,0.639248 11.74787,7.241917 10.923466,14.271449 C 56.573373,33.172139 50.390285,38.283926 43.588854,37.644696 36.581327,36.79308 31.634852,30.402779 32.459291,23.16017"
id="path156"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 216 KiB

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<svg id="svg1998" width="66.000435" height="44.5159" version="1.0" xmlns="http://www.w3.org/2000/svg">
<defs id="defs2001">
<marker orient="auto" refY="0" refX="0" id="Arrow2Lstart" style="overflow:visible">
<path id="path11918" style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " transform="matrix(1.1,0,0,1.1,1.1,0)"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Send" style="overflow:visible">
<path id="path11921" d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none" transform="matrix(-0.2,0,0,-0.2,-1.2,0)"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Lstart" style="overflow:visible">
<path id="path11936" d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none" transform="matrix(0.8,0,0,0.8,10,0)"/>
</marker>
<linearGradient id="linearGradient2216" gradientUnits="userSpaceOnUse" gradientTransform="matrix(15.252829,0,0,14.082619,53.467529,3.4188377)" x1="-1.0929121" y1="0.63145506" x2="-4.5832458" y2="0.070047863">
<stop style="stop-opacity: 1; stop-color: rgb(68, 70, 84);" offset="0" id="stop9314"/>
<stop style="stop-color:#ffffff;stop-opacity:0.94117647;" offset="1" id="stop9316"/>
</linearGradient>
</defs>
<rect style="opacity:1;fill:#000000;fill-opacity:0.39215687;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect4558" width="64.552505" height="41.53862" x="1.4479325" y="2.9772801" ry="11.631706" rx="32.212925"/>
<rect style="opacity: 1; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 0.015; stroke-linecap: square; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1; fill: rgb(68, 70, 84);" id="rect9971" width="64.499474" height="42.154343" x="0.0625" y="0.18084908" ry="11.557454" rx="32.249737"/>
<g id="g4160">
<path id="path4815" d="M 64.514069,11.541297 L 64.457031,10.955643 L 64.342949,10.36999 L 64.152814,9.8038604 L 63.867612,9.2182077 L 63.487345,8.6520765 L 63.050034,8.0859452 L 62.517657,7.5393369 L 61.909226,7.0122499 L 61.224742,6.4851607 L 60.464203,5.9775955 L 59.646626,5.4700289 L 58.752993,4.9819859 L 57.783307,4.4939413 L 56.75658,4.0644625 L 55.6538,3.6349838 L 54.493981,3.2055052 L 53.296132,2.8150692 L 52.022232,2.4636777 L 50.710303,2.1122862 L 49.341334,1.7999375 L 47.934339,1.5071117 L 46.489316,1.2338059 L 45.006267,0.99954576 L 43.504204,0.76528425 L 41.964114,0.58958842 L 40.385997,0.43341443 L 38.788867,0.29676153 L 37.191738,0.19915292 L 35.575597,0.12106555 L 33.940437,0.06250017 L 32.324296,0.06250017 L 32.324296,0.06250017 L 30.689136,0.06250017 L 29.053981,0.12106555 L 27.45685,0.19915292 L 25.840705,0.29676153 L 24.243576,0.43341443 L 22.684472,0.58958842 L 21.125372,0.76528425 L 19.623307,0.99954576 L 18.140258,1.2338059 L 16.695234,1.5071117 L 15.28824,1.7999375 L 13.919273,2.1122862 L 12.607342,2.4636777 L 11.333442,2.8150692 L 10.135592,3.2055052 L 8.9757693,3.6349838 L 7.8729941,4.0644625 L 6.8462664,4.4939413 L 5.8765785,4.9819859 L 4.9829488,5.4700289 L 4.1653682,5.9775955 L 3.4048335,6.4851607 L 2.7203448,7.0122499 L 2.1309311,7.5393369 L 1.5795405,8.0859452 L 1.1422325,8.6520765 L 0.76195982,9.2182077 L 0.47676065,9.8038604 L 0.26760898,10.36999 L 0.15353084,10.955643 L 0.11550327,11.541297 L 0.11550327,11.541297 L 0.15353084,12.12695 L 0.26760898,12.693081 L 0.47676065,13.278734 L 0.76195982,13.825344 L 1.1422325,14.410996 L 1.5795405,14.957605 L 2.1309311,15.523736 L 2.7203448,16.070348 L 3.4048335,16.597435 L 4.1653682,17.085479 L 4.9829488,17.593043 L 5.8765785,18.100608 L 6.8462664,18.549609 L 7.8729941,18.998611 L 8.9757693,19.447613 L 10.135592,19.857571 L 11.333442,20.248007 L 12.607342,20.599396 L 13.919273,20.950787 L 15.28824,21.263135 L 16.695234,21.575486 L 18.140258,21.829265 L 19.623307,22.083049 L 21.125372,22.297787 L 22.684472,22.473485 L 24.243576,22.629661 L 25.840705,22.766312 L 27.45685,22.863921 L 29.053981,22.942009 L 30.689136,23.000574 L 32.324296,23.000574 L 32.324296,23.000574 L 33.940437,23.000574 L 35.575597,22.942009 L 37.191738,22.863921 L 38.788867,22.766312 L 40.385997,22.629661 L 41.964114,22.473485 L 43.504204,22.297787 L 45.006267,22.083049 L 46.489316,21.829265 L 47.934339,21.575486 L 49.341334,21.263135 L 50.710303,20.950787 L 52.022232,20.599396 L 53.296132,20.248007 L 54.493981,19.857571 L 55.6538,19.447613 L 56.75658,18.998611 L 57.783307,18.549609 L 58.752993,18.100608 L 59.646626,17.593043 L 60.464203,17.085479 L 61.224742,16.597435 L 61.909226,16.070348 L 62.517657,15.523736 L 63.050034,14.957605 L 63.487345,14.410996 L 63.867612,13.825344 L 64.152814,13.278734 L 64.342949,12.693081 L 64.457031,12.12695 L 64.514069,11.541297" style="fill:url(#linearGradient2216);fill-opacity:1;stroke:none;stroke-width:0.01928605;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path id="path4819" d="M 33.023738,8.6936939 L 37.664889,10.327433 L 48.909313,5.4458969 L 53.946665,7.0599533 L 51.229891,3.0248142 L 38.061087,3.0248142 L 43.475766,4.225514 L 33.023738,8.6936939" style="fill:#000000;stroke:none;stroke-width:0.001"/>
<path id="path4821" d="M 31.08049,13.161874 L 26.439334,11.528132 L 15.591104,16.429352 L 10.176425,14.775929 L 12.874332,19.244109 L 26.439334,19.244109 L 20.628458,17.630052 L 31.08049,13.161874" style="fill:#000000;stroke:none;stroke-width:0.001"/>
<path id="path4823" d="M 11.327278,4.225514 L 15.968435,2.611458 L 27.212859,7.0599533 L 32.25021,5.8592533 L 29.552303,9.8943939 L 16.364632,9.8943939 L 21.779313,8.6936939 L 11.327278,4.225514" style="fill:#000000;stroke:none;stroke-width:0.001"/>
<path id="path4825" d="M 53.154272,18.023723 L 48.513117,19.657467 L 37.664889,14.775929 L 32.25021,16.429352 L 34.966985,12.33516 L 48.513117,12.33516 L 42.70224,13.555544 L 53.154272,18.023723" style="fill:#000000;stroke:none;stroke-width:0.001"/>
<path id="path4827" d="M 33.419936,9.1070493 L 38.061087,10.721105 L 49.286643,5.8592533 L 54.323994,7.4929926 L 51.60722,3.4184854 L 38.438415,3.4184854 L 43.871962,4.6191872 L 33.419936,9.1070493" style="fill:#ffffff;stroke:none;stroke-width:0.001"/>
<path id="path4829" d="M 31.476681,13.555544 L 26.816665,11.941487 L 15.968435,16.803341 L 10.553753,15.189284 L 13.25166,19.657467 L 26.816665,19.657467 L 21.005786,18.023723 L 31.476681,13.555544" style="fill:#ffffff;stroke:none;stroke-width:0.001"/>
<path id="path4831" d="M 11.723476,4.6191872 L 16.364632,3.0248142 L 27.609055,7.4929926 L 32.627541,6.2529266 L 29.929634,10.327433 L 16.741963,10.327433 L 22.175509,9.1070493 L 11.723476,4.6191872" style="fill:#ffffff;stroke:none;stroke-width:0.001"/>
<path id="path4833" d="M 53.531602,18.43708 L 48.909313,20.070823 L 38.061087,15.189284 L 32.627541,16.803341 L 35.344315,12.7682 L 48.909313,12.7682 L 43.098437,13.9689 L 53.531602,18.43708" style="fill:#ffffff;stroke:none;stroke-width:0.001"/>
</g>
<g transform="matrix(0.059769, 0, 0, 0.066697, 21.302736, 26.330629)">
<g transform="matrix(1,0,0,1,7.5,7.5)">
<g>
<path d="M 125.25 40.347 C 140.522 14.219 168.408 -3.654 200.529 -4.892 C 201.714 -4.938 202.904 -4.961 204.1 -4.961 L 217.098 -4.041 C 251.366 0.854 279.522 24.815 290.461 56.74 C 294.455 55.896 298.597 55.453 302.841 55.453 C 335.818 55.453 362.591 82.226 362.591 115.203 C 362.591 148.18 335.818 174.953 302.841 174.953 L 158.914 174.956 L 55.471 174.958 C 26.28 174.958 2.58 151.258 2.58 122.067 C 2.58 92.876 26.28 69.176 55.471 69.176 C 59.085 69.176 62.615 69.539 66.026 70.232 C 78.145 52.171 98.752 40.275 122.116 40.275 C 123.167 40.275 124.212 40.299 125.25 40.347 Z" style="fill: none; stroke-width: 14px; stroke: rgb(255, 255, 255);"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<svg id="svg1998" width="51.358818" height="47.630692" version="1.0" xmlns="http://www.w3.org/2000/svg">
<defs id="defs2001">
<marker orient="auto" refY="0" refX="0" id="Arrow2Lstart" style="overflow:visible">
<path id="path11918" style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " transform="matrix(1.1,0,0,1.1,1.1,0)"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Send" style="overflow:visible">
<path id="path11921" d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none" transform="matrix(-0.2,0,0,-0.2,-1.2,0)"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Lstart" style="overflow:visible">
<path id="path11936" d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none" transform="matrix(0.8,0,0,0.8,10,0)"/>
</marker>
<linearGradient id="linearGradient9199" gradientUnits="userSpaceOnUse" gradientTransform="matrix(24.666332,1.3331909e-2,-1.2883406e-2,23.708747,-8.6563136,-4.6316275)" x1="2.1178279" y1="0.30649999" x2="-0.4954865" y2="0.30649999">
<stop style="stop-opacity: 1; stop-color: rgb(0, 173, 105);" offset="0" id="stop8333"/>
<stop style="stop-opacity: 1; stop-color: rgb(154, 238, 204);" offset="1" id="stop8335"/>
</linearGradient>
</defs>
<path id="path11907" d="M 1.8402723,44.565612 L 1.8402723,47.615693 L 44.293781,47.615693 L 44.293781,44.565612 L 1.8402723,44.565612" style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001"/>
<path id="path11020" d="M 44.370594,6.1851672 L 51.194316,1.0980117 L 51.358819,41.344844 L 44.266438,47.63069 L 44.370594,6.1851672" style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001"/>
<path id="path2037" d="M 0.062500355,5.0439492 L 0.062500355,46.326915 L 44.31814,46.326915 L 44.31814,5.0439492 L 0.062500355,5.0439492" style="fill-opacity: 1; stroke: none; stroke-width: 0.001; fill: rgb(0, 173, 105);"/>
<path id="path2041" d="M -0.028418806,5.1647552 L 5.5982489,0.11782966 L 50.022311,0.14184042 L 44.346312,5.1887393 L -0.028418806,5.1647552" style="fill: url(#linearGradient9199); fill-opacity: 1; stroke: none; stroke-width: 0.001;"/>
<path id="path2045" d="M 44.228586,5.0887264 L 49.976169,0.12831483 L 49.976169,41.348635 L 44.228586,46.309047 L 44.228586,5.0887264" style="fill-opacity: 1; stroke: none; stroke-width: 0.001; fill: rgb(16, 139, 90);"/>
<g id="Logos" transform="matrix(0.276292, 0, 0, 0.276292, -12.575964, -8.873246)">
<path class="cls-2" d="M147,170c-25.91,0-47-20.83-47-46.43,0,0,0-2.08,0-2.48,0-2.15.48-5.87,3.18-11.35l.38-.77.14.85c1.18,7.34,2.65,14.71,2.66,14.77,4.2,20.3,21.29,35,40.64,35a36.15,36.15,0,0,0,3.45-72.14h-.12l-.07-.1A68.76,68.76,0,0,0,143.89,80c-.75-.74-1.59-1.51-2.48-2.28l-.47-.4.61-.07A46.53,46.53,0,1,1,147,170Z" transform="translate(0 1.53)" style="fill: rgb(255, 255, 255);"/>
<path class="cls-2" d="M102.91,170a46.53,46.53,0,0,1,0-93.07c25.91,0,47,20.83,47,46.43,0,0,0,2.08,0,2.48,0,2.15-.48,5.87-3.18,11.35l-.38.77-.14-.85c-1.17-7.32-2.65-14.71-2.66-14.76-4.2-20.3-21.29-35-40.64-35a36.15,36.15,0,0,0-3.45,72.14h.12l.07.1a68.8,68.8,0,0,0,6.39,7.36c.76.75,1.59,1.52,2.48,2.28l.47.4-.61.07A46.76,46.76,0,0,1,102.91,170Z" transform="translate(0 1.53)" style="fill: rgb(255, 255, 255);"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<svg id="svg1998" width="55.044277" height="63.620274" version="1.0" xmlns="http://www.w3.org/2000/svg">
<title id="title3303">ASA</title>
<defs id="defs2001">
<marker orient="auto" refY="0" refX="0" id="Arrow2Lstart" style="overflow:visible">
<path id="path11918" style="font-size:12px;fill-rule:evenodd;stroke-width:0.73333335;stroke-linejoin:round" d="M 11.403143,4.732916 -1.416553,0.01878889 11.403144,-4.6953372 c -2.0480517,2.7832182 -2.0362508,6.5911436 -10e-7,9.4282532 z"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Send" style="overflow:visible">
<path id="path11921" d="M -1.28,0 -2.3466667,1.0666667 1.3866667,0 -2.3466667,-1.0666667 Z" style="fill-rule:evenodd;stroke:#000000;stroke-width:0.21333334pt;marker-start:none"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Lstart" style="overflow:visible">
<path id="path11936" d="M 10.666667,0 14.933333,-4.2666667 0,0 14.933333,4.2666667 Z" style="fill-rule:evenodd;stroke:#000000;stroke-width:0.85333335pt;marker-start:none"/>
</marker>
<linearGradient id="linearGradient6875" gradientUnits="userSpaceOnUse" gradientTransform="matrix(26.557584,0,0,27.099161,-9.2951537,-5.3720715)" x1="2.1178279" y1="0.30649999" x2="-0.4954865" y2="0.30649999">
<stop style="stop-opacity: 1; stop-color: rgb(239, 239, 239);" offset="0" id="stop8333"/>
<stop style="stop-opacity: 1; stop-color: rgb(255, 255, 255);" offset="1" id="stop8335"/>
</linearGradient>
</defs>
<path id="path11907" d="m 2.277686,60.343382 v 3.25342 h 45.379267 v -3.25342 H 2.277686" style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:1.06666672"/>
<path id="path11020" d="M 47.765643,8.1809483 55.044279,1.3761504 55.028695,57.643455 47.654539,63.62027 47.765638,8.1809483" style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:1.06666672"/>
<path id="path2037" d="M 0.47692057,5.3149867 V 49.230745 H 47.778461 V 5.3149867 H 0.47692057" style="fill-opacity: 1; stroke: none; stroke-width: 1.06667; fill: rgb(239, 239, 239);"/>
<path id="path2041" d="M 0,5.8198859 6.0551291,0.04776213 H 53.885337 L 47.777093,5.8198859 H 0" style="fill:url(#linearGradient6875);fill-opacity:1;stroke:none;stroke-width:1.06666672"/>
<path id="path2045" d="M 47.635174,5.2911061 53.670405,0 v 43.968341 l -6.035231,5.291106 V 5.2911061" style="fill-opacity: 1; stroke: none; stroke-width: 1.06667; fill: rgb(223, 223, 223);"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06040335" d="m 68.017411,-124.00618 h 32.336679 v -2.5979 l 6.95208,5.19579 -6.95208,5.62568 v -2.59789 H 68.017411 v -5.62568" id="path39"/>
<path style="fill:#000000;stroke:#ffffff;stroke-width:1.06040335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 56.893321,-121.40829 H 70.452314" id="path61"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06040335" d="M 16.19484,61.82555 H 0.42243277 V 55.665507 H 16.19484 v 6.160043" id="path99"/>
<path style="fill:#000000;stroke:#e1e1e1;stroke-width:0.47963932;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 16.19484,61.82555 H 0.57567743" id="path101"/>
<path style="fill:#000000;stroke:#e1e1e1;stroke-width:0.47819233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 0.66977537,55.665507 H 16.19484 v 6.160043" id="path103"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.47819233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 47.780883,61.82555 H 31.991982 v -6.160043 h 15.788901 v 6.160043" id="path105"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.47819233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 40.280128,61.82555 H 24.474743 v -6.160043 h 15.805385 v 6.160043" id="path107"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.47819233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 24.474743,61.82555 H 8.6940847 V 55.665507 H 24.474743 v 6.160043" id="path109"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.50290239;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="m 50.792321,53.512289 2.638353,-2.735375 v -6.805626 l -2.638353,2.720386 v 6.820615" id="path111"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.47819233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="m 50.792321,59.372711 2.638353,-2.166775 v -6.166822 l -2.638353,2.160008 v 6.173589" id="path125"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.47819233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="m 47.780883,61.82555 3.011438,-2.452839 v -6.173589 l -3.011438,2.466385 v 6.160043" id="path127"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.47819233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 31.991982,55.665507 H 16.19484 v -6.166811 h 15.797142 v 6.166811" id="path133"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.06040335" d="M 16.19484,55.665507 H 0.42243277 V 49.498685 H 16.19484 v 6.166822" id="path135"/>
<path style="fill:#000000;stroke:#e1e1e1;stroke-width:0.48108193;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 16.19484,55.665507 H 0.48158037" id="path137"/>
<path style="fill:#000000;stroke:#e1e1e1;stroke-width:0.48039833;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 0.52620409,49.498696 H 16.19484 v 6.166811" id="path139"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.47819233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="M 47.780883,55.665507 H 31.991982 v -6.166811 h 15.788901 v 6.166811" id="path141"/>
<path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#e1e1e1;stroke-width:0.48692337;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1" d="m 47.780883,55.665507 3.011438,-2.557269 v -6.387053 l -3.011438,2.550268 v 6.394054" id="path145"/>
<path d="M 5.129 23.9 L 15.893 23.9 L 15.893 30.974 L 5.129 30.974 Z M 18.834 13.881 L 29.395 13.881 L 29.395 20.952 L 18.834 20.952 Z M 18.834 33.92 L 29.395 33.92 L 29.395 40.987 L 18.834 40.987 Z M 32.331 23.9 L 43.128 23.9 L 43.128 30.974 L 32.331 30.974 Z M 9.547 13.881 C 7.305 14.472 5.541 16.98 5.129 20.161 L 5.129 20.952 L 15.893 20.952 L 15.893 13.881 Z M 5.129 33.92 L 5.129 34.791 C 5.519 37.844 7.16 40.27 9.272 40.985 L 15.895 40.985 L 15.895 33.919 L 5.13 33.919 Z M 43.129 20.952 L 43.129 20.157 C 42.717 16.974 40.956 14.472 38.711 13.881 L 32.336 13.881 L 32.336 20.952 Z M 38.988 40.99 C 41.093 40.275 42.734 37.849 43.126 34.798 L 43.126 33.92 L 32.334 33.92 L 32.334 40.99 L 38.989 40.99 Z" fill="#e2231a"/>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="70"
height="50"
viewBox="-0.5330211 -0.5330211 10.665723 7.5941177"
id="svg4441"
inkscape:version="0.91 r13725"
sodipodi:docname="Fortinet_logo.svg">
<metadata
id="metadata9">
<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:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2495"
inkscape:window-height="1056"
id="namedview7"
showgrid="false"
inkscape:snap-page="true"
inkscape:zoom="3.2924659"
inkscape:cx="164.79393"
inkscape:cy="31.941697"
inkscape:window-x="1985"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg4441" />
<defs
id="defs4443" />
<rect
style="stroke:#ffffff;stroke-width:0.15236747;stroke-opacity:1;fill:#ffffff"
id="rect3339"
width="10.665723"
height="7.6183734"
x="-0.53302109"
y="-0.54514885" />
<path
d="m 8.9771066,7.0637696 c 0.5909941,-0.200745 1.0508344,-0.881137 1.1616464,-1.737115 l 0,-0.247318 -3.0299144,0 0,1.984433 1.868268,0 z m 1.1618084,-5.6233777 0,-0.223764 C 10.022751,0.32371345 9.5286497,-0.37969755 8.8985776,-0.54511155 l -1.789576,0 0,1.98550345 3.0299134,0 z m -10.66545725,3.6390517 0,0.245177 c 0.1097407,0.856513 0.5695809,1.538511 1.16218056,1.739256 l 1.85863229,0 0,-1.984433 -3.02081285,0 z m 1.23990906,-5.62428915 c -0.62900136,0.165414 -1.12470806,0.86936 -1.23980196,1.76334495 l 0,0.222158 3.02081275,0 0,-1.98550295 -1.78101079,0 z m 9.42576219,2.81198615 -3.0299134,0 0,1.9855032 3.0299134,0 0,-1.9855032 z m -6.8194454,4.79647 2.964068,0 0,-1.984432 -2.964068,0 0,1.984432 z m 2.964068,-7.60850815 -2.964068,0 0,1.98550355 2.964068,0 0,-1.98550355 z m -6.81034515,4.79754135 3.02081315,0 0,-1.9855032 -3.02081315,0 0,1.9855032 z"
id="path4408"
style="fill:#ee2e24;fill-opacity:1;fill-rule:nonzero;stroke:none"
inkscape:connector-curvature="0" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Logo" />
</svg>
<!-- version: 20110311, original size: 154.95825 17.76737, border: 3% -->

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,284 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1998"
sodipodi:version="0.32"
inkscape:version="0.91 r13725"
width="51.358818"
height="47.630692"
version="1.0"
sodipodi:docname="vmx.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<metadata
id="metadata2003">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<cc:license
rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
<dc:title />
<dc:creator>
<cc:Agent>
<dc:title>Jeremy Grossmann</dc:title>
</cc:Agent>
</dc:creator>
<dc:description>Created for the GNS-3 project (www.gns3.net)</dc:description>
<dc:publisher>
<cc:Agent>
<dc:title>GNS-3</dc:title>
</cc:Agent>
</dc:publisher>
</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="defs2001">
<linearGradient
inkscape:collect="always"
id="linearGradient10123">
<stop
style="stop-color:#e4405c;stop-opacity:1;"
offset="0"
id="stop10125" />
<stop
style="stop-color:#e4405c;stop-opacity:0;"
offset="1"
id="stop10127" />
</linearGradient>
<linearGradient
id="linearGradient8331">
<stop
style="stop-color:#6e8caa;stop-opacity:1;"
offset="0"
id="stop8333" />
<stop
style="stop-color:#dde3ef;stop-opacity:1;"
offset="1"
id="stop8335" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6603">
<stop
style="stop-color:#506eaa;stop-opacity:1;"
offset="0"
id="stop6605" />
<stop
style="stop-color:#506eaa;stop-opacity:0;"
offset="1"
id="stop6607" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6587">
<stop
style="stop-color:#506eaa;stop-opacity:1;"
offset="0"
id="stop6589" />
<stop
style="stop-color:#506eaa;stop-opacity:0;"
offset="1"
id="stop6591" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path11918"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(1.1,0,0,1.1,1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path11921"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path11936"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(0.8,0,0,0.8,10,0)" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6587"
id="linearGradient6593"
x1="3.95626"
y1="0.64267641"
x2="-1.2664427"
y2="0.62730032"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.060042,0,0,1.074658,-3.942481e-3,-0.356572)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6603"
id="linearGradient6609"
x1="2.2801981"
y1="1.4519272"
x2="-0.41311559"
y2="1.4649135"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.060042,0,0,1.074658,-3.942482e-3,-0.356572)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10123"
id="linearGradient10129"
x1="1.3990936"
y1="1.4711363"
x2="0.49966058"
y2="0.56367606"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.117962,0,0,1.035008,-4.0973e-2,-6.788682e-3)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8331"
id="linearGradient6875"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(24.897735,0,0,25.405463,-9.0988193,-4.8632254)"
x1="2.1178279"
y1="0.30649999"
x2="-0.4954865"
y2="0.30649999" />
</defs>
<sodipodi:namedview
inkscape:window-height="670"
inkscape:window-width="1280"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="2.7915987"
inkscape:cx="23.755426"
inkscape:cy="-42.804631"
inkscape:window-x="77"
inkscape:window-y="25"
inkscape:current-layer="svg1998"
showgrid="false"
inkscape:window-maximized="0" />
<path
id="path11907"
d="M 1.8402723,44.565612 L 1.8402723,47.615693 L 44.293781,47.615693 L 44.293781,44.565612 L 1.8402723,44.565612"
style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001" />
<path
id="path11020"
d="M 44.370594,6.1851672 L 51.194316,1.0980117 L 51.358819,41.344844 L 44.266438,47.63069 L 44.370594,6.1851672"
style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001"
sodipodi:nodetypes="ccccc" />
<path
id="path2037"
d="m 0.31579887,5.6624885 0,41.1710225 44.34519313,0 0,-41.1710225 -44.34519313,0"
style="fill:#6e8caa;fill-opacity:1;stroke:none;stroke-width:0.001"
inkscape:connector-curvature="0" />
<path
id="path2041"
d="M -0.38461268,5.6292351 L 5.2920708,0.21786924 L 50.13289,0.21786924 L 44.406412,5.6292351 L -0.38461268,5.6292351"
style="fill:url(#linearGradient6875);fill-opacity:1;stroke:none;stroke-width:0.001" />
<path
id="path2045"
d="M 44.273363,5.1335036 L 49.931392,0.17309204 L 49.931392,41.393412 L 44.273363,46.353824 L 44.273363,5.1335036"
style="fill:#6e8296;fill-opacity:1;stroke:none;stroke-width:0.001" />
<g
id="g3381"
transform="translate(50.86691,-20.06019)">
<g
transform="matrix(0.1704237,0,0,0.1704237,-48.337546,-4.9946169)"
id="shape2-2"
v:mID="2"
v:groupContext="shape">
<title
id="title14">Sheet.2</title>
<path
d="m 117,420.03 c 64.45,0 117,-52.56 117,-117 0,-64.45 -52.55,-117.02 -117,-117.02 -64.45,0 -117,52.57 -117,117.02 0,64.44 52.55,117 117,117 z"
class="st1"
id="path16"
inkscape:connector-curvature="0"
style="fill:#12537c;stroke:none;stroke-width:0.75;stroke-linecap:butt" />
</g>
<g
style="stroke:#84b2dd;stroke-width:2.40000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0.1704237,0,0,0.1704237,-48.337546,-4.9946169)"
id="shape3-4"
v:mID="3"
v:groupContext="shape">
<title
id="title19">Sheet.3</title>
<path
d="m 117,420.03 c 64.45,0 117,-52.56 117,-117 0,-64.45 -52.55,-117.02 -117,-117.02 -64.45,0 -117,52.57 -117,117.02 0,64.44 52.55,117 117,117 z"
class="st2"
id="path21"
inkscape:connector-curvature="0"
style="fill:none;stroke:#84b2dd;stroke-width:2.40000153;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
style="stroke:#32425f;stroke-width:1.52000105;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="shape4-6"
v:mID="4"
v:groupContext="shape"
transform="matrix(0.1704237,0,0,0.1704237,-43.935853,-8.9257283)">
<title
id="title24">Sheet.4</title>
<path
d="m 82.44,318.48 -6.36,0 -72.74,0 0,-17.52 63.98,0 0,-37.34 -9.38,0 9.13,-15.81 7.06,-12.21 2.07,-3.59 9.14,15.8 9.12,15.81 -4.16,0 -5.46,0 0,46.09 0,8.77 -2.4,0 z m 73.95,5.68 0,-5.68 -45.5,0 -8.76,0 0,-2.41 0,-6.36 0,-72.21 17.52,0 0,63.45 36.73,0 0.01,-9.15 15.81,9.14 12.2,7.04 -1.2,2.09 1.2,-2.09 3.6,2.08 -15.8,9.13 -15.82,9.11 0,-4.14 0.01,0 z m -86.67,93.62 0,-2.4 2.4,0 -2.4,0 0,2.4 -2.4,0 0,-63.46 -35.71,0 0,9.59 -15.81,-9.13 -15.8,-9.12 15.8,-9.14 15.81,-9.12 0,4.16 0,5.25 44.47,0 8.76,0 0,2.4 0,6.36 0,72.21 -15.12,0 z m 41.16,-2.56 2.08,-1.2 -2.08,1.2 z m -9.13,-11 -9.12,-15.81 4.16,0 5.34,-0.01 0,-42.83 0,-8.76 2.4,0 6.36,0 72.73,0 0,17.51 -63.96,0 0,34.09 9.48,0 -9.13,15.82 -7.04,12.2 -2.08,3.6 -9.14,-15.81 z"
class="st3"
id="path26"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:#32425f;stroke-width:1.52000105;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,324 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1998"
sodipodi:version="0.32"
inkscape:version="0.91 r13725"
width="51.358818"
height="47.630692"
version="1.0"
sodipodi:docname="juniper-vqfx.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<metadata
id="metadata2003">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<cc:license
rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
<dc:title />
<dc:creator>
<cc:Agent>
<dc:title>Jeremy Grossmann</dc:title>
</cc:Agent>
</dc:creator>
<dc:description>Created for the GNS-3 project (www.gns3.net)</dc:description>
<dc:publisher>
<cc:Agent>
<dc:title>GNS-3</dc:title>
</cc:Agent>
</dc:publisher>
</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="defs2001">
<linearGradient
inkscape:collect="always"
id="linearGradient10123">
<stop
style="stop-color:#e4405c;stop-opacity:1;"
offset="0"
id="stop10125" />
<stop
style="stop-color:#e4405c;stop-opacity:0;"
offset="1"
id="stop10127" />
</linearGradient>
<linearGradient
id="linearGradient8331">
<stop
style="stop-color:#6e8caa;stop-opacity:1;"
offset="0"
id="stop8333" />
<stop
style="stop-color:#dde3ef;stop-opacity:1;"
offset="1"
id="stop8335" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6603">
<stop
style="stop-color:#506eaa;stop-opacity:1;"
offset="0"
id="stop6605" />
<stop
style="stop-color:#506eaa;stop-opacity:0;"
offset="1"
id="stop6607" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6587">
<stop
style="stop-color:#506eaa;stop-opacity:1;"
offset="0"
id="stop6589" />
<stop
style="stop-color:#506eaa;stop-opacity:0;"
offset="1"
id="stop6591" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path11918"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(1.1,0,0,1.1,1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path11921"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path11936"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(0.8,0,0,0.8,10,0)" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6587"
id="linearGradient6593"
x1="3.95626"
y1="0.64267641"
x2="-1.2664427"
y2="0.62730032"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.060042,0,0,1.074658,-3.942481e-3,-0.356572)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6603"
id="linearGradient6609"
x1="2.2801981"
y1="1.4519272"
x2="-0.41311559"
y2="1.4649135"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.060042,0,0,1.074658,-3.942482e-3,-0.356572)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10123"
id="linearGradient10129"
x1="1.3990936"
y1="1.4711363"
x2="0.49966058"
y2="0.56367606"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.117962,0,0,1.035008,-4.0973e-2,-6.788682e-3)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8331"
id="linearGradient6875"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(24.897735,0,0,25.405463,-9.0988193,-4.8632254)"
x1="2.1178279"
y1="0.30649999"
x2="-0.4954865"
y2="0.30649999" />
</defs>
<sodipodi:namedview
inkscape:window-height="719"
inkscape:window-width="1366"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="3.9479168"
inkscape:cx="55.736282"
inkscape:cy="27.781894"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:current-layer="svg1998"
showgrid="false"
inkscape:window-maximized="1" />
<path
id="path11907"
d="M 1.8402723,44.565612 L 1.8402723,47.615693 L 44.293781,47.615693 L 44.293781,44.565612 L 1.8402723,44.565612"
style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001" />
<path
id="path11020"
d="M 44.370594,6.1851672 L 51.194316,1.0980117 L 51.358819,41.344844 L 44.266438,47.63069 L 44.370594,6.1851672"
style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001"
sodipodi:nodetypes="ccccc" />
<path
id="path2037"
d="m 0.31579887,5.6624885 0,41.1710225 44.34519313,0 0,-41.1710225 -44.34519313,0"
style="fill:#6e8caa;fill-opacity:1;stroke:none;stroke-width:0.001"
inkscape:connector-curvature="0" />
<path
id="path2041"
d="M -0.38461268,5.6292351 L 5.2920708,0.21786924 L 50.13289,0.21786924 L 44.406412,5.6292351 L -0.38461268,5.6292351"
style="fill:url(#linearGradient6875);fill-opacity:1;stroke:none;stroke-width:0.001" />
<path
id="path2045"
d="M 44.273363,5.1335036 L 49.931392,0.17309204 L 49.931392,41.393412 L 44.273363,46.353824 L 44.273363,5.1335036"
style="fill:#6e8296;fill-opacity:1;stroke:none;stroke-width:0.001" />
<g
id="shape7-14"
v:mID="7"
v:groupContext="shape"
transform="matrix(1.5233208,0,0,1.3864459,3.6924384,-5.7637956)">
<title
id="title45">Sheet.7</title>
<rect
x="0"
y="10.973"
width="24.75"
height="24.75"
class="st5"
id="rect47"
style="fill:#12537c;stroke:none;stroke-width:0.75;stroke-linecap:butt" />
</g>
<g
id="shape8-16"
v:mID="8"
v:groupContext="shape"
transform="matrix(1.5233208,0,0,1.3864459,3.6924384,-5.7637956)">
<title
id="title50">Sheet.8</title>
<rect
x="0"
y="10.973"
width="24.75"
height="24.75"
class="st6"
id="rect52"
style="fill:none;stroke:#bcbec0;stroke-width:1.125;stroke-linecap:butt" />
</g>
<g
id="shape9-18"
v:mID="9"
v:groupContext="shape"
transform="matrix(1.5233208,0,0,1.3864459,20.985782,-28.936572)">
<title
id="title55">Sheet.9</title>
<path
d="m 7.38,34.34 -7.38,0 0,-1.49 7.38,0 0,-1.3 1.81,1.04 1.8,1.05 -1.8,1.04 -1.81,1.04 0,-1.38 z"
class="st7"
id="path57"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:none;stroke-width:0.75;stroke-linecap:butt" />
</g>
<g
id="shape10-20"
v:mID="10"
v:groupContext="shape"
transform="matrix(1.5233208,0,0,1.3864459,20.985782,-18.328835)">
<title
id="title60">Sheet.10</title>
<path
d="m 7.38,34.34 -7.38,0 0,-1.49 7.38,0 0,-1.3 1.81,1.04 1.8,1.05 -1.8,1.04 -1.81,1.04 0,-1.38 z"
class="st7"
id="path62"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:none;stroke-width:0.75;stroke-linecap:butt" />
</g>
<g
id="shape11-22"
v:mID="11"
v:groupContext="shape"
transform="matrix(1.5233208,0,0,1.3864459,8.0357632,-13.02525)">
<title
id="title65">Sheet.11</title>
<path
d="m 3.61,32.93 7.38,0 0,1.5 -7.38,0 0,1.29 -1.8,-1.04 -1.81,-1.04 1.81,-1.05 1.8,-1.04 0,1.38 z"
class="st7"
id="path67"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:none;stroke-width:0.75;stroke-linecap:butt" />
</g>
<g
id="shape12-24"
v:mID="12"
v:groupContext="shape"
transform="matrix(1.5233208,0,0,1.3864459,8.0357632,-23.633003)">
<title
id="title70">Sheet.12</title>
<path
d="m 3.61,32.93 7.38,0 0,1.5 -7.38,0 0,1.29 -1.8,-1.04 -1.81,-1.04 1.81,-1.05 1.8,-1.04 0,1.38 z"
class="st7"
id="path72"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:none;stroke-width:0.75;stroke-linecap:butt" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="36 365 38 38" width="38pt" height="38pt" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> Produced by OmniGraffle 7.4
<dc:date>2017-07-08 22:25:20 +0000</dc:date>
</metadata>
<defs/>
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<title>Canvas 1</title>
<rect fill="white" width="1" height="1"/>
<g>
<title>Layer 1</title>
<path d="M 55.00075 402.273 C 65.065 402.273 73.2715 394.065 73.2715 384.00075 C 73.2715 373.9365 65.065 365.727 55.00075 365.727 C 44.93575 365.727 36.7285 373.9365 36.7285 384.00075 C 36.7285 394.065 44.93575 402.273 55.00075 402.273 Z" fill="#12537c"/>
<path d="M 55.00075 402.273 C 65.065 402.273 73.2715 394.065 73.2715 384.00075 C 73.2715 373.9365 65.065 365.727 55.00075 365.727 C 44.93575 365.727 36.7285 373.9365 36.7285 384.00075 C 36.7285 394.065 44.93575 402.273 55.00075 402.273 Z" stroke="#bcbec0" stroke-linecap="butt" stroke-linejoin="miter" stroke-width="1.125"/>
<path d="M 53.194 382.81126 L 52.201 382.81126 L 40.8415 382.81126 L 40.8415 380.07526 L 50.83375 380.07526 L 50.83375 374.24476 L 49.36825 374.24476 L 50.79475 371.775 L 51.89725 369.86926 L 52.2205 369.3075 L 53.64775 371.775 L 55.07125 374.24476 L 54.42175 374.24476 L 53.569 374.24476 L 53.569 381.4425 L 53.569 382.81126 L 53.194 382.81126 L 53.194 382.81126 Z M 64.7425 383.6985 L 64.7425 382.81126 L 57.637 382.81126 L 56.269 382.81126 L 56.269 382.43626 L 56.269 381.4425 L 56.269 370.16626 L 59.005 370.16626 L 59.005 380.07376 L 64.74175 380.07376 L 64.74325 378.645 L 67.2115 380.07226 L 69.118 381.17176 L 68.9305 381.498 L 69.118 381.17176 L 69.67975 381.4965 L 67.2115 382.923 L 64.74175 384.34576 L 64.74175 383.6985 L 64.7425 383.6985 Z M 51.20875 398.31976 L 51.20875 397.94476 L 51.58375 397.94476 L 51.20875 397.94476 L 51.20875 398.31976 L 50.83375 398.31976 L 50.83375 388.4085 L 45.25675 388.4085 L 45.25675 389.907 L 42.787 388.4805 L 40.32025 387.057 L 42.787 385.62976 L 45.25675 384.2055 L 45.25675 384.855 L 45.25675 385.67476 L 52.201 385.67476 L 53.569 385.67476 L 53.569 386.04976 L 53.569 387.042 L 53.569 398.31976 L 51.20875 398.31976 L 51.20875 398.31976 Z M 57.63625 397.92 L 57.961 397.7325 L 57.63625 397.92 L 57.63625 397.92 Z M 56.2105 396.20176 L 54.78625 393.732 L 55.435 393.732 L 56.26975 393.7305 L 56.26975 387.042 L 56.26975 385.67476 L 56.64475 385.67476 L 57.63775 385.67476 L 68.99575 385.67476 L 68.99575 388.40926 L 59.0065 388.40926 L 59.0065 393.73276 L 60.48775 393.73276 L 59.062 396.2025 L 57.96175 398.10826 L 57.637 398.67076 L 56.2105 396.20176 L 56.2105 396.20176 Z" fill="white"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -0,0 +1,380 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1998"
sodipodi:version="0.32"
inkscape:version="0.91 r13725"
width="66.000435"
height="44.5159"
version="1.0"
sodipodi:docname="loadbalancer.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<metadata
id="metadata2003">
<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: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="defs2001">
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path7835"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker8031"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path8033"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path7714"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path7696"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<inkscape:path-effect
effect="powerstroke"
id="path-effect7647"
is_visible="true"
offset_points="0,0.5"
sort_points="true"
interpolator_type="CubicBezierJohan"
interpolator_beta="0.2"
start_linecap_type="zerowidth"
linejoin_type="round"
miter_limit="4"
end_linecap_type="zerowidth"
cusp_linecap_type="round" />
<linearGradient
id="linearGradient9312">
<stop
style="stop-color:#3c8c8c;stop-opacity:1;"
offset="0"
id="stop9314" />
<stop
style="stop-color:#ffffff;stop-opacity:0.94117647;"
offset="1"
id="stop9316" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path11918"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(1.1,0,0,1.1,1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path11921"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path11936"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(0.8,0,0,0.8,10,0)" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient9312"
id="linearGradient2216"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(15.252829,0,0,14.082619,53.467529,3.4188377)"
x1="-1.0929121"
y1="0.63145506"
x2="-4.5832458"
y2="0.070047863" />
<linearGradient
id="linearGradient10123"
inkscape:collect="always">
<stop
id="stop10125"
offset="0"
style="stop-color:#e4405c;stop-opacity:1;" />
<stop
id="stop10127"
offset="1"
style="stop-color:#e4405c;stop-opacity:0;" />
</linearGradient>
<linearGradient
y2="0.56367606"
x2="0.49966058"
y1="1.4711363"
x1="1.3990936"
gradientTransform="matrix(19.859681,0,0,16.579703,65.763316,-33.354621)"
gradientUnits="userSpaceOnUse"
id="linearGradient9177"
xlink:href="#linearGradient10123"
inkscape:collect="always" />
<marker
style="overflow:visible"
id="Arrow2Lstart-4"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lstart">
<path
transform="matrix(1.1,0,0,1.1,1.1,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
id="path11918-6" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Send-3"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Send">
<path
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
id="path11921-9" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lstart-2"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
id="path11936-8" />
</marker>
<linearGradient
y2="0.070047863"
x2="-4.5832458"
y1="0.63145506"
x1="-1.0929121"
gradientTransform="matrix(15.252829,0,0,14.082619,53.467529,3.4188377)"
gradientUnits="userSpaceOnUse"
id="linearGradient9890"
xlink:href="#linearGradient9312"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
inkscape:window-height="1003"
inkscape:window-width="1524"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="7.8958335"
inkscape:cx="10.561503"
inkscape:cy="-1.722049"
inkscape:window-x="1360"
inkscape:window-y="0"
inkscape:current-layer="g9892"
showgrid="false"
inkscape:window-maximized="0" />
<rect
style="opacity:1;fill:#000000;fill-opacity:0.39215687;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4558"
width="64.552505"
height="41.53862"
x="1.4479325"
y="2.9772801"
ry="11.631706"
rx="32.212925"
inkscape:transform-center-x="8.4568136" />
<rect
style="opacity:1;fill:#3c8c8c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.015;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9971"
width="64.499474"
height="42.154343"
x="0.0625"
y="0.18084908"
ry="11.557454"
rx="32.249737"
inkscape:transform-center-x="8.2952569" />
<g
id="g4160"
transform="translate(-0.05300324,0)">
<path
id="path4815"
d="M 64.514069,11.541297 64.457031,10.955643 64.342949,10.36999 64.152814,9.8038604 63.867612,9.2182077 63.487345,8.6520765 63.050034,8.0859452 62.517657,7.5393369 61.909226,7.0122499 61.224742,6.4851607 60.464203,5.9775955 59.646626,5.4700289 58.752993,4.9819859 57.783307,4.4939413 56.75658,4.0644625 55.6538,3.6349838 54.493981,3.2055052 53.296132,2.8150692 52.022232,2.4636777 50.710303,2.1122862 49.341334,1.7999375 47.934339,1.5071117 46.489316,1.2338059 45.006267,0.99954576 43.504204,0.76528425 41.964114,0.58958842 40.385997,0.43341443 l -1.59713,-0.1366529 -1.597129,-0.0976086 -1.616141,-0.0780874 -1.63516,-0.05856538 -1.616141,0 0,0 -1.63516,0 -1.635155,0.05856538 -1.597131,0.0780874 -1.616145,0.0976086 -1.597129,0.1366529 -1.559104,0.15617399 -1.5591,0.17569583 -1.502065,0.23426151 -1.483049,0.23426014 -1.445024,0.2733058 -1.406994,0.2928258 -1.368967,0.3123487 -1.311931,0.3513915 -1.2739,0.3513915 -1.19785,0.390436 L 8.9757693,3.6349838 7.8729941,4.0644625 6.8462664,4.4939413 5.8765785,4.9819859 4.9829488,5.4700289 4.1653682,5.9775955 3.4048335,6.4851607 2.7203448,7.0122499 2.1309311,7.5393369 1.5795405,8.0859452 1.1422325,8.6520765 0.76195982,9.2182077 0.47676065,9.8038604 0.26760898,10.36999 l -0.11407814,0.585653 -0.0380276,0.585654 0,0 0.0380276,0.585653 0.11407814,0.566131 0.20915167,0.585653 0.28519917,0.54661 0.38027268,0.585652 0.437308,0.546609 0.5513906,0.566131 0.5894137,0.546612 0.6844887,0.527087 0.7605347,0.488044 0.8175806,0.507564 0.8936297,0.507565 0.9696879,0.449001 1.0267277,0.449002 1.1027752,0.449002 1.1598227,0.409958 1.19785,0.390436 1.2739,0.351389 1.311931,0.351391 1.368967,0.312348 1.406994,0.312351 1.445024,0.253779 1.483049,0.253784 1.502065,0.214738 1.5591,0.175698 1.559104,0.156176 1.597129,0.136651 1.616145,0.09761 1.597131,0.07809 1.635155,0.05857 1.63516,0 0,0 1.616141,0 1.63516,-0.05857 1.616141,-0.07809 1.597129,-0.09761 1.59713,-0.136651 1.578117,-0.156176 1.54009,-0.175698 1.502063,-0.214738 1.483049,-0.253784 1.445023,-0.253779 1.406995,-0.312351 1.368969,-0.312348 1.311929,-0.351391 1.2739,-0.351389 1.197849,-0.390436 1.159819,-0.409958 1.10278,-0.449002 1.026727,-0.449002 0.969686,-0.449001 0.893633,-0.507565 0.817577,-0.507564 0.760539,-0.488044 0.684484,-0.527087 0.608431,-0.546612 0.532377,-0.566131 0.437311,-0.546609 0.380267,-0.585652 0.285202,-0.54661 0.190135,-0.585653 0.114082,-0.566131 0.05704,-0.585653"
style="fill:url(#linearGradient2216);fill-opacity:1;stroke:none;stroke-width:0.01928605;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 1.5224251,11.738982 c 22.4781589,0.179109 22.3886049,0.08956 22.3886049,0.08956 l 0,0"
id="path7667"
inkscape:connector-curvature="0" />
<g
id="g9892"
transform="translate(-57.894994,22.707717)">
<path
style="fill:#000000;stroke:none;stroke-width:0.001"
d="m 72.358817,-10.103986 9.453197,0.0146 -0.0017,1.0942609 2.902891,-2.1840409 -2.895747,-2.441693 -0.0017,1.077681 -9.453197,-0.0146 -0.0038,2.453792"
id="path2049"
inkscape:connector-curvature="0" />
<path
style="fill:#000000;stroke:none;stroke-width:0.001"
d="m 93.50729,-13.193692 6.83173,-5.703422 0.95326,0.812405 0,-3.249623 -3.872633,0 0.953265,0.812406 -6.831729,5.70342 1.966107,1.624814"
id="path2055"
inkscape:connector-curvature="0" />
<path
style="fill:#000000;stroke:none;stroke-width:0.001"
d="m 93.50729,-10.739897 9.73124,0 0,1.0776818 2.62148,-2.4372178 -2.62148,-2.188521 0,1.094262 -9.73124,0 0,2.453795"
id="path2057"
inkscape:connector-curvature="0" />
<path
style="fill:#000000;stroke:none;stroke-width:0.001"
d="m 91.541183,-9.1150862 6.831729,5.703419 -0.953265,0.828987 3.872633,-0.265276 0,-2.984348 -0.95326,0.812406 -6.83173,-5.7199988 -1.966107,1.6248108"
id="path2059"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;stroke:none;stroke-width:0.001"
d="m 72.061358,-10.386298 9.413478,0.01454 -0.0017,1.0942579 2.922724,-2.1674299 -2.91558,-2.458303 -0.0017,1.07768 -9.413478,-0.01454 -0.0038,2.453795"
id="path2065"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;stroke:none;stroke-width:0.001"
d="m 93.844905,-12.911839 6.811865,-5.72 0.97313,0.828986 0,-3.266204 -3.912358,0 0.973126,0.812407 -6.811872,5.72 1.966109,1.624811"
id="path2071"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;stroke:none;stroke-width:0.001"
d="m 93.844905,-10.458041 9.711385,0 0,1.0776808 2.62148,-2.4537968 -2.62148,-2.171941 0,1.094259 -9.711385,0 0,2.453798"
id="path2073"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;stroke:none;stroke-width:0.001"
d="m 91.878796,-8.8332292 6.811872,5.703419 -0.973126,0.812405 3.912358,-0.265275 0,-3.000928 -0.97313,0.812406 -6.811865,-5.6868388 -1.966109,1.6248118"
id="path2075"
inkscape:connector-curvature="0" />
<path
style="fill:#000000;stroke:none;stroke-width:0.001"
d="m 95.45354,-11.701521 -0.01986,-0.215535 -0.01986,-0.248695 -0.03972,-0.215536 -0.03972,-0.215537 -0.05958,-0.232115 -0.07944,-0.215538 -0.0993,-0.215536 -0.07944,-0.215536 -0.119159,-0.198957 -0.119157,-0.198956 -0.139019,-0.198957 -0.158877,-0.198957 -0.158876,-0.182376 -0.178737,-0.165797 -0.178738,-0.182378 -0.178737,-0.149215 -0.218457,-0.149218 -0.198596,-0.149218 -0.218457,-0.132636 -0.218457,-0.116059 -0.258175,-0.132639 -0.218457,-0.09948 -0.258176,-0.0829 -0.258177,-0.0829 -0.238314,-0.0829 -0.278037,-0.04974 -0.238314,-0.06632 -0.297897,-0.03316 -0.258177,-0.03316 -0.278033,-0.01658 -0.258177,0 0,0 -0.278035,0 -0.258176,0.01658 -0.278036,0.03316 -0.258176,0.03316 -0.278036,0.06632 -0.258176,0.04974 -0.258176,0.0829 -0.258175,0.0829 -0.238315,0.0829 -0.218458,0.09948 -0.258175,0.132639 -0.238316,0.116059 -0.198598,0.132636 -0.218455,0.149218 -0.198598,0.149218 -0.178736,0.149215 -0.198597,0.182378 -0.158877,0.165797 -0.158878,0.182376 -0.158877,0.198957 -0.139019,0.198957 -0.119157,0.198956 -0.11916,0.198957 -0.0993,0.215536 -0.0993,0.215536 -0.05958,0.215538 -0.05958,0.232115 -0.05958,0.215537 -0.03972,0.215536 0,0.248695 -0.01986,0.215535 0,0 0.01986,0.215537 0,0.232117 0.03972,0.232116 0.05958,0.232116 0.05958,0.215536 0.05958,0.215536 0.0993,0.215536 0.0993,0.2155358 0.11916,0.198956 0.119157,0.198956 0.139019,0.198957 0.158877,0.198957 0.158878,0.182377 0.158877,0.165797 0.198597,0.165797 0.178736,0.165798 0.198598,0.149217 0.218455,0.149217 0.198598,0.132638 0.238316,0.116058 0.258175,0.116057 0.218458,0.116058 0.238315,0.09948 0.258175,0.0829 0.258176,0.04974 0.258176,0.06632 0.278036,0.06632 0.258176,0.01658 0.278036,0.04974 0.258176,0.01658 0.278035,0 0,0 0.258177,0 0.278033,-0.01658 0.258177,-0.04974 0.297897,-0.01658 0.238314,-0.06632 0.278037,-0.06632 0.238314,-0.04974 0.258177,-0.0829 0.258176,-0.09948 0.218457,-0.116058 0.258175,-0.116057 0.218457,-0.116058 0.218457,-0.132638 0.198596,-0.149217 0.218457,-0.149217 0.178737,-0.165798 0.178738,-0.165797 0.178737,-0.165797 0.158876,-0.182377 0.158877,-0.198957 0.139019,-0.198957 0.119157,-0.198956 0.119159,-0.198956 0.07944,-0.2155358 0.0993,-0.215536 0.07944,-0.215536 0.05958,-0.215536 0.03972,-0.232116 0.03972,-0.232116 0.01986,-0.232117 0.01986,-0.215537"
id="path2081"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;stroke:none;stroke-width:0.001"
d="m 96.089049,-11.154389 -0.01986,-0.215537 -0.01986,-0.232116 -0.03972,-0.232115 -0.01986,-0.232117 -0.07944,-0.215536 -0.07944,-0.215536 -0.07944,-0.215536 -0.0993,-0.198957 -0.11916,-0.215537 -0.119156,-0.198956 -0.139018,-0.198955 -0.139018,-0.198957 -0.178738,-0.182377 -0.178736,-0.165798 -0.158877,-0.165797 -0.198597,-0.165796 -0.218457,-0.149218 -0.198595,-0.149218 -0.218458,-0.132637 -0.218457,-0.116057 -0.238315,-0.116059 -0.238318,-0.116057 -0.258175,-0.09948 -0.238316,-0.0829 -0.258175,-0.06632 -0.258176,-0.04974 -0.258178,-0.06632 -0.278033,-0.03316 -0.258177,-0.03316 -0.278036,-0.01658 -0.278035,0 0,0 -0.278036,0 -0.258175,0.01658 -0.258176,0.03316 -0.278036,0.03316 -0.258175,0.06632 -0.258177,0.04974 -0.278035,0.06632 -0.238316,0.0829 -0.238317,0.09948 -0.258176,0.116057 -0.218456,0.116059 -0.238316,0.116057 -0.218457,0.132637 -0.218457,0.149218 -0.198597,0.149218 -0.178735,0.165796 -0.198599,0.165797 -0.158876,0.165798 -0.158877,0.182377 -0.158878,0.198957 -0.139018,0.198955 -0.119156,0.198956 -0.11916,0.215537 -0.0993,0.198957 -0.07944,0.215536 -0.07944,0.215536 -0.05958,0.215536 -0.03972,0.232117 -0.03972,0.232115 -0.01986,0.232116 0,0.215537 0,0 0,0.232116 0.01986,0.232115 0.03972,0.198957 0.03972,0.232117 0.05958,0.232116 0.07944,0.2155358 0.07944,0.215536 0.0993,0.215536 0.11916,0.198956 0.119156,0.198956 0.139018,0.198957 0.158878,0.182377 0.158877,0.198956 0.158876,0.165798 0.198599,0.165797 0.178735,0.165797 0.198597,0.149217 0.218457,0.132637 0.218457,0.149219 0.238316,0.116057 0.218456,0.116058 0.258176,0.116059 0.238317,0.0829 0.238316,0.0829 0.278035,0.0829 0.258177,0.06632 0.258175,0.04974 0.278036,0.03316 0.258176,0.03316 0.258175,0.01658 0.278036,0 0,0 0.278035,0 0.278036,-0.01658 0.258177,-0.03316 0.278033,-0.03316 0.258178,-0.04974 0.258176,-0.06632 0.258175,-0.0829 0.238316,-0.0829 0.258175,-0.0829 0.238318,-0.116059 0.238315,-0.116058 0.218457,-0.116057 0.218458,-0.149219 0.198595,-0.132637 0.218457,-0.149217 0.198597,-0.165797 0.158877,-0.165797 0.178736,-0.165798 0.178738,-0.198956 0.139018,-0.182377 0.139018,-0.198957 0.119156,-0.198956 0.11916,-0.198956 0.0993,-0.215536 0.07944,-0.215536 0.07944,-0.2155358 0.07944,-0.232116 0.01986,-0.232117 0.03972,-0.198957 0.01986,-0.232115 0.01986,-0.232116"
id="path2083"
inkscape:connector-curvature="0" />
<path
style="fill:url(#linearGradient9177);fill-opacity:1;stroke:none;stroke-width:0.001"
d="m 95.751434,-11.419665 -0.01986,-0.232116 0,-0.232116 -0.03972,-0.215536 -0.05958,-0.232116 -0.05958,-0.215536 -0.05958,-0.215536 -0.0993,-0.215537 -0.0993,-0.215534 -0.0993,-0.198958 -0.119148,-0.198957 -0.158878,-0.198956 -0.158878,-0.198957 -0.139019,-0.182376 -0.178736,-0.165797 -0.178738,-0.165798 -0.198596,-0.165797 -0.198597,-0.149218 -0.198596,-0.149217 -0.218457,-0.132637 -0.238318,-0.132639 -0.238314,-0.116057 -0.218458,-0.09948 -0.258175,-0.09948 -0.258176,-0.0829 -0.258176,-0.0829 -0.258176,-0.04974 -0.258175,-0.04974 -0.278036,-0.03316 -0.258176,-0.03316 -0.278035,-0.01658 -0.258175,0 0,0 -0.278037,0 -0.258175,0.01658 -0.278037,0.03316 -0.278036,0.03316 -0.258175,0.04974 -0.258176,0.04974 -0.258176,0.0829 -0.258176,0.0829 -0.238315,0.09948 -0.238318,0.09948 -0.238314,0.116057 -0.238316,0.132639 -0.198598,0.132637 -0.218455,0.149217 -0.198598,0.149218 -0.178737,0.165797 -0.198596,0.165798 -0.178738,0.165797 -0.139017,0.182376 -0.158877,0.198957 -0.158878,0.198956 -0.0993,0.198957 -0.119159,0.198958 -0.0993,0.215534 -0.0993,0.215537 -0.05958,0.215536 -0.05958,0.215536 -0.05958,0.232116 -0.03972,0.215536 0,0.232116 -0.01986,0.232116 0,0 0.01986,0.215537 0,0.232115 0.03972,0.232116 0.05958,0.215536 0.05958,0.232115 0.05958,0.215538 0.0993,0.2155368 0.0993,0.198956 0.119159,0.215536 0.0993,0.198956 0.158878,0.198958 0.158877,0.182375 0.139017,0.182378 0.178738,0.165796 0.198596,0.182377 0.178737,0.149218 0.198598,0.165797 0.218455,0.132638 0.198598,0.149216 0.238316,0.116058 0.238314,0.116059 0.238318,0.116057 0.238315,0.0829 0.258176,0.0829 0.258176,0.0829 0.258176,0.04974 0.258175,0.04974 0.278036,0.04974 0.278037,0.03316 0.258175,0 0.278037,0.01658 0,0 0.258175,-0.01658 0.278035,0 0.258176,-0.03316 0.278036,-0.04974 0.258175,-0.04974 0.258176,-0.04974 0.258176,-0.0829 0.258176,-0.0829 0.258175,-0.0829 0.218458,-0.116057 0.238314,-0.116059 0.238318,-0.116058 0.218457,-0.149216 0.198596,-0.132638 0.198597,-0.165797 0.198596,-0.149218 0.178738,-0.182377 0.178736,-0.165796 0.139019,-0.182378 0.158878,-0.182375 0.158878,-0.198958 0.119156,-0.198956 0.0993,-0.215536 0.0993,-0.198956 0.0993,-0.2155368 0.05958,-0.215538 0.05958,-0.232115 0.05958,-0.215536 0.03972,-0.232116 0,-0.232115 0.01986,-0.215537"
id="path2085"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 57 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 60 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
height="70"
width="70"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="microsoft.svg">
<metadata
id="metadata18">
<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:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs16" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview14"
showgrid="false"
inkscape:zoom="6.0820847"
inkscape:cx="11.449874"
inkscape:cy="32.506345"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<rect
height="64.5785798"
width="64.5785805"
x="2.7154145"
y="2.8091612"
id="rect0"
style="fill:#ffffff" />
<rect
height="30.933941"
width="30.933941"
x="2.7154145"
y="2.8091612"
id="rect6"
style="fill:#f35325" />
<rect
height="30.933941"
width="30.933941"
x="36.360054"
y="2.8091612"
id="rect8"
style="fill:#81bc06" />
<rect
height="30.933941"
width="30.933941"
x="2.7154145"
y="36.4538"
id="rect10"
style="fill:#05a6f0" />
<rect
height="30.933941"
width="30.933941"
x="36.360054"
y="36.4538"
id="rect12"
style="fill:#ffba08" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 53 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="70.00013"
height="44.285007"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="opensuse.svg">
<metadata
id="metadata29">
<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:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs27" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2495"
inkscape:window-height="1056"
id="namedview25"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.6257672"
inkscape:cx="10.160224"
inkscape:cy="17.860616"
inkscape:window-x="1985"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Logo">
<rect
style="fill:#ffffff;stroke:#ffffff;stroke-opacity:1"
id="rect4169"
width="70.265175"
height="44.939247"
x="0.19042054"
y="-0.27339759" />
<path
d="m 61.241669,11.174955 c -1.53878,-0.05651 -2.74666,-1.3536628 -2.69527,-2.8946458 0.0237,-0.746062 0.34262,-1.435659 0.88457,-1.944803 0.54415,-0.508997 1.25487,-0.773944 2.00093,-0.745877 1.54098,0.05393 2.7492,1.348923 2.69744,2.892257 -0.0233,0.743712 -0.33788,1.433269 -0.88203,1.9446168 -0.54669,0.506794 -1.25741,0.771779 -2.00568,0.748452 l 4e-5,0 z m 0.64765,-2.5312428 c 0.68485,0 1.24065,-0.370493 1.24065,-0.825521 0,-0.457417 -0.55583,-0.828099 -1.24065,-0.828099 -0.68519,0 -1.23883,0.370682 -1.23883,0.828099 0,0.455028 0.55364,0.825521 1.23883,0.825521"
style="fill:#73ba25;fill-rule:nonzero"
id="path4"
inkscape:connector-curvature="0" />
<path
d="m 29.583689,27.224557 0.099,-0.0093 0.0161,-0.117267 c -0.0254,-0.09207 -0.0851,-0.174814 -0.17734,-1.31622 -0.0783,-1.010192 -0.23705,-3.780477 1.1573,-5.154248 0.54092,-0.536129 1.36682,-1.012503 2.01823,-1.166597 2.67143,-0.651227 6.13906,-0.200223 9.10042,3.223814 1.52805,1.769386 2.27816,2.577052 2.6532,2.938324 l 0.12872,0.119605 0.15658,0.112799 c 0.12192,0.06901 5.08971,2.356252 5.08971,2.356252 l 0.10119,-0.02536 0.003,-0.107964 c -0.0322,-0.03683 -3.14766,-4.061499 -2.59561,-7.377169 0.43723,-2.641561 2.54022,-2.404543 5.44654,-2.073291 0.9503,0.108148 2.03181,0.232405 3.15016,0.257775 3.12225,0.01843 6.48658,-0.554502 8.55987,-1.461199 1.34145,-0.586685 2.19737,-0.973367 2.73364,-1.461201 0.19304,-0.158743 0.29423,-0.420982 0.39791,-0.697174 l 0.0715,-0.186275 c 0.0873,-0.223286 0.21381,-0.701824 0.26924,-0.961904 0.0254,-0.114958 0.0368,-0.239359 -0.044,-0.301379 l -0.28747,0.0529 c -0.90882,0.545386 -3.18482,1.585453 -5.31533,1.6269 -2.63926,0.05506 -7.95921,-2.65551 -8.51375,-2.943157 l -0.0529,-0.06202 c -0.1337,-0.317667 -0.93207,-2.20681 -1.10011,-2.6047298 3.8291,2.5218068 7.00425,3.9163408 9.43651,4.1326328 2.70611,0.24152 4.81623,-1.235605 5.71824,-1.866296 0.17697,-0.119605 0.31067,-0.216291 0.36574,-0.236868 l 0.0575,-0.09438 c -0.14981,-0.9503 -1.56489,-5.5523538 -2.63244,-6.6569298 -0.29674,-0.303721 -0.53379,-0.598143 -1.0125,-0.878983 -3.86805,-2.254915 -13.05144,-3.61726601 -13.48154,-3.67928501 l -0.0737,0.02072 -0.0275,0.06436 c 0,0 -0.0347,1.90524801 -0.0393,2.11707701 -0.93888,-0.31302 -7.75649,-2.51518001 -14.14906,-2.73828401 -5.41861,-0.19096 -12.82114,-0.448735 -23.28162,5.98029301 l -0.30837,0.193229 C 8.301909,9.3132972 4.905588,13.096264 3.129245,17.495785 2.572399,18.878675 1.822322,22.001299 2.5631,24.939623 c 0.322136,1.286385 0.918119,2.574894 1.723624,3.730064 1.815516,2.609233 4.864295,4.342157 8.147825,4.634235 4.63423,0.414027 8.14566,-1.668197 9.39503,-5.566303 0.85822,-2.689846 0,-6.636023 -3.29048,-8.649421 -2.67609,-1.640665 -5.55701,-1.265625 -7.22524,-0.16339 -1.44959,0.961757 -2.27099,2.452795 -2.25492,4.093494 0.0322,2.906146 2.53807,4.452427 4.33751,4.454768 0.52448,0 1.04915,-0.08973 1.64282,-0.282961 0.20953,-0.06454 0.40957,-0.142636 0.62817,-0.278498 l 0.0669,-0.0436 0.0436,-0.02536 -0.0161,0.007 c 0.41187,-0.27619 0.66034,-0.731663 0.66034,-1.219534 0,-0.133517 -0.0207,-0.269233 -0.0575,-0.405058 -0.21165,-0.734002 -0.93888,-1.180362 -1.6936,-1.042375 l -0.10119,0.02071 -0.13803,0.04595 -0.20022,0.06685 c -0.41417,0.103501 -0.72719,0.110495 -0.79155,0.112617 -0.21165,-0.01378 -1.24956,-0.324258 -1.24956,-1.461018 l 0,-0.01375 c 0.003,-0.416521 0.17035,-0.708781 0.26242,-0.867525 0.3198,-0.50625 1.20343,-1.003203 2.39756,-0.897398 1.56488,0.133371 2.69233,0.936537 3.4401,2.450637 0.69502,1.408114 0.51325,3.138548 -0.46711,4.408641 -0.97336,1.258854 -2.70592,1.792635 -5.01162,1.541632 -2.32407,-0.255286 -4.28903,-1.592231 -5.38895,-3.674634 -1.076867,-2.034155 -1.136762,-4.447961 -0.154099,-6.302429 2.353949,-4.441006 6.797079,-4.39506 9.233979,-3.973892 3.60797,0.623516 6.88234,3.511241 8.3389,7.351799 0.2324,0.612089 0.35197,1.097582 0.45547,1.539326 l 0.15658,0.664993 4.0749,1.99033 0.0554,0.03914 1.1e-4,-3.7e-5 z M 58.548909,5.5489272 c -0.76831,0.713245 -1.20807,1.686612 -1.24491,2.735942 -0.0711,2.1628418 1.62709,3.9853128 3.78978,4.0659648 1.05399,0.03449 2.05253,-0.336085 2.81872,-1.05398 0.76619,-0.715592 1.20592,-1.6866118 1.2449,-2.7336368 0.0737,-2.165181 -1.62459,-3.989959 -3.79189,-4.06809 -1.04933,-0.03448 -2.05041,0.335905 -2.8166,1.0538"
style="fill:#73ba25;fill-rule:evenodd"
id="path6"
inkscape:connector-curvature="0" />
<path
d="m 69.880729,32.589151 -0.0455,0 c -0.0526,0 -0.0982,-0.04561 -0.0982,-0.09822 l 0,-0.704859 -0.15433,0.234949 c -0.0175,0.02452 -0.0491,0.03502 -0.0771,0.03502 l -0.0176,0 c -0.028,0 -0.0596,-0.01051 -0.0771,-0.03502 l -0.15784,-0.234949 0,0.704859 c 0,0.05261 -0.0456,0.09822 -0.10172,0.09822 l -0.0455,0 c -0.0526,0 -0.0982,-0.04561 -0.0982,-0.09822 l 0,-0.841684 -0.4735,0 0,0.841684 c 0,0.05261 -0.0491,0.09822 -0.10513,0.09822 l -0.0421,0 c -0.0526,0 -0.0982,-0.04561 -0.0982,-0.09822 l 0,-0.841684 -0.35418,0 c -0.0526,0 -0.0947,-0.03511 -0.0947,-0.09113 l 0,-0.0491 c 0,-0.05611 0.0421,-0.09122 0.0947,-0.09122 l 1.24147,0 c 0.0491,0 0.0806,0.0175 0.0982,0.04561 l 0.23494,0.35418 0.23496,-0.35418 c 0.0175,-0.0246 0.0456,-0.04561 0.0982,-0.04561 l 0.15783,0 0,1.080139 c 0,0.05261 -0.0491,0.09822 -0.10522,0.09822"
style="fill:#73ba25"
id="path8"
inkscape:connector-curvature="0" />
<path
d="m 29.287079,31.112727 c -1.69737,0 -2.63727,1.437818 -2.63727,2.433833 l 0,1.276578 c 0,1.462418 1.19586,2.370719 2.3076,2.370719 l 3.89275,0 c 0.48751,0 0.58922,0.319076 0.58922,0.589128 l 0,0.824177 c 0,0.08763 -0.014,0.880293 -0.58922,0.880293 l -5.31306,0 c -0.52611,0 -0.9083,0.364684 -0.9083,0.866189 l 0,0.227955 c 0,0.498004 0.37869,0.866282 0.9083,0.866282 l 5.60422,0 c 1.46242,0 2.40932,-1.017113 2.40932,-2.595259 l 0,-1.378208 c 0,-1.480014 -1.06613,-2.142767 -2.12176,-2.142767 l -3.82964,0 c -0.57871,0 -0.83818,-0.427891 -0.83818,-0.736464 l 0,-0.757558 c 0,-0.480409 0.31908,-0.753967 0.8802,-0.753967 l 4.24352,0 c 0.51902,0 0.9083,-0.371774 0.9083,-0.866282 l 0,-0.227952 c 0,-0.491002 -0.39629,-0.866195 -0.9258,-0.866195 l -4.5732,0"
id="S"
style="fill:#73ba25"
inkscape:connector-curvature="0" />
<path
d="m 45.219449,31.112727 c -0.50151,0 -0.9083,0.40679 -0.9083,0.908297 l 0,6.523027 c 0,0.519012 -0.42438,0.939901 -0.9399,0.939901 l -2.95994,0 c -0.51902,0 -0.93991,-0.420889 -0.93991,-0.939901 l 0,-6.523027 c 0,-0.501507 -0.40328,-0.908297 -0.9083,-0.908297 l -0.28756,0 c -0.50501,0 -0.9083,0.399788 -0.9083,0.908297 l 0,6.771984 c 0,1.574646 1.23797,2.717986 2.94585,2.717986 l 3.16338,0 c 1.70788,0 2.94585,-1.14334 2.94585,-2.717986 l 0,-6.771984 c 0,-0.508509 -0.39979,-0.908297 -0.9083,-0.908297 l -0.28757,0"
style="fill:#73ba25"
id="path11"
inkscape:connector-curvature="0" />
<use
style=""
transform="translate(21.601409,1.9460253e-7)"
xlink:href="#S"
id="use13"
x="0"
y="0"
width="100%"
height="100%" />
<path
d="m 59.843639,31.112727 c -0.50142,0 -0.8872,0.371687 -0.8872,0.866189 l 0,8.602683 c 0,0.491002 0.37169,0.866282 0.86969,0.866282 l 6.8562,0 c 0.52611,0 0.90839,-0.364775 0.90839,-0.866282 l 0,-0.227955 c 0,-0.498005 -0.37878,-0.866189 -0.90839,-0.866189 0,0 -5.36217,0 -5.61472,0 0,-0.22445 0,-1.967432 0,-2.191882 0.25255,0 4.11379,0 4.11379,0 0.52602,0 0.9083,-0.364772 0.9083,-0.869784 l 0,-0.224447 c 0,-0.50151 -0.38228,-0.869695 -0.9083,-0.869695 0,0 -3.86124,0 -4.11379,0 0,-0.224446 0,-2.027045 0,-2.251491 0.25255,0 5.33066,0 5.33066,0 0.52611,0 0.90839,-0.364772 0.90839,-0.866283 l 0,-0.227949 c 0,-0.50151 -0.38228,-0.866192 -0.90839,-0.866192 l -6.55103,0"
style="fill:#73ba25"
id="path15"
inkscape:connector-curvature="0" />
<path
d="M 1.553608,35.20533 C 0.697896,35.20533 0,35.87167 0,36.695847 l 0,3.244006 c 0,0.834679 0.673347,1.51503 1.501007,1.51503 l 2.097187,0 c 0.82766,0 1.504508,-0.680351 1.504508,-1.51503 l 0,-3.244006 c 0,-0.820674 -0.697893,-1.490517 -1.553608,-1.490517 l -1.995486,0 z m -0.452408,4.608203 0,-2.959853 c 0,-0.347267 0.284072,-0.63133 0.631267,-0.63133 l 1.634267,0 c 0.340183,0 0.631258,0.287653 0.631258,0.63133 l 0,2.959853 c 0,0.34727 -0.284063,0.631328 -0.631258,0.631328 l -1.6483,0 c -0.347195,0 -0.617234,-0.277055 -0.617234,-0.631328"
style="fill:#73ba25"
id="path17"
inkscape:connector-curvature="0" />
<path
d="m 9.858239,35.166812 c -0.60673,0 -1.05914,0.217447 -1.42738,0.392785 -0.22094,0.105135 -0.41382,0.196349 -0.56463,0.196349 -0.0631,0 -0.12274,-0.02801 -0.15431,-0.07712 l -0.13677,-0.266555 c -0.0316,-0.07012 -0.17185,-0.206939 -0.347194,-0.206939 l -0.203405,0 c -0.196393,0 -0.357718,0.175426 -0.357718,0.396282 l 0,8.223993 c 0,0.25596 0.199904,0.4594 0.45942,0.4594 l 0.178859,0 c 0.252508,0 0.459418,-0.20694 0.459418,-0.4594 l 0,-2.728494 c 0,-0.08062 0.0526,-0.164836 0.1017,-0.164836 0.15081,0 0.34369,0.08422 0.56814,0.189437 0.36473,0.164833 0.82065,0.375187 1.42738,0.375187 l 0.18934,0 c 1.06963,0 1.73598,-0.610142 1.73598,-1.592149 l 0,-3.138784 c 0,-0.967914 -0.68035,-1.595655 -1.73598,-1.595655 l -0.19285,0 0,0 0,-0.0035 z m -2.09722,4.583605 0,-2.830121 c 0,-0.389282 0.30512,-0.694443 0.69439,-0.694443 l 1.52906,0 c 0.38929,0 0.69436,0.305161 0.69436,0.694443 l 0,2.830121 c 0,0.38228 -0.30857,0.694444 -0.69436,0.694444 l -1.52906,0 c -0.38226,0 -0.69439,-0.312164 -0.69439,-0.694444"
style="fill:#73ba25"
id="path19"
inkscape:connector-curvature="0" />
<path
d="m 14.894249,35.20533 c -0.85569,0 -1.55354,0.66634 -1.55354,1.490517 l 0,3.219406 c 0,0.834678 0.67684,1.54313 1.47642,1.54313 l 2.16386,0 c 0.26647,0 0.45941,-0.182431 0.45941,-0.434891 l 0,-0.140328 c 0,-0.25246 -0.19294,-0.434798 -0.45941,-0.434798 l -1.77458,0 c -0.49801,0 -0.76106,-0.242048 -0.76106,-0.708452 0,0 0,-0.810083 0,-0.939903 0.14383,0 3.20549,0 3.20549,0 0.51201,0 0.82059,-0.315574 0.82059,-0.848684 l 0,-1.248475 c 0,-0.820676 -0.69786,-1.490432 -1.55355,-1.490432 l -2.02004,0 -0.004,-0.0071 z m -0.4524,1.634257 c 0,-0.343679 0.27006,-0.617237 0.61723,-0.617237 l 1.68687,0 c 0.34727,0 0.61724,0.270055 0.61724,0.617237 0,0 0,0.873282 0,1.003018 -0.13674,0 -2.78452,0 -2.92134,0 0,-0.129736 0,-1.003018 0,-1.003018"
style="fill:#73ba25"
id="path21"
inkscape:connector-curvature="0" />
<path
d="m 22.932389,35.166812 c -0.60322,0 -1.05913,0.213944 -1.4239,0.389285 -0.22795,0.105135 -0.4243,0.199849 -0.58213,0.199849 -0.0701,0 -0.0982,-0.007 -0.15083,-0.101723 l -0.12623,-0.231452 c -0.0701,-0.143735 -0.19285,-0.217441 -0.36118,-0.217441 l -0.17894,0 c -0.21385,0 -0.36818,0.16483 -0.36818,0.396282 l 0,5.393777 c 0,0.256053 0.20335,0.462994 0.4594,0.462994 l 0.17884,0 c 0.25255,0 0.4594,-0.206941 0.4594,-0.462994 l 0,-4.082095 c 0,-0.38228 0.31217,-0.694444 0.69445,-0.694444 l 1.52904,0 c 0.38228,0 0.69435,0.312164 0.69435,0.694444 l 0,4.082095 c 0,0.256053 0.20344,0.462994 0.45949,0.462994 l 0.17884,0 c 0.25246,0 0.45941,-0.206941 0.45941,-0.462994 l 0,-4.232926 c 0,-0.967911 -0.68035,-1.595651 -1.73598,-1.595651 l -0.19285,0"
style="fill:#73ba25"
id="path23"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<svg id="svg1998" width="51.358818" height="47.630692" version="1.0" xmlns="http://www.w3.org/2000/svg">
<defs id="defs2001">
<marker orient="auto" refY="0" refX="0" id="Arrow2Lstart" style="overflow:visible">
<path id="path11918" style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " transform="matrix(1.1,0,0,1.1,1.1,0)"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Send" style="overflow:visible">
<path id="path11921" d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none" transform="matrix(-0.2,0,0,-0.2,-1.2,0)"/>
</marker>
<marker orient="auto" refY="0" refX="0" id="Arrow1Lstart" style="overflow:visible">
<path id="path11936" d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none" transform="matrix(0.8,0,0,0.8,10,0)"/>
</marker>
<linearGradient id="linearGradient9199" gradientUnits="userSpaceOnUse" gradientTransform="matrix(24.666332,1.3331909e-2,-1.2883406e-2,23.708747,-8.6563136,-4.6316275)" x1="2.1178279" y1="0.30649999" x2="-0.4954865" y2="0.30649999">
<stop style="stop-opacity: 1; stop-color: rgb(239, 239, 239);" offset="0" id="stop8333"/>
<stop style="stop-opacity: 1; stop-color: rgb(255, 255, 255);" offset="1" id="stop8335"/>
</linearGradient>
</defs>
<path id="path11907" d="M 1.8402723,44.565612 L 1.8402723,47.615693 L 44.293781,47.615693 L 44.293781,44.565612 L 1.8402723,44.565612" style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001"/>
<path id="path11020" d="M 44.370594,6.1851672 L 51.194316,1.0980117 L 51.358819,41.344844 L 44.266438,47.63069 L 44.370594,6.1851672" style="fill:#000000;fill-opacity:0.39215686;stroke:none;stroke-width:0.001"/>
<path id="path2037" d="M 0.062500355,5.0439492 L 0.062500355,46.326915 L 44.31814,46.326915 L 44.31814,5.0439492 L 0.062500355,5.0439492" style="fill-opacity: 1; stroke: none; stroke-width: 0.001; fill: rgb(239, 239, 239);"/>
<path id="path2041" d="M -0.028418806,5.1647552 L 5.5982489,0.11782966 L 50.022311,0.14184042 L 44.346312,5.1887393 L -0.028418806,5.1647552" style="fill:url(#linearGradient9199);fill-opacity:1;stroke:none;stroke-width:0.001"/>
<path id="path2045" d="M 44.228586,5.0887264 L 49.976169,0.12831483 L 49.976169,41.348635 L 44.228586,46.309047 L 44.228586,5.0887264" style="fill-opacity: 1; stroke: none; stroke-width: 0.001; fill: rgb(223, 223, 223);"/>
<path id="path-1" style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 22.02 13.392 C 18.596 13.392 15.66 14.606 13.304 16.992 C 10.94 19.354 9.744 22.31 9.744 25.78 C 9.744 29.424 10.984 32.462 13.428 34.804 C 15.862 37.152 18.706 38.342 21.89 38.342 C 25.346 38.342 28.302 37.132 30.678 34.744 C 33.052 32.326 34.256 29.34 34.256 25.87 C 34.256 22.352 33.068 19.364 30.72 16.992 C 28.39 14.606 25.464 13.392 22.02 13.392 Z M 21.824 43.716 C 17.4 43.716 13.37 42.162 9.85 39.1 C 5.966 35.706 4 31.202 4 25.714 C 4 20.886 5.794 16.684 9.332 13.218 C 12.852 9.756 17.146 8 22.09 8 C 26.972 8 31.22 9.772 34.714 13.266 C 38.22 16.758 40 21.014 40 25.91 C 40 30.842 38.214 35.086 34.69 38.518 C 31.154 41.966 26.824 43.716 21.824 43.716"/>
<path id="path-2" style="fill:#458d3e;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 32.134 22.922 L 27.044 18.878 L 27.044 21.402 L 18.01 21.402 L 18.01 24.442 L 27.044 24.442 L 27.044 26.968 L 32.134 22.922"/>
<path id="path-3" style="fill:#458d3e;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 11.436 28.122 L 16.532 32.168 L 16.532 29.644 L 25.564 29.644 L 25.564 26.6 L 16.532 26.6 L 16.532 24.074 L 11.436 28.122"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<svg height="59.253815" id="Andysvg" version="1.0" width="65.414536" x="0.00000000" y="0.00000000" xmlns="http://www.w3.org/2000/svg">
<defs id="defs3">
<linearGradient id="linearGradient891" x1="92.437965" x2="27.674332" y1="-3.9104078" y2="91.076988" gradientTransform="matrix(0.8184166,0,0,0.530237,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient905" x1="-77.726181" x2="95.64444" y1="208.43991" y2="11.699047" gradientTransform="matrix(0.7314635,0,0,0.5932693,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<radialGradient cx="60.004654" cy="56.485935" id="radialGradient1132" r="68.589226" gradientTransform="matrix(0.8184166,0,0,0.530237,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop1134" offset="0" style="stop-color:#8bb7df;stop-opacity:1.0000000;"/>
<stop id="stop1136" offset="0.7621" style="stop-color:#2a6092;stop-opacity:1.0000000;"/>
<stop id="stop1135" offset="1" style="stop-color:#375e82;stop-opacity:1.0000000;"/>
</radialGradient>
<linearGradient id="linearGradient1140" x1="45.685757" x2="41.96706" y1="110.4447" y2="232.24953" gradientTransform="matrix(1.2743811,0,0,0.3405213,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1144" x1="31.449743" x2="31.617281" y1="203.49899" y2="251.21892" gradientTransform="matrix(1.4044089,0,0,0.3089952,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1146" x1="39.810947" x2="17.87653" y1="90.197021" y2="113.71949" gradientTransform="matrix(0.8811179,0,0,0.4925045,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1156" x1="25.220816" x2="25.220816" y1="178.48862" y2="234.26866" gradientTransform="matrix(1.6156202,0,0,0.2685999,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1157" x1="51.46093" x2="-16.224497" y1="269.85831" y2="176.28694" gradientTransform="matrix(1.6156202,0,0,0.2685999,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient2635" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.8821916,0,0,0.491702,-8.9069314,-15.277305)" x1="39.690613" y1="49.507656" x2="70.224304" y2="20.481863">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient2637" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.8816883,0,0,0.4919824,-10.701684,-14.28309)" x1="35.190361" y1="76.277557" x2="8.3460579" y2="105.42543">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
</defs>
<rect height="5.4088969" id="rect1155" style="fill:url(#linearGradient1156);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient1157);stroke-width:0.95344429pt" width="38.405891" x="12.350429" y="36.575089"/>
<path d="M 0.19287398,54.885213 C -0.67386281,56.46268 1.5579198,59.253939 3.3933636,59.253939 L 62.069027,59.253939 C 63.628857,59.253939 65.976201,57.281205 65.269522,55.925378 L 58.655165,43.235277 C 58.145696,42.257819 57.005954,41.779036 55.881408,41.779036 L 8.9408812,41.779036 C 8.0135624,41.779036 7.0317541,42.438291 6.5938539,43.235277 L 0.19287398,54.885213 z " id="path1139" style="fill:url(#linearGradient1140);fill-opacity:1;fill-rule:evenodd;stroke-width:1.44734821pt"/>
<rect height="39.110481" id="rect1137" rx="3.6272225" ry="3.536587" style="fill:url(#linearGradient905);fill-opacity:1;fill-rule:evenodd;stroke-width:1.62826681" width="48.220726" x="7.4732022" y="-0.010164791"/>
<rect height="24.74659" id="rect1131" style="fill:url(#radialGradient1132);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient891);stroke-width:0.96503658pt" width="38.813015" x="12.390426" y="6.027596"/>
<path d="M 8.5906358,19.782157 L 8.3772707,34.032521 C 8.3432557,36.304242 9.6712558,37.75887 12.004493,37.777143 L 38.568566,37.985175 L 41.128957,32.160207 L 11.471076,31.952177 L 11.257713,19.678141 L 8.5906358,19.782157 z " id="path1145" style="fill:url(#linearGradient1146);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path d="M 2.7205883,54.675124 C 2.1113822,55.866786 2.9089235,57.975349 4.9701318,57.975349 L 60.179981,57.975349 C 61.276346,57.975349 62.926231,56.48511 62.429524,55.460899 L 57.78047,45.874547 C 57.422369,45.136152 56.621274,44.774474 55.830865,44.774474 L 8.8693353,44.774468 C 8.2175462,44.774468 7.5274604,45.272486 7.2196723,45.874547 L 2.7205883,54.675124 z " id="path1143" style="fill:url(#linearGradient1144);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path d="M 19.010905,6.5904681 L 42.426675,6.2948726 C 46.041292,6.2492425 50.532134,9.8297185 50.532134,13.389152 L 50.532134,24.030571 L 18.710703,23.734975 L 19.010905,6.5904681 z " id="path1147" style="fill:url(#linearGradient2635);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<rect x="12.664" y="6.294" width="38.092" height="24.48" style="fill: rgb(255, 255, 255);"/>
<path d="M 41.29338,29.915511 L 20.310226,29.977799 C 17.071125,29.987414 13.079277,26.740463 13.111035,23.55121 L 13.205982,14.016504 L 41.715336,14.556637 L 41.29338,29.915511 z " id="path1149" style="fill:url(#linearGradient2637);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path d="M 22.129 11.703 L 29.893 10.647 L 29.896 18.134 L 22.138 18.178 Z M 29.891 18.997 L 29.895 26.494 L 22.136 25.428 L 22.135 18.948 Z M 30.832 10.507 L 41.126 9.004 L 41.126 18.039 L 30.832 18.12 Z M 41.129 19.067 L 41.126 28.063 L 30.832 26.608 L 30.818 19.05 Z" fill="#0078d6"/>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<svg height="59.253815" id="Andysvg" version="1.0" width="65.414536" x="0.00000000" y="0.00000000" xmlns="http://www.w3.org/2000/svg">
<defs id="defs3">
<linearGradient id="linearGradient891" x1="92.437965" x2="27.674332" y1="-3.9104078" y2="91.076988" gradientTransform="matrix(0.8184166,0,0,0.530237,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient905" x1="-77.726181" x2="95.64444" y1="208.43991" y2="11.699047" gradientTransform="matrix(0.7314635,0,0,0.5932693,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<radialGradient cx="60.004654" cy="56.485935" id="radialGradient1132" r="68.589226" gradientTransform="matrix(0.8184166,0,0,0.530237,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop1134" offset="0" style="stop-color:#8bb7df;stop-opacity:1.0000000;"/>
<stop id="stop1136" offset="0.7621" style="stop-color:#2a6092;stop-opacity:1.0000000;"/>
<stop id="stop1135" offset="1" style="stop-color:#375e82;stop-opacity:1.0000000;"/>
</radialGradient>
<linearGradient id="linearGradient1140" x1="45.685757" x2="41.96706" y1="110.4447" y2="232.24953" gradientTransform="matrix(1.2743811,0,0,0.3405213,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1144" x1="31.449743" x2="31.617281" y1="203.49899" y2="251.21892" gradientTransform="matrix(1.4044089,0,0,0.3089952,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1146" x1="39.810947" x2="17.87653" y1="90.197021" y2="113.71949" gradientTransform="matrix(0.8811179,0,0,0.4925045,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1156" x1="25.220816" x2="25.220816" y1="178.48862" y2="234.26866" gradientTransform="matrix(1.6156202,0,0,0.2685999,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1157" x1="51.46093" x2="-16.224497" y1="269.85831" y2="176.28694" gradientTransform="matrix(1.6156202,0,0,0.2685999,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient2635" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.8821916,0,0,0.491702,-8.9069314,-15.277305)" x1="39.690613" y1="49.507656" x2="70.224304" y2="20.481863">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient2637" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.8816883,0,0,0.4919824,-10.701684,-14.28309)" x1="35.190361" y1="76.277557" x2="8.3460579" y2="105.42543">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
</defs>
<rect height="5.4088969" id="rect1155" style="fill:url(#linearGradient1156);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient1157);stroke-width:0.95344429pt" width="38.405891" x="12.350429" y="36.575089"/>
<path d="M 0.19287398,54.885213 C -0.67386281,56.46268 1.5579198,59.253939 3.3933636,59.253939 L 62.069027,59.253939 C 63.628857,59.253939 65.976201,57.281205 65.269522,55.925378 L 58.655165,43.235277 C 58.145696,42.257819 57.005954,41.779036 55.881408,41.779036 L 8.9408812,41.779036 C 8.0135624,41.779036 7.0317541,42.438291 6.5938539,43.235277 L 0.19287398,54.885213 z " id="path1139" style="fill:url(#linearGradient1140);fill-opacity:1;fill-rule:evenodd;stroke-width:1.44734821pt"/>
<rect height="39.110481" id="rect1137" rx="3.6272225" ry="3.536587" style="fill:url(#linearGradient905);fill-opacity:1;fill-rule:evenodd;stroke-width:1.62826681" width="48.220726" x="7.4732022" y="-0.010164791"/>
<rect height="24.74659" id="rect1131" style="fill:url(#radialGradient1132);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient891);stroke-width:0.96503658pt" width="38.813015" x="12.390426" y="6.027596"/>
<path d="M 8.5906358,19.782157 L 8.3772707,34.032521 C 8.3432557,36.304242 9.6712558,37.75887 12.004493,37.777143 L 38.568566,37.985175 L 41.128957,32.160207 L 11.471076,31.952177 L 11.257713,19.678141 L 8.5906358,19.782157 z " id="path1145" style="fill:url(#linearGradient1146);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path d="M 2.7205883,54.675124 C 2.1113822,55.866786 2.9089235,57.975349 4.9701318,57.975349 L 60.179981,57.975349 C 61.276346,57.975349 62.926231,56.48511 62.429524,55.460899 L 57.78047,45.874547 C 57.422369,45.136152 56.621274,44.774474 55.830865,44.774474 L 8.8693353,44.774468 C 8.2175462,44.774468 7.5274604,45.272486 7.2196723,45.874547 L 2.7205883,54.675124 z " id="path1143" style="fill:url(#linearGradient1144);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path d="M 19.010905,6.5904681 L 42.426675,6.2948726 C 46.041292,6.2492425 50.532134,9.8297185 50.532134,13.389152 L 50.532134,24.030571 L 18.710703,23.734975 L 19.010905,6.5904681 z " id="path1147" style="fill:url(#linearGradient2635);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<rect x="12.664" y="6.294" width="38.092" height="24.48"/>
<path d="M 41.29338,29.915511 L 20.310226,29.977799 C 17.071125,29.987414 13.079277,26.740463 13.111035,23.55121 L 13.205982,14.016504 L 41.715336,14.556637 L 41.29338,29.915511 z " id="path1149" style="fill:url(#linearGradient2637);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path d="M 43.036 11.636 C 38.773 13.399 36.722 12.408 34.875 11.164 L 32.77 18.46 C 34.617 19.71 36.846 20.739 40.936 18.908 L 43.036 11.636 Z" style="fill:#91c300;"/>
<path style="fill:#00b4f1;" d="M 29.175 26.303 C 27.323 25.056 25.309 24.031 21.036 25.798 L 23.128 18.489 C 27.403 16.721 29.457 17.721 31.307 18.975 L 29.175 26.303 Z"/>
<path d="M 31.663 17.656 C 30.548 16.906 29.348 16.205 27.646 16.192 C 26.522 16.183 25.185 16.502 23.486 17.205 L 25.591 9.913 C 29.863 8.147 31.915 9.147 33.763 10.4 L 31.663 17.656 Z" style="fill:#f8682c;"/>
<path d="M 32.417 19.679 C 34.266 20.924 36.321 21.916 40.589 20.152 L 38.485 27.419 C 34.216 29.184 32.166 28.184 30.318 26.932 L 32.417 19.679 Z" style="fill:#ffc300;"/>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<svg height="59.253815" id="Andysvg" version="1.0" width="65.414536" x="0.00000000" y="0.00000000" xmlns="http://www.w3.org/2000/svg">
<defs id="defs3">
<linearGradient id="linearGradient891" x1="92.437965" x2="27.674332" y1="-3.9104078" y2="91.076988" gradientTransform="matrix(0.8184166,0,0,0.530237,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient905" x1="-77.726181" x2="95.64444" y1="208.43991" y2="11.699047" gradientTransform="matrix(0.7314635,0,0,0.5932693,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<radialGradient cx="60.004654" cy="56.485935" id="radialGradient1132" r="68.589226" gradientTransform="matrix(0.8184166,0,0,0.530237,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop1134" offset="0" style="stop-color:#8bb7df;stop-opacity:1.0000000;"/>
<stop id="stop1136" offset="0.7621" style="stop-color:#2a6092;stop-opacity:1.0000000;"/>
<stop id="stop1135" offset="1" style="stop-color:#375e82;stop-opacity:1.0000000;"/>
</radialGradient>
<linearGradient id="linearGradient1140" x1="45.685757" x2="41.96706" y1="110.4447" y2="232.24953" gradientTransform="matrix(1.2743811,0,0,0.3405213,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1144" x1="31.449743" x2="31.617281" y1="203.49899" y2="251.21892" gradientTransform="matrix(1.4044089,0,0,0.3089952,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1146" x1="39.810947" x2="17.87653" y1="90.197021" y2="113.71949" gradientTransform="matrix(0.8811179,0,0,0.4925045,-9.8827694,-14.589616)" gradientUnits="userSpaceOnUse">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1156" x1="25.220816" x2="25.220816" y1="178.48862" y2="234.26866" gradientTransform="matrix(1.6156202,0,0,0.2685999,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient1157" x1="51.46093" x2="-16.224497" y1="269.85831" y2="176.28694" gradientTransform="matrix(1.6156202,0,0,0.2685999,-9.8827678,-14.589608)" gradientUnits="userSpaceOnUse">
<stop id="stop889" offset="0" style="stop-color:#626262;stop-opacity:1.0000000;"/>
<stop id="stop890" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient2635" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.8821916,0,0,0.491702,-8.9069314,-15.277305)" x1="39.690613" y1="49.507656" x2="70.224304" y2="20.481863">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linearGradient2637" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.8816883,0,0,0.4919824,-10.701684,-14.28309)" x1="35.190361" y1="76.277557" x2="8.3460579" y2="105.42543">
<stop id="stop893" offset="0" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
<stop id="stop894" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
</linearGradient>
</defs>
<rect height="5.4088969" id="rect1155" style="fill:url(#linearGradient1156);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient1157);stroke-width:0.95344429pt" width="38.405891" x="12.350429" y="36.575089"/>
<path d="M 0.19287398,54.885213 C -0.67386281,56.46268 1.5579198,59.253939 3.3933636,59.253939 L 62.069027,59.253939 C 63.628857,59.253939 65.976201,57.281205 65.269522,55.925378 L 58.655165,43.235277 C 58.145696,42.257819 57.005954,41.779036 55.881408,41.779036 L 8.9408812,41.779036 C 8.0135624,41.779036 7.0317541,42.438291 6.5938539,43.235277 L 0.19287398,54.885213 z " id="path1139" style="fill:url(#linearGradient1140);fill-opacity:1;fill-rule:evenodd;stroke-width:1.44734821pt"/>
<rect height="39.110481" id="rect1137" rx="3.6272225" ry="3.536587" style="fill:url(#linearGradient905);fill-opacity:1;fill-rule:evenodd;stroke-width:1.62826681" width="48.220726" x="7.4732022" y="-0.010164791"/>
<rect height="24.74659" id="rect1131" style="fill:url(#radialGradient1132);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient891);stroke-width:0.96503658pt" width="38.813015" x="12.390426" y="6.027596"/>
<path d="M 8.5906358,19.782157 L 8.3772707,34.032521 C 8.3432557,36.304242 9.6712558,37.75887 12.004493,37.777143 L 38.568566,37.985175 L 41.128957,32.160207 L 11.471076,31.952177 L 11.257713,19.678141 L 8.5906358,19.782157 z " id="path1145" style="fill:url(#linearGradient1146);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path d="M 2.7205883,54.675124 C 2.1113822,55.866786 2.9089235,57.975349 4.9701318,57.975349 L 60.179981,57.975349 C 61.276346,57.975349 62.926231,56.48511 62.429524,55.460899 L 57.78047,45.874547 C 57.422369,45.136152 56.621274,44.774474 55.830865,44.774474 L 8.8693353,44.774468 C 8.2175462,44.774468 7.5274604,45.272486 7.2196723,45.874547 L 2.7205883,54.675124 z " id="path1143" style="fill:url(#linearGradient1144);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path d="M 19.010905,6.5904681 L 42.426675,6.2948726 C 46.041292,6.2492425 50.532134,9.8297185 50.532134,13.389152 L 50.532134,24.030571 L 18.710703,23.734975 L 19.010905,6.5904681 z " id="path1147" style="fill:url(#linearGradient2635);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<rect x="12.664" y="6.294" width="38.092" height="24.48" style="fill: rgb(255, 255, 255);"/>
<path d="M 41.29338,29.915511 L 20.310226,29.977799 C 17.071125,29.987414 13.079277,26.740463 13.111035,23.55121 L 13.205982,14.016504 L 41.715336,14.556637 L 41.29338,29.915511 z " id="path1149" style="fill:url(#linearGradient2637);fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"/>
<path style="fill:#00adef;" d="M 22.129 11.699 L 29.894 10.641 L 29.897 18.13 L 22.136 18.175 Z M 29.89 18.993 L 29.896 26.49 L 22.135 25.423 L 22.135 18.944 Z M 30.832 10.503 L 41.127 9 L 41.127 18.035 L 30.832 18.117 Z M 41.129 19.064 L 41.127 28.059 L 30.832 26.606 L 30.817 19.047 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1998"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
width="66.000435"
height="44.5159"
version="1.0"
sodipodi:docname="router-red.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<metadata
id="metadata2003">
<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: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="defs2001">
<linearGradient
id="linearGradient9312">
<stop
style="stop-color:#008f00;stop-opacity:1;"
offset="0"
id="stop9314" />
<stop
style="stop-color:#ffffff;stop-opacity:0.94117647;"
offset="1"
id="stop9316" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path11918"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(1.1,0,0,1.1,1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path11921"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path11936"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(0.8,0,0,0.8,10,0)" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient9312"
id="linearGradient2216"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(15.252829,0,0,14.082619,53.467529,3.4188377)"
x1="-1.0929121"
y1="0.63145506"
x2="-4.5832458"
y2="0.070047863" />
</defs>
<sodipodi:namedview
inkscape:window-height="949"
inkscape:window-width="1280"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="7.8958335"
inkscape:cx="27.967059"
inkscape:cy="24.784192"
inkscape:window-x="0"
inkscape:window-y="31"
inkscape:current-layer="svg1998"
showgrid="false"
inkscape:window-maximized="1" />
<rect
style="opacity:1;fill:#000000;fill-opacity:0.39215687;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4558"
width="64.552505"
height="41.53862"
x="1.4479325"
y="2.9772801"
ry="11.631706"
rx="32.212925"
inkscape:transform-center-x="8.4568136" />
<rect
style="opacity:1;fill:#0d8800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.01500000000000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9971"
width="64.499474"
height="42.154343"
x="0.0625"
y="0.18084908"
ry="11.557454"
rx="32.249737"
inkscape:transform-center-x="8.2952569" />
<g
id="g4160">
<path
id="path4815"
d="M 64.514069,11.541297 L 64.457031,10.955643 L 64.342949,10.36999 L 64.152814,9.8038604 L 63.867612,9.2182077 L 63.487345,8.6520765 L 63.050034,8.0859452 L 62.517657,7.5393369 L 61.909226,7.0122499 L 61.224742,6.4851607 L 60.464203,5.9775955 L 59.646626,5.4700289 L 58.752993,4.9819859 L 57.783307,4.4939413 L 56.75658,4.0644625 L 55.6538,3.6349838 L 54.493981,3.2055052 L 53.296132,2.8150692 L 52.022232,2.4636777 L 50.710303,2.1122862 L 49.341334,1.7999375 L 47.934339,1.5071117 L 46.489316,1.2338059 L 45.006267,0.99954576 L 43.504204,0.76528425 L 41.964114,0.58958842 L 40.385997,0.43341443 L 38.788867,0.29676153 L 37.191738,0.19915292 L 35.575597,0.12106555 L 33.940437,0.06250017 L 32.324296,0.06250017 L 32.324296,0.06250017 L 30.689136,0.06250017 L 29.053981,0.12106555 L 27.45685,0.19915292 L 25.840705,0.29676153 L 24.243576,0.43341443 L 22.684472,0.58958842 L 21.125372,0.76528425 L 19.623307,0.99954576 L 18.140258,1.2338059 L 16.695234,1.5071117 L 15.28824,1.7999375 L 13.919273,2.1122862 L 12.607342,2.4636777 L 11.333442,2.8150692 L 10.135592,3.2055052 L 8.9757693,3.6349838 L 7.8729941,4.0644625 L 6.8462664,4.4939413 L 5.8765785,4.9819859 L 4.9829488,5.4700289 L 4.1653682,5.9775955 L 3.4048335,6.4851607 L 2.7203448,7.0122499 L 2.1309311,7.5393369 L 1.5795405,8.0859452 L 1.1422325,8.6520765 L 0.76195982,9.2182077 L 0.47676065,9.8038604 L 0.26760898,10.36999 L 0.15353084,10.955643 L 0.11550327,11.541297 L 0.11550327,11.541297 L 0.15353084,12.12695 L 0.26760898,12.693081 L 0.47676065,13.278734 L 0.76195982,13.825344 L 1.1422325,14.410996 L 1.5795405,14.957605 L 2.1309311,15.523736 L 2.7203448,16.070348 L 3.4048335,16.597435 L 4.1653682,17.085479 L 4.9829488,17.593043 L 5.8765785,18.100608 L 6.8462664,18.549609 L 7.8729941,18.998611 L 8.9757693,19.447613 L 10.135592,19.857571 L 11.333442,20.248007 L 12.607342,20.599396 L 13.919273,20.950787 L 15.28824,21.263135 L 16.695234,21.575486 L 18.140258,21.829265 L 19.623307,22.083049 L 21.125372,22.297787 L 22.684472,22.473485 L 24.243576,22.629661 L 25.840705,22.766312 L 27.45685,22.863921 L 29.053981,22.942009 L 30.689136,23.000574 L 32.324296,23.000574 L 32.324296,23.000574 L 33.940437,23.000574 L 35.575597,22.942009 L 37.191738,22.863921 L 38.788867,22.766312 L 40.385997,22.629661 L 41.964114,22.473485 L 43.504204,22.297787 L 45.006267,22.083049 L 46.489316,21.829265 L 47.934339,21.575486 L 49.341334,21.263135 L 50.710303,20.950787 L 52.022232,20.599396 L 53.296132,20.248007 L 54.493981,19.857571 L 55.6538,19.447613 L 56.75658,18.998611 L 57.783307,18.549609 L 58.752993,18.100608 L 59.646626,17.593043 L 60.464203,17.085479 L 61.224742,16.597435 L 61.909226,16.070348 L 62.517657,15.523736 L 63.050034,14.957605 L 63.487345,14.410996 L 63.867612,13.825344 L 64.152814,13.278734 L 64.342949,12.693081 L 64.457031,12.12695 L 64.514069,11.541297"
style="fill:url(#linearGradient2216);fill-opacity:1;stroke:none;stroke-width:0.01928605;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path4819"
d="M 33.023738,8.6936939 L 37.664889,10.327433 L 48.909313,5.4458969 L 53.946665,7.0599533 L 51.229891,3.0248142 L 38.061087,3.0248142 L 43.475766,4.225514 L 33.023738,8.6936939"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4821"
d="M 31.08049,13.161874 L 26.439334,11.528132 L 15.591104,16.429352 L 10.176425,14.775929 L 12.874332,19.244109 L 26.439334,19.244109 L 20.628458,17.630052 L 31.08049,13.161874"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4823"
d="M 11.327278,4.225514 L 15.968435,2.611458 L 27.212859,7.0599533 L 32.25021,5.8592533 L 29.552303,9.8943939 L 16.364632,9.8943939 L 21.779313,8.6936939 L 11.327278,4.225514"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4825"
d="M 53.154272,18.023723 L 48.513117,19.657467 L 37.664889,14.775929 L 32.25021,16.429352 L 34.966985,12.33516 L 48.513117,12.33516 L 42.70224,13.555544 L 53.154272,18.023723"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4827"
d="M 33.419936,9.1070493 L 38.061087,10.721105 L 49.286643,5.8592533 L 54.323994,7.4929926 L 51.60722,3.4184854 L 38.438415,3.4184854 L 43.871962,4.6191872 L 33.419936,9.1070493"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4829"
d="M 31.476681,13.555544 L 26.816665,11.941487 L 15.968435,16.803341 L 10.553753,15.189284 L 13.25166,19.657467 L 26.816665,19.657467 L 21.005786,18.023723 L 31.476681,13.555544"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4831"
d="M 11.723476,4.6191872 L 16.364632,3.0248142 L 27.609055,7.4929926 L 32.627541,6.2529266 L 29.929634,10.327433 L 16.741963,10.327433 L 22.175509,9.1070493 L 11.723476,4.6191872"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4833"
d="M 53.531602,18.43708 L 48.909313,20.070823 L 38.061087,15.189284 L 32.627541,16.803341 L 35.344315,12.7682 L 48.909313,12.7682 L 43.098437,13.9689 L 53.531602,18.43708"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,665 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1998"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
width="66.000435"
height="44.5159"
version="1.0"
sodipodi:docname="router-green-docker.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<metadata
id="metadata2003">
<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: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="defs2001">
<linearGradient
id="linearGradient9312">
<stop
style="stop-color:#008f00;stop-opacity:1;"
offset="0"
id="stop9314" />
<stop
style="stop-color:#ffffff;stop-opacity:0.94117647;"
offset="1"
id="stop9316" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path11918"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(1.1,0,0,1.1,1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path11921"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path11936"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(0.8,0,0,0.8,10,0)" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient9312"
id="linearGradient2216"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(15.252829,0,0,14.082619,53.467529,3.4188377)"
x1="-1.0929121"
y1="0.63145506"
x2="-4.5832458"
y2="0.070047863" />
</defs>
<sodipodi:namedview
inkscape:window-height="949"
inkscape:window-width="1280"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="0.98697919"
inkscape:cx="-115.2648"
inkscape:cy="133.9562"
inkscape:window-x="0"
inkscape:window-y="31"
inkscape:current-layer="svg1998"
showgrid="false"
inkscape:window-maximized="1" />
<rect
style="opacity:1;fill:#000000;fill-opacity:0.39215687;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4558"
width="64.552505"
height="41.53862"
x="1.4479325"
y="2.9772801"
ry="11.631706"
rx="32.212925"
inkscape:transform-center-x="8.4568136" />
<rect
style="opacity:1;fill:#0d8800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.01500000000000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9971"
width="64.499474"
height="42.154343"
x="0.0625"
y="0.18084908"
ry="11.557454"
rx="32.249737"
inkscape:transform-center-x="8.2952569" />
<g
id="g4160">
<path
id="path4815"
d="M 64.514069,11.541297 L 64.457031,10.955643 L 64.342949,10.36999 L 64.152814,9.8038604 L 63.867612,9.2182077 L 63.487345,8.6520765 L 63.050034,8.0859452 L 62.517657,7.5393369 L 61.909226,7.0122499 L 61.224742,6.4851607 L 60.464203,5.9775955 L 59.646626,5.4700289 L 58.752993,4.9819859 L 57.783307,4.4939413 L 56.75658,4.0644625 L 55.6538,3.6349838 L 54.493981,3.2055052 L 53.296132,2.8150692 L 52.022232,2.4636777 L 50.710303,2.1122862 L 49.341334,1.7999375 L 47.934339,1.5071117 L 46.489316,1.2338059 L 45.006267,0.99954576 L 43.504204,0.76528425 L 41.964114,0.58958842 L 40.385997,0.43341443 L 38.788867,0.29676153 L 37.191738,0.19915292 L 35.575597,0.12106555 L 33.940437,0.06250017 L 32.324296,0.06250017 L 32.324296,0.06250017 L 30.689136,0.06250017 L 29.053981,0.12106555 L 27.45685,0.19915292 L 25.840705,0.29676153 L 24.243576,0.43341443 L 22.684472,0.58958842 L 21.125372,0.76528425 L 19.623307,0.99954576 L 18.140258,1.2338059 L 16.695234,1.5071117 L 15.28824,1.7999375 L 13.919273,2.1122862 L 12.607342,2.4636777 L 11.333442,2.8150692 L 10.135592,3.2055052 L 8.9757693,3.6349838 L 7.8729941,4.0644625 L 6.8462664,4.4939413 L 5.8765785,4.9819859 L 4.9829488,5.4700289 L 4.1653682,5.9775955 L 3.4048335,6.4851607 L 2.7203448,7.0122499 L 2.1309311,7.5393369 L 1.5795405,8.0859452 L 1.1422325,8.6520765 L 0.76195982,9.2182077 L 0.47676065,9.8038604 L 0.26760898,10.36999 L 0.15353084,10.955643 L 0.11550327,11.541297 L 0.11550327,11.541297 L 0.15353084,12.12695 L 0.26760898,12.693081 L 0.47676065,13.278734 L 0.76195982,13.825344 L 1.1422325,14.410996 L 1.5795405,14.957605 L 2.1309311,15.523736 L 2.7203448,16.070348 L 3.4048335,16.597435 L 4.1653682,17.085479 L 4.9829488,17.593043 L 5.8765785,18.100608 L 6.8462664,18.549609 L 7.8729941,18.998611 L 8.9757693,19.447613 L 10.135592,19.857571 L 11.333442,20.248007 L 12.607342,20.599396 L 13.919273,20.950787 L 15.28824,21.263135 L 16.695234,21.575486 L 18.140258,21.829265 L 19.623307,22.083049 L 21.125372,22.297787 L 22.684472,22.473485 L 24.243576,22.629661 L 25.840705,22.766312 L 27.45685,22.863921 L 29.053981,22.942009 L 30.689136,23.000574 L 32.324296,23.000574 L 32.324296,23.000574 L 33.940437,23.000574 L 35.575597,22.942009 L 37.191738,22.863921 L 38.788867,22.766312 L 40.385997,22.629661 L 41.964114,22.473485 L 43.504204,22.297787 L 45.006267,22.083049 L 46.489316,21.829265 L 47.934339,21.575486 L 49.341334,21.263135 L 50.710303,20.950787 L 52.022232,20.599396 L 53.296132,20.248007 L 54.493981,19.857571 L 55.6538,19.447613 L 56.75658,18.998611 L 57.783307,18.549609 L 58.752993,18.100608 L 59.646626,17.593043 L 60.464203,17.085479 L 61.224742,16.597435 L 61.909226,16.070348 L 62.517657,15.523736 L 63.050034,14.957605 L 63.487345,14.410996 L 63.867612,13.825344 L 64.152814,13.278734 L 64.342949,12.693081 L 64.457031,12.12695 L 64.514069,11.541297"
style="fill:url(#linearGradient2216);fill-opacity:1;stroke:none;stroke-width:0.01928605;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path4819"
d="M 33.023738,8.6936939 L 37.664889,10.327433 L 48.909313,5.4458969 L 53.946665,7.0599533 L 51.229891,3.0248142 L 38.061087,3.0248142 L 43.475766,4.225514 L 33.023738,8.6936939"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4821"
d="M 31.08049,13.161874 L 26.439334,11.528132 L 15.591104,16.429352 L 10.176425,14.775929 L 12.874332,19.244109 L 26.439334,19.244109 L 20.628458,17.630052 L 31.08049,13.161874"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4823"
d="M 11.327278,4.225514 L 15.968435,2.611458 L 27.212859,7.0599533 L 32.25021,5.8592533 L 29.552303,9.8943939 L 16.364632,9.8943939 L 21.779313,8.6936939 L 11.327278,4.225514"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4825"
d="M 53.154272,18.023723 L 48.513117,19.657467 L 37.664889,14.775929 L 32.25021,16.429352 L 34.966985,12.33516 L 48.513117,12.33516 L 42.70224,13.555544 L 53.154272,18.023723"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4827"
d="M 33.419936,9.1070493 L 38.061087,10.721105 L 49.286643,5.8592533 L 54.323994,7.4929926 L 51.60722,3.4184854 L 38.438415,3.4184854 L 43.871962,4.6191872 L 33.419936,9.1070493"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4829"
d="M 31.476681,13.555544 L 26.816665,11.941487 L 15.968435,16.803341 L 10.553753,15.189284 L 13.25166,19.657467 L 26.816665,19.657467 L 21.005786,18.023723 L 31.476681,13.555544"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4831"
d="M 11.723476,4.6191872 L 16.364632,3.0248142 L 27.609055,7.4929926 L 32.627541,6.2529266 L 29.929634,10.327433 L 16.741963,10.327433 L 22.175509,9.1070493 L 11.723476,4.6191872"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4833"
d="M 53.531602,18.43708 L 48.909313,20.070823 L 38.061087,15.189284 L 32.627541,16.803341 L 35.344315,12.7682 L 48.909313,12.7682 L 43.098437,13.9689 L 53.531602,18.43708"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
</g>
<image
y="23.045622"
x="14.084294"
id="image4051"
xlink:href="data:image/png;base64,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
XQAAAABJRU5ErkJggg==
"
height="19.227247"
width="36.265862" />
</svg>

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg1998"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
width="66.000435"
height="44.5159"
version="1.0"
sodipodi:docname="router.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<metadata
id="metadata2003">
<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: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="defs2001">
<linearGradient
id="linearGradient9312">
<stop
style="stop-color:#ff2600;stop-opacity:1;"
offset="0"
id="stop9314" />
<stop
style="stop-color:#ffffff;stop-opacity:0.94117647;"
offset="1"
id="stop9316" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path11918"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(1.1,0,0,1.1,1.1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path11921"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path11936"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:black;stroke-width:1pt;marker-start:none"
transform="matrix(0.8,0,0,0.8,10,0)" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient9312"
id="linearGradient2216"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(15.252829,0,0,14.082619,53.467529,3.4188377)"
x1="-1.0929121"
y1="0.63145506"
x2="-4.5832458"
y2="0.070047863" />
</defs>
<sodipodi:namedview
inkscape:window-height="949"
inkscape:window-width="1280"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="7.8958335"
inkscape:cx="27.967059"
inkscape:cy="24.784192"
inkscape:window-x="0"
inkscape:window-y="31"
inkscape:current-layer="g4160"
showgrid="false"
inkscape:window-maximized="1" />
<rect
style="opacity:1;fill:#000000;fill-opacity:0.39215687;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4558"
width="64.552505"
height="41.53862"
x="1.4479325"
y="2.9772801"
ry="11.631706"
rx="32.212925"
inkscape:transform-center-x="8.4568136" />
<rect
style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.01500000000000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9971"
width="64.499474"
height="42.154343"
x="0.0625"
y="0.18084908"
ry="11.557454"
rx="32.249737"
inkscape:transform-center-x="8.2952569" />
<g
id="g4160">
<path
id="path4815"
d="M 64.514069,11.541297 L 64.457031,10.955643 L 64.342949,10.36999 L 64.152814,9.8038604 L 63.867612,9.2182077 L 63.487345,8.6520765 L 63.050034,8.0859452 L 62.517657,7.5393369 L 61.909226,7.0122499 L 61.224742,6.4851607 L 60.464203,5.9775955 L 59.646626,5.4700289 L 58.752993,4.9819859 L 57.783307,4.4939413 L 56.75658,4.0644625 L 55.6538,3.6349838 L 54.493981,3.2055052 L 53.296132,2.8150692 L 52.022232,2.4636777 L 50.710303,2.1122862 L 49.341334,1.7999375 L 47.934339,1.5071117 L 46.489316,1.2338059 L 45.006267,0.99954576 L 43.504204,0.76528425 L 41.964114,0.58958842 L 40.385997,0.43341443 L 38.788867,0.29676153 L 37.191738,0.19915292 L 35.575597,0.12106555 L 33.940437,0.06250017 L 32.324296,0.06250017 L 32.324296,0.06250017 L 30.689136,0.06250017 L 29.053981,0.12106555 L 27.45685,0.19915292 L 25.840705,0.29676153 L 24.243576,0.43341443 L 22.684472,0.58958842 L 21.125372,0.76528425 L 19.623307,0.99954576 L 18.140258,1.2338059 L 16.695234,1.5071117 L 15.28824,1.7999375 L 13.919273,2.1122862 L 12.607342,2.4636777 L 11.333442,2.8150692 L 10.135592,3.2055052 L 8.9757693,3.6349838 L 7.8729941,4.0644625 L 6.8462664,4.4939413 L 5.8765785,4.9819859 L 4.9829488,5.4700289 L 4.1653682,5.9775955 L 3.4048335,6.4851607 L 2.7203448,7.0122499 L 2.1309311,7.5393369 L 1.5795405,8.0859452 L 1.1422325,8.6520765 L 0.76195982,9.2182077 L 0.47676065,9.8038604 L 0.26760898,10.36999 L 0.15353084,10.955643 L 0.11550327,11.541297 L 0.11550327,11.541297 L 0.15353084,12.12695 L 0.26760898,12.693081 L 0.47676065,13.278734 L 0.76195982,13.825344 L 1.1422325,14.410996 L 1.5795405,14.957605 L 2.1309311,15.523736 L 2.7203448,16.070348 L 3.4048335,16.597435 L 4.1653682,17.085479 L 4.9829488,17.593043 L 5.8765785,18.100608 L 6.8462664,18.549609 L 7.8729941,18.998611 L 8.9757693,19.447613 L 10.135592,19.857571 L 11.333442,20.248007 L 12.607342,20.599396 L 13.919273,20.950787 L 15.28824,21.263135 L 16.695234,21.575486 L 18.140258,21.829265 L 19.623307,22.083049 L 21.125372,22.297787 L 22.684472,22.473485 L 24.243576,22.629661 L 25.840705,22.766312 L 27.45685,22.863921 L 29.053981,22.942009 L 30.689136,23.000574 L 32.324296,23.000574 L 32.324296,23.000574 L 33.940437,23.000574 L 35.575597,22.942009 L 37.191738,22.863921 L 38.788867,22.766312 L 40.385997,22.629661 L 41.964114,22.473485 L 43.504204,22.297787 L 45.006267,22.083049 L 46.489316,21.829265 L 47.934339,21.575486 L 49.341334,21.263135 L 50.710303,20.950787 L 52.022232,20.599396 L 53.296132,20.248007 L 54.493981,19.857571 L 55.6538,19.447613 L 56.75658,18.998611 L 57.783307,18.549609 L 58.752993,18.100608 L 59.646626,17.593043 L 60.464203,17.085479 L 61.224742,16.597435 L 61.909226,16.070348 L 62.517657,15.523736 L 63.050034,14.957605 L 63.487345,14.410996 L 63.867612,13.825344 L 64.152814,13.278734 L 64.342949,12.693081 L 64.457031,12.12695 L 64.514069,11.541297"
style="fill:url(#linearGradient2216);fill-opacity:1;stroke:none;stroke-width:0.01928605;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path4819"
d="M 33.023738,8.6936939 L 37.664889,10.327433 L 48.909313,5.4458969 L 53.946665,7.0599533 L 51.229891,3.0248142 L 38.061087,3.0248142 L 43.475766,4.225514 L 33.023738,8.6936939"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4821"
d="M 31.08049,13.161874 L 26.439334,11.528132 L 15.591104,16.429352 L 10.176425,14.775929 L 12.874332,19.244109 L 26.439334,19.244109 L 20.628458,17.630052 L 31.08049,13.161874"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4823"
d="M 11.327278,4.225514 L 15.968435,2.611458 L 27.212859,7.0599533 L 32.25021,5.8592533 L 29.552303,9.8943939 L 16.364632,9.8943939 L 21.779313,8.6936939 L 11.327278,4.225514"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4825"
d="M 53.154272,18.023723 L 48.513117,19.657467 L 37.664889,14.775929 L 32.25021,16.429352 L 34.966985,12.33516 L 48.513117,12.33516 L 42.70224,13.555544 L 53.154272,18.023723"
style="fill:#000000;stroke:none;stroke-width:0.001" />
<path
id="path4827"
d="M 33.419936,9.1070493 L 38.061087,10.721105 L 49.286643,5.8592533 L 54.323994,7.4929926 L 51.60722,3.4184854 L 38.438415,3.4184854 L 43.871962,4.6191872 L 33.419936,9.1070493"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4829"
d="M 31.476681,13.555544 L 26.816665,11.941487 L 15.968435,16.803341 L 10.553753,15.189284 L 13.25166,19.657467 L 26.816665,19.657467 L 21.005786,18.023723 L 31.476681,13.555544"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4831"
d="M 11.723476,4.6191872 L 16.364632,3.0248142 L 27.609055,7.4929926 L 32.627541,6.2529266 L 29.929634,10.327433 L 16.741963,10.327433 L 22.175509,9.1070493 L 11.723476,4.6191872"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
<path
id="path4833"
d="M 53.531602,18.43708 L 48.909313,20.070823 L 38.061087,15.189284 L 32.627541,16.803341 L 35.344315,12.7682 L 48.909313,12.7682 L 43.098437,13.9689 L 53.531602,18.43708"
style="fill:#ffffff;stroke:none;stroke-width:0.001" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Some files were not shown because too many files have changed in this diff Show More