commit 63554b615421e91354430b0c1d009cb49b6d2884
parent 723deee494e0e2be514a5ffc26368aa7f2579aee
Author: oscarbenedito <oscar@obenedito.org>
Date:   Mon,  2 Mar 2020 22:18:43 +0100

New entry: types of networks

Diffstat:
Massets/css/style.scss | 1-
Mcontent/blog/2020-01-12-securing-communications.md | 2+-
Mcontent/blog/2020-02-23-sharing-a-secret.pdc | 2+-
Acontent/blog/2020-03-02-types-of-networks.md | 36++++++++++++++++++++++++++++++++++++
Alayouts/shortcodes/image.html | 1+
Astatic/img/blog/2020/03/types-of-networks/centralized-network.svg | 1+
Astatic/img/blog/2020/03/types-of-networks/decentralized-network.svg | 1+
Astatic/img/blog/2020/03/types-of-networks/distributed-network.svg | 1+
8 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/assets/css/style.scss b/assets/css/style.scss @@ -408,7 +408,6 @@ main.list { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; - -webkit-line-clamp: 2; } footer { color: var(--secondary-text-color); diff --git a/content/blog/2020-01-12-securing-communications.md b/content/blog/2020-01-12-securing-communications.md @@ -1,6 +1,6 @@ --- title: "Securing communications" -categories: technology +categories: knowledge base tags: ["Cryptography", "Software", "Privacy", "Security", "Encryption"] --- We use cryptographic techniques daily without really knowing how they work, so I'm going to try and explain some basic concepts. Let's start with Wikipedia's current definition: diff --git a/content/blog/2020-02-23-sharing-a-secret.pdc b/content/blog/2020-02-23-sharing-a-secret.pdc @@ -1,6 +1,6 @@ --- title: "Sharing a secret" -categories: incidental +categories: knowledge base tags: ["Backup", "Cryptography", "Encryption", "Privacy", "Security"] --- Making a backup of a secret can be tricky. For instance: I have a lot of passwords stored in an encrypted file, which I can edit through my password manager. The data in that file is both very sensitive and crucial. I currently have some offline backups (which are updated every once in a while) in different locations and one online backup in case I lose access to my passwords and I am not able to go to one of the locations where other backups are kept. diff --git a/content/blog/2020-03-02-types-of-networks.md b/content/blog/2020-03-02-types-of-networks.md @@ -0,0 +1,36 @@ +--- +title: "Centralized, decentralized and distributed networks" +categories: knowledge base +tags: ["Networks", "Communications", "Decentralization", "Centralization", "Distributed networks"] +--- +When we are trying to understand a communications network, having an approximate image of how the network operates can be very valuable. Do all communications go through the same node? Is there a central authority? Can nodes communicate directly with each other? Depending on how the network operates, we can classify it as centralized, decentralized or distributed. + +### Centralized networks + +When all the nodes on a network are connected to one unique node, we call it a centralized network. All communications happen through that one "master" node. An example of a centralized network is the one created by most instant messengers, for example [Signal](https://signal.org/). Every time we send a message, it goes to Signal's servers and it is then sent to its destination. This creates a network similar to the following, where everyone is connected to one server (or cluster of servers). + +{{< image src="/img/blog/2020/03/types-of-networks/centralized-network.svg" alt="Centralized network" max-width="400px" >}} + +Having everything go through the same computer has its pros and cons. On the one hand, it makes deployment easier and faster, data consistency is easy to maintain and it is an efficient network (if, for instance, you need to gather data, it is all in one server). On the other hand, it creates a single point of failure for the whole network (which also facilitates censorship) and it makes it easier to abuse users (as the central server has a monopoly over the network)[^common]. This type of network also makes escalation much harder, as the resources are provided by one sole party. + +[^common]: This is pretty usual. Whether it is services selling user's data, censoring content, a sudden rise of prices, etc., when dealing with centralized services, users don't have much choice but to leave the network completely (which might not be affordable). + +### Decentralized networks + +Decentralized networks don't have one central node, but multiple of them, which are connected between themselves. When clients connect to the network, their communications go through their "master" node, to the destination's "master" node, and finally to the destination. An example of a decentralized network is [e-mail](https://en.wikipedia.org/wiki/Email). When Alice (`alice@example.com`) wants to send an e-mail to Bob (`bob@example.org`), Alice's computer sends the message to `example.com`'s server. From there, it is sent to `example.org`, and finally `example.org` sends it to Bob's computer. A decentralized network looks similar to the following network. + +{{< image src="/img/blog/2020/03/types-of-networks/decentralized-network.svg" alt="Decentralized network" max-width="400px" >}} + +Decentralized networks solve some of the centralization problems: no entity has control over the whole network anymore, allowing users to choose between different providers and switch servers (or self-host) if one starts abusing its power. If a server is down, others can still communicate ordinarily, which also makes censorship more difficult. Decentralized networks are also easier to escalate. Nonetheless, this type of network requires more infrastructure and can become less efficient for certain operations (like global tasks). It is also harder to deploy updates, as servers might update at different times, when each administrator decides to do so. + +### Distributed networks + +Distributed networks only have one type of node, and they are connected with each other (although not necessarily all with all). This creates a very robust network where all nodes are client and server at the same time. The [BitTorrent protocol](https://en.wikipedia.org/wiki/BitTorrent) is an example of a protocol that works with a distributed network. The following image shows what a distributed network looks like. + +{{< image src="/img/blog/2020/03/types-of-networks/distributed-network.svg" alt="Distributed network" max-width="400px" >}} + +Because there are no central servers, distributed networks easily circumvent censorship and are practically immune to denial-of-service attacks. Since every user is client and server at the same time, these networks are highly scalable without the need for additional central resources. However, distributed networks make deployment a lot harder. + +## Final comments + +I hope this post has clarified the main differences between centralized, decentralized and distributed networks as well as showed some applications for each of them. In the future, I might refer to this post when talking about services and the type of network they rely on. diff --git a/layouts/shortcodes/image.html b/layouts/shortcodes/image.html @@ -0,0 +1 @@ +<p style="text-align: center"><img src="{{ .Get "src" }}"{{ with .Get "alt"}} alt="{{ . }}" title="{{ . }}"{{ end }} style="display: inline-block;{{ with .Get "max-width" }} max-width: {{ . }};{{ end }}"></p> diff --git a/static/img/blog/2020/03/types-of-networks/centralized-network.svg b/static/img/blog/2020/03/types-of-networks/centralized-network.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" viewBox="0 0 633.9 523.77" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-59.788 -73.078)"><g fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" style="paint-order:fill stroke markers"><path d="m166.85 287.68 187.87 63.486"/><path d="m201.83 412.06 152.88-60.894"/><path d="m354.71 351.16-150.29 161.95"/><path d="m65.788 383.55 288.92-32.391"/><path d="m432.45 461.29-77.738-110.13"/><path d="m305.48 585.67 49.234-234.51"/><path d="m418.2 590.85-63.486-239.69"/><path d="m251.06 567.53 103.65-216.37"/><path d="m266.61 336.91 88.103 14.252"/><path d="m485.57 466.47-130.86-115.31"/><path d="m424.68 517-69.964-165.84"/><path d="m148.71 344.68 206 6.4781"/><path d="m352.12 518.3 2.5912-167.14"/><path d="m127.98 171.07 226.73 180.09"/><path d="m245.88 217.71 108.83 133.45"/><path d="m173.32 85.558 181.39 265.6"/><path d="m309.37 177.55 45.347 173.61"/><path d="m345.64 243.62 9.0694 107.54"/><path d="m363.78 79.079-9.0694 272.08"/><path d="m396.17 217.71-41.46 133.45"/><path d="m437.63 200.87-82.92 150.29"/><path d="m470.02 287.68-115.31 63.486"/><path d="m560.72 198.28-206 152.88"/><path d="m569.79 154.23-215.07 196.94"/><path d="m633.27 256.58-278.56 94.581"/><path d="m354.71 351.16 206-12.956"/><path d="m687.69 397.8-332.98-46.643"/><path d="m546.47 404.28-191.75-53.121"/></g><g style="paint-order:stroke fill markers"><path d="m179.32 85.558c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m363.71 351.16c0 4.9706-4.0294 9-9 9s-9-4.0294-9-9 4.0294-9 9-9 9 4.0294 9 9z"/><path d="m369.78 79.079c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m443.63 200.87c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m172.85 287.68c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m315.37 177.55c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m207.83 412.06c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m575.79 154.23c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m639.27 256.58c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m210.42 513.11c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m71.788 383.55c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6 0-3.3137 2.6863-6 6-6 3.3137 0 6 2.6863 6 6z"/><path d="m133.98 171.07c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m693.69 397.8c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m438.45 461.29c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m311.48 585.67c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m424.2 590.85c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6 0-3.3137 2.6863-6 6-6 3.3137 0 6 2.6863 6 6z"/><path d="m257.06 567.53c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m272.61 336.91c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m351.64 243.62c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m476.02 287.68c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m566.72 198.28c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m552.47 404.28c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m491.57 466.47c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m430.68 517c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m154.71 344.68c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m251.88 217.71c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6 0-3.3137 2.6863-6 6-6 3.3137 0 6 2.6863 6 6z"/><path d="m402.17 217.71c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m358.12 518.3c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m566.72 338.2c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/></g></g></svg> diff --git a/static/img/blog/2020/03/types-of-networks/decentralized-network.svg b/static/img/blog/2020/03/types-of-networks/decentralized-network.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" viewBox="0 0 633.9 523.77" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-59.788 -73.078)"><g fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" style="paint-order:fill stroke markers"><path d="m354.71 351.16 206-12.956"/><path d="m560.72 338.2-14.252 66.077"/><path d="m560.72 338.2 126.97 59.599"/><path d="m633.27 256.58-72.555 81.625"/><path d="m470.02 287.68 90.694 50.529"/><path d="m309.37 177.55-63.486 40.164"/><path d="m363.78 79.079-117.9 138.63"/><path d="m173.32 85.558 72.555 132.15"/><path d="m127.98 171.07 117.9 46.643"/><path d="m345.64 243.62 124.38 44.051"/><path d="m396.17 217.71 73.851 69.964"/><path d="m437.63 200.87 32.391 86.807"/><path d="m569.79 154.23-99.763 133.45"/><path d="m560.72 198.28-90.694 89.398"/><path d="m470.02 287.68-268.19 124.38"/><path d="m201.83 412.06 358.89-73.851"/><path d="m201.83 412.06 150.29 106.24"/><path d="m352.12 518.3-106.24-300.59"/><path d="m201.83 412.06 2.5913 101.06"/><path d="m266.61 336.91-64.781 75.146"/><path d="m148.71 344.68 53.121 67.373"/><path d="m65.788 383.55 136.04 28.504"/><path d="m166.85 287.68 34.982 124.38"/><path d="m251.06 567.53 101.06-49.234"/><path d="m352.12 518.3-46.643 67.373"/><path d="m352.12 518.3 66.077 72.555"/><path d="m352.12 518.3 72.555-1.2956"/><path d="m432.45 461.29-80.329 57.008"/><path d="m560.72 338.2-75.146 128.27"/><path d="m245.88 217.71-44.051 194.34"/></g><g style="paint-order:stroke fill markers"><path d="m179.32 85.558c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m360.71 351.16c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m369.78 79.079c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m443.63 200.87c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m172.85 287.68c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m315.37 177.55c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m210.83 412.06c0 4.9706-4.0294 9-9 9-4.9706 0-9-4.0294-9-9s4.0294-9 9-9c4.9706 0 9 4.0294 9 9z"/><path d="m575.79 154.23c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m639.27 256.58c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m210.42 513.11c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m71.788 383.55c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6 0-3.3137 2.6863-6 6-6 3.3137 0 6 2.6863 6 6z"/><path d="m133.98 171.07c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m693.69 397.8c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m438.45 461.29c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m311.48 585.67c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m424.2 590.85c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6 0-3.3137 2.6863-6 6-6 3.3137 0 6 2.6863 6 6z"/><path d="m257.06 567.53c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m272.61 336.91c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m351.64 243.62c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m479.02 287.68c0 4.9706-4.0294 9-9 9s-9-4.0294-9-9c0-4.9706 4.0294-9 9-9s9 4.0294 9 9z"/><path d="m566.72 198.28c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m552.47 404.28c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m491.57 466.47c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m430.68 517c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m154.71 344.68c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m254.88 217.71c0 4.9706-4.0294 9-9 9-4.9706 0-9-4.0294-9-9 0-4.9706 4.0294-9 9-9 4.9706 0 9 4.0294 9 9z"/><path d="m402.17 217.71c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m361.12 518.3c0 4.9706-4.0294 9-9 9-4.9706 0-9-4.0294-9-9s4.0294-9 9-9c4.9706 0 9 4.0294 9 9z"/><path d="m569.72 338.2c0 4.9706-4.0294 9-9 9-4.9706 0-9-4.0294-9-9 0-4.9706 4.0294-9 9-9 4.9706 0 9 4.0294 9 9z"/></g></g></svg> diff --git a/static/img/blog/2020/03/types-of-networks/distributed-network.svg b/static/img/blog/2020/03/types-of-networks/distributed-network.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><svg version="1.1" viewBox="0 0 633.9 523.77" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-59.788 -73.078)"><g fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" style="paint-order:fill stroke markers"><path d="m470.02 287.68 90.694 50.529"/><path d="m633.27 256.58 54.416 141.22"/><path d="m546.47 404.28 141.22-6.4781"/><path d="m546.47 404.28-60.894 62.19"/><path d="m424.68 517 60.894-50.529"/><path d="m432.45 461.29 53.121 5.1825"/><path d="m432.45 461.29-7.7738 55.712"/><path d="m432.45 461.29 128.27-123.08"/><path d="m470.02 287.68-37.573 173.61"/><path d="m352.12 518.3 2.5912-167.14"/><path d="m354.71 351.16 115.31-63.486"/><path d="m354.71 351.16-9.0694-107.54"/><path d="m266.61 336.91 88.103 14.252"/><path d="m354.71 351.16 77.738 110.13"/><path d="m424.68 517-72.555 1.2956"/><path d="m352.12 518.3-46.643 67.373"/><path d="m305.48 585.67 112.72 5.1825"/><path d="m418.2 590.85-66.077-72.555"/><path d="m424.68 517-6.4781 73.851"/><path d="m251.06 567.53 101.06-49.234"/><path d="m305.48 585.67-54.416-18.139"/><path d="m251.06 567.53-46.643-54.416"/><path d="m201.83 412.06 2.5913 101.06"/><path d="m201.83 412.06-53.121-67.373"/><path d="m148.71 344.68-82.92 38.869"/><path d="m148.71 344.68 18.139-57.008"/><path d="m201.83 412.06 64.781-75.146"/><path d="m266.61 336.91-117.9 7.7738"/><path d="m201.83 412.06 49.234 155.48"/><path d="m266.61 336.91-20.73-119.2"/><path d="m245.88 217.71-79.033 69.964"/><path d="m166.85 287.68-38.869-116.61"/><path d="m127.98 171.07 45.347-85.511"/><path d="m173.32 85.558 190.46-6.4781"/><path d="m363.78 79.079-54.416 98.468"/><path d="m309.37 177.55-63.486 40.164"/><path d="m245.88 217.71-72.555-132.15"/><path d="m173.32 85.558-6.4781 202.12"/><path d="m309.37 177.55-42.756 159.36"/><path d="m345.64 243.62-36.278-66.077"/><path d="m396.17 217.71-41.46 133.45"/><path d="m345.64 243.62 50.529-25.913"/><path d="m396.17 217.71-86.807-40.164"/><path d="m437.63 200.87 32.391 86.807"/><path d="m437.63 200.87-41.46 16.843"/><path d="m560.72 198.28v139.93"/><path d="m560.72 338.2-14.252 66.077"/><path d="m633.27 256.58-72.555-58.303"/><path d="m560.72 198.28 9.0694-44.051"/><path d="m569.79 154.23 63.486 102.35"/><path d="m560.72 198.28-90.694 89.398"/><path d="m437.63 200.87 123.08-2.5913"/><path d="m560.72 338.2 72.555-81.625"/><path d="m65.788 383.55 138.63 129.56"/><path d="m201.83 412.06 150.29 106.24"/><path d="m266.61 336.91 85.511 181.39"/></g><g style="paint-order:stroke fill markers"><path d="m179.32 85.558c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m360.71 351.16c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m369.78 79.079c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m443.63 200.87c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m172.85 287.68c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m315.37 177.55c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m207.83 412.06c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m575.79 154.23c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m639.27 256.58c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m210.42 513.11c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m71.788 383.55c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6 0-3.3137 2.6863-6 6-6 3.3137 0 6 2.6863 6 6z"/><path d="m133.98 171.07c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m693.69 397.8c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m438.45 461.29c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m311.48 585.67c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m424.2 590.85c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6 0-3.3137 2.6863-6 6-6 3.3137 0 6 2.6863 6 6z"/><path d="m257.06 567.53c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m272.61 336.91c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m351.64 243.62c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m476.02 287.68c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m566.72 198.28c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m552.47 404.28c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m491.57 466.47c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m430.68 517c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m154.71 344.68c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6 2.6863-6 6-6 6 2.6863 6 6z"/><path d="m251.88 217.71c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6 0-3.3137 2.6863-6 6-6 3.3137 0 6 2.6863 6 6z"/><path d="m402.17 217.71c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/><path d="m358.12 518.3c0 3.3137-2.6863 6-6 6-3.3137 0-6-2.6863-6-6s2.6863-6 6-6c3.3137 0 6 2.6863 6 6z"/><path d="m566.72 338.2c0 3.3137-2.6863 6-6 6s-6-2.6863-6-6c0-3.3137 2.6863-6 6-6s6 2.6863 6 6z"/></g></g></svg>