unifi-network-maps 1.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. unifi_network_maps/__init__.py +1 -0
  2. unifi_network_maps/adapters/__init__.py +1 -0
  3. unifi_network_maps/adapters/config.py +49 -0
  4. unifi_network_maps/adapters/unifi.py +134 -0
  5. unifi_network_maps/assets/__init__.py +0 -0
  6. unifi_network_maps/assets/icons/__init__.py +0 -0
  7. unifi_network_maps/assets/icons/access-point.svg +1 -0
  8. unifi_network_maps/assets/icons/isometric/ISOPACKS_LICENSE +7 -0
  9. unifi_network_maps/assets/icons/isometric/block.svg +23 -0
  10. unifi_network_maps/assets/icons/isometric/cache.svg +48 -0
  11. unifi_network_maps/assets/icons/isometric/cardterminal.svg +316 -0
  12. unifi_network_maps/assets/icons/isometric/cloud.svg +89 -0
  13. unifi_network_maps/assets/icons/isometric/cronjob.svg +409 -0
  14. unifi_network_maps/assets/icons/isometric/cube.svg +24 -0
  15. unifi_network_maps/assets/icons/isometric/desktop.svg +107 -0
  16. unifi_network_maps/assets/icons/isometric/diamond.svg +23 -0
  17. unifi_network_maps/assets/icons/isometric/dns.svg +46 -0
  18. unifi_network_maps/assets/icons/isometric/document.svg +62 -0
  19. unifi_network_maps/assets/icons/isometric/firewall.svg +200 -0
  20. unifi_network_maps/assets/icons/isometric/function-module.svg +215 -0
  21. unifi_network_maps/assets/icons/isometric/image.svg +65 -0
  22. unifi_network_maps/assets/icons/isometric/laptop.svg +37 -0
  23. unifi_network_maps/assets/icons/isometric/loadbalancer.svg +65 -0
  24. unifi_network_maps/assets/icons/isometric/lock.svg +155 -0
  25. unifi_network_maps/assets/icons/isometric/mail.svg +35 -0
  26. unifi_network_maps/assets/icons/isometric/mailmultiple.svg +91 -0
  27. unifi_network_maps/assets/icons/isometric/mobiledevice.svg +66 -0
  28. unifi_network_maps/assets/icons/isometric/office.svg +136 -0
  29. unifi_network_maps/assets/icons/isometric/package-module.svg +39 -0
  30. unifi_network_maps/assets/icons/isometric/paymentcard.svg +92 -0
  31. unifi_network_maps/assets/icons/isometric/plane.svg +1 -0
  32. unifi_network_maps/assets/icons/isometric/printer.svg +122 -0
  33. unifi_network_maps/assets/icons/isometric/pyramid.svg +28 -0
  34. unifi_network_maps/assets/icons/isometric/queue.svg +38 -0
  35. unifi_network_maps/assets/icons/isometric/router.svg +39 -0
  36. unifi_network_maps/assets/icons/isometric/server.svg +112 -0
  37. unifi_network_maps/assets/icons/isometric/speech.svg +70 -0
  38. unifi_network_maps/assets/icons/isometric/sphere.svg +15 -0
  39. unifi_network_maps/assets/icons/isometric/storage.svg +92 -0
  40. unifi_network_maps/assets/icons/isometric/switch-module.svg +45 -0
  41. unifi_network_maps/assets/icons/isometric/tower.svg +50 -0
  42. unifi_network_maps/assets/icons/isometric/truck-2.svg +1 -0
  43. unifi_network_maps/assets/icons/isometric/truck.svg +1 -0
  44. unifi_network_maps/assets/icons/isometric/user.svg +231 -0
  45. unifi_network_maps/assets/icons/isometric/vm.svg +50 -0
  46. unifi_network_maps/assets/icons/laptop.svg +1 -0
  47. unifi_network_maps/assets/icons/router-network.svg +1 -0
  48. unifi_network_maps/assets/icons/server-network.svg +1 -0
  49. unifi_network_maps/assets/icons/server.svg +1 -0
  50. unifi_network_maps/assets/themes/dark.yaml +47 -0
  51. unifi_network_maps/assets/themes/default.yaml +47 -0
  52. unifi_network_maps/cli/__init__.py +41 -0
  53. unifi_network_maps/cli/__main__.py +8 -0
  54. unifi_network_maps/cli/main.py +317 -0
  55. unifi_network_maps/io/__init__.py +1 -0
  56. unifi_network_maps/io/debug.py +50 -0
  57. unifi_network_maps/io/export.py +13 -0
  58. unifi_network_maps/model/__init__.py +1 -0
  59. unifi_network_maps/model/labels.py +35 -0
  60. unifi_network_maps/model/lldp.py +85 -0
  61. unifi_network_maps/model/ports.py +23 -0
  62. unifi_network_maps/model/topology.py +693 -0
  63. unifi_network_maps/render/__init__.py +1 -0
  64. unifi_network_maps/render/lldp_md.py +254 -0
  65. unifi_network_maps/render/mermaid.py +171 -0
  66. unifi_network_maps/render/mermaid_theme.py +46 -0
  67. unifi_network_maps/render/svg.py +881 -0
  68. unifi_network_maps/render/svg_theme.py +64 -0
  69. unifi_network_maps/render/theme.py +90 -0
  70. unifi_network_maps-1.3.1.dist-info/METADATA +232 -0
  71. unifi_network_maps-1.3.1.dist-info/RECORD +75 -0
  72. unifi_network_maps-1.3.1.dist-info/WHEEL +5 -0
  73. unifi_network_maps-1.3.1.dist-info/entry_points.txt +2 -0
  74. unifi_network_maps-1.3.1.dist-info/licenses/LICENSE +21 -0
  75. unifi_network_maps-1.3.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1 @@
1
+ __version__ = "1.3.1"
@@ -0,0 +1 @@
1
+ """Package module."""
@@ -0,0 +1,49 @@
1
+ """Configuration loading from environment variables."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ from dataclasses import dataclass
7
+
8
+
9
+ def _parse_bool(value: str | None, default: bool = True) -> bool:
10
+ if value is None:
11
+ return default
12
+ normalized = value.strip().lower()
13
+ if normalized in {"1", "true", "yes", "y", "on"}:
14
+ return True
15
+ if normalized in {"0", "false", "no", "n", "off"}:
16
+ return False
17
+ return default
18
+
19
+
20
+ @dataclass(frozen=True)
21
+ class Config:
22
+ url: str
23
+ site: str
24
+ user: str
25
+ password: str
26
+ verify_ssl: bool
27
+
28
+ @classmethod
29
+ def from_env(cls, *, env_file: str | None = None) -> Config:
30
+ if env_file:
31
+ try:
32
+ from dotenv import load_dotenv
33
+ except ImportError:
34
+ raise ValueError("python-dotenv required for --env-file") from None
35
+ load_dotenv(dotenv_path=env_file)
36
+ url = os.environ.get("UNIFI_URL", "").strip()
37
+ site = os.environ.get("UNIFI_SITE", "default").strip()
38
+ user = os.environ.get("UNIFI_USER", "").strip()
39
+ password = os.environ.get("UNIFI_PASS", "").strip()
40
+ verify_ssl = _parse_bool(os.environ.get("UNIFI_VERIFY_SSL"), default=True)
41
+
42
+ if not url:
43
+ raise ValueError("UNIFI_URL is required")
44
+ if not user:
45
+ raise ValueError("UNIFI_USER is required")
46
+ if not password:
47
+ raise ValueError("UNIFI_PASS is required")
48
+
49
+ return cls(url=url, site=site, user=user, password=password, verify_ssl=verify_ssl)
@@ -0,0 +1,134 @@
1
+ """UniFi API integration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import hashlib
6
+ import logging
7
+ import os
8
+ import pickle
9
+ import time
10
+ from collections.abc import Iterable
11
+ from pathlib import Path
12
+ from typing import TYPE_CHECKING
13
+
14
+ from .config import Config
15
+
16
+ if TYPE_CHECKING:
17
+ from unifi_controller_api import UnifiController
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ def _cache_dir() -> Path:
23
+ return Path(os.environ.get("UNIFI_CACHE_DIR", ".cache/unifi_network_maps"))
24
+
25
+
26
+ def _cache_ttl_seconds() -> int:
27
+ value = os.environ.get("UNIFI_CACHE_TTL_SECONDS", "").strip()
28
+ if not value:
29
+ return 3600
30
+ if value.isdigit():
31
+ return int(value)
32
+ logger.warning("Invalid UNIFI_CACHE_TTL_SECONDS value: %s", value)
33
+ return 3600
34
+
35
+
36
+ def _cache_key(*parts: str) -> str:
37
+ digest = hashlib.sha256("|".join(parts).encode("utf-8")).hexdigest()
38
+ return digest[:24]
39
+
40
+
41
+ def _load_cache(path: Path, ttl_seconds: int) -> object | None:
42
+ if ttl_seconds <= 0 or not path.exists():
43
+ return None
44
+ try:
45
+ payload = pickle.loads(path.read_bytes())
46
+ except Exception as exc:
47
+ logger.debug("Failed to read cache %s: %s", path, exc)
48
+ return None
49
+ timestamp = payload.get("timestamp")
50
+ if not isinstance(timestamp, int | float):
51
+ return None
52
+ if time.time() - timestamp > ttl_seconds:
53
+ return None
54
+ return payload.get("data")
55
+
56
+
57
+ def _save_cache(path: Path, data: object) -> None:
58
+ try:
59
+ path.parent.mkdir(parents=True, exist_ok=True)
60
+ payload = {"timestamp": time.time(), "data": data}
61
+ path.write_bytes(pickle.dumps(payload))
62
+ except Exception as exc:
63
+ logger.debug("Failed to write cache %s: %s", path, exc)
64
+
65
+
66
+ def _init_controller(config: Config, *, is_udm_pro: bool) -> UnifiController:
67
+ from unifi_controller_api import UnifiController
68
+
69
+ return UnifiController(
70
+ controller_url=config.url,
71
+ username=config.user,
72
+ password=config.password,
73
+ is_udm_pro=is_udm_pro,
74
+ verify_ssl=config.verify_ssl,
75
+ )
76
+
77
+
78
+ def fetch_devices(
79
+ config: Config, *, site: str | None = None, detailed: bool = True
80
+ ) -> Iterable[object]:
81
+ """Fetch devices from UniFi Controller.
82
+
83
+ Uses `unifi-controller-api` to authenticate and return device objects.
84
+ """
85
+ try:
86
+ from unifi_controller_api import UnifiAuthenticationError
87
+ except ImportError as exc:
88
+ raise RuntimeError("Missing dependency: unifi-controller-api") from exc
89
+
90
+ site_name = site or config.site
91
+ ttl_seconds = _cache_ttl_seconds()
92
+ cache_path = _cache_dir() / f"devices_{_cache_key(config.url, site_name, str(detailed))}.pkl"
93
+ cached = _load_cache(cache_path, ttl_seconds)
94
+ if cached is not None:
95
+ logger.info("Using cached devices (%d)", len(cached))
96
+ return cached
97
+
98
+ try:
99
+ controller = _init_controller(config, is_udm_pro=True)
100
+ except UnifiAuthenticationError:
101
+ logger.info("UDM Pro authentication failed, retrying legacy auth")
102
+ controller = _init_controller(config, is_udm_pro=False)
103
+
104
+ devices = controller.get_unifi_site_device(site_name=site_name, detailed=detailed, raw=False)
105
+ _save_cache(cache_path, devices)
106
+ logger.info("Fetched %d devices", len(devices))
107
+ return devices
108
+
109
+
110
+ def fetch_clients(config: Config, *, site: str | None = None) -> Iterable[object]:
111
+ """Fetch active clients from UniFi Controller."""
112
+ try:
113
+ from unifi_controller_api import UnifiAuthenticationError
114
+ except ImportError as exc:
115
+ raise RuntimeError("Missing dependency: unifi-controller-api") from exc
116
+
117
+ site_name = site or config.site
118
+ ttl_seconds = _cache_ttl_seconds()
119
+ cache_path = _cache_dir() / f"clients_{_cache_key(config.url, site_name)}.pkl"
120
+ cached = _load_cache(cache_path, ttl_seconds)
121
+ if cached is not None:
122
+ logger.info("Using cached clients (%d)", len(cached))
123
+ return cached
124
+
125
+ try:
126
+ controller = _init_controller(config, is_udm_pro=True)
127
+ except UnifiAuthenticationError:
128
+ logger.info("UDM Pro authentication failed, retrying legacy auth")
129
+ controller = _init_controller(config, is_udm_pro=False)
130
+
131
+ clients = controller.get_unifi_site_client(site_name=site_name, raw=True)
132
+ _save_cache(cache_path, clients)
133
+ logger.info("Fetched %d clients", len(clients))
134
+ return clients
File without changes
File without changes
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" id="mdi-access-point" viewBox="0 0 24 24"><path d="M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></svg>
@@ -0,0 +1,7 @@
1
+ Copyright 2023 Mark Mankarious
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
3
+ width="551.59998px" height="343.79999px" viewBox="0 0 551.59998 343.79999"
4
+ style="enable-background:new 0 0 551.59998 343.79999;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{opacity:0.4;enable-background:new ;}
7
+ .st1{fill:#CDD9EE;}
8
+ .st2{fill:#B5C5DC;}
9
+ .st3{fill:#FFFFFF;}
10
+ .st4{fill:#6885A9;}
11
+ .st5{fill:#231F20;}
12
+ </style>
13
+ <g>
14
+ <polygon class="st0" points="309.29999,322.89999 274.60001,316.10001 274,16.2 551.59998,180 "/>
15
+ <polygon class="st1" points="274.60001,228.8 92.2,119.2 274,9.7 457,119.2 "/>
16
+ <polygon class="st2" points="90.2,195 274.60001,305.79999 274.60001,305.79999 274.60001,231.3 90.2,120.4 "/>
17
+ <polygon class="st3" points="288.29999,220.60001 135.7,127.7 303,27 274,9.7 92.2,119.2 274.60001,228.8 "/>
18
+ <polygon class="st4" points="459,195 274.60001,305.79999 274.60001,305.79999 274.60001,231.3 459,120.4 "/>
19
+ <path class="st5" d="M467.20001,115.6L467.20001,115.6L274,0L83.00002,115.1l-1,0.6v83.7l192.59998,115.80002L466.20001,200
20
+ l1-0.60001V115.6z M274,9.7l183,109.5L274.60001,228.8L92.20001,119.2L274,9.7z M457,124.1v69.69999L276.70001,302.20001V232.5
21
+ L457,124.1z M272.60001,232.39999v69.69998L92.30001,193.8v-69.7L272.60001,232.39999z"/>
22
+ </g>
23
+ </svg>
@@ -0,0 +1,48 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ width="55.1px" height="57.3px" viewBox="0 0 55.1 57.3" enable-background="new 0 0 55.1 57.3" xml:space="preserve">
5
+ <g id="Layer_3">
6
+ </g>
7
+ <g id="Layer_4">
8
+ </g>
9
+ <g id="Layer_10">
10
+ <g opacity="0.4" fill="#000000">
11
+ <polygon points="35.6,46 38.3,48.1 25.6,52.1 21.2,53 32,38.9 41.4,44.8 "/>
12
+ </g>
13
+ </g>
14
+ <g id="Layer_7">
15
+ </g>
16
+ <g id="Layer_6">
17
+ <polygon fill="#F2C256" points="31.6,19 18.4,11.1 18.4,33.9 21.2,35.5 21.2,52.1 31.6,31.5 26,28.1 "/>
18
+ <polygon fill="#FFE4AE" points="18.4,33.9 18.5,33.9 25.6,15.4 18.4,11.1 "/>
19
+ <polygon fill="none" stroke="#010202" stroke-width="0.5" stroke-linejoin="round" stroke-miterlimit="10" points="31.6,19
20
+ 18.4,11.1 18.4,33.9 21.2,35.5 21.2,52.1 31.6,31.5 26,28.1 "/>
21
+ </g>
22
+ <g id="Layer_5">
23
+ <polygon fill="#F7C56B" stroke="#010202" stroke-width="0.4" stroke-linejoin="round" stroke-miterlimit="10" points="18.4,11.1
24
+ 24.5,7.4 37.6,15.3 32,24.3 37.6,27.7 27.2,48.3 21.2,52.1 31.6,31.5 26,28.1 31.6,19 "/>
25
+ <polygon fill="#754F0C" stroke="#010202" stroke-width="0.4" stroke-miterlimit="10" points="37.6,15.3 31.6,19 26,28.1 31.6,31.5
26
+ 21.2,52.1 27.2,48.3 37.6,27.7 32,24.3 "/>
27
+ <g id="Layer_12">
28
+ </g>
29
+ <polygon fill="none" stroke="#010202" stroke-width="0.4" stroke-linejoin="round" stroke-miterlimit="10" points="18.4,11.1
30
+ 24.5,7.4 37.6,15.3 32,24.3 37.6,27.7 27.2,48.3 21.2,52.1 31.6,31.5 26,28.1 31.6,19 "/>
31
+ </g>
32
+ <g id="Layer_8">
33
+ <polygon fill="#AF7A2E" stroke="#010202" stroke-width="0.4" stroke-linejoin="round" stroke-miterlimit="10" points="31.6,31.5
34
+ 37.6,27.7 32,24.3 26,28.1 "/>
35
+ </g>
36
+ <g id="Layer_11">
37
+ <polyline fill="none" stroke="#010202" stroke-width="0.4" stroke-linejoin="round" stroke-miterlimit="10" points="37.6,15.3
38
+ 31.6,19 26,28.1 32,24.3 37.6,15.3 "/>
39
+ </g>
40
+ <g id="Layer_9">
41
+ <g>
42
+ <path fill="#010202" d="M24.5,7.4l13.2,7.9l-5.7,9l5.6,3.4L27.2,48.3l-6,3.7V35.5l-2.7-1.6V11.1L24.5,7.4 M24.5,6.6
43
+ c-0.1,0-0.3,0-0.4,0.1l-6,3.7c-0.2,0.1-0.4,0.4-0.4,0.7v22.8c0,0.3,0.1,0.5,0.4,0.7l2.3,1.4v16.1c0,0.3,0.2,0.6,0.4,0.7
44
+ c0.1,0.1,0.3,0.1,0.4,0.1s0.3,0,0.4-0.1l6-3.7c0.1-0.1,0.2-0.2,0.3-0.3l10.4-20.6c0.2-0.4,0.1-0.8-0.3-1l-4.9-3l5.2-8.4
45
+ c0.1-0.2,0.1-0.4,0.1-0.6c-0.1-0.2-0.2-0.4-0.4-0.5l-13.1-8C24.7,6.6,24.6,6.6,24.5,6.6L24.5,6.6z"/>
46
+ </g>
47
+ </g>
48
+ </svg>
@@ -0,0 +1,316 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ width="522.1px" height="616px" viewBox="0 0 522.1 616" enable-background="new 0 0 522.1 616" xml:space="preserve">
5
+ <path opacity="0.15" fill="#000000" enable-background="new " d="M361,583.2c2,23.8-42.9,38.7-104.9,19.3s-117.5-65.6-119.5-89.3
6
+ c-2-23.8,45-38.4,107-19.1C305.5,513.4,359,559.4,361,583.2z"/>
7
+ <g id="Layer_1_1_" display="none">
8
+ <polygon display="inline" fill="none" stroke="#A7A9AC" stroke-width="4" stroke-miterlimit="10" points="476.5,431.3 261.1,555.7
9
+ 45.6,431.3 45.6,182.6 261.1,58.2 476.5,182.6 "/>
10
+ </g>
11
+ <g id="Layer_2_1_">
12
+ <g>
13
+ <g>
14
+ <g>
15
+ <path fill="#4B6E98" d="M376,146.6v294.5c0,3.1-0.5,5.7-1.4,7.8c-0.9,2.1-2.2,3.7-3.7,4.7l0,0c-0.2,0.1-0.4,0.3-0.6,0.4
16
+ L332,476.1c3.4-1.9,5.5-6.4,5.5-12.7V168.9c0-11.6-7-25-15.7-30L160.5,45.8c-3.3-1.9-6.4-2.3-8.9-1.4l36.3-21.1
17
+ c2.9-2.2,6.8-2.3,11.2,0.2l161.2,93.1c5.7,3.3,10.8,10.3,13.5,18C375.2,138.6,376,142.7,376,146.6z"/>
18
+ </g>
19
+ <g>
20
+ <polygon fill="#0070D9" points="174,390 174,472 306.1,548.3 306.1,466.3 "/>
21
+ </g>
22
+ <g>
23
+ <polygon fill="#FFC600" points="231.2,435.6 184.4,408.6 184.4,436.6 184.4,437.6 184.4,465.7 231.2,492.7 231.2,463.6
24
+ 231.2,463.6 "/>
25
+ </g>
26
+ <g>
27
+ <path fill="#6885A9" d="M337.4,182.7v-13.8c0-11.6-7-25-15.7-30L160.5,45.8c-3.3-1.9-6.4-2.3-8.9-1.4l36.3-21.1
28
+ c2.9-2.2,6.8-2.3,11.2,0.2l161.2,93.1c5.7,3.3,10.8,10.3,13.5,18C363.1,151.7,350.9,167.8,337.4,182.7z"/>
29
+ </g>
30
+ <g>
31
+ <polygon fill="#0BB2F3" points="265.5,483.2 255,477.1 255,502.7 265.5,508.8 265.5,495.8 265.5,495.8 "/>
32
+ </g>
33
+ <g>
34
+ <polygon fill="#0BB2F3" points="265.5,445.6 255,439.5 255,465.1 265.5,471.2 265.5,458.2 265.5,458.2 "/>
35
+ </g>
36
+ <g>
37
+ <path fill="#CDD9EE" d="M338.2,463.4c0,11.6-7,16.9-15.7,11.9l-161.2-93.1c-8.7-5-15.7-18.5-15.7-30V57.7
38
+ c0-11.6,7-16.9,15.7-11.9l161.2,93.1c8.7,5,15.7,18.5,15.7,30V463.4z"/>
39
+ <path fill="#231F20" d="M328.8,479.1c-2.3,0-4.8-0.7-7.2-2.2l-161.2-93.1c-9.4-5.4-16.7-19.4-16.7-31.8V57.7
40
+ c0-9.6,4.5-15.8,11.5-15.8c2.3,0,4.8,0.7,7.2,2.2l161.2,93.1c9.4,5.4,16.7,19.4,16.7,31.8v294.5
41
+ C340.2,473,335.7,479.1,328.8,479.1z M155.1,45.9c-4.5,0-7.5,4.6-7.5,11.8v294.5c0,10.9,6.6,23.6,14.7,28.3l161.2,93.1
42
+ c1.9,1.1,3.6,1.6,5.2,1.6c4.5,0,7.5-4.6,7.5-11.8V168.9c0-10.9-6.6-23.6-14.7-28.3l-161.2-93C158.5,46.5,156.7,45.9,155.1,45.9z
43
+ "/>
44
+ </g>
45
+ <g>
46
+ <g>
47
+ <path fill="#E6E7E8" d="M307.7,228.2c-1.2,0-2.5-0.4-3.7-1.1L175.7,153c-4.4-2.5-7.8-9-7.8-14.8V89.6c0-5.5,3.1-8,6.1-8
48
+ c1.2,0,2.5,0.4,3.7,1.1l128.3,74c0.6,0.3,1.1,0.7,1.6,1.1c3.7,3.1,6.2,8.7,6.2,13.7v48.7C313.8,225.7,310.8,228.2,307.7,228.2z
49
+ "/>
50
+ </g>
51
+ <g>
52
+ <path fill="#231F20" d="M174,83.6c0.8,0,1.7,0.3,2.7,0.8l65.1,37.6l49.8,28.7l13.4,7.7c0.4,0.3,0.9,0.6,1.3,0.9
53
+ c3.1,2.6,5.5,7.7,5.5,12.1v48.7c0,3.7-1.7,6-4.1,6c-0.8,0-1.8-0.3-2.7-0.8l-34.5-19.9l-21.7-12.5l-14.8-8.6l-49.8-28.7
54
+ l-7.5-4.3c-3.8-2.2-6.8-8-6.8-13.1V89.6C169.9,85.8,171.6,83.6,174,83.6 M174,79.6L174,79.6c-3.9,0-8.1,3.1-8.1,10v48.7
55
+ c0,6.5,3.8,13.6,8.8,16.5l7.5,4.3l49.8,28.7l14.8,8.6l21.7,12.5l34.5,19.9c1.6,0.9,3.1,1.4,4.7,1.4c3.9,0,8.1-3.1,8.1-10v-48.7
56
+ c0-5.5-2.9-11.8-7-15.2c-0.6-0.5-1.2-0.9-1.9-1.3l-13.4-7.7l-49.8-28.7L178.6,81C177.2,80,175.6,79.6,174,79.6L174,79.6z"/>
57
+ </g>
58
+ </g>
59
+ <g>
60
+ <path fill="#FFFFFF" d="M311.8,171.5v9.8l-41.4,24.1l-21.7-12.5l57.5-33.5C309.5,162,311.8,167.1,311.8,171.5z"/>
61
+ </g>
62
+ <g>
63
+ <polygon fill="#FFFFFF" points="291.6,150.7 233.9,184.3 184.2,155.6 241.8,122 "/>
64
+ </g>
65
+ <g>
66
+ <g>
67
+ <g>
68
+ <g>
69
+ <path fill="#FFFFFF" d="M202.3,228c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2
70
+ c0-5.7,3.2-8.3,6.3-8.3c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2C208.6,225.5,205.5,228,202.3,228z"/>
71
+ </g>
72
+ <g>
73
+ <path fill="#231F20" d="M176.8,182.6c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
74
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C172.5,184.9,174.3,182.6,176.8,182.6 M176.8,178.6
75
+ L176.8,178.6c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
76
+ v-11.2c0-6.8-3.9-14.1-9.2-17.1L181.7,180C180.1,179.1,178.4,178.6,176.8,178.6L176.8,178.6z"/>
77
+ </g>
78
+ </g>
79
+ <g>
80
+ <path fill="#BCBEC0" d="M202.9,198c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4c-1.2-0.7-2.4-1.8-3.4-3.1
81
+ c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2C206.6,204.9,205.1,200.9,202.9,198z"/>
82
+ </g>
83
+ </g>
84
+ <g>
85
+ <g>
86
+ <g>
87
+ <path fill="#FFFFFF" d="M251.2,256.3c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2
88
+ c0-5.7,3.2-8.3,6.3-8.3c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4V248C257.5,253.7,254.3,256.3,251.2,256.3z
89
+ "/>
90
+ </g>
91
+ <g>
92
+ <path fill="#231F20" d="M225.7,210.8c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7V248c0,3.9-1.8,6.3-4.3,6.3
93
+ c-0.9,0-1.8-0.3-2.8-0.9L228.5,242c-4-2.3-7.2-8.4-7.2-13.7v-11.2C221.4,213.1,223.1,210.8,225.7,210.8 M225.7,206.8
94
+ L225.7,206.8c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
95
+ v-11.2c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4C228.9,207.3,227.3,206.8,225.7,206.8L225.7,206.8z"/>
96
+ </g>
97
+ </g>
98
+ <g>
99
+ <path fill="#BCBEC0" d="M251.7,226.2c0.3,1.2,0.5,2.4,0.5,3.6V241c0,5.3-3.2,7.7-7.2,5.4L225.2,235c-1.2-0.7-2.4-1.8-3.4-3.1
100
+ c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2C255.5,233.1,254,229.1,251.7,226.2z"/>
101
+ </g>
102
+ </g>
103
+ <g>
104
+ <g>
105
+ <g>
106
+ <path fill="#FFFFFF" d="M300,284.5c-1.3,0-2.5-0.4-3.8-1.1L276.4,272c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2c0-5.7,3.2-8.3,6.3-8.3
107
+ c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2C306.3,281.9,303.2,284.5,300,284.5z"/>
108
+ </g>
109
+ <g>
110
+ <path fill="#231F20" d="M274.5,239c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
111
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C270.2,241.3,272,239,274.5,239 M274.5,235L274.5,235
112
+ c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3V265
113
+ c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4C277.8,235.5,276.1,235,274.5,235L274.5,235z"/>
114
+ </g>
115
+ </g>
116
+ <g>
117
+ <path fill="#BCBEC0" d="M300.6,254.4c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4
118
+ c-1.2-0.7-2.4-1.8-3.4-3.1c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4V265C304.3,261.3,302.8,257.3,300.6,254.4z
119
+ "/>
120
+ </g>
121
+ </g>
122
+ <g>
123
+ <g>
124
+ <g>
125
+ <g>
126
+ <path fill="#FFFFFF" d="M202.3,274.3c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2
127
+ c0-5.7,3.2-8.3,6.3-8.3c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4V266C208.6,271.8,205.5,274.3,202.3,274.3
128
+ z"/>
129
+ </g>
130
+ <g>
131
+ <path fill="#231F20" d="M176.8,228.9c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7V266c0,3.9-1.8,6.3-4.3,6.3
132
+ c-0.9,0-1.8-0.3-2.8-0.9L179.7,260c-4-2.3-7.2-8.4-7.2-13.7v-11.2C172.5,231.2,174.3,228.9,176.8,228.9 M176.8,224.9
133
+ L176.8,224.9c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
134
+ v-11.2c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4C180.1,225.3,178.4,224.9,176.8,224.9L176.8,224.9z"/>
135
+ </g>
136
+ </g>
137
+ <g>
138
+ <path fill="#BCBEC0" d="M202.9,244.3c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4
139
+ c-1.2-0.7-2.4-1.8-3.4-3.1c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2
140
+ C206.6,251.2,205.1,247.2,202.9,244.3z"/>
141
+ </g>
142
+ </g>
143
+ <g>
144
+ <g>
145
+ <g>
146
+ <path fill="#FFFFFF" d="M251.2,302.5c-1.3,0-2.5-0.4-3.8-1.1L227.5,290c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2
147
+ c0-2.3,0.5-4.3,1.6-5.8c1.1-1.6,2.8-2.5,4.7-2.5c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2
148
+ C257.5,300,254.3,302.5,251.2,302.5z"/>
149
+ </g>
150
+ <g>
151
+ <path fill="#231F20" d="M225.7,257.1c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
152
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C221.4,259.4,223.1,257.1,225.7,257.1 M225.7,253.1
153
+ L225.7,253.1c-2.5,0-4.9,1.2-6.4,3.4c-1.3,1.8-1.9,4.2-1.9,6.9v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4
154
+ c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3V283c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4
155
+ C228.9,253.5,227.3,253.1,225.7,253.1L225.7,253.1z"/>
156
+ </g>
157
+ </g>
158
+ <g>
159
+ <path fill="#BCBEC0" d="M251.7,272.5c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4
160
+ c-1.2-0.7-2.4-1.8-3.4-3.1c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4V283C255.5,279.4,254,275.4,251.7,272.5z"
161
+ />
162
+ </g>
163
+ </g>
164
+ <g>
165
+ <g>
166
+ <g>
167
+ <path fill="#FFFFFF" d="M300,330.7c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2
168
+ c0-5.7,3.2-8.3,6.3-8.3c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2C306.3,328.2,303.2,330.7,300,330.7z
169
+ "/>
170
+ </g>
171
+ <g>
172
+ <path fill="#231F20" d="M274.5,285.3c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
173
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C270.2,287.6,272,285.3,274.5,285.3 M274.5,281.3
174
+ L274.5,281.3c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
175
+ v-11.2c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4C277.8,281.7,276.1,281.3,274.5,281.3L274.5,281.3z"/>
176
+ </g>
177
+ </g>
178
+ <g>
179
+ <path fill="#BCBEC0" d="M300.6,300.7c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4
180
+ c-1.2-0.7-2.4-1.8-3.4-3.1c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2
181
+ C304.3,307.6,302.8,303.6,300.6,300.7z"/>
182
+ </g>
183
+ </g>
184
+ </g>
185
+ <g>
186
+ <g>
187
+ <g>
188
+ <g>
189
+ <path fill="#FFFFFF" d="M202.3,320.6c-1.3,0-2.5-0.4-3.8-1.1L178.7,308c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2
190
+ c0-5.7,3.2-8.3,6.3-8.3c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2C208.6,318,205.5,320.6,202.3,320.6z
191
+ "/>
192
+ </g>
193
+ <g>
194
+ <path fill="#231F20" d="M176.8,275.1c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
195
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C172.5,277.5,174.3,275.1,176.8,275.1 M176.8,271.1
196
+ L176.8,271.1c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
197
+ V301c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4C180.1,271.6,178.4,271.1,176.8,271.1L176.8,271.1z"/>
198
+ </g>
199
+ </g>
200
+ <g>
201
+ <path fill="#BCBEC0" d="M202.9,290.5c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4
202
+ c-1.2-0.7-2.4-1.8-3.4-3.1c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2
203
+ C206.6,297.5,205.1,293.4,202.9,290.5z"/>
204
+ </g>
205
+ </g>
206
+ <g>
207
+ <g>
208
+ <g>
209
+ <path fill="#FFFFFF" d="M251.2,348.8c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2
210
+ c0-5.7,3.2-8.3,6.3-8.3c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2
211
+ C257.5,346.2,254.3,348.8,251.2,348.8z"/>
212
+ </g>
213
+ <g>
214
+ <path fill="#231F20" d="M225.7,303.3c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
215
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C221.4,305.7,223.1,303.3,225.7,303.3 M225.7,299.3
216
+ L225.7,299.3c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
217
+ v-11.2c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4C228.9,299.8,227.3,299.3,225.7,299.3L225.7,299.3z"/>
218
+ </g>
219
+ </g>
220
+ <g>
221
+ <path fill="#BCBEC0" d="M251.7,318.7c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4
222
+ c-1.2-0.7-2.4-1.8-3.4-3.1c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2C255.5,325.7,254,321.6,251.7,318.7
223
+ z"/>
224
+ </g>
225
+ </g>
226
+ <g>
227
+ <g>
228
+ <g>
229
+ <path fill="#FFFFFF" d="M300,377c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2c0-2.3,0.5-4.3,1.6-5.8
230
+ c1.1-1.6,2.8-2.5,4.7-2.5c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2C306.3,374.4,303.2,377,300,377z"
231
+ />
232
+ </g>
233
+ <g>
234
+ <path fill="#231F20" d="M274.5,331.5c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
235
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C270.2,333.9,272,331.5,274.5,331.5 M274.5,327.5
236
+ L274.5,327.5c-2.5,0-4.9,1.2-6.4,3.4c-1.3,1.8-1.9,4.2-1.9,6.9V349c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4
237
+ c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3v-11.2c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4
238
+ C277.8,328,276.1,327.5,274.5,327.5L274.5,327.5z"/>
239
+ </g>
240
+ </g>
241
+ <g>
242
+ <path fill="#BCBEC0" d="M300.6,346.9c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4
243
+ c-1.2-0.7-2.4-1.8-3.4-3.1c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2
244
+ C304.3,353.9,302.8,349.8,300.6,346.9z"/>
245
+ </g>
246
+ </g>
247
+ </g>
248
+ <g>
249
+ <g>
250
+ <path fill="#8DC63F" d="M202.3,366.8c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2
251
+ c0-5.7,3.2-8.3,6.3-8.3c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2C208.6,364.3,205.5,366.8,202.3,366.8z
252
+ "/>
253
+ </g>
254
+ <g>
255
+ <path fill="#231F20" d="M176.8,321.4c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
256
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C172.5,323.7,174.3,321.4,176.8,321.4 M176.8,317.4
257
+ L176.8,317.4c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
258
+ v-11.2c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4C180.1,317.9,178.4,317.4,176.8,317.4L176.8,317.4z"/>
259
+ </g>
260
+ </g>
261
+ <g>
262
+ <path fill="#7BA538" d="M202.9,336.8c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4c-1.2-0.7-2.4-1.8-3.4-3.1
263
+ c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2C206.6,343.7,205.1,339.7,202.9,336.8z"/>
264
+ </g>
265
+ <g>
266
+ <g>
267
+ <g>
268
+ <path fill="#FFFFFF" d="M251.2,395.1c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4V356
269
+ c0-5.7,3.2-8.3,6.3-8.3c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4v11.2C257.5,392.5,254.3,395.1,251.2,395.1
270
+ z"/>
271
+ </g>
272
+ <g>
273
+ <path fill="#231F20" d="M225.7,349.6c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7v11.2c0,3.9-1.8,6.3-4.3,6.3
274
+ c-0.9,0-1.8-0.3-2.8-0.9l-19.8-11.4c-4-2.3-7.2-8.4-7.2-13.7v-11.2C221.4,351.9,223.1,349.6,225.7,349.6 M225.7,345.6
275
+ L225.7,345.6c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
276
+ v-11.2c0-6.8-3.9-14.1-9.2-17.1L230.5,347C228.9,346.1,227.3,345.6,225.7,345.6L225.7,345.6z"/>
277
+ </g>
278
+ </g>
279
+ <g>
280
+ <path fill="#BCBEC0" d="M251.7,365c0.3,1.2,0.5,2.4,0.5,3.6v11.2c0,5.3-3.2,7.7-7.2,5.4l-19.8-11.4c-1.2-0.7-2.4-1.8-3.4-3.1
281
+ c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2C255.5,371.9,254,367.9,251.7,365z"/>
282
+ </g>
283
+ </g>
284
+ <g>
285
+ <g>
286
+ <path fill="#D64550" d="M300,423.3c-1.3,0-2.5-0.4-3.8-1.1l-19.8-11.4c-4.6-2.6-8.2-9.4-8.2-15.4v-11.2c0-5.7,3.2-8.3,6.3-8.3
287
+ c1.3,0,2.5,0.4,3.8,1.1l19.8,11.4c4.6,2.6,8.2,9.4,8.2,15.4V415C306.3,420.7,303.2,423.3,300,423.3z"/>
288
+ </g>
289
+ <g>
290
+ <path fill="#231F20" d="M274.5,377.8c0.9,0,1.8,0.3,2.8,0.9l19.8,11.4c4,2.3,7.2,8.4,7.2,13.7V415c0,3.9-1.8,6.3-4.3,6.3
291
+ c-0.9,0-1.8-0.3-2.8-0.9L277.4,409c-4-2.3-7.2-8.4-7.2-13.7v-11.2C270.2,380.1,272,377.8,274.5,377.8 M274.5,373.8
292
+ L274.5,373.8c-4,0-8.3,3.2-8.3,10.3v11.2c0,6.8,3.9,14.1,9.2,17.1l19.8,11.4c1.6,0.9,3.2,1.4,4.8,1.4c4,0,8.3-3.2,8.3-10.3
293
+ v-11.2c0-6.8-3.9-14.1-9.2-17.1l-19.8-11.4C277.8,374.3,276.1,373.8,274.5,373.8L274.5,373.8z"/>
294
+ </g>
295
+ </g>
296
+ <g>
297
+ <path fill="#932E3D" d="M300.6,393.2c0.3,1.2,0.5,2.4,0.5,3.6V408c0,5.3-3.2,7.7-7.2,5.4L274.1,402c-1.2-0.7-2.4-1.8-3.4-3.1
298
+ c1,4.2,3.6,8.3,6.7,10.1l19.8,11.4c4,2.3,7.2-0.1,7.2-5.4v-11.2C304.3,400.1,302.8,396.1,300.6,393.2z"/>
299
+ </g>
300
+ </g>
301
+ </g>
302
+ <g>
303
+ <g>
304
+ <path fill="#231F20" d="M193.1,21.9c1.9,0,4,0.6,6.2,1.9l161.2,93.1c5.7,3.3,10.8,10.3,13.5,18c1.4,3.9,2.2,8.1,2.2,12v294.5
305
+ c0,3.1-0.5,5.7-1.4,7.8c-0.9,2.1-2.2,3.7-3.7,4.7l0,0c-0.2,0.1-0.4,0.3-0.6,0.4L335,474.7c-1.6,1.7-3.7,2.7-6,2.7
306
+ c-1.9,0-4-0.6-6.2-1.9l-16.4-9.5v82l-132.1-76.3v-82l-12.7-7.3c-8.7-5-15.7-18.5-15.7-30V57.9c0-8.4,3.7-13.5,9.1-13.7
307
+ c-0.1,0-0.3,0-0.4,0c-1,0-1.9,0.1-2.7,0.4l36.3-21.1C189.6,22.5,191.3,21.9,193.1,21.9 M193.1,12.9c-3.6,0-7,1.1-9.9,3.2
308
+ l-35.9,20.8l0.1,0.3c-5.9,3.1-10.6,9.9-10.6,20.9v294.5c0,14.9,8.7,31.2,20.2,37.8l8.2,4.7v76.8v5.2l4.5,2.6L301.8,556l13.5,7.8
309
+ V548v-66.4l2.9,1.7c3.6,2.1,7.2,3.1,10.7,3.1c4.3,0,8.3-1.6,11.5-4.4l33.1-19.1h0.2l2.2-1.4c3.1-2,5.6-5.1,7.1-8.8
310
+ c1.4-3.2,2.1-7,2.1-11.2V146.8c0-4.8-0.9-9.9-2.7-15c-3.6-10-10.1-18.6-17.5-22.8l-161-93C200.3,13.9,196.7,12.9,193.1,12.9
311
+ L193.1,12.9z"/>
312
+ </g>
313
+ </g>
314
+ </g>
315
+ </g>
316
+ </svg>