<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>CyberDevSpace Blog</title>
        <link>https://cyberdev.space/en/blog/</link>
        <description>CyberDevSpace Blog</description>
        <lastBuildDate>Mon, 28 Sep 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Four internets: how Reticulum, I2P, Yggdrasil and Nostr differ]]></title>
            <link>https://cyberdev.space/en/blog/four-internets/</link>
            <guid>https://cyberdev.space/en/blog/four-internets/</guid>
            <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Reticulum, I2P, Yggdrasil and Nostr get lined up together, yet they fix different floors of the network: what each takes on, what it pays, and how they stack.]]></description>
            <content:encoded><![CDATA[<p>Reticulum, I2P, Yggdrasil and Nostr keep getting lined up together — and wrongly so. They are not competitors: they fix <strong>different floors</strong> of the same building. One replaces radio and routing, the second hides who talks to whom, the third hands out addresses, the fourth takes your account away from the platforms.</p>
<div class="ms-stats"><div class="ms-stat"><b>500 bytes</b><span>Reticulum's MTU. It lives on a 300 bit/s channel — where TCP/IP will not even start</span></div><div class="ms-stat"><b>3 + 3</b><span>Other people's nodes between a client and a site in I2P: its outbound tunnel plus the site's inbound tunnel</span></div><div class="ms-stat"><b>0200::/7</b><span>The Yggdrasil range. An IPv6 address here is a public key fingerprint</span></div><div class="ms-stat"><b>0</b><span>How much Nostr relays know about each other. The client spreads the copies itself</span></div></div>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="each-of-the-four-fixes-its-own-breakage">Each of the four fixes its own breakage<a href="https://cyberdev.space/en/blog/four-internets/#each-of-the-four-fixes-its-own-breakage" class="hash-link" aria-label="Direct link to Each of the four fixes its own breakage" title="Direct link to Each of the four fixes its own breakage" translate="no">​</a></h2>
<p>First the shortest version, with a schoolyard analogy. After that each one is taken apart separately, with a diagram showing exactly what happens to a message.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__label">when there is nothing</p><p class="ms-card__title">Reticulum</p><div class="ms-card__body"><p>A complete network stack for bad channels: a walkie-talkie, a wire, LoRa. It needs no IP, no provider and no speed.</p><p><em>Notes are passed hand to hand across the whole yard — and nobody on the way can open the envelope.</em></p></div></div><div class="ms-card frame"><p class="ms-card__label">when you need to hide</p><p class="ms-card__title">I2P</p><div class="ms-card__body"><p>An anonymous network on top of the ordinary internet. It hides not the content (any TLS does that) but <strong>who talks to whom</strong>.</p><p><em>The note is passed through six children, and each knows only who gave it and who they handed it to.</em></p></div></div><div class="ms-card frame"><p class="ms-card__label">when you just need connectivity</p><p class="ms-card__title">Yggdrasil</p><div class="ms-card__body"><p>A self-organising IPv6 network. It gives you an address from your own key — and all ordinary programs run on top of it unchanged.</p><p><em>Everyone got their own name that cannot be forged, and the yard worked out by itself how to reach each of them.</em></p></div></div><div class="ms-card frame"><p class="ms-card__label">when the platform is the problem</p><p class="ms-card__title">Nostr</p><div class="ms-card__body"><p>Not a network at all but a format for signed messages. Identity is a key, not an account on someone else's server.</p><p><em>The note is signed with your own signature and copies are pinned to three boards. One is torn down — the rest stay up.</em></p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="they-are-not-competitors--they-are-on-different-floors">They are not competitors — they are on different floors<a href="https://cyberdev.space/en/blog/four-internets/#they-are-not-competitors--they-are-on-different-floors" class="hash-link" aria-label="Direct link to They are not competitors — they are on different floors" title="Direct link to They are not competitors — they are on different floors" translate="no">​</a></h2>
<p>Comparing Nostr with Reticulum is like comparing Instagram with optical fibre. Here is what each one takes on itself and what it borrows from the existing internet.</p>
<figure class="ms-fig ms-net motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 760 302" role="img" aria-label="Diagram: which layers of the network stack each protocol covers"><text class="d-title" x="0" y="13">what the protocol takes on</text><g class="d-lbl" text-anchor="middle"><text x="208" y="34">medium</text><text x="208" y="46" opacity=".65">radio, wire</text><text x="304" y="34">neighbours</text><text x="304" y="46" opacity=".65">who to link to</text><text x="400" y="34">routing</text><text x="400" y="46" opacity=".65">how to find</text><text x="496" y="34">who you are</text><text x="496" y="46" opacity=".65">identity</text><text x="592" y="34">crypto</text><text x="592" y="46" opacity=".65">e2e</text><text x="688" y="34">app</text><text x="688" y="46" opacity=".65">what you send</text></g><g stroke-width="1" style="stroke:var(--k-1e3350)"><line x1="160" y1="56" x2="160" y2="266"></line><line x1="256" y1="56" x2="256" y2="266"></line><line x1="352" y1="56" x2="352" y2="266"></line><line x1="448" y1="56" x2="448" y2="266"></line><line x1="544" y1="56" x2="544" y2="266"></line><line x1="640" y1="56" x2="640" y2="266"></line><line x1="736" y1="56" x2="736" y2="266"></line></g><text class="d-lbl d-lbl--ink" x="150" y="92" text-anchor="end" style="font-size:13px;fill:var(--k-ef9440);font-weight:700">Reticulum</text><rect class="lay-bar" x="160" y="70" width="96" height="34" rx="7" fill-opacity=".38" stroke-opacity=".75" stroke-dasharray="4 4" style="--ox:160px;--d:.05s;fill:var(--k-ef9440);stroke:var(--k-ef9440)"></rect><rect class="lay-bar" x="256" y="70" width="480" height="34" rx="7" fill-opacity=".85" style="--ox:256px;--d:.15s;fill:var(--k-ef9440)"></rect><text x="500" y="92" text-anchor="middle" style="font-size:12px;fill:var(--k-2a1405);font-weight:700">the whole stack — from the radio wave to the messenger</text><text class="d-lbl d-lbl--ink" x="150" y="144" text-anchor="end" style="font-size:13px;fill:var(--k-35c9a2);font-weight:700">Yggdrasil</text><rect class="lay-bar" x="256" y="122" width="384" height="34" rx="7" fill-opacity=".85" style="--ox:256px;--d:.3s;fill:var(--k-35c9a2)"></rect><text x="448" y="144" text-anchor="middle" style="font-size:12px;fill:var(--k-03251c);font-weight:700">neighbours, routing, address from the key, crypto</text><text class="d-lbl" x="688" y="144" text-anchor="middle">your usual ones</text><text class="d-lbl d-lbl--ink" x="150" y="196" text-anchor="end" style="font-size:13px;fill:var(--k-9f8dff);font-weight:700">I2P</text><rect class="lay-bar" x="352" y="174" width="288" height="34" rx="7" fill-opacity=".85" style="--ox:352px;--d:.45s;fill:var(--k-9f8dff)"></rect><text x="496" y="196" text-anchor="middle" style="font-size:12px;fill:var(--k-150b3d);font-weight:700">anonymous routing + layers of encryption</text><rect class="lay-bar" x="640" y="174" width="96" height="34" rx="7" fill-opacity=".38" stroke-opacity=".75" stroke-dasharray="4 4" style="--ox:640px;--d:.6s;fill:var(--k-9f8dff);stroke:var(--k-9f8dff)"></rect><text class="d-lbl" x="688" y="196" text-anchor="middle">its own sites</text><text class="d-lbl d-lbl--ink" x="150" y="248" text-anchor="end" style="font-size:13px;fill:var(--k-f6669a);font-weight:700">Nostr</text><rect class="lay-bar" x="448" y="226" width="96" height="34" rx="7" fill-opacity=".85" style="--ox:448px;--d:.7s;fill:var(--k-f6669a)"></rect><text x="496" y="248" text-anchor="middle" style="font-size:12px;fill:var(--k-3a0418);font-weight:700">key</text><rect class="lay-bar" x="640" y="226" width="96" height="34" rx="7" fill-opacity=".85" style="--ox:640px;--d:.8s;fill:var(--k-f6669a)"></rect><text x="688" y="248" text-anchor="middle" style="font-size:12px;fill:var(--k-3a0418);font-weight:700">events</text><text class="d-lbl" x="304" y="248" text-anchor="middle" opacity=".8">borrows all of this from the existing internet</text><text class="d-note" x="160" y="288">Dashed = partial coverage. Reticulum is the only one that does not rely on anyone else's network at all.</text></svg></div><figcaption><strong>How to read it:</strong> <!-- -->the wider the band, the more the protocol replaces. Nostr is "full of holes": it takes only identity and message format and leaves delivery entirely to the ordinary internet. That is why Nostr runs inside Yggdrasil or I2P rather than instead of them.</figcaption></figure>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="reticulum">Reticulum<a href="https://cyberdev.space/en/blog/four-internets/#reticulum" class="hash-link" aria-label="Direct link to Reticulum" title="Direct link to Reticulum" translate="no">​</a></h2>
<p><em>Since 2016 · Python, Reticulum License · by Mark Qvist · rides on LoRa, radio, wire, TCP</em></p>
<p>A yard with <strong>no grown-up in charge</strong>. Everyone has their own seal that cannot be forged. A note goes into a sealed envelope and is passed hand to hand. If the recipient has gone home, the envelope waits in somebody's pocket until they come back.</p>
<p>Reticulum is not "yet another messenger" but a <strong>complete network stack</strong>, written from scratch for channels on which the ordinary internet simply will not start. It does not know what an IP address, a port or DNS is. No central registry: addresses are generated by the nodes themselves, and nobody can either issue them or take them away.</p>
<p>An address (destination) is 16 bytes of truncated SHA-256 of the public key and the application name. To be found, a node throws an <strong>announce</strong> into the air; transport nodes remember which way to go to reach it, and the path table builds itself. Encryption cannot be switched on — it is already on and cannot be switched off. In detail — in <a class="" href="https://cyberdev.space/en/blog/reticulum-up-close/">Reticulum up close</a>.</p>
<figure class="ms-fig ms-net motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 760 300" role="img" aria-label="Animation: a Reticulum message hops via a neighbour and a storage node to a friend who was offline"><text class="d-title" x="0" y="14">one message, four nodes</text><g class="d-link flow"><line x1="106" y1="150" x2="230" y2="150"></line><line x1="286" y1="150" x2="410" y2="150"></line><line x1="466" y1="150" x2="620" y2="150"></line></g><g fill="none" stroke-width="1.5" style="stroke:var(--k-ef9440)"><circle class="wave" cx="78" cy="150" r="16" style="--d:0s"></circle><circle class="wave" cx="258" cy="150" r="16" style="--d:.8s"></circle><circle class="wave" cx="438" cy="150" r="16" style="--d:1.6s"></circle></g><g stroke-width="2" style="stroke:var(--k-ef9440)"><circle class="d-node" cx="78" cy="150" r="28"></circle><circle class="d-node" cx="258" cy="150" r="28"></circle><circle class="d-node" cx="438" cy="150" r="28"></circle><circle class="d-node rns-wake" cx="648" cy="150" r="28"></circle></g><g class="d-lbl" text-anchor="middle"><text class="d-lbl--ink" x="78" y="155" style="font-size:12px;font-weight:700">YOU</text><text x="78" y="196">phone</text><text x="78" y="209">+ RNode</text><text class="d-lbl--ink" x="258" y="155" style="font-size:11px">neighbour</text><text x="258" y="196">just</text><text x="258" y="209">relays</text><text class="d-lbl--ink" x="438" y="155" style="font-size:11px">node</text><text x="438" y="196">propagation node:</text><text x="438" y="209">holds the mail</text><text class="d-lbl--ink" x="648" y="155" style="font-size:11px">friend</text><text x="648" y="196">was offline —</text><text x="648" y="209">switched the radio on</text></g><text class="d-lbl" x="168" y="128" text-anchor="middle" opacity=".8">~300 bit/s</text><g class="rns-store"><rect x="348" y="60" width="180" height="34" rx="8" stroke-opacity=".5" style="fill:var(--k-1c2a3f);stroke:var(--k-ef9440)"></rect><text class="d-lbl d-lbl--ink" x="438" y="81" text-anchor="middle">waits while the recipient is offline</text></g><g class="rns-open"><rect x="566" y="60" width="164" height="34" rx="8" stroke-opacity=".6" style="fill:var(--k-123021);stroke:var(--k-35c9a2)"></rect><text class="d-lbl" x="648" y="81" text-anchor="middle" style="fill:var(--k-35c9a2)">opened only here</text></g><g class="rns-pkt"><rect x="-19" y="-13" width="38" height="26" rx="7" style="fill:var(--k-ef9440)"></rect><path d="M-4 1 v-4 a4 4 0 0 1 8 0 v4" fill="none" stroke-width="2" style="stroke:var(--k-0a1320)"></path><rect x="-7" y="0" width="14" height="9" rx="2" style="fill:var(--k-0a1320)"></rect></g><text class="d-note" x="0" y="248">address = 16-byte hash of the public key:</text><text class="d-lbl d-lbl--ink" x="0" y="268" style="font-size:13px">&lt;a4f1c8e0 7b2d9431 5fa6c70e 88d29d2c&gt;</text><text class="d-note" x="440" y="248">no node along the way has the key —</text><text class="d-note" x="440" y="266">it only sees who to pass it to next</text></svg></div><figcaption><strong>The key point:</strong> <!-- -->the storage node holds the sealed envelope but cannot open it. That is why Reticulum works where the recipient appears on air once a day.</figcaption></figure>
<p><strong>What is inside</strong></p>
<ul>
<li class=""><strong>address</strong> — 16 bytes (128 bits) of truncated SHA-256 of the key and the application name</li>
<li class=""><strong>crypto</strong> — X25519 for key exchange, Ed25519 for signatures, AES-256-CBC + HMAC-SHA256; ephemeral keys on links, i.e. forward secrecy</li>
<li class=""><strong>MTU</strong> — 500 bytes: not an oversight but design, everything must fit into a LoRa frame</li>
<li class=""><strong>carrier</strong> — LoRa (RNode), packet radio / AX.25, serial cable, TCP, UDP — and even I2P</li>
<li class=""><strong>offline</strong> — LXMF and propagation nodes: mail waits for the recipient</li>
<li class=""><strong>applications</strong> — Sideband (messenger), MeshChat, Nomad Network (something like a BBS)</li>
</ul>
<p><strong>Pros and cons</strong></p>
<ul>
<li class="">✓ The only one of the four that survives when there is no internet at all</li>
<li class="">✓ Encryption has no off switch — an "open mode" simply does not exist</li>
<li class="">✓ No need to ask anyone for an address: generate a key and you have one</li>
<li class="">✕ Not anonymous: transport nodes see the destination hash, and announces are public anyway</li>
<li class="">✕ Speed is in kilobytes. A photo will get there, video will not</li>
<li class="">✕ Real autonomy needs hardware: an RNode on LoRa</li>
<li class="">✕ The ecosystem is small, a lot has to be done by hand</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="i2p">I2P<a href="https://cyberdev.space/en/blog/four-internets/#i2p" class="hash-link" aria-label="Direct link to I2P" title="Direct link to I2P" translate="no">​</a></h2>
<p><em>Since 2003 · Java router and i2pd in C++ · garlic routing · a network in itself</em></p>
<p>The note is passed through <strong>six children</strong>, and each knows only two: who gave it and who to hand it to. And the reply goes <strong>an entirely different way</strong>. Nobody, even if they peek, can put together the picture "this one wrote to that one".</p>
<p>I2P does not hide the content — any TLS hides the content. It hides the <strong>metadata</strong>: who with whom, when and how much. It does this with two tricks. The first is layers of encryption: a message is wrapped so that each next node peels only its own layer and sees exactly one address — the next one. The second is <strong>unidirectional</strong> tunnels: the request goes along one chain and the reply comes back along another, so even someone who sees both ends cannot stitch them together.</p>
<p>I2P is most often confused with Tor. The difference is in the goal: Tor is built to <strong>exit</strong> to the ordinary web (and has centralised directory authorities for that), while I2P is a self-contained network <strong>within itself</strong>: <code>.i2p</code> sites, torrents, mail, IRC. Exits to the outside (outproxies) are rare here and not the point. And one more thing: Tor has separate relay nodes, whereas in I2P <strong>every participant is a router</strong> and carries other people's traffic — so your own gets lost among the transit.</p>
<figure class="ms-fig ms-net motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 760 300" role="img" aria-label="Animation: an I2P request goes along the top chain of six nodes, the reply comes back along the bottom one"><text class="d-title" x="0" y="14">the request goes on top, the reply underneath</text><path class="d-link" d="M78 132 L170 78 H620 L700 132"></path><path class="d-link" d="M700 184 L620 246 H170 L78 184"></path><g class="d-lbl" text-anchor="middle"><text x="260" y="44">your outbound tunnel</text><text x="530" y="44">the site's inbound tunnel</text><text x="260" y="286">your inbound tunnel</text><text x="530" y="286">the site's outbound tunnel</text></g><line x1="395" y1="56" x2="395" y2="104" stroke-dasharray="3 4" style="stroke:var(--k-1e3350)"></line><line x1="395" y1="220" x2="395" y2="268" stroke-dasharray="3 4" style="stroke:var(--k-1e3350)"></line><g stroke-width="1.8" style="stroke:var(--k-9f8dff)"><circle class="d-node" cx="170" cy="78" r="13"></circle><circle class="d-node" cx="260" cy="78" r="13"></circle><circle class="d-node" cx="350" cy="78" r="13"></circle><circle class="d-node" cx="440" cy="78" r="13"></circle><circle class="d-node" cx="530" cy="78" r="13"></circle><circle class="d-node" cx="620" cy="78" r="13"></circle><circle class="d-node" cx="170" cy="246" r="13"></circle><circle class="d-node" cx="260" cy="246" r="13"></circle><circle class="d-node" cx="350" cy="246" r="13"></circle><circle class="d-node" cx="440" cy="246" r="13"></circle><circle class="d-node" cx="530" cy="246" r="13"></circle><circle class="d-node" cx="620" cy="246" r="13"></circle><circle class="d-node" cx="78" cy="158" r="26" stroke-width="2.4"></circle><circle class="d-node" cx="700" cy="158" r="26" stroke-width="2.4"></circle></g><text class="d-lbl d-lbl--ink" x="78" y="163" text-anchor="middle" style="font-size:12px;font-weight:700">YOU</text><text class="d-lbl d-lbl--ink" x="700" y="156" text-anchor="middle" style="font-size:11px">site</text><text class="d-lbl" x="700" y="170" text-anchor="middle" style="font-size:9px">.b32.i2p</text><g class="i2p-db"><line x1="104" y1="150" x2="296" y2="150" stroke-dasharray="3 4" stroke-opacity=".7" style="stroke:var(--k-9f8dff)"></line><rect x="300" y="134" width="176" height="46" rx="9" stroke-opacity=".55" style="fill:var(--k-1a1740);stroke:var(--k-9f8dff)"></rect><text class="d-lbl d-lbl--ink" x="388" y="153" text-anchor="middle">netDb (distributed DHT)</text><text class="d-lbl" x="388" y="169" text-anchor="middle">where the site's inbound tunnels are now</text></g><g class="i2p-out"><circle class="peel1" r="17" fill="none" stroke-width="2.5" stroke-opacity=".9" style="stroke:var(--k-9f8dff)"></circle><circle class="peel2" r="13" fill="none" stroke-width="2.5" stroke-opacity=".75" style="stroke:var(--k-9f8dff)"></circle><circle class="peel3" r="9.5" fill="none" stroke-width="2.5" stroke-opacity=".6" style="stroke:var(--k-9f8dff)"></circle><circle r="6.5" style="fill:var(--k-9f8dff)"></circle></g><circle class="i2p-back" r="6.5" style="fill:var(--k-5f7fa8)"></circle><text class="d-note" x="0" y="212">rings = layers of encryption. each node peels exactly its own</text><text class="d-note" x="0" y="230">and sees only its neighbours — never both ends</text></svg></div><figcaption><strong>The key point:</strong> <!-- -->one request uses six other people's nodes, and each tunnel lives just 10 minutes before it is rebuilt. That is what the latency pays for.</figcaption></figure>
<p><strong>What is inside</strong></p>
<ul>
<li class=""><strong>address</strong> — a Destination (387+ bytes, 516 characters in base64), shown outside as a short base32 hash: <code>ukeu3k5o…q3a.b32.i2p</code>. There is no DNS; human-readable names come from subscription address books</li>
<li class=""><strong>tunnel</strong> — unidirectional, 3 hops by default, rebuilt every 10 minutes</li>
<li class=""><strong>directory</strong> — netDb, a Kademlia-like DHT: RouterInfo (where the routers are) and LeaseSet (where the destination's inbound tunnels are right now)</li>
<li class=""><strong>transport</strong> — NTCP2 (TCP) and SSU2 (UDP), both encrypted and obfuscated</li>
<li class=""><strong>garlic</strong> — several messages ("cloves") are packed into one encrypted garlic envelope</li>
<li class=""><strong>applications</strong> — eepsites, i2psnark (torrents), mail, IRC — all inside the network</li>
</ul>
<p><strong>Pros and cons</strong></p>
<ul>
<li class="">✓ The strongest of the four at hiding metadata: who with whom and when</li>
<li class="">✓ No centralised directories — the whole network holds the directory together</li>
<li class="">✓ Everyone carries other people's traffic, so your own does not stand out</li>
<li class="">✕ Slow: hundreds of milliseconds of latency, modest bandwidth</li>
<li class="">✕ For the first 10–20 minutes after start the router "warms up" and carries almost nothing</li>
<li class="">✕ Anonymity is easy to break yourself: just log in to your ordinary account</li>
<li class="">✕ Needs the ordinary internet — it will not run on bare radio</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="yggdrasil">Yggdrasil<a href="https://cyberdev.space/en/blog/four-internets/#yggdrasil" class="hash-link" aria-label="Direct link to Yggdrasil" title="Direct link to Yggdrasil" translate="no">​</a></h2>
<p><em>Since 2017 · Go · a world tree of IPv6 · ordinary programs work unchanged</em></p>
<p>Everyone got <strong>their own name that cannot be forged</strong> — it grew straight out of a key. And the yard, with no teacher, agreed by itself how to reach everyone: it drew a tree of paths and keeps it in its head.</p>
<p>Yggdrasil solves the most boring and most important question: <strong>how to find each other</strong> when there is no provider, NAT, public IPs or administrator handing out addresses. The answer: the address is the key. An Ed25519 key is run through a transformation and yields an IPv6 address in the <code>0200::/7</code> range. Nobody issued it and nobody can take it away.</p>
<p>Then the network builds a <strong>tree</strong> (spanning tree) out of all the participants and can find a way to any address, and since version 0.5 it also looks for shorter direct paths instead of sending everything through the root. Neighbours are found automatically via multicast on the local network or configured by hand — public nodes over TCP, TLS, QUIC.</p>
<p>The main practical value: a network interface simply appears in the system. <code>ssh</code>, <code>http</code>, Syncthing, a home NAS — all of it works over Yggdrasil without any changes, as if every device had a public IP. <strong>But this is not anonymity</strong>: neighbours see both your real IP and your public key.</p>
<figure class="ms-fig ms-net motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 760 320" role="img" aria-label="Animation: a key turns into an IPv6 address, a packet climbs the tree and comes down to the recipient"><text class="d-title" x="0" y="14">the key becomes the address, the tree finds the way</text><text class="d-lbl" x="0" y="44">ed25519 pub</text><text class="d-lbl d-lbl--ink" x="86" y="44" style="font-size:13px">3f9c1d40…c7a17b</text><path d="M272 39 h30 m-8 -5 l8 5 l-8 5" stroke-width="1.6" fill="none" style="stroke:var(--k-35c9a2)"></path><text class="ygg-addr" x="316" y="45" style="font-family:var(--mono);font-size:15px;fill:var(--k-35c9a2);font-weight:700">200:7a1e:9c33:88f1::1</text><text class="d-note" x="0" y="68">one function, no registry: the address is not issued — it is computed. forging it = forging the key</text><g class="d-link"><path d="M380 130 L224 186 M380 130 L540 186 M224 186 L140 244 M224 186 L300 244 M540 186 L470 244 M540 186 L622 244"></path></g><path class="ygg-shortcut" d="M140 244 Q380 340 622 244" fill="none" stroke-width="1.6" stroke-dasharray="5 6" opacity=".5" style="stroke:var(--k-35c9a2)"></path><text class="d-lbl" x="380" y="306" text-anchor="middle" style="fill:var(--k-35c9a2)" opacity=".85">direct path found in v0.5 — bypassing the root</text><g stroke-width="1.8" style="stroke:var(--k-35c9a2)"><circle class="d-node" cx="380" cy="130" r="17"></circle><circle class="d-node" cx="224" cy="186" r="13"></circle><circle class="d-node" cx="540" cy="186" r="13"></circle><circle class="d-node" cx="300" cy="244" r="12"></circle><circle class="d-node" cx="470" cy="244" r="12"></circle><circle class="d-node" cx="140" cy="244" r="20" stroke-width="2.4"></circle><circle class="d-node" cx="622" cy="244" r="20" stroke-width="2.4"></circle></g><g class="d-lbl" text-anchor="middle"><text x="380" y="112">tree root</text><text class="d-lbl--ink" x="140" y="249" style="font-size:12px;font-weight:700">you</text><text class="d-lbl--ink" x="622" y="249" style="font-size:12px;font-weight:700">friend</text><text x="140" y="282">your laptop</text><text x="622" y="282">their server</text></g><g class="ygg-pkt"><rect x="-9" y="-9" width="18" height="18" rx="5" style="fill:var(--k-35c9a2)"></rect></g><g class="ygg-fast"><rect x="-9" y="-9" width="18" height="18" rx="5" style="fill:var(--k-8ff0d3)"></rect></g><text class="d-note" x="0" y="166">the packet climbs the branches</text><text class="d-note" x="0" y="184">and comes down to the recipient</text><text class="d-note" x="640" y="166" text-anchor="end" style="text-anchor:start">ssh, http, rsync —</text><text class="d-note" x="640" y="184" style="text-anchor:start">everything works as is</text></svg></div><figcaption><strong>The key point:</strong> <!-- -->the address is tied neither to a provider nor to a place. A device moves from Wi-Fi to mobile data — same address, the connection lives on.</figcaption></figure>
<p><strong>What is inside</strong></p>
<ul>
<li class=""><strong>address</strong> — IPv6 from <code>0200::/7</code>, computed from the Ed25519 key; a <code>/64</code> from <code>0300::/8</code> is given for a subnet</li>
<li class=""><strong>routing</strong> — a global tree (spanning tree) plus path lookup; since v0.5 — direct routes bypassing the root</li>
<li class=""><strong>neighbours</strong> — multicast autodiscovery on the local network or manual peering: TCP, TLS, QUIC, WebSocket</li>
<li class=""><strong>encryption</strong> — end-to-end between the endpoint keys; a transit node carries but does not read</li>
<li class=""><strong>interface</strong> — an ordinary <code>tun</code> in the system: every program just sees IPv6</li>
<li class=""><strong>control</strong> — <code>yggdrasilctl getSelf</code>, <code>getPeers</code></li>
</ul>
<p><strong>Pros and cons</strong></p>
<ul>
<li class="">✓ Nothing has to be rewritten: all existing programs work straight away</li>
<li class="">✓ The address is permanent and your own — neither NAT nor a change of provider moves it</li>
<li class="">✓ The easiest way to "stitch" your devices and your friends' into one network</li>
<li class="">✕ Not anonymous at all: neighbours see IP and key</li>
<li class="">✕ Traffic goes through other people's volunteer nodes — speed depends on them</li>
<li class="">✕ You need at least one neighbour with connectivity; on its own a node gets nowhere</li>
<li class="">✕ The network is still young; routing at large scale is an open question</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="nostr">Nostr<a href="https://cyberdev.space/en/blog/four-internets/#nostr" class="hash-link" aria-label="Direct link to Nostr" title="Direct link to Nostr" translate="no">​</a></h2>
<p><em>Since 2020 · "Notes and Other Stuff Transmitted by Relays" · by fiatjaf · WebSocket and JSON</em></p>
<p>The note is signed with <strong>your own signature</strong>, which cannot be forged, and copies are pinned to three notice boards. One board is taken down — the note hangs on the other two, and everyone who knows the signature will find it.</p>
<p>Nostr is the simplest of the four and the only one that is <strong>not a network</strong> at all. It rides on the ordinary internet, over ordinary WebSocket. All it invented is two rules. First: an identity is a secp256k1 key pair, not a row in someone's database. Second: a message (an "event") is JSON with <code>kind</code>, <code>content</code> and <code>tags</code> fields, signed with that key; its <code>id</code> is the SHA-256 of the event itself.</p>
<p>Relays are deliberately dumb servers: accept, store, return by filter. They <strong>do not talk to each other</strong> — the client itself spreads copies across several relays. That is where all the magic comes from: if a relay bans you, you take another, and your followers do not go anywhere, because they follow a <strong>key</strong>, not an account on a server.</p>
<p>There is a price for this too. A relay sees your IP and all your events — anonymity here is zero (unless over Tor). Spam is held back only by relay policy, paid relays and a web of trust. And losing the private <code>nsec</code> key is irreversible: there is nobody to "restore access".</p>
<figure class="ms-fig ms-net motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 760 280" role="img" aria-label="Animation: an event is signed with a key, flies out to three relays, one bans it, the reader still gets the event"><text class="d-title" x="0" y="14">the client spreads the copies itself</text><rect x="40" y="66" width="118" height="42" rx="9" stroke-opacity=".55" style="fill:var(--k-2a1020);stroke:var(--k-f6669a)"></rect><text class="d-lbl d-lbl--ink" x="54" y="84" style="font-size:11px">kind: 1</text><text class="d-lbl" x="54" y="99" style="font-size:11px">content: "gm"</text><g class="nsr-sign" transform="translate(150 86) rotate(-16)"><circle r="17" fill="none" stroke-width="2.5" style="stroke:var(--k-f6669a)"></circle><text x="0" y="4" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-f6669a);font-weight:700">sig</text></g><g class="d-link"><path d="M106 140 L320 66 M106 140 L320 140 M106 140 L320 214 M432 66 L674 140 M432 214 L674 140"></path></g><path class="d-link" d="M432 140 L674 140" stroke-dasharray="4 5"></path><circle class="d-node" cx="80" cy="140" r="26" stroke-width="2.4" style="stroke:var(--k-f6669a)"></circle><text class="d-lbl d-lbl--ink" x="80" y="145" text-anchor="middle" style="font-size:12px;font-weight:700">YOU</text><text class="d-lbl" x="80" y="182" text-anchor="middle">your key</text><text class="d-lbl" x="80" y="195" text-anchor="middle">nsec1…</text><g stroke-width="1.8" style="stroke:var(--k-f6669a)"><rect class="d-node" x="320" y="44" width="112" height="44" rx="9"></rect><rect class="d-node" x="320" y="118" width="112" height="44" rx="9"></rect><rect class="d-node" x="320" y="192" width="112" height="44" rx="9"></rect></g><g class="d-lbl d-lbl--ink" text-anchor="middle" style="font-size:10.5px"><text x="376" y="63">relay.damus.io</text><text x="376" y="137">nos.lol</text><text x="376" y="211">relay.snort.social</text></g><g class="d-lbl" text-anchor="middle" style="font-size:9.5px"><text x="376" y="77">stores</text><text x="376" y="151">stores</text><text x="376" y="225">stores</text></g><g class="nsr-dead"><rect x="320" y="118" width="112" height="44" rx="9" fill-opacity=".92" stroke-width="1.8" style="fill:var(--k-2b0d0d);stroke:var(--k-e0544a)"></rect><text x="376" y="139" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-ff8a80);font-weight:700">✕ banned</text><text x="376" y="153" text-anchor="middle" style="font-family:var(--mono);font-size:9.5px;fill:var(--k-ff8a80)" opacity=".8">or just went down</text></g><circle class="d-node" cx="700" cy="140" r="26" stroke-width="2.4" style="stroke:var(--k-f6669a)"></circle><text class="d-lbl d-lbl--ink" x="700" y="145" text-anchor="middle" style="font-size:10.5px">READER</text><g class="nsr-got"><rect x="618" y="60" width="130" height="34" rx="8" stroke-opacity=".6" style="fill:var(--k-0f2f22);stroke:var(--k-35c9a2)"></rect><text x="683" y="81" text-anchor="middle" style="font-family:var(--mono);font-size:10.5px;fill:var(--k-35c9a2)">event delivered ✓</text></g><circle class="nsr-up1" r="6" style="fill:var(--k-f6669a)"></circle><circle class="nsr-up2" r="6" style="fill:var(--k-f6669a)"></circle><circle class="nsr-up3" r="6" style="fill:var(--k-f6669a)"></circle><circle class="nsr-dn1" r="6" style="fill:var(--k-f6669a)"></circle><circle class="nsr-dn3" r="6" style="fill:var(--k-f6669a)"></circle><text class="d-note" x="0" y="242">relays know nothing about each other —</text><text class="d-note" x="0" y="260">there is no line between them</text><text class="d-note" x="470" y="242">the subscription is to the key</text><text class="d-lbl d-lbl--ink" x="470" y="262" style="font-size:12px">npub1qqs…7x2v</text></svg></div><figcaption><strong>The key point:</strong> <!-- -->there is not a single line between the relays — and that is not a simplification of the diagram, it is the protocol itself. That is why you cannot ban a person on Nostr: you can only ban their copy on your own server.</figcaption></figure>
<p><strong>What is inside</strong></p>
<ul>
<li class=""><strong>keys</strong> — secp256k1; the public one is <code>npub1…</code>, the private one <code>nsec1…</code> (bech32 encoding, NIP-19)</li>
<li class=""><strong>event</strong> — <code>{id, pubkey, created_at, kind, tags, content, sig}</code>; <code>id</code> is the SHA-256 of the canonical form, the signature is Schnorr (BIP-340)</li>
<li class=""><strong>kinds</strong> — <code>0</code> profile, <code>1</code> note, <code>3</code> follows, <code>7</code> reaction, <code>30023</code> long-form</li>
<li class=""><strong>relay</strong> — a WebSocket server with three main commands: <code>EVENT</code>, <code>REQ</code>, <code>CLOSE</code></li>
<li class=""><strong>private</strong> — old DMs (kind 4) leak metadata; modern ones use NIP-17 on top of NIP-44 encryption</li>
<li class=""><strong>money</strong> — zaps via Lightning (NIP-57): tips right in the feed</li>
</ul>
<p><strong>Pros and cons</strong></p>
<ul>
<li class="">✓ Identity does not belong to a platform: followers are tied to the key</li>
<li class="">✓ A relay is up in five minutes, there are dozens of clients</li>
<li class="">✓ Fast and familiar — it is just WebSocket over the ordinary internet</li>
<li class="">✕ Zero anonymity: a relay sees your IP and everything you write</li>
<li class="">✕ Lose your <code>nsec</code> — lose your identity for good, there is nobody to restore it</li>
<li class="">✕ Spam is held back only by relay policy, paid relays and a web of trust</li>
<li class="">✕ When the internet dies, Nostr dies too: it has no transport of its own</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-same-questions--four-different-answers">The same questions — four different answers<a href="https://cyberdev.space/en/blog/four-internets/#the-same-questions--four-different-answers" class="hash-link" aria-label="Direct link to The same questions — four different answers" title="Direct link to The same questions — four different answers" translate="no">​</a></h2>
<table><thead><tr><th>question</th><th>Reticulum</th><th>I2P</th><th>Yggdrasil</th><th>Nostr</th></tr></thead><tbody><tr><td><strong>What it is</strong>, in essence</td><td>A complete network stack from scratch</td><td>An anonymous overlay on top of the internet</td><td>An overlay IPv6 network</td><td>A format for signed messages</td></tr><tr><td><strong>Address</strong>: where it comes from</td><td>16 bytes of hash of a key</td><td><code>…q3a.b32.i2p</code> — a hash of the Destination</td><td>IPv6 from <code>0200::/7</code>, computed from a key</td><td><code>npub1…</code> — the public key</td></tr><tr><td><strong>Transport</strong>: what it rides on</td><td>LoRa, radio, wire, TCP, UDP</td><td>NTCP2 / SSU2 over the internet</td><td>TCP, TLS, QUIC, WS and multicast on the local network</td><td>WebSocket over ordinary HTTPS</td></tr><tr><td><strong>Without the internet</strong>: the "everything is down" scenario</td><td><strong>yes</strong> — radio is self-sufficient</td><td>no</td><td>only on the local network</td><td>no</td></tr><tr><td><strong>Hides who talks to whom</strong>: metadata</td><td><strong>partly</strong> — transit sees hashes</td><td><strong>yes</strong>, that is the whole point</td><td><strong>no</strong> — neighbours see IP and key</td><td><strong>no</strong> — the relay sees everything</td></tr><tr><td><strong>Encryption</strong>: is there an off switch</td><td>Always, no off switch</td><td>In layers, on every hop</td><td>End-to-end between endpoint keys</td><td>Signature always; encryption only in private messages</td></tr><tr><td><strong>Offline delivery</strong>: recipient not on the network</td><td><strong>yes</strong> — a propagation node holds it</td><td>no</td><td>no</td><td><strong>yes</strong> — the relay holds the event</td></tr><tr><td><strong>Ordinary programs</strong>: ssh, http, rsync</td><td><strong>no</strong> — must be written for RNS</td><td>via tunnels and proxies</td><td><strong>yes</strong> — it is just IPv6</td><td><strong>no</strong> — its own clients</td></tr><tr><td><strong>Speed</strong>: what to expect</td><td>Kilobytes. Text and small files</td><td>Hundreds of ms latency, modest bandwidth</td><td>Almost like the ordinary internet</td><td>Like ordinary WebSocket</td></tr><tr><td><strong>The main headache</strong>: what you pay</td><td>Needs hardware, few applications</td><td>Slow, the router warms up for 10–20 min</td><td>The participant is visible; speed depends on others' nodes</td><td>Lose the key — lose the identity</td></tr><tr><td><strong>When it is the choice</strong></td><td>Mountains, villages, emergencies, amateur radio</td><td>Nobody must know who talked to whom</td><td>Stitch your own and friends' devices into one network</td><td>Take your audience back from the platforms</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="nobody-wins-on-all-three-axes--and-that-is-no-accident">Nobody wins on all three axes — and that is no accident<a href="https://cyberdev.space/en/blog/four-internets/#nobody-wins-on-all-three-axes--and-that-is-no-accident" class="hash-link" aria-label="Direct link to Nobody wins on all three axes — and that is no accident" title="Direct link to Nobody wins on all three axes — and that is no accident" translate="no">​</a></h2>
<p>Anonymity is bought with latency, autonomy with speed, convenience with dependence on someone else's infrastructure. Each of the four consciously chose how to pay.</p>
<figure class="ms-fig ms-net motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 760 300" role="img" aria-label="Three scales: independence from infrastructure, hiding metadata, speed and convenience" style="width:100%;height:auto"><g style="font-family:var(--mono);font-size:10.5px;fill:var(--muted-2);letter-spacing:.6px"><text x="190" y="22">LITTLE</text><text x="730" y="22" text-anchor="end">A LOT</text></g><g stroke="var(--border)" stroke-width="1"><line x1="190" y1="28" x2="730" y2="28"></line></g><g style="font-size:13px;fill:var(--text);font-weight:700"><text x="0" y="74">Survives without the internet</text></g><text x="0" y="92" style="font-size:11.5px;fill:var(--muted)">its own radio, its own addresses</text><line x1="190" y1="78" x2="730" y2="78" stroke="var(--border)" stroke-width="2"></line><g style="font-family:var(--mono);font-size:11px;font-weight:700"><circle class="tr-dot" style="--dx:-64.8px;--d:.05s" cx="254.8" cy="78" r="9" fill="var(--nsr)"></circle><text x="254.8" y="58" text-anchor="middle" fill="var(--nsr)">Nostr</text><circle class="tr-dot" style="--dx:-162px;--d:.15s" cx="352" cy="78" r="9" fill="var(--i2p)"></circle><text x="352" y="58" text-anchor="middle" fill="var(--i2p)">I2P</text><circle class="tr-dot" style="--dx:-280.8px;--d:.25s" cx="470.8" cy="78" r="9" fill="var(--ygg)"></circle><text x="470.8" y="58" text-anchor="middle" fill="var(--ygg)">Yggdrasil</text><circle class="tr-dot" style="--dx:-540px;--d:.35s" cx="730" cy="78" r="11" fill="var(--rns)"></circle><text x="730" y="58" text-anchor="middle" fill="var(--rns)">Reticulum</text></g><g style="font-size:13px;fill:var(--text);font-weight:700"><text x="0" y="164">Hides who talks to whom</text></g><text x="0" y="182" style="font-size:11.5px;fill:var(--muted)">not the content, the metadata</text><line x1="190" y1="168" x2="730" y2="168" stroke="var(--border)" stroke-width="2"></line><g style="font-family:var(--mono);font-size:11px;font-weight:700"><circle class="tr-dot" style="--dx:-54px;--d:.1s" cx="244" cy="168" r="9" fill="var(--ygg)"></circle><text x="244" y="194" text-anchor="middle" fill="var(--ygg)">Yggdrasil</text><circle class="tr-dot" style="--dx:-97.2px;--d:.2s" cx="287.2" cy="168" r="9" fill="var(--nsr)"></circle><text x="287.2" y="148" text-anchor="middle" fill="var(--nsr)">Nostr</text><circle class="tr-dot" style="--dx:-259.2px;--d:.3s" cx="449.2" cy="168" r="9" fill="var(--rns)"></circle><text x="449.2" y="148" text-anchor="middle" fill="var(--rns)">Reticulum</text><circle class="tr-dot" style="--dx:-540px;--d:.4s" cx="730" cy="168" r="11" fill="var(--i2p)"></circle><text x="730" y="148" text-anchor="middle" fill="var(--i2p)">I2P</text></g><g style="font-size:13px;fill:var(--text);font-weight:700"><text x="0" y="254">Speed and convenience</text></g><text x="0" y="272" style="font-size:11.5px;fill:var(--muted)">whether familiar things just work</text><line x1="190" y1="258" x2="730" y2="258" stroke="var(--border)" stroke-width="2"></line><g style="font-family:var(--mono);font-size:11px;font-weight:700"><circle class="tr-dot" style="--dx:-75.6px;--d:.15s" cx="265.6" cy="258" r="9" fill="var(--rns)"></circle><text x="265.6" y="238" text-anchor="middle" fill="var(--rns)">Reticulum</text><circle class="tr-dot" style="--dx:-183.6px;--d:.25s" cx="373.6" cy="258" r="9" fill="var(--i2p)"></circle><text x="373.6" y="238" text-anchor="middle" fill="var(--i2p)">I2P</text><circle class="tr-dot" style="--dx:-464.4px;--d:.35s" cx="654.4" cy="258" r="9" fill="var(--ygg)"></circle><text x="654.4" y="238" text-anchor="middle" fill="var(--ygg)">Yggdrasil</text><circle class="tr-dot" style="--dx:-540px;--d:.45s" cx="730" cy="258" r="11" fill="var(--nsr)"></circle><text x="730" y="238" text-anchor="middle" fill="var(--nsr)">Nostr</text></g></svg></div></figure>
<p>The ratings are qualitative, not measured: they show <strong>the direction of the trade-off</strong>, not a benchmark. The most interesting thing here is that no dot sits on the right of all three scales.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="they-stack-inside-one-another">They stack inside one another<a href="https://cyberdev.space/en/blog/four-internets/#they-stack-inside-one-another" class="hash-link" aria-label="Direct link to They stack inside one another" title="Direct link to They stack inside one another" translate="no">​</a></h2>
<p>Since each occupies its own floor, there is no need to choose "either-or". Here are three combinations that really work, and one that will not.</p>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__title">Reticulum → over I2P</p><div class="ms-card__body"><p>Among Reticulum's carriers there is an I2P interface. So the radio stack can be run through an anonymous tunnel while the internet is still there: you get both independent addressing and hidden metadata. And when the internet goes, the same stack switches to radio — and the address stays the same.</p></div></div><div class="ms-card frame"><p class="ms-card__title">A Nostr relay → inside Yggdrasil or I2P</p><div class="ms-card__body"><p>A relay needs no public IP, domain or certificate: it lives on a Yggdrasil address or as a <code>.b32.i2p</code>. There is simply nothing to block — no IP and no DNS record to put on a list.</p></div></div><div class="ms-card frame"><p class="ms-card__title">Yggdrasil → over anything</p><div class="ms-card__body"><p>Yggdrasil does not care what wire it took to reach a neighbour: TCP, TLS, QUIC, WebSocket — and therefore also through Tor or I2P. The network only sees "there is a link to a neighbour", and what lies under it is none of its business.</p></div></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>And this will not work</div><div class="admonitionContent_BuS1"><p>IPv6 (that is, Yggdrasil) over Reticulum. The IPv6 standard requires an MTU of at least 1280 bytes, while Reticulum's is 500. It is not a matter of settings but of different worlds: one counts bytes, the other assumes frames are large.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="each-can-be-tried-in-an-evening">Each can be tried in an evening<a href="https://cyberdev.space/en/blog/four-internets/#each-can-be-tried-in-an-evening" class="hash-link" aria-label="Direct link to Each can be tried in an evening" title="Direct link to Each can be tried in an evening" translate="no">​</a></h2>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">Reticulum</p><div class="ms-card__body"><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># the stack itself</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">pip install rns</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">rnsd</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># messenger: Sideband</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># (Android / iOS / desktop)</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># radio needs an RNode</span><br></div></code></pre></div></div><p>A detailed walkthrough is in <a class="" href="https://cyberdev.space/en/blog/reticulum-up-close/">Reticulum up close</a>.</p></div></div><div class="ms-card frame"><p class="ms-card__title">I2P</p><div class="ms-card__body"><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">apt install i2pd</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># i2pd console: http://127.0.0.1:7070</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># Java router: http://127.0.0.1:7657</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># give it 15 minutes to warm up</span><br></div></code></pre></div></div></div></div><div class="ms-card frame"><p class="ms-card__title">Yggdrasil</p><div class="ms-card__body"><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># package from the project's repository;</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># the config appears by itself: /etc/yggdrasil.conf</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">apt install yggdrasil</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># add a public peer to Peers, then:</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">systemctl restart yggdrasil</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">yggdrasilctl getSelf   # your own IPv6 is here</span><br></div></code></pre></div></div></div></div><div class="ms-card frame"><p class="ms-card__title">Nostr</p><div class="ms-card__body"><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># nothing to install:</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># Damus — iOS</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># Amethyst — Android</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># snort.social — web</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># nsec1… — straight into a password manager</span><br></div></code></pre></div></div></div></div></div>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>The "up close" series</div><div class="admonitionContent_BuS1"><ul>
<li class=""><a class="" href="https://cyberdev.space/en/blog/lora-up-close/">LoRa up close</a> — the physical layer: chirps, spreading factor, time on air, range</li>
<li class=""><a class="" href="https://cyberdev.space/en/blog/meshtastic-up-close/">Meshtastic up close</a> — a ready-made chat on "raw" LoRa: managed flooding, channels, node roles</li>
<li class=""><a class="" href="https://cyberdev.space/en/blog/reticulum-up-close/">Reticulum up close</a> — a network stack where the address is a key and LoRa is just one of the carriers</li>
</ul></div></div>]]></content:encoded>
            <category>mesh networks</category>
            <category>Reticulum</category>
            <category>privacy</category>
            <category>decentralisation</category>
        </item>
        <item>
            <title><![CDATA[Reticulum up close: a network stack where the address is a key]]></title>
            <link>https://cyberdev.space/en/blog/reticulum-up-close/</link>
            <guid>https://cyberdev.space/en/blog/reticulum-up-close/</guid>
            <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How Reticulum works: an address from a key fingerprint, a 500-byte packet, announces and transport nodes, Links with ephemeral keys, interfaces from LoRa to I2P, LXMF and a first run in one evening.]]></description>
            <content:encoded><![CDATA[<p>Reticulum is not a messenger, not a VPN and not a "network for shady business". It is a <strong>complete network stack</strong> in which the address is a key fingerprint, encryption has no off switch, and the carrier can be a LoRa radio, a piece of wire or ordinary TCP. This note takes it apart layer by layer: from the bits in the packet header to the board on the desk. The radio physics underneath is in the <a class="" href="https://cyberdev.space/en/blog/lora-up-close/">LoRa deep dive</a>.</p>
<div class="ms-stats"><div class="ms-stat"><b>500 bytes</b><span>The MTU — the packet size ceiling. Chosen to fit into a LoRa frame</span></div><div class="ms-stat"><b>16 bytes</b><span>The whole address: 128 bits of truncated SHA-256 — and no registry</span></div><div class="ms-stat"><b>19 bytes</b><span>The whole header of an ordinary packet, address included</span></div><div class="ms-stat"><b>128</b><span>The maximum number of hops a packet can travel through transport nodes</span></div></div>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-problem-it-solves">What problem it solves<a href="https://cyberdev.space/en/blog/reticulum-up-close/#what-problem-it-solves" class="hash-link" aria-label="Direct link to What problem it solves" title="Direct link to What problem it solves" translate="no">​</a></h2>
<p>To understand Reticulum, first look at the <strong>assumptions</strong> the ordinary internet rests on. It is not universal — it is optimised for a particular world. Reticulum is built for the opposite one.</p>
<p>The name is Latin: <em>reticulum</em>, "little net". Its author, Mark Qvist, started from a simple question: what must a network have if you take away providers, address registries, certificate authorities and the assumption that the channel is always wide? It turned out almost everything had to be rewritten — from addressing to the packet format. The author dedicated the protocol itself to the public domain back in 2016; the reference Python implementation is distributed under its own Reticulum License.</p>
<table><thead><tr><th>the ordinary internet assumes</th><th>Reticulum assumes</th><th>what follows</th></tr></thead><tbody><tr><td>The channel is fast and cheap: megabits, millisecond latency</td><td>The channel may be <strong>250 bit/s</strong> with latency in seconds</td><td>A packet is 500 bytes. Every extra header byte costs real time on air</td></tr><tr><td>Addresses are handed out by a hierarchy: IANA → regional registry → provider → DHCP</td><td>Addresses are <strong>computed by the nodes themselves</strong> from their own key</td><td>No registration, no lease, and no way to take an address away</td></tr><tr><td>DNS gives names, certificate authorities give trust</td><td>No DNS, no CA. The address <em>is</em> the credential</td><td>Addresses are exchanged outside the network: a QR code, a slip of paper, an announcement on air</td></tr><tr><td>Nodes are always online, connections are the norm</td><td>A node may come on <strong>once a day</strong></td><td>Store-and-forward is needed, not just live sessions</td></tr><tr><td>The carrier is Ethernet or Wi-Fi, frames are large</td><td>The carrier is anything that can move a byte: radio, wire, a pipe, TCP</td><td>The stack deliberately knows nothing about the physics beneath it</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>The main misunderstanding</div><div class="admonitionContent_BuS1"><p>Reticulum is <strong>not a replacement for the everyday internet</strong> and does not compete with it on speed. It competes with the situation where there is no network at all — or there is one, but it belongs to someone else, is slow and is controlled. Those are different contests.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="three-ideas-that-hold-everything-up">Three ideas that hold everything up<a href="https://cyberdev.space/en/blog/reticulum-up-close/#three-ideas-that-hold-everything-up" class="hash-link" aria-label="Direct link to Three ideas that hold everything up" title="Direct link to Three ideas that hold everything up" translate="no">​</a></h2>
<p>There will be plenty of detail below, but all of it grows out of exactly three decisions.</p>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 96" aria-hidden="true"><rect x="4" y="30" width="86" height="36" rx="8" class="p-node" style="stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="47" y="46" text-anchor="middle" style="font-size:10px">key</text><text class="p-lbl" x="47" y="59" text-anchor="middle" style="font-size:9px">64 bytes</text><path d="M96 48 h34" stroke-width="1.6" class="flow" style="stroke:var(--k-e8892f)"></path><rect x="134" y="30" width="60" height="36" rx="8" style="fill:var(--k-2e231b);stroke:var(--k-3b2c21)"></rect><text class="p-lbl" x="164" y="52" text-anchor="middle" style="font-size:9.5px">SHA-256</text><path d="M200 48 h30" stroke-width="1.6" class="flow" style="stroke:var(--k-e8892f)"></path><rect x="234" y="30" width="62" height="36" rx="8" style="fill:var(--k-3a2513);stroke:var(--k-e8892f)"></rect><text x="265" y="46" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-e8892f);font-weight:700">address</text><text class="p-lbl" x="265" y="59" text-anchor="middle" style="font-size:9px">16 bytes</text></svg></figure><p class="ms-card__label">idea one</p><p class="ms-card__title">The address is a key fingerprint</p><div class="ms-card__body"><p>Not "I was given an address" but "I computed the hash of my public key, and that is my address". It follows at once that forging an address is the same as forging a key, and nobody can take it away, because nobody gave it in the first place.</p></div></div><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 96" aria-hidden="true"><g class="wv" style="--d:0s"><circle cx="150" cy="48" r="40" fill="none" stroke-width="1.2" style="stroke:var(--k-e8892f)"></circle></g><g class="wv" style="--d:1.3s"><circle cx="150" cy="48" r="40" fill="none" stroke-width="1.2" style="stroke:var(--k-e8892f)"></circle></g><rect x="120" y="28" width="60" height="42" rx="9" stroke-width="1.6" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></rect><path d="M143 46 v-6 a7 7 0 0 1 14 0 v6" fill="none" stroke-width="2" style="stroke:var(--k-e8892f)"></path><rect x="140" y="45" width="20" height="15" rx="3" style="fill:var(--k-e8892f)"></rect><text class="p-lbl" x="150" y="86" text-anchor="middle" style="font-size:9.5px">no off switch</text></svg></figure><p class="ms-card__label">idea two</p><p class="ms-card__title">Encryption is not optional</p><div class="ms-card__body"><p>The stack has no "unencrypted" mode for an ordinary destination. No need to enable TLS, buy a certificate or agree on keys: whoever knows the address already knows the public key, because the address is made from it.</p></div></div><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 96" aria-hidden="true"><rect x="112" y="34" width="76" height="30" rx="8" style="fill:var(--k-3a2513);stroke:var(--k-e8892f)"></rect><text x="150" y="53" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-e8892f)">RNS</text><g stroke-width="1.5" class="flow" fill="none" style="stroke:var(--k-e8892f)"><path d="M112 49 C 80 49, 70 22, 40 22"></path><path d="M112 49 C 80 49, 70 49, 40 49"></path><path d="M112 49 C 80 49, 70 76, 40 76"></path></g><g class="p-lbl" text-anchor="end" style="font-size:9.5px"><text x="36" y="25">radio</text><text x="36" y="52">cable</text><text x="36" y="79">TCP</text></g><g stroke-width="1.5" fill="none" style="stroke:var(--k-3b2c21)"><path d="M188 49 C 220 49, 230 22, 260 22"></path><path d="M188 49 C 220 49, 230 76, 260 76"></path></g><g class="p-lbl" style="font-size:9.5px"><text x="264" y="25">LoRa</text><text x="264" y="79">I2P</text></g></svg></figure><p class="ms-card__label">idea three</p><p class="ms-card__title">The stack does not care what it rides on</p><div class="ms-card__body"><p>It needs one thing from the carrier: "take this block of bytes and try to deliver it". Radio, a serial cable, a TCP connection, a sound card — all the same. So one network can ride partly over LoRa and partly over the internet.</p></div></div></div>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>A consequence that is easy to miss</div><div class="admonitionContent_BuS1"><p>Since the address already contains the key and encryption is built in, <strong>Reticulum needs no handshake just to send something</strong>. A packet can be encrypted for a stranger and thrown into the air without asking anything or waiting for a reply. This mode will be called "opportunistic" below.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="identity-and-address-where-a4f1-comes-from">Identity and address: where <code>&lt;a4f1…&gt;</code> comes from<a href="https://cyberdev.space/en/blog/reticulum-up-close/#identity-and-address-where-a4f1-comes-from" class="hash-link" aria-label="Direct link to identity-and-address-where-a4f1-comes-from" title="Direct link to identity-and-address-where-a4f1-comes-from" translate="no">​</a></h2>
<p>The most important five minutes of the whole text: once it is clear how an address comes out of a key, the rest is just consequences.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="an-identity-is-two-key-pairs">An identity is two key pairs<a href="https://cyberdev.space/en/blog/reticulum-up-close/#an-identity-is-two-key-pairs" class="hash-link" aria-label="Direct link to An identity is two key pairs" title="Direct link to An identity is two key pairs" translate="no">​</a></h3>
<p>On the first run of any Reticulum application an <strong>Identity</strong> is created — not a login and not an account, just two generated sets of keys:</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__label">X25519</p><p class="ms-card__title">For key exchange</p><div class="ms-card__body"><p>Lets two parties compute a shared secret without ever sending it over the air. The key that encrypts the content is derived from it.</p></div></div><div class="ms-card frame"><p class="ms-card__label">Ed25519</p><p class="ms-card__title">For signatures</p><div class="ms-card__body"><p>Lets you prove a packet really comes from this sender. A signature is 64 bytes; it cannot be forged without the private key.</p></div></div></div>
<p>The public halves of both keys together are exactly <strong>64 bytes</strong>. That is all the network needs to know about a participant.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="then--two-rounds-of-hashing">Then — two rounds of hashing<a href="https://cyberdev.space/en/blog/reticulum-up-close/#then--two-rounds-of-hashing" class="hash-link" aria-label="Direct link to Then — two rounds of hashing" title="Direct link to Then — two rounds of hashing" translate="no">​</a></h3>
<figure class="ms-fig ms-rns motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 350" role="img" aria-label="Diagram: two public keys give the identity hash, and that plus the application name gives the destination address"><text class="p-title" x="0" y="13">step 1 · identity hash</text><g class="idstage" style="--d:0s"><rect x="0" y="34" width="150" height="34" rx="8" class="p-node" style="stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="12" y="55" style="font-size:11px">Ed25519 pub · 32 B</text><rect x="0" y="74" width="150" height="34" rx="8" class="p-node" style="stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="12" y="95" style="font-size:11px">X25519 pub · 32 B</text></g><path class="idarrow" d="M158 71 h46" stroke-width="2" fill="none" marker-end="" style="--d:1.1s;stroke:var(--k-e8892f)"></path><path d="M196 66 l8 5 l-8 5" fill="none" stroke-width="2" class="idstage" style="--d:1.1s;stroke:var(--k-e8892f)"></path><g class="idstage" style="--d:1.5s"><rect x="212" y="52" width="132" height="38" rx="8" style="fill:var(--k-2e231b);stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="278" y="70" text-anchor="middle" style="font-size:11px">64 bytes</text><text class="p-lbl" x="278" y="83" text-anchor="middle" style="font-size:9.5px">glued together</text></g><path class="idarrow" d="M352 71 h46" stroke-width="2" fill="none" style="--d:2.2s;stroke:var(--k-e8892f)"></path><path d="M390 66 l8 5 l-8 5" fill="none" stroke-width="2" class="idstage" style="--d:2.2s;stroke:var(--k-e8892f)"></path><g class="idstage" style="--d:2.6s"><rect x="406" y="52" width="104" height="38" rx="8" style="fill:var(--k-2e231b);stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="458" y="76" text-anchor="middle" style="font-size:12px">SHA-256</text></g><path class="idarrow" d="M518 71 h44" stroke-width="2" fill="none" style="--d:3.3s;stroke:var(--k-e8892f)"></path><path d="M554 66 l8 5 l-8 5" fill="none" stroke-width="2" class="idstage" style="--d:3.3s;stroke:var(--k-e8892f)"></path><g class="idstage" style="--d:3.7s"><text class="p-lbl p-ink" x="572" y="60" style="font-size:12.5px">a4f1c8e0 7b2d9431 5fa6c70e 88d29d2c</text><text class="p-lbl" x="572" y="80" style="font-size:12.5px" opacity=".45">1e77b0a5 c3924dd6 0ab5e718 6f40c99b</text><text class="p-lbl" x="572" y="100" style="font-size:9.5px">32 bytes out — but 16 are needed</text></g><g class="idcut"><line x1="566" y1="66" x2="566" y2="90" stroke-width="2" stroke-dasharray="3 3" style="stroke:var(--k-f0736a)"></line><line x1="962" y1="66" x2="566" y2="66" stroke-width="0" style="stroke:var(--k-f0736a)"></line><text x="572" y="120" style="font-family:var(--mono);font-size:10px;fill:var(--k-f0736a)">the rest is simply dropped — 128 bits is already 3.4 × 10³⁸ possibilities</text></g><text class="p-title" x="0" y="168">step 2 · destination address</text><g class="idstage" style="--d:5s"><rect x="0" y="190" width="186" height="38" rx="8" class="p-node" style="stroke:var(--k-3b2c21)"></rect><text class="p-lbl" x="93" y="206" text-anchor="middle" style="font-size:9.5px">application name</text><text x="93" y="221" text-anchor="middle" style="font-family:var(--mono);font-size:12px;fill:var(--k-3fc295)">"lxmf.delivery"</text></g><path class="idarrow" d="M194 209 h40" stroke-width="2" fill="none" style="--d:5.6s;stroke:var(--k-e8892f)"></path><g class="idstage" style="--d:6s"><rect x="242" y="190" width="150" height="38" rx="8" style="fill:var(--k-2e231b);stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="317" y="206" text-anchor="middle" style="font-size:10.5px">SHA-256 → 10 bytes</text><text class="p-lbl" x="317" y="220" text-anchor="middle" style="font-size:9.5px">name hash</text></g><g class="idstage" style="--d:6s"><rect x="0" y="242" width="186" height="38" rx="8" style="fill:var(--k-3a2513);stroke:var(--k-e8892f)"></rect><text class="p-lbl" x="93" y="258" text-anchor="middle" style="font-size:9.5px">identity hash</text><text x="93" y="273" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-e8892f)">16 bytes from step 1</text></g><path class="idarrow" d="M194 261 h40" stroke-width="2" fill="none" style="--d:6.6s;stroke:var(--k-e8892f)"></path><g class="idstage" style="--d:7s"><circle cx="416" cy="235" r="17" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></circle><text x="416" y="240" text-anchor="middle" style="font-family:var(--mono);font-size:13px;fill:var(--k-e8892f)">+</text><text class="p-lbl" x="416" y="268" text-anchor="middle" style="font-size:9px">concatenate</text></g><path class="idarrow" d="M440 235 h44" stroke-width="2" fill="none" style="--d:7.4s;stroke:var(--k-e8892f)"></path><g class="idstage" style="--d:7.8s"><rect x="492" y="216" width="104" height="38" rx="8" style="fill:var(--k-2e231b);stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="544" y="240" text-anchor="middle" style="font-size:12px">SHA-256</text></g><path class="idarrow" d="M604 235 h44" stroke-width="2" fill="none" style="--d:8.4s;stroke:var(--k-e8892f)"></path><g class="idstage" style="--d:8.8s"><rect x="656" y="208" width="330" height="54" rx="10" stroke-width="2" style="fill:var(--k-3a2513);stroke:var(--k-e8892f)"></rect><text class="p-lbl" x="821" y="226" text-anchor="middle" style="font-size:9.5px">destination address · 16 bytes</text><text x="821" y="248" text-anchor="middle" style="font-family:var(--mono);font-size:15px;fill:var(--k-e8892f);font-weight:700">&lt;a4f1c8e0…88d29d2c&gt;</text></g><text class="p-note" x="0" y="310">One identity — many addresses: for the messenger, for files, for the network node. From the messenger address</text><text class="p-note" x="0" y="328">you cannot guess the file-sharing address of the same person, even though the key underneath is the same.</text></svg></div><figcaption><strong>Why it is done this way:</strong> <!-- -->the address encodes both<!-- --> <em>who</em> <!-- -->(the key) and<!-- --> <em>what for</em> <!-- -->(the application name). So a node receiving a packet knows at once which application to hand it to — without ports and without a separate header field. Reticulum simply has no need for ports.</figcaption></figure>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">Four destination types</p><div class="ms-card__body"><table><thead><tr><th>type</th><th>what it means</th></tr></thead><tbody><tr><td>SINGLE</td><td>Addressed to one identity, encrypted for its public key — only it can read it. This type is used almost everywhere</td></tr><tr><td>GROUP</td><td>A shared symmetric key handed out to members in advance. Whoever has the key reads everything</td></tr><tr><td>PLAIN</td><td>No encryption at all. For service things where there is nothing to hide — a beacon, a public relay</td></tr><tr><td>LINK</td><td>The address of a live session — see the Link section below. Exists only while the session is alive</td></tr></tbody></table></div></div><div class="ms-card frame"><p class="ms-card__title">Numbers worth remembering</p><div class="ms-card__body"><ul>
<li class=""><strong>keys</strong> — 32 + 32 = 64 bytes of public part</li>
<li class=""><strong>hash</strong> — SHA-256 truncated to 128 bits = 16 bytes</li>
<li class=""><strong>name</strong> — hash of the application name, 10 bytes</li>
<li class=""><strong>signature</strong> — 64 bytes (Ed25519)</li>
<li class=""><strong>address</strong> — 16 bytes = 32 hex characters</li>
</ul><p><strong>About collisions.</strong> 128 bits is about 3.4 × 10³⁸ possible addresses. They do not coincide by chance, and finding one on purpose is serious work in its own right.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="packet-anatomy-all-500-bytes">Packet anatomy: all 500 bytes<a href="https://cyberdev.space/en/blog/reticulum-up-close/#packet-anatomy-all-500-bytes" class="hash-link" aria-label="Direct link to Packet anatomy: all 500 bytes" title="Direct link to Packet anatomy: all 500 bytes" translate="no">​</a></h2>
<p>The packet shows the whole philosophy. When the channel gives 250 bit/s, every header byte is real milliseconds on air and real milliamps from the battery. So the header is indecently ascetic: <strong>two bytes of control fields</strong> — and straight to the address.</p>
<figure class="ms-fig ms-rns ms-packet"><div class="ms-tabs" role="group" aria-label="Packet mode"><button type="button" aria-pressed="true">ordinary packet</button><button type="button" aria-pressed="false">same one, in transport</button><button type="button" aria-pressed="false">announce</button></div><div class="ms-bytes" aria-live="polite"><div class="ms-bseg" style="flex-grow:1"><b>1</b><small>flags</small></div><div class="ms-bseg" style="flex-grow:1"><b>1</b><small>hops</small></div><div class="ms-bseg" style="flex-grow:16"><b>16</b><small>address</small></div><div class="ms-bseg" style="flex-grow:1"><b>1</b><small>context</small></div><div class="ms-bseg ms-bseg--data" style="flex-grow:481"><b>481</b><small>payload</small></div></div><div class="ms-bruler"><span>0</span><span>19-byte header — everything else is data</span><span>500 bytes</span></div><figcaption><strong>Three modes:</strong> <!-- -->an ordinary packet has one address. As soon as it has to be carried<!-- --> <em>through</em> <!-- -->other nodes, a second address appears — "who to pass it to next" — and there are 16 bytes less for data. In an announce the keys and signature eat the payload entirely — but it is the one packet whose job is to tell the network the whole truth about the node.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-inside-the-first-byte">What is inside the first byte<a href="https://cyberdev.space/en/blog/reticulum-up-close/#what-is-inside-the-first-byte" class="hash-link" aria-label="Direct link to What is inside the first byte" title="Direct link to What is inside the first byte" translate="no">​</a></h3>
<p>Eight bits holding everything the stack must know about a packet before it even starts parsing it:</p>
<figure class="ms-fig ms-rns"><div class="ms-bits"><div class="ms-bit" style="flex-grow:1"><b>IFAC</b>whether it is signed with an interface access code</div><div class="ms-bit" style="flex-grow:1"><b>HT</b>one address or two</div><div class="ms-bit" style="flex-grow:1"><b>CF</b>context flag</div><div class="ms-bit" style="flex-grow:1"><b>PT</b>broadcast or transport</div><div class="ms-bit" style="flex-grow:2"><b>DT</b>destination type: SINGLE / GROUP / PLAIN / LINK</div><div class="ms-bit" style="flex-grow:2"><b>PKT</b>packet type: DATA / ANNOUNCE / LINKREQUEST / PROOF</div></div><figcaption>The second byte is the<!-- --> <strong>hop counter</strong>. Each transport node increments it; when the counter hits the ceiling (128) the packet dies. It protects against endless loops — as simple as in IP, except here the counter goes up rather than down.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="four-packet-types--and-that-is-the-whole-protocol">Four packet types — and that is the whole protocol<a href="https://cyberdev.space/en/blog/reticulum-up-close/#four-packet-types--and-that-is-the-whole-protocol" class="hash-link" aria-label="Direct link to Four packet types — and that is the whole protocol" title="Direct link to Four packet types — and that is the whole protocol" translate="no">​</a></h3>
<table><thead><tr><th>type</th><th>code</th><th>what for</th></tr></thead><tbody><tr><td>DATA</td><td>0x00</td><td>The data itself. Everything that is not a control packet is DATA</td></tr><tr><td>ANNOUNCE</td><td>0x01</td><td>"I exist, here is my key". The only way to get into other nodes' path tables</td></tr><tr><td>LINKREQUEST</td><td>0x02</td><td>A request for a session with ephemeral keys</td></tr><tr><td>PROOF</td><td>0x03</td><td>Cryptographic proof: "I received this". A delivery confirmation that cannot be forged</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>A sense of scale</div><div class="admonitionContent_BuS1"><p>In TCP/IP the IPv4 header is 20 bytes, TCP another 20, and that is <em>before</em> any TLS. Here the overhead is 19 bytes for everything together, address and cryptographic context included. On a 250 bit/s channel the difference between 19 and 60 bytes is the difference between "arrived" and "did not make it".</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-a-node-is-found-announce">How a node is found: announce<a href="https://cyberdev.space/en/blog/reticulum-up-close/#how-a-node-is-found-announce" class="hash-link" aria-label="Direct link to How a node is found: announce" title="Direct link to How a node is found: announce" translate="no">​</a></h2>
<p>The address is computed — but the network knows nothing about it. There is no DNS, no registry, no server to "sign up" with. There is exactly one mechanism: the node shouts an <strong>announce</strong> into the air, and everyone who hears it remembers which way to go to reach it.</p>
<p>An announce carries: the destination address, <strong>64 bytes of public keys</strong>, the application name hash, a random hash (so two identical announces do not look the same), a <strong>signature</strong> — and optionally a small piece of application data, such as the name a messenger will show in its list.</p>
<figure class="ms-fig ms-rns motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 370" role="img" aria-label="Animation: an announce from a node spreads through the network, each node records the direction and increments the hop counter"><text class="p-title" x="0" y="13">an announce spreads through the network · each node records the direction</text><g class="p-link"><path d="M100 290 L270 215 M270 215 L430 300 M270 215 L420 120 M430 300 L630 200 M420 120 L630 200 M630 200 L820 300 M630 200 L880 110"></path></g><g fill="none" stroke-width="1.4" style="stroke:var(--k-e8892f)"><circle class="anring" cx="100" cy="290" r="10" style="--d:.2s"></circle><circle class="anring" cx="100" cy="290" r="10" style="--d:1.9s"></circle></g><circle cx="100" cy="290" r="26" class="p-node" stroke-width="2.5" style="stroke:var(--k-e8892f)"></circle><text class="p-lbl p-ink" x="100" y="295" text-anchor="middle" style="font-size:12px;font-weight:700">YOU</text><text class="p-lbl" x="100" y="332" text-anchor="middle">announce source</text><circle class="p-node nodelit" cx="270" cy="215" r="20" stroke-width="2" style="--d:1.9s;stroke:var(--k-3b2c21)"></circle><text class="p-lbl p-ink" x="270" y="220" text-anchor="middle">B</text><text class="appear p-lbl" x="270" y="180" text-anchor="middle" style="--d:1.9s;fill:var(--k-e8892f)">1 hop</text><circle class="p-node nodelit" cx="430" cy="300" r="20" stroke-width="2" style="--d:3.5s;stroke:var(--k-3b2c21)"></circle><text class="p-lbl p-ink" x="430" y="305" text-anchor="middle">C</text><text class="appear p-lbl" x="430" y="340" text-anchor="middle" style="--d:3.5s;fill:var(--k-e8892f)">2 hops</text><circle class="p-node nodelit" cx="420" cy="120" r="20" stroke-width="2" style="--d:3.5s;stroke:var(--k-3b2c21)"></circle><text class="p-lbl p-ink" x="420" y="125" text-anchor="middle">D</text><text class="appear p-lbl" x="420" y="86" text-anchor="middle" style="--d:3.5s;fill:var(--k-e8892f)">2 hops</text><circle class="p-node nodelit" cx="630" cy="200" r="20" stroke-width="2" style="--d:5.1s;stroke:var(--k-3b2c21)"></circle><text class="p-lbl p-ink" x="630" y="205" text-anchor="middle">E</text><text class="appear p-lbl" x="630" y="166" text-anchor="middle" style="--d:5.1s;fill:var(--k-e8892f)">3 hops</text><circle class="p-node nodelit" cx="820" cy="300" r="20" stroke-width="2" style="--d:6.7s;stroke:var(--k-3b2c21)"></circle><text class="p-lbl p-ink" x="820" y="305" text-anchor="middle">F</text><text class="appear p-lbl" x="820" y="340" text-anchor="middle" style="--d:6.7s;fill:var(--k-e8892f)">4 hops</text><circle class="p-node nodelit" cx="880" cy="110" r="20" stroke-width="2" style="--d:6.7s;stroke:var(--k-3b2c21)"></circle><text class="p-lbl p-ink" x="880" y="115" text-anchor="middle">G</text><text class="appear p-lbl" x="880" y="76" text-anchor="middle" style="--d:6.7s;fill:var(--k-e8892f)">4 hops</text><circle class="anp" r="8" style="--x0:100px;--y0:290px;--x1:270px;--y1:215px;--d:1s;fill:var(--k-e8892f)"></circle><circle class="anp" r="8" style="--x0:270px;--y0:215px;--x1:430px;--y1:300px;--d:2.6s;fill:var(--k-e8892f)"></circle><circle class="anp" r="8" style="--x0:270px;--y0:215px;--x1:420px;--y1:120px;--d:2.6s;fill:var(--k-e8892f)"></circle><circle class="anp" r="8" style="--x0:430px;--y0:300px;--x1:630px;--y1:200px;--d:4.2s;fill:var(--k-e8892f)"></circle><circle class="anp" r="8" style="--x0:420px;--y0:120px;--x1:630px;--y1:200px;--d:4.2s;fill:var(--k-e8892f)"></circle><circle class="anp" r="8" style="--x0:630px;--y0:200px;--x1:820px;--y1:300px;--d:5.8s;fill:var(--k-e8892f)"></circle><circle class="anp" r="8" style="--x0:630px;--y0:200px;--x1:880px;--y1:110px;--d:5.8s;fill:var(--k-e8892f)"></circle><text class="p-note" x="0" y="360">The announce reaches E by two paths — via C and via D. The node keeps the shorter one that arrived first and simply drops the duplicate.</text></svg></div><figcaption><strong>What a node actually remembers:</strong> <!-- -->not the whole route, only "who to pass it to next" and how many hops are left. Nowhere in the network is there a full map — each node knows only its own step. That is why the tables are small and the network needs no central coordination.</figcaption></figure>
<table><thead><tr><th>node</th><th>who it learned to reach</th><th>forward via</th><th>hops</th><th>when it learned</th></tr></thead><tbody><tr><td>B</td><td><code>a4f1c8e0…88d29d2c</code></td><td>the source (directly)</td><td>1</td><td>+1.9 s</td></tr><tr><td>C</td><td><code>a4f1c8e0…88d29d2c</code></td><td>B</td><td>2</td><td>+3.5 s</td></tr><tr><td>D</td><td><code>a4f1c8e0…88d29d2c</code></td><td>B</td><td>2</td><td>+3.5 s</td></tr><tr><td>E</td><td><code>a4f1c8e0…88d29d2c</code></td><td>C</td><td>3</td><td>+5.1 s</td></tr><tr><td>F</td><td><code>a4f1c8e0…88d29d2c</code></td><td>E</td><td>4</td><td>+6.7 s</td></tr><tr><td>G</td><td><code>a4f1c8e0…88d29d2c</code></td><td>E</td><td>4</td><td>+6.7 s</td></tr></tbody></table>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">And if there is no path yet?</p><div class="ms-card__body"><p>Then a <strong>path request</strong> for the wanted address goes into the network, and nodes that know it reply. It is the flip side of announce: announce says "I am here", a path request asks "where is this one?". That is why a messenger sometimes thinks for a few seconds before the first message to a new contact — it is looking for the way.</p></div></div><div class="ms-card frame"><p class="ms-card__title">Paths do not last for ever</p><div class="ms-card__body"><p>An entry has an expiry time. If a node has not been heard from for a long time, the path is forgotten, and next time the way has to be found again. So nodes that want to be found repeat their announce now and then, while those who do not want extra attention stay quiet and walk the network themselves.</p></div></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>This is where the main privacy trade-off hides</div><div class="admonitionContent_BuS1"><p>An announce is <strong>public by design</strong>, otherwise the node could not be found. So anyone within earshot sees that such an address exists and sees its public key. The content of messages stays closed, but the fact "this node is on the network" does not. Reticulum never promised anonymity.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="transport-who-actually-relays">Transport: who actually relays<a href="https://cyberdev.space/en/blog/reticulum-up-close/#transport-who-actually-relays" class="hash-link" aria-label="Direct link to Transport: who actually relays" title="Direct link to Transport: who actually relays" translate="no">​</a></h2>
<p>A detail almost everyone misses: <strong>not every node relays other people's traffic</strong>. By default a node serves only itself.</p>
<p>For a node to become a transport node, <code>enable_transport = Yes</code> must be set explicitly in its configuration. Such a node takes on the postman's job: it keeps path tables, moves packets from interface to interface and stitches a radio segment to an internet segment. Transport nodes are what turn a set of isolated islands into a network.</p>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">ordinary node</p><p class="ms-card__title">Only for itself</p><div class="ms-card__body"><p>Receives and sends its own packets. It sees other people's but does not carry them. This is the phone in your pocket.</p></div></div><div class="ms-card frame"><p class="ms-card__label">transport node</p><p class="ms-card__title">The network's postman</p><div class="ms-card__body"><p>Forwards other people's traffic, keeps paths, connects different carriers. Usually something running round the clock: a Raspberry Pi, a VPS, a box in the attic with an antenna.</p></div></div><div class="ms-card frame"><p class="ms-card__label">propagation node</p><p class="ms-card__title">Also holds the mail</p><div class="ms-card__body"><p>A transport node that has additionally agreed to store messages for those who are not on the network right now. More on it in the LXMF section.</p></div></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="interface-modes--a-tool-few-people-know-about">Interface modes — a tool few people know about<a href="https://cyberdev.space/en/blog/reticulum-up-close/#interface-modes--a-tool-few-people-know-about" class="hash-link" aria-label="Direct link to Interface modes — a tool few people know about" title="Direct link to Interface modes — a tool few people know about" translate="no">​</a></h3>
<p>Every interface can be given a mode, and that changes how announces spread through it and how paths are built. This is how a narrow radio link avoids being flooded with control traffic from a wide internet channel.</p>
<table><thead><tr><th>mode</th><th>behaviour</th><th>typical case</th></tr></thead><tbody><tr><td>full</td><td>Everything by default: announces go both ways, paths are built freely</td><td>A home network, an ordinary link</td></tr><tr><td>access point</td><td>An interface for "clients" that relay nothing themselves</td><td>An entry point for nearby phones</td></tr><tr><td>point-to-point</td><td>A dedicated link between exactly two nodes</td><td>A radio bridge between two hills</td></tr><tr><td>roaming</td><td>A link that comes and goes; the stack takes that into account</td><td>A node in a car, a phone on the move</td></tr><tr><td>boundary</td><td>A border between segments: not everything is let through</td><td>The junction of slow radio and fast internet</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>IFAC — a private network on shared air</div><div class="admonitionContent_BuS1"><p>An interface can be given an <strong>Interface Access Code</strong> — a shared secret. Then nodes without the code do not merely fail to join: they do not even recognise the traffic as Reticulum. That is how several independent networks that cannot see each other coexist on one frequency.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="link-a-session-with-keys-that-will-later-vanish">Link: a session with keys that will later vanish<a href="https://cyberdev.space/en/blog/reticulum-up-close/#link-a-session-with-keys-that-will-later-vanish" class="hash-link" aria-label="Direct link to Link: a session with keys that will later vanish" title="Direct link to Link: a session with keys that will later vanish" translate="no">​</a></h2>
<p>So far it has been about single packets: encrypt for someone's public key, throw it into the air, forget. That works, but it has a weak spot: if someone <strong>records all the air</strong> and one day obtains the recipient's private key, they can decrypt everything recorded retroactively. Link was invented against exactly that.</p>
<figure class="ms-fig ms-rns motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 380" role="img" aria-label="Sequence diagram: establishing a link by exchanging ephemeral keys"><text class="p-title" x="0" y="13">link establishment · sequence diagram</text><line x1="180" y1="46" x2="180" y2="352" stroke-width="1.5" stroke-dasharray="4 5" style="stroke:var(--k-3b2c21)"></line><line x1="820" y1="46" x2="820" y2="352" stroke-width="1.5" stroke-dasharray="4 5" style="stroke:var(--k-3b2c21)"></line><rect x="110" y="32" width="140" height="30" rx="8" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></rect><text class="p-lbl p-ink" x="180" y="52" text-anchor="middle" style="font-size:11.5px">YOU</text><rect x="750" y="32" width="140" height="30" rx="8" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></rect><text class="p-lbl p-ink" x="820" y="52" text-anchor="middle" style="font-size:11.5px">RECIPIENT</text><g stroke-width="1.6" style="stroke:var(--k-3b2c21)"><line x1="180" y1="110" x2="812" y2="110"></line><path d="M804 105 l8 5 l-8 5" fill="none"></path><line x1="820" y1="170" x2="188" y2="170"></line><path d="M196 165 l-8 5 l8 5" fill="none"></path><line x1="180" y1="272" x2="812" y2="272"></line><path d="M804 267 l8 5 l-8 5" fill="none"></path><line x1="820" y1="326" x2="188" y2="326"></line><path d="M196 321 l-8 5 l8 5" fill="none"></path></g><g class="p-lbl" style="font-size:11.5px"><text class="p-ink" x="500" y="102" text-anchor="middle">1 · LINKREQUEST — my one-time public keys</text><text class="p-ink" x="500" y="162" text-anchor="middle">2 · PROOF — their one-time keys and a signature</text><text class="p-ink" x="500" y="264" text-anchor="middle">4 · data encrypted with the session key</text><text class="p-ink" x="500" y="318" text-anchor="middle">5 · PROOF — "delivered", signed</text></g><circle class="lkmsg" cy="110" r="7" style="--x0:180px;--x1:812px;--d:1s;fill:var(--k-e8892f)"></circle><circle class="lkmsg" cy="170" r="7" style="--x0:820px;--x1:188px;--d:3s;fill:var(--k-5ec1e8)"></circle><circle class="lkmsg" cy="272" r="7" style="--x0:180px;--x1:812px;--d:6.6s;fill:var(--k-e8892f)"></circle><circle class="lkmsg" cy="326" r="7" style="--x0:820px;--x1:188px;--d:8.8s;fill:var(--k-3fc295)"></circle><g class="lkkey" style="--d:5s"><rect x="120" y="198" width="120" height="44" rx="9" style="fill:var(--k-12301f);stroke:var(--k-3fc295)"></rect><text x="180" y="216" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-3fc295)">ECDH → HKDF</text><text x="180" y="232" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-3fc295);font-weight:700">session key</text></g><g class="lkkey" style="--d:5s"><rect x="760" y="198" width="120" height="44" rx="9" style="fill:var(--k-12301f);stroke:var(--k-3fc295)"></rect><text x="820" y="216" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-3fc295)">ECDH → HKDF</text><text x="820" y="232" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-3fc295);font-weight:700">session key</text></g><text class="lkkey p-lbl" x="500" y="224" text-anchor="middle" style="--d:5s;font-size:11px">3 · the same key, computed on both sides — it never went over the air</text><text class="p-note" x="0" y="370">Ready in about one and a half round trips. On LoRa that is seconds, on TCP milliseconds.</text></svg></div><figcaption><strong>The gist:</strong> <!-- -->both sides generate<!-- --> <em>one-time</em> <!-- -->keys, exchange the public halves and independently compute the same shared secret. The secret itself never goes over the air. When the link closes the keys are destroyed — and anyone's recording of the air stays unreadable for good. That is what is called<!-- --> <strong>forward secrecy</strong>.</figcaption></figure>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">what else a link is for</p><p class="ms-card__title">Delivery confirmation</p><div class="ms-card__body"><p>A PROOF is not a "tick in a messenger" but cryptographic proof: only whoever really received the packet could have signed it. "Delivered" cannot be forged.</p></div></div><div class="ms-card frame"><p class="ms-card__label">what else a link is for</p><p class="ms-card__title">You can introduce yourself</p><div class="ms-card__body"><p>By default the sender on a link is anonymous even to the other party. If you wish, you can explicitly <em>identify</em> — sign the session with your permanent identity. It is a separate action, not a side effect.</p></div></div><div class="ms-card frame"><p class="ms-card__label">what else a link is for</p><p class="ms-card__title">Large transfers</p><div class="ms-card__body"><p>Resources (next section) ride on top of a link: there is room there for progress, retries and requests for missing parts.</p></div></div></div>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>And if you do not need a link</div><div class="admonitionContent_BuS1"><p>For a short message, setting up a session is a waste of airtime. Then the <strong>opportunistic</strong> mode works: one packet, encrypted for the recipient's permanent key, thrown into the network with no handshake. Cheap, but no confirmation and no forward secrecy. For this case Reticulum added ratchets — keys that are "turned" regularly so that single packets cannot be read retroactively either.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="resources-when-there-is-more-data-than-500-bytes">Resources: when there is more data than 500 bytes<a href="https://cyberdev.space/en/blog/reticulum-up-close/#resources-when-there-is-more-data-than-500-bytes" class="hash-link" aria-label="Direct link to Resources: when there is more data than 500 bytes" title="Direct link to Resources: when there is more data than 500 bytes" translate="no">​</a></h2>
<p>A photo, a file, a page with pictures do not fit in one packet. There is a separate mechanism for that — the <strong>Resource</strong>. It does not just cut data into pieces: it survives losses without starting over.</p>
<figure class="ms-fig ms-rns motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 330" role="img" aria-label="Animation: a file is compressed, cut into parts, the parts fly to the receiver, one is lost and requested again"><text class="p-title" x="0" y="13">resource transfer · a part is lost and requested again</text><rect x="20" y="60" width="96" height="120" rx="10" class="p-node" style="stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="68" y="110" text-anchor="middle" style="font-size:11px">file</text><text class="p-lbl" x="68" y="128" text-anchor="middle" style="font-size:11px">180 KB</text><path d="M124 120 h30 m-8 -5 l8 5 l-8 5" stroke-width="1.6" fill="none" style="stroke:var(--k-e8892f)"></path><rect x="162" y="86" width="74" height="68" rx="9" style="fill:var(--k-2e231b);stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="199" y="114" text-anchor="middle" style="font-size:10.5px">compression</text><text class="p-lbl" x="199" y="130" text-anchor="middle" style="font-size:9.5px">if it helps</text><path d="M244 120 h26 m-8 -5 l8 5 l-8 5" stroke-width="1.6" fill="none" style="stroke:var(--k-e8892f)"></path><text class="p-lbl" x="278" y="52" style="font-size:10px">parts + hashmap</text><g opacity=".22" style="fill:var(--k-e8892f)"><rect x="278" y="64" width="26" height="18" rx="4"></rect><rect x="278" y="88" width="26" height="18" rx="4"></rect><rect x="278" y="112" width="26" height="18" rx="4"></rect><rect x="278" y="136" width="26" height="18" rx="4"></rect><rect x="278" y="160" width="26" height="18" rx="4"></rect><rect x="278" y="184" width="26" height="18" rx="4"></rect></g><line x1="330" y1="60" x2="330" y2="215" stroke-dasharray="3 4" style="stroke:var(--k-3b2c21)"></line><line x1="660" y1="60" x2="660" y2="215" stroke-dasharray="3 4" style="stroke:var(--k-3b2c21)"></line><text class="p-lbl" x="336" y="52" style="font-size:10px">flight through the network</text><g><rect class="rspart" x="330" y="64" width="26" height="18" rx="4" style="--d:1s;fill:var(--k-e8892f)"></rect><rect class="rspart" x="330" y="88" width="26" height="18" rx="4" style="--d:2.4s;fill:var(--k-e8892f)"></rect><rect class="rspart" x="330" y="112" width="26" height="18" rx="4" style="--d:3.8s;fill:var(--k-e8892f)"></rect><rect class="rspart" x="330" y="136" width="26" height="18" rx="4" style="--d:5.2s;fill:var(--k-e8892f)"></rect><rect class="rspart" x="330" y="160" width="26" height="18" rx="4" style="--d:6.6s;fill:var(--k-e8892f)"></rect><rect class="rspart" x="330" y="184" width="26" height="18" rx="4" style="--d:8s;fill:var(--k-f0736a)"></rect><rect class="rspart" x="330" y="184" width="26" height="18" rx="4" style="--d:13.4s;fill:var(--k-3fc295)"></rect></g><g class="rslost"><circle cx="500" cy="193" r="15" stroke-width="1.6" style="fill:var(--k-3a1512);stroke:var(--k-f0736a)"></circle><text x="500" y="198" text-anchor="middle" style="font-family:var(--mono);font-size:13px;fill:var(--k-f0736a)">✕</text><text x="500" y="228" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-f0736a)">part 6 did not arrive</text><path d="M640 246 h-260 m8 -5 l-8 5 l8 5" stroke-width="1.4" fill="none" stroke-dasharray="4 4" style="stroke:var(--k-f0736a)"></path><text x="510" y="262" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-f0736a)">"send only part 6"</text></g><rect x="676" y="60" width="130" height="155" rx="10" class="p-node" style="stroke:var(--k-3b2c21)"></rect><text class="p-lbl p-ink" x="741" y="86" text-anchor="middle" style="font-size:11px">receiver</text><text class="p-lbl" x="741" y="104" text-anchor="middle" style="font-size:9.5px">reassembles</text><text class="p-lbl" x="741" y="122" text-anchor="middle" style="font-size:9.5px">and checks the hashes</text><rect x="692" y="140" width="98" height="12" rx="6" style="fill:var(--k-2e231b);stroke:var(--k-3b2c21)"></rect><foreignObject x="693" y="141" width="96" height="10"><div class="rsbar" style="height:10px;border-radius:5px;background:var(--k-3fc295);width:0"></div></foreignObject><text class="p-lbl" x="741" y="176" text-anchor="middle" style="font-size:9.5px">progress is visible</text><text class="p-lbl" x="741" y="192" text-anchor="middle" style="font-size:9.5px">in real time</text><text class="p-note" x="0" y="300">Losing one part costs one part — not the whole file. That is why a transfer survives</text><text class="p-note" x="0" y="318">radio dropouts that would mean "start over" in an ordinary download.</text></svg></div><figcaption><strong>How it works:</strong> <!-- -->the sender hashes every part and sends the receiver a<!-- --> <em>hashmap</em> <!-- -->— the list of what is supposed to arrive. The receiver checks what is missing and asks for exactly that. On top of that, if compression pays off, the data is compressed first — on a 250 bit/s channel that is not a detail but a difference of tens of minutes.</figcaption></figure>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="interfaces-what-it-really-rides-on">Interfaces: what it really rides on<a href="https://cyberdev.space/en/blog/reticulum-up-close/#interfaces-what-it-really-rides-on" class="hash-link" aria-label="Direct link to Interfaces: what it really rides on" title="Direct link to Interfaces: what it really rides on" translate="no">​</a></h2>
<p>The stack knows nothing about physics. It only knows an "interface" — a thing that can take a block of bytes and try to deliver it; the rest is driver detail. So one node can hold radio, cable and TCP at the same time, and for the network it is all one seamless fabric.</p>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 120" aria-hidden="true"><g stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"><rect x="24" y="48" width="56" height="34" rx="4"></rect><rect x="18" y="84" width="68" height="6" rx="3"></rect><rect x="220" y="48" width="56" height="34" rx="4"></rect><rect x="214" y="84" width="68" height="6" rx="3"></rect></g><g fill="none" stroke-width="1.6" style="stroke:var(--k-e8892f)"><g class="wv" style="--d:0s"><path d="M100 65 a20 20 0 0 1 0 -20"></path><path d="M112 72 a34 34 0 0 1 0 -34"></path></g><g class="wv" style="--d:1.3s"><path d="M200 65 a20 20 0 0 0 0 -20"></path><path d="M188 72 a34 34 0 0 0 0 -34"></path></g></g><text x="150" y="108" text-anchor="middle" class="p-lbl" style="font-size:10px">found each other</text></svg></figure><p class="ms-card__label">AutoInterface</p><p class="ms-card__title">LAN, zero configuration</p><div class="ms-card__body"><p>Finds others via IPv6 multicast on the same network. Enable it on two laptops on the same Wi-Fi — and they already see each other. The fastest way to try Reticulum with no hardware at all.</p><p><strong>Speed:</strong> as fast as the local network</p></div></div><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 120" aria-hidden="true"><path d="M96 52 a18 18 0 0 1 34 -10 a16 16 0 0 1 30 6 a15 15 0 0 1 -2 30 H112 a16 16 0 0 1 -16 -26 z" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-5ec1e8)"></path><text x="130" y="76" text-anchor="middle" class="p-lbl" style="font-size:9px;fill:var(--k-5ec1e8)">internet</text><rect x="18" y="52" width="44" height="30" rx="5" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></rect><rect x="238" y="52" width="44" height="30" rx="5" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></rect><g stroke-width="1.6" class="flow" fill="none" style="stroke:var(--k-5ec1e8)"><path d="M62 67 h34"></path><path d="M190 67 h48"></path></g><text x="150" y="108" text-anchor="middle" class="p-lbl" style="font-size:10px">islands get stitched together</text></svg></figure><p class="ms-card__label">TCPClient / TCPServer</p><p class="ms-card__title">Over the ordinary internet</p><div class="ms-card__body"><p>Connects two network segments over TCP. That is how the public testnet nodes work: a local radio island joins the worldwide network with one line in the config.</p><p><strong>Speed:</strong> whatever the channel gives</p></div></div><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 120" aria-hidden="true"><rect x="120" y="62" width="60" height="34" rx="6" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></rect><text x="150" y="84" text-anchor="middle" class="p-lbl" style="font-size:9px;fill:var(--k-e8892f)">RNode</text><line x1="150" y1="62" x2="150" y2="26" stroke-width="3" style="stroke:var(--k-d9cbb8)"></line><circle cx="150" cy="24" r="3" style="fill:var(--k-d9cbb8)"></circle><g fill="none" stroke-width="1.5" style="stroke:var(--k-e8892f)"><g class="wv" style="--d:0s"><path d="M126 34 a34 34 0 0 1 48 0"></path><path d="M114 44 a50 50 0 0 1 72 0"></path></g><g class="wv" style="--d:1.2s"><path d="M126 34 a34 34 0 0 1 48 0"></path><path d="M114 44 a50 50 0 0 1 72 0"></path></g></g><text x="150" y="112" text-anchor="middle" class="p-lbl" style="font-size:10px">LoRa, 433 / 868 / 915 MHz</text></svg></figure><p class="ms-card__label">RNodeInterface</p><p class="ms-card__title">LoRa radio over USB</p><div class="ms-card__body"><p>The very case the whole thing was started for: no provider, no wire. The board connects as an ordinary serial device, and the stack sets the frequency, bandwidth and spreading factor itself.</p><p><strong>Speed:</strong> 0.25–5.5 kbit/s</p></div></div><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 120" aria-hidden="true"><rect x="40" y="44" width="92" height="56" rx="6" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-c9b18a)"></rect><circle cx="60" cy="62" r="6" fill="none" style="stroke:var(--k-c9b18a)"></circle><circle cx="60" cy="82" r="6" fill="none" style="stroke:var(--k-c9b18a)"></circle><rect x="76" y="56" width="46" height="16" rx="3" opacity=".3" style="fill:var(--k-3fc295)"></rect><text x="99" y="90" text-anchor="middle" class="p-lbl" style="font-size:8.5px">radio</text><rect x="152" y="56" width="52" height="32" rx="5" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-c9b18a)"></rect><text x="178" y="76" text-anchor="middle" class="p-lbl" style="font-size:9px">TNC</text><g stroke-width="1.5" class="flow" fill="none" style="stroke:var(--k-c9b18a)"><path d="M132 72 h20"></path><path d="M204 72 h26"></path></g><line x1="236" y1="72" x2="236" y2="30" stroke-width="2.5" style="stroke:var(--k-d9cbb8)"></line><path d="M226 30 h20 M230 22 h12" stroke-width="2" style="stroke:var(--k-d9cbb8)"></path><text x="150" y="112" text-anchor="middle" class="p-lbl" style="font-size:10px">amateur packet radio</text></svg></figure><p class="ms-card__label">KISS / AX.25</p><p class="ms-card__title">Good old amateur radio</p><div class="ms-card__body"><p>Reticulum can ride on an ordinary TNC and an amateur radio — including on HF, where the signal goes around the planet. Indecently slow, but range is measured in continents.</p><p><strong>Speed:</strong> 300–9600 baud</p></div></div><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 120" aria-hidden="true"><rect x="22" y="50" width="56" height="38" rx="6" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></rect><rect x="222" y="50" width="56" height="38" rx="6" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></rect><path d="M78 69 C 120 69, 120 92, 150 92 C 180 92, 180 69, 222 69" stroke-width="2" fill="none" class="flow" style="stroke:var(--k-e8892f)"></path><text x="150" y="112" text-anchor="middle" class="p-lbl" style="font-size:10px">just a wire between two boxes</text></svg></figure><p class="ms-card__label">SerialInterface / Pipe</p><p class="ms-card__title">Bytes over any wire</p><div class="ms-card__body"><p>Two devices joined by a cable. Or a pair of wired modems. Or even someone else's program that can move a byte stream — Reticulum will ride on that too.</p><p><strong>Speed:</strong> whatever you set</p></div></div><div class="ms-card frame"><figure class="ms-fig ms-rns ms-fig--small motion-paused"><svg viewBox="0 0 300 120" aria-hidden="true"><g fill="none" stroke-width="1.5" style="stroke:var(--k-9f8dff)"><ellipse cx="80" cy="70" rx="16" ry="30"></ellipse><ellipse cx="150" cy="70" rx="16" ry="30"></ellipse><ellipse cx="220" cy="70" rx="16" ry="30"></ellipse><path d="M80 40 H220 M80 100 H220" stroke-dasharray="4 5"></path></g><circle cx="80" cy="70" r="6" class="pulse" style="--d:0s;fill:var(--k-9f8dff)"></circle><circle cx="150" cy="70" r="6" class="pulse" style="--d:.5s;fill:var(--k-9f8dff)"></circle><circle cx="220" cy="70" r="6" class="pulse" style="--d:1s;fill:var(--k-9f8dff)"></circle><text x="150" y="114" text-anchor="middle" class="p-lbl" style="font-size:10px">anonymous tunnel</text></svg></figure><p class="ms-card__label">I2PInterface</p><p class="ms-card__title">When you also need to hide</p><div class="ms-card__body"><p>Reticulum rides inside <a class="" href="https://cyberdev.space/en/blog/four-internets/">I2P</a>. The node has no public IP, no domain and no port that can be blocked — and its addressing stays its own.</p><p><strong>Speed:</strong> slow, but inconspicuous</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hardware-rnode-and-radio-physics">Hardware: RNode and radio physics<a href="https://cyberdev.space/en/blog/reticulum-up-close/#hardware-rnode-and-radio-physics" class="hash-link" aria-label="Direct link to Hardware: RNode and radio physics" title="Direct link to Hardware: RNode and radio physics" translate="no">​</a></h2>
<p>This is where software ends and things no code can get around begin: the antenna, the terrain and the laws of radio propagation.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-an-rnode-is">What an RNode is<a href="https://cyberdev.space/en/blog/reticulum-up-close/#what-an-rnode-is" class="hash-link" aria-label="Direct link to What an RNode is" title="Direct link to What an RNode is" translate="no">​</a></h3>
<p>An RNode is an open radio modem design: a microcontroller plus a LoRa chip, flashed with special firmware. It is built from cheap development boards (T-Beam, Heltec, RAK and others). To the stack it is just a serial device; to its owner, a standalone node that runs on a battery and asks nobody for anything.</p>
<figure class="ms-fig ms-rns motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 900 320" role="img" aria-label="Schematic of an RNode board with labelled parts: microcontroller, radio chip, antenna, battery, screen"><text class="p-title" x="0" y="13">RNode · what is on the board</text><rect x="40" y="70" width="400" height="190" rx="14" stroke-width="1.6" style="fill:var(--k-16352a);stroke:var(--k-2c6650)"></rect><g stroke-width="1" opacity=".5" fill="none" style="stroke:var(--k-b07a3a)"><path d="M60 250 h120 v-30 h60"></path><path d="M200 250 h180"></path><path d="M60 90 h40 v20"></path><path d="M420 200 v40 h-60"></path></g><rect x="26" y="150" width="16" height="34" rx="3" style="fill:var(--k-8c8c8c)"></rect><text class="p-lbl" x="34" y="200" text-anchor="middle" style="font-size:8.5px">USB</text><rect x="70" y="100" width="118" height="76" rx="4" style="fill:var(--k-2a2a2a);stroke:var(--k-555555)"></rect><g stroke-width="1" style="stroke:var(--k-3d3d3d)"><path d="M70 112 h118 M70 124 h118 M70 136 h118 M70 148 h118 M70 160 h118"></path></g><text x="129" y="144" text-anchor="middle" style="font-family:var(--mono);font-size:12px;fill:var(--k-bbbbbb)">ESP32</text><rect x="206" y="100" width="96" height="66" rx="4" style="fill:var(--k-1d1d1d);stroke:var(--k-555555)"></rect><text x="254" y="138" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-bbbbbb)">SX1276</text><rect x="320" y="96" width="100" height="76" rx="7" style="fill:var(--k-241d18);stroke:var(--k-4a3b2e)"></rect><text x="370" y="130" text-anchor="middle" style="font-family:var(--mono);font-size:10.5px;fill:var(--k-c9b18a)">18650</text><text x="370" y="146" text-anchor="middle" style="font-family:var(--mono);font-size:9px;fill:var(--k-8a7a68)">Li-Ion</text><rect x="70" y="190" width="120" height="46" rx="3" style="fill:var(--k-0a0a0a);stroke:var(--k-444444)"></rect><g opacity=".8" style="fill:var(--k-3fc295)"><rect x="80" y="200" width="60" height="4" rx="2"></rect><rect x="80" y="210" width="90" height="4" rx="2"></rect><rect x="80" y="220" width="44" height="4" rx="2"></rect></g><circle cx="215" cy="205" r="7" class="pulse" style="--d:0s;fill:var(--k-3fc295)"></circle><text class="p-lbl" x="215" y="228" text-anchor="middle" style="font-size:8.5px">TX</text><rect x="428" y="108" width="22" height="24" rx="3" style="fill:var(--k-8c8c8c)"></rect><line x1="440" y1="112" x2="530" y2="36" stroke-width="3.5" style="stroke:var(--k-d9cbb8)"></line><circle cx="531" cy="35" r="4" style="fill:var(--k-d9cbb8)"></circle><g fill="none" stroke-width="1.6" style="stroke:var(--k-e8892f)"><g class="wv" style="--d:0s"><path d="M505 26 a34 34 0 0 1 34 34"></path><path d="M492 16 a52 52 0 0 1 52 52"></path></g><g class="wv" style="--d:1.3s"><path d="M505 26 a34 34 0 0 1 34 34"></path><path d="M492 16 a52 52 0 0 1 52 52"></path></g></g><g stroke-width="1.2" fill="none" style="stroke:var(--k-4a3b2e)"><path d="M531 40 L560 52 H572"></path><path d="M302 120 L560 96 H572"></path><path d="M188 130 L560 140 H572"></path><path d="M420 134 L560 186 H572"></path><path d="M190 213 L560 232 H572"></path></g><g class="p-lbl p-ink" style="font-size:11.5px"><text x="580" y="56">antenna — the main range multiplier</text><text x="580" y="100">ESP32 — RNode firmware, KISS over USB</text><text x="580" y="144">SX1276/SX1262 — the radio itself</text><text x="580" y="190">battery — the node lives on its own</text><text x="580" y="236">screen and button — status without a computer</text></g><g class="p-lbl" style="font-size:10px"><text x="580" y="72">a bad antenna eats kilometres faster than anything else</text><text x="580" y="116">the same board can be a plain modem too</text><text x="580" y="160">frequency depends on the region: 433 / 868 / 915 MHz</text><text x="580" y="206">typically from several days to weeks on standby</text><text x="580" y="252">optional, but very handy in the field</text></g></svg></div><figcaption><strong>Important:</strong> <!-- -->the RNode firmware turns the board into a "dumb" radio modem — all of the Reticulum logic stays on the computer or phone. So the board does not need reflashing when the stack is updated, and the same board works equally with a laptop, a Raspberry Pi and a phone.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-lora-hears-what-cannot-be-heard">Why LoRa hears what "cannot be heard"<a href="https://cyberdev.space/en/blog/reticulum-up-close/#why-lora-hears-what-cannot-be-heard" class="hash-link" aria-label="Direct link to Why LoRa hears what &quot;cannot be heard&quot;" title="Direct link to Why LoRa hears what &quot;cannot be heard&quot;" translate="no">​</a></h3>
<p>LoRa sends data not as a steady tone but as a <strong>whistle of rising frequency</strong> — a chirp. The receiver knows the exact shape of that whistle, so it pulls it out even when the signal is weaker than the noise on air. The price is time: the more "stretched" the whistle (the higher the spreading factor), the farther it is heard and the slower data goes. In detail — in the <a class="" href="https://cyberdev.space/en/blog/lora-up-close/">LoRa deep dive</a>.</p>
<table><thead><tr><th>spreading factor</th><th>speed, 125 kHz</th><th>range</th><th>a 500-byte packet on air</th></tr></thead><tbody><tr><td>SF7</td><td>≈ 5.5 kbit/s</td><td>shortest</td><td>under a second</td></tr><tr><td>SF9</td><td>≈ 1.8 kbit/s</td><td>medium</td><td>≈ 2 seconds</td></tr><tr><td>SF12</td><td>≈ 250 bit/s</td><td>longest</td><td>≈ 16 seconds</td></tr></tbody></table>
<p>The numbers are approximate: speed also depends on bandwidth and coding rate, and time on air on the overhead. But the order is right: going from SF7 to SF12 costs roughly a twentyfold slowdown.</p>
<figure class="ms-fig ms-rns motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 310" role="img" aria-label="Drawing: two nodes on hills see each other, the node in the valley does not and goes through the hill"><defs><linearGradient id="skyg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" style="stop-color:var(--k-1b2740)"></stop><stop offset="1" style="stop-color:var(--k-3a2b22)"></stop></linearGradient></defs><rect x="0" y="0" width="1000" height="310" fill="url(#skyg)" rx="8"></rect><g opacity=".35" style="fill:var(--k-c9b18a)"><circle cx="120" cy="40" r="1.6"></circle><circle cx="300" cy="26" r="1.2"></circle><circle cx="700" cy="36" r="1.5"></circle><circle cx="880" cy="20" r="1.2"></circle><circle cx="520" cy="18" r="1.3"></circle></g><path d="M0 310 L0 214 C 60 142, 190 132, 260 218 L 330 310 Z" style="fill:var(--k-1d1712)"></path><path d="M500 310 L500 258 Q 600 92 700 252 L700 310 Z" style="fill:var(--k-221a14)"></path><path d="M1000 310 L1000 202 C 940 132, 820 122, 760 208 L 700 310 Z" style="fill:var(--k-1d1712)"></path><rect x="0" y="286" width="1000" height="24" style="fill:var(--k-161009)"></rect><line x1="150" y1="140" x2="150" y2="96" stroke-width="2.5" style="stroke:var(--k-d9cbb8)"></line><path d="M142 96 h16 M145 88 h10" stroke-width="2" style="stroke:var(--k-d9cbb8)"></path><circle cx="150" cy="142" r="9" stroke-width="2" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></circle><text class="p-lbl p-ink" x="150" y="172" text-anchor="middle" style="font-size:11px">node A</text><text class="p-lbl" x="150" y="187" text-anchor="middle" style="font-size:9.5px">transport, on a hill</text><line x1="870" y1="148" x2="870" y2="104" stroke-width="2.5" style="stroke:var(--k-d9cbb8)"></line><path d="M862 104 h16 M865 96 h10" stroke-width="2" style="stroke:var(--k-d9cbb8)"></path><circle cx="870" cy="150" r="9" stroke-width="2" style="fill:var(--k-2e231b);stroke:var(--k-e8892f)"></circle><text class="p-lbl p-ink" x="870" y="180" text-anchor="middle" style="font-size:11px">node B</text><path d="M150 92 Q 510 40 870 100" stroke-width="2" fill="none" class="flow" style="stroke:var(--k-e8892f)"></path><text class="p-lbl" x="510" y="52" text-anchor="middle" style="font-size:11px;fill:var(--k-e8892f)">8 km line of sight · SF12 · 250 bit/s</text><g transform="translate(454,246)"><path d="M0 22 L0 6 L16 -6 L32 6 L32 22 Z" stroke-width="1.4" style="fill:var(--k-2e231b);stroke:var(--k-c9b18a)"></path><rect x="11" y="10" width="10" height="12" opacity=".6" style="fill:var(--k-3fc295)"></rect></g><text class="p-lbl p-ink" x="470" y="292" text-anchor="middle" style="font-size:11px">node in the valley</text><path d="M470 244 L855 108" stroke-width="1.6" stroke-dasharray="5 5" fill="none" opacity=".8" style="stroke:var(--k-f0736a)"></path><circle cx="600" cy="197" r="13" stroke-width="1.5" style="fill:var(--k-3a1512);stroke:var(--k-f0736a)"></circle><text x="600" y="202" text-anchor="middle" style="font-family:var(--mono);font-size:12px;fill:var(--k-f0736a)">✕</text><text x="600" y="228" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-f0736a)">the mountain blocks the direct view of B</text><path d="M462 242 L160 148" stroke-width="1.8" fill="none" class="flow" style="stroke:var(--k-3fc295)"></path><text x="270" y="232" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-3fc295)">but A is visible, so we go via A</text></svg></div><figcaption><strong>This is what transport nodes are for.</strong> <!-- -->Radio does not bend around mountains: without line of sight, no setting will help. One node raised high turns a set of isolated points into a network — and it is the cheapest way to multiply coverage.</figcaption></figure>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-much-really-gets-through">How much really gets through<a href="https://cyberdev.space/en/blog/reticulum-up-close/#how-much-really-gets-through" class="hash-link" aria-label="Direct link to How much really gets through" title="Direct link to How much really gets through" translate="no">​</a></h2>
<p>The most common disappointment looks like this: a LoRa network is up, a photo is sent — and it takes an hour. Here are honest numbers so that does not happen. The size slider shows any case of your own.</p>
<figure class="ms-fig ms-rns ms-live"><div class="ms-calc__row"><label class="ms-calc__cap" for="ms-tt-size">size</label><input id="ms-tt-size" type="range" min="0" max="8" value="6"><output for="ms-tt-size" class="ms-calc__val">200 KiB</output></div><div class="ms-tt"><div class="ms-tt__row"><span class="ms-tt__k">SF<!-- -->7<!-- --> · <!-- -->5.5 kbit/s</span><span class="ms-tt__bar"><span style="width:54.29967060757838%"></span></span><b class="ms-tt__v">5 min</b></div><div class="ms-tt__row"><span class="ms-tt__k">SF<!-- -->9<!-- --> · <!-- -->1.8 kbit/s</span><span class="ms-tt__bar"><span style="width:64.94624607769363%"></span></span><b class="ms-tt__v">15 min</b></div><div class="ms-tt__row"><span class="ms-tt__k">SF<!-- -->12<!-- --> · <!-- -->250 bit/s</span><span class="ms-tt__bar"><span style="width:83.76265469601721%"></span></span><b class="ms-tt__v">1 h 49 min</b></div></div><div class="ms-tt__scale" aria-hidden="true"><span style="left:0%">1 s</span><span style="left:39.02618954918381%">1 min</span><span style="left:78.05237909836762%">1 h</span><span style="left:100%">10 h</span></div><figcaption>A plain division of size by bit rate, on a log scale. Overhead, acknowledgements and retries add more, so real times are longer — but the order of magnitude holds. A 100 Mbit/s home connection moves the same file thousands of times faster.</figcaption></figure>
<table><thead><tr><th>what is sent</th><th>SF12 · 250 bit/s</th><th>SF7 · 5.5 kbit/s</th><th>verdict</th></tr></thead><tbody><tr><td>Text message, 1 KiB</td><td>≈ 33 s</td><td>≈ 1.5 s</td><td>Comfortable even in the slowest mode</td></tr><tr><td>Nomad Network page, 8 KiB</td><td>≈ 4.4 min</td><td>≈ 12 s</td><td>Readable if the page is text</td></tr><tr><td>Voice note, 1 min compressed, 15 KiB</td><td>≈ 8 min</td><td>≈ 22 s</td><td>Tolerable at SF7, not at SF12</td></tr><tr><td>Photo, 200 KiB</td><td>≈ 1 h 49 min</td><td>≈ 5 min</td><td>Only when really needed and there is no hurry</td></tr><tr><td>Video</td><td>—</td><td>—</td><td>No. And there will not be: it is not a matter of optimisation</td></tr></tbody></table>
<p>The conclusion is not "LoRa is bad" but "LoRa is for text". The long-range mode does not exist to move megabytes but to get a message 30 kilometres across a mountain where nothing else works.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lxmf-mail-that-can-wait-for-the-recipient">LXMF: mail that can wait for the recipient<a href="https://cyberdev.space/en/blog/reticulum-up-close/#lxmf-mail-that-can-wait-for-the-recipient" class="hash-link" aria-label="Direct link to LXMF: mail that can wait for the recipient" title="Direct link to LXMF: mail that can wait for the recipient" translate="no">​</a></h2>
<p>Reticulum by itself has no notion of a "message" — it carries packets. Messengers on top of it speak a separate format, <strong>LXMF</strong>. That is what makes sure a message waits for a person who switches their radio on once a day.</p>
<figure class="ms-fig ms-rns motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 360" role="img" aria-label="Three LXMF delivery modes: opportunistic, over a link, and via a propagation node"><text class="p-title" x="0" y="13">three ways to deliver the same message</text><g class="lxmode" style="--d:0s"><text class="p-lbl" x="0" y="42" style="font-size:11px;fill:var(--k-e8892f)">way 1 · opportunistic</text><circle cx="120" cy="80" r="22" class="p-node" stroke-width="2" style="stroke:var(--k-e8892f)"></circle><text class="p-lbl p-ink" x="120" y="85" text-anchor="middle" style="font-size:10px">YOU</text><path d="M146 80 H 700" stroke-width="1.8" fill="none" class="flow" style="stroke:var(--k-e8892f)"></path><circle cx="726" cy="80" r="22" class="p-node" stroke-width="2" style="stroke:var(--k-e8892f)"></circle><text class="p-lbl p-ink" x="726" y="85" text-anchor="middle" style="font-size:9px">RECIPIENT</text><text class="p-lbl" x="420" y="66" text-anchor="middle" style="font-size:10.5px">one packet, no handshake</text><text class="p-lbl" x="790" y="76" style="font-size:10.5px">cheap and fast,</text><text class="p-lbl" x="790" y="92" style="font-size:10.5px">but no confirmation</text></g><g class="lxmode" style="--d:6s"><text class="p-lbl" x="0" y="152" style="font-size:11px;fill:var(--k-3fc295)">way 2 · over a link</text><circle cx="120" cy="190" r="22" class="p-node" stroke-width="2" style="stroke:var(--k-3fc295)"></circle><text class="p-lbl p-ink" x="120" y="195" text-anchor="middle" style="font-size:10px">YOU</text><g stroke-width="1.6" fill="none" style="stroke:var(--k-3fc295)"><path d="M146 178 H 700" class="flow"></path><path d="M700 202 H 146"></path></g><circle cx="726" cy="190" r="22" class="p-node" stroke-width="2" style="stroke:var(--k-3fc295)"></circle><text class="p-lbl p-ink" x="726" y="195" text-anchor="middle" style="font-size:9px">RECIPIENT</text><text class="p-lbl" x="420" y="170" text-anchor="middle" style="font-size:10.5px">session, ephemeral keys, attachments</text><text class="p-lbl" x="420" y="220" text-anchor="middle" style="font-size:10.5px">back — PROOF: "delivered", signed</text><text class="p-lbl" x="790" y="186" style="font-size:10.5px">reliable, but the recipient</text><text class="p-lbl" x="790" y="202" style="font-size:10.5px">has to be online now</text></g><g class="lxmode" style="--d:12s"><text class="p-lbl" x="0" y="262" style="font-size:11px;fill:var(--k-5ec1e8)">way 3 · via a propagation node</text><circle cx="120" cy="300" r="22" class="p-node" stroke-width="2" style="stroke:var(--k-5ec1e8)"></circle><text class="p-lbl p-ink" x="120" y="305" text-anchor="middle" style="font-size:10px">YOU</text><path d="M146 300 H 356" stroke-width="1.8" fill="none" class="flow" style="stroke:var(--k-5ec1e8)"></path><rect x="382" y="276" width="140" height="48" rx="10" class="p-node" stroke-width="2" style="stroke:var(--k-5ec1e8)"></rect><text class="p-lbl p-ink" x="452" y="296" text-anchor="middle" style="font-size:10px">propagation node</text><text class="p-lbl" x="452" y="312" text-anchor="middle" style="font-size:9.5px">holds it encrypted</text><path d="M548 300 H 700" stroke-width="1.8" fill="none" stroke-dasharray="4 5" style="stroke:var(--k-5ec1e8)"></path><circle cx="726" cy="300" r="22" class="p-node" stroke-width="2" style="stroke:var(--k-5ec1e8)"></circle><text class="p-lbl p-ink" x="726" y="305" text-anchor="middle" style="font-size:9px">RECIPIENT</text><text class="p-lbl" x="624" y="286" text-anchor="middle" style="font-size:10px">when they show up —</text><text class="p-lbl" x="624" y="300" text-anchor="middle" style="font-size:10px">they come and collect it</text><text class="p-lbl" x="790" y="296" style="font-size:10.5px">the recipient may be</text><text class="p-lbl" x="790" y="312" style="font-size:10.5px">off the network for a week</text></g></svg></div><figcaption><strong>A delivery node does not read the mail.</strong> <!-- -->It holds a sealed envelope and has no key — exactly like a mailbox that cannot be opened. That is why anyone can run such a node, and nobody has to trust it.</figcaption></figure>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">What is inside an LXMF message</p><div class="ms-card__body"><ul>
<li class=""><strong>to</strong> — the destination address (16 bytes)</li>
<li class=""><strong>from</strong> — the sender's address</li>
<li class=""><strong>signature</strong> — so the sender cannot be spoofed</li>
<li class=""><strong>content</strong> — time, title, text and arbitrary fields; attachments go here too</li>
</ul><p>Message states in the client are not decoration: "sent" means "went into the network", and "delivered" is set only when a PROOF comes back.</p></div></div><div class="ms-card frame"><p class="ms-card__title">How spam is fought here</p><div class="ms-card__body"><p>Classic filters are impossible: a node cannot see the content. So LXMF uses "stamps": the sender has to spend a little computation for their message to be accepted. For a living person it is unnoticeable, for a mailing to a million addresses ruinously expensive.</p><p>Plus the usual: known contacts can be exempt from stamps, strangers can be asked for a more expensive one.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-reticulum-does-not-do">What Reticulum does not do<a href="https://cyberdev.space/en/blog/reticulum-up-close/#what-reticulum-does-not-do" class="hash-link" aria-label="Direct link to What Reticulum does not do" title="Direct link to What Reticulum does not do" translate="no">​</a></h2>
<p>The quickest way to be disappointed in a tool is to expect from it what it never promised.</p>
<ul>
<li class="">✕ <strong>Does not anonymise.</strong> Announces are public, destination addresses are visible to transport nodes, and on shared radio you can see who went on air and when. The content is closed, the fact of communication is not.</li>
<li class="">✕ <strong>Has no global names.</strong> There is nothing like DNS. The other party's address has to come from somewhere: a QR code, a slip of paper, an announcement on air, a shared directory node.</li>
<li class="">✕ <strong>Does not guarantee delivery by itself.</strong> A guarantee appears only where there is a PROOF or a resource with retries. A packet sent "opportunistically" can simply vanish.</li>
<li class="">✕ <strong>Does not carry the ordinary web.</strong> HTTP and the browser will not come here: a 500-byte MTU is another world. Instead of the web there is Nomad Network with its own lightweight page markup.</li>
<li class="">✕ <strong>Does not replace the everyday internet.</strong> Streaming, calls, clouds — no. Text, positions, small files, device control — yes.</li>
</ul>
<p>And it is not Meshtastic — the most common confusion, because their hardware is the same.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="reticulum-and-meshtastic-same-board-different-ideas">Reticulum and Meshtastic: same board, different ideas<a href="https://cyberdev.space/en/blog/reticulum-up-close/#reticulum-and-meshtastic-same-board-different-ideas" class="hash-link" aria-label="Direct link to Reticulum and Meshtastic: same board, different ideas" title="Direct link to Reticulum and Meshtastic: same board, different ideas" translate="no">​</a></h3>
<table><thead><tr><th>question</th><th>Meshtastic</th><th>Reticulum</th></tr></thead><tbody><tr><td>What it is</td><td>A finished product: group chat and GPS over LoRa</td><td>A general-purpose network stack on which people write their own applications</td></tr><tr><td>Carrier</td><td>LoRa only</td><td>Anything: LoRa, radio, wire, TCP, I2P</td></tr><tr><td>Routing</td><td>Managed flooding within a small group of nodes</td><td>Path tables, up to 128 hops, stitching different carriers together</td></tr><tr><td>Address</td><td>4 bytes from the board's MAC address</td><td>A 16-byte hash of a key, globally unique</td></tr><tr><td>Encryption</td><td>Channel key for groups; per-node keys for private messages</td><td>End-to-end to a specific identity, always</td></tr><tr><td>Who it suits</td><td>"Switch on and it works" for a group in the mountains</td><td>Those building their own network or an application for it</td></tr></tbody></table>
<p>Both projects are alive and both run on the same cheap boards: <a class="" href="https://cyberdev.space/en/blog/meshtastic-up-close/">Meshtastic</a> gives a ready-made scenario, Reticulum a construction kit. You can try both on one board just by changing the firmware.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="practice-up-and-running-in-an-evening">Practice: up and running in an evening<a href="https://cyberdev.space/en/blog/reticulum-up-close/#practice-up-and-running-in-an-evening" class="hash-link" aria-label="Direct link to Practice: up and running in an evening" title="Direct link to Practice: up and running in an evening" translate="no">​</a></h2>
<p>The cheapest way to understand it is to run it. The first step needs no hardware at all: two computers on the same Wi-Fi are enough.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">Step 1 — install the stack</p><div class="ms-card__body"><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># the stack itself and its utilities</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">pip install rns</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># the daemon: holds interfaces and paths</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">rnsd</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># what the interfaces are doing right now</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">rnstatus</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># the path to an address and how many hops</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">rnpath &lt;hash&gt;</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># ping a transport node</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># (it must have respond_to_probes enabled)</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">rnprobe rnstransport.probe &lt;hash&gt;</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># fetch a file from a remote node</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">rncp --fetch ~/file.txt &lt;hash&gt;</span><br></div></code></pre></div></div></div></div><div class="ms-card frame"><p class="ms-card__title">Step 2 — the config</p><div class="ms-card__body"><p>It lives in <code>~/.reticulum/config</code>. Here is a node that is on the local network, on radio and on the worldwide network at once:</p><div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">[reticulum]</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">  enable_transport = No</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">  share_instance = Yes</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">[interfaces]</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">  [[Default Interface]]</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    type = AutoInterface</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    interface_enabled = True</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">  [[LoRa]]</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    type = RNodeInterface</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    interface_enabled = True</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    port = /dev/ttyUSB0</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    frequency = 867200000</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    bandwidth = 125000</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    txpower = 7</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    spreadingfactor = 8</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    codingrate = 5</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">  [[Public hub]]</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    type = TCPClientInterface</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    interface_enabled = True</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    target_host = amsterdam.connect.reticulum.network</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">    target_port = 4965</span><br></div></code></pre></div></div><p>Frequency and power are set according to your region's rules — that is not advice but the law. Current public entry points are in the project documentation: they change.</p></div></div></div>
<p><strong>Step 3 — flash a board when you get to radio.</strong> Connect the board over USB, then follow the utility's prompts:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">rnodeconf --autoinstall</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-to-put-on-top">What to put on top<a href="https://cyberdev.space/en/blog/reticulum-up-close/#what-to-put-on-top" class="hash-link" aria-label="Direct link to What to put on top" title="Direct link to What to put on top" translate="no">​</a></h3>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">messenger</p><p class="ms-card__title">Sideband</p><div class="ms-card__body"><p>Android, iOS, desktop. The simplest way in: after installation an identity is generated and you see the contacts that have announced themselves on the network.</p></div></div><div class="ms-card frame"><p class="ms-card__label">web interface</p><p class="ms-card__title">MeshChat</p><div class="ms-card__body"><p>A handy browser dashboard: messages, files, a node map, interface status.</p></div></div><div class="ms-card frame"><p class="ms-card__label">terminal</p><p class="ms-card__title">Nomad Network</p><div class="ms-card__body"><p>A text interface in the spirit of a BBS: pages with their own markup, files, boards. The best feel of "another network".</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="glossary">Glossary<a href="https://cyberdev.space/en/blog/reticulum-up-close/#glossary" class="hash-link" aria-label="Direct link to Glossary" title="Direct link to Glossary" translate="no">​</a></h2>
<ul>
<li class=""><strong>Identity</strong> — a pair of key pairs (X25519 + Ed25519), a persona. A file worth guarding: it cannot be recovered from anywhere.</li>
<li class=""><strong>Destination</strong> — an address: 16 bytes of hash of the identity and the application name. What you give to the other party.</li>
<li class=""><strong>Aspect</strong> — part of the application name, e.g. <code>lxmf.delivery</code>. Determines who inside the node gets the packet.</li>
<li class=""><strong>Announce</strong> — the "I exist, here is my key" packet. The only way into other nodes' path tables.</li>
<li class=""><strong>Path</strong> — a table entry: "to reach this address, hand it to this neighbour". It has an expiry time.</li>
<li class=""><strong>Transport node</strong> — a node explicitly allowed to relay other people's traffic. Without them the network falls apart into islands.</li>
<li class=""><strong>Link</strong> — a session with one-time keys. Gives forward secrecy, delivery confirmation and resources.</li>
<li class=""><strong>Proof</strong> — a signed proof of receipt. "Delivered" cannot be forged.</li>
<li class=""><strong>Resource</strong> — the mechanism for data larger than a packet: compression, slicing, a hashmap, targeted retries.</li>
<li class=""><strong>Interface</strong> — a carrier driver: AutoInterface, TCP, RNode, KISS, Serial, I2P. The stack essentially does not tell them apart.</li>
<li class=""><strong>IFAC</strong> — an interface access code. Other nodes do not even recognise the traffic as Reticulum.</li>
<li class=""><strong>MTU / MDU</strong> — the packet size ceiling (500 bytes) and what remains for payload after the header.</li>
<li class=""><strong>LXMF</strong> — the message format on top of Reticulum. What messengers actually speak.</li>
<li class=""><strong>Propagation node</strong> — a node that holds encrypted mail while the recipient is offline. It has no keys.</li>
<li class=""><strong>RNode</strong> — an open LoRa modem design: a cheap board plus firmware. To the stack, an ordinary serial device.</li>
<li class=""><strong>Spreading factor</strong> — how "stretched" the radio signal is. Higher means heard farther and slower data.</li>
</ul>
<p>The speeds here are calculated; specific configuration parameters are worth checking against the <a href="https://markqvist.github.io/Reticulum/manual/" target="_blank" rel="noopener noreferrer" class="">project documentation</a>.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>The "up close" series</div><div class="admonitionContent_BuS1"><ul>
<li class=""><a class="" href="https://cyberdev.space/en/blog/lora-up-close/">LoRa up close</a> — the physical layer: chirps, spreading factor, time on air, range</li>
<li class=""><a class="" href="https://cyberdev.space/en/blog/meshtastic-up-close/">Meshtastic up close</a> — a ready-made chat on "raw" LoRa: managed flooding, channels, node roles</li>
<li class=""><a class="" href="https://cyberdev.space/en/blog/four-internets/">Four internets</a> — Reticulum, I2P, Yggdrasil and Nostr side by side: who sits on which floor</li>
</ul></div></div>]]></content:encoded>
            <category>radio</category>
            <category>LoRa</category>
            <category>Reticulum</category>
            <category>mesh networks</category>
        </item>
        <item>
            <title><![CDATA[Meshtastic up close: how messages hop through other nodes]]></title>
            <link>https://cyberdev.space/en/blog/meshtastic-up-close/</link>
            <guid>https://cyberdev.space/en/blog/meshtastic-up-close/</guid>
            <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How Meshtastic works: nodes and channels, packet anatomy, managed flooding, node roles, radio presets, time on air and channel utilisation, MQTT, hardware and first setup.]]></description>
            <content:encoded><![CDATA[<p>Meshtastic is not a stack or a platform but a <strong>finished product</strong>: a cheap board with a LoRa radio, a phone over Bluetooth — and a chat that works where there is neither mobile coverage nor internet. This note is about how exactly a message hops through other people's nodes, how much airtime that costs and why a mesh chokes when there are too many nodes. The radio physics underneath is in the <a class="" href="https://cyberdev.space/en/blog/lora-up-close/">LoRa deep dive</a>.</p>
<div class="ms-stats"><div class="ms-stat"><b>237 bytes</b><span>The payload ceiling in one packet. Anything longer is cut or does not go</span></div><div class="ms-stat"><b>16 bytes</b><span>The whole header: to whom, from whom, packet number, flags, channel</span></div><div class="ms-stat"><b>3 / 7</b><span>How many relays are allowed by default and at most</span></div><div class="ms-stat"><b>1.07 kbit/s</b><span>The speed of the LongFast preset — the one almost the whole world runs on</span></div></div>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-is--and-what-it-is-not">What it is — and what it is not<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#what-it-is--and-what-it-is-not" class="hash-link" aria-label="Direct link to What it is — and what it is not" title="Direct link to What it is — and what it is not" translate="no">​</a></h2>
<p>Meshtastic is <strong>firmware</strong> for cheap boards with a LoRa radio plus a phone app. A board for 20–40 dollars, flashed straight from the browser, a phone over Bluetooth — and you have a chat that does not know the word "provider".</p>
<p>The key difference from an ordinary walkie-talkie: a message does not have to reach the recipient <strong>directly</strong>. If somebody else with the same kind of node is between two people, it hops through them. Every participant is both a client and a relay at once — that is what turns a pile of separate radios into a network.</p>
<table><thead><tr><th>what people usually expect</th><th>what it really is</th></tr></thead><tbody><tr><td>"Internet without the internet"</td><td>A text chat, positions on a map and telemetry. No web, no mail, no files</td></tr><tr><td>"Works everywhere"</td><td>Works where radio reaches — your own or neighbouring nodes'. In an open field with no other nodes the range equals line of sight</td></tr><tr><td>"It is anonymous"</td><td>No. A node tells the air its own name, number and often its position</td></tr><tr><td>"The default channel is encrypted"</td><td>Formally yes, but its key is <strong>public and the same for everyone</strong>. It is "not plain text" rather than a secret</td></tr><tr><td>"The more nodes, the better"</td><td>Up to a point. Beyond it the network starts strangling itself — see "The air is finite" below</td></tr><tr><td>"You can make calls"</td><td>No. One packet is 237 bytes, the speed about a kilobit per second</td></tr></tbody></table>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">what it does well</p><p class="ms-card__title">Text and positions</p><div class="ms-card__body"><p>Group messages in a channel, private ones to a single node, everyone's position on a map, battery and sensors. Exactly what you need on a hike, at a competition, on a building site or when the network is down.</p></div></div><div class="ms-card frame"><p class="ms-card__label">what it does unexpectedly</p><p class="ms-card__title">Being eyes and hands</p><div class="ms-card__body"><p>Sensors (temperature, pressure, water in the basement), buttons, sirens, home automation. A node without a phone is useful too: it can just report or relay.</p></div></div><div class="ms-card frame"><p class="ms-card__label">what it fundamentally cannot do</p><p class="ms-card__title">Carry data</p><div class="ms-card__body"><p>Photos, voice, files, streaming — no. This is not a question of firmware version: that much will not fit into air shared by everyone at once.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-it-works-in-sixty-seconds">How it works in sixty seconds<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#how-it-works-in-sixty-seconds" class="hash-link" aria-label="Direct link to How it works in sixty seconds" title="Direct link to How it works in sixty seconds" translate="no">​</a></h2>
<p>The setup has four parts, and it is easy to mix up who does what.</p>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 310" role="img" aria-label="Diagram: a phone controls a node over Bluetooth, the node puts the message into the mesh by radio, and it hops to the recipient's node"><text class="p-title" x="0" y="13">phone · node · air · other people's nodes · phone at the far end</text><rect x="24" y="108" width="54" height="94" rx="9" class="p-node" stroke-width="2" style="stroke:var(--k-4fe08a)"></rect><rect x="32" y="118" width="38" height="66" rx="3" style="fill:var(--k-0b1512)"></rect><g opacity=".55" style="fill:var(--k-4fe08a)"><rect x="37" y="126" width="28" height="4" rx="2"></rect><rect x="37" y="136" width="20" height="4" rx="2"></rect><rect x="37" y="146" width="24" height="4" rx="2"></rect></g><text class="p-lbl p-ink" x="51" y="222" text-anchor="middle" style="font-size:11px">phone</text><text class="p-lbl" x="51" y="238" text-anchor="middle" style="font-size:9.5px">just a screen</text><text class="p-lbl" x="51" y="252" text-anchor="middle" style="font-size:9.5px">and a keyboard</text><path d="M86 155 H 176" stroke-width="2" fill="none" class="flow" style="stroke:var(--k-6cc4f0)"></path><text class="p-lbl" x="131" y="144" text-anchor="middle" style="font-size:9.5px;fill:var(--k-6cc4f0)">Bluetooth</text><rect x="184" y="126" width="104" height="58" rx="10" class="p-node" stroke-width="2" style="stroke:var(--k-4fe08a)"></rect><text class="p-lbl p-ink" x="236" y="152" text-anchor="middle" style="font-size:11px">node</text><text class="p-lbl" x="236" y="168" text-anchor="middle" style="font-size:9px">board + LoRa</text><line x1="236" y1="126" x2="236" y2="88" stroke-width="3" style="stroke:var(--k-c9d8cf)"></line><circle cx="236" cy="86" r="3.5" style="fill:var(--k-c9d8cf)"></circle><g fill="none" stroke-width="1.6" style="stroke:var(--k-4fe08a)"><g class="wv" style="--d:0s"><path d="M210 92 a36 36 0 0 1 52 0"></path><path d="M196 104 a54 54 0 0 1 80 0"></path></g><g class="wv" style="--d:1.3s"><path d="M210 92 a36 36 0 0 1 52 0"></path><path d="M196 104 a54 54 0 0 1 80 0"></path></g></g><text class="p-lbl p-ink" x="236" y="222" text-anchor="middle" style="font-size:11px">does all the work</text><text class="p-lbl" x="236" y="238" text-anchor="middle" style="font-size:9.5px">even when the phone</text><text class="p-lbl" x="236" y="252" text-anchor="middle" style="font-size:9.5px">is off or far away</text><g class="p-link"><path d="M296 152 L440 108 M440 108 L600 170 M296 160 L430 216 M430 216 L600 170 M600 170 L760 126"></path></g><g stroke-width="2" style="stroke:var(--k-25392f)"><circle class="p-node lit" cx="440" cy="108" r="18" style="--d:2.4s"></circle><circle class="p-node lit" cx="430" cy="216" r="18" style="--d:2.4s"></circle><circle class="p-node lit" cx="600" cy="170" r="18" style="--d:4s"></circle><circle class="p-node lit" cx="760" cy="126" r="20" style="--d:5.6s"></circle></g><g class="p-lbl p-ink" text-anchor="middle" style="font-size:10px"><text x="440" y="112">neighbour</text><text x="430" y="220">neighbour</text><text x="600" y="174">neighbour</text><text x="760" y="130">recipient</text></g><circle class="hp" r="7" style="--x0:296px;--y0:152px;--x1:440px;--y1:108px;--d:1.6s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="7" style="--x0:296px;--y0:160px;--x1:430px;--y1:216px;--d:1.6s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="7" style="--x0:440px;--y0:108px;--x1:600px;--y1:170px;--d:3.2s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="7" style="--x0:600px;--y0:170px;--x1:760px;--y1:126px;--d:4.8s;fill:var(--k-4fe08a)"></circle><rect x="900" y="88" width="54" height="94" rx="9" class="p-node" stroke-width="2" style="stroke:var(--k-4fe08a)"></rect><rect x="908" y="98" width="38" height="66" rx="3" style="fill:var(--k-0b1512)"></rect><g opacity=".55" style="fill:var(--k-4fe08a)"><rect x="913" y="106" width="28" height="4" rx="2"></rect><rect x="913" y="116" width="22" height="4" rx="2"></rect></g><path d="M786 120 H 892" stroke-width="2" fill="none" class="flow" style="stroke:var(--k-6cc4f0)"></path><text class="p-lbl" x="927" y="202" text-anchor="middle" style="font-size:10px">their phone</text><text class="p-note" x="330" y="286">Each neighbour is the same kind of board belonging to someone else. Nobody agreed on anything: the nodes simply</text><text class="p-note" x="330" y="302">hear each other and pass on everything they hear for the first time.</text></svg></div><figcaption><strong>The key point of this diagram:</strong> <!-- -->the phone is not part of the network. It only draws the screen and sends commands over Bluetooth. With the phone switched off the node keeps receiving, relaying other people's traffic and storing messages for its owner. That is why a node can be put on a roof and forgotten.</figcaption></figure>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>The key difference from a walkie-talkie</div><div class="admonitionContent_BuS1"><p>A walkie-talkie hears only what reaches it directly. Meshtastic <strong>reuses other people's nodes</strong>: a message is retold by everyone who hears it for the first time. So in a city with a dozen active nodes there is a link where line of sight ended long ago.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-node-name-number-role">The node: name, number, role<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#the-node-name-number-role" class="hash-link" aria-label="Direct link to The node: name, number, role" title="Direct link to The node: name, number, role" translate="no">​</a></h2>
<p>The network has no registration and no accounts. A node simply switches on and starts telling the air about itself — and from those stories every neighbour builds its list of participants.</p>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 300" role="img" aria-label="Diagram: the node number comes from the MAC address, the node broadcasts NodeInfo about itself, and neighbours fill in their node lists"><text class="p-title" x="0" y="13">where the node number comes from</text><g class="stage" style="--d:0s"><rect x="0" y="34" width="210" height="44" rx="9" class="p-node" style="stroke:var(--k-25392f)"></rect><text class="p-lbl" x="14" y="52" style="font-size:9.5px">hardware MAC address</text><text x="14" y="68" style="font-family:var(--mono);font-size:12.5px;fill:var(--k-dcebe3)">a4:cf:12:7a:3f:19</text></g><path d="M220 56 h34 m-8 -5 l8 5 l-8 5" stroke-width="1.8" fill="none" class="stage" style="--d:1.2s;stroke:var(--k-4fe08a)"></path><g class="stage" style="--d:1.8s"><rect x="264" y="34" width="176" height="44" rx="9" style="fill:var(--k-14231e);stroke:var(--k-25392f)"></rect><text class="p-lbl" x="278" y="52" style="font-size:9.5px">last 4 bytes</text><text x="278" y="68" style="font-family:var(--mono);font-size:12.5px;fill:var(--k-4fe08a)">12 7a 3f 19</text></g><path d="M450 56 h34 m-8 -5 l8 5 l-8 5" stroke-width="1.8" fill="none" class="stage" style="--d:2.6s;stroke:var(--k-4fe08a)"></path><g class="stage" style="--d:3.2s"><rect x="494" y="28" width="230" height="56" rx="10" stroke-width="2" style="fill:var(--k-10291d);stroke:var(--k-4fe08a)"></rect><text class="p-lbl" x="609" y="48" text-anchor="middle" style="font-size:9.5px">node number</text><text x="609" y="70" text-anchor="middle" style="font-family:var(--mono);font-size:17px;fill:var(--k-4fe08a);font-weight:700">!127a3f19</text></g><text class="p-note" x="752" y="46">not a key hash, just</text><text class="p-note" x="752" y="62">a piece of the board's</text><text class="p-note" x="752" y="78">factory address — so it never changes</text><text class="p-title" x="0" y="126">and this is the node describing itself · NodeInfo</text><g class="p-link"><path d="M120 200 L300 176 M120 200 L300 226 M300 176 L480 200 M300 226 L480 200"></path></g><g fill="none" stroke-width="1.4" style="stroke:var(--k-4fe08a)"><circle class="rng" cx="120" cy="200" r="10" style="--d:.3s"></circle><circle class="rng" cx="120" cy="200" r="10" style="--d:2s"></circle></g><circle cx="120" cy="200" r="22" class="p-node" stroke-width="2.5" style="stroke:var(--k-4fe08a)"></circle><text class="p-lbl p-ink" x="120" y="205" text-anchor="middle" style="font-size:10px">YOU</text><circle cx="300" cy="176" r="15" class="p-node" stroke-width="2" style="stroke:var(--k-25392f)"></circle><circle cx="300" cy="226" r="15" class="p-node" stroke-width="2" style="stroke:var(--k-25392f)"></circle><circle cx="480" cy="200" r="15" class="p-node" stroke-width="2" style="stroke:var(--k-25392f)"></circle><text class="p-lbl" x="120" y="252" text-anchor="middle" style="font-size:9.5px">every few hours — "I'm here, this is who I am"</text><rect x="560" y="140" width="440" height="128" rx="10" style="fill:var(--k-14231e);stroke:var(--k-25392f)"></rect><text class="p-lbl" x="576" y="160" style="font-size:9.5px">node list in the app</text><g style="font-family:var(--mono);font-size:11.5px"><g class="appear" style="--d:1s"><text x="576" y="184" style="fill:var(--k-dcebe3)">!127a3f19</text><text x="676" y="184" style="fill:var(--k-4fe08a)">PTRO</text><text x="740" y="184" style="fill:var(--k-7d968a)">Petro's node</text><text x="900" y="184" style="fill:var(--k-7d968a)">0 hops</text></g><g class="appear" style="--d:3s"><text x="576" y="208" style="fill:var(--k-dcebe3)">!8ab21044</text><text x="676" y="208" style="fill:var(--k-4fe08a)">HILL</text><text x="740" y="208" style="fill:var(--k-7d968a)">Repeater Hill</text><text x="900" y="208" style="fill:var(--k-7d968a)">1 hop</text></g><g class="appear" style="--d:5s"><text x="576" y="232" style="fill:var(--k-dcebe3)">!5f90c3e1</text><text x="676" y="232" style="fill:var(--k-4fe08a)">ANNA</text><text x="740" y="232" style="fill:var(--k-7d968a)">Anna T-Echo</text><text x="900" y="232" style="fill:var(--k-7d968a)">2 hops</text></g><g class="appear" style="--d:7s"><text x="576" y="256" style="fill:var(--k-dcebe3)">!c4470b2a</text><text x="676" y="256" style="fill:var(--k-4fe08a)">SOLR</text><text x="740" y="256" style="fill:var(--k-7d968a)">Solar mast</text><text x="900" y="256" style="fill:var(--k-7d968a)">3 hops</text></g></g><text class="p-note" x="0" y="292">The short name is exactly four characters: it has to fit a tiny screen and the air, where every byte counts.</text></svg></div><figcaption><strong>The difference from Reticulum:</strong> <!-- -->there an address is the cryptographic fingerprint of a key and cannot be forged. Here the number is just a piece of the factory MAC address, and the owner types the name. Until per-node keys appeared (see the section on channels), this meant anyone could pose under someone else's name.</figcaption></figure>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">What a node says about itself</p><div class="ms-card__body"><ul>
<li class=""><strong>NodeInfo</strong> — number, short and long name, board model, role</li>
<li class=""><strong>Position</strong> — GPS coordinates, if enabled. Can be set by hand or not shared at all</li>
<li class=""><strong>Telemetry</strong> — battery voltage and charge, channel utilisation, sensor data</li>
<li class=""><strong>NeighborInfo</strong> — which nodes it hears directly: useful for the map, expensive for the air</li>
</ul></div></div><div class="ms-card frame"><p class="ms-card__title">The first thing to know</p><div class="ms-card__body"><p>Right after flashing, remember: <strong>the short name, long name and position are visible to everyone in range</strong>, including strangers and people collecting nodes for public maps. If that was not the plan, turn position sharing off or set an approximate point by hand.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="channels-and-keys-who-reads-what">Channels and keys: who reads what<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#channels-and-keys-who-reads-what" class="hash-link" aria-label="Direct link to Channels and keys: who reads what" title="Direct link to Channels and keys: who reads what" translate="no">​</a></h2>
<p>This is where the most confusion and the most mistakes are: the word "encrypted" in Meshtastic means something quite different from what people usually imagine.</p>
<p>A <strong>channel</strong> is a "name + key" pair. Everything sent in the channel is encrypted with that key — AES, 128-bit for the default channel, 256-bit for one generated by the app. Whoever has the key reads <strong>everything</strong>. Channels are shared through a QR code or a link, and the key sits right inside it.</p>
<p>The catch is that the default channel, <code>LongFast</code>, has a <strong>public key that is the same for everyone on the planet</strong>. That is deliberate: so two strangers who switch on their boards for the first time hear each other straight away. But it means the default channel is a public square, not a private room.</p>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 330" role="img" aria-label="Diagram: who can read a message in a shared channel, in a private channel, and in an end-to-end encrypted direct message"><text class="p-title" x="0" y="13">the same message · three cases</text><g class="mode3" style="--d:0s"><text class="p-lbl" x="0" y="44" style="font-size:11px;fill:var(--k-f2b23f)">case 1 · default LongFast channel</text><circle cx="90" cy="82" r="20" class="p-node" stroke-width="2" style="stroke:var(--k-f2b23f)"></circle><text class="p-lbl p-ink" x="90" y="87" text-anchor="middle" style="font-size:10px">YOU</text><path d="M114 82 H 700" stroke-width="1.6" fill="none" class="flow" style="stroke:var(--k-f2b23f)"></path><g stroke-width="1.8" style="stroke:var(--k-f2b23f);fill:var(--k-14231e)"><circle cx="360" cy="82" r="16"></circle><circle cx="530" cy="82" r="16"></circle><circle cx="724" cy="82" r="20"></circle></g><text class="p-lbl" x="360" y="112" text-anchor="middle" style="font-size:9.5px">neighbour</text><text class="p-lbl" x="530" y="112" text-anchor="middle" style="font-size:9.5px">stranger</text><text class="p-lbl" x="724" y="112" text-anchor="middle" style="font-size:9.5px">recipient</text><text class="p-lbl" x="770" y="78" style="font-size:10.5px;fill:var(--k-f2b23f)">all three can read it:</text><text class="p-lbl" x="770" y="94" style="font-size:10.5px;fill:var(--k-f2b23f)">everyone has the same key</text></g><g class="mode3" style="--d:6s"><text class="p-lbl" x="0" y="154" style="font-size:11px;fill:var(--k-4fe08a)">case 2 · your own channel with its own key</text><circle cx="90" cy="192" r="20" class="p-node" stroke-width="2" style="stroke:var(--k-4fe08a)"></circle><text class="p-lbl p-ink" x="90" y="197" text-anchor="middle" style="font-size:10px">YOU</text><path d="M114 192 H 700" stroke-width="1.6" fill="none" class="flow" style="stroke:var(--k-4fe08a)"></path><g stroke-width="1.8" style="stroke:var(--k-4fe08a);fill:var(--k-14231e)"><circle cx="360" cy="192" r="16"></circle><circle cx="724" cy="192" r="20"></circle></g><g stroke-width="1.8" style="stroke:var(--k-7d968a);fill:var(--k-14231e)"><circle cx="530" cy="192" r="16"></circle></g><text class="p-lbl" x="360" y="222" text-anchor="middle" style="font-size:9.5px">has the key</text><text class="p-lbl" x="530" y="222" text-anchor="middle" style="font-size:9.5px">no key</text><text class="p-lbl" x="724" y="222" text-anchor="middle" style="font-size:9.5px">has the key</text><text x="530" y="176" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-7d968a)">sees only noise</text><text class="p-lbl" x="770" y="188" style="font-size:10.5px;fill:var(--k-4fe08a)">only those can read it</text><text class="p-lbl" x="770" y="204" style="font-size:10.5px;fill:var(--k-4fe08a)">who got the QR code</text></g><g class="mode3" style="--d:12s"><text class="p-lbl" x="0" y="264" style="font-size:11px;fill:var(--k-a894f5)">case 3 · direct message, end-to-end keys</text><circle cx="90" cy="300" r="20" class="p-node" stroke-width="2" style="stroke:var(--k-a894f5)"></circle><text class="p-lbl p-ink" x="90" y="305" text-anchor="middle" style="font-size:10px">YOU</text><path d="M114 300 H 700" stroke-width="1.6" fill="none" class="flow" style="stroke:var(--k-a894f5)"></path><g stroke-width="1.8" style="stroke:var(--k-7d968a);fill:var(--k-14231e)"><circle cx="360" cy="300" r="16"></circle><circle cx="530" cy="300" r="16"></circle></g><g stroke-width="1.8" style="stroke:var(--k-a894f5);fill:var(--k-14231e)"><circle cx="724" cy="300" r="20"></circle></g><text class="p-lbl" x="360" y="284" text-anchor="middle" style="font-size:9px">relays,</text><text class="p-lbl" x="360" y="330" text-anchor="middle" style="font-size:9px">but cannot read</text><text class="p-lbl" x="530" y="330" text-anchor="middle" style="font-size:9px">cannot read either</text><text class="p-lbl" x="770" y="296" style="font-size:10.5px;fill:var(--k-a894f5)">only the recipient reads it —</text><text class="p-lbl" x="770" y="312" style="font-size:10.5px;fill:var(--k-a894f5)">even on a shared channel</text></g></svg></div><figcaption><strong>The third case did not exist at first.</strong> <!-- -->In early versions a "private message" was encrypted with the same channel key — so anyone in the channel could read it and even send one under someone else's name. Version 2.5 added per-node keys (Curve25519): private messages are now encrypted between specific nodes and authenticate the sender.</figcaption></figure>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Three rules that save you disappointment</div><div class="admonitionContent_BuS1"><p><strong>1.</strong> The default channel is a public square, not a private room. <strong>2.</strong> Whoever got the channel QR code reads everything in it for ever: the key does not expire and does not change by itself. <strong>3.</strong> There is no forward secrecy here: if someone recorded the air and later got the key, old messages can be decrypted.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="packet-anatomy-16--237">Packet anatomy: 16 + 237<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#packet-anatomy-16--237" class="hash-link" aria-label="Direct link to Packet anatomy: 16 + 237" title="Direct link to Packet anatomy: 16 + 237" translate="no">​</a></h2>
<p>The radio frame here is limited to 256 bytes. Sixteen of them are header, the rest is payload. That number explains half of Meshtastic's limits.</p>
<figure class="ms-fig ms-mesh ms-packet"><div class="ms-tabs" role="group" aria-label="Packet type"><button type="button" aria-pressed="true">text message</button><button type="button" aria-pressed="false">position</button><button type="button" aria-pressed="false">telemetry</button></div><div class="ms-bytes" aria-live="polite"><div class="ms-bseg" style="flex-grow:4"><b>4</b><small>to</small></div><div class="ms-bseg" style="flex-grow:4"><b>4</b><small>from</small></div><div class="ms-bseg" style="flex-grow:4"><b>4</b><small>packet ID</small></div><div class="ms-bseg" style="flex-grow:1"><b>1</b><small>flags</small></div><div class="ms-bseg" style="flex-grow:1"><b>1</b><small>channel</small></div><div class="ms-bseg" style="flex-grow:1"><b>1</b><small>next hop</small></div><div class="ms-bseg" style="flex-grow:1"><b>1</b><small>relayed by</small></div><div class="ms-bseg ms-bseg--data" style="flex-grow:237"><b>237</b><small>text, up to 237 bytes</small></div></div><div class="ms-bruler"><span>0</span><span>16-byte header — the rest is for text</span><span>253 bytes</span></div><figcaption><strong>Three packet types:</strong> <!-- -->text can take all 237 bytes, but position and telemetry are compact structures of a couple of dozen bytes. The difference matters: it is the small housekeeping packets, sent automatically and regularly, that eat the airtime faster than live chat.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-flags-byte">The flags byte<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#the-flags-byte" class="hash-link" aria-label="Direct link to The flags byte" title="Direct link to The flags byte" translate="no">​</a></h3>
<figure class="ms-fig ms-mesh"><div class="ms-bits"><div class="ms-bit" style="flex-grow:3"><b>HOP LIMIT</b>how many relays are still allowed — 3 bits, so at most 7</div><div class="ms-bit" style="flex-grow:1"><b>ACK</b>whether an acknowledgement is wanted</div><div class="ms-bit" style="flex-grow:1"><b>MQTT</b>whether the packet came from the internet</div><div class="ms-bit" style="flex-grow:3"><b>HOP START</b>how many were allowed at the start — so the hops taken can be counted</div></div><figcaption>The pair "how many are left" and "how many there were" is a small but clever detail: by subtracting one from the other the app knows exactly how many nodes the message went through, and shows it next to each sender.</figcaption></figure>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Why exactly 237</div><div class="admonitionContent_BuS1"><p>Minus the header, minus the protocol's own fields — 237 bytes remain. The app will cut longer text or split it into several messages, and each one flies separately through the whole mesh. That is why long walls of text on air are bad manners: one such message can cost the network more than an hour of ordinary chat.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="managed-flooding--the-heart-of-the-network">Managed flooding — the heart of the network<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#managed-flooding--the-heart-of-the-network" class="hash-link" aria-label="Direct link to Managed flooding — the heart of the network" title="Direct link to Managed flooding — the heart of the network" translate="no">​</a></h2>
<p>Meshtastic has no routing tables and nobody who knows the network map. Instead there is a deliberately primitive rule: <strong>heard it for the first time — retell it once</strong>. All the engineering is in the word "managed": how to stop that rule turning the air into mush.</p>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 420" role="img" aria-label="Animation: a message floods the network, the hop counter goes down, duplicates are dropped"><text class="p-title" x="0" y="13">one message · four levels · duplicates in the bin</text><g class="p-link"><path d="M100 330 L250 220 M100 330 L280 380 M250 220 L470 150 M250 220 L520 300 M280 380 L520 300 M470 150 L720 210 M520 300 L720 210 M720 210 L900 320"></path></g><g fill="none" stroke-width="1.4" style="stroke:var(--k-4fe08a)"><circle class="rng" cx="100" cy="330" r="10" style="--d:.6s"></circle><circle class="rng" cx="100" cy="330" r="10" style="--d:2.3s"></circle></g><circle cx="100" cy="330" r="22" class="p-node" stroke-width="2.5" style="stroke:var(--k-4fe08a)"></circle><text class="p-lbl p-ink" x="100" y="335" text-anchor="middle" style="font-size:11px;font-weight:700">A</text><text class="p-lbl" x="100" y="374" text-anchor="middle" style="font-size:9.5px">sender</text><text x="100" y="296" text-anchor="middle" style="font-family:var(--mono);font-size:12px;fill:var(--k-4fe08a);font-weight:700">hops: 3</text><circle class="p-node lit" cx="250" cy="220" r="18" stroke-width="2" style="--d:2.4s;stroke:var(--k-25392f)"></circle><text class="p-lbl p-ink" x="250" y="225" text-anchor="middle">B</text><text class="appear" x="250" y="190" text-anchor="middle" style="--d:2.4s;font-family:var(--mono);font-size:11px;fill:var(--k-4fe08a)">2</text><text class="appear p-lbl" x="250" y="176" text-anchor="middle" style="--d:2.4s;font-size:9px">heard well → waits longer</text><circle class="p-node lit" cx="280" cy="380" r="18" stroke-width="2" style="--d:2.4s;stroke:var(--k-25392f)"></circle><text class="p-lbl p-ink" x="280" y="385" text-anchor="middle">C</text><text class="appear" x="280" y="412" text-anchor="middle" style="--d:2.4s;font-family:var(--mono);font-size:11px;fill:var(--k-4fe08a)">2</text><text class="appear p-lbl" x="130" y="412" style="--d:2.4s;font-size:9px">barely heard → relays first</text><circle class="p-node lit" cx="470" cy="150" r="18" stroke-width="2" style="--d:4.4s;stroke:var(--k-25392f)"></circle><text class="p-lbl p-ink" x="470" y="155" text-anchor="middle">D</text><text class="appear" x="470" y="120" text-anchor="middle" style="--d:4.4s;font-family:var(--mono);font-size:11px;fill:var(--k-4fe08a)">1</text><circle class="p-node lit" cx="520" cy="300" r="18" stroke-width="2" style="--d:3.8s;stroke:var(--k-25392f)"></circle><text class="p-lbl p-ink" x="520" y="305" text-anchor="middle">E</text><text class="appear" x="520" y="340" text-anchor="middle" style="--d:3.8s;font-family:var(--mono);font-size:11px;fill:var(--k-4fe08a)">1</text><circle class="p-node lit" cx="720" cy="210" r="18" stroke-width="2" style="--d:6s;stroke:var(--k-25392f)"></circle><text class="p-lbl p-ink" x="720" y="215" text-anchor="middle">F</text><text class="appear" x="720" y="180" text-anchor="middle" style="--d:6s;font-family:var(--mono);font-size:11px;fill:var(--k-f2b23f)">0</text><text class="appear p-lbl" x="720" y="166" text-anchor="middle" style="--d:6s;font-size:9px">no more relaying allowed</text><circle class="p-node lit" cx="900" cy="320" r="22" stroke-width="2.5" style="--d:7.6s;stroke:var(--k-25392f)"></circle><text class="p-lbl p-ink" x="900" y="325" text-anchor="middle" style="font-size:11px;font-weight:700">G</text><text class="appear p-lbl" x="900" y="362" text-anchor="middle" style="--d:7.6s;font-size:9.5px">recipient: delivered</text><circle class="hp" r="7" style="--x0:100px;--y0:330px;--x1:250px;--y1:220px;--d:1.4s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="7" style="--x0:100px;--y0:330px;--x1:280px;--y1:380px;--d:1.4s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="7" style="--x0:280px;--y0:380px;--x1:520px;--y1:300px;--d:2.9s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="7" style="--x0:250px;--y0:220px;--x1:470px;--y1:150px;--d:3.5s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="7" style="--x0:250px;--y0:220px;--x1:520px;--y1:300px;--d:3.5s;fill:var(--k-7d968a)"></circle><circle class="hp" r="7" style="--x0:470px;--y0:150px;--x1:720px;--y1:210px;--d:5.1s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="7" style="--x0:520px;--y0:300px;--x1:720px;--y1:210px;--d:5.1s;fill:var(--k-7d968a)"></circle><circle class="hp" r="7" style="--x0:720px;--y0:210px;--x1:900px;--y1:320px;--d:6.7s;fill:var(--k-4fe08a)"></circle><g class="appear" style="--d:4.6s"><circle cx="566" cy="268" r="12" stroke-width="1.4" style="fill:var(--k-2b1512);stroke:var(--k-f47d70)"></circle><text x="566" y="273" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-f47d70)">✕</text><text x="584" y="262" style="font-family:var(--mono);font-size:9.5px;fill:var(--k-f47d70)">same packet number —</text><text x="584" y="276" style="font-family:var(--mono);font-size:9.5px;fill:var(--k-f47d70)">already seen, dropping</text></g><g class="appear" style="--d:6.2s"><circle cx="668" cy="252" r="12" stroke-width="1.4" style="fill:var(--k-2b1512);stroke:var(--k-f47d70)"></circle><text x="668" y="257" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-f47d70)">✕</text></g><text class="p-note" x="0" y="46">grey dots are duplicates: they arrive second and go nowhere</text></svg></div><figcaption><strong>Three mechanisms make the flood managed:</strong> <!-- -->the hop counter limits the depth; the packet number lets a node recognise a duplicate and quietly drop it; and the delay before relaying depends on how well the node heard the signal. That last bit of logic is counter-intuitive and very elegant.</figcaption></figure>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">mechanism 1</p><p class="ms-card__title">The hop counter</p><div class="ms-card__body"><p>The sender sets 3. Everyone who relays subtracts one; at zero the packet goes no further. The maximum is 7, but that is almost always a bad idea: every extra hop multiplies the number of transmissions on air.</p></div></div><div class="ms-card frame"><p class="ms-card__label">mechanism 2</p><p class="ms-card__title">Recognising duplicates</p><div class="ms-card__body"><p>Every packet has a number. A node remembers what it has already seen and simply throws the second copy away. Without this one message in a dense network would start an avalanche that jams the air for minutes.</p></div></div><div class="ms-card frame"><p class="ms-card__label">mechanism 3</p><p class="ms-card__title">The farthest goes first</p><div class="ms-card__body"><p>Before relaying, a node waits — the <strong>less</strong> time, the <strong>worse</strong> it heard the signal. So the farthest node relays first, the one that pushes the message furthest. The near ones, hearing the repeat, understand their help is no longer needed and stay quiet.</p></div></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Where it is heading</div><div class="admonitionContent_BuS1"><p>Pure flooding works well on dozens of nodes and poorly on hundreds. So in newer firmware a node <strong>remembers through whom it last reached</strong> a particular recipient and sends private messages along that path rather than to the whole network. Group messages in a channel still go by flooding — otherwise nobody would hear them.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="node-roles--and-why-router-is-not-a-compliment">Node roles — and why ROUTER is not a compliment<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#node-roles--and-why-router-is-not-a-compliment" class="hash-link" aria-label="Direct link to Node roles — and why ROUTER is not a compliment" title="Direct link to Node roles — and why ROUTER is not a compliment" translate="no">​</a></h2>
<p>The role is a single setting that changes how a node behaves on air. And it is the most common way well-meaning beginners harm a network.</p>
<table><thead><tr><th>role</th><th>what it does</th><th>who it suits</th></tr></thead><tbody><tr><td>CLIENT</td><td>An ordinary participant: sends its own, shows the chat, relays others'</td><td><strong>The default choice for 95 % of people.</strong> A board in a pocket, a car, on a desk at home</td></tr><tr><td>CLIENT_MUTE</td><td>The same, but <strong>does not relay</strong> others'</td><td>A dense city with dozens of nodes, where relaying adds nothing and only eats airtime and battery</td></tr><tr><td>ROUTER</td><td>Relays others' with priority, saves power, says less about itself</td><td><strong>Only</strong> a node up high: a roof, a tower, a mountain. Not a flat</td></tr><tr><td>ROUTER_LATE</td><td>Always relays once, but after everyone else — to fill in coverage for its group of nodes</td><td>An extra node up high that backs up the main one rather than competing with it</td></tr><tr><td>TRACKER</td><td>Reports its position regularly, sleeps the rest of the time</td><td>A backpack, a bicycle, a dog, a drone</td></tr><tr><td>SENSOR</td><td>Reports sensor data on a schedule</td><td>A greenhouse, water level, a door sensor</td></tr></tbody></table>
<p>This list once also had a REPEATER role — a "mute" relay brick that does not show up in the node list. Since firmware 2.7.11 it is deprecated; masts now get ROUTER or ROUTER_LATE.</p>
<div class="theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>The most common harm to a network</div><div class="admonitionContent_BuS1"><p>Setting the <strong>ROUTER</strong> role because it "sounds serious" and leaving the board on a windowsill. Such a node gets priority in relaying but hears badly — and instead of extending the network it only adds extra transmissions and talks over those who really are up high. The rule is simple: <strong>ROUTER is about height, not about wanting to help.</strong> If the node is not on a roof or a mountain, its role is CLIENT.</p></div></div>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">When CLIENT_MUTE makes sense</p><div class="ms-card__body"><p>In the centre of a big city where thirty nodes are audible, one more relay statistically adds no coverage: everything it hears, its neighbours hear too. But it does add one more transmission to air that is already jammed. Turning relaying off in that situation is not selfishness but hygiene.</p></div></div><div class="ms-card frame"><p class="ms-card__title">How many “routers” are really needed</p><div class="ms-card__body"><p>A healthy mesh is a few nodes raised high and many ordinary clients. Not the other way round. One node on a hill gives more coverage than twenty on windowsills and at the same time <em>reduces</em> the load on the air, because a message needs fewer hops.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="radio-presets-far-versus-fast">Radio presets: far versus fast<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#radio-presets-far-versus-fast" class="hash-link" aria-label="Direct link to Radio presets: far versus fast" title="Direct link to Radio presets: far versus fast" translate="no">​</a></h2>
<p>The radio settings here come down to one choice from a list — the preset. The most important thing about it: it is <strong>not a quality knob but a shared language</strong>. Nodes with different presets simply do not hear each other.</p>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 320" role="img" aria-label="Trade-off chart: presets from the slowest and longest-range to the fastest and shortest-range"><text class="p-title" x="0" y="13">the same trade-off, eight main presets</text><path d="M140 70 C 300 90, 420 150, 560 185 C 700 220, 840 250, 900 258" stroke-width="1.6" fill="none" stroke-dasharray="4 5" style="stroke:var(--k-25392f)"></path><text class="p-lbl" x="40" y="60" style="font-size:10px">far</text><text class="p-lbl" x="40" y="272" style="font-size:10px">near</text><text class="p-lbl" x="120" y="302" style="font-size:10px">slow · 0.18 kbit/s</text><text class="p-lbl" x="900" y="302" text-anchor="end" style="font-size:10px">fast · 21.88 kbit/s</text><line x1="120" y1="286" x2="900" y2="286" stroke-width="1.5" style="stroke:var(--k-25392f)"></line><path d="M892 281 l8 5 l-8 5" fill="none" stroke-width="1.5" style="stroke:var(--k-25392f)"></path><g class="appear8" style="--d:.2s"><circle cx="140" cy="70" r="7" style="fill:var(--k-6cc4f0)"></circle><text class="p-lbl p-ink" x="152" y="66" style="font-size:10.5px">LONG_SLOW</text><text class="p-lbl" x="152" y="80" style="font-size:9px">0.18 kbit/s · SF12</text></g><g class="appear8" style="--d:.7s"><circle cx="228" cy="98" r="7" style="fill:var(--k-6cc4f0)"></circle><text class="p-lbl p-ink" x="240" y="94" style="font-size:10.5px">LONG_MODERATE</text><text class="p-lbl" x="240" y="108" style="font-size:9px">0.34 kbit/s</text></g><g class="appear8" style="--d:1.2s"><circle cx="352" cy="132" r="12" style="fill:var(--k-4fe08a)"></circle><circle cx="352" cy="132" r="19" fill="none" stroke-width="1.4" opacity=".55" style="stroke:var(--k-4fe08a)"></circle><text x="372" y="128" style="font-family:var(--mono);font-size:12px;fill:var(--k-4fe08a);font-weight:700">LONG_FAST</text><text class="p-lbl" x="372" y="143" style="font-size:9.5px">1.07 kbit/s · SF11 · the default worldwide</text></g><g class="appear8" style="--d:1.7s"><circle cx="466" cy="162" r="7" style="fill:var(--k-7d968a)"></circle><text class="p-lbl p-ink" x="478" y="158" style="font-size:10.5px">MEDIUM_SLOW</text><text class="p-lbl" x="478" y="172" style="font-size:9px">1.95 kbit/s</text></g><g class="appear8" style="--d:2.2s"><circle cx="578" cy="190" r="7" style="fill:var(--k-7d968a)"></circle><text class="p-lbl p-ink" x="590" y="186" style="font-size:10.5px">MEDIUM_FAST</text><text class="p-lbl" x="590" y="200" style="font-size:9px">3.52 kbit/s</text></g><g class="appear8" style="--d:2.7s"><circle cx="688" cy="216" r="7" style="fill:var(--k-f2b23f)"></circle><text class="p-lbl p-ink" x="700" y="212" style="font-size:10.5px">SHORT_SLOW</text><text class="p-lbl" x="700" y="226" style="font-size:9px">6.25 kbit/s</text></g><g class="appear8" style="--d:3.2s"><circle cx="792" cy="240" r="7" style="fill:var(--k-f2b23f)"></circle><text class="p-lbl p-ink" x="804" y="236" style="font-size:10.5px">SHORT_FAST</text><text class="p-lbl" x="804" y="250" style="font-size:9px">10.94 kbit/s</text></g><g class="appear8" style="--d:3.7s"><circle cx="890" cy="260" r="7" style="fill:var(--k-f47d70)"></circle><text class="p-lbl p-ink" x="826" y="274" style="font-size:10.5px">SHORT_TURBO</text><text class="p-lbl" x="826" y="288" style="font-size:9px">21.88 kbit/s · not allowed everywhere</text></g></svg></div><figcaption><strong>Why almost everyone sits on LONG_FAST:</strong> <!-- -->it is the default compromise, and that is exactly why it works. A mesh only makes sense when neighbours hear each other — so switching on your own makes no sense at all. Presets are changed only by agreement across the whole local community.</figcaption></figure>
<p>Besides the eight presets on the diagram there is also LONG_TURBO: SF11 on a 500 kHz band, 1.34 kbit/s. The wide band is not allowed in every region, so check your band's rules before using it. What lies behind SF and bandwidth is in the <a class="" href="https://cyberdev.space/en/blog/lora-up-close/">LoRa deep dive</a>.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>What really gives range</div><div class="admonitionContent_BuS1"><p>Going from LONG_FAST to LONG_SLOW adds a few decibels of sensitivity — and makes the network six times slower: 1.07 kbit/s versus 0.18. Raising the antenna by ten metres or fitting a proper antenna instead of the stubby one in the box gives many times more. <strong>Height and antenna almost always beat settings.</strong></p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-air-is-finite-time-on-air-and-duty-cycle">The air is finite: time on air and duty cycle<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#the-air-is-finite-time-on-air-and-duty-cycle" class="hash-link" aria-label="Direct link to The air is finite: time on air and duty cycle" title="Direct link to The air is finite: time on air and duty cycle" translate="no">​</a></h2>
<p>The most important section for anyone who wants their mesh to work. The whole network shares <strong>one frequency</strong>: while someone transmits, everyone else is silent. And transmission here is inconveniently slow.</p>
<p>The LONG_FAST preset gives about 1070 bits per second. A full packet is 253 bytes, that is over two thousand bits, so <strong>one long message occupies the shared air for over two seconds</strong> — with the preamble and LoRa's overhead symbols it comes to 2.1 s. And every node that relays it transmits it once more.</p>
<table><thead><tr><th>what flies</th><th>size</th><th>airtime on LONG_FAST</th><th>how often</th></tr></thead><tbody><tr><td>Node position</td><td>≈ 46 bytes</td><td>≈ 0.60 s</td><td>On a schedule, automatically — every node with GPS</td></tr><tr><td>Telemetry (battery, sensors)</td><td>≈ 40 bytes</td><td>≈ 0.56 s</td><td>On a schedule, automatically</td></tr><tr><td>NodeInfo (who I am)</td><td>≈ 60 bytes</td><td>≈ 0.68 s</td><td>Periodically, every node</td></tr><tr><td>Short message, 40 characters</td><td>≈ 56 bytes</td><td>≈ 0.68 s</td><td>When people write</td></tr><tr><td>Full message, 237 bytes</td><td>253 bytes</td><td>≈ 2.12 s</td><td>When someone writes a wall of text</td></tr></tbody></table>
<p>Computed with the Semtech formula for LongFast: SF11, 250 kHz bandwidth, CR 4/5, a 16-symbol preamble — which is what Meshtastic uses. You can estimate your own case with the <a class="" href="https://cyberdev.space/en/blog/lora-up-close/">time-on-air calculator</a> in the LoRa deep dive. And each of these numbers still has to be multiplied by the number of nodes that relay the packet.</p>
<figure class="ms-fig ms-mesh"><p class="ms-calc__title">channel utilisation · as the app shows it</p><div class="ms-util" role="img" aria-label="Channel utilisation scale: up to 25 % — a healthy network, 25–50 % — the firmware holds back optional traffic, above 50 % — messages get lost"><span class="ms-util__ok"></span><span class="ms-util__warn"></span><span class="ms-util__bad"></span></div><div class="ms-util__legend"><span class="ms-util__ok-t">0–25 % · healthy network</span><span class="ms-util__warn-t">25–50 % · firmware is already holding back</span><span class="ms-util__bad-t">50 %+ · messages start getting lost</span></div><figcaption><strong>This figure is the main health indicator of a mesh.</strong> <!-- -->As it creeps up, the firmware starts saving on its own: it sends telemetry less often and holds back optional traffic. But if there are too many nodes in range and each reports generously about itself, no automation will help — the air simply runs out.</figcaption></figure>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">What eats the most airtime</p><div class="ms-card__body"><ul>
<li class="">✕ Short telemetry and position intervals — they multiply by the number of nodes</li>
<li class="">✕ NeighborInfo: useful for the map, expensive for the air</li>
<li class="">✕ Hop limit 7 instead of 3 — every extra hop multiplies transmissions</li>
<li class="">✕ Long messages and bots that post to the channel regularly</li>
<li class="">✕ An MQTT bridge set up so that it pulls the whole world into the local mesh</li>
</ul></div></div><div class="ms-card frame"><p class="ms-card__title">What makes the network better</p><div class="ms-card__body"><ul>
<li class="">✓ Position and telemetry intervals in hours, not minutes</li>
<li class="">✓ Hop limit 3, and in a small network even 2</li>
<li class="">✓ One well-raised node instead of five on windowsills</li>
<li class="">✓ CLIENT_MUTE where relaying adds nothing</li>
<li class="">✓ Writing briefly: 40 characters take a third of the airtime of 237</li>
</ul></div></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>And the legal side</div><div class="admonitionContent_BuS1"><p>In most regions these frequencies come with a <strong>duty-cycle</strong> limit: a device may transmit only a small share of the time. The firmware enforces it itself — and that is why it may quietly <em>not send</em> a message when the limit is used up. That is not a bug, it is the law.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="telemetry-positions-traceroute">Telemetry, positions, traceroute<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#telemetry-positions-traceroute" class="hash-link" aria-label="Direct link to Telemetry, positions, traceroute" title="Direct link to Telemetry, positions, traceroute" translate="no">​</a></h2>
<p>Most of the traffic in a typical mesh is not people chatting but nodes talking about themselves. It is worth knowing what exactly flies and why.</p>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">position</p><p class="ms-card__title">Where the node is</p><div class="ms-card__body"><p>Coordinates from GPS or set by hand. The app's map shows everyone who shares a position. You can share nothing, an approximate position, or only within your own channel.</p></div></div><div class="ms-card frame"><p class="ms-card__label">telemetry</p><p class="ms-card__title">How it is doing</p><div class="ms-card__body"><p>Battery voltage and charge, channel utilisation, uptime. Plus sensor data if sensors are attached: temperature, humidity, pressure, water level.</p></div></div><div class="ms-card frame"><p class="ms-card__label">traceroute</p><p class="ms-card__title">Which way it went</p><div class="ms-card__body"><p>A separate button in the app: it shows the chain of nodes to the recipient and the signal quality on each leg. The most useful tool when working out why the link is bad.</p></div></div></div>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 220" role="img" aria-label="Traceroute: a message path through three intermediate nodes with the signal quality on each hop"><text class="p-title" x="0" y="13">traceroute · path and signal quality on each hop</text><g class="p-link"><path d="M104 120 H 316 M364 120 H 576 M624 120 H 836"></path></g><circle cx="76" cy="120" r="26" class="p-node" stroke-width="2.5" style="stroke:var(--k-4fe08a)"></circle><text class="p-lbl p-ink" x="76" y="125" text-anchor="middle" style="font-size:11px">YOU</text><circle class="p-node" cx="340" cy="120" r="22" stroke-width="2" style="stroke:var(--k-4fe08a)"></circle><text class="p-lbl p-ink" x="340" y="125" text-anchor="middle" style="font-size:10px">HILL</text><circle class="p-node" cx="600" cy="120" r="22" stroke-width="2" style="stroke:var(--k-4fe08a)"></circle><text class="p-lbl p-ink" x="600" y="125" text-anchor="middle" style="font-size:10px">SOLR</text><circle class="p-node" cx="864" cy="120" r="26" stroke-width="2.5" style="stroke:var(--k-4fe08a)"></circle><text class="p-lbl p-ink" x="864" y="125" text-anchor="middle" style="font-size:10px">ANNA</text><circle class="hp8" r="7" style="--x0:104px;--y0:120px;--x1:316px;--y1:120px;--d:.6s;fill:var(--k-4fe08a)"></circle><circle class="hp8" r="7" style="--x0:364px;--y0:120px;--x1:576px;--y1:120px;--d:1.6s;fill:var(--k-4fe08a)"></circle><circle class="hp8" r="7" style="--x0:624px;--y0:120px;--x1:836px;--y1:120px;--d:2.6s;fill:var(--k-4fe08a)"></circle><g class="appear8" style="--d:1.2s"><text x="210" y="100" text-anchor="middle" style="font-family:var(--mono);font-size:12px;fill:var(--k-4fe08a)">−6 dB</text><text class="p-lbl" x="210" y="152" text-anchor="middle" style="font-size:9.5px">heard perfectly</text></g><g class="appear8" style="--d:2.2s"><text x="470" y="100" text-anchor="middle" style="font-family:var(--mono);font-size:12px;fill:var(--k-f2b23f)">−14 dB</text><text class="p-lbl" x="470" y="152" text-anchor="middle" style="font-size:9.5px">on the edge, but holding</text></g><g class="appear8" style="--d:3.2s"><text x="730" y="100" text-anchor="middle" style="font-family:var(--mono);font-size:12px;fill:var(--k-4fe08a)">−4 dB</text><text class="p-lbl" x="730" y="152" text-anchor="middle" style="font-size:9.5px">heard perfectly</text></g><text class="p-note" x="0" y="196">The weak link stands out at once: if the link to ANNA keeps dropping, it is not ANNA's fault but the HILL → SOLR hop.</text></svg></div><figcaption><strong>How to read it:</strong> <!-- -->the number is the signal-to-noise ratio. Closer to zero and above is good; below minus fifteen is the edge where packets start getting lost. Traceroute shows not "is there a link" but<!-- --> <em>exactly where</em> <!-- -->it breaks — and that turns guesswork into diagnosis.</figcaption></figure>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="mqtt-when-the-mesh-climbs-onto-the-internet">MQTT: when the mesh climbs onto the internet<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#mqtt-when-the-mesh-climbs-onto-the-internet" class="hash-link" aria-label="Direct link to MQTT: when the mesh climbs onto the internet" title="Direct link to MQTT: when the mesh climbs onto the internet" translate="no">​</a></h2>
<p>A node with Wi-Fi can become a bridge: everything it hears on air it forwards to a server on the internet — and back. This is Meshtastic's most controversial feature, because it is both the most useful and the most harmful.</p>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 300" role="img" aria-label="Diagram: a local mesh reaches the internet through a gateway and can receive traffic from there"><text class="p-title" x="0" y="13">local air · gateway · internet · someone else's mesh</text><g class="p-link"><path d="M120 110 L250 160 M120 220 L250 160 M250 160 L352 160"></path></g><g stroke-width="2" style="stroke:var(--k-25392f)"><circle class="p-node" cx="120" cy="110" r="17"></circle><circle class="p-node" cx="120" cy="220" r="17"></circle></g><circle class="p-node" cx="250" cy="160" r="19" stroke-width="2" style="stroke:var(--k-4fe08a)"></circle><text class="p-lbl" x="185" y="258" text-anchor="middle" style="font-size:9.5px">local mesh</text><rect x="352" y="132" width="96" height="56" rx="10" class="p-node" stroke-width="2" style="stroke:var(--k-6cc4f0)"></rect><text class="p-lbl p-ink" x="400" y="156" text-anchor="middle" style="font-size:10px">gateway</text><text class="p-lbl" x="400" y="172" text-anchor="middle" style="font-size:9px">node + Wi-Fi</text><path d="M462 160 H 556" stroke-width="1.8" fill="none" class="flow" style="stroke:var(--k-6cc4f0)"></path><path d="M596 92 a24 24 0 0 1 45 -13 a21 21 0 0 1 40 8 a20 20 0 0 1 -3 40 H 614 a21 21 0 0 1 -21 -35 z" stroke-width="1.6" style="fill:var(--k-14231e);stroke:var(--k-6cc4f0)"></path><text class="p-lbl" x="640" y="118" text-anchor="middle" style="font-size:10px;fill:var(--k-6cc4f0)">MQTT server</text><path d="M556 160 C 590 160, 600 130, 618 128" stroke-width="1.8" fill="none" class="flow" style="stroke:var(--k-6cc4f0)"></path><g class="p-link"><path d="M700 128 L790 160 M790 160 L900 110 M790 160 L900 220"></path></g><g stroke-width="2" style="stroke:var(--k-25392f)"><circle class="p-node" cx="790" cy="160" r="19"></circle><circle class="p-node" cx="900" cy="110" r="17"></circle><circle class="p-node" cx="900" cy="220" r="17"></circle></g><text class="p-lbl" x="850" y="258" text-anchor="middle" style="font-size:9.5px">someone's mesh a thousand kilometres away</text><circle class="hp" r="6" style="--x0:120px;--y0:110px;--x1:250px;--y1:160px;--d:.8s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="6" style="--x0:250px;--y0:160px;--x1:352px;--y1:160px;--d:2s;fill:var(--k-4fe08a)"></circle><circle class="hp" r="6" style="--x0:462px;--y0:160px;--x1:618px;--y1:128px;--d:3.2s;fill:var(--k-6cc4f0)"></circle><g class="appear" style="--d:7s"><path d="M618 140 C 560 168, 520 190, 462 190" stroke-width="1.8" fill="none" stroke-dasharray="5 4" style="stroke:var(--k-f47d70)"></path><path d="M352 190 H 300 M300 190 L260 176" stroke-width="1.8" fill="none" stroke-dasharray="5 4" style="stroke:var(--k-f47d70)"></path><circle cx="330" cy="212" r="12" stroke-width="1.4" style="fill:var(--k-2b1512);stroke:var(--k-f47d70)"></circle><text x="330" y="217" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-f47d70)">!</text><text x="352" y="226" style="font-family:var(--mono);font-size:10px;fill:var(--k-f47d70)">downlink: the whole world will pour</text><text x="352" y="240" style="font-family:var(--mono);font-size:10px;fill:var(--k-f47d70)">into the local air — and choke it</text></g><text class="p-note" x="0" y="286">Green and blue are the useful direction: the local mesh becomes visible on the map. Red is what gets switched on carelessly.</text></svg></div><figcaption><strong>The asymmetry matters.</strong> <!-- -->Sending your traffic to the internet is cheap: it costs no airtime, because the packet has already been on air. But pulling traffic from the internet<!-- --> <em>back on air</em> <!-- -->means new transmissions on a channel that is already shared. That is why the downlink is off by default, and local communities ask people not to enable it without a reason.</figcaption></figure>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">Why people turn it on</p><div class="ms-card__body"><ul>
<li class="">✓ To see their mesh on a public node map</li>
<li class="">✓ To link two distant meshes — their own and friends' in another city</li>
<li class="">✓ To pull telemetry into home automation or charts</li>
<li class="">✓ To archive messages, because the node itself keeps nothing for long</li>
</ul></div></div><div class="ms-card frame"><p class="ms-card__title">Why people argue about it</p><div class="ms-card__body"><ul>
<li class="">✕ A mesh that depends on the internet stops being a network "for when there is no internet"</li>
<li class="">✕ A carelessly enabled downlink kills the local air with outside traffic</li>
<li class="">✕ Everything sent to a public server on the default channel becomes public — positions included</li>
</ul><p>The compromise: send, but do not receive — and not on the default channel.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hardware-boards-antenna-solar">Hardware: boards, antenna, solar<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#hardware-boards-antenna-solar" class="hash-link" aria-label="Direct link to Hardware: boards, antenna, solar" title="Direct link to Hardware: boards, antenna, solar" translate="no">​</a></h2>
<p>There is no "right" board — there are a few families, each for its own scenario. The difference between them is not speed but how long a node lives away from a socket.</p>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 900 300" role="img" aria-label="Schematic of a typical board: microcontroller, LoRa radio, GPS, battery, antenna"><text class="p-title" x="0" y="13">a typical board · what is on it</text><rect x="30" y="60" width="380" height="200" rx="14" stroke-width="1.6" style="fill:var(--k-15271f);stroke:var(--k-2c5c48)"></rect><g stroke-width="1" opacity=".45" fill="none" style="stroke:var(--k-3f7a60)"><path d="M50 240 h110 v-26 h56"></path><path d="M180 240 h170"></path><path d="M50 80 h36 v18"></path><path d="M392 196 v36 h-56"></path></g><rect x="16" y="140" width="16" height="34" rx="3" style="fill:var(--k-8c9a92)"></rect><text class="p-lbl" x="24" y="190" text-anchor="middle" style="font-size:8.5px">USB</text><rect x="58" y="90" width="112" height="74" rx="4" style="fill:var(--k-232a26);stroke:var(--k-4a564f)"></rect><g stroke-width="1" style="stroke:var(--k-333c37)"><path d="M58 102 h112 M58 114 h112 M58 126 h112 M58 138 h112 M58 150 h112"></path></g><text x="114" y="132" text-anchor="middle" style="font-family:var(--mono);font-size:11.5px;fill:var(--k-b7c4bc)">ESP32 / nRF52</text><rect x="186" y="90" width="90" height="62" rx="4" style="fill:var(--k-1b211e);stroke:var(--k-4a564f)"></rect><text x="231" y="126" text-anchor="middle" style="font-family:var(--mono);font-size:10.5px;fill:var(--k-b7c4bc)">LoRa SX126x</text><rect x="292" y="88" width="100" height="52" rx="5" style="fill:var(--k-1b211e);stroke:var(--k-4a564f)"></rect><text x="342" y="112" text-anchor="middle" style="font-family:var(--mono);font-size:10.5px;fill:var(--k-b7c4bc)">GPS</text><text x="342" y="128" text-anchor="middle" style="font-family:var(--mono);font-size:9px;fill:var(--k-7d968a)">not on every board</text><rect x="58" y="182" width="120" height="44" rx="3" style="fill:var(--k-0a0f0c);stroke:var(--k-3c4741)"></rect><g opacity=".75" style="fill:var(--k-4fe08a)"><rect x="68" y="192" width="58" height="4" rx="2"></rect><rect x="68" y="202" width="86" height="4" rx="2"></rect><rect x="68" y="212" width="40" height="4" rx="2"></rect></g><rect x="200" y="176" width="192" height="54" rx="7" style="fill:var(--k-1d1a14);stroke:var(--k-4a4136)"></rect><text x="296" y="198" text-anchor="middle" style="font-family:var(--mono);font-size:10.5px;fill:var(--k-c9b18a)">battery</text><text x="296" y="214" text-anchor="middle" style="font-family:var(--mono);font-size:9px;fill:var(--k-8a7a68)">18650 or LiPo</text><circle cx="196" cy="166" r="6" class="pulse" style="--d:0s;fill:var(--k-4fe08a)"></circle><rect x="398" y="98" width="22" height="24" rx="3" style="fill:var(--k-8c9a92)"></rect><line x1="410" y1="102" x2="500" y2="30" stroke-width="3.5" style="stroke:var(--k-c9d8cf)"></line><circle cx="501" cy="29" r="4" style="fill:var(--k-c9d8cf)"></circle><g fill="none" stroke-width="1.6" style="stroke:var(--k-4fe08a)"><g class="wv" style="--d:0s"><path d="M476 20 a34 34 0 0 1 34 34"></path><path d="M462 10 a52 52 0 0 1 52 52"></path></g><g class="wv" style="--d:1.3s"><path d="M476 20 a34 34 0 0 1 34 34"></path><path d="M462 10 a52 52 0 0 1 52 52"></path></g></g><g stroke-width="1.2" fill="none" style="stroke:var(--k-3c4741)"><path d="M501 34 L540 48 H556"></path><path d="M276 120 L540 92 H556"></path><path d="M170 128 L540 136 H556"></path><path d="M392 202 L540 180 H556"></path><path d="M178 204 L540 224 H556"></path></g><g class="p-lbl p-ink" style="font-size:11.5px"><text x="564" y="52">antenna — never power up without it</text><text x="564" y="96">LoRa radio — the same as in Reticulum</text><text x="564" y="140">microcontroller: ESP32 or nRF52</text><text x="564" y="184">battery: from days to weeks</text><text x="564" y="228">screen — optional, but handy</text></g><g class="p-lbl" style="font-size:10px"><text x="564" y="68">transmitting without an antenna damages the amplifier</text><text x="564" y="112">same chip, only the firmware differs</text><text x="564" y="156">nRF52 is more frugal, ESP32 has Wi-Fi</text><text x="564" y="200">GPS and the screen eat the most</text><text x="564" y="244">without it the node is controlled only from the phone</text></g></svg></div><figcaption><strong>The main choice when buying:</strong> <!-- -->ESP32 is cheaper, has Wi-Fi (so it can be an MQTT gateway) and more memory, but draws noticeably more. nRF52 costs more and has no Wi-Fi, but a node built on it lasts several times longer on the same battery. For a wearable node — nRF52; for a stationary powered one — ESP32.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-standalone-node-on-a-mast">A standalone node on a mast<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#a-standalone-node-on-a-mast" class="hash-link" aria-label="Direct link to A standalone node on a mast" title="Direct link to A standalone node on a mast" translate="no">​</a></h3>
<p>The most useful thing you can do for a local network is to raise one node high and leave it there for good. It looks roughly like this:</p>
<figure class="ms-fig ms-mesh motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 320" role="img" aria-label="Drawing: a self-powered node on a mast with a solar panel on a hill, and a node in the valley next to it"><defs><linearGradient id="skym" x1="0" y1="0" x2="0" y2="1"><stop offset="0" style="stop-color:var(--k-16283a)"></stop><stop offset="1" style="stop-color:var(--k-1e3326)"></stop></linearGradient></defs><rect x="0" y="0" width="1000" height="320" fill="url(#skym)" rx="8"></rect><circle cx="170" cy="60" r="26" opacity=".85" style="fill:var(--k-f2b23f)"></circle><g stroke-width="1.6" opacity=".5" style="stroke:var(--k-f2b23f)"><path d="M170 16 v-10 M170 114 v10 M126 60 h-10 M214 60 h10 M138 28 l-7 -7 M202 92 l7 7 M202 28 l7 -7 M138 92 l-7 7"></path></g><path d="M0 320 L0 268 C 140 236, 300 246, 420 214 C 540 182, 660 196, 1000 176 L1000 320 Z" style="fill:var(--k-16241b)"></path><path d="M0 320 L0 300 C 200 288, 420 306, 640 292 C 800 282, 900 296, 1000 288 L1000 320 Z" style="fill:var(--k-101a13)"></path><line x1="640" y1="196" x2="640" y2="70" stroke-width="4" style="stroke:var(--k-c9d8cf)"></line><g stroke-width="1.2" style="stroke:var(--k-5c6d64)"><path d="M640 110 L586 196 M640 110 L694 196"></path></g><line x1="640" y1="70" x2="640" y2="34" stroke-width="2.5" style="stroke:var(--k-c9d8cf)"></line><path d="M632 34 h16 M635 26 h10" stroke-width="2" style="stroke:var(--k-c9d8cf)"></path><g fill="none" stroke-width="1.5" style="stroke:var(--k-4fe08a)"><g class="wv" style="--d:0s"><path d="M612 40 a40 40 0 0 1 56 0"></path><path d="M596 54 a58 58 0 0 1 88 0"></path></g><g class="wv" style="--d:1.4s"><path d="M612 40 a40 40 0 0 1 56 0"></path><path d="M596 54 a58 58 0 0 1 88 0"></path></g></g><g transform="translate(640,104)"><path d="M-6 0 L58 -26 L70 -10 L6 16 Z" stroke-width="1.4" style="fill:var(--k-1c3550);stroke:var(--k-5e89b5)"></path><g stroke-width=".8" opacity=".7" style="stroke:var(--k-5e89b5)"><path d="M10 -20 L22 -5 M26 -26 L38 -11 M42 -32 L54 -17"></path></g></g><rect x="614" y="128" width="52" height="56" rx="6" stroke-width="1.6" style="fill:var(--k-141d18);stroke:var(--k-4fe08a)"></rect><circle cx="640" cy="146" r="4" class="pulse" style="--d:.4s;fill:var(--k-4fe08a)"></circle><text class="p-lbl" x="640" y="166" text-anchor="middle" style="font-size:8.5px">node</text><text class="p-lbl" x="640" y="178" text-anchor="middle" style="font-size:8.5px">+ battery</text><g stroke-width="1.1" fill="none" style="stroke:var(--k-3c4741)"><path d="M700 40 H 736"></path><path d="M700 96 H 736"></path><path d="M670 154 H 736"></path></g><g class="p-lbl p-ink" style="font-size:11px"><text x="742" y="44">antenna — highest point</text><text x="742" y="100">panel — facing south</text><text x="742" y="158">sealed enclosure</text></g><g class="p-lbl" style="font-size:9px"><text x="742" y="58">height matters more than any setting</text><text x="742" y="114">winter gives three times less light — keep a margin</text><text x="742" y="172">condensation kills more nodes than frost</text></g><g transform="translate(150,252)"><path d="M0 26 L0 8 L18 -6 L36 8 L36 26 Z" stroke-width="1.3" style="fill:var(--k-141d18);stroke:var(--k-c9d8cf)"></path><rect x="13" y="12" width="10" height="14" opacity=".55" style="fill:var(--k-4fe08a)"></rect></g><text class="p-lbl p-ink" x="168" y="300" text-anchor="middle" style="font-size:10.5px">node in the valley</text><path d="M190 250 L610 150" stroke-width="1.8" fill="none" class="flow" style="stroke:var(--k-4fe08a)"></path><text class="p-lbl" x="246" y="252" style="font-size:10px;fill:var(--k-4fe08a)">one such node covers a whole valley</text></svg></div><figcaption><strong>Why this is the best investment in the network:</strong> <!-- -->a high node cuts the number of hops for everyone around it. Fewer hops — fewer transmissions — lower channel utilisation. So it does not just add coverage, it<!-- --> <em>offloads</em> <!-- -->the network. Five nodes on windowsills do the opposite.</figcaption></figure>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-meshtastic-does-not-do">What Meshtastic does not do<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#what-meshtastic-does-not-do" class="hash-link" aria-label="Direct link to What Meshtastic does not do" title="Direct link to What Meshtastic does not do" translate="no">​</a></h2>
<p>An honest list, so there are no disappointments. Almost everything here is not a missing feature but a direct consequence of the network being free, infrastructure-less and sharing one narrow frequency.</p>
<ul>
<li class="">✕ <strong>Does not anonymise.</strong> A node tells the air its name and number, often its position too. Anyone nearby sees who it is and where.</li>
<li class="">✕ <strong>Does not hide by default.</strong> The default channel's key is the same for everyone on the planet. Privacy starts only with your own channel or with private messages.</li>
<li class="">✕ <strong>Does not wait for the recipient.</strong> If a node is off right now, a message for it simply does not arrive. There is a separate Store &amp; Forward module that stores and repeats messages, but it is a feature of a particular node, not of the network.</li>
<li class="">✕ <strong>Does not guarantee delivery in a channel.</strong> Private messages are acknowledged; group ones fly "as they will".</li>
<li class="">✕ <strong>Does not scale without limit.</strong> A few dozen active nodes in range — fine. A few hundred — the air runs out, and the network works worse precisely because there are more participants.</li>
<li class="">✕ <strong>Does not carry data.</strong> No files, no photos, no voice: 237 bytes per packet and a kilobit per second is the ceiling.</li>
</ul>
<p>And one more thing: the network does not work if the neighbours are set up differently. Region, preset and channel must match — the most common reason for "I see nothing".</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="meshtastic-and-reticulum-one-board-different-ideas">Meshtastic and Reticulum: one board, different ideas<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#meshtastic-and-reticulum-one-board-different-ideas" class="hash-link" aria-label="Direct link to Meshtastic and Reticulum: one board, different ideas" title="Direct link to Meshtastic and Reticulum: one board, different ideas" translate="no">​</a></h3>
<p>Their hardware is so alike that one board can run one and then the other. But they are tools for different jobs, and confusing them is very common.</p>
<table><thead><tr><th>question</th><th>Meshtastic</th><th>Reticulum</th></tr></thead><tbody><tr><td>What it is</td><td>A finished product: chat, map, telemetry. Switch it on — it works</td><td>A network stack: a construction kit on which people write their own applications</td></tr><tr><td>Carrier</td><td>LoRa only</td><td>LoRa, amateur radio, cable, TCP, I2P — anything</td></tr><tr><td>Address</td><td>4 bytes from the board's MAC address</td><td>A 16-byte hash of a cryptographic key</td></tr><tr><td>Routing</td><td>Managed flooding, ceiling of 3–7 hops</td><td>Path tables, up to 128 hops, stitching different carriers together</td></tr><tr><td>Encryption</td><td>Channel key for groups; per-node keys for private messages</td><td>Always end-to-end, there is no off switch; ephemeral keys in sessions</td></tr><tr><td>Offline delivery</td><td>Only through a separate module on a particular node</td><td>Built in: delivery nodes hold the mail</td></tr><tr><td>Barrier to entry</td><td>An hour — and you are chatting</td><td>An evening — and you understand how it is built</td></tr><tr><td>Who it suits</td><td>A group in the mountains, volunteers, neighbours in a district, competitions</td><td>Those building their own network or an application for it</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>The shortest way to put the difference</div><div class="admonitionContent_BuS1"><p>Meshtastic answers the question "how do we talk without a network <strong>right now</strong>". <a class="" href="https://cyberdev.space/en/blog/reticulum-up-close/">Reticulum</a> answers "how do we build a network nobody owns". The first is about this weekend's hike, the second about infrastructure.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="practice-from-the-box-to-a-chat">Practice: from the box to a chat<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#practice-from-the-box-to-a-chat" class="hash-link" aria-label="Direct link to Practice: from the box to a chat" title="Direct link to Practice: from the box to a chat" translate="no">​</a></h2>
<p>The longest part is waiting for the parcel. The rest takes about an hour.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">Three steps</p><div class="ms-card__body"><p><strong>Step 1 — a board for your region.</strong> The frequency depends on the country, and boards are sold for specific bands. Buying the "wrong" board is the most expensive mistake at the start: a different frequency means different radio hardware, and settings will not fix it. Ukraine uses the 433 and 868 MHz bands, and the firmware has separate regions for them — <code>UA_433</code> and <code>UA_868</code>.</p><p><strong>Step 2 — flashing straight from the browser.</strong> The official web flasher runs in Chrome or Edge: connect the board by cable, pick the model, one button. Nothing to install.</p><p><strong>Step 3 — the app and first setup.</strong> The app connects to the node over Bluetooth. <strong>The region comes first</strong>: until it is set, the node does not transmit at all, and that is intended behaviour, not a fault. Then a name, the <code>CLIENT</code> role and sensible telemetry intervals.</p></div></div><div class="ms-card frame"><p class="ms-card__title">The same from the command line</p><div class="ms-card__body"><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># node management utility</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">pip install meshtastic</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># which node this is and how it is configured</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --info</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># region — first and most important</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --set lora.region UA_868</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># preset: change only together with everyone else</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --set lora.modem_preset LONG_FAST</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># node names</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --set-owner "Petro's node" \</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">           --set-owner-short "PTRO"</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># report about yourself less often — saves airtime</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --set telemetry.device_update_interval 3600</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --set position.position_broadcast_secs 3600</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># join a channel from a link</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --seturl "https://meshtastic.org/e/#..."</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># post to the channel and list the nodes</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --sendtext "hello"</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --nodes</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"># which way packets go to a neighbour</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">meshtastic --traceroute '!8ab21044'</span><br></div></code></pre></div></div></div></div></div>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Four mistakes of the first days</div><div class="admonitionContent_BuS1"><p><strong>1.</strong> Switching the board on without an antenna attached — you can damage the radio. <strong>2.</strong> Setting the ROUTER role in a flat. <strong>3.</strong> Raising the hop limit to 7 "so it surely gets through". <strong>4.</strong> Leaving telemetry and position intervals at minutes — and single-handedly loading the air of a whole district.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="glossary">Glossary<a href="https://cyberdev.space/en/blog/meshtastic-up-close/#glossary" class="hash-link" aria-label="Direct link to Glossary" title="Direct link to Glossary" translate="no">​</a></h2>
<ul>
<li class=""><strong>Node ID</strong> — the node number: four bytes from the board's MAC address, shown as <code>!127a3f19</code>.</li>
<li class=""><strong>Short name</strong> — four characters that label the node on the map and in the list. The long name is for people.</li>
<li class=""><strong>Channel</strong> — a name plus a key. Whoever has the key reads everything in the channel. Shared by QR code or link.</li>
<li class=""><strong>LongFast</strong> — the default channel and preset. Its key is public — it is the common air, not a private room.</li>
<li class=""><strong>Preset</strong> — a set of radio parameters. A shared language: nodes with different presets do not hear each other.</li>
<li class=""><strong>Hop limit</strong> — how many times a packet may be relayed. 3 by default, 7 at most. Every extra hop multiplies traffic.</li>
<li class=""><strong>SNR / RSSI</strong> — how well a neighbour is heard. The delay before relaying is computed from SNR.</li>
<li class=""><strong>Airtime</strong> — how long a packet occupies the air. A full message on LongFast takes over two seconds.</li>
<li class=""><strong>Duty cycle</strong> — the legal limit on the share of time spent transmitting. The firmware enforces it and may not send a message.</li>
<li class=""><strong>Channel utilization</strong> — how busy the air is. The main health indicator of a mesh.</li>
<li class=""><strong>Role</strong> — how a node behaves on air: CLIENT, CLIENT_MUTE, ROUTER, ROUTER_LATE, TRACKER, SENSOR and a few narrower ones.</li>
<li class=""><strong>NodeInfo</strong> — a node's periodic report about itself: number, names, hardware, role.</li>
<li class=""><strong>Traceroute</strong> — the chain of nodes to the recipient and the signal quality on each leg.</li>
<li class=""><strong>MQTT gateway</strong> — a node with Wi-Fi that forwards traffic between the air and a server on the internet.</li>
<li class=""><strong>Store &amp; Forward</strong> — a module on a particular node that stores messages and repeats them for those who were offline.</li>
<li class=""><strong>PKC</strong> — per-node keys (Curve25519, since version 2.5) for private messages: they encrypt between specific nodes and confirm the sender.</li>
</ul>
<p>Parameter and region names are worth checking against the documentation for your firmware version: the project moves fast.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>The "up close" series</div><div class="admonitionContent_BuS1"><ul>
<li class=""><a class="" href="https://cyberdev.space/en/blog/lora-up-close/">LoRa up close</a> — the physical layer: chirps, spreading factor, time on air, range</li>
<li class=""><a class="" href="https://cyberdev.space/en/blog/reticulum-up-close/">Reticulum up close</a> — a network stack where the address is a key and LoRa is just one of the carriers</li>
<li class=""><a class="" href="https://cyberdev.space/en/blog/four-internets/">Four internets</a> — Reticulum, I2P, Yggdrasil and Nostr side by side: who sits on which floor</li>
</ul></div></div>]]></content:encoded>
            <category>radio</category>
            <category>LoRa</category>
            <category>Meshtastic</category>
            <category>mesh networks</category>
        </item>
        <item>
            <title><![CDATA[LoRa up close: chirps, spreading factor, time on air and range]]></title>
            <link>https://cyberdev.space/en/blog/lora-up-close/</link>
            <guid>https://cyberdev.space/en/blog/lora-up-close/</guid>
            <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How LoRa reads a signal weaker than the noise: chirps, spreading factor, bandwidth and time on air, link budget and the Fresnel zone, hardware, LoRaWAN and duty cycle. With live diagrams and a calculator.]]></description>
            <content:encoded><![CDATA[<p>Meshtastic and Reticulum sit on the same physics: a modulation that reads a signal <strong>weaker than the noise floor</strong> and pays for it in time. This note is about that physics: how a chirp works, where the range comes from, what every knob in the settings does, what the hardware is made of and what gets built on top — from LoRaWAN to drones and satellites.</p>
<div class="ms-stats"><div class="ms-stat"><b>−20 dB</b><span>A signal a hundred times weaker than the noise — and it still gets read. LoRa's main trick</span></div><div class="ms-stat"><b>−137 dBm</b><span>Receiver sensitivity at SF12 and 125 kHz bandwidth</span></div><div class="ms-stat"><b>32.8 ms</b><span>The length of one SF12 symbol. Modern Wi-Fi moves a megabyte in that time</span></div><div class="ms-stat"><b>4096</b><span>Possible starting points of one "whistle" at SF12 — 12 bits per symbol</span></div></div>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="three-words-that-keep-getting-mixed-up">Three words that keep getting mixed up<a href="https://cyberdev.space/en/blog/lora-up-close/#three-words-that-keep-getting-mixed-up" class="hash-link" aria-label="Direct link to Three words that keep getting mixed up" title="Direct link to Three words that keep getting mixed up" translate="no">​</a></h2>
<p>Most arguments about LoRa start with one word being used for different things.</p>
<table><thead><tr><th>word</th><th>what it really is</th><th>who made it</th></tr></thead><tbody><tr><td>LoRa</td><td><strong>A modulation, the physical layer.</strong> A way of turning bits into a radio wave. It knows nothing about addresses, networks or encryption — only "what a byte sounds like on air"</td><td>Developed by the French company Cycleo, which Semtech bought in 2012. Chips are made by Semtech and its licensees</td></tr><tr><td>LoRaWAN</td><td><strong>A protocol and architecture on top of LoRa.</strong> Device addresses, keys, gateways, a network server, device classes, adaptive data rate. An open standard</td><td>The LoRa Alliance, a consortium of companies</td></tr><tr><td>"raw" LoRa</td><td><strong>Bytes over radio with no protocol on top.</strong> This is how Meshtastic and Reticulum work: they take only the modulation and build their own network</td><td>Anyone</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>The shortest way to put it</div><div class="admonitionContent_BuS1"><p><strong>LoRa is the alphabet, LoRaWAN is a language.</strong> You can write your own language in that alphabet: Meshtastic, Reticulum, ExpressLRS and hundreds of home-made projects do exactly that. And the other way round: hearing a LoRa signal does not mean understanding what is in it — that depends on the protocol on top.</p></div></div>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">what the modulation gives</p><p class="ms-card__title">Range and resilience</p><div class="ms-card__body"><p>The signal is read even when it is weaker than the noise. Plus robustness against interference, reflections and frequency offset — all properties of the chirp itself.</p></div></div><div class="ms-card frame"><p class="ms-card__label">what it does not give</p><p class="ms-card__title">No addresses, no encryption</p><div class="ms-card__body"><p>The chip hands over the received chunk of bytes and the signal level — and that is it. Who writes to whom, how to protect it and what to do about collisions is up to the protocol on top.</p></div></div><div class="ms-card frame"><p class="ms-card__label">what it costs</p><p class="ms-card__title">Time and speed</p><div class="ms-card__body"><p>Range is bought with signal duration. That is not an engineering oversight but a straight trade: the longer a symbol sounds, the farther it is heard and the less data gets through.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-physics-what-a-chirp-is">The physics: what a chirp is<a href="https://cyberdev.space/en/blog/lora-up-close/#the-physics-what-a-chirp-is" class="hash-link" aria-label="Direct link to The physics: what a chirp is" title="Direct link to The physics: what a chirp is" translate="no">​</a></h2>
<p>Ordinary radio sends bits by changing something in the carrier: amplitude, frequency or phase. The weaker the signal, the harder those changes are to see against the noise. LoRa does it differently — and that is where all of its "magic" lives.</p>
<p>A <strong>chirp</strong> is a whistle: a signal whose frequency sweeps evenly from the bottom to the top of the allotted band. One whistle is one symbol. The data is encoded in <strong>where the whistle starts</strong>: it begins somewhere in the middle, climbs to the top of the band, jumps down and runs back up to the starting point. The starting point is the number being sent.</p>
<figure class="ms-fig ms-lora ms-live motion-paused"><div class="ms-live__controls"><div class="ms-tabs" role="group" aria-label="SF"><button type="button" aria-pressed="false">SF<!-- -->7</button><button type="button" aria-pressed="false">SF<!-- -->9</button><button type="button" aria-pressed="true">SF<!-- -->12</button></div><div class="ms-tabs"><button type="button">other data</button></div></div><svg viewBox="0 0 1000 380" role="img" aria-label="Frequency–time plot: four LoRa symbols on SF12, values 0, 1024, 2457, 3481"><text class="p-title" x="0" y="13">frequency ↑ · time → · SF12: 4096 positions, symbol 32.768 ms</text><g class="p-grid"><path d="M80 120 H960 M80 180 H960 M80 240 H960"></path><path d="M300 60 V300 M520 60 V300 M740 60 V300"></path></g><g class="p-axis"><path d="M80 300 H960 M80 60 V300"></path></g><text class="p-lbl" x="72" y="64" text-anchor="end">top of band</text><text class="p-lbl" x="72" y="186" text-anchor="end">125<!-- --> <!-- -->kHz</text><text class="p-lbl" x="72" y="304" text-anchor="end">bottom of band</text><g class="ms-chirp" fill="none" stroke-width="2.5" stroke-linecap="round"><path d="M80 300 L300 60"></path><path d="M300 240 L465 60 M465 300 L520 240"></path><path d="M520 156 L608 60 M608 300 L740 156"></path><path d="M740 96 L773 60 M773 300 L960 96"></path></g><g class="ms-chirp-dot"><circle cx="80" cy="300" r="5.5"></circle><circle cx="300" cy="240" r="5.5"></circle><circle cx="520" cy="156" r="5.5"></circle><circle cx="740" cy="96" r="5.5"></circle></g><rect class="ms-chirp-cursor" x="80" y="60" width="2" height="240"></rect><g text-anchor="middle"><text class="p-lbl" x="190" y="328">symbol 1</text><text class="ms-chirp-val" x="190" y="350">0</text></g><g text-anchor="middle"><text class="p-lbl" x="410" y="328">symbol 2</text><text class="ms-chirp-val" x="410" y="350">1024</text></g><g text-anchor="middle"><text class="p-lbl" x="630" y="328">symbol 3</text><text class="ms-chirp-val" x="630" y="350">2457</text></g><g text-anchor="middle"><text class="p-lbl" x="850" y="328">symbol 4</text><text class="ms-chirp-val" x="850" y="350">3481</text></g><text class="p-lbl" x="80" y="374" style="font-size:10px">the dot is where the chirp starts — that is the data: one number out of 4096, i.e. 12 bits per symbol</text></svg></figure>
<p>Switching SF on the diagram shows the key point: the higher the SF, the more possible starting points (2<sup>SF</sup>) — and the longer each symbol lasts. The receiver does not have to catch subtle changes of amplitude or phase; it only has to find <em>where</em> the whistle began. And the whistle is spread over the whole band and the whole symbol time, so a narrow interferer does not kill it, while a frequency offset shifts every symbol equally and is easy to compensate.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">How much data is in one whistle</p><div class="ms-card__body"><p>Exactly <strong>SF</strong> bits. At SF7 the whistle starts from one of 128 positions — 7 bits. At SF12 there are 4096 positions — 12 bits. Not much? Indeed: an SF12 symbol carries a byte and a half and lasts 33 milliseconds.</p><ul>
<li class=""><strong>SF7</strong> — 2<sup>7</sup> = 128 positions → 7 bits per symbol</li>
<li class=""><strong>SF10</strong> — 2<sup>10</sup> = 1024 positions → 10 bits</li>
<li class=""><strong>SF12</strong> — 2<sup>12</sup> = 4096 positions → 12 bits</li>
</ul></div></div><div class="ms-card frame"><p class="ms-card__title">Where the robustness comes from</p><div class="ms-card__body"><p>The symbol's energy is spread over the whole band and its whole duration. A narrowband interferer spoils only part of the whistle — the rest is enough to find the start. Reflections from buildings arrive late, but the shape of the whistle stays recognisable. And a slow frequency drift shifts all the symbols together, so it can be seen and subtracted.</p><p>That is why LoRa lives in cities full of tower blocks and in forests, where narrowband modulations fall apart.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-the-receiver-pulls-the-signal-out-of-the-noise">How the receiver pulls the signal out of the noise<a href="https://cyberdev.space/en/blog/lora-up-close/#how-the-receiver-pulls-the-signal-out-of-the-noise" class="hash-link" aria-label="Direct link to How the receiver pulls the signal out of the noise" title="Direct link to How the receiver pulls the signal out of the noise" translate="no">​</a></h2>
<p>The most beautiful part. The receiver does not try to "hear a quiet signal" — it adds up all of the whistle's energy over the whole symbol. Random noise does not add up like that.</p>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 360" role="img" aria-label="Demodulation diagram: the received chirp is multiplied by a reverse chirp, giving a constant tone, and a Fourier transform turns it into a single peak"><text class="p-title" x="0" y="13">demodulation in three steps</text><g class="stage" style="--d:0s"><rect x="20" y="40" width="250" height="110" rx="8" style="fill:var(--k-101728);stroke:var(--k-22304d)"></rect><path d="M34 140 L256 54" stroke-width="2.5" fill="none" style="stroke:var(--k-7aa6ff)"></path><text class="p-lbl p-ink" x="145" y="170" text-anchor="middle" style="font-size:10.5px">what arrived over the air</text><text class="p-lbl" x="145" y="184" text-anchor="middle" style="font-size:9.5px">up-chirp + noise</text></g><text x="292" y="104" text-anchor="middle" class="stage" style="--d:1.2s;font-family:var(--mono);font-size:22px;fill:var(--k-ff79d2)">×</text><g class="stage" style="--d:1.2s"><rect x="316" y="40" width="250" height="110" rx="8" style="fill:var(--k-101728);stroke:var(--k-22304d)"></rect><path d="M330 54 L552 140" stroke-width="2.5" fill="none" style="stroke:var(--k-ff79d2)"></path><text class="p-lbl p-ink" x="441" y="170" text-anchor="middle" style="font-size:10.5px">its own reverse chirp</text><text class="p-lbl" x="441" y="184" text-anchor="middle" style="font-size:9.5px">the receiver knows its exact shape</text></g><text x="588" y="104" text-anchor="middle" class="stage" style="--d:2.4s;font-family:var(--mono);font-size:22px;fill:var(--k-ff79d2)">=</text><g class="stage" style="--d:2.4s"><rect x="612" y="40" width="250" height="110" rx="8" style="fill:var(--k-101728);stroke:var(--k-22304d)"></rect><path d="M626 96 L848 96" stroke-width="2.5" fill="none" style="stroke:var(--k-5fd8ef)"></path><text class="p-lbl p-ink" x="737" y="170" text-anchor="middle" style="font-size:10.5px">a constant tone</text><text class="p-lbl" x="737" y="184" text-anchor="middle" style="font-size:9.5px">the higher, the bigger the offset</text></g><text class="p-lbl" x="880" y="100" style="font-size:10px">and only</text><text class="p-lbl" x="880" y="114" style="font-size:10px">now —</text><text class="p-lbl" x="880" y="128" style="font-size:10px">Fourier</text><g class="stage" style="--d:3.6s"><text class="p-title" x="20" y="222">spectrum after dechirping · one sharp peak</text><g class="p-axis"><path d="M40 310 H960"></path></g><path d="M40 310 L70 302 L100 306 L130 298 L160 305 L190 300 L220 307 L250 299 L280 304 L310 297 L340 306 L370 301 L400 308 L430 300 L460 303 L490 296 L520 305 L550 299 L580 307 L610 302 L640 298 L670 306 L700 300 L730 304 L760 297 L790 305 L820 301 L850 308 L880 299 L910 303 L940 300" stroke-width="1.6" fill="none" style="stroke:var(--k-3a4a6d)"></path><text class="p-lbl" x="60" y="292" style="font-size:9.5px">noise floor</text><rect class="gh" x="546" y="238" width="14" height="72" rx="3" style="--oy:310px;--d:4.4s;fill:var(--k-ffc64d)"></rect><text class="appear" x="553" y="228" text-anchor="middle" style="--d:4.8s;font-family:var(--mono);font-size:11px;fill:var(--k-ffc64d)">peak</text><text class="appear p-lbl" x="620" y="252" style="--d:4.8s;font-size:10.5px">peak position = the number sent</text><text class="appear p-lbl" x="620" y="268" style="--d:4.8s;font-size:10.5px">peak height = how confident</text></g><text class="p-note" x="20" y="348">For the whole symbol — up to 33 milliseconds — the chirp's energy piles up in one point. Noise does not pile up like that: it is random.</text></svg></div><figcaption><strong>This is why it works below the noise.</strong> <!-- -->The wanted signal is coherent: multiplying by the reverse chirp "folds" it into a narrow peak. Noise stays smeared out under the same operation. The longer the symbol, the bigger the gain — and that is exactly what a high spreading factor buys.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-big-the-gain-is">How big the gain is<a href="https://cyberdev.space/en/blog/lora-up-close/#how-big-the-gain-is" class="hash-link" aria-label="Direct link to How big the gain is" title="Direct link to How big the gain is" translate="no">​</a></h3>
<p>The practical measure of that gain is the <strong>minimum signal-to-noise ratio</strong> at which a symbol can still be read. Negative numbers mean the signal is weaker than the noise:</p>
<table><thead><tr><th>SF</th><th>required SNR</th><th>sensitivity, 125 kHz</th><th>in plain words</th></tr></thead><tbody><tr><td>SF7</td><td>−7.5 dB</td><td>≈ −123 dBm</td><td>The signal is already 5–6 times weaker than the noise</td></tr><tr><td>SF8</td><td>−10 dB</td><td>≈ −126 dBm</td><td>Ten times weaker</td></tr><tr><td>SF9</td><td>−12.5 dB</td><td>≈ −129 dBm</td><td>Almost twenty times</td></tr><tr><td>SF10</td><td>−15 dB</td><td>≈ −132 dBm</td><td>Thirty times</td></tr><tr><td>SF11</td><td>−17.5 dB</td><td>≈ −134.5 dBm</td><td>Sixty times</td></tr><tr><td>SF12</td><td>−20 dB</td><td>≈ −137 dBm</td><td><strong>A hundred times weaker than the noise — and still readable</strong></td></tr></tbody></table>
<p>Sensitivity is for a typical SX127x-family receiver; newer chips do a few decibels better. Exact numbers are in the datasheet of the particular chip.</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>A comparison that makes it click</div><div class="admonitionContent_BuS1"><p>An ordinary Wi-Fi receiver gives up when the signal drops to about −90 dBm. LoRa at SF12 still works at −137 dBm. A 47 dB difference is <strong>a signal 50 thousand times weaker</strong>. The price is a speed a hundred thousand times lower.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="spreading-factor--the-main-knob">Spreading factor — the main knob<a href="https://cyberdev.space/en/blog/lora-up-close/#spreading-factor--the-main-knob" class="hash-link" aria-label="Direct link to Spreading factor — the main knob" title="Direct link to Spreading factor — the main knob" translate="no">​</a></h2>
<p>If you turn only one thing in the settings, make it SF. It sets everything: speed, range, time on air and how much battery one message eats.</p>
<div class="ms-formula"><p>symbol time <strong>T</strong> = 2<sup><em>SF</em></sup> / <strong>BW</strong> → every +1 to SF <strong>doubles</strong> the symbol time</p></div>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 300" role="img" aria-label="Symbol time for SF7–SF12: each step is twice as long as the last"><text class="p-title" x="0" y="13">duration of one symbol at 125 kHz bandwidth</text><g class="p-lbl p-ink" style="font-size:12px"><text x="0" y="48">SF7</text><text x="0" y="84">SF8</text><text x="0" y="120">SF9</text><text x="0" y="156">SF10</text><text x="0" y="192">SF11</text><text x="0" y="228">SF12</text></g><g rx="4"><rect class="gw" x="56" y="36" width="26" height="18" rx="4" style="--ox:56px;--d:.2s;fill:var(--k-7aa6ff)"></rect><rect class="gw" x="56" y="72" width="52" height="18" rx="4" style="--ox:56px;--d:.5s;fill:var(--k-7aa6ff)"></rect><rect class="gw" x="56" y="108" width="104" height="18" rx="4" style="--ox:56px;--d:.8s;fill:var(--k-8fb4ff)"></rect><rect class="gw" x="56" y="144" width="208" height="18" rx="4" style="--ox:56px;--d:1.1s;fill:var(--k-a48cf5)"></rect><rect class="gw" x="56" y="180" width="416" height="18" rx="4" style="--ox:56px;--d:1.4s;fill:var(--k-d266c4)"></rect><rect class="gw" x="56" y="216" width="832" height="18" rx="4" style="--ox:56px;--d:1.7s;fill:var(--k-ff79d2)"></rect></g><g style="font-family:var(--mono);font-size:11px;fill:var(--k-dce4f5)"><text class="appear" style="--d:.6s" x="92" y="50">1.024 ms</text><text class="appear" style="--d:.9s" x="118" y="86">2.048 ms</text><text class="appear" style="--d:1.2s" x="170" y="122">4.096 ms</text><text class="appear" style="--d:1.5s" x="274" y="158">8.192 ms</text><text class="appear" style="--d:1.8s" x="482" y="194">16.384 ms</text><text class="appear" x="898" y="230" text-anchor="end" font-weight="700" style="--d:2.1s;fill:var(--k-08121f)">32.768 ms</text></g><text class="p-note" x="0" y="268">One SF12 symbol carries 12 bits. That is a byte and a half in a third of a second — roughly 290 bit/s.</text><text class="p-note" x="0" y="286">The same byte and a half goes by in one millisecond on SF7.</text></svg></div></figure>
<table><thead><tr><th>SF</th><th>symbol</th><th>bit rate (125 kHz, CR 4/5)</th><th>sensitivity</th><th>typical use</th></tr></thead><tbody><tr><td>SF7</td><td>1.024 ms</td><td>5,469 bit/s</td><td>−123 dBm</td><td>City, nearby nodes, lots of traffic</td></tr><tr><td>SF8</td><td>2.048 ms</td><td>3,125 bit/s</td><td>−126 dBm</td><td>The default compromise in many home-made projects</td></tr><tr><td>SF9</td><td>4.096 ms</td><td>1,758 bit/s</td><td>−129 dBm</td><td>Suburbs</td></tr><tr><td>SF10</td><td>8.192 ms</td><td>977 bit/s</td><td>−132 dBm</td><td>Villages, hills</td></tr><tr><td>SF11</td><td>16.384 ms</td><td>537 bit/s</td><td>−134.5 dBm</td><td>On a 250 kHz band this is Meshtastic's LongFast</td></tr><tr><td>SF12</td><td>32.768 ms</td><td>293 bit/s</td><td>−137 dBm</td><td>Mountains, long haul, range records</td></tr></tbody></table>
<p>The rule worth remembering: <strong>+1 to SF means a symbol twice as long and roughly +2.5 dB of sensitivity</strong>. In free space 2.5 dB is about a third more range. In a city or a forest noticeably less, because there the obstacles matter more than the distance.</p>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>The high-SF trap</div><div class="admonitionContent_BuS1"><p>It seems logical to set SF12 "so it surely gets through". But time on air grows many times over, so the battery drains faster, the duty-cycle limit is used up in a few messages and — worst of all — <strong>a long packet is far more likely to collide with someone else's</strong>. In a dense network SF12 often works <em>worse</em> than SF9.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bandwidth-coding-preamble">Bandwidth, coding, preamble<a href="https://cyberdev.space/en/blog/lora-up-close/#bandwidth-coding-preamble" class="hash-link" aria-label="Direct link to Bandwidth, coding, preamble" title="Direct link to Bandwidth, coding, preamble" translate="no">​</a></h2>
<p>The other knobs get turned less often, but each has a price — and this is where the answers to "why can't my neighbour hear me" hide.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__label">bandwidth</p><p class="ms-card__title">Wider is faster but deafer</p><div class="ms-card__body"><p>Typical values: 125, 250, 500 kHz. Doubling the bandwidth halves the symbol — and costs about <strong>3 dB of sensitivity</strong>, because twice as much noise gets into a wider band.</p><p>It is the same trade-off as SF, from the other side. Meshtastic, for example, takes a wide 250 kHz band and compensates with a high SF11.</p></div></div><div class="ms-card frame"><p class="ms-card__label">coding rate</p><p class="ms-card__title">From 4/5 to 4/8</p><div class="ms-card__body"><p>Forward error correction: for every 4 data bits it adds 1 to 4 redundant ones. At 4/5 the packet gets a quarter longer, at 4/8 twice as long.</p><p>It saves you from <em>short</em> bursts of interference: an impulse spoiled a few symbols and the code restored them. Against a uniformly weak signal it barely helps: that is SF's job.</p></div></div><div class="ms-card frame"><p class="ms-card__label">preamble</p><p class="ms-card__title">The “wake up” whistles</p><div class="ms-card__body"><p>Every packet is preceded by a series of identical chirps — typically eight. The receiver latches on to them and synchronises. A longer preamble gives a receiver that only peeks at the air now and then a better chance to wake up in time, but also adds time on air.</p></div></div><div class="ms-card frame"><p class="ms-card__label">sync word</p><p class="ms-card__title">The most common reason for “I hear nothing”</p><div class="ms-card__body"><p>A byte that splits the air into "private" and "public" networks. Devices with different sync words practically cannot hear each other, even when frequency, bandwidth and SF match. The classic case: LoRaWAN uses one value, most home-made networks another.</p></div></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Two more details that bite</div><div class="admonitionContent_BuS1"><p><strong>Low data rate optimisation</strong> is mandatory when a symbol is longer than 16 ms (SF11 and SF12 at 125 kHz). It compensates for crystal drift; if one node has it on and the other off, there will be no link. <strong>IQ inversion</strong> is the trick LoRaWAN uses to separate directions: devices do not hear each other, only the gateway. Ready-made firmware sets both up by itself; in home-made projects you have to do it by hand.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="time-on-air-the-formula-everything-follows-from">Time on air: the formula everything follows from<a href="https://cyberdev.space/en/blog/lora-up-close/#time-on-air-the-formula-everything-follows-from" class="hash-link" aria-label="Direct link to Time on air: the formula everything follows from" title="Direct link to Time on air: the formula everything follows from" translate="no">​</a></h2>
<p>Time on air is not just "how long it flies". It is at once battery consumption, the allowed duty cycle being spent and the probability of colliding with someone else's packet. That is why this quantity decides how many nodes a network can carry.</p>
<p>A packet has four parts: the <strong>preamble</strong> (typically 8 whistles plus 4.25 sync symbols), the <strong>header</strong>, the <strong>data</strong> and the <strong>checksum</strong>. Everything is counted in symbols rather than bytes — and each symbol lasts its 2<sup>SF</sup>/BW.</p>
<div class="ms-formula"><p><strong>T</strong><sub>preamble</sub> = (8 + 4.25) × <strong>T</strong><sub>symbol</sub><br>
<strong>n</strong><sub>data</sub> = 8 + ⌈ (8·<em>PL</em> − 4·<em>SF</em> + 28 + 16·<em>CRC</em>) / (4·(<em>SF</em> − 2·<em>DE</em>)) ⌉ × (<em>CR</em> + 4)<br>
<strong>T</strong><sub>packet</sub> = <strong>T</strong><sub>preamble</sub> + <strong>n</strong><sub>data</sub> × <strong>T</strong><sub>symbol</sub></p></div>
<p>Here <em>PL</em> is the payload in bytes, <em>CR</em> = 1…4 for coding rates 4/5 to 4/8, and <em>DE</em> = 1 when low data rate optimisation is on. Rounding up means the data is always padded to a whole block — which is why one extra byte sometimes costs five whole symbols.</p>
<div class="ms-fig ms-lora ms-calc"><p class="ms-calc__title">time on air · the Semtech formula, live</p><div class="ms-calc__row"><span class="ms-calc__cap">SF</span><div class="ms-tabs" role="group" aria-label="SF"><button type="button" aria-pressed="false">7</button><button type="button" aria-pressed="false">8</button><button type="button" aria-pressed="false">9</button><button type="button" aria-pressed="false">10</button><button type="button" aria-pressed="false">11</button><button type="button" aria-pressed="true">12</button></div></div><div class="ms-calc__row"><span class="ms-calc__cap">bandwidth</span><div class="ms-tabs" role="group" aria-label="bandwidth"><button type="button" aria-pressed="true">125 kHz</button><button type="button" aria-pressed="false">250 kHz</button><button type="button" aria-pressed="false">500 kHz</button></div></div><div class="ms-calc__row"><label class="ms-calc__cap" for="ms-airtime-payload">bytes</label><input id="ms-airtime-payload" type="range" min="1" max="255" value="50"><output for="ms-airtime-payload" class="ms-calc__val">50</output></div><div class="ms-airbar" aria-hidden="true"><div class="ms-airbar__fill" style="width:100%"><span class="ms-airbar__pre" style="width:17.437722419928825%"></span><span class="ms-airbar__data"></span></div></div><div class="ms-airbar__legend"><span class="ms-airbar__k-pre">preamble</span><span class="ms-airbar__k-data">header and data</span><span>full scale is the same packet on SF12 · 125 kHz: 2.30 s</span></div><dl class="ms-calc__out"><div><dt>time on air</dt><dd>2.30 s</dd></div><div><dt>channel bit rate</dt><dd>293<!-- --> <!-- -->bit/s</dd></div><div><dt>symbol time</dt><dd>32.768<!-- --> <!-- -->ms</dd></div><div><dt>pause at a 1 % limit</dt><dd>3.8 min</dd></div></dl><p class="ms-calc__note">Coding rate 4/5, explicit header, CRC on, 8-symbol preamble. Low data rate optimisation switches on by itself when a symbol is longer than 16 ms.</p></div>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 300" role="img" aria-label="Time on air for 50 bytes: SF12 takes 2.3 seconds, SF7 takes 97 milliseconds"><text class="p-title" x="0" y="13">50 bytes of payload · same time scale</text><text class="p-lbl p-ink" x="0" y="52" style="font-size:12px">SF12 · 125 kHz</text><g><rect class="gw" x="60" y="62" width="153" height="26" rx="4" style="--ox:60px;--d:.2s;fill:var(--k-4a5f8f)"></rect><rect class="gw" x="213" y="62" width="727" height="26" rx="4" style="--ox:213px;--d:.5s;fill:var(--k-ff79d2)"></rect></g><text class="p-lbl" x="136" y="106" text-anchor="middle" style="font-size:9.5px">preamble 401 ms</text><text class="p-lbl" x="576" y="106" text-anchor="middle" style="font-size:9.5px">header and data — 1,900 ms</text><text class="appear" x="940" y="52" text-anchor="end" font-family="var(--mono)" font-size="13" font-weight="700" style="--d:1s;fill:var(--k-ff79d2)">2.30 seconds</text><text class="p-lbl p-ink" x="0" y="150" style="font-size:12px">SF7 · 125 kHz</text><rect class="gw" x="60" y="160" width="37" height="26" rx="4" style="--ox:60px;--d:1.4s;fill:var(--k-7aa6ff)"></rect><text class="appear" x="110" y="178" font-family="var(--mono)" font-size="13" font-weight="700" style="--d:1.8s;fill:var(--k-7aa6ff)">97 milliseconds — the same 50 bytes</text><path d="M60 192 L60 224 M97 192 L940 224" stroke-width="1" stroke-dasharray="3 4" fill="none" style="stroke:var(--k-3a4a6d)"></path><text class="p-lbl" x="0" y="242" style="font-size:9.5px">the same SF7, stretched so the structure shows:</text><g><rect class="gw" x="60" y="250" width="113" height="22" rx="4" style="--ox:60px;--d:2.2s;fill:var(--k-4a5f8f)"></rect><rect class="gw" x="173" y="250" width="767" height="22" rx="4" style="--ox:173px;--d:2.4s;fill:var(--k-7aa6ff)"></rect></g><text class="p-lbl" x="116" y="288" text-anchor="middle" style="font-size:9.5px">12.5 ms</text><text class="p-lbl" x="556" y="288" text-anchor="middle" style="font-size:9.5px">85 ms</text></svg></div><figcaption><strong>A 24-fold difference</strong> <!-- -->— for the same 50 bytes. Look at the preamble: on SF12 it alone lasts 0.4 seconds, longer than the whole SF7 packet. That is why even the shortest message is expensive at high SF.</figcaption></figure>
<table><thead><tr><th>payload bytes</th><th>SF7 · 125 kHz</th><th>SF9 · 125 kHz</th><th>SF11 · 250 kHz</th><th>SF12 · 125 kHz</th></tr></thead><tbody><tr><td>20</td><td>57 ms</td><td>185 ms</td><td>330 ms</td><td>1.32 s</td></tr><tr><td>50</td><td>98 ms</td><td>329 ms</td><td>575 ms</td><td>2.30 s</td></tr><tr><td>100</td><td>174 ms</td><td>554 ms</td><td>944 ms</td><td>3.94 s</td></tr><tr><td>237 (Meshtastic's ceiling)</td><td>374 ms</td><td>1.17 s</td><td>1.97 s</td><td>8.53 s</td></tr></tbody></table>
<p>Computed with the formula above: CR 4/5, explicit header, CRC on, 8-symbol preamble. The SF11 · 250 kHz column is exactly Meshtastic's LongFast preset.</p>
<div class="theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>Eight and a half seconds</div><div class="admonitionContent_BuS1"><p>A full packet at SF12 occupies the air for <strong>8.5 seconds</strong>. All that time no node within range can transmit anything. A dozen chatty SF12 nodes — and the air is used up. That is where all of Meshtastic's limits on message length come from, and all the advice "do not use SF12 unless you must".</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="link-budget-how-many-decibels-you-have-to-spare">Link budget: how many decibels you have to spare<a href="https://cyberdev.space/en/blog/lora-up-close/#link-budget-how-many-decibels-you-have-to-spare" class="hash-link" aria-label="Direct link to Link budget: how many decibels you have to spare" title="Direct link to Link budget: how many decibels you have to spare" translate="no">​</a></h2>
<p>All radio connectivity comes down to one piece of arithmetic: how much power went out, how much was lost on the way and whether enough is left for the receiver to hear.</p>
<div class="ms-formula"><p><strong>margin</strong> = <em>transmitter power</em> + <em>antenna gain</em> − <em>path loss</em> − |<em>receiver sensitivity</em>|</p></div>
<figure class="ms-fig ms-lora ms-live"><div class="ms-live__stack"><div><div class="ms-calc__row"><label class="ms-calc__cap" for="ms-lb-tx">power</label><input id="ms-lb-tx" type="range" min="0" max="30" step="1" value="14"><output for="ms-lb-tx" class="ms-calc__val">14<!-- --> <!-- -->dBm</output></div><div class="ms-calc__row"><label class="ms-calc__cap" for="ms-lb-ant">antennas</label><input id="ms-lb-ant" type="range" min="0" max="12" step="1" value="2"><output for="ms-lb-ant" class="ms-calc__val">+2<!-- --> <!-- -->dBi</output></div><div class="ms-calc__row"><label class="ms-calc__cap" for="ms-lb-d">distance</label><input id="ms-lb-d" type="range" min="0" max="7" step="1" value="4"><output for="ms-lb-d" class="ms-calc__val">4<!-- --> <!-- -->→ 10 km</output></div><div class="ms-calc__row"><label class="ms-calc__cap" for="ms-lb-x">obstacles</label><input id="ms-lb-x" type="range" min="0" max="40" step="1" value="0"><output for="ms-lb-x" class="ms-calc__val">0<!-- --> <!-- -->dB</output></div><div class="ms-calc__row"><span class="ms-calc__cap">frequency</span><div class="ms-tabs"><button type="button" aria-pressed="false">433<!-- --> <!-- -->MHz</button><button type="button" aria-pressed="true">868<!-- --> <!-- -->MHz</button><button type="button" aria-pressed="false">915<!-- --> <!-- -->MHz</button></div></div><div class="ms-calc__row"><span class="ms-calc__cap">SF</span><div class="ms-tabs"><button type="button" aria-pressed="false">SF<!-- -->7</button><button type="button" aria-pressed="false">SF<!-- -->9</button><button type="button" aria-pressed="true">SF<!-- -->12</button></div></div></div><svg viewBox="0 0 860 380" role="img" aria-label="Link budget: received -93.2 dBm, sensitivity -137 dBm, margin 43.8 dB"><g class="p-grid"><path d="M70 57.14285714285714 H850"></path><path d="M70 91.42857142857143 H850"></path><path d="M70 125.71428571428571 H850"></path><path d="M70 160 H850"></path><path d="M70 194.28571428571428 H850"></path><path d="M70 228.57142857142856 H850"></path><path d="M70 262.8571428571429 H850"></path><path d="M70 297.1428571428571 H850"></path><path d="M70 331.42857142857144 H850"></path></g><text class="p-lbl" x="62" y="61.14285714285714" text-anchor="end">+20</text><text class="p-lbl" x="62" y="95.42857142857143" text-anchor="end">0</text><text class="p-lbl" x="62" y="164" text-anchor="end">-40</text><text class="p-lbl" x="62" y="232.57142857142856" text-anchor="end">-80</text><text class="p-lbl" x="62" y="301.1428571428571" text-anchor="end">-120</text><text class="p-lbl" x="62" y="335.42857142857144" text-anchor="end">-140</text><path class="ms-lb-sens" d="M70 326.2857142857143 H850"></path><text class="ms-lb-sens-t" x="846" y="320.2857142857143" text-anchor="end">SF12 sensitivity · -137 dBm</text><rect class="ms-lb-margin" x="790" width="40" y="251.2178191489083" height="75.06789513680599"></rect><polyline class="ms-lb-line" fill="none" points="130,67.42857142857143 250,64 420,254.64639057747974 590,254.64639057747974 730,251.2178191489083 810,251.2178191489083"></polyline><g><circle class="ms-lb-dot" cx="130" cy="67.42857142857143" r="6"></circle><text class="p-lbl" x="130" y="55.42857142857143" text-anchor="middle">transmitter</text><text class="p-lbl p-ink" x="130" y="89.42857142857143" text-anchor="middle">14</text></g><g><circle class="ms-lb-dot" cx="250" cy="64" r="6"></circle><text class="p-lbl" x="250" y="52" text-anchor="middle">+ antenna</text><text class="p-lbl p-ink" x="250" y="86" text-anchor="middle">16</text></g><g><circle class="ms-lb-dot" cx="420" cy="254.64639057747974" r="6"></circle><text class="p-lbl" x="420" y="242.64639057747974" text-anchor="middle">− path</text><text class="p-lbl p-ink" x="420" y="276.64639057747974" text-anchor="middle">-95.2</text></g><g><circle class="ms-lb-dot" cx="590" cy="254.64639057747974" r="6"></circle><text class="p-lbl" x="590" y="242.64639057747974" text-anchor="middle">− obstacles</text><text class="p-lbl p-ink" x="590" y="276.64639057747974" text-anchor="middle">-95.2</text></g><g><circle class="ms-lb-dot" cx="730" cy="251.2178191489083" r="6"></circle><text class="p-lbl" x="730" y="239.2178191489083" text-anchor="middle">+ antenna</text><text class="p-lbl p-ink" x="730" y="273.2178191489083" text-anchor="middle">-93.2</text></g><text class="p-title" x="0" y="16">10 km · 868 MHz · path loss 111.2 dB</text></svg></div><p class="ms-lb-verdict">A 43.8 dB margin — workable: 10–20 dB is what you reserve for the unexpected.</p></figure>
<p>By default the diagram shows a typical European link: 25 mW (+14 dBm), +2 dBi whips, 10 km line of sight at 868 MHz. The path eats 111 dB and more than forty decibels of margin remain. That looks like a lot. But in the real world it is eaten by terrain, trees, walls, rain and your own body if you hold the device in your hand: the "obstacles" slider shows how fast. So engineers reserve another 10–20 dB for the unexpected — and that is why a calculated hundred kilometres becomes five in practice. The same arithmetic for your own numbers is in the <a class="" href="https://cyberdev.space/en/radio/calculators/others/link_budget/">link budget calculator</a>.</p>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">what adds decibels</p><p class="ms-card__title">Antenna and height</p><div class="ms-card__body"><p>Antenna gain works both ways — on transmit and on receive. Swapping a stubby antenna for a proper whip easily gives 3–5 dB, that is 40–80 % more range.</p></div></div><div class="ms-card frame"><p class="ms-card__label">what eats them</p><p class="ms-card__title">Everything solid</p><div class="ms-card__body"><p>A wall — 5–15 dB. Trees in leaf — up to 10–20 dB per hundred metres. A human body next to the antenna — a few decibels. A poor cable — a few more.</p></div></div><div class="ms-card frame"><p class="ms-card__label">what deceives</p><p class="ms-card__title">The free-space calculation</p><div class="ms-card__body"><p>The free-space formula knows nothing about the ground. Within a few kilometres above the earth reflections and diffraction kick in, and real losses are usually 10–30 dB higher.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="real-range-terrain-and-the-fresnel-zone">Real range: terrain and the Fresnel zone<a href="https://cyberdev.space/en/blog/lora-up-close/#real-range-terrain-and-the-fresnel-zone" class="hash-link" aria-label="Direct link to Real range: terrain and the Fresnel zone" title="Direct link to Real range: terrain and the Fresnel zone" translate="no">​</a></h2>
<p>The most common disappointment goes like this: "there is line of sight, but no link". The reason is usually the same, and beginners are almost never told about it.</p>
<p>A radio wave does not travel as a thin beam but as a <strong>three-dimensional spindle</strong> around the straight line. That spindle is the Fresnel zone, and it has to be clear. If a hill, a roof or a row of trees gets into it, the signal drops even when the antennas formally "see" each other.</p>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 330" role="img" aria-label="Drawing: two masts, the Fresnel zone ellipse between them, and a hill poking into it"><defs><linearGradient id="skyl" x1="0" y1="0" x2="0" y2="1"><stop offset="0" style="stop-color:var(--k-0d1526)"></stop><stop offset="1" style="stop-color:var(--k-16203a)"></stop></linearGradient></defs><rect x="0" y="0" width="1000" height="330" fill="url(#skyl)" rx="8"></rect><ellipse cx="500" cy="120" rx="400" ry="62" fill-opacity=".16" stroke-width="1.4" stroke-dasharray="6 5" style="fill:var(--k-2b4fc9);stroke:var(--k-7aa6ff)"></ellipse><path d="M100 120 H900" stroke-width="2" fill="none" class="flow" style="stroke:var(--k-7aa6ff)"></path><text class="p-lbl" x="500" y="52" text-anchor="middle" style="font-size:11px;fill:var(--k-7aa6ff)">Fresnel zone · at 10 km and 868 MHz its mid-path radius is ≈ 29 metres</text><text class="p-lbl" x="500" y="112" text-anchor="middle" style="font-size:10px;fill:var(--k-dce4f5)">line of sight</text><path d="M0 330 L0 244 C 60 214, 120 226, 160 250 L200 330 Z" style="fill:var(--k-101728)"></path><path d="M1000 330 L1000 240 C 940 210, 880 224, 840 250 L800 330 Z" style="fill:var(--k-101728)"></path><path d="M380 330 Q 520 96 660 330 Z" style="fill:var(--k-182138);stroke:var(--k-22304d)"></path><text class="p-lbl" x="520" y="250" text-anchor="middle" style="font-size:10px">hill</text><line x1="100" y1="240" x2="100" y2="120" stroke-width="3" style="stroke:var(--k-c9d4ea)"></line><path d="M92 120 h16 M95 112 h10" stroke-width="2" style="stroke:var(--k-c9d4ea)"></path><line x1="900" y1="240" x2="900" y2="120" stroke-width="3" style="stroke:var(--k-c9d4ea)"></line><path d="M892 120 h16 M895 112 h10" stroke-width="2" style="stroke:var(--k-c9d4ea)"></path><text class="p-lbl p-ink" x="100" y="264" text-anchor="middle" style="font-size:10.5px">mast A</text><text class="p-lbl p-ink" x="900" y="264" text-anchor="middle" style="font-size:10.5px">mast B</text><g class="appear" style="--d:3s"><path d="M520 130 L520 168" stroke-width="2" style="stroke:var(--k-ff7c7c)"></path><path d="M514 138 l6 -8 l6 8" fill="none" stroke-width="2" style="stroke:var(--k-ff7c7c)"></path><text x="540" y="150" style="font-family:var(--mono);font-size:11px;fill:var(--k-ff7c7c)">the top is inside the zone</text><text x="540" y="166" style="font-family:var(--mono);font-size:11px;fill:var(--k-ff7c7c)">a quarter in — minus a few dB</text></g><text class="p-note" x="20" y="308">Rule of thumb: to lose nothing, at least 60 % of the radius of this spindle has to be clear.</text></svg></div></figure>
<p>The practical consequence: <strong>raising the antenna by a few metres often gives more than any radio setting</strong>. It does not "add power" — it pulls the spindle out from under the obstacle. That is why one node on a hill changes a network more than a dozen on windowsills. The zone radius for your own path is in the <a class="" href="https://cyberdev.space/en/radio/calculators/other/fresnel/">Fresnel zone calculator</a>, and the horizon for your masts in the <a class="" href="https://cyberdev.space/en/radio/calculators/others/line_of_sight/">line-of-sight calculator</a>.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">Two formulas worth knowing</p><div class="ms-card__body"><div class="ms-formula"><p>mid-path zone radius, m ≈ <strong>8.66 × √(<em>d</em> / <em>f</em>)</strong><br>
<em>d</em> — distance in km, <em>f</em> — frequency in GHz<br></p><br><p>horizon, km ≈ <strong>4.12 × (√<em>h₁</em> + √<em>h₂</em>)</strong><br>
<em>h</em> — antenna heights in metres</p></div><p>Two 10-metre masts see each other at most 26 km apart — already allowing for the radio wave bending slightly around the earth. Raise one of them to a hundred metres and the horizon moves out to 54 km.</p></div></div><div class="ms-card frame"><p class="ms-card__title">What to expect in reality</p><div class="ms-card__body"><table><thead><tr><th>where the node stands</th><th>real range</th></tr></thead><tbody><tr><td>Dense city buildings</td><td>0.5–2 km</td></tr><tr><td>Suburbs, low-rise</td><td>2–6 km</td></tr><tr><td>Village, fields, line of sight</td><td>8–20 km</td></tr><tr><td>Node on a hill or tower</td><td>30–80 km</td></tr><tr><td>Balloon or mountain to the ground</td><td>hundreds of km</td></tr></tbody></table><p>The range records you read about are almost always made from a great height and in the slowest mode. They are honest results — just not about a node on a balcony.</p></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hardware-what-is-actually-on-the-board">Hardware: what is actually on the board<a href="https://cyberdev.space/en/blog/lora-up-close/#hardware-what-is-actually-on-the-board" class="hash-link" aria-label="Direct link to Hardware: what is actually on the board" title="Direct link to Hardware: what is actually on the board" translate="no">​</a></h2>
<p>A LoRa modem is one transceiver chip plus support parts. All the chirp "magic" is baked into silicon: the microcontroller only says "send these bytes at this SF" and gets the finished result back.</p>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 290" role="img" aria-label="Block diagram of the RF chain: microcontroller, transceiver, power amplifier, low-noise amplifier, switch, filter, antenna"><text class="p-title" x="0" y="13">RF chain · a byte's way to the antenna and back</text><g stroke-width="1.8" style="stroke:var(--k-22304d)"><rect class="p-node" x="20" y="98" width="130" height="66" rx="9"></rect><rect class="p-node" x="212" y="98" width="150" height="66" rx="9"></rect><rect class="p-node" x="430" y="44" width="120" height="52" rx="9"></rect><rect class="p-node" x="430" y="166" width="120" height="52" rx="9"></rect><rect class="p-node" x="614" y="98" width="96" height="66" rx="9"></rect><rect class="p-node" x="756" y="98" width="96" height="66" rx="9"></rect></g><g class="p-lbl p-ink" text-anchor="middle" style="font-size:11.5px"><text x="85" y="128">microcontroller</text><text x="287" y="124">transceiver</text><text x="490" y="68">power</text><text x="490" y="190">low-noise</text><text x="662" y="128">switch</text><text x="804" y="128">filter</text></g><g class="p-lbl" text-anchor="middle" style="font-size:9.5px"><text x="85" y="146">program</text><text x="287" y="142">SX1262 / SX1276</text><text x="287" y="156">the chirps live here</text><text x="490" y="84">amplifier (PA)</text><text x="490" y="206">amplifier (LNA)</text><text x="662" y="146">receive ⇄ transmit</text><text x="804" y="146">cuts adjacent bands</text></g><g class="p-link"><path d="M150 131 H212"></path><path d="M362 118 L430 70"></path><path d="M362 144 L430 192"></path><path d="M550 70 L614 118"></path><path d="M550 192 L614 144"></path><path d="M710 131 H756"></path><path d="M852 131 H906"></path></g><text class="p-lbl" x="181" y="122" text-anchor="middle" style="font-size:9px">SPI</text><line x1="906" y1="131" x2="906" y2="52" stroke-width="3" style="stroke:var(--k-c9d4ea)"></line><path d="M898 52 h16 M901 44 h10" stroke-width="2" style="stroke:var(--k-c9d4ea)"></path><g fill="none" stroke-width="1.5" style="stroke:var(--k-7aa6ff)"><g class="wv" style="--d:0s"><path d="M876 46 a38 38 0 0 1 56 0"></path></g><g class="wv" style="--d:1.3s"><path d="M876 46 a38 38 0 0 1 56 0"></path></g></g><circle class="hp" r="6" style="--x0:150px;--y0:131px;--x1:362px;--y1:118px;--d:.5s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:362px;--y0:118px;--x1:614px;--y1:118px;--d:2s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:710px;--y0:131px;--x1:906px;--y1:110px;--d:3.5s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:906px;--y0:110px;--x1:710px;--y1:140px;--d:7s;fill:var(--k-5fd8ef)"></circle><circle class="hp" r="6" style="--x0:614px;--y0:144px;--x1:362px;--y1:144px;--d:8.5s;fill:var(--k-5fd8ef)"></circle><circle class="hp" r="6" style="--x0:212px;--y0:144px;--x1:150px;--y1:131px;--d:10s;fill:var(--k-5fd8ef)"></circle><text class="p-note" x="20" y="252">Pink path is transmit, blue is receive. The switch exists because there is one antenna and two chains:</text><text class="p-note" x="20" y="270">the powerful transmitter and the delicate receiver never work at the same time.</text></svg></div></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="chip-families">Chip families<a href="https://cyberdev.space/en/blog/lora-up-close/#chip-families" class="hash-link" aria-label="Direct link to Chip families" title="Direct link to Chip families" translate="no">​</a></h3>
<table><thead><tr><th>chip</th><th>range</th><th>features</th><th>where you find it</th></tr></thead><tbody><tr><td>SX1276 / SX1278</td><td>137–1020 MHz</td><td>The classic everything grew up on. Receive ≈ 10 mA, transmit up to +20 dBm</td><td>RFM95, older Heltec and TTGO boards, most home-made builds</td></tr><tr><td>SX1262 / SX1268</td><td>150–960 MHz</td><td>The next generation: receive ≈ 4.6 mA, transmit up to +22 dBm, better sensitivity and immunity to adjacent signals</td><td>Modern boards, E22 modules, almost everything new</td></tr><tr><td>SX1280</td><td>2.4 GHz</td><td>LoRa in the worldwide band. Faster but noticeably shorter range. Can <strong>measure distance</strong> by time of flight</td><td>ExpressLRS for drones, local sensors</td></tr><tr><td>LR1110 / LR1120</td><td>sub-GHz; LR1120 also 2.4 GHz</td><td>A transceiver with built-in GNSS and Wi-Fi scanning for geolocation without a separate GPS. Its sibling LR1121 has the same multi-band radio but no geolocation</td><td>Trackers where power saving matters</td></tr></tbody></table>
<p>Current figures are approximate, from datasheets; the details depend on supply voltage and amplifier mode.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">What one message costs</p><div class="ms-card__body"><p>Transmitting at full power draws about 120 mA. Multiply by time on air:</p><ul>
<li class=""><strong>SF7</strong> — 374 ms → about <strong>0.012 mAh</strong> per packet</li>
<li class=""><strong>SF12</strong> — 8.53 s → about <strong>0.28 mAh</strong> per packet</li>
</ul><p>So a 2000 mAh battery theoretically gives about 160 thousand packets at SF7 — and only seven thousand at SF12. And that is before the microcontroller, GPS and constant listening.</p></div></div><div class="ms-card frame"><p class="ms-card__title">Two details that break the link quietly</p><div class="ms-card__body"><p><strong>Temperature-compensated oscillator (TCXO).</strong> At SF11 and SF12 the symbol is long, and an ordinary crystal can drift with temperature so far that the receiver loses sync. Long-range boards fit a TCXO — which is why cheap modules sometimes work at low SF and stay silent at high SF.</p><p><strong>Channel activity detection (CAD).</strong> A mode in which the chip checks in a few milliseconds whether there is a preamble on air, spending almost no energy. "Listen before talk" is built on it — in Meshtastic among others.</p></div></div></div>
<div class="theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>Transmitting without an antenna</div><div class="admonitionContent_BuS1"><p>Switching on transmit without an antenna means reflecting all the power back into the amplifier. It does not like that and may burn out. This is not superstition but the first rule of working with any radio.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-antenna--the-cheapest-upgrade">The antenna — the cheapest upgrade<a href="https://cyberdev.space/en/blog/lora-up-close/#the-antenna--the-cheapest-upgrade" class="hash-link" aria-label="Direct link to The antenna — the cheapest upgrade" title="Direct link to The antenna — the cheapest upgrade" translate="no">​</a></h2>
<p>No setting gives as much as a proper antenna, correctly oriented and raised. And no mistake costs as much as a wrong one.</p>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 300" role="img" aria-label="Quarter-wave antenna lengths for 433, 868 and 915 MHz to scale, plus the radiation pattern"><text class="p-title" x="0" y="13">quarter-wave whip · to scale</text><g class="p-grid"><path d="M60 250 H420 M60 210 H420 M60 170 H420 M60 130 H420 M60 90 H420"></path></g><g class="p-lbl" text-anchor="end"><text x="52" y="254">0</text><text x="52" y="214">5 cm</text><text x="52" y="174">10 cm</text><text x="52" y="134">15 cm</text><text x="52" y="94">20 cm</text></g><g class="gh" style="--oy:250px;--d:.3s"><rect x="110" y="112" width="12" height="138" rx="3" style="fill:var(--k-7aa6ff)"></rect></g><g class="gh" style="--oy:250px;--d:.8s"><rect x="230" y="181" width="12" height="69" rx="3" style="fill:var(--k-a48cf5)"></rect></g><g class="gh" style="--oy:250px;--d:1.3s"><rect x="350" y="184" width="12" height="66" rx="3" style="fill:var(--k-ff79d2)"></rect></g><g style="font-family:var(--mono);font-size:11px;fill:var(--k-dce4f5)" text-anchor="middle"><text class="appear" style="--d:.9s" x="116" y="104">17.3 cm</text><text class="p-lbl" x="116" y="272" style="font-size:10px">433 MHz</text><text class="appear" style="--d:1.4s" x="236" y="173">8.6 cm</text><text class="p-lbl" x="236" y="272" style="font-size:10px">868 MHz</text><text class="appear" style="--d:1.9s" x="356" y="176">8.2 cm</text><text class="p-lbl" x="356" y="272" style="font-size:10px">915 MHz</text></g><text class="p-note" x="60" y="292">Length = a quarter of the wavelength. A centimetre off and the match drifts — part of the power comes back.</text><text class="p-title" x="560" y="30">radiation pattern · side view</text><line x1="700" y1="70" x2="700" y2="250" stroke-width="1" stroke-dasharray="4 4" style="stroke:var(--k-22304d)"></line><line x1="560" y1="160" x2="900" y2="160" stroke-width="1" stroke-dasharray="4 4" style="stroke:var(--k-22304d)"></line><line x1="700" y1="200" x2="700" y2="120" stroke-width="3" style="stroke:var(--k-c9d4ea)"></line><ellipse cx="640" cy="160" rx="58" ry="40" fill-opacity=".22" stroke-width="1.5" style="fill:var(--k-2b4fc9);stroke:var(--k-7aa6ff)"></ellipse><ellipse cx="760" cy="160" rx="58" ry="40" fill-opacity=".22" stroke-width="1.5" style="fill:var(--k-2b4fc9);stroke:var(--k-7aa6ff)"></ellipse><text class="p-lbl" x="700" y="96" text-anchor="middle" style="font-size:10px;fill:var(--k-ff7c7c)">up — almost nothing</text><text class="p-lbl" x="700" y="238" text-anchor="middle" style="font-size:10px;fill:var(--k-ff7c7c)">down — same</text><text class="p-lbl" x="560" y="140" style="font-size:10px;fill:var(--k-7aa6ff)">sideways —</text><text class="p-lbl" x="560" y="154" style="font-size:10px;fill:var(--k-7aa6ff)">maximum</text><text class="p-note" x="560" y="292">A whip radiates a "doughnut": best towards the horizon, worst straight up and straight down.</text></svg></div></figure>
<p>The practical consequence of the "doughnut" radiation pattern: a drone right overhead or a node one floor up can be heard worse than the same node a kilometre to the side. And one more thing: the antennas at both ends must be oriented the same way — vertically. One vertical and the other horizontal costs about 20 decibels for nothing. The whip and radial lengths for your frequency are in the <a class="" href="https://cyberdev.space/en/radio/calculators/antennas/ground_plane/">Ground Plane antenna calculator</a>.</p>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">free</p><p class="ms-card__title">Put it higher</p><div class="ms-card__body"><p>Every metre of height pulls the Fresnel zone out from under obstacles and pushes the horizon back. The cheapest decibels in the world.</p></div></div><div class="ms-card frame"><p class="ms-card__label">almost free</p><p class="ms-card__title">Stand it upright</p><div class="ms-card__body"><p>The same polarisation at both ends. An antenna laid on its side "so it does not stick out" costs more than any other mistake.</p></div></div><div class="ms-card frame"><p class="ms-card__label">costs money</p><p class="ms-card__title">A directional antenna</p><div class="ms-card__body"><p>For a fixed link between two points a Yagi gives +8–12 dB and cuts interference from the sides. Useless for a moving node: it has to be aimed.</p></div></div></div>
<div class="theme-admonition theme-admonition-danger admonition_xJq3 alert alert--danger"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>Three ways to ruin a radio in a second</div><div class="admonitionContent_BuS1"><p><strong>1.</strong> Transmit without an antenna. <strong>2.</strong> Fit an antenna for the wrong band — a 433 MHz one on 868 MHz or the other way round. <strong>3.</strong> Run two metres of cheap thin cable and wonder where half the power went.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lorawan-what-gets-built-on-top">LoRaWAN: what gets built on top<a href="https://cyberdev.space/en/blog/lora-up-close/#lorawan-what-gets-built-on-top" class="hash-link" aria-label="Direct link to LoRaWAN: what gets built on top" title="Direct link to LoRaWAN: what gets built on top" translate="no">​</a></h2>
<p>The most widespread protocol on top of LoRa. It is built for one scenario: millions of cheap sensors, each waking a few times a day, saying one sentence and going back to sleep for years.</p>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 320" role="img" aria-label="LoRaWAN architecture: a device, several gateways, a network server that drops duplicates, an application server"><text class="p-title" x="0" y="13">star of stars · one packet heard by several gateways</text><circle cx="80" cy="160" r="26" class="p-node" stroke-width="2.5" style="stroke:var(--k-7aa6ff)"></circle><text class="p-lbl p-ink" x="80" y="165" text-anchor="middle" style="font-size:10px">sensor</text><text class="p-lbl" x="80" y="204" text-anchor="middle" style="font-size:9.5px">asleep 99.9% of the time</text><g fill="none" stroke-width="1.4" style="stroke:var(--k-7aa6ff)"><circle class="rng" cx="80" cy="160" r="8" style="--d:.4s"></circle><circle class="rng" cx="80" cy="160" r="8" style="--d:2.1s"></circle></g><g class="p-link"><path d="M108 148 L340 66 M108 160 L340 160 M108 174 L340 254"></path></g><g stroke-width="2" style="stroke:var(--k-22304d)"><rect class="p-node" x="340" y="42" width="120" height="48" rx="9"></rect><rect class="p-node" x="340" y="136" width="120" height="48" rx="9"></rect><rect class="p-node" x="340" y="230" width="120" height="48" rx="9"></rect></g><g class="p-lbl p-ink" text-anchor="middle" style="font-size:10.5px"><text x="400" y="70">gateway A</text><text x="400" y="164">gateway B</text><text x="400" y="258">gateway C</text></g><text class="p-lbl" x="400" y="300" text-anchor="middle" style="font-size:9.5px">a gateway decides nothing: it hears 8 channels and every SF at once — and forwards</text><g class="p-link"><path d="M460 66 L600 148 M460 160 L600 160 M460 254 L600 172"></path></g><rect class="p-node" x="600" y="118" width="140" height="84" rx="10" stroke-width="2" style="stroke:var(--k-7aa6ff)"></rect><text class="p-lbl p-ink" x="670" y="150" text-anchor="middle" style="font-size:11px">network</text><text class="p-lbl p-ink" x="670" y="166" text-anchor="middle" style="font-size:11px">server</text><text class="p-lbl" x="670" y="184" text-anchor="middle" style="font-size:9px">all the brains are here</text><g class="appear" style="--d:5s"><circle cx="560" cy="106" r="11" stroke-width="1.4" style="fill:var(--k-2a1420);stroke:var(--k-ff7c7c)"></circle><text x="560" y="110" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-ff7c7c)">✕</text><circle cx="560" cy="212" r="11" stroke-width="1.4" style="fill:var(--k-2a1420);stroke:var(--k-ff7c7c)"></circle><text x="560" y="216" text-anchor="middle" style="font-family:var(--mono);font-size:10px;fill:var(--k-ff7c7c)">✕</text><text x="470" y="106" text-anchor="end" style="font-family:var(--mono);font-size:9.5px;fill:var(--k-ff7c7c)">duplicates</text><text x="470" y="216" text-anchor="end" style="font-family:var(--mono);font-size:9.5px;fill:var(--k-ff7c7c)">are dropped</text></g><path class="p-link" d="M740 160 H860"></path><rect class="p-node" x="860" y="130" width="120" height="60" rx="9" stroke-width="2" style="stroke:var(--k-22304d)"></rect><text class="p-lbl p-ink" x="920" y="156" text-anchor="middle" style="font-size:10.5px">application</text><text class="p-lbl" x="920" y="172" text-anchor="middle" style="font-size:9px">the data is read here</text><circle class="hp" r="6" style="--x0:108px;--y0:148px;--x1:340px;--y1:66px;--d:1s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:108px;--y0:160px;--x1:340px;--y1:160px;--d:1s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:108px;--y0:174px;--x1:340px;--y1:254px;--d:1s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:460px;--y0:66px;--x1:600px;--y1:148px;--d:3s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:460px;--y0:160px;--x1:600px;--y1:160px;--d:3s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:460px;--y0:254px;--x1:600px;--y1:172px;--d:3s;fill:var(--k-ff79d2)"></circle><circle class="hp" r="6" style="--x0:740px;--y0:160px;--x1:860px;--y1:160px;--d:7s;fill:var(--k-3fd3a0)"></circle></svg></div></figure>
<p>The key idea of the architecture: a device knows nothing about gateways and does not "connect" anywhere. It simply shouts into the air. Whoever heard it forwards it, and the server drops duplicates and works out who it is dealing with. So a device can move between cities without noticing: there is nothing to break, because there is no connection.</p>
<div class="ms-cards ms-cards--3"><div class="ms-card frame"><p class="ms-card__label">class A</p><p class="ms-card__title">The most frugal</p><div class="ms-card__body"><p>The device transmits whenever it wants and then <strong>briefly opens its receiver twice</strong> — about one and two seconds later. Outside those windows it is deaf, so the server cannot reach it first and waits for the next uplink. Runs for years on a battery.</p></div></div><div class="ms-card frame"><p class="ms-card__label">class B</p><p class="ms-card__title">The compromise</p><div class="ms-card__body"><p>Gateways send regular beacons, the device syncs to them and opens extra receive windows on a schedule. It can be reached with a predictable delay — at the cost of higher consumption.</p></div></div><div class="ms-card frame"><p class="ms-card__label">class C</p><p class="ms-card__title">Always on</p><div class="ms-card__body"><p>The receiver is on all the time, paused only for the device's own transmissions. Minimal latency, maximal consumption. For mains-powered devices: meters, locks, lighting.</p></div></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="security-and-adaptation">Security and adaptation<a href="https://cyberdev.space/en/blog/lora-up-close/#security-and-adaptation" class="hash-link" aria-label="Direct link to Security and adaptation" title="Direct link to Security and adaptation" translate="no">​</a></h3>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">Two keys, not one</p><div class="ms-card__body"><p>LoRaWAN encryption is AES-128, but there are two keys: the <strong>network</strong> key checks the packet's integrity and that it belongs to the network, the <strong>application</strong> key encrypts the content itself. So the network operator sees that a packet is genuine but not what is inside.</p><p>A device joins the network either through a join procedure with key exchange or with pre-provisioned keys — the second option is simpler and less secure.</p></div></div><div class="ms-card frame"><p class="ms-card__title">Adaptive data rate</p><div class="ms-card__body"><p>The server sees what margin packets arrive with and tells the device to lower its SF if the link is solid. The gain is twofold: the device saves battery, the network saves airtime.</p><p>That is why a stationary sensor's SF slides down by itself over time, while a moving one stays high — the server cannot keep up.</p></div></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>The scarcest resource is the downlink</div><div class="admonitionContent_BuS1"><p>A gateway cannot listen and transmit at the same time, and it is subject to the same duty-cycle limits. So in LoRaWAN <strong>a packet "down" costs much more than a packet "up"</strong>. Networks where every sensor waits for an acknowledgement hit this ceiling long before any other.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="meshes-drones-satellites">Meshes, drones, satellites<a href="https://cyberdev.space/en/blog/lora-up-close/#meshes-drones-satellites" class="hash-link" aria-label="Direct link to Meshes, drones, satellites" title="Direct link to Meshes, drones, satellites" translate="no">​</a></h2>
<p>LoRaWAN is the best known, but far from the only thing built on this modulation.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__label">networks without infrastructure</p><p class="ms-card__title">Meshtastic and Reticulum</p><div class="ms-card__body"><p>They take only the modulation and build their own network on top, without gateways or servers. <a class="" href="https://cyberdev.space/en/blog/meshtastic-up-close/">Meshtastic</a> is a ready-made chat with flood relaying, <a class="" href="https://cyberdev.space/en/blog/reticulum-up-close/">Reticulum</a> a full network stack with cryptographic addressing. Both run on the same cheap boards.</p></div></div><div class="ms-card frame"><p class="ms-card__label">drone control</p><p class="ms-card__title">ExpressLRS</p><div class="ms-card__body"><p>An unexpected use: the same modulation turned inside out. Instead of range at the cost of time — <strong>minimal latency</strong>: tiny packets of a few bytes, hundreds of times a second, at low SF and often on 2.4 GHz. The same hardware, the opposite trade-off.</p></div></div><div class="ms-card frame"><p class="ms-card__label">distance measurement</p><p class="ms-card__title">Ranging on 2.4 GHz</p><div class="ms-card__body"><p>2.4 GHz chips can measure a signal's round-trip time, that is the distance between two nodes to within metres. This is used for indoor positioning, where GPS does not work.</p></div></div><div class="ms-card frame"><p class="ms-card__label">links from space</p><p class="ms-card__title">Satellites and balloons</p><div class="ms-card__body"><p>Several operators receive LoRa straight from low orbit: a sensor in a field talks to a satellite with no ground infrastructure at all. There is a separate frequency-hopping mode for this, which copes better with Doppler shift and a crowded channel.</p></div></div></div>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>What follows from this</div><div class="admonitionContent_BuS1"><p>One modulation serves both a sensor that speaks twice a day on a battery lasting ten years and a drone controller with a few milliseconds of latency. The difference lies entirely in the settings and the protocol on top. So the question "what is LoRa's range / speed" has no answer until you say <strong>which trade-off you mean</strong>.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="regulation-duty-cycle-and-power">Regulation: duty cycle and power<a href="https://cyberdev.space/en/blog/lora-up-close/#regulation-duty-cycle-and-power" class="hash-link" aria-label="Direct link to Regulation: duty cycle and power" title="Direct link to Regulation: duty cycle and power" translate="no">​</a></h2>
<p>LoRa lives in licence-free bands — the same ones used by baby monitors, weather stations and gate remotes. Nobody pays for access, but there are rules, and they are built right into how devices behave.</p>
<p>The main European rule is the <strong>duty cycle</strong>: the share of time you are allowed to transmit. Typically it is one per cent. That sounds harmless until you count it in seconds: after every transmission you must stay silent <strong>99 times longer</strong> than you transmitted.</p>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 200" role="img" aria-label="At a glance: one per cent transmitting and ninety-nine per cent silence"><text class="p-title" x="0" y="13">the one per cent rule · on one sub-band</text><rect class="gw" x="60" y="44" width="9" height="40" rx="3" style="--ox:60px;--d:.2s;fill:var(--k-ff79d2)"></rect><rect class="gw" x="69" y="44" width="871" height="40" rx="3" style="--ox:69px;--d:.6s;fill:var(--k-182138);stroke:var(--k-22304d)"></rect><text class="p-lbl" x="60" y="106" style="font-size:10.5px;fill:var(--k-ff79d2)">1% — transmit</text><text class="p-lbl" x="500" y="106" text-anchor="middle" style="font-size:10.5px">99% — mandatory silence</text><text class="p-lbl p-ink" x="60" y="146" style="font-size:12px">One full packet on SF12 is 8.5 seconds on air.</text><text x="60" y="170" style="font-family:var(--mono);font-size:15px;fill:var(--k-ffc64d);font-weight:700">Then 14 minutes during which you may not transmit at all.</text></svg></div></figure>
<p>This is not theory but firmware behaviour: the stack counts the airtime used and simply does not send the next packet until the pause is over. So "the message vanished" sometimes means "the limit is used up" rather than "no signal". The pause for any packet is shown by the time-on-air calculator above.</p>
<table><thead><tr><th>what is sent</th><th>time on air</th><th>pause at a 1 % limit</th></tr></thead><tbody><tr><td>20 bytes at SF7</td><td>57 ms</td><td>5.6 s</td></tr><tr><td>237 bytes at SF7</td><td>374 ms</td><td>37 s</td></tr><tr><td>50 bytes at SF12</td><td>2.30 s</td><td>3.8 min</td></tr><tr><td>237 bytes at SF12</td><td>8.53 s</td><td>14 min</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-it-looks-by-region">How it looks by region<a href="https://cyberdev.space/en/blog/lora-up-close/#how-it-looks-by-region" class="hash-link" aria-label="Direct link to How it looks by region" title="Direct link to How it looks by region" translate="no">​</a></h3>
<table><thead><tr><th>region</th><th>band</th><th>typical power</th><th>how airtime is limited</th></tr></thead><tbody><tr><td>Europe, including Ukraine</td><td>868 MHz</td><td>14 dBm (25 mW)</td><td>Duty cycle: typically 1 %, up to 10 % and higher power on one narrow sub-band</td></tr><tr><td>Europe</td><td>433 MHz</td><td>10 dBm</td><td>Duty cycle too; the band is narrower and noisier, but the longer wave bends around obstacles better</td></tr><tr><td>USA, Canada</td><td>902–928 MHz</td><td>up to 30 dBm</td><td>No duty cycle, but frequency hopping and limits on dwell time per channel</td></tr><tr><td>Asia, Oceania</td><td>920–923 MHz</td><td>depends on the country</td><td>"Listen before talk" is often required</td></tr></tbody></table>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>This is a guide, not legal advice</div><div class="admonitionContent_BuS1"><p>The exact limits on power, duty cycle and allowed sub-bands are set by national rules and they change. Before adding an amplifier or turning up the power, check them against the regulations in force. Buy the board for your band too: the "wrong" frequency cannot be fixed in the settings.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-limits-collisions-and-network-capacity">The limits: collisions and network capacity<a href="https://cyberdev.space/en/blog/lora-up-close/#the-limits-collisions-and-network-capacity" class="hash-link" aria-label="Direct link to The limits: collisions and network capacity" title="Direct link to The limits: collisions and network capacity" translate="no">​</a></h2>
<p>The last thing people usually keep quiet about: LoRa has no conductor. Devices transmit whenever they like, and now and then they speak at the same time.</p>
<figure class="ms-fig ms-lora motion-paused"><button type="button" class="ms-zoom-btn" aria-label="Expand diagram" title="Expand diagram"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"></path></svg></button><div class="ms-fig__body"><svg viewBox="0 0 1000 260" role="img" aria-label="Two cases: two packets overlap and both die; or one is stronger and survives"><text class="p-title" x="0" y="13">two packets at once</text><text class="p-lbl p-ink" x="0" y="52" style="font-size:11.5px">equal strength</text><rect x="120" y="60" width="330" height="30" rx="5" fill-opacity=".55" style="fill:var(--k-7aa6ff)"></rect><rect x="360" y="60" width="330" height="30" rx="5" fill-opacity=".55" style="fill:var(--k-ff79d2)"></rect><rect x="360" y="60" width="90" height="30" rx="5" fill-opacity=".5" style="fill:var(--k-ff7c7c)"></rect><g class="appear" style="--d:2s"><text x="405" y="112" text-anchor="middle" style="font-family:var(--mono);font-size:11px;fill:var(--k-ff7c7c)">overlap</text><text x="740" y="80" style="font-family:var(--mono);font-size:12px;fill:var(--k-ff7c7c)">✕ both lost</text></g><text class="p-lbl p-ink" x="0" y="162" style="font-size:11.5px">one stronger</text><rect x="120" y="170" width="330" height="36" rx="5" style="fill:var(--k-7aa6ff)"></rect><rect x="360" y="176" width="330" height="24" rx="5" fill-opacity=".35" style="fill:var(--k-ff79d2)"></rect><g class="appear" style="--d:4s"><text x="740" y="184" style="font-family:var(--mono);font-size:12px;fill:var(--k-3fd3a0)">✓ the stronger one is decoded</text><text x="740" y="202" style="font-family:var(--mono);font-size:11px;fill:var(--k-ff7c7c)">✕ the weaker one is lost</text></g><text class="p-note" x="0" y="240">About six decibels of difference is enough for the stronger signal to "capture" the receiver and be decoded.</text></svg></div></figure>
<p>This is called the capture effect, and it is what saves real networks: in real life signals are rarely of equal strength. But it does not cancel the statistics — the more devices, the more collisions, and they grow faster than linearly.</p>
<div class="ms-cards ms-cards--2"><div class="ms-card frame"><p class="ms-card__title">How many nodes one channel carries</p><div class="ms-card__body"><p>For uncoordinated networks the classic ALOHA estimate applies: about <strong>18 % of channel time</strong> can be used productively; beyond that collisions eat more than the extra load adds.</p><p>For SF12 and a 100-byte packet (3.94 s): an hour has 3600 seconds of channel time, about 648 of them useful — roughly <strong>160 packets per hour</strong>. If every node speaks once an hour, that is about 160 nodes per channel. At SF7 the same channel carries twenty times more.</p></div></div><div class="ms-card frame"><p class="ms-card__title">Why meshes hit the ceiling sooner</p><div class="ms-card__body"><p>In LoRaWAN a packet sounds on air once, after that a wire carries it. In a mesh every relaying node <strong>transmits the same packet again</strong>. One message in a network with three levels of relaying means five to seven real transmissions.</p><p>So a LoRa mesh is always a compromise: it gives coverage without infrastructure but pays for it by using the same scarce airtime many times over.</p></div></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>One paragraph that explains every limit</div><div class="admonitionContent_BuS1"><p>Every decision in LoRa comes down to one thing: <strong>the air is shared and slow</strong>. Hence the ceiling on packet size, the limit on hops, the advice to use a lower SF, the duty cycle, and the reason networks with thousands of sensors are designed so each one speaks as rarely as possible. These are not flaws of the technology — they are its price for range.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="glossary">Glossary<a href="https://cyberdev.space/en/blog/lora-up-close/#glossary" class="hash-link" aria-label="Direct link to Glossary" title="Direct link to Glossary" translate="no">​</a></h2>
<ul>
<li class=""><strong>Chirp</strong> — a whistle: a signal whose frequency sweeps evenly through the whole band. One chirp is one symbol.</li>
<li class=""><strong>CSS</strong> — Chirp Spread Spectrum, the modulation itself. What people call LoRa.</li>
<li class=""><strong>SF · spreading factor</strong> — 7–12. How many bits a symbol carries and at the same time how long it is. Each +1 doubles the time.</li>
<li class=""><strong>BW · bandwidth</strong> — 125 / 250 / 500 kHz. Wider is faster, but 3 dB deafer with every doubling.</li>
<li class=""><strong>CR · coding rate</strong> — 4/5 to 4/8. Redundant code against short interference.</li>
<li class=""><strong>Preamble</strong> — a series of identical chirps at the start of a packet that the receiver latches on to.</li>
<li class=""><strong>Sync word</strong> — a byte that separates "private" and "public" networks. Different values — nodes do not hear each other.</li>
<li class=""><strong>Time on air</strong> — how long a packet actually occupies the air. The key quantity in all of LoRa.</li>
<li class=""><strong>SNR</strong> — how much stronger the signal is than the noise. In LoRa it can be negative — and that is normal.</li>
<li class=""><strong>RSSI</strong> — the absolute received signal level in dBm. Together with SNR it shows link quality.</li>
<li class=""><strong>Sensitivity</strong> — the weakest signal the receiver can still decode: from −123 to −137 dBm depending on SF.</li>
<li class=""><strong>Link budget</strong> — power plus antennas minus losses minus sensitivity. How many decibels are to spare.</li>
<li class=""><strong>Fresnel zone</strong> — the spindle around the straight line that has to be clear. Line of sight alone is no guarantee.</li>
<li class=""><strong>Duty cycle</strong> — the share of time you may transmit. Typically 1 % in Europe.</li>
<li class=""><strong>CAD</strong> — a cheap mode in which the chip checks for a preamble on air, spending almost no energy.</li>
<li class=""><strong>LoRaWAN</strong> — a protocol and architecture on top of LoRa: gateways, a network server, classes, two keys, adaptive data rate.</li>
</ul>
<p>Sensitivity and current figures are typical values from Semtech datasheets; time on air is computed with the Semtech formula. Before relying on them in practice, check them against your chip's documentation and your region's rules.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>The "up close" series</div><div class="admonitionContent_BuS1"><ul>
<li class=""><a class="" href="https://cyberdev.space/en/blog/meshtastic-up-close/">Meshtastic up close</a> — a ready-made chat on "raw" LoRa: managed flooding, channels, node roles</li>
<li class=""><a class="" href="https://cyberdev.space/en/blog/reticulum-up-close/">Reticulum up close</a> — a network stack where the address is a key and LoRa is just one of the carriers</li>
<li class=""><a class="" href="https://cyberdev.space/en/blog/four-internets/">Four internets</a> — Reticulum, I2P, Yggdrasil and Nostr side by side: who sits on which floor</li>
</ul></div></div>]]></content:encoded>
            <category>radio</category>
            <category>LoRa</category>
            <category>LoRaWAN</category>
            <category>mesh networks</category>
        </item>
        <item>
            <title><![CDATA[A 1:1 Dipole Balun on the NanoVNA: What S11 Proves]]></title>
            <link>https://cyberdev.space/en/blog/dipole-balun-nanovna/</link>
            <guid>https://cyberdev.space/en/blog/dipole-balun-nanovna/</guid>
            <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A 1:1 balun on a ferrite toroid at the centre of a dipole, and what an S11 measurement really shows: the balun does not spoil the match — and nothing about braid current.]]></description>
            <content:encoded><![CDATA[<p>The antenna from the <a class="" href="https://cyberdev.space/en/blog/first-receiver-junior/">previous note</a> — two legs of twisted pair, about twenty metres each, six metres up — worked beautifully on receive. What did not work was the place where the wire meets the cable. To begin with there was a twisted joint and insulating tape: a solution that lasts until the first rain and does not hold electrically at all.</p>
<p>On 8 December 2023 I built a proper centre: a balun on a ferrite toroid inside a sealed box. And, more to the point of this note, I checked it with an analyser — and then worked out that I had checked something other than what I thought.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-a-dipole-needs-a-balun">Why a dipole needs a balun<a href="https://cyberdev.space/en/blog/dipole-balun-nanovna/#why-a-dipole-needs-a-balun" class="hash-link" aria-label="Direct link to Why a dipole needs a balun" title="Direct link to Why a dipole needs a balun" translate="no">​</a></h2>
<p>A dipole is balanced: two identical legs about the feed point. Coax is unbalanced: the centre conductor and the braid are not equals. Join one straight to the other, and part of the current that should have gone into the second leg flows instead down the <strong>outside of the braid</strong> towards the rig.</p>
<p>The cable becomes a third leg of the antenna. On transmit that means a distorted pattern and an SWR that changes when you move the cable. On receive — and a receiver is what I had then — the consequence is nastier: the braid picks up whatever it passes. Switch-mode power supplies, LED lamps, chargers — everything that makes noise in the house lands on the cable and walks into the receiver alongside the wanted signal.</p>
<p>In my case that was not marginal theory. The wire hangs six metres up — not “well away from the house” but directly above it, in the same field of noise. There was nowhere to move the antenna to, so the least I could do was stop the noise taking a second route in, along the cable.</p>
<p>A 1:1 balun breaks that path: it passes the differential current, which is what the whole thing was built for, and opposes the common-mode current, the one that flows on the braid.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-that-toroid-turned-out-to-be">What that toroid turned out to be<a href="https://cyberdev.space/en/blog/dipole-balun-nanovna/#what-that-toroid-turned-out-to-be" class="hash-link" aria-label="Direct link to What that toroid turned out to be" title="Direct link to What that toroid turned out to be" translate="no">​</a></h2>
<p>The markings on the toroid itself cannot be read: it is wrapped first in white tape and then, all together, in black. Unwrapping proved unnecessary — the markings turned up somewhere else, in a purchase history: <strong>an M2000NM K32×20×9 ferrite toroid</strong> and <strong>PETD2-200 enamelled copper wire, 1.0 mm</strong>.</p>
<p><img decoding="async" loading="lazy" alt="The toroid with its bifilar winding lying in a white junction box, a ruler beside it" src="https://cyberdev.space/en/assets/images/core-wound-e4ef0aaa24fe2e2f3edb9b8cbecff801.webp" width="1200" height="1600" class="img_ev3q"></p>
<p><strong>Size.</strong> K32×20×9 reads straightforwardly: 32 mm outside, 20 inside, 9 high. My estimate from the ruler in the photograph — “about 35–36 mm” — was three or four millimetres too generous: the winding and the tape add more to the overall size than the eye credits. In Western terms the core sits between an FT-114 (29.0 mm) and an FT-140 (35.6 mm).</p>
<p><strong>Material.</strong> M2000NM is a manganese-zinc ferrite with an initial permeability of 2000. The closest Western equivalent is Fair-Rite 77: the same MnZn, the same μ<sub>i</sub> = 2000. The guess — “a high-permeability ferrite, not powdered iron” — turned out right, and the core is exactly the class you would choose for this job deliberately.</p>
<p><strong>The winding: 14 bifilar turns.</strong> Each turn is two wires laid side by side — the classic Guanella arrangement, where the two conductors form a length of transmission line on a shared core. The numbers agree with the photograph: 14 turns of a pair means 28 passes through the window, a millimetre and a bit each with the enamel, about 30 mm in all against an inner perimeter under the tape of roughly 56 mm. One layer with gaps — exactly what the close-up shows.</p>
<p><strong>The white tape under the winding</strong> is not decoration, and it now has two reasons. The first is obvious: a ferrite toroid has sharp edges, and they cut the enamel where the wire bends over the rim. The second arrived with the markings: manganese-zinc ferrite is <strong>electrically conductive</strong>, its resistivity orders of magnitude lower than nickel-zinc. Laying bare wire straight onto a core like that is not a good idea, even with the enamel intact.</p>
<p><strong>What that gives.</strong> The core constant comes from the geometry: mean magnetic path length l<sub>e</sub> = π·(32 + 20)/2 ≈ 81.7 mm, cross-section A<sub>e</sub> = 9·(32 − 20)/2 = 54 mm², hence A<sub>L</sub> = μ<sub>0</sub>·μ<sub>i</sub>·A<sub>e</sub>/l<sub>e</sub> ≈ 1.66 µH/turn². On 14 turns that is 0.33 mH — but only if the permeability held at 2000. It does not: in MnZn ferrite μ′ starts falling above a megahertz while the losses rise. For a choke that is no misfortune but the working regime: the impedance simply stops being inductive and becomes resistive. Substituting the complex permeability of mix 77 — which is how the <a class="" href="https://cyberdev.space/en/radio/calculators/coils/choke_balun/">common-mode choke calculator</a> works it out — 14 turns on this core give:</p>
<table><thead><tr><th>Band</th><th>Resistive part</th><th>Reactive part</th><th>Magnitude</th></tr></thead><tbody><tr><td>160 m (1.84 MHz)</td><td>2.4 kΩ</td><td>+2.2 kΩ</td><td>3.3 kΩ</td></tr><tr><td>80 m (3.65 MHz)</td><td>3.6 kΩ</td><td>+1.3 kΩ</td><td>3.9 kΩ</td></tr><tr><td>40 m (7.1 MHz)</td><td>3.8 kΩ</td><td>≈ 0</td><td>3.8 kΩ</td></tr><tr><td>20 m (14.2 MHz)</td><td>3.2 kΩ</td><td>−0.6 kΩ</td><td>3.3 kΩ</td></tr><tr><td>15 m (21.2 MHz)</td><td>2.9 kΩ</td><td>−0.7 kΩ</td><td>3.0 kΩ</td></tr><tr><td>10 m (28.5 MHz)</td><td>2.7 kΩ</td><td>−0.8 kΩ</td><td>2.8 kΩ</td></tr></tbody></table>
<p>So from 160 down to 10 metres it is three or four kilohms, and from forty metres upwards almost purely resistive. The “few kilohms” benchmark mentioned below is met — though without much margin. And this is <strong>a calculation from an equivalent material's data, not a measurement</strong>; why that wording stands as final will become clear.</p>
<p><strong>Will it take transmit power.</strong> The very losses that make M2000NM a good choke turn into heat on transmit: common-mode current warms this core, and high-permeability MnZn is more vulnerable in that respect than nickel-zinc mixes 43 or 31. In December 2023 the question did not arise — a receiver was connected to the box. But later my first digital contacts went out through this same assembly, so the core did work on transmit, and in a mode where the carrier is held for the whole transmission. It survived. I would still not repeat that blind at a hundred watts: a core for that kind of power gets calculated afresh.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-box">The box<a href="https://cyberdev.space/en/blog/dipole-balun-nanovna/#the-box" class="hash-link" aria-label="Direct link to The box" title="Direct link to The box" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="The finished assembly: the toroid under black tape, through-bolts with wing nuts for the legs, a blue crimp terminal" src="https://cyberdev.space/en/assets/images/box-inside-4c0d142fa90994160637f9e0e975ddfb.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>The enclosure is an ordinary junction box. Through-bolts with washers and wing nuts pass through opposite walls: the antenna legs fasten to them, and they can be tightened in winter wearing gloves, with no soldering iron up the mast. The toroid lies flat, wrapped in black tape. One joint is made with a blue crimp terminal, the rest are under heatshrink.</p>
<p>That is the standard of work one need not be ashamed of, and at the same time the standard that can be reached in an evening out of what is in the drawer.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-measurement">The measurement<a href="https://cyberdev.space/en/blog/dipole-balun-nanovna/#the-measurement" class="hash-link" aria-label="Direct link to The measurement" title="Direct link to The measurement" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="The box connected to a NanoVNA through an adapter, S11 and a Smith chart on the screen" src="https://cyberdev.space/en/assets/images/vna-setup-a052ef803b4aee542a95220b08bcca15.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>A NanoVNA, sweeping from 1 MHz, S11 from the cable side. On the output terminals, in place of the antenna legs, a 50 Ω resistor. That matters: what was measured was the assembly itself, not the antenna along with it.</p>
<p><img decoding="async" loading="lazy" alt="NanoVNA screen: 51.5 Ω, 198 nH, SWR 1.097 at the marker on 3.660 MHz" src="https://cyberdev.space/en/assets/images/vna-80m-933c9ce9db92692808bb794be4d57edd.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>At 3.660 MHz: <strong>51.5 Ω with 198 nH in series</strong>, SWR 1.097. Four and a half ohms of reactance against fifty of resistance.</p>
<p><img decoding="async" loading="lazy" alt="NanoVNA screen: 50.19 Ω, SWR 1.040 at the marker on 14.300 MHz" src="https://cyberdev.space/en/assets/images/vna-20m-0910c54af6f085b9a145121216adb72e.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>At 14.300 MHz: <strong>50.19 Ω</strong>, SWR 1.040. Practically a perfect fifty ohms.</p>
<p>So from 80 to 20 metres the assembly stays transparent: it introduces neither loss nor a shift in impedance that would show at this scale.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="and-here-is-the-point">And here is the point<a href="https://cyberdev.space/en/blog/dipole-balun-nanovna/#and-here-is-the-point" class="hash-link" aria-label="Direct link to And here is the point" title="Direct link to And here is the point" translate="no">​</a></h2>
<p>This measurement <strong>is not a test of the balun as a balun.</strong></p>
<p>I fed a signal into the cable side and looked at what the instrument saw. It saw fifty ohms. But it would have shown the same fifty ohms had I connected that same resistor through a length of cable — no ferrite required. S11 into 50 Ω measures the <strong>differential path</strong>: whether the transformer has eaten the match, whether it has losses or stray resonances in the working range. That question has been answered, and the answer is good.</p>
<p>The question a balun is fitted for in the first place — <strong>how much impedance it presents to common-mode current</strong> — this measurement does not touch at all. Common-mode current flows on the outside of the braid, that is, on the very conductor that does not exist in the S11 setup.</p>
<p>This is not an error of the instrument, nor of the method. It is an error of interpretation, and I made it: I saw an SWR of 1.04 and decided the assembly had been checked. Half of it had.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-measure-it-properly">How to measure it properly<a href="https://cyberdev.space/en/blog/dipole-balun-nanovna/#how-to-measure-it-properly" class="hash-link" aria-label="Direct link to How to measure it properly" title="Direct link to How to measure it properly" translate="no">​</a></h2>
<p>The common-mode impedance of a choke is measured differently: the two leads on one side are shorted together, the two on the other side likewise, and the impedance between those two points is measured. That is what common-mode current sees on its way. On HF the benchmark is a few kilohms across the working range; less means the braid is still acting as an antenna, just slightly worse at it.</p>
<p>It is done with the same NanoVNA and the same pair of hands. The only difference is where the leads go — and whether you have asked yourself the right question.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-can-no-longer-be-found-out">What can no longer be found out<a href="https://cyberdev.space/en/blog/dipole-balun-nanovna/#what-can-no-longer-be-found-out" class="hash-link" aria-label="Direct link to What can no longer be found out" title="Direct link to What can no longer be found out" translate="no">​</a></h2>
<p>The right measurement — common-mode impedance between the shorted pairs — was never made, and can no longer be made: the assembly is not available for it. The three or four kilohms in the table above remain a calculation from an equivalent material's data. A well-founded calculation, but not a measurement.</p>
<p>The box with its toroid did its job honestly: first quiet reception, later the first digital contacts. The one thing left undone was a single measurement — precisely the one the instrument had been taken out for.</p>
<p>And that is probably the thing worth taking from this note. The instrument was in hand, the assembly on the bench, time was unlimited. Only one thing was missing: the right question. Next time the list of what to measure gets written <strong>before</strong> the leads touch the terminals.</p>]]></content:encoded>
            <category>radio</category>
            <category>antennas</category>
            <category>measurement</category>
        </item>
        <item>
            <title><![CDATA[JUNIOR Kit Build: a First Receiver and a Twisted-Pair Dipole]]></title>
            <link>https://cyberdev.space/en/blog/first-receiver-junior/</link>
            <guid>https://cyberdev.space/en/blog/first-receiver-junior/</guid>
            <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Building the JUNIOR kit by US5MSQ: a superhet with a 5 MHz crystal filter, four alignment steps with a screwdriver, and a twisted-pair dipole that works on 80 m.]]></description>
            <content:encoded><![CDATA[<p>I wanted to hear the bands on a set I had first held in my hands in pieces. Not buy something finished and switch it on, but solder it, align it, get a wire six metres up and catch live voices. It happened on 80 metres, on a Sunday morning.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-exactly-i-was-building">What exactly I was building<a href="https://cyberdev.space/en/blog/first-receiver-junior/#what-exactly-i-was-building" class="hash-link" aria-label="Direct link to What exactly I was building" title="Direct link to What exactly I was building" translate="no">​</a></h2>
<p>“JUNIOR” is a kit by Serhii Belenetskyi, US5MSQ: a beginner's HF receiver for two bands, 80 and 20 metres. A receiver only: there is no transmit path in it at all — an antenna at the input, headphones at the output, and nothing going back on the air. I read <a href="https://us5msq.com.ua/radiokonstruktor-priemnik-nachinayushhego-korotkovolnovika-junior/" target="_blank" rel="noopener noreferrer" class="">his article about building it</a> and bought the kit directly from him.</p>
<p>Choosing a kit rather than my own design from scratch was deliberate. A first receiver has one trap: it stays silent, and it is not clear why. The circuit? The assembly? The components? The antenna? Propagation? A ready kit crosses the circuit and the components off that list. What remains is my soldering and my antenna — exactly what I wanted to learn.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-circuit-in-one-paragraph">The circuit in one paragraph<a href="https://cyberdev.space/en/blog/first-receiver-junior/#the-circuit-in-one-paragraph" class="hash-link" aria-label="Direct link to The circuit in one paragraph" title="Direct link to The circuit in one paragraph" translate="no">​</a></h2>
<p>A single-conversion superheterodyne. The antenna signal passes through an adjustable attenuator and a two-pole bandpass filter into the first SA612 mixer. The local oscillator is a VFO at 8.5–8.8 MHz for 80 metres or 9–9.35 MHz for 20; a relay switches the bands. The 5 MHz intermediate frequency goes through a four-crystal filter 2.4 kHz wide, is amplified by a single transistor stage, and reaches a second SA612 working here as a product detector with a 4998 kHz carrier oscillator. Then an LM386 and the headphones. Tuning is by varicap from a potentiometer — the knob turns a voltage, not a capacitor.</p>
<table><thead><tr><th>Parameter</th><th>Value</th></tr></thead><tbody><tr><td>Bands</td><td>3.5–3.81 and 14–14.35 MHz</td></tr><tr><td>Intermediate frequency</td><td>5 MHz, crystal filter 2.4 kHz at −6 dB</td></tr><tr><td>Audio bandwidth</td><td>300–2700 Hz</td></tr><tr><td>Sensitivity</td><td>0.6 µV at 10 dB S/N</td></tr><tr><td>Image rejection</td><td>at least 40 dB</td></tr><tr><td>AGC range</td><td>at least 50 dB</td></tr><tr><td>Audio output</td><td>at least 300 mW into 8 Ω</td></tr><tr><td>Supply</td><td>9–12 V</td></tr><tr><td>Board</td><td>89×66 mm</td></tr></tbody></table>
<p>These are the author's figures from the description, not my measurements. I did not yet know how to make my own.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="three-evenings-with-a-soldering-iron">Three evenings with a soldering iron<a href="https://cyberdev.space/en/blog/first-receiver-junior/#three-evenings-with-a-soldering-iron" class="hash-link" aria-label="Direct link to Three evenings with a soldering iron" title="Direct link to Three evenings with a soldering iron" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="The bare JUNIOR ver. 2.5 board with solder mask and silkscreen, beside solder, cutters and tweezers" src="https://cyberdev.space/en/assets/images/board-bare-7233fc46a75c6041d22d0fadb5fcf336.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>12 November 2023, the bare version 2.5 board. Double-sided glass-epoxy with mask and full silkscreen: every position is labelled, nothing has to be hunted for. Both mixers, in SOIC packages, were already on the board — the author solders the SMD parts himself, and for a beginner's kit that is the right decision: the finest work is already done, and everything left can be soldered with an ordinary tip.</p>
<p>The author's order: resistors and capacitors first, then the chokes L1–L4 standing 1–1.5 mm above the board, L6 vertically, then connectors, the relay, the transistors, and the integrated circuits last.</p>
<p><img decoding="async" loading="lazy" alt="The board with resistors, the P-9 relay and the first capacitors fitted" src="https://cyberdev.space/en/assets/images/board-resistors-ef0b00e43153355b52e8627c8ddfbadf.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>The 1–1.5 mm requirement looks like pedantry one is tempted to ignore. Do not: L1–L4 are not “supply-rail chokes” but the inductors of the input bandpass filter. How high they stand above the solid ground plane goes into the tuned circuit along with them.</p>
<p><img decoding="async" loading="lazy" alt="The fully populated board: four filter crystals in a row, the carrier crystal beside L6, the LM386 in a socket" src="https://cyberdev.space/en/assets/images/board-populated-3cf2b2230b705aa58c1af9e74c7715b4.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>By 14 November the board was assembled. The four filter crystals ZQ1–ZQ4 lie flat in a row down the middle; the fifth, the carrier crystal, sits apart beside coil L6. The only chip in a socket is the LM386, and that too makes sense: if a beginner burns something out, it will be the audio amplifier.</p>
<p><img decoding="async" loading="lazy" alt="The board with screw terminals soldered on for the panel, the supply and the headphones" src="https://cyberdev.space/en/assets/images/board-connectors-8c902ad3ee025d968ada883278015eaf.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>17 November, the connectors. All external wiring goes to screw terminals, with no wire soldered straight into a hole: the board can be lifted out of the case without switching the iron on. At a stage when you do not yet know what will need checking, that saves you.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="alignment-four-steps-and-a-screwdriver">Alignment: four steps and a screwdriver<a href="https://cyberdev.space/en/blog/first-receiver-junior/#alignment-four-steps-and-a-screwdriver" class="hash-link" aria-label="Direct link to Alignment: four steps and a screwdriver" title="Direct link to Alignment: four steps and a screwdriver" translate="no">​</a></h2>
<p>Here is where a kit from its designer differs from “built from a magazine article”. The whole procedure is written as a sequence in which each step is verified before the next.</p>
<ol>
<li class=""><strong>Operating points.</strong> Voltages at the test points, tolerance ±10 %. If one is wrong, you cannot go on, because the remaining steps measure its consequences.</li>
<li class=""><strong>Carrier frequency.</strong> Set trimmer C37 to 4998.00 kHz. This is the adjustment that decides how people sound: the crystal filter stands still, and where the audio zero lands within its passband is set by the carrier oscillator. An error of a couple of hundred hertz does not break reception — it makes voices either nasal or thin.</li>
<li class=""><strong>Setting the band edges.</strong> On 20 metres the top edge with the core of L5 and the bottom with resistor R9; on 80, the bottom edge with trimmer C15.</li>
<li class=""><strong>Input circuits.</strong> On 80 metres, trimmers C6 and C14 for maximum signal around 3650 kHz; on 20, C4 and C13 at 14150 kHz.</li>
</ol>
<p>No instruments beyond the digital display were needed: it is also the frequency counter.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-case">The case<a href="https://cyberdev.space/en/blog/first-receiver-junior/#the-case" class="hash-link" aria-label="Direct link to The case" title="Direct link to The case" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="The receiver in its case with the lid off: the board in the far corner, the A16-PLL display on the front panel, looms running to the controls" src="https://cyberdev.space/en/assets/images/case-inside-8d936e7e3090e987a71cb8172de26d73.webp" width="1200" height="900" class="img_ev3q"></p>
<p>28 November, into the case. The board stands on pillars in the far corner, with the A16-PLL digital display in front of it. The panel holes are marked out from a template supplied with the kit, and a self-adhesive fascia goes over the top. It looks incomparably better than my metalwork deserves — which is exactly why the template is in the kit.</p>
<p><img decoding="async" loading="lazy" alt="The finished receiver: a panel reading “US5MSQ HF RECEIVER JUNIOR”, the display showing 3.605.78 MHz, a BAND 20/80 m switch, RF and AF controls" src="https://cyberdev.space/en/assets/images/front-panel-bb9480ebc7cb99b03e9eb13514d013f9.webp" width="1200" height="900" class="img_ev3q"></p>
<p>The green PLL TUNING lamp is the display's automatic frequency control. The VFO here runs on a coil and a varicap, and it drifts: for the first few minutes after switch-on the frequency moves noticeably. The display not only shows the frequency but also pulls the oscillator back, and with it the set stays on a station for as long as the station is talking.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-draws">What it draws<a href="https://cyberdev.space/en/blog/first-receiver-junior/#what-it-draws" class="hash-link" aria-label="Direct link to What it draws" title="Direct link to What it draws" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="The receiver on 3.605.04 MHz, a bench power supply beside it reading 12.8 V and 0.06 A" src="https://cyberdev.space/en/assets/images/current-draw-bc963210f6fcdc21f0f664ec4f2ac872.webp" width="1200" height="900" class="img_ev3q"></p>
<p>12.8 V, 0.06 A. Sixty milliamps including the display — which fits the specification: the author quotes 30 mA on 80 metres without the display, plus up to 40 mA for the display itself.</p>
<p>The figure matters not in itself. A receiver with that appetite runs a day from a power bank and does not care whether the mains is on.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-antenna-forty-metres-of-twisted-pair">The antenna: forty metres of twisted pair<a href="https://cyberdev.space/en/blog/first-receiver-junior/#the-antenna-forty-metres-of-twisted-pair" class="hash-link" aria-label="Direct link to The antenna: forty metres of twisted pair" title="Direct link to The antenna: forty metres of twisted pair" translate="no">​</a></h2>
<p>The most interesting thing in this story cost less than the connectors on the back panel.</p>
<p>Two legs of twenty metres each, ordinary twisted pair, six metres up. Forty metres of wire in all.</p>
<p>Now let us work out what came of it. At 3.605 MHz a wavelength is 83.2 m and a half wave 41.6 m; with the shortening factor applied, a real resonant dipole comes out at about 39–40 m. So “just the wire that happened to be there” turned out to be almost exactly a half-wave dipole for 80 metres. The resonance happened by itself, with no intention on my part.</p>
<p>Six metres of height is 0.07 of a wavelength. By any textbook that is “low”, and by any textbook that is bad. For what I wanted to hear it is exactly right. An antenna's pattern does not care which way the signal is travelling: a dipole that at this height would radiate almost straight up equally <strong>hears</strong> mostly from above. And what comes from above on 80 metres is whatever bounced off the ionosphere close to vertically — stations thirty to a hundred kilometres away. That is precisely the distance at which the regional roundtable's members sit.</p>
<p>The angle is easy to work out. In the morning on 3.6 MHz the signal is turned back by a layer two to three hundred kilometres up; for a correspondent a hundred kilometres away that is an arrival angle of about eighty degrees above the horizon, and for one thirty kilometres away, practically vertical. The closest are also audible by ground wave, which on 80 metres reaches a few tens of kilometres, but the rest arrives from exactly there — from above.</p>
<p>And here is where the advice “hang it higher” hides its catch. That advice is about DX, that is, about low angles, and to get them on 80 metres a dipole has to go up half a wavelength — forty metres. At exactly that height a null appears at the zenith, and such an antenna hears a neighbour thirty kilometres away worse than mine at six. All I lost by hanging it low is not direction but efficiency. In English this mode is called NVIS, and my antenna is a textbook case of it, arrived at with no intention whatever.</p>
<p>Ground losses under a wire that low are appreciable. On receive that barely matters: on 80 metres the floor is set not by the receiver but by atmospheric noise, and that arrives through the same antenna. The losses attenuate signal and noise alike — the ratio between them does not change.</p>
<p><img decoding="async" loading="lazy" alt="The same receiver on 20 metres: the display reads 14.127.7 MHz" src="https://cyberdev.space/en/assets/images/band-20m-1427d815d33e7393081d58e97bc15c09.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>On 20 metres the same wire is 1.9 wavelengths: a multi-lobed antenna, sensitive to low angles. So 14 MHz comes in as well, except that the antenna chooses the directions for itself rather than for me.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-roundtable">The roundtable<a href="https://cyberdev.space/en/blog/first-receiver-junior/#the-roundtable" class="hash-link" aria-label="Direct link to The roundtable" title="Direct link to The roundtable" translate="no">​</a></h2>
<p>The <a href="https://lrv.net.ua/" target="_blank" rel="noopener noreferrer" class="">Volyn Radio Amateurs League</a> meets every Sunday at eight in the morning on 3.605 MHz.</p>
<p><img decoding="async" loading="lazy" alt="The receiver on 3.605.00 MHz and an open notebook with callsigns written down" src="https://cyberdev.space/en/assets/images/roundtable-log-e6ac5a7444d72a19ef3341dc298a1cb3.webp" width="1200" height="1600" class="img_ev3q"></p>
<p>24 December 2023, 8:43, a Sunday. The display reads 3.605.00, and beside it an open notebook in which I wrote down the callsigns as they were spoken: UR3PD, UR4PWL, UT1PA, UR3PF, UT1PQ, UR3PBW. Lower on the same page, a line reading “750th anniversary”: the roundtable does not talk only about equipment.</p>
<p>That was the moment the whole thing was for. Not “the receiver works” — it worked on empty hiss too. But when voices came out of the headphones calling each other by name and arranging the next Sunday, it became clear that the wire outside and the box on the table were connected to something alive.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-i-took-from-it">What I took from it<a href="https://cyberdev.space/en/blog/first-receiver-junior/#what-i-took-from-it" class="hash-link" aria-label="Direct link to What I took from it" title="Direct link to What I took from it" translate="no">​</a></h2>
<p><strong>Selectivity is made of hardware.</strong> The 2.4 kHz bandwidth is set by the crystal filter, and it cannot be “adjusted”. Narrow or wide was decided when I laid four crystals in a row.</p>
<p><strong>The carrier frequency decides how people sound.</strong> One trimmer, two hundred hertz, and the timbre of the whole band is different. Before JUNIOR I thought sidebands were a matter of theory.</p>
<p><strong>The attenuator is not decoration.</strong> In the evening on 80 metres a strong neighbour overloads the front end, and the RF knob is needed not “just in case” but every evening.</p>
<p><strong>Stability is an engineering problem of its own.</strong> A VFO on a coil and a varicap drifts, and no quality of soldering fixes it. What fixes it is automatic frequency control — digital laid over analogue.</p>
<p><strong>The antenna is half the receiver.</strong> Forty metres of twisted pair six metres up gave more than any amount of trimmer-turning inside the box. That is the cheapest lesson of the lot, and the most important.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-does-not-do">What it does not do<a href="https://cyberdev.space/en/blog/first-receiver-junior/#what-it-does-not-do" class="hash-link" aria-label="Direct link to What it does not do" title="Direct link to What it does not do" translate="no">​</a></h2>
<p>To be honest, so that nobody buys the kit with the wrong expectations:</p>
<ul>
<li class="">it does not transmit — it is a receiver, full stop;</li>
<li class="">one bandwidth for every occasion: no narrower filter for Morse, and no wider one;</li>
<li class="">no S-meter, so a correspondent's strength is judged by ear;</li>
<li class="">two bands, 80 and 20, and nothing else.</li>
</ul>
<p>These are not complaints. They are the boundaries at which the next set begins — and that is exactly why the next one on my bench is a direct-conversion receiver, built from scratch, with no kit and no one else's board.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sources">Sources<a href="https://cyberdev.space/en/blog/first-receiver-junior/#sources" class="hash-link" aria-label="Direct link to Sources" title="Direct link to Sources" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://us5msq.com.ua/radiokonstruktor-priemnik-nachinayushhego-korotkovolnovika-junior/" target="_blank" rel="noopener noreferrer" class="">Radio kit: the JUNIOR receiver for the beginning short-wave listener</a> — description, circuit design, assembly order and alignment by the author, US5MSQ.</li>
<li class=""><a href="https://lrv.net.ua/" target="_blank" rel="noopener noreferrer" class="">Volyn Radio Amateurs League</a> — the frequency, day and time of the regional roundtable.</li>
</ul>]]></content:encoded>
            <category>radio</category>
            <category>receiver</category>
            <category>kit building</category>
            <category>antennas</category>
        </item>
        <item>
            <title><![CDATA[SFI, SSN, K and A Indices: How to Read Propagation]]></title>
            <link>https://cyberdev.space/en/blog/propagation-indices/</link>
            <guid>https://cyberdev.space/en/blog/propagation-indices/</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What the solar and geomagnetic indices SFI, SSN, K and A mean, how to read them, which bands they affect and when to get on the air. With live gauges and zone diagrams.]]></description>
            <content:encoded><![CDATA[<p>Every conversation about HF conditions comes down to four numbers: <strong>SFI</strong>, <strong>SSN</strong>, the <strong>K index</strong> and the <strong>A index</strong>. They get passed on the air, printed in forecasts and written in logs — but not everyone can read them.</p>
<p>In short: the first two say <strong>how much the Sun is giving out</strong> (and therefore how dense the ionosphere is), and the last two say <strong>how quiet the Earth's magnetic field is</strong> (and therefore whether a storm is choking that ionosphere).</p>
<p>Below is a full account of each index: what it means physically, how to read it, what it affects and when it is worth getting on the air. Beside each section there is a <strong>live gauge</strong> that pulls the current value from NOAA and shows where we stand.</p>
<!-- -->
<p>Note that the colours run in opposite directions: <strong>SFI and SSN</strong> turn green upwards (more light, better conditions), while <strong>K and A</strong> turn green downwards (quiet is better for the low bands). That is not a whim but physics, and it is explained below.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="two-pairs-of-indices">Two pairs of indices<a href="https://cyberdev.space/en/blog/propagation-indices/#two-pairs-of-indices" class="hash-link" aria-label="Direct link to Two pairs of indices" title="Direct link to Two pairs of indices" translate="no">​</a></h2>
<p>It helps to hold all four in your head as two pairs, because they answer two different questions.</p>
<p><strong>Solar (what the Sun is giving):</strong></p>
<ul>
<li class=""><strong>SFI</strong> — the Sun's radio flux at a wavelength of 10.7 cm;</li>
<li class=""><strong>SSN</strong> — the number of spots on the solar disc.</li>
</ul>
<p>These decide <strong>how dense the F layer of the ionosphere is</strong>, and therefore whether the high bands (10–20 m) will open.</p>
<p><strong>Geomagnetic (what is happening at the Earth):</strong></p>
<ul>
<li class=""><strong>K index</strong> — the highest geomagnetic activity over 3 hours;</li>
<li class=""><strong>A index</strong> — the average geomagnetic activity over a day.</li>
</ul>
<p>These decide <strong>whether a magnetic storm will blow that ionosphere away</strong>, and therefore whether the low bands (40–160 m) hold up.</p>
<p>The ideal condition for HF is <strong>a high SFI and a low K</strong>. Now each index in turn.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sfi--the-solar-flux-index">SFI — the solar flux index<a href="https://cyberdev.space/en/blog/propagation-indices/#sfi--the-solar-flux-index" class="hash-link" aria-label="Direct link to SFI — the solar flux index" title="Direct link to SFI — the solar flux index" translate="no">​</a></h2>
<p><strong>What it is.</strong> The solar flux index is the power of the Sun's radio emission at 2800 MHz (a wavelength of 10.7 cm), measured by the observatory at Penticton, Canada, and published by NOAA. The unit is the sfu (10⁻²² W·m⁻²·Hz⁻¹). It is a convenient <strong>proxy for ionising ultraviolet</strong>: the brighter the Sun shines at 10.7 cm, the more it ionises the F layer.</p>
<p>Hence the main rule: <strong>the higher the SFI, the denser the ionosphere and the higher the ceiling</strong> (the MUF — the highest frequency the ionosphere will still reflect).</p>
<div style="width:100%;max-width:700px;margin:0 auto 2rem"><svg viewBox="0 0 700 110" role="img" aria-label="Colour bands of the SFI" style="width:100%;height:auto;display:block"><g><rect x="50" y="20" width="63.15789473684211" height="24" rx="4" fill="#f44336" opacity="0.85"></rect><text x="50" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">60</text><text x="81.57894736842105" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Low</text><text x="81.57894736842105" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Poor HF propagation</text></g><g><rect x="113.15789473684211" y="20" width="63.15789473684211" height="24" rx="4" fill="#fdd835" opacity="0.85"></rect><text x="113.15789473684211" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">80</text><text x="144.73684210526318" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Middling</text><text x="144.73684210526318" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Moderate propagation</text></g><g><rect x="176.31578947368422" y="20" width="473.6842105263158" height="24" rx="4" fill="#66bb6a" opacity="0.85"></rect><text x="176.31578947368422" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">100</text><text x="413.1578947368421" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">High</text><text x="413.1578947368421" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Good HF propagation</text></g><text x="650" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">250</text></svg></div>
<p>The current SFI, right now:</p>
<div class="liveGauge_adla"><div class="gauge_cqL4 gaugeInline_JFJH"><svg viewBox="0 0 100 100" class="gaugeSvg_tnAT" role="img" aria-label="SFI: —"><path d="M19.6,77.4A43,43,0,1,1,80.4,77.4" fill="none" stroke="var(--ifm-color-emphasis-200)" stroke-width="8" stroke-linecap="round"></path><path d="M19.6,77.4A43,43,0,0,1,8.8,59.3" fill="none" stroke="#f44336" stroke-width="8"></path><path d="M8.8,59.3A43,43,0,0,1,7.9,38.2" fill="none" stroke="#fdd835" stroke-width="8"></path><path d="M7.9,38.2A43,43,0,1,1,80.4,77.4" fill="none" stroke="#66bb6a" stroke-width="8"></path><line x1="15.862739538880597" y1="69.70787194366072" x2="12.532275103649432" y2="71.92327408450566" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="12.056405536785014" y1="62.53330741378285" x2="8.354591442812819" y2="64.04875203951775" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="9.738980771090773" y1="54.74921484083396" x2="5.8110764560752415" y2="55.50523580091532" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="9.001401147768846" y1="46.6610425486439" x2="5.001537845112146" y2="46.627973528999405" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="13.165969742428864" y1="28.992939857257824" x2="9.572405814860943" y2="27.23615350186834" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="18.713553203807912" y1="20.50173124770145" x2="15.661216931008681" y2="17.91653429625769" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="26.17585056852051" y1="13.632202591922024" x2="23.851543306912756" y2="10.376807722841242" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="35.096173206882945" y1="8.804765389897575" x2="33.64214132462763" y2="5.078401037692458" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="55.07139788204324" y1="6.314856230781153" x2="55.56616840712063" y2="2.3455739118329717" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="64.903826793117" y1="8.804765389897554" x2="66.35785867537233" y2="5.078401037692437" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="73.82414943147944" y1="13.632202591921988" x2="76.1484566930872" y2="10.376807722841207" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="81.28644679619204" y1="20.501731247701397" x2="84.33878306899126" y2="17.91653429625763" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="90.12739065842152" y1="38.586170969978944" x2="94.04225803973094" y2="37.7653096011964" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="90.96497609387934" y1="48.69432394420128" x2="94.96155912742856" y2="48.85962384119653" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="89.29552678078838" y1="58.698785194213286" x2="93.12923671062138" y2="59.8401300912097" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="85.22121212916531" y1="67.9872870126736" x2="88.65742794664484" y2="70.03482720903202" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><g><line x1="24.54415587728429" y1="72.45584412271572" x2="14.64466094067263" y2="82.35533905932738" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="25.958369439657385" y="71.04163056034261" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">60</text></g><g><line x1="14.766193568215236" y1="39.61224768095717" x2="1.0641577336322783" y2="36.73923289021828" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="16.723627258869946" y="40.02267836534843" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">100</text></g><g><line x1="45.547065274303485" y1="11.276459129466382" x2="43.815368436532616" y2="-2.6160289868522497" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="45.79445053684218" y="13.261100288940469" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">150</text></g><g><line x1="82.34207534811122" y1="31.188922801494634" x2="94.91954909459892" y2="25.040170557631434" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="80.54529338432727" y="32.067315979189374" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">200</text></g><g><line x1="75.45584412271575" y1="72.45584412271569" x2="85.35533905932742" y2="82.35533905932733" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="74.04163056034264" y="71.04163056034258" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">250</text></g><text x="50" y="84" text-anchor="middle" class="gaugeValue_D9n7">—</text><text x="50" y="93" text-anchor="middle" class="gaugeLabel_fYTo">SFI</text></svg></div></div>
<p><strong>How to read it:</strong></p>
<ul>
<li class=""><strong>60–80 (red, “poor”)</strong> — solar minimum. The high bands (10–15 m) are dead; 20–40 m work, and even then unreliably.</li>
<li class=""><strong>80–100 (yellow, “middling”)</strong> — moderate activity. 20 m works decently, 15 m opens from time to time.</li>
<li class=""><strong>100–250 (green, “good”)</strong> — a high SFI. 10, 12 and 15 m open, and long DX paths on HF come alive.</li>
</ul>
<p><strong>What it affects.</strong> Chiefly the <strong>high bands (10–20 m)</strong>. There the SFI decides whether there will be a contact at all. On the low bands (40–160 m) the SFI matters little — there it is geomagnetic quiet that rules.</p>
<p>In practice: once the SFI reaches about 100 it is worth trying 10 and 15 m; at 150–200 you can count on transcontinental paths on the high HF bands all day long.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ssn--the-sunspot-number">SSN — the sunspot number<a href="https://cyberdev.space/en/blog/propagation-indices/#ssn--the-sunspot-number" class="hash-link" aria-label="Direct link to SSN — the sunspot number" title="Direct link to SSN — the sunspot number" translate="no">​</a></h2>
<p><strong>What it is.</strong> The sunspot number (the Wolf number) counts the groups and the individual spots on the solar disc, weighted by size. Spots are regions of heightened magnetic activity, and they radiate more ionising energy.</p>
<p><strong>Why it tracks the SFI.</strong> Spots and the 10.7 cm emission are both products of solar activity, and they are related almost linearly (a correlation above 90 %). So reading the SSN largely repeats the SFI, but it states the number of spots on the Sun directly, which many people find more vivid.</p>
<div style="width:100%;max-width:700px;margin:0 auto 2rem"><svg viewBox="0 0 700 110" role="img" aria-label="Colour bands of the SSN" style="width:100%;height:auto;display:block"><g><rect x="50" y="20" width="72" height="24" rx="4" fill="#f44336" opacity="0.85"></rect><text x="50" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">0</text><text x="86" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Low</text><text x="86" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Solar minimum</text></g><g><rect x="122" y="20" width="72" height="24" rx="4" fill="#fdd835" opacity="0.85"></rect><text x="122" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">30</text><text x="158" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Middling</text><text x="158" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Moderate activity</text></g><g><rect x="194" y="20" width="456" height="24" rx="4" fill="#66bb6a" opacity="0.85"></rect><text x="194" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">60</text><text x="422" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">High</text><text x="422" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">High activity</text></g><text x="650" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">250</text></svg></div>
<p>The current SSN, right now:</p>
<div class="liveGauge_adla"><div class="gauge_cqL4 gaugeInline_JFJH"><svg viewBox="0 0 100 100" class="gaugeSvg_tnAT" role="img" aria-label="SSN: —"><path d="M19.6,77.4A43,43,0,1,1,80.4,77.4" fill="none" stroke="var(--ifm-color-emphasis-200)" stroke-width="8" stroke-linecap="round"></path><path d="M19.6,77.4A43,43,0,0,1,8.0,56.4" fill="none" stroke="#f44336" stroke-width="8"></path><path d="M8.0,56.4A43,43,0,0,1,9.5,32.4" fill="none" stroke="#fdd835" stroke-width="8"></path><path d="M9.5,32.4A43,43,0,1,1,80.4,77.4" fill="none" stroke="#66bb6a" stroke-width="8"></path><line x1="16.089696454742963" y1="70.04541849193735" x2="12.781374157644713" y2="72.29375200334587" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="12.37206034695678" y1="63.28306351602602" x2="8.70104184422086" y2="64.87165507856514" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="9.987412760511361" y1="55.94387289725825" x2="6.083745712756368" y2="56.816445862844425" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="9.020231025005003" y1="48.28784112220326" x2="5.0222047835420796" y2="48.41348415851577" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="11.423888472876754" y1="33.11174526994305" x2="7.660365397059856" y2="31.756793588961884" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="14.70957689283832" y1="26.129301954234762" x2="11.266608784822544" y2="24.093136291233275" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="19.245446145151153" y1="19.88621352173028" x2="16.245001866629316" y2="17.240966060435674" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="24.870810800227964" y1="14.603644492596693" x2="22.41918258561606" y2="11.443024443093933" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="38.56136465239159" y1="7.627958887245342" x2="37.44540022823467" y2="3.7867841445375703" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="46.141559153940925" y1="6.18195945127372" x2="45.765125900666874" y2="2.199711592861398" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="53.85844084605906" y1="6.181959451273713" x2="54.23487409933311" y2="2.199711592861398" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="61.4386353476084" y1="7.6279588872453346" x2="62.55459977176531" y2="3.786784144537563" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="75.12918919977201" y1="14.603644492596686" x2="77.58081741438393" y2="11.443024443093918" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="80.75455385484885" y1="19.886213521730284" x2="83.75499813337069" y2="17.240966060435678" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="85.29042310716167" y1="26.129301954234748" x2="88.73339121517745" y2="24.09313629123326" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="88.57611152712325" y1="33.11174526994305" x2="92.33963460294015" y2="31.756793588961884" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="90.979768974995" y1="48.28784112220324" x2="94.97779521645792" y2="48.41348415851576" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="90.01258723948864" y1="55.94387289725826" x2="93.91625428724363" y2="56.816445862844425" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="87.62793965304324" y1="63.283063516025976" x2="91.29895815577916" y2="64.8716550785651" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="83.91030354525705" y1="70.04541849193733" x2="87.21862584235531" y2="72.29375200334584" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><g><line x1="24.54415587728429" y1="72.45584412271572" x2="14.64466094067263" y2="82.35533905932738" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="25.958369439657385" y="71.04163056034261" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">0</text></g><g><line x1="14.443219738575038" y1="41.36835925855169" x2="0.6155829702431106" y2="39.17827674798846" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="16.418596419765315" y="41.681228188632154" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">50</text></g><g><line x1="33.65634200937631" y1="14.923765129218758" x2="27.300475013022655" y2="2.4496737905816133" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="34.5643230088554" y="16.705778177595494" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">100</text></g><g><line x1="66.34365799062368" y1="14.92376512921875" x2="72.69952498697734" y2="2.449673790581599" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="65.43567699114459" y="16.705778177595487" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">150</text></g><g><line x1="85.55678026142496" y1="41.36835925855168" x2="99.38441702975689" y2="39.17827674798844" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="83.58140358023468" y="41.68122818863214" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">200</text></g><g><line x1="75.45584412271575" y1="72.45584412271569" x2="85.35533905932742" y2="82.35533905932733" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="74.04163056034264" y="71.04163056034258" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">250</text></g><text x="50" y="84" text-anchor="middle" class="gaugeValue_D9n7">—</text><text x="50" y="93" text-anchor="middle" class="gaugeLabel_fYTo">SSN</text></svg></div></div>
<p><strong>How to read it:</strong></p>
<ul>
<li class=""><strong>0–30 (red, “minimum”)</strong> — solar minimum. The high bands barely work.</li>
<li class=""><strong>30–60 (yellow, “moderate”)</strong> — activity rising; 15–20 m are steady.</li>
<li class=""><strong>60–250 (green, “high”)</strong> — an active Sun, good HF conditions, frequent flares and storms.</li>
</ul>
<p><strong>What it affects.</strong> The same as the SFI: the density of the F layer and the high bands. The SSN swings through the eleven-year solar cycle: at the peak it can run into the hundreds, at the minimum it falls almost to zero.</p>
<p>In practice: watching the SSN tells you where in the eleven-year cycle we are — whether activity is rising or falling.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-k-index--geomagnetic-activity-over-3-hours">The K index — geomagnetic activity over 3 hours<a href="https://cyberdev.space/en/blog/propagation-indices/#the-k-index--geomagnetic-activity-over-3-hours" class="hash-link" aria-label="Direct link to The K index — geomagnetic activity over 3 hours" title="Direct link to The K index — geomagnetic activity over 3 hours" translate="no">​</a></h2>
<p><strong>What it is.</strong> The K index measures the disturbance of the Earth's magnetic field as seen by individual observatories. The planetary <strong>Kp</strong> averages them worldwide. The scale is logarithmic, from <strong>0 (completely quiet) to 9 (an extreme storm)</strong>, in thirds of a point.</p>
<p>Every <strong>3 hours</strong> NOAA issues a new Kp — the fastest pulse of the geomagnetic state you get.</p>
<p><strong>Why it matters on HF.</strong> A magnetic storm disturbs the lower ionosphere (the D layer) and chokes propagation on the <strong>low bands</strong>. The higher the K, the worse conditions get, especially on 40–160 m and on polar paths.</p>
<div style="width:100%;max-width:700px;margin:0 auto 2rem"><svg viewBox="0 0 700 110" role="img" aria-label="Colour bands of the Kp index" style="width:100%;height:auto;display:block"><g><rect x="50" y="20" width="150" height="24" rx="4" fill="#66bb6a" opacity="0.85"></rect><text x="50" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">1</text><text x="125" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Quiet</text><text x="125" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">A stable ionosphere, good propagation</text></g><g><rect x="200" y="20" width="225" height="24" rx="4" fill="#fdd835" opacity="0.85"></rect><text x="200" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">3</text><text x="312.5" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Instability</text><text x="312.5" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Interference and QSB possible</text></g><g><rect x="425" y="20" width="225" height="24" rx="4" fill="#f44336" opacity="0.85"></rect><text x="425" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">6</text><text x="537.5" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Storm</text><text x="537.5" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Serious disturbance, poor propagation</text></g><text x="650" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">9</text></svg></div>
<p>The current K index, right now:</p>
<div class="liveGauge_adla"><div class="gauge_cqL4 gaugeInline_JFJH"><svg viewBox="0 0 100 100" class="gaugeSvg_tnAT" role="img" aria-label="K index: —"><path d="M19.6,77.4A43,43,0,1,1,80.4,77.4" fill="none" stroke="var(--ifm-color-emphasis-200)" stroke-width="8" stroke-linecap="round"></path><path d="M19.6,77.4A43,43,0,0,1,10.3,30.5" fill="none" stroke="#66bb6a" stroke-width="8"></path><path d="M10.3,30.5A43,43,0,0,1,73.9,11.2" fill="none" stroke="#fdd835" stroke-width="8"></path><path d="M73.9,11.2A43,43,0,0,1,80.4,77.4" fill="none" stroke="#f44336" stroke-width="8"></path><line x1="15.04175326148222" y1="68.4224411533539" x2="11.631192604065852" y2="70.5124354122177" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="11.006682831898708" y1="59.66969676937285" x2="7.202456766718093" y2="60.905764746872634" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="9.126389316941754" y1="50.21682292484165" x2="5.138719982009242" y2="50.53065930775303" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="9.504778035599351" y1="40.58618693335054" x2="5.554024673218798" y2="39.960449073189615" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="16.830303230627152" y1="22.900804656008606" x2="13.594235253127366" y2="20.549663646838713" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="23.372630018462452" y1="15.823355410398747" x2="20.774837825141717" y2="12.781731547998625" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="31.386389510678576" y1="10.468732508276922" x2="29.57042751172039" y2="6.904706411523449" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="40.42874008190789" y1="7.132833263695254" x2="39.49495862648427" y2="3.2433535821045467" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="59.571259918092096" y1="7.132833263695254" x2="60.505041373515716" y2="3.2433535821045467" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="68.61361048932142" y1="10.468732508276915" x2="70.4295724882796" y2="6.904706411523442" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="76.62736998153754" y1="15.823355410398737" x2="79.22516217485827" y2="12.78173154799861" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="83.16969676937285" y1="22.900804656008592" x2="86.40576474687262" y2="20.5496636468387" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="90.49522196440064" y1="40.586186933350525" x2="94.4459753267812" y2="39.9604490731896" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="90.87361068305825" y1="50.216822924841615" x2="94.86128001799077" y2="50.53065930775299" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="88.9933171681013" y1="59.669696769372834" x2="92.79754323328191" y2="60.90576474687262" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="84.9582467385178" y1="68.42244115335387" x2="88.36880739593417" y2="70.51243541221767" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><g><line x1="24.54415587728429" y1="72.45584412271572" x2="14.64466094067263" y2="82.35533905932738" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="25.958369439657385" y="71.04163056034261" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">1</text></g><g><line x1="16.740336829593673" y1="33.22339643485679" x2="3.8060233744356537" y2="27.865828381745537" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="18.588095894616245" y="33.988763299586964" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">3</text></g><g><line x1="49.99999999999999" y1="11" x2="49.99999999999999" y2="-3" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="49.99999999999999" y="13" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">5</text></g><g><line x1="83.25966317040633" y1="33.223396434856774" x2="96.19397662556435" y2="27.865828381745523" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="81.41190410538375" y="33.98876329958696" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">7</text></g><g><line x1="75.45584412271575" y1="72.45584412271569" x2="85.35533905932742" y2="82.35533905932733" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="74.04163056034264" y="71.04163056034258" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">9</text></g><text x="50" y="84" text-anchor="middle" class="gaugeValue_D9n7">—</text><text x="50" y="93" text-anchor="middle" class="gaugeLabel_fYTo">K index</text></svg></div></div>
<p><strong>How to read it:</strong></p>
<ul>
<li class=""><strong>1–3 (green, “quiet”)</strong> — ideal. The low bands are at their best.</li>
<li class=""><strong>3–6 (yellow, “unsettled”)</strong> — moderate disturbance. 40 and 80 m are somewhat worse; on the high HF bands it is barely noticeable.</li>
<li class=""><strong>6–9 (red, “storm”)</strong> — a magnetic storm. 40–160 m are heavily suppressed, aurora is possible, and polar paths collapse entirely.</li>
</ul>
<p>In practice: Kp ≥ 5 is a signal that the low bands will be poor; Kp ≤ 2 is the best time for 40, 80 and 160 m.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-a-index--geomagnetic-activity-over-a-day">The A index — geomagnetic activity over a day<a href="https://cyberdev.space/en/blog/propagation-indices/#the-a-index--geomagnetic-activity-over-a-day" class="hash-link" aria-label="Direct link to The A index — geomagnetic activity over a day" title="Direct link to The A index — geomagnetic activity over a day" translate="no">​</a></h2>
<p><strong>What it is.</strong> The A index is a daily roll-up of the K index. Each three-hourly K is converted into an “equivalent amplitude” (a), and the eight intervals of the day are then averaged. The result is a <strong>linear scale from 0 to a few hundred</strong>, which compares one day with another more conveniently than the logarithmic K.</p>
<p><strong>How to read it:</strong></p>
<ul>
<li class=""><strong>0–40 (green, “quiet”)</strong> — the magnetosphere is in good shape, HF is normal.</li>
<li class=""><strong>40–100 (yellow, “unsettled”)</strong> — disturbed; the low bands are noticeably worse.</li>
<li class=""><strong>100–400 (red, “storm”)</strong> — a strong storm; 40–160 m are effectively closed.</li>
</ul>
<div style="width:100%;max-width:700px;margin:0 auto 2rem"><svg viewBox="0 0 700 110" role="img" aria-label="Colour bands of the A index" style="width:100%;height:auto;display:block"><g><rect x="50" y="20" width="60" height="24" rx="4" fill="#66bb6a" opacity="0.85"></rect><text x="50" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">0</text><text x="80" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Quiet</text><text x="80" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">The geomagnetic field is stable</text></g><g><rect x="110" y="20" width="90" height="24" rx="4" fill="#fdd835" opacity="0.85"></rect><text x="110" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">40</text><text x="155" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Instability</text><text x="155" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Moderate disturbance of the ionosphere</text></g><g><rect x="200" y="20" width="450" height="24" rx="4" fill="#f44336" opacity="0.85"></rect><text x="200" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">100</text><text x="425" y="36" text-anchor="middle" style="font-size:11px;font-weight:700;fill:#fff">Storm</text><text x="425" y="65" text-anchor="middle" style="font-size:10.5px;fill:var(--ifm-color-emphasis-600)">Severe disturbance, paths may be closed</text></g><text x="650" y="14" text-anchor="middle" style="font-size:11px;font-family:var(--ifm-font-family-monospace);font-weight:600;fill:var(--ifm-color-emphasis-700)">400</text></svg></div>
<p>The current A index, right now:</p>
<div class="liveGauge_adla"><div class="gauge_cqL4 gaugeInline_JFJH"><svg viewBox="0 0 100 100" class="gaugeSvg_tnAT" role="img" aria-label="A index: —"><path d="M19.6,77.4A43,43,0,1,1,80.4,77.4" fill="none" stroke="var(--ifm-color-emphasis-200)" stroke-width="8" stroke-linecap="round"></path><path d="M19.6,77.4A43,43,0,0,1,9.1,60.3" fill="none" stroke="#66bb6a" stroke-width="8"></path><path d="M9.1,60.3A43,43,0,0,1,10.3,30.5" fill="none" stroke="#fdd835" stroke-width="8"></path><path d="M10.3,30.5A43,43,0,1,1,80.4,77.4" fill="none" stroke="#f44336" stroke-width="8"></path><line x1="15.04175326148222" y1="68.4224411533539" x2="11.631192604065852" y2="70.5124354122177" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="11.006682831898708" y1="59.66969676937285" x2="7.202456766718093" y2="60.905764746872634" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="9.126389316941754" y1="50.21682292484165" x2="5.138719982009242" y2="50.53065930775303" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="9.504778035599351" y1="40.58618693335054" x2="5.554024673218798" y2="39.960449073189615" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="16.830303230627152" y1="22.900804656008606" x2="13.594235253127366" y2="20.549663646838713" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="23.372630018462452" y1="15.823355410398747" x2="20.774837825141717" y2="12.781731547998625" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="31.386389510678576" y1="10.468732508276922" x2="29.57042751172039" y2="6.904706411523449" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="40.42874008190789" y1="7.132833263695254" x2="39.49495862648427" y2="3.2433535821045467" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="59.571259918092096" y1="7.132833263695254" x2="60.505041373515716" y2="3.2433535821045467" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="68.61361048932142" y1="10.468732508276915" x2="70.4295724882796" y2="6.904706411523442" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="76.62736998153754" y1="15.823355410398737" x2="79.22516217485827" y2="12.78173154799861" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="83.16969676937285" y1="22.900804656008592" x2="86.40576474687262" y2="20.5496636468387" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="90.49522196440064" y1="40.586186933350525" x2="94.4459753267812" y2="39.9604490731896" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="90.87361068305825" y1="50.216822924841615" x2="94.86128001799077" y2="50.53065930775299" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="88.9933171681013" y1="59.669696769372834" x2="92.79754323328191" y2="60.90576474687262" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><line x1="84.9582467385178" y1="68.42244115335387" x2="88.36880739593417" y2="70.51243541221767" stroke="var(--ifm-color-emphasis-400)" stroke-width="0.5"></line><g><line x1="24.54415587728429" y1="72.45584412271572" x2="14.64466094067263" y2="82.35533905932738" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="25.958369439657385" y="71.04163056034261" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">0</text></g><g><line x1="16.740336829593673" y1="33.22339643485679" x2="3.8060233744356537" y2="27.865828381745537" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="18.588095894616245" y="33.988763299586964" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">100</text></g><g><line x1="49.99999999999999" y1="11" x2="49.99999999999999" y2="-3" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="49.99999999999999" y="13" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">200</text></g><g><line x1="83.25966317040633" y1="33.223396434856774" x2="96.19397662556435" y2="27.865828381745523" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="81.41190410538375" y="33.98876329958696" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">300</text></g><g><line x1="75.45584412271575" y1="72.45584412271569" x2="85.35533905932742" y2="82.35533905932733" stroke="var(--ifm-color-emphasis-500)" stroke-width="0.7"></line><text x="74.04163056034264" y="71.04163056034258" text-anchor="middle" dominant-baseline="middle" class="tickLabel_BM72">400</text></g><text x="50" y="84" text-anchor="middle" class="gaugeValue_D9n7">—</text><text x="50" y="93" text-anchor="middle" class="gaugeLabel_fYTo">A index</text></svg></div></div>
<p><strong>What it affects.</strong> The same as the K index, but on a daily scale. The difference is speed: K catches the short shove of a storm, A shows what the day was like as a whole.</p>
<p>In practice: the A index is useful when going back over logs — it makes it easy to see which day was geomagnetically quiet.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="two-kinds-of-index-two-directions-of-colour">Two kinds of index, two directions of colour<a href="https://cyberdev.space/en/blog/propagation-indices/#two-kinds-of-index-two-directions-of-colour" class="hash-link" aria-label="Direct link to Two kinds of index, two directions of colour" title="Direct link to Two kinds of index, two directions of colour" translate="no">​</a></h2>
<p>Look at the zone scales once more and remember the central symmetry:</p>
<table><thead><tr><th>Index</th><th>A high value</th><th>Colour cue</th><th>What a high value means</th></tr></thead><tbody><tr><td><strong>SFI</strong></td><td>Good (more light)</td><td>green at the top</td><td>nothing — always a plus</td></tr><tr><td><strong>SSN</strong></td><td>Good (more spots)</td><td>green at the top</td><td>nothing — always a plus</td></tr><tr><td><strong>K index</strong></td><td>Bad (a storm)</td><td>red at the top</td><td>a magnetic storm</td></tr><tr><td><strong>A index</strong></td><td>Bad (a storm)</td><td>red at the top</td><td>a magnetic storm</td></tr></tbody></table>
<p>The practical conclusion: <strong>the best conditions come when the SFI is high and the K is low</strong>. That combination is what gives you open high bands and working low ones at the same time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-the-data-comes-from">Where the data comes from<a href="https://cyberdev.space/en/blog/propagation-indices/#where-the-data-comes-from" class="hash-link" aria-label="Direct link to Where the data comes from" title="Direct link to Where the data comes from" translate="no">​</a></h2>
<p>The live gauges and all the zone thresholds take their data from NOAA's open sources:</p>
<ul>
<li class=""><strong>SFI and SSN</strong> — the daily table <code>daily-solar-indices.txt</code>;</li>
<li class=""><strong>K index and A index</strong> — the series <code>noaa-planetary-k-index.json</code> (updated every 3 hours).</li>
</ul>
<p>The zone boundaries for the SFI (green begins at 100) and for the K index (quiet from 1 to 3) follow the way these indices are usually shown on DX clusters.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-to-watch-next">What to watch next<a href="https://cyberdev.space/en/blog/propagation-indices/#what-to-watch-next" class="hash-link" aria-label="Direct link to What to watch next" title="Direct link to What to watch next" translate="no">​</a></h2>
<p>Once these four numbers make sense, so does a propagation forecast:</p>
<ol>
<li class="">Look at the <strong>SFI</strong>: if it is 100 or more, try the high bands (10–20 m).</li>
<li class="">Look at <strong>Kp</strong>: if it is 2 or less, take on 40–160 m without hesitation.</li>
<li class="">Compare the <strong>A index</strong> with the day before: if it has doubled or tripled, the magnetic background is deteriorating — wait.</li>
<li class="">When going through a log, remember: the <strong>number of contacts</strong> depends more on the calendar (weekends) than on the Sun, whereas the <strong>high bands</strong> depend on the SFI exactly as described.</li>
</ol>]]></content:encoded>
            <category>radio</category>
            <category>propagation</category>
            <category>conditions</category>
            <category>ionosphere</category>
            <category>SFI</category>
            <category>K index</category>
        </item>
        <item>
            <title><![CDATA[A Morse Decoder in a Browser Tab: DeepCW on ONNX]]></title>
            <link>https://cyberdev.space/en/blog/cw-decoder-in-browser/</link>
            <guid>https://cyberdev.space/en/blog/cw-decoder-in-browser/</guid>
            <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A neural CW decoder on the DeepCW model entirely in the browser: why the browser spoils the audio, why preprocessing is not a choice, and how to stitch overlapping windows.]]></description>
            <content:encoded><![CDATA[<p>Audio from the sound card turns into text, and all of it happens in the tab: nothing is uploaded to a server, nothing calls out to somebody else's API. A 14 MB neural network sits next to the page, the ONNX runtime is built into the same bundle, and after the first load the page works with no network at all.</p>
<p>The interesting part is not that it works. The interesting part is <strong>how many ways there are to get it wrong, none of which announce themselves with an error.</strong></p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-signal-path">The signal path<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#the-signal-path" class="hash-link" aria-label="Direct link to The signal path" title="Direct link to The signal path" translate="no">​</a></h2>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">sound card (48 kHz)</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">   → AudioWorklet → ring buffer</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">   → resample to 3200 Hz with a filter</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">   → FFT 256, periodic Hann window, reflect padding</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">   → spectrogram, 65 bins over 400–1200 Hz, log1p</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">   → squelch: is there a tone or not</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">   → ONNX: 8 seconds of audio → per-frame distributions</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">   → greedy CTC decoding</span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">   → stitching onto the previous window</span><br></div></code></pre></div></div>
<p>An eight-second window is taken every two seconds, so neighbouring passes share six seconds of audio. That is the main difficulty, but more on it below.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-browser-spoils-the-audio-by-default">The browser spoils the audio by default<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#the-browser-spoils-the-audio-by-default" class="hash-link" aria-label="Direct link to The browser spoils the audio by default" title="Direct link to The browser spoils the audio by default" translate="no">​</a></h2>
<p>A microphone input arrives with three “improvements”: echo cancellation, noise suppression and automatic gain. For a weak Morse signal each of them is fatal, and the worst is <strong>noise suppression</strong>: a steady tone is literally the thing it knows how to remove.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);--prism-color:#f92aad"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="background-color:linear-gradient(to bottom, #2a2139 75%, #34294f);background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><code class="codeBlockLines_e6Vv"><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">audio</span><span class="token operator" style="color:ffffffee">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#ccc">{</span><span class="token plain"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">  echoCancellation</span><span class="token operator" style="color:ffffffee">:</span><span class="token plain"> </span><span class="token boolean" style="color:#fdfdfd;text-shadow:0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975">false</span><span class="token punctuation" style="color:#ccc">,</span><span class="token plain"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">  noiseSuppression</span><span class="token operator" style="color:ffffffee">:</span><span class="token plain"> </span><span class="token boolean" style="color:#fdfdfd;text-shadow:0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975">false</span><span class="token punctuation" style="color:#ccc">,</span><span class="token plain"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain">  autoGainControl</span><span class="token operator" style="color:ffffffee">:</span><span class="token plain"> </span><span class="token boolean" style="color:#fdfdfd;text-shadow:0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975">false</span><span class="token punctuation" style="color:#ccc">,</span><span class="token plain"></span><br></div><div class="token-line" style="background-image:#34294f;color:#f92aad;text-shadow:0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"><span class="token plain"></span><span class="token punctuation" style="color:#ccc">}</span><br></div></code></pre></div></div>
<p>The second problem from the same family: capture lives in an <code>AudioWorklet</code>, not on a timer. In a background tab timers are throttled to roughly one firing a minute, while a real-time audio stream is not throttled at all. On a timer, the decoder would work only while somebody was looking at it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-preprocessing-is-not-a-matter-of-choice">The preprocessing is not a matter of choice<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#the-preprocessing-is-not-a-matter-of-choice" class="hash-link" aria-label="Direct link to The preprocessing is not a matter of choice" title="Direct link to The preprocessing is not a matter of choice" translate="no">​</a></h2>
<p>The network learned one particular input, and every constant here is taken from its metadata rather than chosen: a periodic Hann window (<code>hanning(N+1)[:-1]</code>, not <code>hanning(N)</code>), <code>reflect</code> padding of 128 samples, bins 32…96 at 12.5 Hz per bin, <code>log1p</code>.</p>
<p>A spectrogram that differs from the trained one by a window or half a bin <strong>does not degrade gracefully</strong> — it produces confident nonsense. The most treacherous part is the padding: numpy's <code>reflect</code> does not repeat the edge sample, so <code>[1,2,3]</code> becomes <code>[3,2,1,2,3,2,1]</code>. Getting that wrong shifts every frame by half a window and costs you the first letter of every decode.</p>
<p>That is why the project has <code>scripts/check-dsp.ts</code>: it synthesises Morse with known text, runs it through the real sample rate, the real resampler and the real spectrogram, and then asks the model what it heard. Unit tests of the transform alone are not enough for this.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="resampling-that-must-not-be-done-naively">Resampling that must not be done naively<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#resampling-that-must-not-be-done-naively" class="hash-link" aria-label="Direct link to Resampling that must not be done naively" title="Direct link to Resampling that must not be done naively" translate="no">​</a></h2>
<p>The model author's example changes the rate by linear interpolation alone — and says so plainly: it is an example with minimal dependencies, and the documented way to prepare audio there is <code>ffmpeg</code>, which filters first.</p>
<p>Copying the interpolation alone would <strong>fold everything above 1600 Hz back into the band the model looks at</strong>, and a card delivering 48 kHz has plenty up there. So the filter <code>ffmpeg</code> would have applied is applied here: a 255-tap windowed sinc, Blackman window, cutoff 1400 Hz — below the Nyquist of the target rate and above the 1200 Hz the network reads.</p>
<p>The kernel is evaluated only at the positions actually needed, so the cost scales with the output rate rather than the input: about 1.6 million multiply-accumulates per second of audio.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-ctc-and-why-greedy-decoding">Why CTC, and why greedy decoding<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#why-ctc-and-why-greedy-decoding" class="hash-link" aria-label="Direct link to Why CTC, and why greedy decoding" title="Direct link to Why CTC, and why greedy decoding" translate="no">​</a></h2>
<p>The model is trained with CTC, so the output is one distribution per 15 ms frame over 41 symbols plus a blank. The best path is read greedily: take the most likely class in each frame, drop the blanks, collapse runs of identical symbols.</p>
<p>This is not the best decoder available — a beam search with a language model would read better. But <strong>a Morse decoder that quietly invents plausible words is worse than one that prints what it heard</strong>. Predictable behaviour is worth more here than a few percent of accuracy.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-most-expensive-mistake-stitching-the-windows">The most expensive mistake: stitching the windows<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#the-most-expensive-mistake-stitching-the-windows" class="hash-link" aria-label="Direct link to The most expensive mistake: stitching the windows" title="Direct link to The most expensive mistake: stitching the windows" translate="no">​</a></h2>
<p>Neighbouring windows share six seconds of audio, so they share text as well. But <strong>not the same text</strong>: the shared seconds get decoded afresh and come back a letter or two different. So comparing for equality does not work — one discrepancy inside the overlap and the whole window is appended a second time.</p>
<p>That is exactly what turned the first live decode into <code>EN35UKR PSE K</code>, repeated fifteen times over.</p>
<p>The working solution is to find the overlap by <strong>agreement rather than equality</strong>: the longest tail of what has already been printed that matches the head of the new window on at least 75 % of its characters.</p>
<p>And the other half of the same problem: the search width has to be bounded by <strong>time</strong>, not by a round number of characters. An operator calling CQ repeats the same text every fifteen seconds, and a search wide enough to span two calls will happily merge them into one and lose a transmission.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="silence-that-reads-as-text">Silence that reads as text<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#silence-that-reads-as-text" class="hash-link" aria-label="Direct link to Silence that reads as text" title="Direct link to Silence that reads as text" translate="no">​</a></h2>
<p>Left to itself, the model reads noise as a stream of <code>E</code>, <code>I</code>, <code>T</code> and <code>S</code> — the shortest patterns in the alphabet. Something has to be the most likely class in every frame, and noise looks more like a short element than a long one.</p>
<p>This decoder behaves that way, and so do the commercial phone apps. The only difference is whether the result is shown to the operator.</p>
<p>Telling one from the other takes a single number: <strong>how far the strongest spectral bin rises above the typical one</strong>, averaged over the window. A carrier is narrow and steady; noise is neither. There is no dependence on absolute level anywhere in this, which is why it works equally well from a cable off the rig and from a microphone held to a speaker.</p>
<p>The threshold was not chosen but measured: noise sits around 1.5, even a deeply buried signal does not drop below 3, so the line is drawn at 2.5 — deliberately low. Losing a real transmission is worse than printing a little rubbish.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="two-stations-at-once">Two stations at once<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#two-stations-at-once" class="hash-link" aria-label="Direct link to Two stations at once" title="Direct link to Two stations at once" translate="no">​</a></h2>
<p>The model has one output and cannot follow two senders: given both, it produces text belonging to neither.</p>
<p>But its entire view of the world is the spectrogram. So <strong>zeroing the bins away from the wanted tone is exactly the same as filtering the audio</strong>, and it costs one pass over an array.</p>
<p>With two synthesised stations 350 Hz apart, together they decoded as <code>C?Y06IXA3PKI K</code>; with everything outside ±100 Hz zeroed, as <code>CQ CQ DE UR3PKI K</code> and <code>TEST DE DL6LD K</code>, both word for word.</p>
<p>Shifting the analysis window instead <strong>does not work</strong>: it spans 812 Hz, and a neighbour a few hundred hertz away stays inside it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-line-not-to-cross">A line not to cross<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#a-line-not-to-cross" class="hash-link" aria-label="Direct link to A line not to cross" title="Direct link to A line not to cross" translate="no">​</a></h2>
<p><strong>The decoder never writes to the log by itself.</strong></p>
<p>In FT8 automatic logging is justified: there is a checksum, and a false decode is practically impossible. Morse has no checksum at all — the software cannot tell <code>UR3PKI</code> from <code>UR3PKJ</code> if the last dot drowned in a fade.</p>
<p>The most that is allowed is to drop a callsign into a field visibly marked as the decoder's guess. The reason is not technical but substantive: a log is a record of what happened on the air, and one invented callsign in it costs more than all the convenience of autofill.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-is-a-separate-project">Why this is a separate project<a href="https://cyberdev.space/en/blog/cw-decoder-in-browser/#why-this-is-a-separate-project" class="hash-link" aria-label="Direct link to Why this is a separate project" title="Direct link to Why this is a separate project" translate="no">​</a></h2>
<p>The model comes from <a href="https://github.com/e04/deepcw-engine" target="_blank" rel="noopener noreferrer" class="">e04/deepcw-engine</a> under AGPL-3.0. That licence extends to software provided over a network, so the source has to be available to everyone who opens the page.</p>
<p>That is why the decoder lives in its own repository, <a href="https://github.com/PetroOstapuk/cw-decoder" target="_blank" rel="noopener noreferrer" class="">PetroOstapuk/cw-decoder</a>, rather than as a page inside the platform: the licence condition is then met in full, and the platform's own code remains separate work.</p>
<hr>
<p><em>To see how the alphabet itself is built, look at the <a class="" href="https://cyberdev.space/en/radio/cw/morse-tree/">code tree</a>; to work out how long a dot lasts and how much bandwidth the signal takes, use the <a class="" href="https://cyberdev.space/en/radio/cw/timing/">timing calculator</a>.</em></p>]]></content:encoded>
            <category>radio</category>
            <category>morse</category>
            <category>DSP</category>
            <category>neural networks</category>
        </item>
        <item>
            <title><![CDATA[The Morse tree: a variable-length code a century before Huffman]]></title>
            <link>https://cyberdev.space/en/blog/morse-huffman/</link>
            <guid>https://cyberdev.space/en/blog/morse-huffman/</guid>
            <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Morse code as a binary tree: why frequent letters are short, why it is neither a prefix code nor Huffman, and how close the assignment comes to being optimal in time.]]></description>
            <content:encoded><![CDATA[<p>Morse code is usually presented as a table: a letter, and beside it the dots and dashes. In that form it looks like an arbitrary list, and all you can do with it is memorise it.</p>
<p>It is in fact a binary tree, and in that form you can see the engineering decision taken in the 1840s: <strong>the frequency of a letter sets its depth</strong>. <strong>E</strong> is one dot, <strong>T</strong> one dash, because those are the commonest letters in English. <strong>Q</strong>, <strong>J</strong> and <strong>Z</strong> sit all the way down on the fourth level. Alfred Vail arrived at this not by theory but by counting: he counted the letters in the type cases of a local newspaper.</p>
<p>A variable-length code, allocated by symbol frequency. A hundred-odd years before Shannon and Huffman explained why that works.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-tree">The tree<a href="https://cyberdev.space/en/blog/morse-huffman/#the-tree" class="hash-link" aria-label="Direct link to The tree" title="Direct link to The tree" translate="no">​</a></h2>
<p>Left is a dot, right is a dash. The four letter levels are completely filled — there are no free nodes. The digits are longer than any letter and sit a level below.</p>
<div class="rp morse"><div class="morse-controls"><label class="morse-field"><span>text</span><input maxlength="28" spellcheck="false" value="CQ DE UR3PKI"></label><label class="morse-field morse-field-range"><span>15 WPM · dot 80 ms</span><input type="range" min="8" max="30" value="15"></label><button type="button" class="rp-btn" aria-pressed="true">sound on</button><button type="button" class="rp-btn morse-play">play</button></div><figure class="rp-chart morse-chart"><h4>Morse tree</h4><p>The track to the left is a dot, the one to the right a dash; beside each is a silkscreen mark: <b>·</b> one time unit, <b>▬</b> three. The diameter of a pad is the frequency of that letter in English text. Press any letter to hear it on its own. Empty pads are nodes the English alphabet does not use. The bottom row is the digits: they are longer than any letter and so sit a level deeper.</p><svg class="morse-pcb" viewBox="0 0 720 416" role="img" aria-label="The Morse code tree drawn as a printed circuit board"><defs><linearGradient id="pcb-mask" x1="0" y1="0" x2="0.35" y2="1"><stop offset="0" style="stop-color:var(--pcb-mask-hi)"></stop><stop offset="1" style="stop-color:var(--pcb-mask)"></stop></linearGradient><linearGradient id="pcb-gold" x1="0" y1="0" x2="0.4" y2="1"><stop offset="0" style="stop-color:var(--pcb-gold-hi)"></stop><stop offset="1" style="stop-color:var(--pcb-gold)"></stop></linearGradient><pattern id="pcb-hatch" width="14" height="14" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><line x1="0" y1="0" x2="0" y2="14" style="stroke:var(--pcb-copper);stroke-width:5"></line></pattern></defs><g><rect x="4" y="4" width="712" height="408" rx="12" style="fill:url(#pcb-mask)"></rect><rect x="4" y="4" width="712" height="408" rx="12" style="fill:url(#pcb-hatch)"></rect><rect x="9" y="9" width="702" height="398" rx="8" fill="none" style="stroke:var(--pcb-silk-dim);stroke-width:1"></rect><g><circle cx="20" cy="20" r="7" style="fill:url(#pcb-gold)"></circle><circle cx="20" cy="20" r="3.6" style="fill:var(--pcb-drill)"></circle></g><g><circle cx="700" cy="20" r="7" style="fill:url(#pcb-gold)"></circle><circle cx="700" cy="20" r="3.6" style="fill:var(--pcb-drill)"></circle></g><g><circle cx="20" cy="396" r="7" style="fill:url(#pcb-gold)"></circle><circle cx="20" cy="396" r="3.6" style="fill:var(--pcb-drill)"></circle></g><g><circle cx="700" cy="396" r="7" style="fill:url(#pcb-gold)"></circle><circle cx="700" cy="396" r="3.6" style="fill:var(--pcb-drill)"></circle></g></g><text x="38" y="26" font-size="10.5" letter-spacing="1.6" style="fill:var(--pcb-silk-dim)">INTERNATIONAL MORSE CODE</text><text x="682" y="26" font-size="10.5" letter-spacing="1.6" text-anchor="end" style="fill:var(--pcb-silk-dim)">REV. GERKE · 1848</text><path d="M360.0 58.0L360.0 70.0L229.0 70.0L195.0 104.0L195.0 116.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M360.0 58.0L360.0 70.0L491.0 70.0L525.0 104.0L525.0 116.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M195.0 116.0L195.0 128.0L148.5 128.0L112.5 164.0L112.5 176.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M195.0 116.0L195.0 128.0L241.5 128.0L277.5 164.0L277.5 176.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M525.0 116.0L525.0 128.0L478.5 128.0L442.5 164.0L442.5 176.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M525.0 116.0L525.0 128.0L571.5 128.0L607.5 164.0L607.5 176.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M112.5 176.0L112.5 188.0L107.3 188.0L71.3 224.0L71.3 236.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M112.5 176.0L112.5 188.0L117.8 188.0L153.8 224.0L153.8 236.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M277.5 176.0L277.5 188.0L272.3 188.0L236.3 224.0L236.3 236.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M277.5 176.0L277.5 188.0L282.8 188.0L318.8 224.0L318.8 236.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M442.5 176.0L442.5 188.0L437.3 188.0L401.3 224.0L401.3 236.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M442.5 176.0L442.5 188.0L447.8 188.0L483.8 224.0L483.8 236.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M607.5 176.0L607.5 188.0L602.3 188.0L566.3 224.0L566.3 236.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M607.5 176.0L607.5 188.0L612.8 188.0L648.8 224.0L648.8 236.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M71.3 236.0L71.3 248.0L71.3 259.4L50.6 280.0L50.6 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M71.3 236.0L71.3 248.0L71.3 259.4L91.9 280.0L91.9 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M153.8 236.0L153.8 248.0L153.8 259.4L133.1 280.0L133.1 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M153.8 236.0L153.8 248.0L153.8 259.4L174.4 280.0L174.4 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M236.3 236.0L236.3 248.0L236.3 259.4L215.6 280.0L215.6 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M236.3 236.0L236.3 248.0L236.3 259.4L256.9 280.0L256.9 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M318.8 236.0L318.8 248.0L318.8 259.4L298.1 280.0L298.1 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M318.8 236.0L318.8 248.0L318.8 259.4L339.4 280.0L339.4 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M401.3 236.0L401.3 248.0L401.3 259.4L380.6 280.0L380.6 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M401.3 236.0L401.3 248.0L401.3 259.4L421.9 280.0L421.9 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M483.8 236.0L483.8 248.0L483.8 259.4L463.1 280.0L463.1 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M483.8 236.0L483.8 248.0L483.8 259.4L504.4 280.0L504.4 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M566.3 236.0L566.3 248.0L566.3 259.4L545.6 280.0L545.6 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M566.3 236.0L566.3 248.0L566.3 259.4L586.9 280.0L586.9 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M648.8 236.0L648.8 248.0L648.8 259.4L628.1 280.0L628.1 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M648.8 236.0L648.8 248.0L648.8 259.4L669.4 280.0L669.4 292.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M50.6 292.0L50.6 304.0L50.6 325.7L40.3 336.0L40.3 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M50.6 292.0L50.6 304.0L50.6 325.7L60.9 336.0L60.9 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M91.9 292.0L91.9 304.0L91.9 325.7L102.2 336.0L102.2 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M174.4 292.0L174.4 304.0L174.4 325.7L184.7 336.0L184.7 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M339.4 292.0L339.4 304.0L339.4 325.7L349.7 336.0L349.7 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><path d="M380.6 292.0L380.6 304.0L380.6 325.7L370.3 336.0L370.3 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M545.6 292.0L545.6 304.0L545.6 325.7L535.3 336.0L535.3 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M628.1 292.0L628.1 304.0L628.1 325.7L617.8 336.0L617.8 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M669.4 292.0L669.4 304.0L669.4 325.7L659.1 336.0L659.1 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round"></path><path d="M669.4 292.0L669.4 304.0L669.4 325.7L679.7 336.0L679.7 348.0" fill="none" style="stroke:url(#pcb-gold);stroke-width:5;stroke-linecap:round;stroke-linejoin:round"></path><circle cx="270.4583694396574" cy="57" r="3" style="fill:var(--pcb-mark)"></circle><rect x="442.0416305603426" y="54.8" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="137.7478445071621" cy="120.36737918198766" r="3" style="fill:var(--pcb-mark)"></circle><rect x="244.7521554928379" y="118.16737918198766" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="467.7478445071621" cy="120.36737918198766" r="3" style="fill:var(--pcb-mark)"></circle><rect x="574.7521554928378" y="118.16737918198766" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="81.91376714518957" cy="194.9514565439602" r="3" style="fill:var(--pcb-mark)"></circle><rect x="135.58623285481042" y="192.75145654396022" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="246.91376714518955" cy="194.9514565439602" r="3" style="fill:var(--pcb-mark)"></circle><rect x="300.5862328548105" y="192.75145654396022" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="411.9137671451895" cy="194.9514565439602" r="3" style="fill:var(--pcb-mark)"></circle><rect x="465.5862328548105" y="192.75145654396022" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="576.9137671451896" cy="194.9514565439602" r="3" style="fill:var(--pcb-mark)"></circle><rect x="630.5862328548104" y="192.75145654396022" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="55.766781662573365" cy="256.4734420265764" r="3" style="fill:var(--pcb-mark)"></circle><rect x="79.23321833742664" y="254.2734420265764" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="138.26678166257338" cy="256.4734420265764" r="3" style="fill:var(--pcb-mark)"></circle><rect x="161.73321833742662" y="254.2734420265764" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="220.76678166257338" cy="256.4734420265764" r="3" style="fill:var(--pcb-mark)"></circle><rect x="244.23321833742662" y="254.2734420265764" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="303.26678166257335" cy="256.4734420265764" r="3" style="fill:var(--pcb-mark)"></circle><rect x="326.73321833742665" y="254.2734420265764" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="385.76678166257335" cy="256.4734420265764" r="3" style="fill:var(--pcb-mark)"></circle><rect x="409.23321833742665" y="254.2734420265764" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="468.26678166257335" cy="256.4734420265764" r="3" style="fill:var(--pcb-mark)"></circle><rect x="491.73321833742665" y="254.2734420265764" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="550.7667816625734" cy="256.4734420265764" r="3" style="fill:var(--pcb-mark)"></circle><rect x="574.2332183374266" y="254.2734420265764" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="633.2667816625734" cy="256.4734420265764" r="3" style="fill:var(--pcb-mark)"></circle><rect x="656.7332183374266" y="254.2734420265764" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="38.397682188134524" cy="323.7726821881345" r="3" style="fill:var(--pcb-mark)"></circle><rect x="55.352317811865476" y="321.57268218813454" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><rect x="96.60231781186548" y="321.57268218813454" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><rect x="179.10231781186548" y="321.57268218813454" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><rect x="344.1023178118655" y="321.57268218813454" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="368.3976821881345" cy="323.7726821881345" r="3" style="fill:var(--pcb-mark)"></circle><circle cx="533.3976821881345" cy="323.7726821881345" r="3" style="fill:var(--pcb-mark)"></circle><circle cx="615.8976821881345" cy="323.7726821881345" r="3" style="fill:var(--pcb-mark)"></circle><circle cx="657.1476821881345" cy="323.7726821881345" r="3" style="fill:var(--pcb-mark)"></circle><rect x="674.1023178118654" y="321.57268218813454" width="15" height="4.4" rx="2.2" style="fill:var(--pcb-mark)"></rect><circle cx="360" cy="58" r="8" fill="none" style="stroke:var(--pcb-silk-dim);stroke-width:1.4"></circle><text x="360" y="43" text-anchor="middle" font-size="9.5" letter-spacing="1.2" style="fill:var(--pcb-silk-dim)">SILENCE</text><g class="morse-node"><circle cx="195" cy="116" r="14.5" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="195" y="120" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">E</text></g><g class="morse-node"><circle cx="525" cy="116" r="13.567730237865817" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="525" y="120" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">T</text></g><g class="morse-node"><circle cx="112.5" cy="176" r="12.944938730169476" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="112.5" y="180" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">I</text></g><g class="morse-node"><circle cx="277.5" cy="176" r="13.31238559532694" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="277.5" y="180" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">A</text></g><g class="morse-node"><circle cx="442.5" cy="176" r="12.87422659080626" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="442.5" y="180" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">N</text></g><g class="morse-node"><circle cx="607.5" cy="176" r="11.113713079699478" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="607.5" y="180" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">M</text></g><g class="morse-node"><circle cx="71.25" cy="236" r="12.735954094016385" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="71.25" y="240" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">S</text></g><g class="morse-node"><circle cx="153.75" cy="236" r="11.297073836573517" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="153.75" y="240" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">U</text></g><g class="morse-node"><circle cx="236.25" cy="236" r="12.620622229597748" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="236.25" y="240" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">R</text></g><g class="morse-node"><circle cx="318.75" cy="236" r="11.086457766816919" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="318.75" y="240" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">W</text></g><g class="morse-node"><circle cx="401.25" cy="236" r="11.970914014274653" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="401.25" y="240" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">D</text></g><g class="morse-node"><circle cx="483.75" cy="236" r="9.977388630440322" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="483.75" y="240" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">K</text></g><g class="morse-node"><circle cx="566.25" cy="236" r="10.892902892298078" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="566.25" y="240" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">G</text></g><g class="morse-node"><circle cx="648.75" cy="236" r="13.11391254537599" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="648.75" y="240" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">O</text></g><g class="morse-node"><circle cx="50.625" cy="292" r="12.654875705238876" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="50.625" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">H</text></g><g class="morse-node"><circle cx="91.875" cy="292" r="10.166719159278344" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="91.875" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">V</text></g><g class="morse-node"><circle cx="133.125" cy="292" r="11.014211574732661" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="133.125" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">F</text></g><g class="morse-node"><circle cx="174.375" cy="292" r="8" style="fill:none;stroke:var(--pcb-silk-dim);stroke-width:1.2"></circle><text x="174.375" y="296" text-anchor="middle" font-size="9" font-weight="400" style="fill:var(--pcb-silk-dim);pointer-events:none">Ü</text></g><g class="morse-node"><circle cx="215.625" cy="292" r="11.879884916272164" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="215.625" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">L</text></g><g class="morse-node"><circle cx="256.875" cy="292" r="8" style="fill:none;stroke:var(--pcb-silk-dim);stroke-width:1.2"></circle><text x="256.875" y="296" text-anchor="middle" font-size="9" font-weight="400" style="fill:var(--pcb-silk-dim);pointer-events:none">Ä</text></g><g class="morse-node"><circle cx="298.125" cy="292" r="10.838988273107047" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="298.125" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">P</text></g><g class="morse-node"><circle cx="339.375" cy="292" r="9.152071200401997" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="339.375" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">J</text></g><g class="morse-node"><circle cx="380.625" cy="292" r="10.412248130705278" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="380.625" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">B</text></g><g class="morse-node"><circle cx="421.875" cy="292" r="9.152071200401997" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="421.875" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">X</text></g><g class="morse-node"><circle cx="463.125" cy="292" r="11.307189869002437" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="463.125" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">C</text></g><g class="morse-node"><circle cx="504.375" cy="292" r="10.863102191718323" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="504.375" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">Y</text></g><g class="morse-node"><circle cx="545.625" cy="292" r="8.945449432427962" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="545.625" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">Z</text></g><g class="morse-node"><circle cx="586.875" cy="292" r="9.032413905649669" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="586.875" y="296" text-anchor="middle" font-size="12" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">Q</text></g><g class="morse-node"><circle cx="628.125" cy="292" r="8" style="fill:none;stroke:var(--pcb-silk-dim);stroke-width:1.2"></circle><text x="628.125" y="296" text-anchor="middle" font-size="9" font-weight="400" style="fill:var(--pcb-silk-dim);pointer-events:none">Ö</text></g><g class="morse-node"><circle cx="669.375" cy="292" r="8" style="fill:none;stroke:var(--pcb-silk-dim);stroke-width:1.2"></circle><text x="669.375" y="296" text-anchor="middle" font-size="9" font-weight="400" style="fill:var(--pcb-silk-dim);pointer-events:none">CH</text></g><g class="morse-node"><circle cx="40.3125" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="40.3125" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">5</text></g><g class="morse-node"><circle cx="60.9375" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="60.9375" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">4</text></g><g class="morse-node"><circle cx="102.1875" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="102.1875" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">3</text></g><g class="morse-node"><circle cx="184.6875" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="184.6875" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">2</text></g><g class="morse-node"><circle cx="349.6875" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="349.6875" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">1</text></g><g class="morse-node"><circle cx="370.3125" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="370.3125" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">6</text></g><g class="morse-node"><circle cx="535.3125" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="535.3125" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">7</text></g><g class="morse-node"><circle cx="617.8125" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="617.8125" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">8</text></g><g class="morse-node"><circle cx="659.0625" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="659.0625" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">9</text></g><g class="morse-node"><circle cx="679.6875" cy="348" r="8" style="fill:url(#pcb-gold);stroke:var(--pcb-silk-dim);stroke-width:0"></circle><text x="679.6875" y="352" text-anchor="middle" font-size="10.5" font-weight="700" style="fill:var(--pcb-mask);pointer-events:none">0</text></g><line x1="38" y1="370" x2="682" y2="370" style="stroke:var(--pcb-silk-dim);stroke-width:0.8;stroke-dasharray:3 4"></line><g transform="translate(38 392)"><circle cx="4" cy="-4" r="2.8" style="fill:var(--pcb-mark)"></circle><text x="16" y="0" font-size="10.5" style="fill:var(--pcb-silk-dim)">dot · 1 time unit</text><rect x="168" y="-6.5" width="15" height="4.5" rx="2.2" style="fill:var(--pcb-mark)"></rect><text x="192" y="0" font-size="10.5" style="fill:var(--pcb-silk-dim)">dash · 3 units</text></g><text x="682" y="392" font-size="10.5" letter-spacing="1.4" text-anchor="end" style="fill:var(--pcb-silk-dim)">26 LETTERS · 10 DIGITS · CYBERDEV.SPACE</text></svg></figure><figure class="rp-chart morse-chart"><h4>How long it lasts</h4><p>the same transmission in time: <!-- -->117<!-- --> units, <!-- -->9,4<!-- --> s at <!-- -->15<!-- --> WPM. It shows what the tree does not — <b>a dash costs three times what a dot costs</b> — and that is exactly why «optimality» here is measured in time rather than in the number of symbols.</p><svg class="morse-pcb" viewBox="0 0 720 108" role="img" aria-label="Transmission timing diagram"><rect x="4" y="4" width="712" height="100" rx="12" style="fill:var(--pcb-mask)"></rect><rect x="9" y="9" width="702" height="90" rx="8" fill="none" style="stroke:var(--pcb-silk-dim);stroke-width:1"></rect><line x1="20" y1="82" x2="700" y2="82" style="stroke:var(--pcb-silk-dim);stroke-width:1"></line><rect x="20" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="43.24786324786325" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="54.87179487179487" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="78.11965811965811" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="101.36752136752138" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="124.61538461538463" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="147.86324786324786" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="159.48717948717947" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="217.60683760683762" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="240.85470085470087" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="252.47863247863248" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="275.7264957264957" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="322.22222222222223" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="333.84615384615387" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="345.4700854700855" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="380.34188034188037" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="391.965811965812" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="415.21367521367523" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="438.4615384615385" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="450.0854700854701" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="461.70940170940173" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="473.3333333333333" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="496.58119658119654" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="531.4529914529915" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="543.0769230769231" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="566.3247863247864" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="589.5726495726495" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="612.8205128205128" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="636.0683760683761" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="647.6923076923077" y="44" width="17.435897435897434" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="682.5641025641025" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><rect x="694.1880341880342" y="44" width="5.811965811965813" height="22" rx="3" style="fill:var(--pcb-gold);fill-opacity:0.72"></rect><text x="51.965811965811966" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">C</text><text x="139.14529914529913" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">Q</text><text x="237.94871794871796" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">D</text><text x="278.63247863247864" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">E</text><text x="342.56410256410254" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">U</text><text x="400.6837606837607" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">R</text><text x="476.2393162393162" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">3</text><text x="563.4188034188035" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">P</text><text x="638.974358974359" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">K</text><text x="691.2820512820513" y="34" text-anchor="middle" font-size="11" font-weight="700" style="fill:var(--pcb-silk)">I</text><g transform="translate(20 0)"><line x1="0" y1="38" x2="0" y2="88" style="stroke:var(--pcb-live);stroke-width:2"></line></g></svg><p class="morse-readout">read back: <b>—</b></p></figure></div>
<p>Two things are immediately visible here that the table hides.</p>
<p><strong>Frequent letters sit close to the root.</strong> Not roughly but systematically: the diameter of a pad here is the letter's frequency, and the largest ones have gathered at the top.</p>
<p><strong>A dash costs three times a dot.</strong> So the depth of a node and the cost of a letter are different things: <strong>O</strong> (<code>---</code>) sits on the third level, as does <strong>S</strong> (<code>...</code>), but it takes more than twice as long to send — eleven units of time against five. The timing diagram under the tree shows this directly.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-well-vail-aimed">How well Vail aimed<a href="https://cyberdev.space/en/blog/morse-huffman/#how-well-vail-aimed" class="hash-link" aria-label="Direct link to How well Vail aimed" title="Direct link to How well Vail aimed" translate="no">​</a></h2>
<figure class="rp rp-chart"><h4>Letter frequency and the cost of its code</h4><p>bars — frequency in English text, %; the line — the duration of the code in time units (right axis). The commoner the letter, the cheaper its code — and the more obvious the exceptions</p><svg viewBox="0 0 720 300" role="img" aria-label="Letter frequency and the cost of its code"><g><line x1="34" x2="680" y1="266" y2="266" style="stroke:var(--rp-grid)"></line><text x="28" y="269" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">0</text></g><g><line x1="34" x2="680" y1="189.07692307692307" y2="189.07692307692307" style="stroke:var(--rp-grid)"></line><text x="28" y="192.07692307692307" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">4</text></g><g><line x1="34" x2="680" y1="112.15384615384615" y2="112.15384615384615" style="stroke:var(--rp-grid)"></line><text x="28" y="115.15384615384615" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">8</text></g><g><line x1="34" x2="680" y1="35.23076923076922" y2="35.23076923076922" style="stroke:var(--rp-grid)"></line><text x="28" y="38.23076923076922" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">12</text></g><rect x="38.96923076923076" y="21.769230769230777" width="14.907692307692308" height="244.23076923076923" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="63.815384615384616" y="91.76923076923076" width="14.907692307692308" height="174.23076923076923" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="88.66153846153846" y="108.8846153846154" width="14.907692307692308" height="157.11538461538458" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="113.50769230769231" y="121.57692307692307" width="14.907692307692308" height="144.42307692307693" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="138.35384615384618" y="131.96153846153848" width="14.907692307692308" height="134.03846153846152" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="163.20000000000002" y="136.19230769230768" width="14.907692307692308" height="129.80769230769232" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="188.04615384615389" y="144.26923076923077" width="14.907692307692308" height="121.73076923076923" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="212.89230769230772" y="148.8846153846154" width="14.907692307692308" height="117.11538461538461" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="237.73846153846156" y="150.8076923076923" width="14.907692307692308" height="115.19230769230771" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="262.5846153846154" y="184.26923076923077" width="14.907692307692308" height="81.73076923076923" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="287.4307692307692" y="188.5" width="14.907692307692308" height="77.5" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="312.2769230769231" y="212.53846153846155" width="14.907692307692308" height="53.46153846153845" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="337.12307692307695" y="212.92307692307693" width="14.907692307692308" height="53.076923076923066" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="361.96923076923076" y="219.65384615384616" width="14.907692307692308" height="46.34615384615384" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="386.81538461538463" y="220.6153846153846" width="14.907692307692308" height="45.38461538461539" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="411.66153846153844" y="223.1153846153846" width="14.907692307692308" height="42.88461538461539" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="436.5076923076923" y="227.15384615384613" width="14.907692307692308" height="38.84615384615387" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="461.3538461538462" y="228.1153846153846" width="14.907692307692308" height="37.88461538461539" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="486.2" y="228.8846153846154" width="14.907692307692308" height="37.11538461538461" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="511.04615384615386" y="241.19230769230768" width="14.907692307692308" height="24.80769230769232" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="535.8923076923077" y="247.15384615384616" width="14.907692307692308" height="18.84615384615384" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="560.7384615384616" y="251.1923076923077" width="14.907692307692308" height="14.807692307692292" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="585.5846153846154" y="263.11538461538464" width="14.907692307692308" height="2.8846153846153584" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="610.4307692307692" y="263.11538461538464" width="14.907692307692308" height="2.8846153846153584" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="635.2769230769231" y="264.0769230769231" width="14.907692307692308" height="1.9230769230769056" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><rect x="660.123076923077" y="264.65384615384613" width="14.907692307692308" height="1.346153846153868" rx="1.5" style="fill:var(--rp-bar);fill-opacity:0.75"></rect><polyline points="46.4,248.1 71.3,212.4 96.1,176.7 121.0,69.6 145.8,212.4 170.7,176.7 195.5,176.7 220.3,141.0 245.2,141.0 270.0,141.0 294.9,105.3 319.7,69.6 344.6,141.0 369.4,141.0 394.3,105.3 419.1,105.3 444.0,105.3 468.8,33.9 493.7,69.6 518.5,105.3 543.3,105.3 568.2,105.3 593.0,33.9 617.9,69.6 642.7,33.9 667.6,69.6" fill="none" style="stroke:var(--rp-gold);stroke-width:2"></polyline><circle cx="46.42307692307692" cy="248.14285714285714" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="71.26923076923077" cy="212.42857142857142" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="96.11538461538461" cy="176.7142857142857" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="120.96153846153847" cy="69.57142857142858" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="145.80769230769232" cy="212.42857142857142" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="170.65384615384616" cy="176.7142857142857" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="195.50000000000003" cy="176.7142857142857" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="220.34615384615387" cy="141" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="245.1923076923077" cy="141" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="270.03846153846155" cy="141" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="294.88461538461536" cy="105.28571428571428" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="319.7307692307692" cy="69.57142857142858" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="344.5769230769231" cy="141" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="369.4230769230769" cy="141" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="394.2692307692308" cy="105.28571428571428" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="419.1153846153846" cy="105.28571428571428" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="443.96153846153845" cy="105.28571428571428" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="468.8076923076923" cy="33.85714285714285" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="493.65384615384613" cy="69.57142857142858" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="518.5" cy="105.28571428571428" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="543.3461538461538" cy="105.28571428571428" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="568.1923076923077" cy="105.28571428571428" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="593.0384615384615" cy="33.85714285714285" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="617.8846153846154" cy="69.57142857142858" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="642.7307692307693" cy="33.85714285714285" r="2.6" style="fill:var(--rp-gold)"></circle><circle cx="667.5769230769231" cy="69.57142857142858" r="2.6" style="fill:var(--rp-gold)"></circle><text x="46.42307692307692" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">E</text><text x="71.26923076923077" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">T</text><text x="96.11538461538461" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">A</text><text x="120.96153846153847" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">O</text><text x="145.80769230769232" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">I</text><text x="170.65384615384616" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">N</text><text x="195.50000000000003" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">S</text><text x="220.34615384615387" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">H</text><text x="245.1923076923077" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">R</text><text x="270.03846153846155" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">D</text><text x="294.88461538461536" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">L</text><text x="319.7307692307692" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">C</text><text x="344.5769230769231" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">U</text><text x="369.4230769230769" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">M</text><text x="394.2692307692308" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">W</text><text x="419.1153846153846" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">F</text><text x="443.96153846153845" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">G</text><text x="468.8076923076923" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">Y</text><text x="493.65384615384613" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">P</text><text x="518.5" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">B</text><text x="543.3461538461538" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">V</text><text x="568.1923076923077" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">K</text><text x="593.0384615384615" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">J</text><text x="617.8846153846154" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">X</text><text x="642.7307692307693" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">Q</text><text x="667.5769230769231" y="288" text-anchor="middle" font-size="11" style="fill:var(--rp-text)">Z</text><text x="686" y="269" font-size="10" style="fill:var(--rp-gold)">0</text><text x="686" y="197.57142857142858" font-size="10" style="fill:var(--rp-gold)">4</text><text x="686" y="126.14285714285715" font-size="10" style="fill:var(--rp-gold)">8</text><text x="686" y="54.71428571428573" font-size="10" style="fill:var(--rp-gold)">12</text></svg></figure>
<p>The correlation between a letter's frequency and the duration of its code — Spearman's rank correlation — comes out strong and negative. For work done by counting letters in type cases, that is almost indecently good.</p>
<p>The exceptions stand out on the chart. The loudest is <strong>O</strong>: the fourth commonest letter in English has the longest code the third level can offer.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-is-not-a-huffman-code-after-all">Why this is not a Huffman code after all<a href="https://cyberdev.space/en/blog/morse-huffman/#why-this-is-not-a-huffman-code-after-all" class="hash-link" aria-label="Direct link to Why this is not a Huffman code after all" title="Direct link to Why this is not a Huffman code after all" translate="no">​</a></h2>
<p>Here it gets interesting, because the analogy “Morse is Huffman” is pleasing and wrong, for two separate reasons.</p>
<p><strong>Morse is not a prefix code.</strong> <strong>E</strong> is <code>.</code> and <strong>I</strong> is <code>..</code> — the code for one letter is the start of the code for another. A prefix code forbids that, and it is precisely the prohibition that lets a stream be decoded without separators. Huffman always produces a code where symbols sit <strong>only at the leaves</strong>; in Morse a symbol sits at every node, internal ones included.</p>
<p>That is why Morse cannot be sent as a continuous stream: between letters there must be a gap three units long. So the alphabet is not binary at all but <strong>ternary</strong> — dot, dash and gap — and it is the gap that carries what the shape of the tree carries in Huffman.</p>
<p><strong>And optimality is not measured the same way.</strong> Huffman minimises the number of symbols, on the assumption that every symbol costs the same. In telegraphy a dash costs three times a dot, so what has to be minimised is <strong>time</strong>, not the count of marks. That is a different problem — coding with unequal symbol costs — and it was not solved until 1961 (Karp, via integer linear programming), with workable approximations later still.</p>
<p>In short: Morse is not Huffman and was never meant to be. But the question “how close is it?” remains a fair one, and it can be answered exactly.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-the-allocation-error-costs">What the allocation error costs<a href="https://cyberdev.space/en/blog/morse-huffman/#what-the-allocation-error-costs" class="hash-link" aria-label="Direct link to What the allocation error costs" title="Direct link to What the allocation error costs" translate="no">​</a></h2>
<p>Let us compare fairly: take <strong>the same twenty-six codes</strong> and hand them out to the letters in the best possible way — the cheapest code to the commonest letter, and so on down. That this really is the optimum follows from the rearrangement inequality: no other allocation gives a shorter mean time.</p>
<div class="rp"><div class="rp-cards"><div class="rp-card"><b>6,07</b><span>time units per letter on average — that is what Morse costs</span></div><div class="rp-card"><b>7,0<!-- --> %</b><span>the loss against the best assignment of those same 26 codes</span></div><div class="rp-card"><b>−0,78</b><span>Spearman correlation between letter frequency and the cost of its code</span></div></div><figure class="rp rp-chart"><h4>Average letter time, in units</h4><p>the same codes, a different assignment</p><svg viewBox="0 0 720 132" role="img" aria-label="Average letter time, in units"><g><text x="122" y="41" text-anchor="end" font-size="12" style="fill:var(--rp-text)">Morse as it is</text><rect x="132" y="24" width="432.15971606033725" height="26" rx="3" style="fill:var(--rp-bar);fill-opacity:0.85"></rect><text x="572.1597160603372" y="42" font-size="12" style="fill:var(--rp-muted)">6,07</text></g><g><text x="122" y="87" text-anchor="end" font-size="12" style="fill:var(--rp-text)">the best assignment</text><rect x="132" y="70" width="403.83656295617834" height="26" rx="3" style="fill:var(--rp-gold);fill-opacity:0.85"></rect><text x="543.8365629561783" y="88" font-size="12" style="fill:var(--rp-muted)">5,68</text></g></svg></figure><div class="rp-tablewrap"><table><thead><tr><th>Letter</th><th>Code</th><th>Costs</th><th>Should be</th><th>Loss</th></tr></thead><tbody><tr><td>O</td><td class="morse-code">---</td><td>11</td><td>5</td><td>0,45</td></tr><tr><td>A</td><td class="morse-code">.-</td><td>5</td><td>3</td><td>0,16</td></tr><tr><td>L</td><td class="morse-code">.-..</td><td>9</td><td>7</td><td>0,08</td></tr><tr><td>Y</td><td class="morse-code">-.--</td><td>13</td><td>9</td><td>0,08</td></tr><tr><td>C</td><td class="morse-code">-.-.</td><td>11</td><td>9</td><td>0,06</td></tr></tbody></table></div></div>
<p>Seven percent. So an allocation made in the 1840s by eye and by ear loses to the exact optimum for the same set of codes by less than a tenth.</p>
<p>The table shows where the time goes, and <strong>O</strong> heads it by a wide margin: eleven units where there should have been five.</p>
<p><strong>But Vail cannot be blamed for it.</strong> The code we have just taken apart is not his. American Morse had different codes for a good dozen letters and used gaps inside symbols (<strong>O</strong> was sent there as two dots with a wide space between them). In 1848 Friedrich Gerke reworked it for the Hamburg telegraph line — he removed the internal gaps and evened out the lengths. In 1851 the German-Austrian Telegraph Union adopted that revision, and the international alphabet grew out of it.</p>
<p>So the frequency optimisation was Vail's, while the particular allocation we are measuring is Gerke's — and his aim was regularity, not the shortest time. Seven percent is what that regularity costs.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="and-a-practical-conclusion-the-opposite-of-what-you-would-expect">And a practical conclusion, the opposite of what you would expect<a href="https://cyberdev.space/en/blog/morse-huffman/#and-a-practical-conclusion-the-opposite-of-what-you-would-expect" class="hash-link" aria-label="Direct link to And a practical conclusion, the opposite of what you would expect" title="Direct link to And a practical conclusion, the opposite of what you would expect" translate="no">​</a></h2>
<p>The tree explains <strong>why</strong> the alphabet is the way it is. But you must not learn Morse from it.</p>
<p>Anyone who traces a finger down the tree while a transmission runs in the headphones is putting counting where hearing should be: heard → counted → recalled. That intermediate step hits a ceiling around ten words a minute, and unlearning it afterwards is harder than learning properly from scratch. The method that works is Koch with Farnsworth: characters at 20–25 WPM from the very start, only the gaps stretched, and no table in front of you.</p>
<p>The tree is a good answer to “how does this work” and a poor answer to “how do I learn it”. They are different questions, and confusing them costs six months.</p>
<hr>
<p><em>An open question I am leaving for later: everything counted above is for English letter frequencies. What a code optimised for someone else's language costs a Ukrainian operator, and what the same table looks like for the Cyrillic Morse alphabet, is a subject for another time — and one to begin by checking the Cyrillic table against a primary source rather than against memory.</em></p>]]></content:encoded>
            <category>radio</category>
            <category>algorithms</category>
            <category>coding</category>
            <category>morse</category>
        </item>
        <item>
            <title><![CDATA[UaHamAward: One Log for Twenty Operators]]></title>
            <link>https://cyberdev.space/en/blog/uahamaward/</link>
            <guid>https://cyberdev.space/en/blog/uahamaward/</guid>
            <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How the special callsign EN35UKR made 17,387 contacts in a month without merging ADIF by hand: a shared live log, CAT in the browser, a WSJT-X bridge and ADIF for LoTW.]]></description>
            <content:encoded><![CDATA[<p>The idea for this platform is mine; I laid down the architecture back in 2025 and wrote it myself.</p>
<p>On <strong>6 March 2026</strong> I showed it running for the first time — from my own laptop, through ngrok, with a link that lived until midnight. Even then it kept a shared log, accepted contacts from WSJT-X over UDP, imported ADIF with duplicate checking, and had separate dashboards for hunters and for organisers. The next evening the bridge for digital modes appeared — for Windows, Linux and macOS.</p>
<p>In April, seven weeks after that demonstration, the special callsign EN40CNP was on the air for the 40th anniversary of Chornobyl. Two weeks, 1565 contacts, several operators — and the whole log was merged by hand: the platform was not yet ready for real use. Vitalii, UT0UI, put the experience most precisely: <strong>“merging logs after the fact by hand is a right pain”</strong>.</p>
<p>By August it was ready. What follows is what came of it: the platform <a href="https://uahamaward.com/" target="_blank" rel="noopener noreferrer" class="">uahamaward.com</a>, on which the “35th anniversary of Ukraine's independence” award made <strong>17,387 contacts in 31 days</strong>, and not one of them was merged by hand — neither during the month nor after it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-problem-first">The problem first<a href="https://cyberdev.space/en/blog/uahamaward/#the-problem-first" class="hash-link" aria-label="Direct link to The problem first" title="Direct link to The problem first" translate="no">​</a></h2>
<p>Everyone keeps their own log. Then it all gets merged into one file. Then it turns out two people were working the same band and mode at the same time. Then somebody has lost their ADIF. Then LoTW refuses the duplicates.</p>
<p>At 1565 contacts that is a few evenings. At seventeen thousand it is no longer work but an impossibility.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="four-requirements">Four requirements<a href="https://cyberdev.space/en/blog/uahamaward/#four-requirements" class="hash-link" aria-label="Direct link to Four requirements" title="Direct link to Four requirements" translate="no">​</a></h2>
<p>For the August activity I set myself not the task of “building a site” but four specific pains to remove.</p>
<ol>
<li class=""><strong>Two people must not land on the same band and mode at once.</strong> Somebody has to see who is on the air and where — and see it now, not afterwards.</li>
<li class=""><strong>The log must be shared and live.</strong> Not a file at the end of the month but a table everyone sees in the same second.</li>
<li class=""><strong>The certificate must count itself.</strong> Conditions, points, number, PDF — with no human in the loop.</li>
<li class=""><strong>The ADIF that comes out must be accepted by LoTW and QRZ without edits.</strong> Not “almost the right format” but one that goes in first time.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-the-platform-does">What the platform does<a href="https://cyberdev.space/en/blog/uahamaward/#what-the-platform-does" class="hash-link" aria-label="Direct link to What the platform does" title="Direct link to What the platform does" translate="no">​</a></h2>
<p>This is not a site with a table. It is several separate programs that work together — and each can be used on its own.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-shared-log-everyone-sees-the-same-thing-now">A shared log: everyone sees the same thing, now<a href="https://cyberdev.space/en/blog/uahamaward/#a-shared-log-everyone-sees-the-same-thing-now" class="hash-link" aria-label="Direct link to A shared log: everyone sees the same thing, now" title="Direct link to A shared log: everyone sees the same thing, now" translate="no">​</a></h3>
<p>An operator opens the activator panel, presses “go on the air”, picks a band and a mode — and that slot is taken. The rest of the team sees it instantly, with no page reload: who is sitting where, on what frequency, in what mode.</p>
<ul>
<li class="">Every contact appears in the shared log within a second.</li>
<li class=""><strong>Duplicates do not get through.</strong> The same correspondent, band, mode and minute will not be written twice — even if two tabs send them simultaneously. That is not rare: one program sends to two tabs, and both try to write.</li>
<li class="">A session someone forgot to close shuts itself after an hour without contacts, so a band is not held by somebody who simply closed their laptop.</li>
<li class="">A mistake in the log can be corrected or deleted; the edits are visible to everyone.</li>
<li class="">The event page and the hunter page are public, with no registration: anyone can watch the activity and their own progress.</li>
</ul>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The log page in use: the transceiver panel, the on-air session card, spotting and the contact form" src="https://cyberdev.space/en/assets/images/onair-25a6926d4ef00978bf828f0f0410caad.webp" width="1240" height="900" class="img_ev3q"></p><figcaption>An operator on the air. Top right is the transceiver panel: frequency and mode come from the radio rather than being typed. The “On air now” strip shows the whole team. Below is the session card with frequency, event callsign, grid square and a contact counter, and beside it the spotting switch: off, manual, automatic.</figcaption></figure>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The award log table with activators, correspondents, bands and locators" src="https://cyberdev.space/en/assets/images/log-table-7d2f0990281af417675015edbd947421.webp" width="1920" height="937" class="img_ev3q"></p><figcaption>The shared table: you can see which activator made each contact. For August, 1739 pages of them.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cat-the-radio-straight-from-the-browser">CAT: the radio straight from the browser<a href="https://cyberdev.space/en/blog/uahamaward/#cat-the-radio-straight-from-the-browser" class="hash-link" aria-label="Direct link to CAT: the radio straight from the browser" title="Direct link to CAT: the radio straight from the browser" translate="no">​</a></h3>
<p>Connect the radio over a COM port and the site fills the frequency and mode into the contact form by itself. Nothing has to be installed: it works in the browser.</p>
<ul>
<li class="">Frequency and mode are read from the radio rather than typed.</li>
<li class="">VFO and band control from the same page.</li>
<li class=""><strong>172 models</strong> out of the box: Icom, Yaesu, Kenwood, Elecraft, Ten-Tec, Xiegu, FlexRadio, Alinco, JRC, AOR, Elad, Expert Electronics. The profiles come from the OmniRig format, so a radio not on the list is added with a description file rather than by rewriting code.</li>
<li class="">If you do not need CAT, just pick the band and mode by hand; everything else works the same.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-bridge-wsjt-x-writes-to-the-log-by-itself">The bridge: WSJT-X writes to the log by itself<a href="https://cyberdev.space/en/blog/uahamaward/#the-bridge-wsjt-x-writes-to-the-log-by-itself" class="hash-link" aria-label="Direct link to The bridge: WSJT-X writes to the log by itself" title="Direct link to The bridge: WSJT-X writes to the log by itself" translate="no">​</a></h3>
<p>A small program on your computer: it catches packets from WSJT-X and puts the contact straight into the award log. Make a QSO and it is already in the shared table, where the rest of the team can see it.</p>
<ul>
<li class="">Seven builds: Windows, Linux, macOS (x86 and ARM) — downloaded from the page and started with a double click.</li>
<li class=""><strong>It updates itself</strong>, but only when you press the button: the bridge holds the port WSJT-X knows about, and an unexpected restart in the middle of an activation means lost contacts.</li>
<li class="">Settings in a browser window, not on a command line.</li>
<li class=""><strong>It forwards the packets on</strong>, so JTAlert, GridTracker or N1MM work alongside it. WSJT-X can only send to one address, which is why you previously had to choose just one.</li>
</ul>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The WSJT-X bridge page with a diagram of the data flow and a download for your platform" src="https://cyberdev.space/en/assets/images/bridge-3a279afd16c88de8cb2c913bc10eb474.webp" width="1920" height="937" class="img_ev3q"></p><figcaption>The bridge page: a diagram of what goes where, and the build for your system is detected automatically. Nothing leaves your machine — the bridge listens only on a local port.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="custom-builds-of-wsjt-x-and-wsjt-z-with-a-country-filter">Custom builds of WSJT-X and WSJT-Z with a country filter<a href="https://cyberdev.space/en/blog/uahamaward/#custom-builds-of-wsjt-x-and-wsjt-z-with-a-country-filter" class="hash-link" aria-label="Direct link to Custom builds of WSJT-X and WSJT-Z with a country filter" title="Direct link to Custom builds of WSJT-X and WSJT-Z with a country filter" translate="no">​</a></h3>
<p>Two builds of the popular digital-mode programs, with what the originals lack.</p>
<ul>
<li class=""><strong>A country filter at the decoder level.</strong> You pick countries from the DXCC list: hidden stations do not appear in any window, and the program will not answer them even on a direct call. Unlike the existing filters it works by country rather than by text match — “Japan only” catches every prefix at once.</li>
<li class=""><strong>A direct link to the platform.</strong> Log a QSO and it is on the award page immediately. No separate bridge needed.</li>
<li class=""><strong>A Ukrainian interface:</strong> menus, settings, tooltips, errors. Mode and band names stayed in English — that is what people are used to.</li>
<li class="">Callsign data from QRZ.com right in the program window.</li>
<li class="">Along the way a bug in the inherited code was fixed: filtering out one signal made every subsequent signal in the same period disappear.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="spotting-announcements-to-the-dx-cluster">Spotting: announcements to the DX cluster<a href="https://cyberdev.space/en/blog/uahamaward/#spotting-announcements-to-the-dx-cluster" class="hash-link" aria-label="Direct link to Spotting: announcements to the DX cluster" title="Direct link to Spotting: announcements to the DX cluster" translate="no">​</a></h3>
<p>From the log page, in two clicks — or automatically while you work.</p>
<ul>
<li class="">Manual spots and an automatic mode with a timer.</li>
<li class="">The timer knows the node's rules, so you will not be refused for repeating. And it knows that after a frequency change you may spot immediately.</li>
<li class="">A spot feed on the log page: other people's and your own, with the author's callsign.</li>
<li class="">A cluster monitor of our own — like dxheat, but ours.</li>
</ul>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The DX monitor: cluster spots in real time with filters by band and mode" src="https://cyberdev.space/en/assets/images/dx-monitor-e9ceea4bf7c1369e599ed9e9edf3d7e6.webp" width="1920" height="937" class="img_ev3q"></p><figcaption>The DX monitor: cluster spots in real time, filtered by band, mode and period. Each callsign's country is determined by <b>the same prefix table</b> the platform uses to credit contacts — so what you see in the monitor and what ends up in your score are counted the same way.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="certificates-counted-numbered-and-assembled-automatically">Certificates: counted, numbered and assembled automatically<a href="https://cyberdev.space/en/blog/uahamaward/#certificates-counted-numbered-and-assembled-automatically" class="hash-link" aria-label="Direct link to Certificates: counted, numbered and assembled automatically" title="Direct link to Certificates: counted, numbered and assembled automatically" translate="no">​</a></h3>
<p>The organiser describes the conditions in the award settings, and the platform does the rest.</p>
<ul>
<li class="">Conditions: a minimum number of contacts or points, separate conditions per mode and band, several groups of conditions at once.</li>
<li class=""><strong>Special days.</strong> A multiplier can be assigned to particular dates — for us those were 23 and 24 August. The multiplier applies to the score rather than to a log line, so the holiday rewards three bands rather than three hundred calls on one.</li>
<li class=""><strong>The certificate number is your place in the log.</strong> The queue is worked out from contact dates, not from who pressed “download” first. And every condition has its own numbering.</li>
<li class="">The PDF is generated in two languages — whichever one the hunter opened the site in.</li>
<li class="">An ADIF that arrives a week later takes the place in the queue its dates have earned: the roll is recomputed from the log.</li>
</ul>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The hunter page with the conditions met and buttons to download the certificates" src="https://cyberdev.space/en/assets/images/certificates-bf7417de8b91777deb535eee45b08ef4.webp" width="1920" height="937" class="img_ev3q"></p><figcaption>The hunter has met the conditions, and the numbered certificates are already waiting. Two conditions, two separate numbers: “35 QSO No. 12” and “35 points No. 12”.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="qsl-cards--electronic-and-for-printing">QSL cards — electronic and for printing<a href="https://cyberdev.space/en/blog/uahamaward/#qsl-cards--electronic-and-for-printing" class="hash-link" aria-label="Direct link to QSL cards — electronic and for printing" title="Direct link to QSL cards — electronic and for printing" translate="no">​</a></h3>
<ul>
<li class="">An electronic QSL for each contact individually: the hunter opens their page, hovers over a “band × mode” cell, and downloads the card for exactly that contact.</li>
<li class="">A 140 × 90 mm layout for printing, if paper cards are being ordered.</li>
<li class="">Nothing has to be written out by hand — in August that produced 62 certificates and all the cards.</li>
</ul>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The band × mode matrix on the hunter page with the credited contacts" src="https://cyberdev.space/en/assets/images/hunter-matrix-885eaeee094db235d41c72e1edaad97d.webp" width="1240" height="900" class="img_ev3q"></p><figcaption>A green cell means the contact is credited, an orange one that it is a repeat. A cell in a green frame with a dish means <b>an activator is working there right now</b> and you do not have that contact yet — so that is where to go.</figcaption></figure>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="A matrix cell flipped over, with a button to download the eQSL card" src="https://cyberdev.space/en/assets/images/eqsl-67ca717844e7c73e64f791e694e02301.webp" width="1240" height="900" class="img_ev3q"></p><figcaption>Hovering over a credited contact flips the cell, and from there you download the eQSL card for exactly that contact: that day, that band and that mode.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="adif-import-export-and-what-lotw-accepts">ADIF: import, export, and what LoTW accepts<a href="https://cyberdev.space/en/blog/uahamaward/#adif-import-export-and-what-lotw-accepts" class="hash-link" aria-label="Direct link to ADIF: import, export, and what LoTW accepts" title="Direct link to ADIF: import, export, and what LoTW accepts" translate="no">​</a></h3>
<ul>
<li class="">Import of files up to 20,000 records with a progress bar — a full month's log goes in within 15–20 seconds.</li>
<li class="">An export that <strong>QRZ.com and LoTW accept without edits</strong>: the right format version and correct submodes (ADIF does not know “FT4” as a mode — it is a submode of MFSK, and that is how it gets written).</li>
<li class="">Frequency is in kilohertz everywhere — in the form, in the session, in the bridge. On output it is converted as it should be, so a contact does not end up 430 Hz away from where the other station logged it.</li>
<li class="">A daily copy of the whole log emailed to the organisers — from once to eight times a day.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="qrzcom-contacts-upload-themselves">QRZ.com: contacts upload themselves<a href="https://cyberdev.space/en/blog/uahamaward/#qrzcom-contacts-upload-themselves" class="hash-link" aria-label="Direct link to QRZ.com: contacts upload themselves" title="Direct link to QRZ.com: contacts upload themselves" translate="no">​</a></h3>
<p>If you have an <strong>XML Logbook Data</strong> subscription on QRZ, paste your logbook key into the settings and there is nothing more to do. The platform uploads every contact you make to your QRZ logbook by itself. No exports, no uploading ADIFs by hand.</p>
<ul>
<li class="">It works in two places: <strong>your personal log</strong> goes to your logbook, and <strong>the award log</strong> to the award's logbook.</li>
<li class="">They are deliberately not the same: a QRZ logbook belongs to one callsign, and contacts made under an event callsign simply will not be accepted into your own. So the award has a key of its own.</li>
<li class="">The state of each contact is visible separately: sent, duplicate, error — and exactly what QRZ replied if it did not go through.</li>
<li class="">Contacts made before you pasted the key can be sent retrospectively.</li>
<li class="">The key is stored encrypted and never shown back — the interface shows the last four characters.</li>
<li class=""><strong>From the other side, QRZ</strong> is a directory: empty locators in the log are filled in automatically. Only the empty ones: a locator given on the air is worth more than a guess about where a station usually operates. Portable callsigns are skipped, because QRZ would return the home square and the contact was not made from there.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="statistics-what-is-visible-about-the-event-in-real-time">Statistics: what is visible about the event in real time<a href="https://cyberdev.space/en/blog/uahamaward/#statistics-what-is-visible-about-the-event-in-real-time" class="hash-link" aria-label="Direct link to Statistics: what is visible about the event in real time" title="Direct link to Statistics: what is visible about the event in real time" translate="no">​</a></h3>
<ul>
<li class="">Each activator's output: how many contacts, on which bands, in which modes.</li>
<li class="">Band coverage by hour — you can see where work has been done and where you are still awaited.</li>
<li class="">A contact map: locator squares at their true boundaries, countries by QSO count, and a separate view by Ukrainian oblast.</li>
<li class="">The hunter page: your own progress, how much is left to meet the conditions, and which activators are on the air now.</li>
<li class="">A live PNG banner listing the active stations — for a QRZ.com page or your own site.</li>
</ul>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The award&amp;#39;s active stations and a heat grid of band coverage by hour" src="https://cyberdev.space/en/assets/images/active-stations-a2ebdd0a942cf06d974813cf550197d3.webp" width="1240" height="900" class="img_ev3q"></p><figcaption>What a hunter sees: who is on the air, on what, and from which square. Below, band coverage by hour: where work has been done and where you are still awaited.</figcaption></figure>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The award statistics page with summary cards and activator output" src="https://cyberdev.space/en/assets/images/stats-9e43e733ec3368791bf7958057e96103.webp" width="1240" height="860" class="img_ev3q"></p><figcaption>The statistics update in real time and are available without registration.</figcaption></figure>
<figure class="post-shot"><p><img decoding="async" loading="lazy" alt="The contact map: locator squares and countries by QSO count" src="https://cyberdev.space/en/assets/images/map-c8d73acaade33821d45c91e1d092f106.webp" width="1240" height="860" class="img_ev3q"></p><figcaption>The contact map: yellow rectangles are locator squares, the country fill is by callsign. The platform serves the base layer itself, with no third-party tiles.</figcaption></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-personal-logbook-not-only-for-awards">A personal logbook: not only for awards<a href="https://cyberdev.space/en/blog/uahamaward/#a-personal-logbook-not-only-for-awards" class="hash-link" aria-label="Direct link to A personal logbook: not only for awards" title="Direct link to A personal logbook: not only for awards" translate="no">​</a></h3>
<p>Every account has its own log, separate from any award: enter contacts by hand or from WSJT-X, upload ADIFs, download them back, switch on automatic syncing with your QRZ logbook. An award is one log and your personal one is another, and they do not mix: a contact made under an event callsign will not land in your own log, nor the other way round.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-the-month-produced">What the month produced<a href="https://cyberdev.space/en/blog/uahamaward/#what-the-month-produced" class="hash-link" aria-label="Direct link to What the month produced" title="Direct link to What the month produced" translate="no">​</a></h2>
<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>Contacts</td><td><strong>17,387</strong></td></tr><tr><td>Days on the air</td><td>31</td></tr><tr><td>Correspondents</td><td>8,226</td></tr><tr><td>DXCC entities (per LoTW)</td><td>124</td></tr><tr><td>Activators</td><td>17 callsigns</td></tr><tr><td>Met the certificate conditions</td><td><strong>62</strong></td></tr><tr><td>Through QO-100</td><td>262 · 1.5 %</td></tr><tr><td>Locator known</td><td>96.8 %</td></tr><tr><td>QRZ page views</td><td>100,000+</td></tr></tbody></table>
<p><strong>Not one contact was merged by hand.</strong> Neither during the month nor after it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-many-people-saw-it">How many people saw it<a href="https://cyberdev.space/en/blog/uahamaward/#how-many-people-saw-it" class="hash-link" aria-label="Direct link to How many people saw it" title="Direct link to How many people saw it" translate="no">​</a></h2>
<p>Since the platform launched on 25 July.</p>
<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>Page views</td><td><strong>49,388</strong></td></tr><tr><td>Visitors</td><td>4,376</td></tr><tr><td>Countries</td><td>59</td></tr><tr><td>Of whom registered</td><td>123</td></tr></tbody></table>
<p>The last line is the most important. <strong>4,376 people used the platform and 123 created an account.</strong> That is not a registration failure — it is the design: a hunter does not need an account at all. They open the event page, type in their callsign, see their own progress and collect their certificate. Registration is only needed by someone who goes on the air themselves.</p>
<p>59 countries is no longer about us. Those are people who went looking for what they had been credited with and found a Ukrainian page.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-this-came-from">Where this came from<a href="https://cyberdev.space/en/blog/uahamaward/#where-this-came-from" class="hash-link" aria-label="Direct link to Where this came from" title="Direct link to Where this came from" translate="no">​</a></h2>
<p>I built the platform myself — from the idea and the architecture through to production, the server and the domain. The first demonstration was on 6 March 2026 from a laptop; the first real event was on 1 August.</p>
<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>Separate products</td><td>5</td></tr><tr><td>Lines of code and documentation</td><td>100,000+</td></tr><tr><td>Backend tests</td><td>483</td></tr><tr><td>Work by one person</td><td>over a year</td></tr></tbody></table>
<p>I say this not for applause but so it is clear what we are talking about: this is not a page with a table knocked up over a weekend.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-costs-you">What it costs you<a href="https://cyberdev.space/en/blog/uahamaward/#what-it-costs-you" class="hash-link" aria-label="Direct link to What it costs you" title="Direct link to What it costs you" translate="no">​</a></h2>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>For Ukrainian activities — nothing</div><div class="admonitionContent_BuS1"><p>Not for organisers, not for activators, not for hunters. The server, the domain and the rest are my concern. If you ever want to support it with a donation that would be welcome, but it changes nothing and unlocks nothing.</p><p>I want Ukrainian radio amateurs to have a tool of their own and not to depend on other people's. The rest can wait.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-start">How to start<a href="https://cyberdev.space/en/blog/uahamaward/#how-to-start" class="hash-link" aria-label="Direct link to How to start" title="Direct link to How to start" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="if-you-are-organising-an-activity">If you are organising an activity<a href="https://cyberdev.space/en/blog/uahamaward/#if-you-are-organising-an-activity" class="hash-link" aria-label="Direct link to If you are organising an activity" title="Direct link to If you are organising an activity" translate="no">​</a></h3>
<ol>
<li class=""><strong>Register at <a href="https://uahamaward.com/" target="_blank" rel="noopener noreferrer" class="">uahamaward.com</a></strong> — a minute, an email address and a callsign.</li>
<li class=""><strong>Write to me and I will set the award up for you.</strong> Name, callsign, dates, certificate conditions, artwork. After that you run it yourself.</li>
<li class=""><strong>Invite activators by callsign.</strong> They accept the invitation in their dashboard and can go on the air straight away.</li>
<li class=""><strong>Operate.</strong> The log, the certificates, the QSLs, the statistics and the QRZ upload take care of themselves.</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="if-you-are-a-hunter">If you are a hunter<a href="https://cyberdev.space/en/blog/uahamaward/#if-you-are-a-hunter" class="hash-link" aria-label="Direct link to If you are a hunter" title="Direct link to If you are a hunter" translate="no">​</a></h3>
<p>No registration at all is needed. The award log is public: type your callsign on the event page and you will see your own progress, how much is left to meet the conditions, and which activators are on the air. The certificate and the QSL download from the same place as soon as the conditions are met.</p>
<p>The platform will run any award — regional, club, national, a single day's activation or a whole month. Write to <strong>UR3PKI</strong>. I will help you set it up, configure the conditions and get to grips with the bridge, especially the first time.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="and-something-interesting-from-the-data">And something interesting from the data<a href="https://cyberdev.space/en/blog/uahamaward/#and-something-interesting-from-the-data" class="hash-link" aria-label="Direct link to And something interesting from the data" title="Direct link to And something interesting from the data" translate="no">​</a></h2>
<p>When a log sits in a database rather than in thirty files, you can learn something from it. I went through August: how the daily volume depends on the solar indices (hardly at all — the calendar rules), while the high bands really do depend on them; why the median distance falls as the flux rises; how far radioteletype reaches and who worked through the geostationary satellite.</p>
<p><strong><a class="" href="https://cyberdev.space/en/blog/award-35-analysis/">→ 17,387 contacts in August: an analysis of the log</a></strong></p>
<p>73! Petro, UR3PKI</p>]]></content:encoded>
            <category>radio</category>
            <category>awards</category>
            <category>platform</category>
            <category>ADIF</category>
            <category>WSJT-X</category>
        </item>
        <item>
            <title><![CDATA[17,387 Contacts in August: Analysing an Amateur Radio Award Log]]></title>
            <link>https://cyberdev.space/en/blog/award-35-analysis/</link>
            <guid>https://cyberdev.space/en/blog/award-35-analysis/</guid>
            <pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[An analysis of the “35th anniversary of Ukraine’s independence” award log for August 2026: propagation and solar indices, distance by mode, QO-100 and geography.]]></description>
            <content:encoded><![CDATA[<p>Throughout August 2026 the award “35th anniversary of Ukraine's independence” was on the air. Over 31 days the activators made <strong>17,387 contacts</strong> with 8,226 different stations in 99 countries. Every line of the log carries a time, a frequency, a band, a mode, the other station's callsign, its locator and a report. Together they make a fairly rare thing: a month of continuous observation of the short waves, made not by an instrument but by people.</p>
<p>What follows is what can be seen in it. Not “the award was a success” but concrete numbers: when the bands opened, why Saturdays weigh more than the Sun, how far FT8 reaches compared with SSB, and why amateur radio remains a hobby of wealthy countries.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="at-a-glance">At a glance<a href="https://cyberdev.space/en/blog/award-35-analysis/#at-a-glance" class="hash-link" aria-label="Direct link to At a glance" title="Direct link to At a glance" translate="no">​</a></h2>
<div class="rp rp-cards"><div class="rp-card"><b>17&nbsp;387</b><span>contacts in the award log</span></div><div class="rp-card"><b>99</b><span>countries worldwide</span></div><div class="rp-card"><b>96,8 %</b><span>of contacts carry a locator — those are the ones on the map</span></div><div class="rp-card"><b>19,8 %</b><span>Ukraine’s share</span></div><div class="rp-card"><b>82,7 %</b><span>share of digital modes (FT8 63,4 % + FT4 17,6 %)</span></div><div class="rp-card"><b>75,9 %</b><span>of contacts from countries with a GDP per capita above $40,000</span></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-map-the-locator-puts-down-a-point-the-callsign-colours-a-country">The map: the locator puts down a point, the callsign colours a country<a href="https://cyberdev.space/en/blog/award-35-analysis/#the-map-the-locator-puts-down-a-point-the-callsign-colours-a-country" class="hash-link" aria-label="Direct link to The map: the locator puts down a point, the callsign colours a country" title="Direct link to The map: the locator puts down a point, the callsign colours a country" translate="no">​</a></h2>
<p>There are two different layers on the map, and they should not be confused. The <strong>squares</strong> are locators from the log, that is, the physical place a station worked from. The <strong>country colour</strong> comes from the callsign, that is, from where the operator was licensed. A German on holiday in Croatia puts a square in JN and colours Germany all the same — that is not an error, they are two different questions.</p>
<p>16,823 contacts (96.8 %) have a locator and appear on the map; 564 (3.2 %) do not, and those points are missing.</p>
<div class="rp"><div class="rp-map-views"><button type="button" class="rp-btn" aria-pressed="true">Worldwide</button><button type="button" class="rp-btn" aria-pressed="false">Europe</button><button type="button" class="rp-btn" aria-pressed="false">Ukraine</button><button type="button" class="rp-btn rp-btn-layer" aria-pressed="true">☑<!-- --> <!-- -->locator squares</button></div><div class="rp-map"><svg viewBox="0.0 0.0 1000.0 576.0" role="img" aria-label="Award contact map: countries by callsign and locator squares"><rect x="0" y="0" width="1000" height="576" style="fill:var(--rp-sea)"></rect><path d="M594.2,390.5L604.7,396.4L605.0,398.0L608.9,400.8L607.5,404.2L607.8,405.8L609.4,406.7L608.9,409.2L609.2,410.0L608.9,411.4L609.7,413.1L611.1,415.9L611.9,416.5L609.7,418.2L606.7,419.3L605.0,419.3L604.2,420.2L602.2,420.2L601.4,420.5L598.1,419.6L596.1,419.9L595.3,416.2L594.2,414.8L593.6,414.0L591.1,413.4L589.4,412.6L587.8,412.3L586.7,411.7L585.3,410.9L583.9,407.5L582.2,405.8L581.7,404.2L581.9,402.8L581.4,400.3L582.8,400.3L583.6,399.1L584.7,397.7L585.6,397.2L584.7,395.5L584.7,394.4L585.6,394.1L585.6,392.5L584.4,390.8L585.6,390.5L588.6,390.5L594.2,390.5ZM475.8,307.6L475.8,313.2L466.7,313.2L466.9,320.9L464.2,321.2L463.6,322.7L464.2,327.2L453.3,327.2L452.5,328.1L452.8,326.9L458.9,326.6L459.4,325.4L460.6,324.2L461.4,319.9L465.3,316.6L466.7,312.9L467.5,312.6L468.3,310.1L470.8,309.8L471.7,310.1L473.1,310.1L473.9,309.5L475.6,309.5L475.6,307.6L475.8,307.6ZM891.7,395.0L896.4,396.9L901.7,398.6L903.6,400.0L905.0,401.4L905.6,403.0L910.0,404.7L910.8,406.1L908.3,406.4L908.9,408.4L911.4,410.0L913.1,413.1L914.7,413.1L914.7,414.3L916.7,414.8L915.8,415.4L918.9,416.5L918.6,417.4L916.7,417.6L916.1,416.8L913.6,416.5L910.8,415.9L908.6,414.3L907.2,412.6L905.6,410.3L901.9,408.9L899.7,409.8L898.1,410.6L898.3,412.8L896.1,413.7L894.7,413.4L891.7,413.1L891.7,404.2L891.7,395.0ZM920.3,403.9L918.9,404.7L917.2,405.3L915.8,405.3L913.6,404.4L911.9,403.6L912.2,402.8L914.7,403.3L916.1,403.0L916.7,401.6L917.2,403.0L918.9,403.0L919.7,401.9L921.1,401.1L920.8,399.4L922.5,399.1L923.1,399.7L923.1,401.4L922.2,403.0L920.8,403.3L920.3,403.9ZM581.4,400.3L581.9,402.8L581.7,404.2L582.2,405.8L583.9,407.5L585.3,410.9L584.2,410.6L580.6,411.2L579.7,411.4L578.9,413.4L579.7,414.5L579.2,417.9L578.9,420.8L579.4,421.3L581.4,422.5L582.2,421.9L582.5,425.0L580.3,424.7L579.2,423.3L578.3,422.2L576.1,421.6L575.6,420.2L573.9,421.0L571.7,420.8L570.6,419.3L568.9,419.1L567.5,419.3L567.5,418.5L566.4,418.2L565.3,418.2L563.3,418.5L562.2,418.5L561.7,415.4L560.8,414.3L560.6,412.6L560.8,410.9L560.3,409.8L560.3,408.1L556.9,408.1L557.2,407.0L555.8,407.0L553.9,407.8L553.3,409.2L552.8,410.0L551.4,409.5L550.3,410.0L548.6,410.3L547.5,408.6L546.9,407.8L546.1,406.1L545.3,404.2L537.2,404.2L536.1,404.4L534.2,404.7L533.9,403.9L534.4,403.6L534.7,402.2L535.0,401.6L536.1,401.1L536.9,401.4L537.8,400.3L539.2,400.3L540.6,401.6L542.2,399.7L543.9,398.6L544.4,397.5L544.4,395.2L545.6,392.5L546.9,391.1L548.6,389.7L548.9,388.9L549.2,388.0L549.4,386.9L549.4,385.2L549.7,383.0L550.3,381.1L551.1,379.7L551.4,378.0L551.4,376.1L552.5,374.7L554.2,373.8L556.4,374.7L558.1,375.8L560.3,376.1L562.2,376.6L563.1,374.9L564.7,374.9L567.8,373.6L568.9,374.1L569.7,374.1L570.3,373.3L571.4,373.0L573.3,373.3L575.0,373.6L576.1,373.3L577.8,375.5L578.9,375.8L579.7,375.2L581.1,375.5L582.5,374.9L583.3,376.1L585.6,378.0L585.6,381.3L586.7,381.6L585.8,382.7L584.7,383.3L583.6,384.7L583.1,386.1L582.8,388.3L582.2,389.4L582.2,391.4L581.4,392.2L581.4,393.9L580.6,395.5L581.4,396.9L581.4,400.3ZM615.6,392.5L613.9,390.2L613.9,380.0L616.4,376.9L616.9,376.1L618.9,375.8L621.4,373.8L625.0,373.8L632.8,365.4L634.7,363.2L635.8,361.2L635.8,359.8L635.8,357.0L635.8,355.9L636.9,355.9L638.1,355.3L639.7,355.0L640.8,354.2L641.9,354.2L641.7,356.4L641.7,358.1L641.1,359.0L640.6,362.1L639.2,365.2L637.5,368.8L635.0,373.0L632.5,376.1L629.4,379.7L626.7,382.2L622.5,384.7L619.7,386.9L616.7,390.2L616.1,391.6L615.6,392.5ZM568.3,364.9L566.1,363.5L565.3,362.6L565.0,361.8L565.6,360.7L565.6,359.5L563.9,357.8L563.6,356.7L562.5,355.0L562.5,353.3L561.9,352.5L560.8,352.5L561.1,351.3L561.9,350.2L561.7,349.0L562.5,348.2L561.9,347.6L562.8,345.9L563.9,343.6L566.4,343.9L566.1,332.2L566.1,331.0L569.4,331.0L569.4,325.1L580.6,325.1L591.4,325.1L602.5,325.1L603.3,328.1L602.8,328.7L603.1,331.6L604.2,335.1L605.3,335.7L606.7,336.9L605.3,338.6L603.3,338.9L602.5,339.8L602.2,341.8L600.8,346.2L601.1,347.3L600.8,349.6L599.7,352.5L598.1,353.9L596.7,356.1L596.4,357.3L595.3,358.1L594.4,360.9L594.4,363.5L594.4,361.2L593.9,359.8L593.6,359.0L592.2,357.8L591.9,355.9L592.2,353.6L590.8,353.6L589.2,354.2L589.7,355.0L590.0,356.7L588.6,358.4L587.2,360.4L585.6,360.7L583.3,359.0L582.2,359.5L581.9,360.4L580.6,360.9L577.8,361.5L575.3,360.9L574.4,361.2L573.6,360.9L572.2,359.5L571.7,358.7L569.7,359.0L568.9,360.4L568.1,362.9L567.2,363.5L566.4,363.8L568.3,364.9ZM300.8,331.9L301.1,333.4L300.8,334.6L300.3,335.1L300.8,336.0L298.9,336.3L297.8,336.6L295.8,336.3L294.7,336.9L293.1,336.0L293.3,334.8L296.1,335.4L298.1,335.7L299.2,334.8L297.8,333.7L297.8,332.5L296.1,332.2L296.7,331.3L298.3,331.3L300.8,331.9ZM760.6,0.0L766.4,0.0L771.9,0.0L778.3,3.2L777.5,16.7L771.7,18.1L763.9,15.3L759.2,9.3L756.9,0.0L753.3,0.0L760.6,0.0ZM785.6,10.8L792.8,19.6L791.9,25.1L776.1,30.5L781.4,12.3L783.6,10.8L785.6,10.8ZM885.6,52.8L893.1,52.8L903.1,58.5L900.8,67.2L890.6,67.2L886.1,69.3L880.6,61.8L881.9,55.1L885.6,52.8ZM911.7,61.8L918.6,64.0L915.6,68.2L911.1,67.2L905.8,62.9L906.7,59.6L911.7,61.8ZM888.6,81.4L891.1,77.4L894.7,76.4L898.6,80.4L898.9,83.3L894.7,83.3L888.9,82.3L888.6,81.4ZM624.4,0.0L630.0,0.0L634.2,0.0L634.7,0.0L636.4,0.0L638.9,0.0L643.1,0.0L641.9,0.0L638.3,0.0L635.8,0.0L632.2,0.0L629.2,0.0L630.8,0.0L624.4,0.0ZM563.1,207.4L558.1,207.4L554.7,206.9L555.3,204.5L559.2,203.1L561.9,204.0L563.3,204.5L562.8,206.0L563.1,207.4ZM648.6,77.4L655.3,69.3L654.4,64.0L660.8,58.5L670.0,50.5L679.2,49.3L683.9,44.5L689.4,43.3L691.4,48.1L689.4,51.6L679.4,57.4L671.1,61.8L662.5,72.4L658.3,82.3L653.9,90.8L654.4,98.9L659.7,105.8L658.1,106.6L649.2,104.9L648.3,101.5L643.3,98.9L643.1,94.5L645.8,92.7L645.6,87.1L651.1,79.4L648.6,77.4ZM896.9,210.2L898.1,214.9L897.8,219.0L898.9,223.8L901.9,231.2L897.8,229.9L896.1,235.8L898.6,240.3L898.6,243.1L896.4,240.7L894.7,243.5L894.2,240.3L894.4,236.2L894.2,231.6L894.7,228.6L895.0,222.5L893.3,218.5L893.6,212.1L896.1,209.8L895.0,207.9L896.4,206.9L896.9,210.2ZM863.3,258.2L862.8,255.6L864.2,255.6L864.7,251.0L863.9,247.5L866.4,246.3L869.7,247.1L871.7,243.1L872.5,238.7L873.6,237.0L875.0,233.3L870.6,234.5L868.1,236.2L863.9,236.2L862.8,232.4L859.4,229.5L854.7,227.7L853.6,223.8L852.5,220.7L851.7,219.0L849.7,214.4L847.5,212.6L843.3,211.2L839.4,211.6L836.1,212.1L833.9,214.4L835.3,215.8L835.3,218.1L833.9,219.9L831.4,224.3L831.4,226.5L827.5,229.0L824.2,227.3L820.8,227.7L819.4,226.5L817.8,226.0L813.6,229.0L810.0,229.5L807.5,230.7L803.9,229.9L801.4,229.9L799.7,227.7L796.9,225.6L794.2,225.1L790.6,225.6L788.1,226.5L784.2,224.7L783.6,221.2L780.3,220.3L777.8,219.9L774.7,218.1L771.7,222.5L772.8,225.1L770.3,228.2L766.1,226.9L763.3,226.9L761.4,224.7L758.6,224.7L756.1,223.4L751.9,225.6L746.7,229.0L743.9,229.9L742.8,230.3L741.1,227.7L737.5,228.2L736.4,226.5L734.4,225.6L733.1,223.0L731.7,222.1L727.5,223.4L723.9,220.7L722.2,223.0L716.1,211.6L712.5,207.9L713.6,206.4L706.7,211.2L703.9,211.2L704.2,208.8L700.6,206.9L697.8,208.3L696.9,203.1L691.9,202.1L689.4,204.0L682.5,206.0L681.1,206.9L670.6,208.8L669.4,210.2L671.4,213.5L668.6,214.9L669.2,216.2L666.7,218.1L671.1,221.2L670.3,223.4L666.4,223.4L665.6,224.7L662.2,222.1L657.8,222.5L654.7,224.3L651.4,222.5L645.3,219.4L641.1,219.4L635.3,224.3L635.0,227.3L632.2,224.7L630.0,229.5L630.6,230.3L629.2,233.7L631.4,236.6L633.6,236.6L635.3,239.1L635.0,241.1L636.4,241.9L635.0,244.3L632.5,245.1L629.7,249.0L632.2,252.5L631.9,255.2L635.0,259.7L633.3,261.2L632.8,261.9L631.7,261.9L629.7,259.7L627.2,258.6L626.4,257.1L623.6,256.3L621.9,256.7L621.7,256.3L617.8,254.4L613.6,253.7L611.4,252.9L607.5,250.2L604.2,248.6L601.9,246.7L603.9,245.9L606.1,242.7L604.7,241.1L608.6,239.5L606.1,239.1L606.4,237.4L607.8,236.2L610.3,235.8L610.8,234.5L610.3,232.0L611.4,229.9L607.2,227.3L605.6,227.3L603.9,225.1L601.7,226.0L598.3,224.3L597.2,221.6L595.0,221.2L594.7,219.9L595.6,219.0L593.9,216.7L590.8,217.2L590.0,216.7L589.4,217.6L588.3,217.6L587.5,214.9L586.9,213.0L589.7,213.0L590.8,211.6L590.0,210.7L588.1,209.8L587.2,207.9L585.6,205.0L586.1,203.6L585.8,201.1L583.1,200.1L581.7,200.6L581.1,199.6L578.3,198.1L577.5,195.1L577.2,193.1L575.8,191.5L576.9,190.0L576.1,185.2L578.1,182.0L580.8,178.1L578.1,175.3L583.9,167.9L586.4,164.3L587.5,161.3L583.3,157.0L584.4,153.2L581.9,148.6L583.9,142.6L580.8,135.0L583.3,129.3L578.9,124.1L579.4,118.7L581.7,117.9L586.4,114.8L589.2,112.4L593.9,117.1L601.4,118.7L611.9,127.8L614.2,130.7L614.2,135.7L611.1,139.2L606.7,141.3L594.2,135.7L592.2,137.1L596.7,142.0L596.9,145.3L596.9,151.9L600.6,153.8L602.8,155.1L603.1,152.5L601.4,149.3L603.3,147.3L610.0,151.2L612.2,149.3L610.6,144.7L616.9,137.8L619.4,138.5L622.2,140.6L623.6,135.7L621.4,131.4L622.8,127.1L620.8,122.5L628.6,125.6L630.0,129.3L626.7,130.0L626.7,134.3L628.6,136.4L633.1,135.0L633.6,130.7L639.4,127.1L649.2,120.2L651.4,121.0L648.6,125.6L651.9,126.3L653.9,124.1L659.2,123.3L663.3,120.2L666.4,124.8L669.7,120.2L666.7,115.6L668.3,112.4L676.4,115.6L680.3,117.9L690.3,126.3L692.2,122.5L689.4,118.7L685.8,115.6L686.9,112.4L685.3,105.8L690.3,95.4L692.2,87.1L694.2,85.2L701.7,87.1L702.2,92.7L699.4,99.8L701.4,102.4L702.2,108.3L701.7,119.5L704.7,124.1L703.3,129.3L698.1,139.2L701.1,139.9L702.2,137.8L705.3,135.7L706.1,132.2L708.6,128.5L706.9,124.8L708.1,119.5L705.0,118.7L704.4,114.8L706.7,106.6L703.1,99.8L708.1,93.6L707.5,87.1L708.9,86.2L710.3,91.7L709.2,100.6L712.2,101.5L710.8,95.4L715.6,91.7L721.4,91.7L726.4,97.1L723.9,89.0L723.6,79.4L728.3,76.4L735.3,77.4L741.1,76.4L738.9,70.3L742.2,64.0L745.3,64.0L750.8,58.5L758.1,56.2L758.9,53.9L766.4,52.8L768.6,55.1L774.7,49.3L780.0,49.3L780.6,43.3L783.3,38.3L790.0,33.2L794.7,37.0L790.8,40.8L797.2,42.0L797.8,48.1L800.6,45.7L808.6,45.7L814.7,51.6L816.9,56.2L816.4,61.8L813.3,65.0L806.1,70.3L803.9,73.4L807.2,75.4L811.4,77.4L813.9,75.4L815.3,82.3L816.7,79.4L821.1,77.4L830.0,79.4L830.6,84.3L842.2,85.2L842.5,78.4L848.3,79.4L852.8,79.4L857.2,85.2L858.6,90.8L856.9,94.5L860.3,101.5L864.7,104.9L867.5,96.2L871.9,99.8L876.7,97.1L881.9,100.6L883.9,98.0L888.6,98.9L886.4,90.8L890.3,87.1L915.3,92.7L917.8,98.0L925.0,104.9L936.1,103.2L941.7,104.1L943.9,107.4L943.6,114.0L946.9,116.3L950.8,114.8L955.8,114.0L960.8,115.6L966.1,114.8L971.1,121.8L974.4,119.5L972.2,114.0L973.6,110.7L982.2,113.2L988.1,112.4L996.1,116.3L1000.0,119.5L1006.9,125.6L1014.2,132.9L1013.9,137.1L1015.8,139.2L1015.0,133.6L1022.5,135.0L1028.1,141.3L1025.3,144.7L1020.8,145.3L1020.6,151.2L1019.4,152.5L1016.9,152.5L1014.7,150.6L1011.1,148.6L1010.6,145.3L1007.8,144.7L1004.4,145.3L1003.1,143.3L1003.6,140.6L1000.3,142.0L1001.7,145.3L1000.0,148.0L1000.0,148.0L996.4,151.2L992.8,150.6L995.3,153.8L996.9,158.8L998.3,160.7L998.6,163.1L997.8,164.9L992.8,163.7L985.0,167.9L982.5,168.4L978.1,173.1L974.2,176.5L973.1,178.7L969.2,174.8L961.9,179.2L960.6,177.0L958.1,179.8L954.2,178.7L953.3,182.5L950.0,187.9L950.3,190.0L953.3,191.0L953.1,198.1L950.3,198.6L949.2,202.6L950.3,204.5L945.6,207.4L944.4,212.6L940.3,213.5L939.4,218.5L935.6,222.5L934.4,219.4L933.3,212.6L931.7,202.1L933.1,195.1L935.6,192.0L935.6,190.0L940.0,188.4L944.7,182.0L949.7,176.5L954.7,171.9L956.9,163.1L953.6,163.7L951.9,169.0L944.7,175.3L942.5,167.9L935.3,170.2L928.3,179.2L930.6,183.1L924.4,184.2L920.3,184.7L920.3,180.9L916.1,179.8L912.5,182.5L904.2,182.0L895.0,183.6L886.1,193.6L875.3,205.5L879.7,206.0L881.1,208.8L883.9,209.8L885.6,207.4L888.6,207.9L892.5,213.0L892.8,217.2L890.6,221.6L890.3,226.9L889.2,233.7L885.0,239.5L883.9,242.3L880.3,247.1L876.4,251.4L874.7,253.7L870.8,255.9L869.2,255.9L867.5,254.0L863.6,256.7L863.3,258.2ZM1000.0,98.9L1002.8,98.0L1006.7,100.6L1003.6,104.1L1000.0,104.9L996.9,104.9L996.4,102.4L1000.0,98.9ZM330.0,556.5L333.3,554.3L335.6,555.2L337.5,553.4L339.7,555.2L338.9,557.0L335.0,558.3L333.9,556.5L331.4,558.8L330.0,556.5ZM370.0,0.0L379.4,0.0L389.2,0.0L392.8,0.0L402.5,0.0L424.7,0.0L442.2,0.0L436.9,0.0L426.4,0.0L411.4,0.0L412.8,0.0L422.5,0.0L431.1,0.0L436.4,0.0L438.6,0.0L435.6,0.0L442.8,0.0L456.1,0.0L464.4,0.0L466.1,0.0L454.7,0.0L453.3,0.0L444.4,0.0L450.8,0.0L447.5,9.3L445.3,18.1L445.3,34.5L448.6,42.0L444.4,43.3L439.7,46.9L445.0,52.8L445.6,62.9L442.5,62.9L446.1,72.4L440.0,73.4L443.3,77.4L442.2,80.4L438.3,82.3L434.4,82.3L438.1,89.0L438.1,92.7L432.5,89.0L431.1,91.7L435.0,93.6L438.6,98.9L439.4,105.8L434.7,107.4L432.5,104.1L429.2,99.8L430.0,104.9L426.7,109.9L434.2,109.9L438.1,110.7L430.6,117.1L423.1,123.3L414.7,126.3L411.7,126.3L408.9,129.3L405.0,136.4L398.9,141.3L397.2,142.0L393.3,143.3L389.4,144.7L386.9,149.3L386.9,153.8L385.6,157.6L381.1,162.5L382.2,167.3L380.8,171.9L379.4,177.6L375.6,178.1L371.4,173.1L365.8,173.1L363.3,170.2L361.4,164.3L356.7,157.0L355.3,152.5L354.7,146.7L350.8,140.6L351.9,135.7L350.0,132.9L352.8,124.1L356.9,121.8L358.1,118.7L358.6,112.4L355.6,114.8L353.9,116.3L351.4,117.1L348.1,114.8L347.8,109.1L348.9,104.9L351.7,104.9L357.2,106.6L352.5,101.5L350.0,98.9L347.2,99.8L345.0,97.1L348.1,89.0L346.4,85.2L344.2,78.4L340.8,68.2L337.2,64.0L337.2,59.6L329.7,52.8L323.9,51.6L316.4,52.8L309.7,52.8L306.4,49.3L301.7,42.0L308.9,38.3L314.4,37.0L302.8,34.5L296.4,29.2L296.7,23.8L307.2,16.7L317.5,9.3L318.6,3.2L311.1,0.0L313.6,0.0L323.1,0.0L327.2,0.0L326.1,0.0L332.5,0.0L341.1,0.0L349.7,0.0L352.8,0.0L360.0,0.0L366.7,0.0L370.6,0.0L376.4,0.0L369.7,0.0L370.0,0.0ZM691.4,542.6L693.3,543.9L695.8,544.7L695.3,547.3L690.8,547.7L690.8,545.2L691.4,543.5L691.4,542.6ZM847.2,412.6L847.5,412.0L849.7,411.2L851.7,411.2L852.8,410.9L853.6,411.2L852.8,412.0L849.7,413.1L847.5,414.0L847.2,412.6ZM580.6,472.0L581.4,472.9L580.6,474.2L580.0,475.5L578.6,475.8L578.1,476.8L577.2,477.1L575.0,474.8L576.4,472.6L578.1,471.7L579.2,470.7L580.6,472.0ZM306.9,418.5L308.9,418.5L310.3,418.5L311.1,417.6L313.3,416.5L315.0,415.4L318.6,415.1L318.3,417.1L318.6,418.2L318.3,420.2L321.4,422.7L324.4,423.0L325.6,424.2L327.5,424.7L328.6,425.6L330.3,425.6L331.9,426.5L331.9,428.2L332.5,428.7L332.5,430.2L332.8,433.6L338.3,433.6L337.8,435.4L338.1,436.5L339.7,437.4L340.3,439.2L339.7,441.5L338.9,442.7L339.2,444.5L338.3,445.1L335.8,442.7L333.3,442.4L328.3,443.3L326.9,445.9L326.9,447.7L325.8,451.0L325.6,450.4L322.2,450.4L321.1,452.8L319.4,450.7L315.8,449.8L313.6,452.5L311.7,453.1L310.6,448.9L308.9,445.6L310.0,442.7L308.3,441.5L308.1,439.5L306.7,437.4L308.3,434.2L307.2,431.9L307.8,430.8L307.5,429.9L308.6,428.5L308.6,425.9L308.6,423.9L309.2,423.0L306.9,418.5ZM285.0,363.5L285.6,365.7L285.0,366.6L283.9,366.3L283.6,367.7L282.8,366.8L282.2,365.2L282.8,364.6L281.7,363.5L280.3,362.6L278.9,362.9L278.3,363.8L277.2,364.6L276.4,365.2L277.8,366.8L276.9,367.1L275.3,367.7L274.7,366.0L273.6,366.3L273.1,365.2L271.9,364.9L271.1,364.6L270.0,364.6L269.7,363.2L269.7,361.2L270.8,360.9L271.7,362.1L272.8,362.6L273.9,363.2L275.3,362.9L276.4,362.4L278.1,361.8L278.9,360.9L280.6,360.9L281.9,361.5L283.1,362.1L284.2,362.9L285.0,363.5ZM267.5,357.3L266.9,357.8L266.1,357.6L265.6,357.0L264.7,356.7L264.2,357.0L262.2,356.4L260.8,355.9L259.7,354.7L259.2,353.9L257.8,352.7L256.4,351.6L257.5,351.3L258.3,351.3L258.6,350.5L258.9,349.0L260.3,349.0L260.8,348.5L261.7,349.0L262.5,348.2L263.3,347.3L264.2,346.2L265.0,346.5L266.1,346.5L267.8,345.9L269.2,345.6L268.6,346.5L268.9,347.6L268.3,348.5L268.1,349.6L267.8,351.0L268.1,353.0L267.5,354.4L266.9,355.9L267.5,357.3ZM269.2,345.6L268.1,345.6L266.7,346.5L265.6,346.7L264.4,346.2L263.6,346.7L262.5,348.2L261.7,349.0L260.8,348.5L260.3,349.0L258.9,349.0L259.2,350.5L258.3,351.3L257.5,351.3L256.9,350.5L256.1,350.2L256.4,349.0L255.3,348.5L254.2,349.0L253.3,348.2L252.5,347.6L251.7,347.3L252.5,346.5L252.2,345.3L253.6,344.7L255.0,343.6L255.8,343.0L256.9,343.3L258.6,343.3L260.0,343.3L260.8,343.0L261.9,342.7L263.3,343.0L265.3,343.0L266.4,343.9L267.2,344.4L268.3,344.7L269.2,345.6ZM251.7,347.3L252.5,347.6L253.3,348.2L254.2,348.5L255.3,348.5L256.4,349.0L256.1,350.2L254.2,350.7L253.3,350.5L251.9,349.9L250.6,349.9L249.7,349.3L250.8,348.2L251.1,347.3L251.7,347.3ZM243.9,347.0L244.2,345.3L245.3,342.4L248.6,342.4L248.9,341.5L248.1,340.7L246.9,340.1L245.8,338.9L247.2,338.9L247.2,337.5L249.7,337.5L252.5,337.5L252.5,339.8L252.2,343.0L253.9,343.6L255.0,343.6L253.6,344.7L252.2,345.3L252.5,346.5L251.7,347.3L251.4,347.9L249.7,348.7L248.3,348.7L246.7,348.7L245.3,348.2L243.9,347.0ZM343.1,382.5L340.8,382.5L339.7,383.0L338.6,383.6L337.8,383.6L336.1,384.1L334.4,382.7L334.2,381.6L333.3,380.0L333.9,377.7L334.7,376.6L333.9,375.5L333.1,374.9L333.3,373.8L332.8,373.3L331.4,373.3L329.4,371.0L330.3,370.5L330.0,369.1L331.9,368.5L332.5,368.2L331.7,367.1L331.7,366.0L333.9,364.3L335.8,365.4L337.5,367.4L337.5,368.8L338.6,368.8L340.3,370.2L341.4,371.0L340.8,373.6L339.2,374.4L338.9,376.3L340.0,378.6L341.4,380.0L343.1,382.5ZM348.6,381.3L346.9,380.8L345.6,381.1L344.4,380.8L344.2,381.6L344.7,382.2L343.1,382.5L341.4,380.0L340.8,378.6L338.9,376.3L339.2,374.9L340.8,373.6L341.4,371.0L344.7,371.6L347.2,371.0L350.0,371.6L348.6,374.1L348.9,376.1L350.0,377.7L349.4,378.8L349.2,380.2L348.6,381.3ZM586.7,451.3L585.3,451.0L584.2,451.3L582.8,450.7L581.7,450.7L580.0,449.2L577.8,448.9L576.9,447.1L576.9,445.9L575.8,445.6L572.8,442.4L571.9,440.6L571.1,440.0L570.3,437.7L573.3,438.0L574.2,438.6L575.0,438.3L576.7,436.5L579.2,434.2L580.0,433.9L580.3,432.8L581.9,431.6L584.2,431.3L584.2,432.5L586.7,432.5L587.8,433.1L588.6,433.6L589.7,433.9L591.1,434.8L591.1,438.6L590.8,440.6L590.6,442.7L591.1,443.6L590.8,445.3L589.4,447.7L586.7,451.3ZM581.7,450.7L577.8,452.8L575.3,455.2L574.4,457.1L573.6,458.3L571.9,458.6L571.7,460.1L571.4,461.0L569.4,461.7L567.2,461.7L565.8,460.7L564.7,460.4L563.3,461.0L562.8,462.6L561.4,463.5L560.0,464.7L558.1,465.1L557.5,464.1L557.8,462.3L556.1,459.2L555.3,458.9L555.3,449.8L558.1,449.8L558.1,439.5L560.3,439.2L564.4,438.3L565.6,439.5L567.2,438.3L569.7,437.7L571.1,440.0L571.9,440.6L572.8,442.4L575.8,445.6L576.9,445.9L576.9,447.1L577.8,448.9L580.0,449.2L581.7,450.7ZM555.3,458.9L555.3,470.4L552.8,472.0L551.4,472.0L549.4,471.7L548.3,471.3L547.8,470.1L546.7,469.1L545.3,470.7L543.3,468.2L542.2,466.0L541.7,462.9L540.8,460.7L540.0,456.1L540.0,452.5L539.7,450.7L538.6,449.5L537.2,447.1L535.6,443.6L535.0,441.5L532.8,438.9L532.5,436.5L533.9,436.0L535.6,435.4L537.5,435.7L539.2,436.8L550.8,436.5L552.8,438.0L559.4,438.3L564.4,437.1L566.7,436.5L568.6,436.8L569.7,437.4L568.1,438.3L565.6,439.5L564.4,438.3L560.3,439.2L558.1,439.5L558.1,449.8L555.3,449.8L555.3,458.9ZM453.6,349.6L452.5,347.3L451.1,346.5L452.2,345.9L453.6,343.9L454.2,342.4L455.3,341.3L456.7,341.5L458.1,341.0L459.4,341.0L460.8,341.8L462.8,342.7L464.4,344.7L466.1,346.7L466.4,348.5L466.9,350.2L467.8,351.0L468.1,351.9L468.1,353.0L466.1,352.7L465.3,353.3L463.3,352.5L461.9,352.5L456.9,352.5L456.1,352.7L455.3,352.7L453.6,353.0L453.3,350.7L455.8,351.0L456.4,350.5L458.1,349.9L459.2,350.5L460.3,350.5L461.7,349.9L461.1,349.0L460.0,349.6L458.1,348.7L456.7,349.6L453.6,349.6ZM468.1,353.0L468.1,351.9L467.8,351.0L466.9,350.2L466.4,348.5L466.1,346.7L467.2,346.2L467.5,344.4L470.3,345.3L471.9,344.7L473.1,344.7L473.6,344.2L484.7,344.2L485.3,342.1L483.3,329.2L481.9,316.0L486.4,316.0L495.8,322.7L505.0,329.2L505.8,330.7L507.5,331.3L508.6,331.9L508.9,333.7L511.9,333.4L511.9,340.1L510.3,342.1L510.0,343.9L507.5,344.4L503.9,344.7L502.8,345.6L501.1,345.9L499.2,345.9L498.6,345.3L496.9,345.6L494.4,346.7L493.9,347.9L491.7,349.0L491.4,349.9L490.3,350.5L488.9,349.9L488.1,350.7L487.8,352.7L485.6,355.0L485.6,355.9L484.7,357.0L485.0,358.7L483.9,359.3L483.3,359.5L482.8,358.4L481.9,358.7L481.1,359.5L478.9,359.5L478.1,359.0L476.9,358.4L476.9,357.6L476.1,357.6L476.1,356.7L476.7,355.9L475.6,354.7L475.3,353.9L474.7,353.3L473.3,353.6L472.5,353.9L471.7,354.7L470.6,354.4L469.7,353.6L468.6,353.9L468.1,353.0ZM452.5,328.1L453.3,327.2L464.2,327.2L463.6,322.7L464.2,321.2L466.9,320.9L466.7,313.2L475.8,313.2L475.8,308.6L486.4,316.0L481.9,316.0L483.3,329.2L484.7,341.8L484.7,344.2L473.6,344.2L473.1,344.7L471.9,344.7L470.3,345.3L468.6,344.4L467.2,346.2L466.1,346.7L464.4,344.7L462.8,342.7L460.8,341.8L459.4,341.0L458.1,341.0L456.7,341.5L455.3,341.3L454.2,342.4L453.9,340.7L454.7,339.2L455.3,336.6L454.7,333.7L454.4,332.2L454.7,330.7L454.2,329.2L452.5,328.1ZM507.5,370.2L505.3,370.8L504.4,368.8L504.7,362.4L504.2,361.8L503.9,360.4L503.1,359.3L502.2,358.4L502.5,357.0L503.3,356.7L503.9,355.6L505.3,355.3L506.1,354.4L506.9,353.6L507.8,353.6L510.0,355.0L510.0,356.1L510.6,357.8L510.0,359.0L510.3,359.5L508.9,361.5L508.1,362.4L507.5,364.0L507.5,365.7L507.5,370.2ZM541.4,322.4L541.9,327.2L543.1,328.1L544.2,329.8L543.6,331.0L542.5,337.2L542.2,341.0L538.9,343.6L537.5,347.3L538.9,348.5L538.9,350.2L540.6,350.5L540.3,351.6L539.4,352.7L536.9,349.6L534.2,351.3L531.9,350.5L530.6,350.2L529.7,350.7L528.1,350.5L526.4,351.6L525.0,351.9L521.7,350.5L520.3,351.0L518.9,351.0L517.8,349.9L515.0,348.7L512.2,349.3L511.4,349.9L511.1,351.3L510.3,352.5L510.0,355.0L507.8,353.6L506.9,353.6L506.1,354.4L506.1,352.5L502.8,351.6L502.8,350.5L501.1,348.5L500.8,347.3L501.1,345.9L502.8,345.6L503.9,344.7L507.5,344.4L510.0,343.9L510.3,342.1L511.9,340.1L511.9,333.4L515.8,332.2L523.9,326.3L533.3,320.6L537.8,322.1L539.2,323.6L541.4,322.4ZM540.3,351.6L541.4,353.6L541.7,355.3L541.4,357.3L543.1,359.8L541.4,359.8L540.6,360.1L539.4,359.8L538.9,361.2L540.3,362.6L541.7,363.2L541.9,364.3L542.8,366.3L542.5,367.1L541.1,369.9L540.3,370.5L540.3,372.4L540.6,373.8L540.3,374.7L541.7,376.1L541.7,376.9L542.8,378.6L544.2,379.4L544.2,380.5L544.4,381.3L544.2,383.0L541.9,382.2L539.7,381.6L536.4,381.3L534.4,381.6L532.8,381.3L531.4,381.3L526.7,381.3L527.2,379.1L526.1,377.5L524.7,376.9L524.2,375.5L523.6,375.2L524.4,372.4L525.6,369.9L528.1,368.2L529.2,368.0L530.8,369.4L532.5,368.2L532.8,367.1L533.6,366.0L533.9,364.6L535.6,363.5L536.1,361.5L536.7,360.9L536.9,359.3L537.8,357.6L540.0,355.3L540.3,354.4L539.4,352.7L539.4,351.9L540.3,351.6ZM502.5,357.0L502.2,358.4L503.1,359.3L503.9,360.4L504.2,361.8L504.7,362.4L504.4,368.8L505.3,370.8L503.1,371.3L502.2,370.2L501.7,368.5L501.4,367.1L501.9,364.6L501.4,363.5L501.1,361.2L501.1,359.3L500.0,357.8L500.0,357.0L502.5,357.0ZM500.0,357.0L500.0,357.8L501.1,359.3L501.1,361.2L501.4,363.5L501.9,364.6L501.4,367.1L501.7,368.5L502.2,370.2L503.1,371.3L498.6,373.0L496.9,373.8L494.4,374.7L491.9,373.8L492.2,372.7L491.1,370.2L491.7,367.1L492.8,364.9L492.2,360.9L491.7,358.7L491.9,357.0L496.7,357.0L497.8,357.3L498.9,356.7L500.0,357.0ZM477.8,359.3L478.9,359.5L481.1,359.5L481.4,358.7L482.8,358.4L483.3,359.5L483.9,359.3L485.0,358.7L486.1,359.3L486.7,360.4L488.1,360.9L488.9,360.1L490.3,360.1L492.2,360.9L492.8,364.9L491.7,367.1L491.1,370.2L492.2,372.7L491.9,373.8L490.8,373.8L488.9,373.3L487.2,373.3L483.9,373.8L481.9,374.7L479.2,375.8L478.9,373.3L478.9,371.9L477.8,370.8L476.9,370.5L476.1,369.6L476.7,368.5L476.4,367.1L476.9,366.3L477.2,365.2L478.3,363.8L477.5,361.5L476.9,360.4L477.2,359.5L477.8,359.3ZM461.9,352.5L463.3,352.5L465.3,353.3L466.1,352.7L467.5,353.0L468.1,353.9L469.4,353.6L470.6,354.4L471.7,354.7L472.5,353.9L473.3,353.6L474.2,353.3L475.3,353.9L475.6,354.7L476.7,355.9L476.1,356.7L476.1,357.6L476.9,357.6L476.9,358.4L477.8,359.3L476.9,360.4L477.5,361.5L478.3,363.8L477.2,364.0L476.9,366.3L475.8,366.3L475.3,367.4L473.9,366.8L474.2,365.7L472.8,364.0L472.2,364.3L470.8,364.6L470.8,363.5L470.3,362.6L470.0,360.7L469.2,359.8L466.9,359.8L466.1,360.1L465.0,360.9L464.7,361.8L463.3,362.9L461.9,361.2L460.8,360.1L460.3,359.8L459.4,359.3L459.2,357.8L458.9,357.3L458.1,357.0L459.2,355.6L460.8,355.0L461.9,354.7L461.7,353.9L461.9,352.5ZM453.6,353.0L455.3,352.7L456.1,352.7L456.9,352.5L461.9,352.5L461.9,353.6L461.9,354.7L460.8,355.0L460.0,355.6L458.1,357.0L456.4,355.6L455.3,355.6L454.7,354.7L453.9,353.6L453.6,353.0ZM476.7,366.3L476.7,368.5L476.1,369.6L476.9,370.5L477.8,370.8L478.9,371.9L479.2,373.0L478.6,375.5L475.0,374.4L472.5,372.2L470.0,370.8L468.3,368.8L468.9,368.0L470.3,365.7L471.7,364.3L472.8,364.0L474.2,365.7L473.9,366.8L474.4,367.4L475.8,366.3L476.7,366.3ZM463.3,362.9L464.7,361.8L465.0,360.9L465.6,360.4L466.9,359.8L469.2,359.8L470.0,360.7L470.6,361.8L470.8,363.5L470.8,364.6L470.3,365.7L469.2,367.1L468.3,368.8L465.6,367.4L464.2,366.0L463.6,364.9L463.3,362.9ZM485.0,358.7L484.7,357.0L485.6,355.9L485.6,355.0L487.8,352.7L488.1,350.7L488.9,349.9L490.3,350.5L491.4,349.9L491.7,349.0L493.9,347.9L494.4,346.7L496.9,345.6L498.6,345.3L499.2,345.9L501.1,345.9L500.8,347.3L501.1,348.5L502.8,350.5L502.8,351.6L506.1,352.5L506.1,354.4L505.3,355.3L503.9,355.6L503.3,356.7L502.5,357.0L500.0,357.0L498.9,356.7L497.8,357.3L496.7,357.0L491.9,357.0L491.7,358.7L492.2,360.9L490.3,360.1L488.9,360.1L488.1,360.9L486.7,360.4L486.1,359.3L485.0,358.7ZM531.4,381.3L532.8,381.3L534.4,381.6L536.1,381.3L536.1,382.7L536.9,384.1L538.9,383.9L539.7,384.4L538.3,387.7L539.7,389.4L540.0,391.4L539.7,393.3L538.9,394.7L536.4,394.4L535.0,393.0L534.7,394.4L532.8,394.7L531.9,395.5L533.1,397.2L530.8,398.9L528.1,396.1L526.1,393.6L524.4,390.8L524.4,390.0L525.0,389.1L525.8,386.9L526.4,385.0L527.2,384.7L531.4,384.7L531.4,381.3ZM526.7,381.3L531.4,381.3L531.4,384.7L527.2,384.7L526.4,385.0L526.7,381.3ZM591.1,413.4L593.6,414.0L594.2,414.8L595.3,416.2L596.1,419.9L595.3,422.2L596.1,425.9L596.9,425.9L598.1,426.7L599.2,428.7L599.4,432.5L598.1,433.1L597.2,435.1L595.6,433.4L595.3,431.3L595.8,429.9L595.8,428.7L594.7,428.2L593.9,428.5L592.2,427.0L590.8,426.2L591.7,423.6L592.5,422.5L591.9,420.2L592.5,417.9L593.1,417.1L592.2,414.8L591.1,413.4ZM596.1,419.9L598.1,419.6L601.4,420.5L602.2,420.2L604.2,420.2L605.0,419.3L606.7,419.3L609.7,418.2L611.9,416.5L612.5,417.9L612.2,420.8L612.8,423.0L612.8,427.6L613.3,429.0L612.5,431.0L611.4,433.1L609.7,434.8L606.9,436.0L603.9,437.4L600.8,440.6L599.7,440.9L597.8,443.3L596.7,443.9L596.4,445.9L597.8,448.3L598.3,449.8L598.9,450.7L598.6,453.7L598.3,454.9L598.9,455.5L598.6,456.8L597.2,458.0L595.0,458.9L591.7,460.7L590.6,461.7L590.8,462.9L591.1,464.7L589.2,464.7L588.9,463.5L588.3,462.0L588.3,461.0L588.6,457.7L588.1,455.5L586.7,451.3L589.4,447.7L590.3,445.6L591.1,443.6L590.6,442.7L590.8,440.6L591.1,438.6L591.1,434.8L589.7,433.9L588.6,433.6L587.8,433.1L586.7,432.5L584.2,432.5L584.2,431.3L583.9,429.3L592.2,427.0L593.9,428.5L594.7,428.2L595.8,428.7L595.8,429.9L595.3,431.3L595.6,433.4L597.2,435.1L598.1,433.1L599.4,432.5L599.2,428.7L598.1,426.7L596.9,425.9L596.1,425.9L595.3,422.2L596.1,419.9ZM589.2,464.7L588.6,466.3L586.9,466.6L585.3,464.7L585.3,463.8L586.1,462.6L586.1,461.7L586.9,461.7L588.3,462.0L588.9,463.5L589.2,464.7ZM584.7,394.4L584.7,395.5L585.3,396.1L584.7,397.7L583.6,399.1L582.8,400.3L581.4,400.3L581.4,396.9L580.6,395.5L582.2,395.8L583.1,394.1L584.7,394.4ZM637.5,422.7L638.3,423.9L639.2,425.9L639.4,429.3L640.3,430.5L640.0,431.9L639.4,432.8L638.6,431.0L638.1,431.9L638.6,434.2L638.3,435.4L637.5,436.0L637.2,438.6L636.1,441.8L634.7,445.9L633.1,451.6L631.9,455.8L630.8,459.2L628.6,460.1L626.1,461.3L624.4,460.4L622.2,459.5L621.7,458.0L621.4,455.2L620.3,452.8L620.3,450.7L620.6,448.3L621.9,448.0L623.3,444.8L623.6,442.7L622.8,441.5L622.2,439.5L622.2,436.8L623.1,435.4L623.3,433.4L624.7,433.4L626.4,432.8L627.5,432.2L628.6,432.2L630.3,430.5L632.5,428.7L633.3,427.3L633.1,426.2L634.2,426.5L635.6,424.5L635.8,422.7L636.7,421.3L637.5,422.7ZM475.8,308.6L475.8,304.1L480.3,301.6L483.1,301.3L485.6,300.3L486.4,298.7L489.7,297.4L490.0,295.1L491.4,294.8L492.8,293.5L496.4,292.8L496.9,291.5L496.1,290.9L495.3,287.5L495.0,285.5L493.9,283.2L496.7,281.5L499.7,280.8L501.4,279.4L504.2,278.4L508.9,277.7L513.3,277.3L514.7,278.0L517.5,276.6L520.3,276.6L521.4,277.3L523.3,277.3L522.8,279.0L523.3,282.1L522.5,284.9L520.8,286.9L521.1,289.5L523.3,291.5L525.3,293.5L526.4,299.4L527.2,302.2L527.5,303.5L526.9,306.4L527.2,307.6L526.7,309.5L526.9,311.4L525.8,312.6L527.5,314.8L527.5,316.3L528.6,317.8L530.0,317.2L532.2,318.7L533.3,320.6L523.9,326.3L515.8,332.2L511.9,333.4L508.9,333.7L508.6,331.9L507.5,331.3L505.8,330.7L505.0,329.2L495.8,322.7L486.4,316.0L475.8,308.6ZM608.9,293.2L607.8,289.2L613.9,285.9L615.0,281.8L614.7,279.0L616.1,278.4L617.5,276.3L618.9,275.6L621.9,275.9L623.1,277.0L624.4,276.3L626.1,280.4L628.1,281.5L628.3,283.5L626.9,284.9L626.1,287.2L628.1,290.5L631.4,292.2L632.8,294.8L632.5,297.1L633.3,298.7L635.0,300.6L633.3,300.3L631.4,300.0L629.4,303.2L624.2,302.9L616.4,296.4L612.2,294.2L608.9,293.2ZM785.0,353.6L784.2,350.2L786.1,347.9L789.7,347.3L792.2,347.6L794.4,348.7L795.8,346.7L798.3,347.9L798.9,349.9L798.6,353.3L793.9,355.3L795.0,357.0L792.2,357.3L789.7,358.4L787.5,358.1L786.4,356.4L785.0,353.6ZM778.1,329.8L776.4,330.4L775.0,331.6L773.1,331.9L771.7,335.1L770.6,335.7L771.9,338.1L773.6,340.4L774.7,342.1L773.6,344.7L772.8,345.3L773.3,346.7L775.3,349.0L775.6,350.5L775.6,351.9L776.7,354.4L775.0,357.0L773.9,360.1L773.6,357.8L774.4,355.9L773.3,354.2L773.6,351.0L772.5,349.6L771.7,346.2L771.1,342.4L770.0,340.1L768.1,341.5L765.0,343.6L763.3,343.3L761.7,342.7L762.5,338.9L761.9,336.3L759.7,332.8L760.3,331.9L758.6,331.3L756.7,328.9L756.4,326.6L757.5,327.2L757.5,325.1L758.9,324.2L758.6,323.0L759.2,322.1L759.2,318.7L761.4,319.3L762.8,316.9L762.8,315.4L764.4,312.9L764.2,311.0L767.8,308.9L769.7,309.5L769.7,307.6L770.6,307.0L770.3,305.7L771.9,305.7L772.8,307.6L774.2,308.2L774.2,310.7L774.2,313.2L771.4,315.7L771.1,319.3L774.2,318.7L774.7,321.8L776.4,322.4L775.6,324.8L777.8,326.0L778.9,326.3L780.8,325.7L781.1,326.9L778.6,328.7L778.1,329.8ZM862.8,257.5L862.2,257.8L861.1,259.3L860.3,260.4L860.3,263.0L858.9,263.8L858.3,264.5L857.2,265.6L855.6,266.3L854.2,267.0L854.2,268.8L855.0,269.6L856.7,271.3L856.1,272.1L855.0,272.4L853.1,272.4L851.9,274.2L850.6,274.2L849.2,273.8L848.1,274.5L847.2,273.8L846.4,273.1L847.2,271.7L847.8,271.0L848.3,268.5L846.4,267.4L845.3,266.7L847.5,264.1L850.6,262.3L852.5,259.7L853.6,260.8L856.1,260.8L855.8,259.0L860.0,257.5L861.1,255.2L862.8,257.5ZM757.5,325.1L757.5,327.2L756.4,326.6L756.7,328.9L755.8,327.5L755.6,326.0L755.0,324.5L753.9,322.7L751.4,322.7L751.7,323.9L750.8,325.7L749.4,325.1L748.3,325.1L747.2,324.8L746.9,322.4L745.8,320.2L746.4,318.4L744.7,317.5L745.3,316.3L746.9,315.4L745.0,313.5L746.1,311.7L748.3,312.9L749.4,312.9L749.7,315.1L752.5,315.7L755.0,315.7L756.7,316.0L755.3,318.7L754.2,318.7L753.3,320.6L754.7,322.1L755.3,320.2L757.5,325.1ZM754.7,307.3L755.8,308.2L755.6,310.4L753.3,310.4L751.1,310.1L749.2,310.7L746.7,309.5L748.6,306.7L750.0,305.7L751.9,306.4L753.6,306.7L754.7,307.3ZM744.7,307.0L744.4,308.6L745.0,310.4L744.7,311.7L742.2,311.7L738.9,311.0L736.9,310.7L735.3,309.2L731.4,308.6L727.8,307.0L725.3,305.4L722.5,304.1L723.6,301.3L725.3,299.7L726.4,299.0L728.6,300.0L731.4,301.9L733.1,302.6L733.9,304.1L736.1,304.8L738.3,306.0L741.7,306.7L744.7,307.0ZM716.1,282.1L713.6,284.9L710.6,285.5L706.1,284.9L704.7,286.2L705.8,289.2L706.9,291.2L709.2,292.8L706.7,294.8L706.7,297.1L703.9,300.3L702.2,303.5L699.4,307.0L696.1,306.7L693.1,310.1L695.0,311.4L695.3,313.8L696.7,315.4L697.2,317.8L691.1,317.8L689.4,319.9L687.2,319.3L686.4,316.9L684.4,314.8L679.2,315.4L674.7,315.4L670.8,315.7L671.9,312.3L675.8,310.4L675.6,309.2L674.4,308.6L674.2,305.7L671.7,304.5L670.6,302.6L669.2,301.0L673.6,302.6L676.4,301.9L678.1,302.6L678.6,301.6L680.6,301.9L684.2,300.6L684.4,298.1L685.8,296.1L688.1,296.1L688.3,295.1L690.6,294.8L691.4,295.1L692.5,294.2L692.5,292.2L693.6,290.2L695.3,289.2L694.2,287.2L696.9,287.2L697.8,286.2L697.5,284.9L698.9,283.2L698.6,281.5L698.1,280.1L699.4,278.7L702.5,278.0L705.8,277.7L707.2,277.0L708.9,276.6L710.8,278.0L711.7,280.8L716.1,282.1ZM684.7,275.6L686.4,275.6L688.3,276.6L689.2,277.0L691.4,275.9L692.2,276.3L693.1,274.9L694.7,274.9L695.6,273.1L696.7,271.7L698.1,272.4L697.8,273.5L698.3,276.6L699.4,278.0L700.6,277.3L701.7,277.0L703.6,275.2L705.6,275.6L708.3,275.6L708.9,276.6L707.2,277.0L705.8,277.7L702.5,278.0L699.4,278.7L698.1,280.1L698.6,281.5L698.9,283.2L697.5,284.9L697.8,286.2L696.9,287.2L694.2,287.2L695.3,289.2L693.6,290.2L692.5,292.2L692.5,294.2L691.4,295.1L690.6,294.8L688.3,295.1L688.1,296.1L685.8,296.1L684.4,298.1L684.2,300.6L680.6,301.9L678.6,301.6L678.1,302.6L676.4,301.9L673.6,302.6L669.2,301.0L671.7,298.1L671.4,295.8L669.2,295.5L669.2,293.2L668.1,290.5L669.4,288.9L668.1,288.2L668.9,285.9L670.0,281.8L672.8,282.8L675.0,282.5L675.6,280.8L677.8,280.4L679.2,279.4L679.7,276.6L682.2,275.9L682.5,274.5L683.9,275.6L684.7,275.6ZM645.8,259.7L646.9,258.6L650.3,257.8L652.2,259.0L654.2,261.6L655.6,261.6L658.6,261.6L658.1,259.7L660.6,258.2L662.8,255.9L666.7,258.2L666.9,261.2L668.1,261.9L670.8,261.6L671.9,262.3L673.3,266.0L676.4,268.5L678.3,270.3L681.1,272.1L684.7,273.5L684.7,275.6L682.5,274.5L682.2,275.9L679.7,276.6L679.2,279.4L677.8,280.4L675.6,280.8L675.0,282.5L672.8,282.8L670.0,281.8L669.7,278.7L667.8,278.7L664.4,275.6L662.2,275.2L659.2,273.5L657.2,273.1L656.1,273.8L654.2,273.5L652.2,275.6L649.7,276.3L649.2,273.8L649.7,269.9L647.5,268.8L648.3,266.3L646.4,266.3L646.9,263.0L649.7,264.1L651.9,262.7L650.0,260.4L649.2,258.6L646.9,259.3L646.7,262.3L645.8,259.7ZM635.0,300.6L633.3,298.7L633.3,297.1L632.8,294.8L631.4,292.2L628.1,290.5L626.1,287.2L626.9,284.9L628.3,283.5L628.1,281.5L626.1,280.4L624.4,276.3L622.8,273.5L623.3,272.4L622.5,268.5L624.4,267.4L625.0,268.8L626.4,270.3L628.1,271.0L629.2,270.6L632.5,268.1L633.6,267.8L634.4,268.8L633.3,270.6L635.0,272.4L636.7,274.9L639.2,275.6L641.1,277.3L645.3,278.0L649.4,277.0L652.2,275.6L654.2,273.5L656.1,273.8L657.2,273.1L659.2,273.5L662.2,275.2L664.4,275.6L667.8,278.7L669.7,278.7L670.0,281.8L668.9,285.9L668.1,288.2L669.4,288.9L668.1,290.5L669.2,293.2L669.2,295.5L671.4,295.8L671.7,298.1L669.2,301.0L670.6,302.6L671.7,304.5L674.2,305.7L674.4,308.6L675.6,309.2L675.8,310.4L671.9,312.3L670.8,315.7L665.6,314.8L662.5,314.1L659.4,313.8L658.3,309.8L656.9,309.5L654.7,309.8L651.9,311.4L648.6,310.4L645.8,307.9L643.1,307.0L641.4,304.1L639.2,300.0L637.8,300.3L635.8,299.4L635.0,300.6ZM599.2,291.5L599.4,289.5L600.3,287.9L601.7,286.5L601.1,285.2L600.0,285.2L599.7,282.5L600.3,281.1L601.1,280.4L601.9,279.4L601.9,277.7L603.1,278.4L606.1,277.3L607.5,278.0L609.7,278.0L613.1,276.6L614.4,276.6L617.5,276.3L616.1,278.4L614.7,279.0L615.0,281.8L613.9,285.9L607.8,289.2L602.2,292.8L599.2,291.5ZM558.3,263.4L557.5,264.9L557.2,266.0L556.1,267.8L555.6,266.7L553.9,265.2L553.6,263.8L553.9,261.2L554.2,260.1L553.6,258.2L554.7,256.3L555.8,256.7L556.4,257.8L557.2,259.3L556.9,260.8L557.2,262.3L558.3,263.4ZM960.6,447.7L962.8,449.5L964.2,451.0L963.1,451.6L961.7,450.7L959.7,449.5L957.8,447.7L956.1,445.6L955.6,444.8L956.9,444.8L958.3,445.9L959.7,446.8L960.6,447.7ZM727.2,366.8L726.7,369.6L725.6,370.5L723.1,371.0L721.9,368.8L721.4,364.9L722.5,360.4L724.4,361.8L725.8,363.8L727.2,366.8ZM840.6,359.8L841.1,359.0L841.4,357.3L843.1,357.3L842.5,359.0L844.7,356.4L844.4,359.0L843.3,360.1L842.5,361.8L841.7,362.6L840.0,360.7L840.6,359.8ZM851.1,364.3L851.4,366.0L851.4,367.7L850.6,370.2L849.4,367.4L848.3,368.8L849.2,371.0L848.3,372.2L845.0,370.5L844.2,368.5L845.0,367.1L843.3,366.0L842.5,367.1L841.1,366.8L839.2,368.5L838.6,367.7L839.7,365.4L841.4,364.6L843.1,363.5L843.9,364.9L846.1,364.0L846.7,362.6L848.6,362.6L848.3,360.4L850.6,361.8L850.8,363.2L851.1,364.3ZM839.7,336.3L839.4,337.5L840.3,339.5L839.7,341.8L838.1,343.0L837.5,345.3L838.1,347.6L839.7,347.9L840.8,347.6L844.4,349.0L844.2,350.7L845.0,351.3L844.7,352.7L842.5,351.3L841.4,349.6L840.8,350.7L838.9,349.0L836.4,349.6L835.0,348.7L835.3,347.6L836.1,347.0L835.3,346.2L835.0,347.3L833.6,345.6L833.1,344.4L833.1,341.5L834.2,342.7L834.4,338.1L835.3,335.4L836.9,335.4L838.6,336.3L839.4,335.4L839.7,336.3ZM848.6,353.6L849.4,357.0L847.2,356.1L847.2,357.0L848.1,358.7L846.7,359.5L846.7,357.6L845.8,357.3L845.3,355.6L846.9,355.9L846.9,354.7L845.3,352.5L847.8,352.7L848.6,353.6ZM601.1,347.3L600.8,346.2L602.2,341.8L602.5,339.8L603.3,338.9L605.3,338.6L606.7,336.9L608.3,340.4L609.2,343.0L610.6,344.4L614.4,347.0L615.8,348.7L617.5,350.5L618.3,351.3L619.7,352.2L618.9,352.7L617.8,352.7L616.7,351.6L615.6,349.9L614.4,349.0L613.6,348.2L611.1,347.0L609.2,347.0L608.6,346.5L606.9,347.0L605.3,345.6L604.4,347.9L601.1,347.3ZM338.3,445.1L339.2,446.5L339.2,450.7L341.9,451.3L343.1,450.7L345.0,451.6L345.6,452.5L345.8,455.2L346.1,456.4L347.2,456.4L348.1,455.8L349.2,456.4L349.2,458.3L348.9,460.1L348.3,461.7L347.8,464.4L345.3,466.9L343.1,467.2L340.0,466.9L337.2,466.0L340.0,461.3L339.4,460.1L336.7,458.9L333.3,456.4L331.1,456.1L325.8,451.0L326.9,447.7L326.9,445.9L328.3,443.3L333.3,442.4L335.8,442.7L338.3,444.2L338.3,445.1ZM644.4,334.0L646.7,338.9L647.5,340.7L645.6,341.5L645.0,343.0L645.0,343.9L642.2,345.0L637.8,346.5L635.3,348.5L633.9,348.7L633.1,348.5L631.7,349.6L629.7,350.2L627.5,350.5L626.1,351.3L625.0,352.2L623.6,352.2L622.8,352.5L620.8,352.5L620.0,350.7L620.3,349.0L619.7,348.2L619.2,346.2L618.3,345.0L618.6,343.6L618.9,341.8L620.0,340.7L619.7,339.5L620.6,338.1L621.7,338.9L622.5,338.6L625.6,338.6L628.9,339.2L629.7,338.9L630.6,340.1L631.9,339.5L633.9,336.3L636.4,335.1L644.4,334.0ZM364.7,576.3L366.1,576.3L370.3,576.3L374.4,576.3L378.1,576.3L379.2,576.3L379.4,576.3L379.7,576.3L375.3,576.3L370.8,576.3L365.6,576.3L359.7,576.3L353.1,576.3L349.4,576.3L350.0,576.3L355.8,576.3L358.3,576.3L360.0,576.3L361.4,576.3L363.1,576.3L364.7,576.3ZM315.8,576.3L322.2,576.3L328.1,576.3L330.3,576.3L331.7,576.3L334.4,576.3L333.6,576.3L332.8,576.3L326.9,576.3L320.8,576.3L317.5,576.3L315.8,576.3ZM294.7,576.3L296.7,576.3L299.7,576.3L300.6,576.3L300.8,576.3L300.8,576.3L302.2,576.3L304.7,576.3L306.4,576.3L306.9,576.3L308.1,576.3L309.2,576.3L309.7,576.3L310.3,576.3L309.7,576.3L308.9,576.3L305.6,576.3L302.5,576.3L298.9,576.3L300.3,576.3L296.9,576.3L293.9,576.3L291.7,576.3L291.7,576.3L294.7,576.3ZM215.8,576.3L217.5,576.3L221.1,576.3L225.0,576.3L228.1,576.3L231.1,576.3L232.8,576.3L230.6,576.3L227.2,576.3L223.9,576.3L220.0,576.3L217.2,576.3L215.8,576.3ZM159.4,576.3L160.0,576.3L163.3,576.3L166.9,576.3L170.3,576.3L168.6,576.3L166.1,576.3L162.2,576.3L159.4,576.3ZM45.3,576.3L46.9,576.3L52.2,576.3L55.0,576.3L56.9,576.3L57.8,576.3L52.5,576.3L48.9,576.3L47.2,576.3L45.3,576.3ZM1000.0,576.3L1002.5,576.3L1007.5,576.3L1010.8,576.3L1015.6,576.3L1019.2,576.3L1027.8,576.3L1030.6,576.3L1031.9,576.3L1036.1,576.3L1043.9,576.3L1050.3,576.3L1060.8,576.3L1068.9,576.3L1080.8,576.3L1087.5,576.3L1094.7,576.3L1102.5,576.3L1103.1,576.3L1092.2,576.3L1083.1,576.3L1080.8,576.3L1073.3,576.3L1073.9,576.3L1075.0,576.3L1075.8,576.3L1075.3,576.3L1070.8,576.3L1068.6,576.3L1064.4,576.3L1071.1,576.3L1077.5,576.3L1081.7,576.3L1086.4,576.3L1091.1,576.3L1093.3,576.3L1092.2,576.3L1088.6,576.3L1084.7,576.3L1078.9,576.3L1073.9,576.3L1068.6,576.3L1066.7,576.3L1063.1,576.3L1060.8,576.3L1060.0,576.3L1061.4,576.3L1063.9,576.3L1068.6,576.3L1073.1,576.3L1075.3,576.3L1079.7,576.3L1083.3,576.3L1086.9,576.3L1090.0,576.3L1094.2,576.3L1094.2,576.3L1093.1,576.3L1093.9,576.3L1097.5,576.3L1099.2,576.3L1103.3,576.3L1106.7,576.3L1110.6,576.3L1114.2,576.3L1118.1,576.3L1121.1,576.3L1124.4,576.3L1126.7,576.3L1128.6,576.3L1132.5,576.3L1136.4,576.3L1140.0,576.3L1143.9,576.3L1147.5,576.3L1151.7,576.3L1155.6,576.3L1159.4,576.3L1163.6,576.3L1167.5,576.3L1170.3,576.3L1173.6,576.3L1177.2,576.3L1180.6,576.3L1183.6,576.3L1185.3,576.3L1186.4,576.3L1188.1,576.3L1190.8,576.3L1194.2,576.3L1198.1,576.3L1201.1,576.3L1205.3,576.3L1208.6,576.3L1212.8,576.3L1216.7,576.3L1220.6,576.3L1221.9,576.3L1220.0,576.3L1218.6,576.3L1215.3,576.3L1213.6,576.3L1213.1,576.3L1211.9,576.3L1214.2,576.3L1217.8,576.3L1221.4,576.3L1224.7,576.3L1227.5,576.3L1228.6,576.3L1232.5,576.3L1236.1,576.3L1239.7,576.3L1243.3,576.3L1246.1,576.3L1249.7,576.3L1252.2,576.3L1254.4,576.3L1257.5,576.3L1261.1,576.3L1263.3,576.3L1266.9,576.3L1270.3,576.3L1273.6,576.3L1275.8,576.3L1276.9,576.3L1279.7,576.3L1283.6,576.3L1286.4,576.3L1288.3,576.3L1291.9,576.3L1294.7,576.3L1297.8,576.3L1301.1,576.3L1305.0,576.3L1308.6,576.3L1311.1,576.3L1312.8,576.3L1313.6,576.3L1313.1,576.3L1312.2,576.3L1311.4,576.3L1310.6,576.3L1309.7,576.3L1309.7,576.3L1310.0,576.3L1311.1,576.3L1312.2,576.3L1312.8,576.3L1312.2,576.3L1311.9,576.3L1313.1,576.3L1314.7,576.3L1316.4,576.3L1318.3,576.3L1320.6,576.3L1321.7,576.3L1323.3,576.3L1325.0,576.3L1327.8,576.3L1329.4,576.3L1331.4,576.3L1333.6,576.3L1335.6,576.3L1337.2,576.3L1339.4,576.3L1341.1,576.3L1340.0,576.3L1337.2,576.3L1336.1,576.3L1333.9,576.3L1331.7,576.3L1329.7,576.3L1327.8,576.3L1326.4,576.3L1326.1,576.3L1326.1,576.3L1327.5,576.3L1325.6,576.3L1323.1,576.3L1321.4,576.3L1319.7,576.3L1318.1,576.3L1317.5,576.3L1318.6,576.3L1320.0,576.3L1322.2,576.3L1324.4,576.3L1325.6,576.3L1326.1,576.3L1326.9,576.3L1328.3,576.3L1329.2,576.3L1329.4,576.3L1330.3,576.3L1330.6,576.3L1331.4,576.3L1331.1,576.3L1329.4,576.3L1327.8,576.3L1324.2,576.3L1323.1,576.3L1321.1,576.3L1316.9,576.3L1313.3,576.3L1310.0,576.3L1306.1,576.3L1303.9,576.3L1299.4,576.3L1294.4,576.3L1290.0,576.3L1285.6,576.3L1286.4,576.3L1290.6,576.3L1293.6,576.3L1295.3,576.3L1292.2,576.3L1287.5,576.3L1283.6,576.3L1283.3,576.3L1283.3,576.3L1286.7,576.3L1287.2,576.3L1290.6,576.3L1296.7,576.3L1301.7,576.3L1305.6,576.3L1310.6,576.3L1317.5,576.3L1324.2,576.3L1328.9,576.3L1334.2,576.3L1336.9,576.3L1338.3,576.3L1341.7,576.3L1346.1,576.3L1351.1,576.3L1356.9,576.3L1361.7,576.3L1368.6,576.3L1375.6,576.3L1381.1,576.3L1382.8,576.3L1386.7,576.3L1393.9,576.3L1399.2,576.3L1404.4,576.3L1410.3,576.3L1416.4,576.3L1420.6,576.3L1418.6,576.3L1417.5,576.3L1417.5,576.3L1412.2,576.3L1406.4,576.3L1401.1,576.3L1400.3,576.3L1400.6,576.3L1401.9,576.3L1405.8,576.3L1410.6,576.3L1413.9,576.3L1417.2,576.3L1419.7,576.3L1423.6,576.3L1427.2,576.3L1429.2,576.3L1433.6,576.3L1437.5,576.3L1441.1,576.3L1444.4,576.3L1447.5,576.3L1451.4,576.3L1453.9,576.3L1456.4,576.3L1457.2,576.3L1454.2,576.3L1455.3,576.3L1457.2,576.3L1460.0,576.3L1463.1,576.3L1465.8,576.3L1468.1,576.3L1469.4,576.3L1471.4,576.3L1474.7,576.3L1476.1,576.3L1479.4,576.3L1479.4,576.3L1480.8,576.3L1483.9,576.3L1484.7,576.3L1488.1,576.3L1491.7,576.3L1495.0,576.3L1498.1,576.3L1499.4,576.3L502.5,576.3L505.3,576.3L508.3,576.3L511.4,576.3L514.4,576.3L517.5,576.3L519.7,576.3L521.4,576.3L523.6,576.3L526.4,576.3L528.6,576.3L530.0,576.3L533.3,576.3L534.4,576.3L537.2,576.3L540.8,576.3L541.9,576.3L544.2,576.3L547.2,576.3L550.6,576.3L553.6,576.3L556.7,576.3L559.7,576.3L560.8,576.3L562.8,576.3L565.8,576.3L568.9,576.3L572.2,576.3L575.3,576.3L578.1,576.3L581.1,576.3L583.3,576.3L586.1,576.3L588.9,576.3L591.1,576.3L592.5,576.3L594.2,576.3L596.9,576.3L598.1,576.3L600.6,576.3L603.3,576.3L605.3,576.3L607.2,576.3L610.3,576.3L611.1,576.3L613.6,576.3L616.7,576.3L619.2,576.3L622.5,576.3L624.7,576.3L626.9,576.3L629.2,576.3L631.7,576.3L634.2,576.3L636.1,576.3L638.6,576.3L641.1,576.3L641.4,576.3L643.9,576.3L646.1,576.3L648.9,576.3L651.4,576.3L653.9,576.3L656.7,576.3L658.9,576.3L659.2,576.3L661.4,576.3L663.1,576.3L666.4,576.3L668.3,576.3L670.6,576.3L673.3,576.3L675.6,576.3L678.1,576.3L680.6,576.3L683.3,576.3L685.8,576.3L688.6,576.3L691.4,576.3L693.6,576.3L693.3,576.3L690.6,576.3L688.3,576.3L688.6,576.3L691.9,576.3L691.4,576.3L690.0,576.3L688.6,576.3L690.8,576.3L694.2,576.3L697.2,576.3L698.9,576.3L699.7,576.3L701.4,576.3L703.1,576.3L703.6,576.3L705.3,576.3L706.9,576.3L710.0,576.3L712.8,576.3L715.6,576.3L716.9,576.3L717.8,576.3L719.7,576.3L722.5,576.3L724.7,576.3L726.4,576.3L728.1,576.3L730.0,576.3L732.8,576.3L735.3,576.3L738.1,576.3L741.1,576.3L743.1,576.3L744.4,576.3L745.6,576.3L746.7,576.3L749.2,576.3L751.7,576.3L754.4,576.3L757.2,576.3L759.7,576.3L761.7,576.3L763.9,576.3L766.1,576.3L768.6,576.3L771.7,576.3L774.2,576.3L776.9,576.3L778.9,576.3L780.3,576.3L782.2,576.3L785.6,576.3L787.5,576.3L789.4,576.3L791.4,576.3L795.0,576.3L797.8,576.3L800.3,576.3L803.3,576.3L806.1,576.3L808.6,576.3L810.3,576.3L813.6,576.3L815.6,576.3L817.8,576.3L819.2,576.3L821.1,576.3L824.2,576.3L826.1,576.3L829.4,576.3L832.8,576.3L835.8,576.3L838.1,576.3L839.7,576.3L842.2,576.3L844.7,576.3L847.8,576.3L850.3,576.3L852.8,576.3L855.3,576.3L857.8,576.3L860.3,576.3L863.3,576.3L866.1,576.3L869.2,576.3L871.9,576.3L874.4,576.3L875.0,576.3L875.3,576.3L876.9,576.3L877.5,576.3L878.3,576.3L879.4,576.3L881.9,576.3L885.0,576.3L888.6,576.3L891.1,576.3L894.7,576.3L897.5,576.3L901.1,576.3L904.2,576.3L906.1,576.3L905.6,576.3L907.2,576.3L910.3,576.3L913.3,576.3L916.9,576.3L920.8,576.3L923.6,576.3L926.7,576.3L928.6,576.3L931.1,576.3L933.1,576.3L935.6,576.3L938.9,576.3L942.2,576.3L943.6,576.3L946.7,576.3L948.9,576.3L951.9,576.3L955.0,576.3L958.1,576.3L961.4,576.3L964.7,576.3L967.8,576.3L970.8,576.3L973.6,576.3L975.6,576.3L975.3,576.3L973.9,576.3L972.5,576.3L971.7,576.3L970.3,576.3L966.7,576.3L965.0,576.3L961.4,576.3L960.0,576.3L958.3,576.3L956.1,576.3L955.0,576.3L954.4,576.3L954.2,576.3L954.2,576.3L955.8,576.3L956.4,576.3L957.5,576.3L962.8,576.3L963.9,576.3L958.9,576.3L954.7,576.3L949.4,576.3L946.9,576.3L946.4,576.3L945.3,576.3L943.9,576.3L947.5,576.3L948.9,576.3L951.4,576.3L954.7,576.3L958.6,576.3L962.8,576.3L969.2,576.3L970.6,576.3L978.6,576.3L981.1,576.3L988.9,576.3L995.3,576.3L1000.0,576.3L1000.0,576.3ZM493.9,283.2L495.0,285.5L495.3,287.5L496.1,290.9L496.9,291.5L496.4,292.8L492.8,293.5L491.4,294.8L490.0,295.1L489.7,297.4L486.4,298.7L485.6,300.3L483.1,301.3L480.3,301.6L475.8,304.1L475.8,307.6L475.6,309.5L473.9,309.5L473.1,310.1L471.7,310.1L470.8,309.8L468.3,310.1L467.5,312.6L466.7,312.9L465.3,316.6L461.4,319.9L460.6,324.2L459.4,325.4L458.9,326.6L452.8,326.9L452.8,325.4L453.9,324.5L454.7,323.0L454.7,322.1L455.6,319.9L457.2,317.8L458.1,317.5L458.9,315.7L458.9,314.1L460.0,312.0L461.7,311.0L463.6,307.9L465.0,306.7L467.5,306.4L469.7,304.1L471.1,303.2L473.3,300.6L472.8,296.4L473.9,293.8L474.2,291.9L475.8,289.9L478.6,288.2L480.8,286.9L482.8,283.5L483.6,281.1L485.6,281.1L487.2,282.8L490.0,282.5L492.8,283.2L493.9,283.2ZM602.5,325.1L591.4,325.1L580.6,325.1L569.4,325.1L569.4,313.8L569.4,302.9L568.6,300.3L569.4,298.1L568.9,296.8L570.0,295.1L573.6,295.1L576.4,296.1L578.9,297.1L580.3,297.4L582.5,296.4L583.6,295.5L586.1,295.1L588.1,295.8L588.9,297.4L589.4,296.1L591.7,297.1L593.9,297.1L595.3,296.4L596.7,301.0L596.9,301.9L596.1,303.2L595.6,305.7L595.0,307.3L594.2,307.9L593.3,306.7L591.9,305.4L590.0,300.6L590.8,304.5L592.5,307.6L594.7,312.6L595.8,314.1L596.7,316.0L599.2,319.3L598.6,319.6L598.6,321.8L601.9,324.5L602.5,325.1ZM569.4,325.1L569.4,331.0L566.1,331.0L566.1,332.2L555.0,326.6L544.2,320.9L541.4,322.4L539.2,323.6L537.8,322.1L533.3,320.6L532.2,318.7L530.0,317.2L528.6,317.8L527.5,316.3L527.5,314.8L525.8,312.6L526.9,311.4L526.7,309.5L527.2,307.6L526.9,306.4L527.5,303.5L527.2,302.2L526.4,299.4L527.8,298.7L528.1,297.1L527.5,295.8L529.4,294.5L530.3,293.5L531.7,292.5L531.9,290.2L535.3,291.2L536.4,290.9L538.6,291.5L542.2,292.8L543.6,295.8L546.1,296.4L550.0,297.7L553.1,299.4L554.4,298.7L555.8,297.1L555.0,294.5L555.8,293.2L558.1,291.5L559.7,291.2L563.6,291.9L564.4,293.2L565.6,293.2L566.4,293.8L569.2,294.2L570.0,295.1L568.9,296.8L569.4,298.1L568.6,300.3L569.4,302.9L569.4,313.8L569.4,325.1ZM632.8,365.4L625.0,373.8L621.4,373.8L618.9,375.8L616.9,376.1L616.4,376.9L614.4,376.9L613.3,375.8L610.8,377.2L610.0,378.3L608.1,378.0L606.7,377.7L602.5,375.5L600.6,375.5L599.4,374.4L599.4,373.0L598.1,372.4L596.4,369.4L595.0,368.8L594.7,367.7L593.3,366.3L591.7,366.0L592.5,364.3L593.9,364.3L594.4,363.5L594.4,360.9L595.3,358.1L596.4,357.3L596.7,356.1L598.1,353.9L599.7,352.5L600.8,349.6L601.1,347.3L604.4,347.9L605.3,345.6L606.9,347.0L608.6,346.5L609.2,347.0L611.1,347.0L613.6,348.2L614.4,349.0L615.6,349.9L616.7,351.6L617.8,352.7L616.7,353.9L615.8,355.3L615.8,355.9L617.5,357.0L618.9,357.3L618.3,358.1L619.2,359.8L620.3,361.2L621.4,362.1L630.3,365.4L632.8,365.4ZM617.8,352.7L618.9,352.7L619.7,352.2L620.3,353.0L620.3,354.2L618.6,355.0L619.7,355.6L618.9,357.3L618.3,356.7L616.1,356.7L615.8,355.3L616.7,353.9L617.8,352.7ZM594.2,390.5L588.6,390.5L585.6,390.5L584.4,390.8L582.8,391.6L582.2,389.4L582.8,388.3L583.1,386.1L583.6,384.7L584.7,383.3L585.8,382.7L586.7,381.6L585.6,381.3L585.6,378.0L586.7,377.2L588.6,377.7L590.8,377.2L592.8,377.2L594.4,375.8L595.8,377.7L596.1,379.1L597.2,382.5L596.4,384.4L595.0,386.4L594.2,387.5L594.2,390.5ZM584.4,390.8L585.6,392.5L585.6,394.1L584.7,394.4L583.1,394.1L582.2,395.8L580.6,395.5L580.8,394.1L581.4,392.2L582.2,391.4L584.4,390.8ZM585.6,378.0L583.3,376.1L582.5,374.9L581.1,375.5L579.7,375.2L578.9,375.8L577.8,375.5L576.1,373.3L575.6,372.2L573.6,371.3L572.8,369.6L571.7,368.2L569.7,366.8L568.3,364.9L566.4,363.8L567.2,363.5L568.1,362.9L568.9,360.4L569.7,359.0L571.7,358.7L572.2,359.5L573.6,360.9L574.4,361.2L575.3,360.9L577.2,360.9L580.6,361.5L581.9,360.4L582.2,359.5L583.3,359.0L585.6,360.7L587.2,360.4L588.6,358.4L590.0,356.7L589.7,355.0L589.2,354.2L590.8,354.2L592.2,353.6L591.9,355.9L592.2,357.8L593.6,359.0L593.9,359.8L593.9,361.2L594.4,363.5L593.9,364.3L592.5,364.3L591.7,366.0L593.3,366.3L594.7,367.7L595.0,368.8L596.4,369.4L598.1,372.4L596.1,374.4L594.4,375.8L592.8,377.2L590.8,377.2L588.6,377.7L586.7,377.2L585.6,378.0Z" stroke-width="0.50" style="fill:var(--rp-land);stroke:var(--rp-land-edge)"></path><path d="M1000.0,433.1L1000.3,434.2L998.3,435.1L996.4,435.7L996.1,434.5L997.5,433.9L998.3,433.9L1000.0,433.1L1000.0,433.1Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>null FJ — 1 QSO</title></path><path d="M158.9,231.2L153.1,226.9L151.1,225.1L146.1,223.4L144.4,219.4L145.0,216.7L141.4,214.4L140.8,210.7L137.5,207.4L137.5,205.0L138.9,202.6L138.9,199.6L134.2,196.1L131.4,190.5L129.4,186.8L126.9,184.2L125.3,182.0L123.6,179.2L120.8,180.9L118.1,184.2L115.8,180.3L113.9,178.1L111.1,176.5L108.3,176.5L108.3,141.3L108.3,114.0L113.6,115.6L118.1,119.5L120.8,120.2L123.3,117.1L126.7,114.8L130.8,115.6L135.0,112.4L139.4,109.9L141.4,113.2L143.3,111.5L144.2,107.4L146.1,108.3L150.6,115.6L154.4,109.9L154.7,116.3L158.1,114.8L159.2,112.4L162.5,113.2L166.9,116.3L173.3,119.5L177.2,121.0L180.0,120.2L183.6,124.1L179.7,127.8L184.7,129.3L192.2,128.5L194.7,127.1L197.5,131.4L200.6,127.8L197.8,124.8L199.4,121.8L202.8,121.8L205.3,121.0L207.5,122.5L210.3,127.1L213.3,126.3L218.1,130.0L222.5,128.5L226.7,128.5L226.1,124.1L228.6,122.5L233.1,125.6L233.1,132.2L234.7,126.3L236.9,126.3L238.3,118.7L235.3,114.0L231.9,110.7L232.2,101.5L235.6,95.4L239.2,96.2L241.9,100.6L245.8,109.9L243.3,114.0L248.6,115.6L248.6,123.3L252.2,117.1L255.6,122.5L254.7,127.8L257.5,132.9L260.3,127.8L262.2,121.0L262.5,112.4L266.4,113.2L270.6,114.0L274.2,117.9L274.4,121.8L272.2,126.3L274.2,130.0L273.9,133.6L268.6,138.5L264.7,139.2L261.7,137.1L260.8,140.6L258.3,146.7L257.5,149.3L254.2,153.8L250.3,154.4L248.1,157.0L247.8,160.7L244.7,161.9L241.1,166.7L238.3,173.1L237.2,177.6L236.9,184.2L241.1,184.7L242.2,190.0L243.6,193.6L247.5,192.6L252.8,194.6L255.6,196.6L257.5,199.1L260.8,200.6L263.9,202.6L268.3,203.1L271.4,203.6L271.1,207.4L271.9,212.1L273.9,217.2L278.1,221.6L280.3,220.3L281.7,215.3L280.3,208.3L278.3,205.5L282.8,203.6L285.8,200.1L287.5,196.6L287.2,193.1L285.3,188.4L281.9,184.7L285.3,178.7L283.9,173.6L283.1,164.9L285.0,163.1L289.7,164.9L292.5,165.5L295.0,164.3L297.5,166.1L300.8,169.6L301.7,171.9L306.7,171.9L306.7,177.0L307.5,183.6L310.0,184.7L311.9,187.9L316.1,184.7L318.9,178.7L320.6,176.5L322.8,181.4L326.4,187.9L329.4,194.1L328.3,197.6L331.9,200.1L334.4,203.1L338.9,204.5L340.8,206.0L341.9,209.8L343.9,210.7L345.0,212.1L345.3,217.6L343.3,219.0L341.4,220.7L336.7,222.1L333.3,226.0L328.6,226.5L322.5,225.6L318.3,225.6L315.6,226.0L313.3,229.0L309.7,230.7L305.6,236.6L302.5,240.3L304.7,239.5L309.2,234.1L315.0,230.7L319.2,230.3L321.7,232.4L319.2,234.9L320.0,239.5L320.8,242.7L324.4,244.7L329.2,243.9L331.9,239.5L331.9,242.3L333.9,243.9L330.6,246.3L324.2,248.6L321.7,250.2L318.3,253.3L316.4,252.9L316.1,249.4L321.1,246.3L316.7,246.3L313.6,247.1L311.7,244.7L311.7,239.1L310.6,237.8L308.6,238.7L307.8,237.8L305.6,240.7L304.7,243.9L303.6,245.5L302.5,246.3L301.7,246.3L296.4,247.5L291.9,247.5L290.8,248.2L287.8,251.0L286.7,252.9L284.2,252.9L281.4,252.9L280.0,253.3L280.6,254.0L280.8,255.2L277.2,257.5L274.2,258.2L271.1,260.1L269.4,259.7L269.7,257.5L271.1,255.2L271.9,252.9L271.4,249.8L270.6,246.3L267.8,244.3L266.9,243.1L266.4,242.3L265.8,241.9L264.4,241.1L264.2,239.9L261.9,238.7L259.7,237.0L257.2,235.8L254.4,234.1L251.9,235.4L247.8,234.1L245.6,234.9L242.8,233.3L240.0,232.8L238.1,232.4L237.2,232.0L236.7,229.5L235.6,231.2L230.0,231.2L220.3,231.2L210.8,231.2L202.8,231.2L194.2,231.2L186.1,231.2L177.8,231.2L175.0,231.2L166.7,231.2L158.9,231.2ZM278.3,87.1L275.3,82.3L275.6,78.4L276.7,77.4L283.1,78.4L288.1,84.3L288.1,87.1L285.3,86.2L282.2,86.2L279.2,88.0L278.3,87.1ZM240.0,65.0L238.3,69.3L234.4,68.2L231.1,66.1L232.5,60.7L236.4,58.5L238.9,61.8L240.0,65.0ZM231.1,18.1L234.4,23.8L233.9,27.9L229.7,31.8L227.5,27.9L226.1,22.4L226.1,16.7L229.7,18.1L231.1,18.1ZM255.3,71.4L250.6,70.3L243.3,67.2L242.2,60.7L241.9,55.1L239.2,50.5L233.3,49.3L230.3,44.5L231.4,39.5L236.9,40.8L240.0,44.5L245.6,44.5L248.1,48.1L247.2,52.8L250.6,56.2L252.2,58.5L256.1,58.5L260.0,59.6L264.4,57.4L270.0,56.2L274.7,57.4L277.5,61.8L278.3,66.1L276.4,68.2L272.5,71.4L268.9,69.3L260.8,71.4L255.3,71.4ZM190.8,26.5L194.7,29.2L193.9,33.2L188.6,37.0L184.7,33.2L186.9,27.9L190.8,26.5ZM345.6,221.2L344.2,223.8L342.2,227.7L344.2,226.5L345.8,227.3L345.0,228.6L347.5,229.9L348.6,228.6L351.4,230.3L350.6,233.3L352.5,232.4L352.8,234.5L353.9,237.4L352.5,240.7L351.4,241.1L349.4,240.3L350.0,237.0L349.4,236.2L346.1,239.9L344.4,239.9L346.4,237.8L343.6,237.0L340.8,237.0L335.3,237.0L335.0,235.8L336.7,234.1L335.6,233.3L337.8,230.7L340.6,223.8L342.5,221.2L344.7,219.9L346.1,219.9L345.6,221.2ZM266.9,147.3L270.0,149.3L273.3,151.2L273.3,154.4L275.6,153.8L277.5,156.3L275.0,158.2L270.8,156.3L269.2,153.8L266.4,157.0L262.5,160.0L261.4,157.0L257.8,157.6L260.0,154.4L260.6,149.3L261.4,143.3L263.3,143.3L263.9,146.7L265.3,145.3L266.9,147.3ZM281.1,90.8L283.9,87.1L290.0,92.7L293.9,96.2L294.2,100.6L299.4,98.0L302.2,104.1L308.9,107.4L311.4,110.7L313.9,117.9L308.9,121.8L315.3,126.3L319.7,128.5L323.9,135.0L328.1,135.0L327.2,139.9L322.5,148.0L319.2,145.3L314.7,138.5L311.1,139.2L310.8,143.3L313.6,147.3L317.5,150.6L318.6,151.9L320.3,158.2L319.4,162.5L315.8,161.3L308.9,156.3L312.8,161.3L315.8,164.9L316.1,167.3L308.6,164.9L302.8,161.3L299.4,158.2L300.3,156.3L296.1,153.2L292.2,149.9L284.2,153.2L281.7,150.6L283.6,146.0L288.9,146.0L294.4,144.7L293.6,142.6L294.7,139.2L298.1,132.2L297.5,129.3L296.4,126.3L292.2,122.5L286.4,120.2L288.3,118.7L285.3,113.2L282.8,113.2L280.6,109.9L279.2,112.4L274.2,114.0L264.2,111.5L258.1,109.1L253.6,108.3L251.4,104.9L254.2,101.5L250.3,101.5L249.4,92.7L251.7,84.3L254.4,80.4L261.7,77.4L259.4,83.3L261.7,89.9L264.2,82.3L271.4,77.4L276.1,88.0L275.6,93.6L281.1,90.8ZM237.5,74.4L243.3,74.4L248.6,76.4L244.4,85.2L241.1,87.1L238.1,94.5L235.0,93.6L233.3,86.2L233.3,81.4L234.7,76.4L237.5,74.4ZM158.6,52.8L163.3,43.3L169.2,35.7L173.3,35.7L177.2,34.5L176.9,43.3L174.7,48.1L172.2,48.1L166.9,52.8L162.5,55.1L158.6,52.8ZM131.4,208.8L134.2,208.3L133.1,213.5L135.6,217.2L134.4,217.2L132.8,215.3L131.7,213.0L130.3,211.6L130.0,209.3L130.0,207.9L131.4,208.8ZM206.9,10.8L212.5,12.3L220.0,18.1L221.9,25.1L223.1,30.5L218.6,29.2L214.2,25.1L207.8,23.8L210.6,19.6L207.2,16.7L206.9,10.8ZM156.9,233.3L155.6,233.7L150.8,232.0L150.0,230.3L147.8,229.0L147.2,227.7L144.2,226.9L143.3,224.7L146.4,224.3L148.1,225.1L150.6,225.6L151.7,227.3L153.1,229.0L155.8,230.7L156.9,233.3ZM162.5,71.4L166.4,73.4L173.3,73.4L176.1,76.4L179.2,80.4L175.6,83.3L168.9,89.9L165.3,96.2L165.3,99.8L158.1,104.1L156.7,100.6L150.3,95.4L151.4,91.7L153.3,85.2L155.8,78.4L153.1,72.4L162.5,71.4ZM200.6,56.2L203.1,53.9L205.8,53.9L206.4,59.6L204.7,65.0L195.3,66.1L188.3,71.4L184.2,71.4L183.6,68.2L189.4,62.9L176.9,65.0L173.1,62.9L176.9,51.6L179.4,48.1L187.2,52.8L192.2,59.6L196.9,59.6L193.1,49.3L195.6,44.5L198.3,45.7L199.4,51.6L200.6,56.2ZM204.2,84.3L207.2,88.0L208.9,97.1L209.7,103.2L214.4,107.4L219.4,111.5L219.2,114.8L214.7,115.6L216.4,118.7L215.6,121.0L210.6,120.2L205.6,117.9L202.5,118.7L197.2,121.0L190.3,122.5L185.3,123.3L183.6,119.5L180.0,117.1L177.5,117.9L174.2,111.5L175.8,110.7L180.3,109.9L184.2,109.9L187.8,108.3L182.5,106.6L176.4,107.4L172.5,107.4L171.1,104.1L177.5,100.6L173.1,100.6L168.3,98.0L170.6,91.7L172.5,88.0L180.0,82.3L182.8,84.3L181.4,88.0L187.8,85.2L191.4,89.9L194.7,85.2L197.2,89.0L199.4,97.1L200.8,93.6L198.9,84.3L201.4,83.3L204.2,84.3ZM221.1,88.0L218.1,81.4L221.1,77.4L224.4,79.4L229.4,77.4L230.3,80.4L227.5,85.2L231.9,89.0L231.4,97.1L226.7,100.6L224.2,99.8L222.2,97.1L215.3,89.9L221.1,88.0ZM226.4,45.7L228.6,50.5L228.6,57.4L227.2,65.0L222.8,66.1L219.7,64.0L219.7,58.5L215.3,58.5L215.0,50.5L218.1,50.5L222.2,46.9L226.1,46.9L226.4,45.7ZM233.3,0.0L235.3,0.0L238.1,0.0L236.9,0.0L243.3,0.0L246.9,0.0L251.7,0.0L256.1,0.0L258.3,4.7L261.7,10.8L257.8,15.3L252.8,25.1L247.8,26.5L241.9,25.1L238.9,18.1L239.2,13.8L241.4,9.3L236.1,9.3L233.1,4.7L231.4,0.0L233.3,0.0ZM245.6,0.0L249.7,0.0L253.1,0.0L258.3,0.0L262.5,0.0L265.8,0.0L268.9,0.0L271.1,0.0L274.7,0.0L279.7,0.0L288.1,0.0L289.7,0.0L297.8,0.0L303.6,0.0L309.7,0.0L317.2,0.0L323.1,0.0L328.1,0.0L321.4,0.0L314.4,0.0L311.9,0.0L318.1,0.0L311.7,0.0L306.9,0.0L302.2,3.2L296.7,6.3L294.7,9.3L286.4,10.8L290.3,12.3L288.3,15.3L290.6,22.4L288.1,26.5L283.6,30.5L282.2,35.7L278.3,39.5L278.9,42.0L283.6,42.0L276.1,51.6L268.9,48.1L260.8,50.5L256.7,49.3L251.4,48.1L251.1,42.0L256.1,39.5L254.7,30.5L256.7,29.2L263.9,35.7L260.3,26.5L255.6,23.8L257.8,18.1L262.8,15.3L263.6,10.8L259.7,4.7L258.6,0.0L266.1,0.0L268.3,0.0L272.8,0.0L266.4,0.0L256.7,0.0L251.7,0.0L249.4,0.0L246.1,0.0L245.6,0.0ZM291.1,131.4L289.2,133.6L286.1,133.6L285.6,130.0L286.7,126.3L289.2,124.8L291.4,127.1L291.4,130.0L291.1,131.4ZM232.5,115.6L234.4,118.7L232.5,121.0L228.9,118.7L226.7,119.5L222.8,116.3L225.3,114.0L227.2,110.7L230.0,112.4L231.7,114.0L232.5,115.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇨🇦 Canada — 77 QSO</title></path><path d="M158.9,231.2L166.7,231.2L175.0,231.2L177.8,231.2L186.1,231.2L194.2,231.2L202.8,231.2L210.8,231.2L220.3,231.2L230.0,231.2L235.6,231.2L235.6,229.5L237.2,232.0L238.1,232.4L240.0,232.8L242.8,233.3L245.6,234.9L247.8,234.1L251.1,235.4L254.4,234.1L257.2,235.8L259.7,237.0L261.9,238.7L264.2,239.9L264.4,241.1L265.0,241.9L266.4,241.5L266.9,243.1L268.1,243.5L270.6,246.3L271.4,249.8L271.9,252.9L271.1,255.2L269.7,257.5L269.2,258.6L270.3,260.1L274.2,258.2L277.2,257.5L280.8,255.6L280.6,254.0L280.0,253.3L281.4,252.9L284.2,252.9L286.7,252.9L287.5,251.4L290.8,248.2L291.9,247.5L296.4,247.5L301.4,247.5L302.5,246.3L303.6,245.5L304.7,243.9L305.6,240.7L307.8,237.8L308.6,238.7L310.6,237.8L311.7,239.1L311.7,244.7L313.6,247.1L313.9,248.2L311.1,250.2L308.1,251.4L305.3,252.5L303.9,254.8L303.3,255.6L303.3,257.8L304.2,259.7L305.3,259.7L305.0,258.6L305.8,259.3L305.6,260.4L303.9,260.8L302.5,260.8L300.3,261.6L299.2,261.6L297.5,261.9L295.3,263.0L299.4,262.3L300.3,263.0L296.4,264.1L294.4,264.1L293.6,264.5L293.9,267.4L291.9,270.3L291.1,269.2L290.3,268.1L290.8,269.9L291.4,270.6L291.4,272.1L290.6,273.5L289.2,276.3L289.7,273.8L288.3,272.4L287.8,269.6L287.5,271.0L288.1,273.1L286.1,272.8L288.1,273.8L288.1,277.0L288.9,277.3L289.2,278.4L289.7,281.8L287.8,284.5L285.0,285.5L283.1,287.5L281.7,287.5L280.3,288.9L280.0,289.9L276.9,292.2L275.3,293.8L274.2,295.8L273.6,298.1L274.2,300.3L275.0,302.9L276.4,305.1L276.4,306.7L277.5,310.1L277.5,312.3L277.5,313.5L276.7,315.4L275.8,315.7L274.4,315.4L274.2,314.1L273.1,313.2L271.7,310.7L270.3,308.2L269.7,307.0L270.3,304.8L269.7,303.2L267.5,300.6L266.4,300.0L263.6,301.6L261.7,299.7L260.0,299.0L256.9,299.4L254.4,299.0L252.2,299.4L251.1,299.7L251.7,300.6L251.7,301.9L252.2,302.6L250.6,302.6L249.4,303.2L247.5,303.2L245.6,301.3L243.1,301.6L241.1,301.0L239.4,301.3L236.9,301.9L234.4,304.5L231.7,305.7L230.3,307.3L229.4,308.6L229.4,310.7L229.7,312.3L230.3,313.2L229.2,313.5L227.2,312.6L225.0,311.7L224.2,310.4L223.6,308.2L221.9,306.4L220.8,304.5L219.4,302.2L217.5,301.0L215.3,301.0L213.6,303.5L211.4,302.6L209.7,301.6L209.2,300.0L208.3,298.4L206.7,296.8L205.3,295.8L204.2,294.5L199.4,294.5L199.4,296.1L197.2,296.1L191.7,296.1L185.3,293.8L181.1,292.2L177.8,291.9L174.7,292.2L174.2,290.5L172.5,288.5L171.1,288.2L170.8,287.2L169.2,286.9L168.3,286.2L165.6,285.9L165.0,285.2L164.7,283.2L161.9,279.7L159.7,274.9L158.3,273.1L156.4,269.9L155.8,267.0L154.4,265.2L155.0,262.3L155.0,259.0L154.2,255.9L155.3,252.5L155.6,249.0L155.8,245.5L155.3,239.9L154.4,236.6L153.6,234.5L158.1,235.4L159.4,239.1L160.3,237.8L159.7,234.5L158.9,231.2ZM74.4,188.9L76.1,189.5L77.5,191.0L75.0,193.6L72.2,195.6L70.8,194.1L70.3,191.5L72.8,190.0L74.4,188.9ZM108.3,114.0L108.3,141.3L108.3,176.5L111.1,176.5L113.9,178.1L115.8,180.3L118.1,184.2L120.8,180.9L123.6,179.2L125.3,182.0L126.9,184.2L129.4,186.8L131.4,190.5L134.2,196.1L138.9,199.6L138.9,202.6L137.5,205.0L135.8,203.1L133.3,201.6L132.8,197.1L129.2,193.1L127.5,188.4L125.0,187.9L120.6,187.9L117.2,186.3L111.4,180.9L108.9,179.8L103.9,177.6L100.0,178.1L94.7,175.3L91.4,173.1L88.3,174.2L88.9,178.1L87.2,178.7L84.2,179.8L81.7,181.4L78.6,182.5L78.1,179.8L79.4,174.2L82.5,172.5L81.7,170.8L78.1,174.2L76.1,177.6L72.2,181.4L74.2,184.2L71.7,188.4L68.6,190.5L65.8,192.0L65.0,194.1L60.8,196.6L60.0,199.1L56.7,201.1L54.7,201.1L52.2,202.1L49.4,204.0L46.9,205.5L42.2,206.9L45.0,204.0L47.5,202.6L50.6,199.6L53.9,199.1L55.3,197.1L59.2,194.1L59.7,193.1L61.9,191.0L62.2,187.4L63.9,184.2L60.6,185.8L59.7,184.7L58.1,186.8L56.4,184.2L55.6,185.8L54.4,183.1L51.7,185.2L50.0,185.2L49.7,182.0L50.3,180.3L48.6,178.1L45.0,179.2L42.5,176.5L40.8,175.3L40.6,171.9L38.6,169.6L39.7,166.1L41.9,163.1L42.8,160.0L45.0,159.4L46.9,160.0L49.2,157.6L51.4,157.6L53.3,155.7L52.8,153.2L51.4,151.9L53.3,149.3L51.7,149.3L48.6,150.6L47.8,152.5L45.8,150.6L41.7,151.9L37.8,149.9L36.7,147.3L33.1,143.3L36.9,140.6L43.1,137.1L45.3,137.1L45.0,140.6L50.8,140.6L48.6,136.4L45.3,133.6L43.3,130.0L40.6,127.1L36.7,124.1L38.3,120.2L43.3,120.2L46.7,116.3L47.5,112.4L50.3,109.1L53.1,108.3L58.3,104.1L60.8,104.9L65.0,99.8L69.2,102.4L71.4,105.8L72.5,104.1L77.2,104.9L81.4,108.3L84.2,107.4L90.0,109.9L95.3,110.7L97.5,111.5L101.1,109.9L105.3,112.4L108.3,114.0Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇺🇸 United States — 841 QSO</title></path><path d="M742.8,230.3L740.6,233.3L738.3,233.3L738.1,237.4L736.7,239.5L731.1,238.2L729.2,245.5L727.5,246.3L722.2,247.9L724.7,254.4L722.8,255.6L723.1,257.5L721.1,257.1L719.7,255.6L715.8,255.2L711.1,255.2L710.0,255.6L706.1,254.0L704.4,254.8L704.2,257.1L699.4,255.9L697.8,256.3L697.2,257.8L695.6,258.6L691.9,261.2L690.6,263.8L689.7,263.8L688.9,262.3L685.3,261.9L684.7,259.0L683.3,259.0L683.6,255.2L680.3,252.5L675.6,252.9L672.2,253.3L669.7,249.8L667.2,248.2L663.1,245.5L655.3,247.5L655.6,261.6L654.2,261.6L652.2,259.0L650.3,257.8L646.9,258.6L645.8,259.7L646.4,257.5L645.8,255.9L642.5,254.8L641.4,251.4L639.7,250.2L639.7,249.0L642.5,249.4L642.5,246.7L645.0,245.9L647.2,246.3L647.8,242.7L647.2,239.9L644.4,240.3L642.2,239.5L638.9,241.1L636.4,241.9L635.0,241.1L635.3,239.1L633.6,236.6L631.4,236.6L629.2,233.7L630.6,230.3L630.0,229.5L632.2,224.7L635.0,227.3L635.3,224.3L641.1,219.4L645.3,219.4L651.4,222.5L654.7,224.3L657.8,222.5L662.2,222.1L665.6,224.7L666.4,223.4L670.3,223.4L671.1,221.2L666.7,218.1L669.2,216.2L668.6,214.9L671.4,213.5L669.4,210.2L670.6,208.8L681.1,206.9L682.5,206.0L689.4,204.0L691.9,202.1L696.9,203.1L697.8,208.3L700.6,206.9L704.2,208.8L703.9,211.2L706.7,211.2L713.6,206.4L712.5,207.9L716.1,211.6L722.2,223.0L723.9,220.7L727.5,223.4L731.7,222.1L733.1,223.0L734.4,225.6L736.4,226.5L737.5,228.2L741.1,227.7L742.8,230.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇰🇿 Kazakhstan — 42 QSO</title></path><path d="M655.6,261.6L655.3,247.5L662.5,245.1L667.2,248.2L669.7,249.8L672.2,253.3L675.6,252.9L680.3,252.5L683.6,255.2L683.3,259.0L684.7,259.0L685.3,261.9L688.9,262.3L689.7,263.8L690.6,263.8L691.9,261.2L695.6,258.6L697.2,257.8L698.1,258.2L695.6,260.8L697.8,262.3L699.7,261.2L703.1,263.0L699.4,266.0L697.2,265.6L696.1,265.6L695.8,264.5L696.4,262.7L692.5,263.8L691.7,266.0L690.3,268.1L688.1,267.8L687.2,269.6L689.4,270.3L690.0,272.8L688.3,276.6L686.4,275.6L684.7,275.6L684.7,273.5L681.1,272.1L678.3,270.3L676.4,268.5L673.3,266.0L671.9,262.3L670.8,261.6L668.1,261.9L666.9,261.2L666.7,258.2L662.8,255.9L660.6,258.2L658.1,259.7L658.6,261.6L655.6,261.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇺🇿 Uzbekistan — 9 QSO</title></path><path d="M891.7,395.0L891.7,404.2L891.7,413.1L889.2,410.9L886.4,410.3L885.8,411.2L882.2,411.2L883.3,408.9L885.3,408.1L884.4,405.0L883.1,402.8L877.8,400.3L875.6,400.3L871.4,397.5L870.6,398.9L869.4,399.1L868.9,398.0L868.9,396.9L866.7,395.5L869.7,394.7L871.7,394.7L867.2,393.9L866.1,392.2L863.6,391.6L862.5,390.2L866.4,389.7L867.8,388.9L872.2,390.0L872.5,391.1L873.3,395.5L876.4,397.2L878.6,394.1L881.7,392.5L884.2,392.5L886.7,393.6L888.6,394.4L891.7,395.0ZM847.2,412.6L847.5,414.0L845.6,415.9L843.3,416.8L843.3,415.4L844.4,413.7L847.2,412.6ZM827.5,376.3L825.8,378.8L827.8,381.3L827.5,382.7L830.6,385.2L827.2,385.5L826.4,387.5L826.4,390.0L823.9,391.9L823.6,394.7L822.5,398.9L822.2,398.0L819.2,399.1L818.1,397.5L816.1,397.2L814.7,396.4L811.4,397.5L810.3,396.1L808.3,396.1L806.1,395.8L805.8,392.2L804.4,391.4L803.1,389.1L802.8,386.6L803.1,384.1L804.7,382.2L805.0,384.1L806.9,385.5L808.9,385.0L810.6,385.2L812.2,383.9L813.6,383.6L816.1,384.4L818.3,383.9L819.7,380.0L820.8,378.8L821.9,375.8L825.0,375.8L827.5,376.3ZM859.4,395.5L862.5,396.4L863.3,398.6L861.1,397.2L858.9,397.2L857.2,397.2L855.3,397.2L855.8,395.5L859.4,395.5ZM855.3,381.6L855.6,383.3L857.2,383.6L857.5,384.7L857.2,386.9L855.8,386.6L855.6,388.6L856.7,390.0L855.8,390.2L854.7,388.6L853.9,385.0L854.4,382.7L855.3,381.6ZM841.4,385.2L844.7,385.2L847.5,383.3L847.8,383.9L845.6,386.6L843.6,387.2L840.8,386.6L836.4,386.6L833.9,387.2L833.3,389.1L835.8,391.6L837.5,390.5L842.5,389.4L842.5,390.8L841.1,390.2L840.0,391.9L837.5,393.0L840.3,396.6L839.7,397.5L842.2,400.8L842.2,402.5L840.6,403.3L839.4,402.5L840.8,400.3L838.1,401.4L837.5,400.5L837.8,399.4L835.8,397.7L836.1,395.0L834.2,395.8L834.4,399.1L834.4,403.0L832.8,403.6L831.7,402.8L832.5,400.3L831.9,397.5L830.8,397.5L830.0,395.5L831.1,393.6L831.4,391.6L832.8,387.2L833.3,386.1L835.8,384.1L838.1,385.0L841.4,385.2ZM836.9,411.4L838.9,411.4L841.4,410.3L841.1,412.0L836.9,412.6L833.1,412.3L833.1,411.2L835.3,410.6L836.9,411.4ZM801.4,405.6L801.7,406.7L806.9,407.0L807.8,405.8L812.8,407.0L813.9,408.9L818.1,409.5L821.4,411.2L818.3,412.3L815.3,410.9L812.8,411.2L809.7,410.9L807.2,410.3L803.9,409.2L801.9,408.9L800.8,409.5L795.8,408.4L795.3,407.0L792.8,407.0L794.7,404.2L798.1,404.4L800.3,405.3L801.4,405.6ZM790.0,390.8L790.3,392.7L791.4,394.1L793.3,394.4L794.7,396.4L794.2,399.7L793.9,404.2L790.8,404.2L788.6,401.6L785.0,399.4L783.9,397.7L781.7,395.5L780.3,393.6L778.1,389.7L775.8,387.2L775.0,385.0L773.9,382.7L771.4,380.8L770.0,378.6L767.8,376.9L765.0,373.8L764.7,372.4L766.4,372.7L770.8,373.3L773.3,375.8L775.3,377.7L776.9,378.8L779.4,381.9L782.5,381.9L784.7,383.9L786.4,386.1L788.3,387.5L787.2,389.7L788.9,390.8L790.0,390.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇮🇩 Indonesia — 76 QSO</title></path><path d="M309.4,560.2L310.3,562.5L311.7,565.7L315.3,569.0L319.2,570.0L318.1,572.4L315.3,572.4L313.9,571.0L312.2,571.0L309.4,571.0L309.4,560.2ZM340.0,475.8L339.2,478.4L338.6,481.6L338.6,484.9L337.8,485.9L337.8,487.9L337.5,489.6L341.1,492.7L340.6,495.1L342.5,496.4L342.2,498.2L339.7,502.7L335.6,504.5L330.0,505.2L326.9,504.8L327.5,507.0L326.9,509.9L327.5,511.7L325.8,512.8L322.8,513.6L320.3,512.1L319.2,513.2L319.4,516.9L321.4,518.0L322.8,516.5L323.6,518.8L321.1,519.9L318.9,522.2L318.6,526.1L317.8,528.0L315.3,528.0L313.1,530.4L312.2,533.2L315.0,536.0L317.8,536.8L316.7,540.5L313.3,543.1L311.7,548.2L309.2,549.9L308.1,551.6L308.9,556.5L310.6,559.2L309.4,558.8L306.9,557.9L300.3,557.4L299.2,554.7L299.2,551.6L297.2,551.6L296.4,550.3L296.1,545.6L298.3,543.9L299.2,541.0L298.9,538.9L300.3,535.6L301.1,530.4L300.8,528.0L302.2,527.2L301.9,525.7L300.6,524.9L301.4,523.3L300.3,521.8L299.4,517.6L300.8,516.9L300.3,512.1L300.8,508.4L301.7,505.2L303.3,504.1L302.5,500.6L302.5,497.5L304.4,495.1L304.4,492.3L306.1,488.9L306.1,485.9L305.3,485.3L304.2,479.7L305.8,476.1L305.6,473.2L306.4,470.4L308.3,467.2L310.3,465.4L309.4,464.1L310.0,463.2L310.0,458.0L313.1,456.4L313.9,453.4L313.6,452.5L315.8,449.8L319.4,450.7L321.1,452.8L322.2,450.4L325.6,450.4L325.8,451.0L331.1,456.1L333.3,456.4L336.7,458.9L339.4,460.1L340.0,461.3L337.2,466.0L340.0,466.9L343.1,467.2L345.3,466.9L347.8,464.4L348.3,461.7L349.7,461.0L351.1,462.9L351.1,465.4L348.6,467.2L346.7,468.5L343.6,471.7L340.0,475.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇦🇷 Argentina — 25 QSO</title></path><path d="M309.4,560.2L309.4,571.0L312.2,571.0L313.9,571.0L313.1,572.9L310.8,574.4L309.4,574.4L307.8,573.9L305.6,572.4L302.8,571.9L299.2,569.0L296.4,566.7L292.5,561.1L295.0,562.0L298.9,565.2L302.5,567.1L303.9,564.8L304.7,561.5L307.5,559.7L309.4,560.2ZM306.7,437.4L308.1,439.5L308.3,441.5L310.0,442.7L308.9,445.6L310.6,448.9L311.7,453.1L313.6,452.5L313.9,453.4L313.1,456.4L310.0,458.0L310.0,463.2L309.4,464.1L310.3,465.4L308.3,467.2L306.4,470.4L305.6,473.2L305.8,476.1L304.2,479.7L305.3,485.3L306.1,485.9L306.1,488.9L304.4,492.3L304.4,495.1L302.5,497.5L302.5,500.6L303.3,504.1L301.7,505.2L300.8,508.4L300.3,512.1L300.8,516.9L299.4,517.6L300.3,521.8L301.4,523.3L300.6,524.9L301.9,525.7L302.2,527.2L300.8,528.0L301.1,530.4L300.3,535.6L298.9,538.9L299.2,541.0L298.3,543.9L296.1,545.6L296.4,550.3L297.2,551.6L299.2,551.6L299.2,554.7L300.3,557.4L306.9,557.9L309.4,558.8L306.9,558.8L305.8,559.7L303.3,561.5L302.8,565.7L301.7,566.2L298.3,564.3L295.3,561.1L291.9,558.8L290.8,555.6L291.7,553.0L290.3,550.3L290.0,543.1L291.1,538.9L294.2,535.6L290.0,534.4L292.5,531.2L293.3,524.5L296.7,526.1L298.1,518.0L296.1,516.9L295.3,521.8L293.6,521.1L294.4,515.8L295.3,508.8L296.7,506.6L295.8,503.1L295.6,499.2L296.7,498.9L298.3,493.3L300.3,487.9L301.7,483.0L300.8,478.1L301.7,475.5L301.4,471.7L303.1,467.6L303.6,461.7L304.4,455.2L305.3,448.6L305.0,443.9L304.4,439.5L305.8,438.9L306.7,437.4Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇨🇱 Chile — 10 QSO</title></path><path d="M608.9,400.8L605.0,398.0L604.7,396.4L594.7,390.8L594.2,387.5L595.0,386.4L596.4,384.4L597.2,382.5L596.1,379.1L595.8,377.7L594.4,375.8L596.1,374.4L598.1,372.4L599.4,373.0L599.4,374.4L600.6,375.5L602.5,375.5L605.8,377.7L607.5,377.7L610.0,378.3L610.8,377.2L613.3,375.8L614.4,376.9L616.4,376.9L613.9,380.0L613.9,390.2L615.6,392.5L613.6,393.6L612.8,394.7L611.9,395.0L611.4,396.9L610.6,398.0L610.0,399.7L608.9,400.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇰🇪 Kenya — 11 QSO</title></path><path d="M566.1,332.2L566.4,343.9L563.9,343.6L562.8,345.9L561.9,347.6L562.5,348.2L561.7,349.0L561.9,350.2L561.1,351.3L560.8,352.5L561.9,352.5L562.5,353.3L562.5,355.0L563.6,355.9L561.7,357.0L560.3,358.1L558.3,361.2L555.8,362.6L553.1,362.4L552.2,362.6L552.5,363.8L551.1,364.6L550.0,365.7L546.4,366.8L545.8,366.3L544.7,366.8L542.5,367.1L542.8,366.3L541.9,364.3L541.7,363.2L540.3,362.6L538.9,361.2L539.4,359.8L540.6,360.1L541.4,359.8L543.1,359.8L541.4,357.3L541.7,355.3L541.4,353.6L540.3,351.6L540.6,350.5L538.9,350.2L538.9,348.5L537.5,347.3L538.9,343.6L542.2,341.0L542.5,337.2L543.6,331.0L544.2,329.8L543.1,328.9L541.9,327.2L541.4,322.4L544.2,320.9L555.0,326.6L566.1,332.2Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇹🇩 Chad — 1 QSO</title></path><path d="M300.8,336.9L300.3,335.1L300.8,334.6L301.1,333.4L300.8,331.9L303.3,331.3L305.0,332.2L306.1,333.1L307.8,333.1L308.9,334.0L310.3,335.1L309.2,336.3L307.8,335.7L306.7,335.7L305.6,335.7L305.3,336.3L304.2,336.3L303.6,335.7L302.8,336.0L301.7,338.1L300.8,337.5L300.8,336.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇩🇴 Dominican Republic — 9 QSO</title></path><path d="M541.9,4.7L543.1,0.0L547.2,0.0L550.8,4.7L559.7,15.3L552.8,21.0L551.4,31.8L548.9,34.5L547.5,44.5L544.2,44.5L538.3,37.0L540.8,33.2L536.7,29.2L531.1,16.7L528.9,4.7L536.7,0.0L538.1,4.7L541.9,4.7ZM586.4,114.8L581.7,117.9L579.4,118.7L580.6,113.2L576.9,109.9L572.8,113.2L571.4,118.7L568.6,122.5L565.8,120.2L562.2,121.0L558.9,116.3L557.2,118.7L555.6,118.7L555.3,124.1L550.0,122.5L549.2,127.1L546.7,127.1L544.7,132.2L541.9,139.9L537.8,149.3L538.6,151.9L537.8,154.4L535.0,153.8L533.1,160.0L533.3,167.9L535.0,170.8L534.2,177.6L531.9,181.4L530.6,184.2L528.9,180.9L523.3,187.4L519.4,188.4L515.8,185.8L514.7,179.8L513.9,166.7L516.4,163.1L523.9,157.6L529.2,151.2L534.4,142.0L541.1,128.5L545.6,122.5L553.3,113.2L559.4,109.1L563.9,109.9L568.1,103.2L573.3,103.2L578.3,101.5L586.9,107.4L583.3,109.9L586.4,114.8ZM576.1,0.0L571.9,7.8L563.9,9.3L555.8,6.3L555.3,3.2L551.4,1.6L548.3,0.0L556.9,0.0L560.8,0.0L563.6,0.0L570.6,0.0L576.1,0.0ZM568.6,30.5L562.5,37.0L557.5,33.2L559.4,30.5L557.8,25.1L563.6,22.4L564.7,27.9L568.6,30.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇳🇴 Norway — 92 QSO</title></path><path d="M545.3,470.7L546.7,469.1L547.8,470.1L548.3,471.3L549.4,471.7L551.4,472.0L552.8,472.0L555.3,470.4L555.3,458.9L556.1,459.2L557.8,462.3L557.5,464.1L558.1,465.1L560.0,464.7L561.4,463.5L562.8,462.6L563.3,461.0L564.7,460.4L565.8,460.7L567.2,461.7L569.4,461.7L571.4,461.0L571.7,460.1L571.9,458.6L573.6,458.3L574.4,457.1L575.3,455.2L577.8,452.8L581.7,450.7L582.8,450.7L584.2,451.3L585.3,451.0L586.7,451.3L588.1,455.5L588.6,457.7L588.3,461.0L588.3,462.0L586.9,461.7L586.1,461.7L586.1,462.6L585.3,463.8L585.3,464.7L586.9,466.6L588.6,466.3L589.2,464.7L591.1,464.7L590.6,467.2L590.3,469.8L589.4,471.3L587.5,472.9L585.8,474.8L585.0,476.5L583.6,478.7L580.3,482.3L578.3,484.3L576.4,485.6L573.3,486.9L571.9,487.3L571.7,487.9L570.0,487.6L568.6,488.3L565.6,487.6L563.9,487.9L562.8,487.9L559.7,489.3L557.5,489.6L555.8,491.0L554.4,491.0L553.3,490.0L552.5,489.6L551.1,488.3L550.8,485.9L549.7,483.6L550.6,483.0L550.6,480.7L548.9,477.4L547.5,474.8L545.3,470.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇿🇦 South Africa — 7 QSO</title></path><path d="M174.7,292.2L177.8,291.9L181.4,291.5L185.3,293.8L191.7,296.1L197.2,296.1L199.4,296.1L199.4,294.5L204.2,294.5L205.3,295.8L206.7,296.8L208.3,298.4L209.2,300.0L209.7,301.6L211.4,302.6L213.6,303.5L215.3,301.0L217.5,301.0L219.4,302.2L220.8,304.5L221.9,306.4L223.6,308.2L224.2,310.4L225.0,311.7L227.2,312.6L229.2,313.5L230.3,313.2L229.2,316.0L228.6,318.1L228.3,322.4L228.1,323.9L228.6,325.4L229.4,326.9L230.0,329.2L231.9,331.3L232.5,333.1L233.6,334.6L236.7,335.1L237.8,336.6L240.3,335.7L242.2,335.4L244.4,334.8L246.1,334.3L247.8,333.1L248.6,331.3L248.6,328.9L249.2,328.1L251.1,327.2L254.2,326.6L256.4,326.6L258.1,326.6L258.9,327.2L258.9,328.7L257.2,330.1L256.7,332.2L257.2,332.5L256.7,334.0L256.1,336.0L255.3,335.4L254.2,335.4L253.3,337.2L252.5,336.9L249.7,337.5L247.2,337.5L247.2,338.9L245.8,338.9L246.9,340.1L248.1,340.7L248.9,341.5L248.6,342.4L245.3,342.4L243.9,344.7L243.9,346.2L240.6,343.9L239.2,343.0L236.9,342.1L235.3,342.4L233.1,343.3L231.7,343.6L229.7,343.0L227.8,342.4L225.3,341.0L223.1,340.7L220.0,339.2L217.5,338.1L216.9,337.2L215.3,336.9L212.5,336.0L211.4,334.8L208.3,333.1L206.9,331.3L206.4,329.8L207.2,329.5L206.9,328.7L207.5,327.8L206.7,325.4L206.4,324.2L205.6,322.7L203.1,319.6L200.3,317.5L198.9,315.4L196.4,314.1L196.1,313.5L196.4,311.7L195.0,310.7L193.3,309.2L192.8,307.0L191.1,307.0L189.4,305.1L188.3,303.5L188.1,302.6L186.7,300.3L185.6,297.7L185.8,296.4L183.6,295.1L182.8,295.5L181.1,294.5L180.8,295.8L181.1,297.4L181.4,299.7L182.5,301.0L184.4,303.2L185.0,304.1L185.8,305.4L186.7,307.3L187.5,308.2L188.3,309.2L190.0,310.7L190.8,313.8L191.7,315.1L192.5,316.6L192.5,318.1L193.9,318.1L195.0,319.6L196.1,320.9L194.7,322.7L193.6,320.9L191.9,319.0L189.7,317.5L188.3,316.9L188.3,314.4L188.1,312.9L186.7,312.0L184.7,310.4L183.9,310.1L181.9,309.5L180.3,307.6L181.7,307.6L182.8,306.4L182.8,304.8L180.8,302.6L179.2,301.6L178.1,299.7L176.9,297.7L175.8,295.1L174.7,292.2Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇲🇽 Mexico — 1 QSO</title></path><path d="M340.0,475.8L341.7,475.5L344.4,478.1L345.6,478.1L348.3,480.0L350.6,481.6L352.2,483.9L351.1,485.6L351.7,487.6L350.6,489.6L347.5,491.6L345.3,491.0L343.9,491.3L341.4,489.6L339.4,490.0L337.8,487.9L337.8,485.9L338.6,484.9L338.6,481.6L339.2,478.4L340.0,475.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇺🇾 Uruguay — 12 QSO</title></path><path d="M351.7,487.6L351.1,485.6L352.2,483.9L350.6,481.6L348.3,480.0L345.6,478.1L344.4,478.1L341.7,475.5L340.0,475.8L343.6,471.7L346.7,468.5L348.6,467.2L351.1,465.4L351.1,462.9L349.7,461.0L348.3,461.7L348.9,460.1L349.2,458.3L349.2,456.4L348.1,455.8L347.2,456.4L346.1,456.4L345.8,455.2L345.6,452.5L345.0,451.6L343.1,450.7L341.9,451.3L339.2,450.7L339.2,446.5L338.3,445.1L339.2,444.5L338.9,442.7L339.7,441.5L340.3,439.2L339.7,437.4L338.1,436.5L337.8,435.4L338.3,433.6L332.8,433.6L331.9,430.2L332.5,428.7L331.9,428.2L331.9,426.5L330.3,425.6L328.6,425.6L327.5,424.7L325.6,424.2L324.4,423.0L321.4,422.7L318.3,420.2L318.6,418.2L318.3,417.1L318.6,415.1L315.0,415.4L313.3,416.5L311.1,417.6L310.3,418.5L308.9,418.5L306.9,418.5L305.3,418.8L304.2,418.5L304.2,414.3L301.9,415.9L299.4,415.9L298.3,414.3L296.7,414.3L297.2,412.8L295.6,411.2L294.4,408.6L295.3,408.1L295.3,407.0L296.9,406.1L296.7,404.7L297.2,403.6L297.5,402.5L300.8,400.5L303.1,400.0L305.8,399.7L307.2,392.2L307.2,390.8L306.7,389.1L305.6,388.3L305.6,386.4L306.9,385.8L307.8,385.0L306.1,384.7L306.1,383.0L311.4,383.0L312.5,382.2L313.1,383.0L313.6,384.7L315.8,385.8L318.1,385.5L318.3,384.7L320.6,384.1L321.7,383.6L321.9,382.5L323.9,381.6L321.4,380.8L321.1,379.1L321.1,377.2L320.0,376.3L322.5,376.6L324.7,377.2L325.6,376.6L327.5,376.1L330.6,375.2L331.7,374.1L331.4,373.3L332.8,373.3L333.3,373.8L333.1,374.9L333.9,375.5L334.7,376.6L333.9,377.7L333.3,380.0L334.2,381.6L334.4,382.7L336.1,384.1L337.5,384.1L338.6,383.6L339.7,383.0L340.8,382.5L342.2,382.5L344.4,382.7L344.2,381.6L344.4,380.8L345.6,381.1L346.9,380.8L348.6,381.3L349.7,381.9L350.6,381.1L351.7,381.9L353.1,381.9L353.9,380.8L355.0,378.8L356.4,376.1L357.5,376.1L358.1,377.7L359.7,382.5L361.1,383.0L361.4,385.0L359.2,387.2L360.0,388.0L365.0,388.3L365.0,391.1L367.2,389.4L370.6,390.2L375.3,392.2L376.7,393.6L376.1,395.2L379.4,394.4L384.7,395.8L388.9,395.8L393.1,398.0L396.7,401.1L398.6,401.9L401.1,401.9L402.2,403.0L403.1,406.4L403.6,408.1L402.5,412.8L401.1,414.5L397.2,418.5L395.3,421.9L393.3,424.2L391.7,426.5L391.9,431.9L391.1,436.3L390.8,438.3L390.0,439.5L389.4,443.3L386.7,447.1L386.4,450.1L383.9,451.6L383.3,453.4L380.3,453.4L376.1,454.6L373.9,455.8L370.8,456.8L367.8,459.2L365.3,462.3L365.0,464.4L365.3,466.3L364.7,469.4L364.2,471.0L362.2,472.6L359.2,478.4L356.7,481.0L354.7,482.3L353.6,485.6L351.7,487.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇧🇷 Brazil — 68 QSO</title></path><path d="M305.8,399.7L303.3,399.7L300.8,400.5L297.5,402.5L297.2,403.6L296.7,404.7L296.9,406.1L295.3,407.0L295.3,408.1L294.4,408.6L295.6,411.2L297.2,412.8L296.7,414.3L298.3,414.3L299.4,415.9L301.9,415.9L304.2,414.3L304.2,418.5L305.3,418.8L306.9,418.5L309.2,423.0L308.6,423.9L308.6,425.9L308.6,428.5L307.5,429.9L307.8,430.8L307.2,431.9L308.3,434.2L306.7,437.4L305.8,438.9L304.4,439.5L301.7,438.0L301.4,436.8L296.1,433.9L291.1,430.8L288.9,428.7L287.8,426.5L288.1,425.6L285.8,421.9L283.1,416.8L280.6,411.2L279.4,409.8L278.3,407.8L276.4,405.8L274.2,404.7L275.3,403.6L273.9,400.8L274.7,398.9L276.9,397.2L277.2,398.3L276.4,399.1L276.7,400.0L277.8,399.7L278.9,400.3L280.0,401.6L281.7,400.3L281.9,398.6L283.9,396.1L287.2,395.0L290.3,392.2L291.1,390.2L290.6,388.3L291.4,388.0L293.3,389.1L294.2,390.5L295.3,391.4L296.9,394.1L299.2,394.4L300.6,393.9L301.7,394.1L303.3,394.1L305.6,395.2L303.6,398.0L305.8,399.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇵🇪 Peru — 6 QSO</title></path><path d="M314.2,384.1L313.1,383.0L312.5,382.2L311.4,383.0L306.1,383.0L306.1,384.7L307.8,385.0L307.5,386.1L305.6,386.4L305.6,388.3L306.7,389.1L307.2,390.8L307.2,392.2L305.8,399.7L304.4,398.3L305.6,395.2L303.3,394.1L301.7,394.1L300.6,393.9L299.2,394.4L296.9,394.1L295.3,391.4L294.2,390.5L293.3,389.1L291.4,388.0L290.6,388.3L289.4,387.5L288.1,386.6L287.2,386.9L285.0,386.6L284.2,385.5L280.8,383.9L280.6,383.0L281.7,382.7L281.4,381.3L282.2,380.5L283.6,380.2L284.7,378.6L285.8,377.2L284.7,376.3L285.3,374.7L284.7,372.2L285.3,371.6L284.7,369.1L283.6,367.7L283.9,366.3L285.0,366.6L285.6,365.7L284.7,364.0L286.7,363.8L288.6,361.8L289.7,361.5L290.3,358.1L291.9,356.7L293.6,356.7L296.1,356.4L298.3,355.0L299.4,354.2L300.6,353.0L301.7,353.0L302.5,353.9L301.9,354.7L300.0,355.3L299.4,356.7L298.3,357.6L297.5,358.4L297.2,360.7L296.4,362.1L297.8,362.4L298.1,363.8L298.9,364.3L298.9,365.4L298.6,366.6L299.4,367.4L300.0,368.2L303.6,368.0L305.3,368.2L307.2,370.8L308.3,370.5L310.3,370.5L311.9,370.2L313.1,370.8L312.5,372.2L311.9,373.3L311.7,375.2L312.2,377.2L313.1,378.0L311.7,380.0L312.8,380.5L313.3,381.6L314.2,384.1Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇨🇴 Colombia — 8 QSO</title></path><path d="M270.8,360.9L269.7,361.2L269.7,362.4L270.3,362.9L270.0,363.8L269.4,364.9L268.1,364.3L267.5,363.5L267.8,362.4L266.9,361.8L265.8,361.2L265.0,360.9L264.7,360.1L263.9,359.5L264.2,360.4L263.6,360.9L263.1,360.4L261.9,360.1L261.7,358.7L261.9,357.6L261.4,357.3L261.9,356.7L264.2,357.0L264.7,356.7L265.6,357.0L266.1,357.6L266.9,357.8L267.5,357.3L268.3,358.7L269.4,359.8L270.8,360.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇨🇷 Costa Rica — 3 QSO</title></path><path d="M252.5,337.5L253.3,337.2L254.2,335.4L255.3,336.0L254.7,338.1L254.7,339.5L254.4,341.3L253.9,341.8L253.1,343.0L252.5,339.8L252.5,337.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇧🇿 Belize — 2 QSO</title></path><path d="M331.4,373.3L331.7,374.1L330.6,375.2L327.5,376.1L325.6,376.6L324.7,377.2L322.5,376.6L320.6,376.3L321.1,377.2L321.1,379.1L321.4,380.8L323.9,381.1L321.9,382.5L321.7,383.6L320.6,384.1L318.3,384.7L318.1,385.5L315.8,385.8L314.2,384.1L313.3,381.6L312.8,380.5L311.7,380.0L313.1,378.6L312.2,377.2L311.7,375.2L311.9,373.3L312.5,372.2L313.1,370.8L311.9,370.2L310.3,370.5L308.3,370.5L307.2,370.8L305.3,368.2L303.6,368.0L300.0,368.2L299.4,367.4L298.6,366.6L298.9,365.4L298.9,364.3L298.1,363.8L297.8,362.4L296.4,362.1L297.2,360.7L297.5,358.4L298.3,357.6L299.4,356.7L300.0,355.3L301.9,354.7L300.3,355.9L301.1,357.0L301.1,358.7L299.7,360.1L300.8,362.4L301.9,362.4L302.8,360.1L301.7,359.3L301.7,357.0L305.0,355.9L304.7,354.7L305.8,353.6L306.7,355.6L308.6,355.9L310.6,357.3L310.6,358.1L313.1,358.4L316.1,358.1L317.5,359.3L319.7,359.5L321.4,358.7L324.7,357.8L328.1,357.8L325.8,358.7L326.7,360.1L328.9,360.1L331.1,361.5L331.4,363.8L332.8,363.8L333.9,364.3L331.7,366.0L331.7,367.1L332.5,368.2L331.9,368.5L330.0,369.1L330.3,370.5L329.4,371.0L331.4,373.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇻🇪 Venezuela — 3 QSO</title></path><path d="M356.4,376.1L355.0,378.8L353.9,380.8L353.1,381.9L351.7,381.9L351.1,381.3L349.7,381.9L348.6,381.3L349.2,380.2L349.4,378.8L350.0,377.7L348.9,376.1L348.6,374.1L350.0,371.6L351.1,372.2L353.1,372.7L356.1,374.9L356.4,376.1ZM517.2,229.0L518.6,230.3L522.5,231.2L521.1,234.1L520.8,237.0L520.0,237.8L518.6,237.4L516.7,240.7L516.7,242.3L518.1,241.9L518.9,243.5L519.7,246.3L518.6,247.5L519.4,250.2L521.1,251.0L520.6,252.5L518.1,254.8L512.8,253.7L508.6,254.8L508.3,257.1L505.0,257.8L501.9,255.9L500.8,256.7L495.8,255.2L494.7,253.7L496.1,251.4L496.7,243.5L493.9,239.1L491.7,237.0L487.5,235.4L487.2,232.4L490.8,231.6L495.6,232.8L494.7,227.7L497.2,229.9L503.6,226.5L504.4,223.0L506.9,222.1L507.5,223.4L508.6,223.4L510.0,225.1L511.9,227.3L513.3,226.9L515.8,229.0L517.2,229.0Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇫🇷 France — 799 QSO</title></path><path d="M290.6,388.3L291.1,390.2L290.3,392.2L287.2,395.0L283.9,396.1L281.9,398.6L281.7,400.3L280.0,401.6L278.9,400.3L277.8,399.7L276.7,400.0L276.4,399.1L277.2,398.3L276.9,397.2L278.3,395.2L277.8,393.9L276.7,395.2L275.0,393.9L275.6,393.3L275.3,390.8L276.1,390.2L276.7,388.6L277.8,386.6L277.5,385.5L279.2,385.0L280.8,383.9L283.6,385.5L285.0,386.6L287.2,386.9L288.1,386.6L289.4,387.5L290.6,388.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇪🇨 Ecuador — 1 QSO</title></path><path d="M271.4,321.5L273.9,321.8L276.1,321.8L278.6,322.7L279.7,323.9L282.5,323.6L283.3,324.2L285.8,326.0L287.5,327.5L290.0,328.1L289.7,328.9L291.9,328.9L293.9,330.1L293.6,330.7L291.7,331.3L290.0,331.3L288.1,331.0L283.9,331.3L285.8,329.8L284.7,328.9L283.1,328.9L281.9,328.1L281.4,326.3L279.7,326.3L277.2,325.7L276.4,325.1L272.8,324.5L271.7,323.9L272.8,323.3L270.0,323.0L268.1,324.5L266.9,324.5L266.4,325.4L265.3,325.7L263.9,325.4L265.6,324.5L266.1,323.3L267.2,322.7L268.6,322.1L270.8,321.8L271.4,321.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇨🇺 Cuba — 2 QSO</title></path><path d="M507.5,370.2L507.5,365.7L507.5,364.0L508.1,362.4L508.9,361.5L510.3,359.5L510.0,359.0L510.6,357.8L510.0,356.1L510.0,355.0L510.3,352.5L511.1,351.3L511.4,349.9L512.2,349.3L515.0,348.7L517.8,349.9L518.9,351.0L520.3,351.0L521.7,350.5L525.0,351.9L526.4,351.6L528.1,350.5L529.7,350.7L530.6,350.2L531.9,350.5L534.2,351.3L536.4,349.6L538.9,352.7L540.6,353.9L540.0,355.3L537.8,357.6L536.9,359.3L536.7,360.9L536.1,361.5L535.6,363.5L533.9,364.6L533.6,366.0L532.8,367.1L532.5,368.2L530.8,369.4L529.2,368.0L528.1,368.2L526.4,369.6L524.4,372.4L523.6,374.4L520.8,375.5L519.7,375.2L518.6,376.1L516.4,375.8L515.0,374.1L513.9,372.2L511.9,370.2L510.0,370.2L507.5,370.2Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇳🇬 Nigeria — 2 QSO</title></path><path d="M576.1,373.3L575.0,373.6L573.3,373.3L571.4,373.0L570.3,373.3L569.7,374.1L568.9,374.1L567.8,373.6L564.7,374.9L563.3,374.7L562.2,376.6L560.3,376.1L558.1,375.8L556.4,374.7L554.2,373.8L552.5,374.7L551.4,376.1L551.4,378.0L549.4,377.7L547.5,377.5L545.8,378.8L544.4,381.3L544.2,380.5L544.2,379.4L542.8,378.6L541.7,376.9L541.7,376.1L540.3,374.7L540.6,373.8L540.3,372.4L540.3,370.5L541.1,369.9L542.5,367.1L544.7,366.8L545.3,366.0L546.4,366.8L550.0,365.7L551.1,364.6L552.5,363.8L552.2,362.6L553.1,362.4L555.8,362.6L558.3,361.2L560.3,358.1L561.7,357.0L563.6,356.7L563.9,357.8L565.6,359.5L565.6,360.7L565.0,361.8L565.3,362.6L566.1,363.5L568.3,364.9L569.7,366.0L571.7,368.2L572.8,369.6L573.6,371.3L575.6,372.2L576.1,373.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇨🇫 Central African Republic — 1 QSO</title></path><path d="M551.4,378.0L551.1,379.7L550.3,381.1L549.7,383.0L549.4,385.2L549.4,386.9L549.2,388.0L548.9,388.9L548.6,389.7L546.9,391.1L545.6,392.5L544.4,395.2L544.4,397.5L543.9,398.6L542.2,399.7L540.6,401.6L539.4,401.1L537.8,400.3L536.9,401.4L536.1,401.1L535.0,400.0L534.2,400.5L533.1,401.6L530.8,398.9L533.1,397.2L531.9,395.5L532.8,394.7L534.7,394.4L535.0,393.0L536.4,394.4L538.9,394.7L539.7,393.3L540.0,391.4L539.7,389.4L538.3,387.7L539.7,384.4L538.9,383.9L536.9,384.1L536.1,382.7L536.4,381.3L539.7,381.6L541.9,382.2L544.2,383.0L544.4,381.3L545.8,378.8L547.5,377.5L549.4,377.7L551.4,378.0Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇨🇬 Congo — 2 QSO</title></path><path d="M585.3,410.9L586.7,411.7L587.8,412.3L589.4,412.6L591.1,413.4L592.2,414.8L593.1,417.1L592.5,417.9L591.9,420.2L592.5,422.5L591.7,423.6L590.8,426.2L592.2,427.0L583.9,429.3L584.2,431.3L581.9,431.6L580.3,432.8L580.0,433.9L579.2,434.2L576.7,436.5L575.0,438.3L574.2,438.6L573.3,438.0L570.3,437.7L568.6,436.8L566.7,436.5L564.4,437.1L562.8,435.4L560.8,433.1L560.8,423.9L566.7,423.9L566.4,423.0L566.9,421.9L566.4,420.5L566.7,419.1L566.4,418.2L567.5,418.5L567.5,419.3L568.9,419.1L570.6,419.3L571.7,420.8L573.9,421.0L575.6,420.2L576.1,421.6L578.3,422.2L579.2,423.3L580.3,424.7L582.5,425.0L582.2,421.9L581.4,422.5L579.4,421.3L578.9,420.8L579.2,417.9L579.7,414.5L578.9,413.4L579.7,411.4L580.6,411.2L584.2,410.6L585.3,410.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇿🇲 Zambia — 2 QSO</title></path><path d="M534.2,404.7L535.3,404.4L537.2,404.2L545.3,404.2L546.1,406.1L546.9,407.8L547.5,408.6L548.6,410.3L550.3,410.0L551.4,409.5L552.8,410.0L553.3,409.2L553.9,407.8L555.6,407.5L557.2,407.0L556.9,408.1L560.3,408.1L560.3,409.8L560.8,410.9L560.6,412.6L560.8,414.3L561.7,415.4L561.7,418.8L563.3,418.5L565.3,418.2L566.4,418.2L566.7,419.1L566.4,420.5L566.9,421.9L566.4,423.0L566.7,423.9L560.8,423.9L560.8,433.1L562.8,435.4L564.4,437.1L559.4,438.3L552.8,438.0L550.8,436.5L539.4,436.8L537.5,435.7L535.6,435.4L533.9,436.0L532.5,436.5L532.2,434.8L532.8,432.2L533.6,429.6L533.9,428.2L534.7,425.6L535.3,424.5L536.9,422.7L537.8,421.3L538.1,419.3L538.1,417.6L537.2,416.8L536.4,415.1L535.8,413.4L536.7,411.7L535.8,408.9L535.3,407.0L533.9,405.3L534.2,404.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇦🇴 Angola — 3 QSO</title></path><path d="M599.2,291.5L598.6,292.5L597.8,292.2L597.2,294.2L597.8,294.5L597.2,295.1L598.3,295.5L598.3,296.8L596.9,301.9L596.7,301.0L595.3,296.4L596.1,295.5L596.7,293.5L597.2,291.2L597.5,290.2L598.6,290.2L599.4,289.5L599.4,290.9L599.2,291.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇮🇱 Israel — 65 QSO</title></path><path d="M526.4,299.4L525.3,293.5L523.3,292.2L521.1,289.5L520.8,286.9L522.5,284.9L523.3,282.1L522.8,279.0L523.3,277.3L526.4,275.6L528.3,276.3L528.3,278.0L530.6,276.6L529.4,279.0L529.4,280.8L530.3,281.5L530.0,284.5L528.3,286.2L528.6,287.9L530.3,287.9L530.8,289.5L531.9,290.2L531.7,292.5L530.3,293.5L529.4,294.5L527.5,295.8L528.1,297.1L527.8,298.7L526.4,299.4Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇹🇳 Tunisia — 2 QSO</title></path><path d="M598.6,292.5L599.2,291.5L602.2,292.8L607.8,289.2L608.9,293.2L602.8,295.5L605.6,298.7L604.7,299.4L604.2,300.3L601.9,300.6L601.4,301.9L600.3,302.9L597.2,302.2L598.3,296.8L598.3,295.5L598.6,294.5L598.6,292.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇯🇴 Jordan — 1 QSO</title></path><path d="M643.3,318.4L643.9,319.0L646.1,318.4L648.3,318.4L650.0,318.7L651.9,316.6L653.9,314.8L655.8,312.6L656.4,313.8L656.7,316.3L655.3,316.3L655.0,318.1L654.2,319.3L654.2,320.6L653.3,321.8L653.3,323.0L652.8,323.6L644.4,322.1L643.3,319.0L643.3,318.4Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇦🇪 United Arab Emirates — 2 QSO</title></path><path d="M633.3,300.3L633.9,301.9L634.4,304.8L632.5,305.1L631.9,303.5L629.4,303.2L631.4,300.0L633.3,300.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇰🇼 Kuwait — 3 QSO</title></path><path d="M653.3,323.0L653.3,321.8L654.2,320.6L654.2,319.3L655.6,318.7L655.3,316.3L656.7,316.3L657.8,318.4L659.4,319.3L661.4,319.9L663.1,320.2L664.4,322.1L665.0,323.0L666.1,323.6L665.0,326.0L664.7,326.9L663.6,327.8L662.5,329.8L661.1,329.5L660.6,330.4L660.3,331.9L660.6,333.7L658.9,334.3L657.2,335.1L656.9,336.6L656.4,337.2L654.7,337.2L653.6,338.1L653.6,339.2L652.2,340.1L650.6,339.8L648.9,340.7L647.5,340.7L646.7,338.9L644.4,334.0L652.8,331.0L654.7,325.1L653.3,323.0Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇴🇲 Oman — 4 QSO</title></path><path d="M792.2,347.6L789.7,347.3L786.1,347.9L784.2,350.2L785.0,353.6L782.5,352.5L780.0,352.5L780.6,350.2L778.1,350.2L777.8,353.3L776.4,357.6L775.6,359.8L775.6,362.1L777.5,362.1L778.6,364.6L779.2,367.1L780.6,368.5L782.2,369.1L783.6,370.5L782.8,371.6L781.1,371.9L780.8,370.5L778.6,369.4L778.1,369.6L776.9,368.8L776.4,367.4L775.0,365.7L773.6,364.3L773.1,366.0L772.5,364.6L773.1,362.6L773.9,360.1L775.0,357.0L776.7,354.4L775.6,351.9L775.6,350.5L775.3,349.0L773.3,346.7L772.8,345.3L773.6,344.7L774.7,342.1L773.6,340.4L771.9,338.1L770.6,335.7L771.7,335.1L773.1,331.9L775.0,331.6L776.4,330.4L778.1,329.8L779.2,330.7L779.4,332.5L781.4,332.5L780.6,335.7L780.8,338.4L783.6,336.6L784.4,337.2L786.1,336.9L786.7,336.0L788.9,336.3L790.8,338.6L791.1,341.5L793.3,343.9L793.1,346.5L792.2,347.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇹🇭 Thailand — 3 QSO</title></path><path d="M798.3,347.9L795.8,346.7L794.4,348.7L792.2,347.6L793.1,346.5L793.3,343.9L791.1,341.5L790.8,338.6L788.9,336.3L786.7,336.0L786.1,336.9L784.4,337.2L783.6,336.6L780.8,338.4L780.6,335.7L781.4,332.5L779.4,332.5L779.2,330.7L778.1,329.8L778.6,328.7L781.1,326.9L782.8,327.5L782.5,324.2L783.9,323.6L785.6,326.0L786.7,328.7L790.0,328.7L791.1,331.3L789.4,332.2L788.6,333.1L791.9,334.8L794.2,338.4L796.1,341.0L798.1,343.0L798.9,345.0L798.3,347.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇱🇦 Laos — 1 QSO</title></path><path d="M789.7,358.4L792.2,357.3L795.0,357.0L793.9,355.3L798.6,353.3L798.9,349.9L798.3,347.9L798.9,345.0L798.1,343.0L796.1,341.0L794.2,338.4L791.9,334.8L788.6,333.1L789.4,332.2L791.1,331.3L790.0,328.7L786.7,328.7L785.6,326.0L783.9,323.6L785.3,323.0L787.5,323.0L790.3,322.7L792.5,320.9L793.9,322.1L796.4,322.7L796.1,324.5L797.2,325.7L800.0,326.3L796.4,328.9L794.2,331.6L793.6,333.7L795.6,336.9L798.3,340.7L800.8,342.4L802.5,344.7L803.6,350.2L803.3,355.0L801.1,357.0L797.8,358.7L795.6,361.2L792.2,363.8L791.1,362.1L791.9,360.1L789.7,358.4Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇻🇳 Vietnam — 1 QSO</title></path><path d="M850.6,274.5L851.9,274.2L853.1,272.4L855.0,272.4L856.1,272.1L856.7,271.3L858.9,275.6L859.7,277.7L859.7,281.8L858.6,283.5L856.1,284.2L853.9,285.5L851.4,285.9L851.1,284.2L851.7,281.5L850.3,278.0L852.5,277.3L850.6,274.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇰🇷 South Korea — 27 QSO</title></path><path d="M743.9,229.9L746.7,229.0L751.9,225.6L756.1,223.4L758.6,224.7L761.4,224.7L763.3,226.9L766.1,226.9L770.3,228.2L772.8,225.1L771.7,222.5L774.7,218.1L777.8,219.9L780.3,220.3L783.6,221.2L784.2,224.7L788.1,226.5L790.6,225.6L794.2,225.1L796.9,225.6L799.7,227.7L801.4,229.9L803.9,229.9L807.5,230.7L810.0,229.5L813.6,229.0L817.8,226.0L819.4,226.5L820.8,227.7L824.2,227.3L822.8,230.7L820.8,234.9L821.4,236.6L823.1,235.8L825.8,236.6L828.1,234.9L830.3,236.6L832.8,239.5L832.5,240.7L830.3,240.3L826.1,240.7L824.2,241.9L822.2,244.7L818.1,246.3L815.3,248.2L812.2,247.5L810.8,247.1L809.2,249.4L810.3,251.0L810.6,252.5L808.6,253.7L806.7,255.6L803.3,257.1L799.2,257.1L794.7,258.6L791.7,260.4L790.3,259.3L786.9,259.3L782.8,257.1L780.0,256.3L776.4,257.1L770.8,256.3L767.5,256.3L766.1,254.0L764.7,250.6L763.1,249.8L759.7,247.5L755.8,247.1L752.5,246.3L751.7,244.7L752.8,239.9L750.8,236.6L746.9,234.9L744.4,232.8L743.9,229.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇲🇳 Mongolia — 2 QSO</title></path><path d="M770.3,305.7L770.6,307.0L769.7,307.6L769.7,309.5L767.8,308.9L764.2,311.0L764.4,312.9L762.8,315.4L762.8,316.9L761.4,319.3L759.2,318.7L759.2,322.1L758.6,323.0L758.9,324.2L757.5,325.1L755.8,320.2L754.7,322.1L753.3,320.6L754.2,318.7L755.3,318.7L756.7,316.0L755.0,315.7L752.5,315.7L749.7,315.1L749.4,312.9L748.3,312.9L746.1,311.7L745.0,313.5L746.9,315.4L745.3,316.3L744.7,317.5L746.4,318.4L745.8,320.2L746.9,322.4L747.2,324.8L746.9,326.0L745.0,326.0L741.7,326.6L741.7,328.9L740.3,330.4L736.4,332.5L733.1,336.0L731.1,337.8L728.3,339.8L728.3,341.0L726.9,341.8L724.4,342.7L723.1,343.0L722.2,345.3L722.8,349.0L723.1,351.3L721.9,353.9L721.9,358.7L720.3,359.0L719.2,361.2L720.0,362.1L717.5,362.9L716.4,364.6L715.3,365.4L712.8,362.9L711.4,359.0L710.3,356.1L709.4,354.7L708.1,352.2L707.2,348.5L706.7,346.7L704.2,342.7L703.1,337.2L702.2,333.4L702.2,329.8L701.7,326.9L697.8,328.7L695.8,328.4L692.2,324.8L693.3,323.6L692.5,322.7L689.4,319.9L691.1,317.8L697.2,317.8L696.7,315.4L695.3,313.8L695.0,311.4L693.1,310.1L696.1,306.7L699.4,307.0L702.2,303.5L703.9,300.3L706.7,297.1L706.7,294.8L709.2,292.8L706.9,291.2L705.8,289.2L704.7,286.2L706.1,284.9L710.6,285.5L713.6,284.9L716.1,282.1L719.2,286.2L718.9,288.9L720.0,290.5L720.0,292.2L718.1,291.9L718.6,295.5L721.4,297.4L725.3,299.7L723.6,301.3L722.5,304.1L725.3,305.4L727.8,307.0L731.4,308.6L735.3,309.2L736.9,310.7L738.9,311.0L742.2,311.7L744.7,311.7L745.0,310.4L744.4,308.6L744.7,307.0L746.4,306.4L746.7,308.9L749.2,310.7L751.1,310.1L753.3,310.4L755.6,310.4L755.8,308.2L754.7,307.3L756.9,307.0L759.4,304.8L762.8,302.6L765.0,303.5L766.9,301.9L768.3,304.1L767.2,305.4L770.3,305.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇮🇳 India — 28 QSO</title></path><path d="M688.3,276.6L690.0,272.8L689.4,270.3L687.2,269.6L688.1,267.8L690.3,268.1L691.7,266.0L692.5,263.8L696.4,262.7L695.8,264.5L696.1,265.6L697.2,265.6L696.1,266.7L693.3,266.0L693.1,268.1L695.8,267.8L699.4,268.8L704.7,268.5L705.3,271.7L706.4,271.3L708.1,272.1L707.8,273.5L708.3,275.6L705.6,275.6L703.6,275.2L701.7,277.0L700.6,277.3L699.4,278.0L698.3,276.6L698.6,273.8L698.1,272.4L696.7,271.7L695.6,273.1L695.3,274.5L693.1,274.9L692.2,276.3L691.4,275.9L689.2,277.0L688.3,276.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇹🇯 Tajikistan — 5 QSO</title></path><path d="M697.2,257.8L697.8,256.3L699.4,255.9L704.2,257.1L704.4,254.8L706.1,254.0L710.0,255.6L711.1,255.2L715.8,255.2L719.7,255.6L721.1,257.1L723.1,257.5L722.5,258.6L718.1,260.4L717.2,261.9L713.6,262.3L712.5,264.9L709.7,264.1L707.8,264.9L705.0,266.7L705.6,267.4L704.7,268.5L699.4,268.8L695.8,267.8L693.1,268.1L693.3,266.0L696.1,266.7L697.2,265.6L699.4,266.0L703.1,263.0L699.7,261.2L697.8,262.3L695.6,260.8L698.1,258.2L697.2,257.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇰🇬 Kyrgyzstan — 6 QSO</title></path><path d="M629.2,270.6L628.1,271.0L626.9,268.8L625.8,268.1L625.0,267.4L623.3,266.3L621.4,265.2L621.7,263.8L621.1,262.3L625.0,261.9L625.6,262.7L626.7,263.4L626.1,264.1L627.5,265.6L626.7,266.7L627.8,267.8L629.2,268.1L629.2,270.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇦🇲 Armenia — 1 QSO</title></path><path d="M530.6,184.2L531.9,181.4L534.2,177.6L535.0,170.8L533.3,167.9L533.1,160.0L535.0,153.8L537.8,154.4L538.6,151.9L537.8,149.3L541.9,139.9L544.7,132.2L546.7,127.1L549.2,127.1L550.0,122.5L555.3,124.1L555.6,118.7L557.2,118.7L561.1,122.5L565.3,127.8L565.6,138.5L566.4,141.3L561.7,143.3L558.9,148.0L559.4,151.9L555.0,157.0L549.4,162.5L547.5,170.8L549.4,174.8L552.2,177.6L549.7,183.6L546.7,185.2L545.6,194.1L544.2,198.6L540.8,198.1L539.2,202.1L535.8,202.1L535.0,197.6L532.8,192.0L530.6,184.2Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇸🇪 Sweden — 219 QSO</title></path><path d="M578.3,198.1L581.1,199.6L581.7,200.6L583.1,200.1L585.8,201.1L586.1,203.6L585.6,205.0L587.2,207.9L588.3,208.8L590.0,210.7L590.8,211.6L589.7,213.0L587.5,212.6L587.5,214.9L588.3,217.6L585.8,218.1L585.0,219.0L585.0,221.2L583.9,220.7L581.4,220.7L580.6,219.9L579.4,220.7L578.3,219.9L576.4,219.9L573.1,219.0L570.3,218.5L568.3,218.5L566.7,219.9L565.3,219.9L565.3,218.1L564.4,215.8L566.1,214.9L566.1,213.0L565.3,211.2L565.3,209.3L567.8,209.3L570.8,207.4L571.7,205.0L573.9,203.1L573.6,201.1L575.3,200.1L578.3,198.1Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇧🇾 Belarus — 8 QSO</title></path><path d="M588.3,217.6L589.4,217.6L590.0,216.7L590.8,217.2L593.9,216.7L595.6,219.0L594.7,219.9L595.0,221.2L597.2,221.6L598.3,223.4L601.7,226.0L603.9,225.1L605.6,227.3L607.2,227.3L611.4,228.6L610.3,232.0L610.8,234.5L610.3,235.8L607.8,236.2L606.4,237.4L606.1,239.1L603.9,239.5L602.2,240.7L599.4,241.1L597.2,242.3L597.2,244.7L596.4,243.5L595.6,243.5L593.6,242.7L592.8,243.5L588.1,242.3L588.1,240.7L585.3,241.1L584.4,243.5L582.2,246.3L581.1,245.5L579.7,246.3L578.3,245.5L579.2,245.1L579.7,243.9L580.3,242.3L580.8,241.5L582.8,242.3L583.1,240.7L582.2,239.9L581.7,238.2L580.8,237.4L580.8,236.2L579.7,234.9L578.6,234.5L576.4,233.3L574.7,233.7L573.9,234.5L572.8,234.5L571.9,235.4L570.0,235.8L569.2,236.6L567.8,235.4L566.1,235.4L564.2,234.9L563.1,235.8L561.4,233.7L561.9,232.0L562.8,230.7L562.5,229.0L565.0,225.6L566.4,225.1L566.7,223.8L565.3,219.9L566.7,219.9L568.3,218.5L570.3,218.5L573.1,219.0L576.4,219.9L578.3,219.9L579.4,220.7L580.6,219.9L581.4,220.7L583.9,220.7L585.0,221.2L585.0,219.0L585.8,218.1L588.3,217.6ZM597.2,244.5L597.3,244.8L598.1,246.0L598.6,246.3L598.7,246.3L599.2,246.1L599.3,246.0L599.3,245.9L599.4,245.8L599.4,245.7L599.5,245.6L599.6,245.6L599.6,245.8L599.6,245.8L600.0,246.0L600.1,246.0L600.1,245.9L600.2,245.8L600.3,245.7L600.7,245.7L600.8,245.6L600.8,245.6L600.9,245.7L600.8,245.7L600.9,245.7L601.1,245.7L601.4,245.7L601.5,245.8L601.6,245.8L601.7,245.8L601.8,246.0L601.8,246.1L601.8,246.1L601.6,246.2L601.5,246.1L601.4,246.1L601.3,246.2L601.4,246.3L601.4,246.3L601.3,246.3L601.2,246.5L601.1,246.9L601.1,247.0L601.3,247.1L601.3,247.2L601.0,247.3L600.8,247.3L600.7,247.4L600.6,247.4L600.4,247.4L600.2,247.3L600.2,247.3L600.1,247.3L600.0,247.5L599.8,247.5L599.6,247.5L599.5,247.5L599.5,247.3L599.4,247.2L599.2,247.1L598.9,247.0L598.6,247.0L598.4,247.2L598.3,247.4L598.4,247.5L598.3,247.5L598.2,247.5L598.3,247.7L598.1,247.6L598.1,247.6L598.0,247.6L597.9,247.6L597.8,247.8L597.6,247.9L597.4,248.3L597.3,248.2L597.3,248.1L597.1,248.1L596.9,248.2L596.8,248.2L596.7,248.2L596.6,248.2L596.1,248.4L595.8,248.5L595.8,248.6L595.8,248.5L595.6,248.8L595.4,249.2L595.2,249.2L595.1,249.4L594.9,249.5L594.8,249.7L594.3,249.9L594.2,249.9L594.0,249.8L593.9,249.8L593.7,249.8L593.4,249.7L593.4,249.6L593.3,249.4L593.1,249.5L592.7,249.2L592.7,249.1L592.7,249.1L592.8,249.1L592.9,249.0L593.3,249.0L593.1,248.9L593.1,248.8L593.2,248.6L593.1,248.3L593.2,248.1L593.3,248.0L593.4,248.0L593.4,247.7L593.2,247.1L593.2,247.0L592.8,246.7L592.4,246.8L592.3,246.8L592.1,246.7L591.9,246.5L591.9,246.4L591.5,246.1L591.4,246.1L590.9,246.0L590.7,246.2L590.5,246.2L590.3,246.1L590.2,245.8L590.3,245.7L590.4,245.7L590.7,245.4L590.8,245.4L591.0,245.3L591.2,245.3L591.2,245.1L591.3,245.0L591.5,244.9L592.2,244.5L592.2,244.5L592.1,244.4L592.1,244.4L592.3,244.5L592.4,244.5L592.7,244.3L592.8,244.2L593.0,244.1L593.1,244.1L593.4,244.0L593.5,244.1L593.6,244.1L593.6,243.9L593.6,243.9L593.8,243.8L593.7,243.7L593.6,243.7L593.4,243.7L593.4,243.7L593.5,243.6L593.4,243.5L593.4,243.4L593.4,243.2L593.5,243.1L593.4,242.9L593.4,242.9L593.4,242.6L593.5,242.6L593.7,242.7L593.9,242.7L594.0,242.7L594.2,242.9L594.4,243.0L594.6,243.1L594.7,243.0L594.8,243.1L594.9,243.2L595.1,243.3L595.4,243.3L595.6,243.5L595.6,243.6L595.8,243.7L595.9,243.7L596.0,243.5L596.2,243.6L596.5,243.9L596.7,243.9L596.7,244.3L597.1,244.5L597.2,244.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇺🇦 Ukraine — 3&nbsp;443 QSO</title></path><path d="M565.3,209.3L565.3,211.2L566.1,213.0L566.1,214.9L564.4,215.8L565.3,218.1L565.3,219.9L566.7,223.8L566.4,225.1L565.0,225.6L562.5,229.0L563.3,231.2L560.0,229.0L558.1,229.9L556.7,229.5L555.0,230.3L553.6,228.6L552.5,229.5L551.1,226.9L548.9,226.9L548.9,225.1L546.9,224.7L546.4,226.0L545.0,225.1L543.1,223.4L541.7,222.1L540.6,219.4L540.8,217.6L540.0,215.3L539.2,213.5L540.0,212.6L539.2,209.8L541.1,208.3L545.6,206.4L548.9,204.5L551.7,205.5L554.7,206.9L558.1,207.4L563.1,207.4L564.4,207.9L565.3,209.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇵🇱 Poland — 1&nbsp;061 QSO</title></path><path d="M547.2,234.9L546.9,236.6L545.3,236.6L545.8,237.4L545.0,239.9L544.4,240.7L541.9,240.7L540.6,241.9L538.3,241.5L534.4,240.3L533.9,239.1L531.1,239.9L528.9,239.9L527.5,239.9L526.4,239.1L526.7,238.2L527.5,237.0L528.9,238.2L529.2,237.0L531.7,237.4L533.6,236.6L535.0,236.6L535.8,237.4L535.8,234.1L536.7,233.7L537.8,231.6L539.7,232.8L541.4,231.2L542.5,231.2L544.4,232.4L545.8,232.0L547.2,232.8L547.2,234.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇦🇹 Austria — 228 QSO</title></path><path d="M561.4,233.7L562.8,234.5L561.4,236.6L560.0,239.5L558.3,242.3L556.1,243.1L554.4,242.7L552.2,243.9L551.4,244.3L548.9,243.5L546.9,241.9L546.1,241.5L545.6,240.3L545.8,237.4L545.3,236.6L546.9,236.6L547.2,234.9L548.6,235.8L549.7,236.2L551.9,235.8L553.3,234.9L554.7,234.1L556.1,234.1L556.9,232.8L557.8,232.8L560.8,234.1L561.4,233.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇭🇺 Hungary — 232 QSO</title></path><path d="M573.9,234.5L574.7,233.7L576.4,233.3L578.6,234.5L579.7,234.9L580.8,236.2L580.8,237.4L581.7,238.2L582.2,239.9L583.1,240.7L583.3,241.9L581.1,241.9L580.3,241.9L579.7,243.9L579.2,245.1L578.3,245.5L578.1,243.9L578.3,241.9L578.1,240.3L576.7,237.8L575.6,236.2L574.7,234.9L573.9,234.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇲🇩 Moldova — 64 QSO</title></path><path d="M578.3,245.5L579.7,246.3L581.1,245.5L582.2,246.3L580.8,248.2L580.0,247.9L579.4,252.5L577.8,252.1L575.6,250.6L572.5,251.7L571.1,252.5L566.9,252.5L564.7,251.7L563.6,252.1L563.1,250.6L562.5,249.8L563.1,249.0L562.5,248.6L561.4,249.4L560.0,248.2L559.7,246.7L558.1,245.9L557.8,244.7L556.1,243.1L558.3,242.3L560.0,239.5L561.4,236.6L563.1,235.8L564.2,234.9L566.1,235.4L567.8,235.4L569.2,236.6L570.0,235.8L571.9,235.4L572.8,234.5L573.9,234.5L574.7,234.9L575.6,236.2L576.7,237.8L578.1,240.3L578.3,241.9L578.1,243.9L578.3,245.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇷🇴 Romania — 300 QSO</title></path><path d="M573.6,201.1L573.9,203.1L571.7,205.0L570.8,207.4L567.8,209.3L565.3,209.3L564.4,207.9L563.1,207.4L563.3,204.5L561.9,204.0L559.2,203.1L558.6,199.1L561.7,197.6L566.4,197.6L569.2,197.1L570.8,198.6L573.6,201.1Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇱🇹 Lithuania — 142 QSO</title></path><path d="M575.8,191.5L577.2,193.1L577.5,195.1L578.3,198.1L575.3,200.1L573.6,201.1L570.8,198.6L569.4,198.1L566.4,197.6L561.7,197.6L558.6,199.1L558.6,195.1L560.0,192.0L562.5,190.0L564.7,194.1L566.9,194.1L567.5,190.0L570.0,188.9L571.1,190.0L573.6,191.5L575.8,191.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇱🇻 Latvia — 116 QSO</title></path><path d="M577.8,180.9L576.1,185.2L576.9,190.0L575.8,191.5L573.6,191.5L571.1,190.0L570.0,188.9L567.5,190.0L567.8,186.8L566.9,187.4L565.0,185.8L564.7,182.5L568.3,180.9L571.9,180.3L574.7,181.4L577.8,180.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇪🇪 Estonia — 44 QSO</title></path><path d="M539.2,209.8L540.0,212.6L539.2,213.5L540.0,215.3L540.8,217.6L540.6,219.4L541.7,222.1L540.6,222.5L539.7,222.1L539.2,223.0L536.9,223.8L536.1,224.7L533.9,225.6L534.4,226.9L534.7,229.0L536.1,229.9L537.8,231.6L536.7,233.7L535.8,234.1L536.1,237.0L535.0,236.6L533.6,236.6L531.7,237.4L529.2,237.0L528.9,238.2L527.5,237.0L526.7,237.4L523.6,236.2L523.1,237.0L520.8,237.0L521.1,234.1L522.5,231.2L518.6,230.3L517.2,229.0L517.2,227.3L516.7,226.5L517.2,223.4L516.7,218.5L518.3,218.5L518.9,217.2L519.7,213.0L519.2,211.2L519.7,210.2L521.9,210.2L522.5,211.2L524.4,208.8L523.9,206.9L523.6,204.0L525.8,205.0L527.5,204.0L527.5,206.0L530.3,206.9L530.3,208.8L533.3,207.9L534.7,206.4L537.8,208.3L539.2,209.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇩🇪 Germany — 2&nbsp;346 QSO</title></path><path d="M563.1,250.6L563.6,252.1L564.7,251.7L566.9,252.5L571.1,252.5L572.5,251.7L575.6,250.6L577.8,252.1L579.4,252.5L577.8,254.0L576.9,256.7L577.8,259.0L575.3,258.6L572.5,259.7L572.5,261.6L570.0,261.9L568.1,260.4L565.8,261.6L563.9,261.6L563.6,259.0L562.2,257.8L562.8,255.6L563.9,254.4L562.5,252.9L562.2,251.4L563.1,250.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇧🇬 Bulgaria — 91 QSO</title></path><path d="M563.9,261.6L565.8,261.6L568.1,260.4L570.0,261.9L572.5,261.6L572.5,259.7L573.9,260.4L573.1,263.0L572.5,263.4L570.6,263.0L569.2,263.0L565.8,263.8L567.8,266.0L566.4,266.3L564.7,266.3L563.3,264.5L562.8,265.2L563.6,267.4L565.0,269.2L563.9,269.9L565.3,271.7L566.7,272.8L566.7,274.5L564.2,273.8L565.0,275.6L563.3,275.9L564.4,279.0L562.5,279.0L560.3,277.7L559.2,274.9L558.6,272.4L557.5,270.6L556.1,268.8L557.2,266.0L557.5,264.9L558.3,264.1L560.3,263.0L561.4,261.9L562.8,262.3L563.9,261.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇬🇷 Greece — 414 QSO</title></path><path d="M624.4,276.3L623.1,277.0L621.9,275.9L618.9,275.6L617.5,276.3L614.4,276.6L613.1,276.6L609.7,278.0L607.5,278.0L606.1,277.3L603.1,278.4L601.9,277.7L601.9,279.4L601.1,280.4L600.3,281.1L599.4,279.4L600.6,278.0L598.9,278.4L596.4,277.7L594.4,279.7L590.3,280.1L588.1,278.4L585.0,278.0L584.4,279.4L582.5,280.1L579.7,278.0L576.7,278.0L575.0,274.5L573.1,272.8L574.4,269.9L572.8,268.1L575.8,264.9L580.0,264.5L581.1,261.9L586.4,262.3L589.7,260.1L593.1,259.0L597.8,259.0L602.5,261.6L606.4,263.0L609.7,262.3L612.2,262.7L615.6,260.8L618.3,260.4L621.1,262.3L621.7,263.8L621.4,265.2L623.3,266.3L624.4,267.4L622.5,268.5L623.3,272.4L622.8,273.5L624.4,276.3ZM572.5,259.7L575.3,258.6L577.8,259.0L578.1,260.4L580.6,261.6L580.0,262.3L576.7,262.7L575.6,263.8L573.3,265.6L572.2,264.1L573.1,263.0L573.9,260.4L572.5,259.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇹🇷 Türkiye — 90 QSO</title></path><path d="M546.1,241.5L546.9,241.9L548.9,243.5L551.4,244.3L552.2,243.9L553.1,245.5L553.9,246.7L552.8,247.9L551.7,247.1L549.7,247.1L547.2,246.7L545.8,246.7L545.3,247.5L544.4,246.7L543.6,248.2L545.0,249.8L545.8,251.4L546.9,252.5L548.1,253.7L549.2,255.2L551.7,256.7L548.6,255.9L546.9,254.4L544.4,253.3L542.2,250.6L541.4,248.6L541.4,247.1L539.7,246.7L538.9,248.2L538.1,247.1L538.1,245.5L540.0,245.5L540.6,245.1L541.4,245.5L542.5,245.5L543.6,244.3L543.9,242.7L546.1,241.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇭🇷 Croatia — 157 QSO</title></path><path d="M526.7,237.4L526.4,239.1L527.5,239.9L528.9,239.9L528.9,241.5L527.5,242.3L525.6,241.9L525.0,243.5L523.6,243.5L521.7,244.3L520.3,244.3L518.9,243.5L518.1,241.9L516.7,242.3L516.7,240.7L518.9,238.2L520.0,237.8L520.8,237.0L523.1,237.0L523.6,236.2L526.7,237.4Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇨🇭 Switzerland — 128 QSO</title></path><path d="M517.2,223.4L516.7,226.5L515.8,229.0L513.3,226.9L511.9,227.3L510.0,225.1L508.6,223.4L507.5,223.4L506.9,222.1L509.2,221.2L511.1,221.2L513.9,220.3L515.6,222.5L517.2,223.4Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇧🇪 Belgium — 335 QSO</title></path><path d="M519.2,211.2L519.7,213.0L518.9,217.2L518.3,218.5L516.7,218.5L517.2,223.4L515.6,222.5L513.9,220.3L511.1,221.2L509.2,221.2L510.6,219.9L513.1,213.0L516.9,211.2L519.2,211.2Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇳🇱 Netherlands — 703 QSO</title></path><path d="M475.0,259.3L475.8,258.6L476.9,257.8L477.8,259.7L479.4,259.7L481.4,259.3L482.2,261.2L480.8,262.3L480.8,265.2L480.3,267.4L479.2,267.8L480.3,269.9L479.4,272.1L480.6,273.1L480.0,274.2L479.2,275.6L479.2,276.6L478.1,277.7L476.7,277.0L475.3,277.3L475.8,274.5L475.6,272.4L474.2,272.1L473.6,271.0L473.9,268.5L475.0,267.0L475.0,265.6L475.6,263.4L475.6,261.9L475.0,260.8L475.0,259.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇵🇹 Portugal — 115 QSO</title></path><path d="M479.2,276.6L479.2,275.6L480.0,274.2L480.6,273.1L479.4,272.1L480.3,269.9L479.2,267.8L480.3,267.4L480.6,265.6L480.8,262.3L482.2,261.2L481.4,259.3L479.7,259.3L477.8,259.7L476.9,257.8L475.8,258.6L475.0,259.3L475.0,256.7L473.9,255.2L477.8,252.5L481.1,252.9L485.0,252.9L488.1,253.7L490.3,253.3L494.7,253.7L495.8,255.2L500.8,256.7L501.9,255.9L505.0,257.8L508.3,257.1L508.3,259.3L505.8,261.9L502.2,262.7L501.9,263.8L500.3,266.0L499.2,268.8L500.3,271.0L498.6,272.4L498.1,274.9L496.1,275.6L494.2,278.0L490.6,278.0L487.8,278.0L486.1,279.4L485.0,280.8L483.6,280.4L482.8,279.0L481.9,277.3L479.2,276.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇪🇸 Spain — 761 QSO</title></path><path d="M482.8,209.3L483.3,212.6L481.1,216.7L476.1,219.4L472.2,219.0L474.4,214.0L473.1,209.3L476.9,205.5L478.9,203.6L479.4,206.0L478.9,208.3L480.6,208.3L482.8,209.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇮🇪 Ireland — 37 QSO</title></path><path d="M991.4,509.5L990.3,511.3L988.9,513.9L986.7,515.4L986.4,514.3L985.3,513.9L986.7,511.0L985.8,508.8L982.8,507.4L983.1,505.9L985.0,504.8L985.3,502.0L985.3,499.9L984.2,497.5L982.8,495.4L980.8,492.3L979.4,490.0L980.6,490.0L982.2,491.6L984.2,492.7L985.0,495.7L986.9,499.2L987.2,496.8L988.3,497.8L988.9,500.6L991.1,501.7L992.8,502.0L994.4,500.6L995.8,501.0L995.3,504.1L994.4,506.3L992.2,505.9L991.4,507.0L991.7,508.8L991.4,509.5ZM971.4,522.6L973.6,520.3L975.3,518.4L976.7,515.8L977.8,514.7L978.1,512.8L980.0,511.0L980.6,512.4L981.1,513.9L983.3,512.4L983.9,513.9L983.9,515.8L983.1,517.3L981.1,520.3L979.7,521.8L980.8,523.7L978.6,523.7L976.4,524.9L975.6,527.6L973.9,531.6L971.7,533.6L970.3,534.4L967.8,534.4L966.1,533.2L963.1,532.8L962.5,531.6L963.9,528.4L967.5,524.5L969.2,523.7L971.4,522.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇳🇿 New Zealand — 9 QSO</title></path><path d="M910.3,512.1L911.9,512.4L912.2,516.9L911.1,518.0L910.8,521.1L910.0,519.9L908.1,522.6L905.6,522.2L903.9,519.2L903.6,516.5L901.9,513.6L901.9,511.7L903.9,512.1L906.7,513.2L908.1,512.8L910.3,512.1ZM850.3,482.3L847.5,483.9L845.0,484.9L844.4,486.6L843.6,487.9L841.1,487.9L839.4,488.3L836.9,487.6L835.0,487.9L833.1,488.3L831.4,490.0L829.2,490.6L827.8,492.0L825.8,491.6L823.9,491.6L821.1,489.6L819.4,488.9L819.4,486.9L820.8,486.6L821.4,485.9L821.4,484.6L821.7,482.3L821.4,480.3L820.0,477.1L819.4,475.2L819.4,473.6L818.3,471.3L817.2,469.1L816.7,466.6L815.3,464.1L814.7,462.9L816.1,464.1L815.0,461.3L816.4,462.3L817.2,463.5L817.2,462.0L815.8,459.5L815.6,458.6L815.0,457.7L815.3,455.8L815.8,455.2L816.1,453.7L815.8,451.9L816.9,449.8L817.2,451.9L818.3,449.8L820.8,448.9L821.9,447.7L824.2,446.5L825.6,446.2L826.1,446.5L828.3,445.6L830.0,445.3L830.6,444.5L831.4,444.5L832.8,444.5L835.8,443.6L837.2,442.1L838.1,440.6L839.4,439.2L839.7,438.0L839.7,436.5L841.7,433.9L842.8,436.5L844.2,436.0L843.1,434.5L843.9,433.1L845.3,433.6L845.6,431.6L846.9,430.2L847.8,429.0L849.2,428.5L850.3,427.9L851.7,427.0L853.1,426.5L855.0,427.9L856.7,429.6L858.3,429.6L860.0,429.9L859.4,428.2L860.8,425.9L861.9,425.3L861.7,424.5L862.8,422.7L864.4,421.9L865.8,422.2L868.3,421.6L868.3,420.2L866.1,419.3L867.8,418.8L869.4,419.6L871.1,420.8L873.3,421.3L874.2,421.0L875.8,421.9L877.5,421.3L878.6,421.3L879.2,421.0L880.6,422.5L879.7,423.9L878.6,425.0L877.8,425.0L878.1,426.2L877.2,427.6L876.1,429.0L876.4,429.9L878.6,431.6L880.8,432.5L882.2,433.4L884.2,435.1L886.4,436.0L886.9,436.8L889.4,437.7L891.4,436.8L891.9,435.1L892.5,433.9L892.8,432.2L893.6,429.9L893.3,428.7L893.3,427.9L893.1,426.2L893.6,423.9L893.9,423.3L893.6,422.5L894.2,421.0L894.7,419.3L895.8,417.6L896.7,419.1L896.9,420.8L897.5,421.0L897.8,422.2L898.6,423.6L898.9,425.3L898.9,426.5L899.7,428.5L901.7,427.6L902.5,428.7L903.9,429.9L903.6,431.0L904.2,433.6L904.4,435.1L905.3,435.4L906.1,438.0L905.8,439.5L906.7,441.5L909.7,443.0L911.7,444.5L913.3,445.6L913.1,446.2L914.7,448.3L915.8,451.3L916.9,450.7L918.1,452.2L918.6,451.6L919.2,454.9L921.1,456.8L922.5,458.0L924.7,460.4L925.3,462.9L925.6,464.4L925.3,466.6L926.7,469.1L926.4,472.0L925.8,473.6L925.3,476.5L925.3,478.1L924.7,480.3L923.3,483.6L921.4,484.9L920.3,487.6L919.4,489.3L918.6,492.3L917.5,494.0L916.9,496.4L916.4,498.9L916.7,499.9L915.0,501.3L911.9,501.3L909.4,502.7L908.1,504.1L906.4,505.6L904.2,504.1L902.5,503.4L902.8,501.7L901.4,502.4L898.9,504.8L896.4,503.8L895.0,503.4L893.3,503.1L890.6,502.0L888.9,499.9L888.3,497.1L887.8,495.4L886.4,494.0L883.6,493.7L884.4,492.0L883.9,489.6L882.5,492.0L880.0,492.7L881.7,490.6L881.9,488.6L883.1,486.9L882.8,484.6L880.6,487.6L878.9,488.6L877.8,491.3L875.6,490.0L875.6,487.9L873.9,485.6L872.5,484.3L873.1,483.6L869.4,481.6L867.5,481.6L864.7,480.0L859.7,480.3L856.1,481.3L853.1,482.6L850.3,482.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇦🇺 Australia — 19 QSO</title></path><path d="M804.2,336.3L801.9,335.4L801.7,332.8L803.1,331.6L806.1,330.7L807.8,330.7L808.3,331.9L807.2,333.1L806.4,334.8L804.2,336.3ZM723.1,257.5L722.8,255.6L724.7,254.4L722.2,247.9L727.5,246.3L729.2,245.5L731.1,238.2L736.7,239.5L738.1,237.4L738.3,233.3L740.6,233.3L742.8,230.3L743.9,229.9L744.4,232.8L746.9,234.9L750.8,236.6L752.8,239.9L751.7,244.7L752.5,246.3L755.8,247.1L759.7,247.5L763.1,249.8L764.7,250.6L766.1,254.0L767.5,256.3L770.8,256.3L776.4,257.1L780.0,256.3L782.8,257.1L786.9,259.3L790.3,259.3L791.7,260.4L794.7,258.6L799.2,257.1L803.3,257.1L806.7,255.6L808.6,253.7L810.6,252.5L810.3,251.0L809.2,249.4L810.8,247.1L812.2,247.5L815.3,248.2L818.1,246.3L822.2,244.7L824.2,241.9L826.1,240.7L830.3,240.3L832.5,240.7L832.8,239.5L830.3,236.6L828.1,234.9L825.8,236.6L823.1,235.8L821.4,236.6L820.8,234.9L822.8,230.7L824.2,227.3L827.5,229.0L831.4,226.5L831.4,224.3L833.9,219.9L835.3,218.1L835.3,215.8L833.9,214.4L836.1,212.1L839.4,211.6L843.3,211.2L847.5,212.6L849.7,214.4L851.7,219.0L852.5,220.7L853.6,223.8L854.7,227.7L859.4,229.5L862.8,232.4L863.9,236.2L868.1,236.2L870.6,234.5L875.0,233.3L873.6,237.0L872.5,238.7L871.7,243.1L869.7,247.1L866.4,246.3L863.9,247.5L864.7,251.0L864.2,255.6L862.8,255.6L862.8,257.5L861.1,255.2L860.0,257.5L855.8,259.0L856.1,260.8L853.6,260.8L852.5,259.7L850.6,262.3L847.5,264.1L845.3,266.7L841.4,267.8L839.2,269.2L836.4,270.3L837.8,268.5L837.2,267.0L839.4,264.9L837.8,263.0L835.6,264.1L832.2,266.7L830.6,268.8L827.8,269.2L826.4,271.0L828.1,273.1L830.3,273.8L830.3,275.6L832.5,276.3L835.6,273.8L838.1,275.2L840.0,275.2L840.3,277.3L836.4,278.0L835.0,280.1L832.5,281.8L831.1,284.2L833.9,285.9L835.0,289.2L836.7,292.2L838.6,294.8L838.6,297.4L836.9,298.1L837.5,300.0L839.2,301.0L838.6,303.5L838.1,306.0L836.4,306.4L834.4,309.5L832.2,313.8L829.7,317.5L825.8,320.2L821.9,322.7L818.9,323.0L817.2,324.5L816.1,323.6L814.4,324.8L810.6,326.3L807.8,326.9L806.7,330.1L805.3,330.1L804.4,328.1L805.3,326.9L801.4,326.0L800.0,326.3L797.2,325.7L796.1,324.5L796.4,322.7L793.9,322.1L792.5,320.9L790.3,322.7L787.5,323.0L785.3,323.0L783.9,323.6L782.5,324.2L782.8,327.5L781.4,327.5L780.8,325.7L778.9,326.3L777.8,326.0L775.6,324.8L776.4,322.4L774.7,321.8L774.2,318.7L771.1,319.3L771.4,315.7L774.2,313.2L774.2,310.7L774.2,308.2L772.8,307.6L771.9,305.7L770.3,305.7L767.2,305.4L768.3,304.1L766.9,301.9L765.0,303.5L762.8,302.6L759.4,304.8L756.9,307.0L754.7,307.3L753.6,306.7L751.9,306.4L750.0,305.7L748.6,306.7L746.7,308.9L746.4,306.4L744.7,307.0L741.7,306.7L738.3,306.0L736.1,304.8L733.9,304.1L733.1,302.6L731.4,301.9L728.6,300.0L726.4,299.0L725.3,299.7L721.4,297.4L718.6,295.5L718.1,291.9L720.0,292.2L720.0,290.5L718.9,288.9L719.2,286.2L716.1,282.1L711.7,280.8L710.8,278.0L708.9,276.6L708.3,275.6L707.8,273.5L708.1,272.1L706.4,271.3L705.3,271.7L704.7,268.5L705.6,267.4L705.0,266.7L707.8,264.9L709.7,264.1L712.5,264.9L713.6,262.3L717.2,261.9L718.1,260.4L722.5,258.6L723.1,257.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇨🇳 China — 178 QSO</title></path><path d="M838.3,317.8L836.7,322.7L835.3,325.1L833.9,322.7L833.6,320.2L835.3,317.5L837.5,315.1L838.9,316.0L838.3,317.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇹🇼 Taiwan — 1 QSO</title></path><path d="M528.9,239.9L530.8,240.3L533.9,239.1L534.4,240.3L538.3,241.5L538.1,243.5L538.6,245.1L536.4,244.7L534.2,245.9L534.4,247.9L534.2,249.0L535.0,251.0L537.5,252.9L538.9,255.9L541.9,259.0L544.2,259.0L545.0,260.1L544.2,260.8L546.7,261.9L548.6,263.0L551.1,264.9L550.8,267.0L549.2,265.2L546.9,264.9L545.8,267.0L547.8,268.5L547.5,270.3L546.1,270.6L544.7,273.5L543.6,273.8L544.2,270.6L544.7,269.9L543.6,268.1L542.8,266.3L541.7,265.6L540.8,264.1L539.2,263.4L537.8,261.9L535.8,261.6L533.6,260.1L531.1,257.5L529.2,255.6L528.3,251.7L526.9,251.4L524.7,249.8L523.3,250.6L521.7,252.1L520.6,252.5L521.1,251.0L519.4,250.2L518.6,247.5L519.7,246.3L518.9,244.7L520.3,244.3L521.7,244.3L523.1,242.7L525.0,243.5L525.6,241.9L527.5,242.3L528.9,241.5L528.9,239.9ZM541.1,273.1L543.1,272.8L542.2,275.6L542.5,276.6L541.9,278.4L539.7,277.0L538.3,276.6L534.4,274.9L535.0,273.1L538.1,273.5L541.1,273.1ZM524.2,263.0L525.6,261.9L527.2,264.5L526.9,269.2L525.6,269.2L524.4,270.3L523.3,269.2L523.3,264.9L522.8,262.7L524.2,263.0Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇮🇹 Italy — 1&nbsp;012 QSO</title></path><path d="M527.5,204.0L525.8,205.0L523.6,204.0L522.5,201.6L522.5,196.6L523.1,195.1L523.6,193.6L526.1,193.1L527.2,192.0L529.4,190.5L529.2,193.1L528.6,194.6L528.9,196.1L530.3,196.6L529.7,198.6L528.9,198.1L526.7,201.6L527.5,204.0ZM534.4,198.6L535.3,201.1L533.6,205.0L530.6,202.1L530.3,200.1L534.4,198.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇩🇰 Denmark — 116 QSO</title></path><path d="M482.8,209.3L480.6,208.3L478.9,208.3L479.4,206.0L478.9,203.6L481.4,203.1L484.2,206.0L482.8,209.3ZM491.4,211.6L491.9,208.8L490.0,206.0L486.7,205.0L485.8,203.6L486.9,201.6L486.1,200.1L484.4,202.6L484.4,197.6L482.8,195.1L483.9,190.0L486.1,185.8L488.3,185.8L491.7,185.8L488.6,191.0L491.4,190.5L494.4,190.5L493.9,194.6L491.4,199.1L494.2,199.6L496.9,206.0L498.9,206.4L500.6,212.1L501.4,214.0L504.7,214.9L504.4,217.6L502.8,219.0L503.9,221.2L501.4,223.4L497.8,223.4L493.1,224.7L491.7,223.8L490.0,226.0L487.5,225.6L485.6,226.9L483.9,226.0L488.1,221.6L490.6,220.7L486.1,219.9L485.3,218.1L488.3,216.7L486.7,214.4L487.2,211.2L491.4,211.6Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇬🇧 United Kingdom — 915 QSO</title></path><path d="M459.7,137.8L459.2,142.6L462.2,147.3L458.6,151.9L450.6,156.3L448.1,157.6L444.4,157.0L436.7,154.4L439.4,151.9L433.3,148.6L438.3,147.3L432.5,144.0L434.2,139.2L438.6,138.5L442.8,143.3L446.9,139.2L450.6,141.3L455.0,137.8L459.7,137.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇮🇸 Iceland — 8 QSO</title></path><path d="M628.9,259.3L631.7,261.9L632.8,261.9L633.3,261.2L635.0,259.7L636.4,261.6L637.8,264.1L639.2,264.5L640.0,265.2L637.8,265.6L637.2,268.5L636.7,269.9L635.8,270.6L635.8,272.4L633.3,270.6L634.4,268.8L633.6,267.8L632.5,268.1L629.2,270.6L629.2,268.1L627.8,267.8L626.7,266.7L627.5,265.6L626.1,264.1L626.7,263.4L625.6,262.7L625.0,261.9L625.6,261.2L627.8,262.3L629.2,262.3L628.1,260.1L628.9,259.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇦🇿 Azerbaijan — 1 QSO</title></path><path d="M611.1,253.7L613.6,253.7L617.8,254.4L621.7,256.3L621.9,256.7L623.6,256.3L626.4,257.1L627.2,258.6L628.9,259.3L628.1,260.1L629.4,261.9L627.8,262.3L625.6,261.2L625.0,261.9L621.1,262.3L618.3,260.4L615.6,260.8L615.8,259.0L615.3,256.7L613.6,255.2L611.9,254.8L611.1,253.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇬🇪 Georgia — 6 QSO</title></path><path d="M778.1,369.6L778.6,369.4L780.8,370.5L781.1,371.9L782.8,371.6L783.6,370.5L786.1,372.4L787.2,374.1L787.2,376.1L786.9,377.5L787.2,378.3L787.5,380.0L788.6,380.8L789.4,383.3L789.4,384.1L787.5,384.4L785.0,382.2L781.7,380.0L781.4,378.6L779.7,376.9L779.4,374.4L778.3,373.0L778.6,371.0L778.1,369.6ZM827.5,376.3L825.0,375.8L821.9,375.8L820.8,378.8L819.7,380.0L818.3,383.9L816.1,384.4L813.6,383.6L812.2,383.9L810.6,385.2L808.9,385.0L806.9,385.5L805.0,384.1L804.7,382.2L806.7,383.0L808.9,382.5L809.4,380.2L810.6,379.7L813.9,379.1L815.8,376.9L817.2,375.2L818.6,376.6L819.2,375.8L820.3,375.8L820.6,373.8L820.8,372.7L822.8,370.8L824.2,368.5L825.3,368.5L826.7,369.9L826.9,371.0L828.6,371.9L831.1,372.7L830.8,373.8L828.9,373.8L829.4,375.2L827.5,376.3Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇲🇾 Malaysia — 2 QSO</title></path><path d="M538.3,241.5L540.6,241.9L541.9,240.7L544.4,240.7L545.0,239.9L546.1,241.5L543.9,242.7L543.6,244.3L542.5,244.7L541.4,245.5L540.6,245.1L540.0,245.5L538.1,245.5L538.1,243.5L538.3,241.5Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇸🇮 Slovenia — 118 QSO</title></path><path d="M579.4,118.7L578.9,124.1L583.3,129.3L580.8,135.0L583.9,142.6L581.9,148.6L584.4,153.2L583.3,157.0L587.5,161.3L586.4,164.3L583.9,167.9L578.1,175.3L573.1,175.9L568.1,177.6L563.6,179.2L561.9,175.9L559.2,174.2L559.7,168.4L558.6,163.1L559.7,159.4L562.2,155.7L568.6,148.6L570.6,147.3L570.3,144.7L566.4,141.3L565.6,138.5L565.3,127.8L561.1,122.5L557.2,118.7L558.9,116.3L562.2,121.0L565.8,120.2L568.6,122.5L571.4,118.7L572.8,113.2L576.9,109.9L580.6,113.2L579.4,118.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇫🇮 Finland — 261 QSO</title></path><path d="M562.8,230.7L561.9,232.0L561.4,233.7L557.8,232.8L556.9,232.8L556.1,234.1L555.0,234.5L553.3,234.9L552.2,234.9L549.7,236.2L548.6,235.8L547.2,234.9L546.9,233.3L547.5,232.0L548.6,232.0L549.7,231.6L550.3,231.2L551.1,229.9L552.5,229.0L553.6,228.6L555.0,230.3L556.7,229.5L558.1,229.9L560.0,229.0L562.8,230.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇸🇰 Slovakia — 91 QSO</title></path><path d="M541.7,222.1L543.1,223.4L545.0,223.8L546.4,226.0L546.9,224.7L548.9,225.1L548.9,226.9L551.1,226.9L552.5,229.0L551.1,229.9L550.3,231.2L549.7,231.6L548.6,232.0L547.5,232.0L547.2,232.8L545.8,232.0L544.4,232.4L542.5,231.2L541.4,231.2L539.7,232.8L537.8,231.6L536.1,229.9L534.7,229.0L534.4,226.9L533.9,225.6L536.1,224.7L536.9,223.8L539.2,223.0L539.7,222.1L540.6,222.5L541.7,222.1Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇨🇿 Czechia — 288 QSO</title></path><path d="M894.2,269.2L891.7,272.8L891.7,276.6L890.6,279.4L891.1,281.1L889.7,283.5L886.1,284.9L881.1,285.2L877.2,288.9L875.3,287.9L875.3,285.2L870.3,285.9L867.2,287.5L863.9,287.5L866.7,290.2L864.7,295.5L863.1,297.1L861.7,295.8L862.2,292.8L860.6,291.9L859.4,289.5L862.2,288.5L863.6,286.5L866.4,284.5L868.3,282.5L873.9,281.5L876.9,282.1L879.7,275.9L881.7,277.7L885.8,274.2L887.2,272.8L889.2,268.5L888.6,264.1L889.7,261.9L892.8,261.2L894.2,266.3L894.2,269.2ZM901.7,251.4L903.6,249.8L904.2,254.0L900.3,255.2L897.8,259.0L893.3,256.3L891.9,260.4L888.9,260.4L888.3,256.7L889.7,254.0L892.8,253.7L893.6,248.2L894.4,245.1L897.5,249.4L899.7,250.6L901.7,251.4ZM867.8,288.9L869.2,286.9L870.8,287.5L871.9,285.9L873.9,286.9L874.4,287.9L872.8,289.9L871.7,288.9L870.3,289.5L869.4,291.5L867.8,290.5L867.8,288.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q5);stroke:var(--rp-country-edge)"><title>🇯🇵 Japan — 827 QSO</title></path><path d="M597.2,302.2L600.3,302.9L601.4,301.9L601.9,300.6L604.2,300.3L604.7,299.4L605.6,298.7L602.8,295.5L608.3,293.8L612.2,294.2L616.4,296.4L624.2,302.9L629.4,303.2L631.9,303.5L632.5,305.1L634.4,304.8L635.6,307.6L636.9,308.2L637.5,309.5L639.4,310.7L639.4,312.0L639.2,313.2L639.4,314.1L640.3,315.1L640.8,316.0L641.1,316.6L641.9,317.2L643.3,318.4L644.4,322.1L652.8,323.6L653.3,323.0L654.7,325.1L652.8,331.0L644.4,334.0L636.4,335.1L633.9,336.3L631.9,339.5L630.6,340.1L629.7,338.9L628.9,339.2L626.1,338.9L622.5,338.6L621.7,338.9L620.6,338.1L619.7,339.5L620.0,340.7L618.9,341.8L618.3,340.4L617.5,339.5L617.5,338.4L616.1,337.5L614.4,334.8L613.6,332.5L611.7,330.4L610.6,330.1L608.6,327.2L608.3,325.1L608.6,323.3L606.9,319.9L605.6,318.7L604.2,318.1L603.3,316.3L602.5,314.1L601.7,313.5L600.8,311.0L598.9,308.6L597.5,306.4L596.1,306.4L596.7,304.8L596.7,303.5L597.2,302.2Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇸🇦 Saudi Arabia — 12 QSO</title></path><path d="M551.7,256.7L549.2,255.2L548.1,253.7L546.9,252.5L545.8,251.4L545.0,249.8L543.6,248.2L544.4,246.7L545.3,247.5L545.8,246.7L547.2,246.7L549.7,247.1L551.7,247.1L552.8,247.9L553.9,247.9L553.1,249.8L554.4,251.4L554.2,252.9L552.8,253.7L551.9,254.4L551.7,256.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇧🇦 Bosnia and Herzegovina — 49 QSO</title></path><path d="M562.2,257.8L563.6,259.0L563.9,261.6L562.8,262.3L561.4,261.9L560.3,263.0L558.3,263.4L557.2,262.3L556.9,260.8L557.2,259.3L557.8,258.6L559.4,258.2L560.8,257.8L562.2,257.8Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇲🇰 North Macedonia — 9 QSO</title></path><path d="M552.2,243.9L554.4,242.7L556.1,243.1L557.8,244.7L558.1,245.9L559.7,246.7L560.0,248.2L561.4,249.4L562.5,248.6L563.1,249.0L562.5,249.8L563.1,250.6L562.2,251.4L562.5,252.9L563.9,254.4L562.8,255.6L562.2,256.7L560.8,257.8L560.0,258.2L560.6,256.3L559.4,255.6L558.6,254.8L557.8,254.0L556.9,255.6L555.6,254.8L554.4,254.4L553.3,253.3L554.4,251.4L553.1,249.8L553.9,247.9L552.8,247.9L553.9,246.7L553.1,245.5L552.2,243.9Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q4);stroke:var(--rp-country-edge)"><title>🇷🇸 Serbia — 74 QSO</title></path><path d="M555.8,256.7L555.0,257.1L553.6,258.2L553.9,259.3L552.5,257.8L551.1,257.1L551.9,254.4L552.8,253.7L554.2,253.7L555.6,254.8L556.4,255.6L555.8,256.7Z" fill-opacity="0.82" stroke-width="0.80" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇲🇪 Montenegro — 9 QSO</title></path><circle cx="598.8888888888889" cy="287.5439535470708" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇱🇧 Lebanon — 17 QSO</title></circle><circle cx="516.9444444444445" cy="227.74787666206242" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q3);stroke:var(--rp-country-edge)"><title>🇱🇺 Luxembourg — 16 QSO</title></circle><circle cx="592.7777777777778" cy="283.4991217412675" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇨🇾 Cyprus — 9 QSO</title></circle><circle cx="540" cy="280.7694616460152" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇲🇹 Malta — 7 QSO</title></circle><circle cx="817.2222222222222" cy="324.1702695926885" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇭🇰 Hong Kong — 6 QSO</title></circle><circle cx="520.5555555555555" cy="252.5158733268505" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇲🇨 Monaco — 5 QSO</title></circle><circle cx="640.2777777777778" cy="312.9039284305809" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇧🇭 Bahrain — 4 QSO</title></circle><circle cx="642.2222222222222" cy="314.7535792046515" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇶🇦 Qatar — 4 QSO</title></circle><circle cx="504.44444444444446" cy="257.081298136946" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q2);stroke:var(--rp-country-edge)"><title>🇦🇩 Andorra — 3 QSO</title></circle><circle cx="660" cy="445.3476676437832" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇲🇺 Mauritius — 2 QSO</title></circle><circle cx="330" cy="357.8440944457453" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>🇹🇹 Trinidad and Tobago — 2 QSO</title></circle><circle cx="534.7222222222222" cy="251.74614906837317" r="4.00" fill-opacity="0.9" stroke-width="1.00" style="fill:var(--rp-q1);stroke:var(--rp-country-edge)"><title>null SM — 1 QSO</title></circle><rect x="594.4444444444445" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.78" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN77 — 768 QSO</title></rect><rect x="583.3333333333334" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.71" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN59 — 592 QSO</title></rect><rect x="572.2222222222222" y="222.51812004305694" width="5.555555555555657" height="4.367256615166667" fill-opacity="0.70" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO30 — 562 QSO</title></rect><rect x="511.1111111111111" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.57" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO21 — 308 QSO</title></rect><rect x="511.1111111111111" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.56" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO22 — 275 QSO</title></rect><rect x="583.3333333333334" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.55" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO50 — 263 QSO</title></rect><rect x="516.6666666666666" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.53" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO31 — 233 QSO</title></rect><rect x="561.1111111111111" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.50" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN19 — 194 QSO</title></rect><rect x="561.1111111111111" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.50" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM19 — 189 QSO</title></rect><rect x="516.6666666666666" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.50" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO30 — 186 QSO</title></rect><rect x="516.6666666666666" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.49" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO32 — 179 QSO</title></rect><rect x="883.3333333333334" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.49" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM95 — 178 QSO</title></rect><rect x="550" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.48" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO90 — 170 QSO</title></rect><rect x="522.2222222222222" y="243.50237836743187" width="5.555555555555657" height="3.9632605847782543" fill-opacity="0.48" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN45 — 167 QSO</title></rect><rect x="566.6666666666666" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.47" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN29 — 152 QSO</title></rect><rect x="527.7777777777778" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.46" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN59 — 146 QSO</title></rect><rect x="522.2222222222222" y="222.51812004305694" width="5.555555555555657" height="4.367256615166667" fill-opacity="0.46" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO40 — 141 QSO</title></rect><rect x="522.2222222222222" y="226.8853766582236" width="5.555555555555657" height="4.277339379680598" fill-opacity="0.46" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN49 — 137 QSO</title></rect><rect x="533.3333333333334" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.45" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO62 — 135 QSO</title></rect><rect x="494.44444444444446" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.45" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO91 — 127 QSO</title></rect><rect x="533.3333333333334" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.45" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO61 — 125 QSO</title></rect><rect x="505.55555555555554" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.43" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN11 — 111 QSO</title></rect><rect x="522.2222222222222" y="218.0556956588022" width="5.555555555555657" height="4.462424384254746" fill-opacity="0.43" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO41 — 109 QSO</title></rect><rect x="555.5555555555555" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.43" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO02 — 105 QSO</title></rect><rect x="872.2222222222222" y="283.8384333433931" width="5.555555555555657" height="3.3706565611611268" fill-opacity="0.43" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM74 — 105 QSO</title></rect><rect x="494.44444444444446" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.43" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO93 — 104 QSO</title></rect><rect x="522.2222222222222" y="213.49244201308906" width="5.555555555555657" height="4.563253645713132" fill-opacity="0.43" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO42 — 103 QSO</title></rect><rect x="538.8888888888889" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.42" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN76 — 101 QSO</title></rect><rect x="533.3333333333334" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.42" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN65 — 101 QSO</title></rect><rect x="572.2222222222222" y="226.8853766582236" width="5.555555555555657" height="4.277339379680598" fill-opacity="0.42" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN39 — 98 QSO</title></rect><rect x="527.7777777777778" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.42" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN58 — 96 QSO</title></rect><rect x="511.1111111111111" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.42" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO20 — 95 QSO</title></rect><rect x="494.44444444444446" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.41" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO92 — 91 QSO</title></rect><rect x="494.44444444444446" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.41" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM99 — 90 QSO</title></rect><rect x="516.6666666666666" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.41" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN39 — 90 QSO</title></rect><rect x="550" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.41" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO94 — 89 QSO</title></rect><rect x="538.8888888888889" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.41" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO71 — 88 QSO</title></rect><rect x="500" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.41" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO01 — 85 QSO</title></rect><rect x="550" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.41" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN97 — 85 QSO</title></rect><rect x="544.4444444444445" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN88 — 83 QSO</title></rect><rect x="527.7777777777778" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO52 — 83 QSO</title></rect><rect x="505.55555555555554" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN16 — 82 QSO</title></rect><rect x="561.1111111111111" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM18 — 81 QSO</title></rect><rect x="527.7777777777778" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO50 — 81 QSO</title></rect><rect x="522.2222222222222" y="235.35501770154804" width="5.555555555555657" height="4.111807706701768" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN47 — 80 QSO</title></rect><rect x="522.2222222222222" y="231.1627160379042" width="5.555555555555657" height="4.192301663643832" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN48 — 80 QSO</title></rect><rect x="500" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN01 — 79 QSO</title></rect><rect x="505.55555555555554" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO10 — 77 QSO</title></rect><rect x="533.3333333333334" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN64 — 76 QSO</title></rect><rect x="533.3333333333334" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN68 — 76 QSO</title></rect><rect x="527.7777777777778" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.40" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN55 — 76 QSO</title></rect><rect x="527.7777777777778" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN54 — 74 QSO</title></rect><rect x="544.4444444444445" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO83 — 74 QSO</title></rect><rect x="516.6666666666666" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO33 — 73 QSO</title></rect><rect x="505.55555555555554" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO11 — 71 QSO</title></rect><rect x="527.7777777777778" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN57 — 71 QSO</title></rect><rect x="527.7777777777778" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO53 — 71 QSO</title></rect><rect x="544.4444444444445" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN86 — 68 QSO</title></rect><rect x="566.6666666666666" y="172.49869040212596" width="5.555555555555543" height="5.641552495387941" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP20 — 68 QSO</title></rect><rect x="488.8888888888889" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO81 — 67 QSO</title></rect><rect x="544.4444444444445" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO82 — 67 QSO</title></rect><rect x="566.6666666666666" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.39" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO24 — 67 QSO</title></rect><rect x="533.3333333333334" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.38" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN69 — 65 QSO</title></rect><rect x="538.8888888888889" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.38" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO70 — 63 QSO</title></rect><rect x="583.3333333333334" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.38" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN57 — 63 QSO</title></rect><rect x="527.7777777777778" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.38" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN53 — 63 QSO</title></rect><rect x="533.3333333333334" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.38" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN63 — 62 QSO</title></rect><rect x="544.4444444444445" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.38" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO80 — 61 QSO</title></rect><rect x="877.7777777777778" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.38" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM85 — 61 QSO</title></rect><rect x="488.8888888888889" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.38" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO83 — 59 QSO</title></rect><rect x="516.6666666666666" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN37 — 58 QSO</title></rect><rect x="488.8888888888889" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN80 — 58 QSO</title></rect><rect x="544.4444444444445" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN89 — 57 QSO</title></rect><rect x="494.44444444444446" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM98 — 55 QSO</title></rect><rect x="550" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN99 — 55 QSO</title></rect><rect x="544.4444444444445" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN87 — 55 QSO</title></rect><rect x="572.2222222222222" y="247.46563895221013" width="5.555555555555657" height="3.894678425061784" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN34 — 54 QSO</title></rect><rect x="883.3333333333334" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM97 — 54 QSO</title></rect><rect x="494.44444444444446" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO94 — 54 QSO</title></rect><rect x="555.5555555555555" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO01 — 54 QSO</title></rect><rect x="522.2222222222222" y="208.82224124739574" width="5.555555555555657" height="4.670200765693323" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO43 — 53 QSO</title></rect><rect x="527.7777777777778" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO51 — 53 QSO</title></rect><rect x="555.5555555555555" y="194.10079063562821" width="5.555555555555543" height="5.033136190639567" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO06 — 53 QSO</title></rect><rect x="566.6666666666666" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN28 — 53 QSO</title></rect><rect x="538.8888888888889" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.37" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN78 — 52 QSO</title></rect><rect x="600" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN89 — 51 QSO</title></rect><rect x="538.8888888888889" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN79 — 51 QSO</title></rect><rect x="555.5555555555555" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN05 — 50 QSO</title></rect><rect x="533.3333333333334" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN61 — 50 QSO</title></rect><rect x="550" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO93 — 50 QSO</title></rect><rect x="538.8888888888889" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN75 — 49 QSO</title></rect><rect x="577.7777777777778" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN45 — 49 QSO</title></rect><rect x="561.1111111111111" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN10 — 46 QSO</title></rect><rect x="555.5555555555555" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN04 — 46 QSO</title></rect><rect x="516.6666666666666" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN36 — 46 QSO</title></rect><rect x="533.3333333333334" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO60 — 46 QSO</title></rect><rect x="883.3333333333334" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM96 — 46 QSO</title></rect><rect x="594.4444444444445" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM72 — 45 QSO</title></rect><rect x="550" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO91 — 45 QSO</title></rect><rect x="566.6666666666666" y="166.67661920518327" width="5.555555555555543" height="5.822071196942687" fill-opacity="0.36" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP21 — 45 QSO</title></rect><rect x="494.44444444444446" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO90 — 43 QSO</title></rect><rect x="866.6666666666666" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM64 — 42 QSO</title></rect><rect x="572.2222222222222" y="235.35501770154804" width="5.555555555555657" height="4.111807706701768" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN37 — 41 QSO</title></rect><rect x="477.77777777777777" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM67 — 41 QSO</title></rect><rect x="488.8888888888889" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO82 — 40 QSO</title></rect><rect x="877.7777777777778" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM86 — 40 QSO</title></rect><rect x="538.8888888888889" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO72 — 40 QSO</title></rect><rect x="544.4444444444445" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO81 — 39 QSO</title></rect><rect x="583.3333333333334" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.35" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN56 — 39 QSO</title></rect><rect x="516.6666666666666" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN38 — 38 QSO</title></rect><rect x="494.44444444444446" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN96 — 37 QSO</title></rect><rect x="533.3333333333334" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO65 — 37 QSO</title></rect><rect x="550" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO92 — 37 QSO</title></rect><rect x="555.5555555555555" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN09 — 36 QSO</title></rect><rect x="538.8888888888889" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN70 — 36 QSO</title></rect><rect x="555.5555555555555" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN07 — 34 QSO</title></rect><rect x="594.4444444444445" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO70 — 34 QSO</title></rect><rect x="861.1111111111111" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM53 — 34 QSO</title></rect><rect x="288.8888888888889" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN20 — 34 QSO</title></rect><rect x="533.3333333333334" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO67 — 33 QSO</title></rect><rect x="511.1111111111111" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN25 — 33 QSO</title></rect><rect x="538.8888888888889" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO73 — 33 QSO</title></rect><rect x="505.55555555555554" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN19 — 33 QSO</title></rect><rect x="583.3333333333334" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.34" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO51 — 33 QSO</title></rect><rect x="500" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO02 — 32 QSO</title></rect><rect x="522.2222222222222" y="247.46563895221013" width="5.555555555555657" height="3.894678425061784" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN44 — 31 QSO</title></rect><rect x="511.1111111111111" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN23 — 31 QSO</title></rect><rect x="505.55555555555554" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN18 — 31 QSO</title></rect><rect x="511.1111111111111" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO23 — 31 QSO</title></rect><rect x="566.6666666666666" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO27 — 31 QSO</title></rect><rect x="511.1111111111111" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN29 — 31 QSO</title></rect><rect x="533.3333333333334" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN62 — 31 QSO</title></rect><rect x="500" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN00 — 30 QSO</title></rect><rect x="866.6666666666666" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM63 — 30 QSO</title></rect><rect x="561.1111111111111" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO14 — 30 QSO</title></rect><rect x="594.4444444444445" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN78 — 29 QSO</title></rect><rect x="488.8888888888889" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN83 — 29 QSO</title></rect><rect x="527.7777777777778" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO54 — 29 QSO</title></rect><rect x="538.8888888888889" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN71 — 29 QSO</title></rect><rect x="538.8888888888889" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM77 — 28 QSO</title></rect><rect x="555.5555555555555" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO00 — 28 QSO</title></rect><rect x="577.7777777777778" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN47 — 28 QSO</title></rect><rect x="572.2222222222222" y="243.50237836743187" width="5.555555555555657" height="3.9632605847782543" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN35 — 28 QSO</title></rect><rect x="538.8888888888889" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN77 — 27 QSO</title></rect><rect x="533.3333333333334" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN66 — 27 QSO</title></rect><rect x="500" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN05 — 27 QSO</title></rect><rect x="566.6666666666666" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN25 — 27 QSO</title></rect><rect x="294.44444444444446" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.33" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN31 — 27 QSO</title></rect><rect x="494.44444444444446" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN95 — 26 QSO</title></rect><rect x="500" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN09 — 26 QSO</title></rect><rect x="522.2222222222222" y="204.03846734268703" width="5.555555555555657" height="4.78377390470871" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO44 — 26 QSO</title></rect><rect x="561.1111111111111" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM17 — 26 QSO</title></rect><rect x="550" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN96 — 26 QSO</title></rect><rect x="472.22222222222223" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN52 — 26 QSO</title></rect><rect x="533.3333333333334" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO64 — 25 QSO</title></rect><rect x="500" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN06 — 25 QSO</title></rect><rect x="566.6666666666666" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO21 — 25 QSO</title></rect><rect x="483.3333333333333" y="251.3603173772719" width="5.5555555555556" height="3.8295763562965703" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN73 — 24 QSO</title></rect><rect x="888.8888888888889" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QM07 — 24 QSO</title></rect><rect x="566.6666666666666" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN22 — 24 QSO</title></rect><rect x="522.2222222222222" y="239.4668254082498" width="5.555555555555657" height="4.03555295918207" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN46 — 24 QSO</title></rect><rect x="566.6666666666666" y="178.1402428975139" width="5.555555555555543" height="5.473509982643179" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO29 — 24 QSO</title></rect><rect x="283.3333333333333" y="269.9197759191894" width="5.5555555555556" height="3.549487223574829" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM18 — 24 QSO</title></rect><rect x="544.4444444444445" y="178.1402428975139" width="5.555555555555543" height="5.473509982643179" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO89 — 24 QSO</title></rect><rect x="544.4444444444445" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN85 — 23 QSO</title></rect><rect x="483.3333333333333" y="204.03846734268703" width="5.5555555555556" height="4.78377390470871" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO74 — 23 QSO</title></rect><rect x="833.3333333333334" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM01 — 23 QSO</title></rect><rect x="472.22222222222223" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM58 — 23 QSO</title></rect><rect x="550" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN93 — 23 QSO</title></rect><rect x="555.5555555555555" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO03 — 23 QSO</title></rect><rect x="488.8888888888889" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO80 — 23 QSO</title></rect><rect x="500" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO00 — 23 QSO</title></rect><rect x="516.6666666666666" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN35 — 23 QSO</title></rect><rect x="888.8888888888889" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QM05 — 23 QSO</title></rect><rect x="566.6666666666666" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN26 — 23 QSO</title></rect><rect x="533.3333333333334" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.32" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN67 — 23 QSO</title></rect><rect x="488.8888888888889" y="194.10079063562821" width="5.555555555555543" height="5.033136190639567" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO86 — 22 QSO</title></rect><rect x="550" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN95 — 22 QSO</title></rect><rect x="477.77777777777777" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO63 — 22 QSO</title></rect><rect x="527.7777777777778" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO55 — 22 QSO</title></rect><rect x="483.3333333333333" y="273.46926314276425" width="5.5555555555556" height="3.5014090379658" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM77 — 22 QSO</title></rect><rect x="888.8888888888889" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QM08 — 22 QSO</title></rect><rect x="527.7777777777778" y="178.1402428975139" width="5.555555555555543" height="5.473509982643179" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO59 — 22 QSO</title></rect><rect x="561.1111111111111" y="194.10079063562821" width="5.555555555555543" height="5.033136190639567" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO16 — 21 QSO</title></rect><rect x="888.8888888888889" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QM09 — 21 QSO</title></rect><rect x="594.4444444444445" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM71 — 21 QSO</title></rect><rect x="888.8888888888889" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QM06 — 21 QSO</title></rect><rect x="555.5555555555555" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO05 — 21 QSO</title></rect><rect x="300" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN41 — 21 QSO</title></rect><rect x="877.7777777777778" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM84 — 21 QSO</title></rect><rect x="511.1111111111111" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN26 — 20 QSO</title></rect><rect x="527.7777777777778" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN56 — 20 QSO</title></rect><rect x="583.3333333333334" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN58 — 20 QSO</title></rect><rect x="494.44444444444446" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN94 — 19 QSO</title></rect><rect x="561.1111111111111" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN16 — 19 QSO</title></rect><rect x="494.44444444444446" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM97 — 19 QSO</title></rect><rect x="483.3333333333333" y="262.66662631858026" width="5.5555555555556" height="3.6531334595057956" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN70 — 19 QSO</title></rect><rect x="544.4444444444445" y="160.66019983883487" width="5.555555555555543" height="6.016419366348401" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP82 — 19 QSO</title></rect><rect x="522.2222222222222" y="194.10079063562821" width="5.555555555555657" height="5.033136190639567" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO46 — 19 QSO</title></rect><rect x="561.1111111111111" y="172.49869040212596" width="5.555555555555543" height="5.641552495387941" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP10 — 19 QSO</title></rect><rect x="577.7777777777778" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN41 — 19 QSO</title></rect><rect x="300" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN42 — 19 QSO</title></rect><rect x="561.1111111111111" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN18 — 18 QSO</title></rect><rect x="483.3333333333333" y="276.97067218073005" width="5.5555555555556" height="3.4556545863185875" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM76 — 18 QSO</title></rect><rect x="577.7777777777778" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN43 — 18 QSO</title></rect><rect x="488.8888888888889" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN87 — 18 QSO</title></rect><rect x="566.6666666666666" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN23 — 18 QSO</title></rect><rect x="500" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN07 — 18 QSO</title></rect><rect x="472.22222222222223" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM59 — 18 QSO</title></rect><rect x="544.4444444444445" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN83 — 18 QSO</title></rect><rect x="261.1111111111111" y="266.31975977808605" width="5.5555555555556" height="3.6000161411033673" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM79 — 18 QSO</title></rect><rect x="483.3333333333333" y="222.51812004305694" width="5.5555555555556" height="4.367256615166667" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO70 — 18 QSO</title></rect><rect x="577.7777777777778" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN49 — 18 QSO</title></rect><rect x="366.6666666666667" y="453.41789565454195" width="5.555555555555543" height="3.0290560508297517" fill-opacity="0.31" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG66 — 18 QSO</title></rect><rect x="794.4444444444445" y="404.4378142251923" width="5.555555555555543" height="2.7957856642470915" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI33 — 17 QSO</title></rect><rect x="511.1111111111111" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN27 — 17 QSO</title></rect><rect x="544.4444444444445" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM88 — 17 QSO</title></rect><rect x="538.8888888888889" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN72 — 17 QSO</title></rect><rect x="477.77777777777777" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN62 — 17 QSO</title></rect><rect x="277.77777777777777" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM05 — 17 QSO</title></rect><rect x="561.1111111111111" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN13 — 16 QSO</title></rect><rect x="283.3333333333333" y="266.31975977808605" width="5.5555555555556" height="3.6000161411033673" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM19 — 16 QSO</title></rect><rect x="488.8888888888889" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO85 — 16 QSO</title></rect><rect x="544.4444444444445" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN84 — 16 QSO</title></rect><rect x="588.8888888888889" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN68 — 16 QSO</title></rect><rect x="266.6666666666667" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN80 — 16 QSO</title></rect><rect x="516.6666666666666" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN33 — 16 QSO</title></rect><rect x="572.2222222222222" y="160.66019983883487" width="5.555555555555657" height="6.016419366348401" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP32 — 16 QSO</title></rect><rect x="511.1111111111111" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN28 — 16 QSO</title></rect><rect x="883.3333333333334" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM94 — 16 QSO</title></rect><rect x="488.8888888888889" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM86 — 16 QSO</title></rect><rect x="483.3333333333333" y="199.13392682626778" width="5.5555555555556" height="4.904540516419246" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO75 — 16 QSO</title></rect><rect x="561.1111111111111" y="166.67661920518327" width="5.555555555555543" height="5.822071196942687" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP11 — 16 QSO</title></rect><rect x="544.4444444444445" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN81 — 16 QSO</title></rect><rect x="277.77777777777777" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN03 — 16 QSO</title></rect><rect x="255.55555555555554" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN61 — 16 QSO</title></rect><rect x="561.1111111111111" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN12 — 15 QSO</title></rect><rect x="544.4444444444445" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO84 — 15 QSO</title></rect><rect x="577.7777777777778" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN44 — 15 QSO</title></rect><rect x="588.8888888888889" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO61 — 15 QSO</title></rect><rect x="533.3333333333334" y="194.10079063562821" width="5.555555555555543" height="5.033136190639567" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO66 — 15 QSO</title></rect><rect x="572.2222222222222" y="266.31975977808605" width="5.555555555555657" height="3.6000161411033673" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM39 — 15 QSO</title></rect><rect x="272.22222222222223" y="303.5074235107419" width="5.555555555555543" height="3.1608781666190566" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL98 — 15 QSO</title></rect><rect x="566.6666666666666" y="194.10079063562821" width="5.555555555555543" height="5.033136190639567" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO26 — 14 QSO</title></rect><rect x="266.6666666666667" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.30" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN82 — 14 QSO</title></rect><rect x="494.44444444444446" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN98 — 13 QSO</title></rect><rect x="500" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN08 — 13 QSO</title></rect><rect x="494.44444444444446" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN93 — 13 QSO</title></rect><rect x="505.55555555555554" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN17 — 13 QSO</title></rect><rect x="566.6666666666666" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM25 — 13 QSO</title></rect><rect x="550" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN98 — 13 QSO</title></rect><rect x="583.3333333333334" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM57 — 13 QSO</title></rect><rect x="538.8888888888889" y="194.10079063562821" width="5.555555555555543" height="5.033136190639567" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO76 — 13 QSO</title></rect><rect x="588.8888888888889" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN67 — 13 QSO</title></rect><rect x="555.5555555555555" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN06 — 13 QSO</title></rect><rect x="555.5555555555555" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN08 — 13 QSO</title></rect><rect x="572.2222222222222" y="172.49869040212596" width="5.555555555555657" height="5.641552495387941" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP30 — 13 QSO</title></rect><rect x="544.4444444444445" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN80 — 13 QSO</title></rect><rect x="477.77777777777777" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM66 — 13 QSO</title></rect><rect x="522.2222222222222" y="178.1402428975139" width="5.555555555555657" height="5.473509982643179" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO49 — 13 QSO</title></rect><rect x="483.3333333333333" y="255.18989373356848" width="5.5555555555556" height="3.767743980753579" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN72 — 13 QSO</title></rect><rect x="527.7777777777778" y="172.49869040212596" width="5.555555555555543" height="5.641552495387941" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP50 — 13 QSO</title></rect><rect x="538.8888888888889" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM78 — 13 QSO</title></rect><rect x="294.44444444444446" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN30 — 13 QSO</title></rect><rect x="888.8888888888889" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN03 — 13 QSO</title></rect><rect x="266.6666666666667" y="306.66830167736094" width="5.555555555555543" height="3.1316778114170916" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL87 — 13 QSO</title></rect><rect x="283.3333333333333" y="273.46926314276425" width="5.5555555555556" height="3.5014090379658" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM17 — 12 QSO</title></rect><rect x="555.5555555555555" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM07 — 12 QSO</title></rect><rect x="533.3333333333334" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO63 — 12 QSO</title></rect><rect x="527.7777777777778" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO57 — 12 QSO</title></rect><rect x="577.7777777777778" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO40 — 12 QSO</title></rect><rect x="494.44444444444446" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN97 — 12 QSO</title></rect><rect x="538.8888888888889" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO75 — 12 QSO</title></rect><rect x="822.2222222222222" y="262.66662631858026" width="5.555555555555657" height="3.6531334595057956" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>ON80 — 12 QSO</title></rect><rect x="822.2222222222222" y="266.31975977808605" width="5.555555555555657" height="3.6000161411033673" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM89 — 12 QSO</title></rect><rect x="488.8888888888889" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN88 — 11 QSO</title></rect><rect x="600" y="390.5185208521069" width="5.555555555555543" height="2.778765296914571" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KI88 — 11 QSO</title></rect><rect x="572.2222222222222" y="251.3603173772719" width="5.555555555555657" height="3.8295763562965703" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN33 — 11 QSO</title></rect><rect x="561.1111111111111" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO15 — 11 QSO</title></rect><rect x="561.1111111111111" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO13 — 11 QSO</title></rect><rect x="561.1111111111111" y="160.66019983883487" width="5.555555555555543" height="6.016419366348401" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP12 — 11 QSO</title></rect><rect x="833.3333333333334" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM00 — 11 QSO</title></rect><rect x="522.2222222222222" y="199.13392682626778" width="5.555555555555657" height="4.904540516419246" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO45 — 11 QSO</title></rect><rect x="238.88888888888889" y="243.50237836743187" width="5.555555555555571" height="3.9632605847782543" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN35 — 11 QSO</title></rect><rect x="261.1111111111111" y="258.95763771432206" width="5.5555555555556" height="3.708988604258195" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN71 — 11 QSO</title></rect><rect x="505.55555555555554" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN12 — 11 QSO</title></rect><rect x="527.7777777777778" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN52 — 11 QSO</title></rect><rect x="450" y="303.5074235107419" width="5.555555555555543" height="3.1608781666190566" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IL18 — 11 QSO</title></rect><rect x="250" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN52 — 11 QSO</title></rect><rect x="488.8888888888889" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO84 — 11 QSO</title></rect><rect x="477.77777777777777" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO64 — 11 QSO</title></rect><rect x="294.44444444444446" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.29" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN32 — 11 QSO</title></rect><rect x="794.4444444444445" y="393.2972861490215" width="5.555555555555543" height="2.780459550913065" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI37 — 10 QSO</title></rect><rect x="561.1111111111111" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN15 — 10 QSO</title></rect><rect x="594.4444444444445" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM73 — 10 QSO</title></rect><rect x="600" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN88 — 10 QSO</title></rect><rect x="800" y="404.4378142251923" width="5.555555555555543" height="2.7957856642470915" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI43 — 10 QSO</title></rect><rect x="572.2222222222222" y="239.4668254082498" width="5.555555555555657" height="4.03555295918207" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN36 — 10 QSO</title></rect><rect x="283.3333333333333" y="251.3603173772719" width="5.5555555555556" height="3.8295763562965703" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN13 — 10 QSO</title></rect><rect x="277.77777777777777" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN00 — 10 QSO</title></rect><rect x="538.8888888888889" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO78 — 10 QSO</title></rect><rect x="311.1111111111111" y="333.96805012534554" width="5.5555555555556" height="2.929190803744234" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FK68 — 10 QSO</title></rect><rect x="288.8888888888889" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM29 — 10 QSO</title></rect><rect x="561.1111111111111" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO10 — 10 QSO</title></rect><rect x="272.22222222222223" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM95 — 10 QSO</title></rect><rect x="516.6666666666666" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN34 — 10 QSO</title></rect><rect x="500" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN03 — 10 QSO</title></rect><rect x="550" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO97 — 9 QSO</title></rect><rect x="816.6666666666666" y="322.0633084194684" width="5.555555555555543" height="3.0066962588207957" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL72 — 9 QSO</title></rect><rect x="844.4444444444445" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PN26 — 9 QSO</title></rect><rect x="488.8888888888889" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN89 — 9 QSO</title></rect><rect x="494.44444444444446" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN92 — 9 QSO</title></rect><rect x="550" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN94 — 9 QSO</title></rect><rect x="333.3333333333333" y="488.27211416945613" width="5.5555555555556" height="3.37065656116107" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF05 — 9 QSO</title></rect><rect x="577.7777777777778" y="160.66019983883487" width="5.555555555555543" height="6.016419366348401" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP42 — 9 QSO</title></rect><rect x="272.22222222222223" y="312.9039284305809" width="5.555555555555543" height="3.0776361264195202" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL95 — 9 QSO</title></rect><rect x="588.8888888888889" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM69 — 9 QSO</title></rect><rect x="700" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MN60 — 9 QSO</title></rect><rect x="566.6666666666666" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO25 — 9 QSO</title></rect><rect x="833.3333333333334" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM02 — 9 QSO</title></rect><rect x="566.6666666666666" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN24 — 9 QSO</title></rect><rect x="155.55555555555554" y="243.50237836743187" width="5.555555555555571" height="3.9632605847782543" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CN85 — 9 QSO</title></rect><rect x="450" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM13 — 9 QSO</title></rect><rect x="483.3333333333333" y="208.82224124739574" width="5.5555555555556" height="4.670200765693323" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO73 — 9 QSO</title></rect><rect x="588.8888888888889" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN69 — 9 QSO</title></rect><rect x="272.22222222222223" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN91 — 9 QSO</title></rect><rect x="872.2222222222222" y="280.42632676704864" width="5.555555555555657" height="3.4121065763444562" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM75 — 9 QSO</title></rect><rect x="272.22222222222223" y="309.79997948877804" width="5.555555555555543" height="3.103948941802855" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL96 — 8 QSO</title></rect><rect x="538.8888888888889" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO74 — 8 QSO</title></rect><rect x="272.22222222222223" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN93 — 8 QSO</title></rect><rect x="550" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN92 — 8 QSO</title></rect><rect x="550" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN90 — 8 QSO</title></rect><rect x="638.8888888888889" y="309.79997948877804" width="5.555555555555543" height="3.103948941802855" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL56 — 8 QSO</title></rect><rect x="555.5555555555555" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM08 — 8 QSO</title></rect><rect x="572.2222222222222" y="255.18989373356848" width="5.555555555555657" height="3.767743980753579" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN32 — 8 QSO</title></rect><rect x="522.2222222222222" y="183.61375288015708" width="5.555555555555657" height="5.316762625229728" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO48 — 8 QSO</title></rect><rect x="538.8888888888889" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO77 — 8 QSO</title></rect><rect x="533.3333333333334" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM67 — 8 QSO</title></rect><rect x="850" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM37 — 8 QSO</title></rect><rect x="266.6666666666667" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM85 — 8 QSO</title></rect><rect x="261.1111111111111" y="287.2090899045542" width="5.5555555555556" height="3.331204171115246" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM73 — 8 QSO</title></rect><rect x="561.1111111111111" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO12 — 8 QSO</title></rect><rect x="522.2222222222222" y="258.95763771432206" width="5.555555555555657" height="3.708988604258195" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN41 — 8 QSO</title></rect><rect x="561.1111111111111" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN14 — 8 QSO</title></rect><rect x="488.8888888888889" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM87 — 8 QSO</title></rect><rect x="505.55555555555554" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM19 — 8 QSO</title></rect><rect x="305.55555555555554" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.28" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN53 — 8 QSO</title></rect><rect x="494.44444444444446" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN99 — 7 QSO</title></rect><rect x="850" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM36 — 7 QSO</title></rect><rect x="505.55555555555554" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN14 — 7 QSO</title></rect><rect x="822.2222222222222" y="276.97067218073005" width="5.555555555555657" height="3.4556545863185875" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM86 — 7 QSO</title></rect><rect x="550" y="178.1402428975139" width="5.555555555555543" height="5.473509982643179" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO99 — 7 QSO</title></rect><rect x="555.5555555555555" y="141.28166795129303" width="5.555555555555543" height="6.699295672601835" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP05 — 7 QSO</title></rect><rect x="572.2222222222222" y="269.9197759191894" width="5.555555555555657" height="3.549487223574829" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM38 — 7 QSO</title></rect><rect x="538.8888888888889" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM75 — 7 QSO</title></rect><rect x="505.55555555555554" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN13 — 7 QSO</title></rect><rect x="800" y="407.2335998894394" width="5.555555555555543" height="2.8017839070495825" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI42 — 7 QSO</title></rect><rect x="555.5555555555555" y="166.67661920518327" width="5.555555555555543" height="5.822071196942687" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP01 — 7 QSO</title></rect><rect x="594.4444444444445" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM74 — 7 QSO</title></rect><rect x="472.22222222222223" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN51 — 7 QSO</title></rect><rect x="900" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN23 — 7 QSO</title></rect><rect x="583.3333333333334" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM59 — 7 QSO</title></rect><rect x="794.4444444444445" y="309.79997948877804" width="5.555555555555543" height="3.103948941802855" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL36 — 7 QSO</title></rect><rect x="288.8888888888889" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN21 — 7 QSO</title></rect><rect x="261.1111111111111" y="247.46563895221013" width="5.5555555555556" height="3.894678425061784" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN74 — 7 QSO</title></rect><rect x="588.8888888888889" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM64 — 7 QSO</title></rect><rect x="277.77777777777777" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM08 — 7 QSO</title></rect><rect x="227.77777777777777" y="290.54029407566946" width="5.555555555555571" height="3.293656426517259" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM12 — 7 QSO</title></rect><rect x="288.8888888888889" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN25 — 7 QSO</title></rect><rect x="566.6666666666666" y="160.66019983883487" width="5.555555555555543" height="6.016419366348401" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP22 — 7 QSO</title></rect><rect x="300" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN43 — 7 QSO</title></rect><rect x="861.1111111111111" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM54 — 7 QSO</title></rect><rect x="788.8888888888889" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM21 — 7 QSO</title></rect><rect x="511.1111111111111" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN24 — 6 QSO</title></rect><rect x="688.8888888888889" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MN47 — 6 QSO</title></rect><rect x="566.6666666666666" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO20 — 6 QSO</title></rect><rect x="866.6666666666666" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM65 — 6 QSO</title></rect><rect x="511.1111111111111" y="172.49869040212596" width="5.555555555555543" height="5.641552495387941" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP20 — 6 QSO</title></rect><rect x="533.3333333333334" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM68 — 6 QSO</title></rect><rect x="522.2222222222222" y="266.31975977808605" width="5.555555555555657" height="3.6000161411033673" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM49 — 6 QSO</title></rect><rect x="811.1111111111111" y="319.0342523686386" width="5.555555555555543" height="3.0290560508298086" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL63 — 6 QSO</title></rect><rect x="522.2222222222222" y="188.9305155053868" width="5.555555555555657" height="5.170275130241407" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO47 — 6 QSO</title></rect><rect x="561.1111111111111" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO11 — 6 QSO</title></rect><rect x="566.6666666666666" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP23 — 6 QSO</title></rect><rect x="300" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN46 — 6 QSO</title></rect><rect x="722.2222222222222" y="222.51812004305694" width="5.555555555555657" height="4.367256615166667" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NO00 — 6 QSO</title></rect><rect x="427.77777777777777" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HM77 — 6 QSO</title></rect><rect x="561.1111111111111" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO18 — 6 QSO</title></rect><rect x="577.7777777777778" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM46 — 6 QSO</title></rect><rect x="155.55555555555554" y="231.1627160379042" width="5.555555555555571" height="4.192301663643832" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CN88 — 6 QSO</title></rect><rect x="544.4444444444445" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM89 — 6 QSO</title></rect><rect x="855.5555555555555" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM43 — 6 QSO</title></rect><rect x="261.1111111111111" y="283.8384333433931" width="5.5555555555556" height="3.3706565611611268" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM74 — 6 QSO</title></rect><rect x="261.1111111111111" y="255.18989373356848" width="5.5555555555556" height="3.767743980753579" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN72 — 6 QSO</title></rect><rect x="283.3333333333333" y="276.97067218073005" width="5.5555555555556" height="3.4556545863185875" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM16 — 6 QSO</title></rect><rect x="494.44444444444446" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN91 — 6 QSO</title></rect><rect x="555.5555555555555" y="172.49869040212596" width="5.555555555555543" height="5.641552495387941" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP00 — 6 QSO</title></rect><rect x="705.5555555555555" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MN72 — 6 QSO</title></rect><rect x="894.4444444444445" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN12 — 6 QSO</title></rect><rect x="283.3333333333333" y="247.46563895221013" width="5.5555555555556" height="3.894678425061784" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN14 — 6 QSO</title></rect><rect x="283.3333333333333" y="262.66662631858026" width="5.5555555555556" height="3.6531334595057956" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN10 — 6 QSO</title></rect><rect x="205.55555555555554" y="266.31975977808605" width="5.555555555555571" height="3.6000161411033673" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM79 — 6 QSO</title></rect><rect x="477.77777777777777" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO65 — 6 QSO</title></rect><rect x="805.5555555555555" y="407.2335998894394" width="5.555555555555543" height="2.8017839070495825" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI52 — 6 QSO</title></rect><rect x="561.1111111111111" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP13 — 6 QSO</title></rect><rect x="455.55555555555554" y="303.5074235107419" width="5.555555555555543" height="3.1608781666190566" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IL28 — 6 QSO</title></rect><rect x="155.55555555555554" y="235.35501770154804" width="5.555555555555571" height="4.111807706701768" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CN87 — 6 QSO</title></rect><rect x="811.1111111111111" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM65 — 6 QSO</title></rect><rect x="711.1111111111111" y="303.5074235107419" width="5.555555555555543" height="3.1608781666190566" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>ML88 — 5 QSO</title></rect><rect x="261.1111111111111" y="269.9197759191894" width="5.5555555555556" height="3.549487223574829" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM78 — 5 QSO</title></rect><rect x="538.8888888888889" y="172.49869040212596" width="5.555555555555543" height="5.641552495387941" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP70 — 5 QSO</title></rect><rect x="477.77777777777777" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN63 — 5 QSO</title></rect><rect x="566.6666666666666" y="141.28166795129303" width="5.555555555555543" height="6.699295672601835" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP25 — 5 QSO</title></rect><rect x="672.2222222222222" y="208.82224124739574" width="5.555555555555657" height="4.670200765693323" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MO13 — 5 QSO</title></rect><rect x="483.3333333333333" y="231.1627160379042" width="5.5555555555556" height="4.192301663643832" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN78 — 5 QSO</title></rect><rect x="388.8888888888889" y="396.07774569993455" width="5.555555555555543" height="2.7830041626458524" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HI06 — 5 QSO</title></rect><rect x="555.5555555555555" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN01 — 5 QSO</title></rect><rect x="555.5555555555555" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM09 — 5 QSO</title></rect><rect x="577.7777777777778" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM47 — 5 QSO</title></rect><rect x="500" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN02 — 5 QSO</title></rect><rect x="533.3333333333334" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO68 — 5 QSO</title></rect><rect x="272.22222222222223" y="306.66830167736094" width="5.555555555555543" height="3.1316778114170916" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL97 — 5 QSO</title></rect><rect x="527.7777777777778" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP53 — 5 QSO</title></rect><rect x="861.1111111111111" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM51 — 5 QSO</title></rect><rect x="272.22222222222223" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN90 — 5 QSO</title></rect><rect x="255.55555555555554" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM63 — 5 QSO</title></rect><rect x="294.44444444444446" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN34 — 5 QSO</title></rect><rect x="472.22222222222223" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN53 — 5 QSO</title></rect><rect x="544.4444444444445" y="172.49869040212596" width="5.555555555555543" height="5.641552495387941" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP80 — 5 QSO</title></rect><rect x="622.2222222222222" y="258.95763771432206" width="5.555555555555657" height="3.708988604258195" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LN21 — 5 QSO</title></rect><rect x="488.8888888888889" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO87 — 5 QSO</title></rect><rect x="472.22222222222223" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN50 — 5 QSO</title></rect><rect x="588.8888888888889" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO60 — 5 QSO</title></rect><rect x="522.2222222222222" y="262.66662631858026" width="5.555555555555657" height="3.6531334595057956" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN40 — 5 QSO</title></rect><rect x="261.1111111111111" y="276.97067218073005" width="5.5555555555556" height="3.4556545863185875" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM76 — 5 QSO</title></rect><rect x="266.6666666666667" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN81 — 5 QSO</title></rect><rect x="155.55555555555554" y="273.46926314276425" width="5.555555555555571" height="3.5014090379658" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CM87 — 5 QSO</title></rect><rect x="361.1111111111111" y="459.4996395170099" width="5.5555555555556" height="3.0776361264195202" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG54 — 5 QSO</title></rect><rect x="566.6666666666666" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM27 — 5 QSO</title></rect><rect x="577.7777777777778" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN40 — 5 QSO</title></rect><rect x="566.6666666666666" y="147.98096362389487" width="5.555555555555543" height="6.453081175629507" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP24 — 5 QSO</title></rect><rect x="572.2222222222222" y="204.03846734268703" width="5.555555555555657" height="4.78377390470871" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO34 — 5 QSO</title></rect><rect x="488.8888888888889" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN82 — 5 QSO</title></rect><rect x="894.4444444444445" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN13 — 5 QSO</title></rect><rect x="527.7777777777778" y="147.98096362389487" width="5.555555555555543" height="6.453081175629507" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP54 — 5 QSO</title></rect><rect x="811.1111111111111" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM64 — 5 QSO</title></rect><rect x="0" y="576.3472772477426" width="5.555555555555555" height="0" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>AA00 — 5 QSO</title></rect><rect x="572.2222222222222" y="183.61375288015708" width="5.555555555555657" height="5.316762625229728" fill-opacity="0.27" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO38 — 5 QSO</title></rect><rect x="477.77777777777777" y="160.66019983883487" width="5.555555555555543" height="6.016419366348401" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IP62 — 4 QSO</title></rect><rect x="472.22222222222223" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM57 — 4 QSO</title></rect><rect x="700" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MN69 — 4 QSO</title></rect><rect x="538.8888888888889" y="178.1402428975139" width="5.555555555555543" height="5.473509982643179" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO79 — 4 QSO</title></rect><rect x="555.5555555555555" y="147.98096362389487" width="5.555555555555543" height="6.453081175629507" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP04 — 4 QSO</title></rect><rect x="566.6666666666666" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN21 — 4 QSO</title></rect><rect x="777.7777777777778" y="384.9626832219034" width="5.555555555555543" height="2.7779188151017706" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OJ00 — 4 QSO</title></rect><rect x="555.5555555555555" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN03 — 4 QSO</title></rect><rect x="222.22222222222223" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL09 — 4 QSO</title></rect><rect x="855.5555555555555" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM45 — 4 QSO</title></rect><rect x="161.11111111111111" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CM98 — 4 QSO</title></rect><rect x="750" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NL59 — 4 QSO</title></rect><rect x="455.55555555555554" y="306.66830167736094" width="5.555555555555543" height="3.1316778114170916" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IL27 — 4 QSO</title></rect><rect x="250" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM56 — 4 QSO</title></rect><rect x="255.55555555555554" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN62 — 4 QSO</title></rect><rect x="638.8888888888889" y="312.9039284305809" width="5.555555555555543" height="3.0776361264195202" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL55 — 4 QSO</title></rect><rect x="233.33333333333334" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM25 — 4 QSO</title></rect><rect x="377.77777777777777" y="441.51315394866475" width="5.555555555555543" height="2.946848726935002" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GH80 — 4 QSO</title></rect><rect x="483.3333333333333" y="213.49244201308906" width="5.5555555555556" height="4.563253645713132" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO72 — 4 QSO</title></rect><rect x="572.2222222222222" y="258.95763771432206" width="5.555555555555657" height="3.708988604258195" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN31 — 4 QSO</title></rect><rect x="422.22222222222223" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HM68 — 4 QSO</title></rect><rect x="255.55555555555554" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM64 — 4 QSO</title></rect><rect x="233.33333333333334" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM26 — 4 QSO</title></rect><rect x="266.6666666666667" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM89 — 4 QSO</title></rect><rect x="261.1111111111111" y="251.3603173772719" width="5.5555555555556" height="3.8295763562965703" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN73 — 4 QSO</title></rect><rect x="311.1111111111111" y="243.50237836743187" width="5.5555555555556" height="3.9632605847782543" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN65 — 4 QSO</title></rect><rect x="283.3333333333333" y="421.32033623817347" width="5.5555555555556" height="2.845260536408489" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FH17 — 4 QSO</title></rect><rect x="183.33333333333334" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM33 — 4 QSO</title></rect><rect x="277.77777777777777" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM04 — 4 QSO</title></rect><rect x="244.44444444444446" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN42 — 4 QSO</title></rect><rect x="688.8888888888889" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MM48 — 4 QSO</title></rect><rect x="516.6666666666666" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO38 — 4 QSO</title></rect><rect x="261.1111111111111" y="262.66662631858026" width="5.5555555555556" height="3.6531334595057956" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN70 — 4 QSO</title></rect><rect x="277.77777777777777" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN02 — 4 QSO</title></rect><rect x="850" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM35 — 4 QSO</title></rect><rect x="483.3333333333333" y="218.0556956588022" width="5.5555555555556" height="4.462424384254746" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO71 — 4 QSO</title></rect><rect x="711.1111111111111" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MN83 — 4 QSO</title></rect><rect x="472.22222222222223" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO51 — 4 QSO</title></rect><rect x="561.1111111111111" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN17 — 4 QSO</title></rect><rect x="300" y="331.02120139841054" width="5.555555555555543" height="2.946848726935002" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FK49 — 4 QSO</title></rect><rect x="505.55555555555554" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN15 — 4 QSO</title></rect><rect x="255.55555555555554" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN60 — 4 QSO</title></rect><rect x="555.5555555555555" y="134.31441379097154" width="5.555555555555543" height="6.967254160321488" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP06 — 4 QSO</title></rect><rect x="538.8888888888889" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN74 — 4 QSO</title></rect><rect x="566.6666666666666" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN27 — 4 QSO</title></rect><rect x="283.3333333333333" y="283.8384333433931" width="5.5555555555556" height="3.3706565611611268" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM14 — 4 QSO</title></rect><rect x="233.33333333333334" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM28 — 4 QSO</title></rect><rect x="305.55555555555554" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN54 — 4 QSO</title></rect><rect x="661.1111111111111" y="319.0342523686386" width="5.555555555555543" height="3.0290560508298086" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL93 — 3 QSO</title></rect><rect x="888.8888888888889" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN02 — 3 QSO</title></rect><rect x="561.1111111111111" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO17 — 3 QSO</title></rect><rect x="488.8888888888889" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM89 — 3 QSO</title></rect><rect x="577.7777777777778" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN48 — 3 QSO</title></rect><rect x="344.44444444444446" y="488.27211416945613" width="5.555555555555543" height="3.37065656116107" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF25 — 3 QSO</title></rect><rect x="322.22222222222223" y="502.01194093124604" width="5.555555555555543" height="3.5494872235748858" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FF81 — 3 QSO</title></rect><rect x="511.1111111111111" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO28 — 3 QSO</title></rect><rect x="305.55555555555554" y="333.96805012534554" width="5.555555555555543" height="2.929190803744234" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FK58 — 3 QSO</title></rect><rect x="377.77777777777777" y="401.64715288505835" width="5.555555555555543" height="2.7906613401339655" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GI84 — 3 QSO</title></rect><rect x="250" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN53 — 3 QSO</title></rect><rect x="288.8888888888889" y="373.834051188952" width="5.555555555555543" height="2.7864030224779412" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FJ24 — 3 QSO</title></rect><rect x="500" y="384.9626832219034" width="5.555555555555543" height="2.7779188151017706" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JJ00 — 3 QSO</title></rect><rect x="888.8888888888889" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN04 — 3 QSO</title></rect><rect x="288.8888888888889" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN23 — 3 QSO</title></rect><rect x="227.77777777777777" y="287.2090899045542" width="5.555555555555571" height="3.331204171115246" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM13 — 3 QSO</title></rect><rect x="277.77777777777777" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN04 — 3 QSO</title></rect><rect x="161.11111111111111" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CM96 — 3 QSO</title></rect><rect x="472.22222222222223" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO53 — 3 QSO</title></rect><rect x="494.44444444444446" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO95 — 3 QSO</title></rect><rect x="272.22222222222223" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL99 — 3 QSO</title></rect><rect x="327.77777777777777" y="481.64725357182357" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FF97 — 3 QSO</title></rect><rect x="288.8888888888889" y="368.2476041845709" width="5.555555555555543" height="2.7957856642470915" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FJ26 — 3 QSO</title></rect><rect x="905.5555555555555" y="512.81457775543" width="5.555555555555543" height="3.7089886042581384" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QE38 — 3 QSO</title></rect><rect x="722.2222222222222" y="348.45885798902407" width="5.555555555555657" height="2.856749310404325" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NK03 — 3 QSO</title></rect><rect x="483.3333333333333" y="269.9197759191894" width="5.5555555555556" height="3.549487223574829" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM78 — 3 QSO</title></rect><rect x="277.77777777777777" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM02 — 3 QSO</title></rect><rect x="900" y="498.51053189328036" width="5.555555555555543" height="3.5014090379656864" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QF22 — 3 QSO</title></rect><rect x="594.4444444444445" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN79 — 3 QSO</title></rect><rect x="827.7777777777778" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM90 — 3 QSO</title></rect><rect x="272.22222222222223" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM90 — 3 QSO</title></rect><rect x="294.44444444444446" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN35 — 3 QSO</title></rect><rect x="272.22222222222223" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM99 — 3 QSO</title></rect><rect x="266.6666666666667" y="303.5074235107419" width="5.555555555555543" height="3.1608781666190566" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL88 — 3 QSO</title></rect><rect x="233.33333333333334" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM20 — 3 QSO</title></rect><rect x="266.6666666666667" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN83 — 3 QSO</title></rect><rect x="166.66666666666666" y="283.8384333433931" width="5.555555555555571" height="3.3706565611611268" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM04 — 3 QSO</title></rect><rect x="266.6666666666667" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM84 — 3 QSO</title></rect><rect x="544.4444444444445" y="166.67661920518327" width="5.555555555555543" height="5.822071196942687" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP81 — 3 QSO</title></rect><rect x="572.2222222222222" y="188.9305155053868" width="5.555555555555657" height="5.170275130241407" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO37 — 3 QSO</title></rect><rect x="300" y="481.64725357182357" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FF47 — 3 QSO</title></rect><rect x="888.8888888888889" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN00 — 3 QSO</title></rect><rect x="833.3333333333334" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PL09 — 3 QSO</title></rect><rect x="561.1111111111111" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN11 — 3 QSO</title></rect><rect x="472.22222222222223" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO52 — 3 QSO</title></rect><rect x="438.8888888888889" y="147.98096362389487" width="5.555555555555543" height="6.453081175629507" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HP94 — 3 QSO</title></rect><rect x="272.22222222222223" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM94 — 3 QSO</title></rect><rect x="266.6666666666667" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM83 — 3 QSO</title></rect><rect x="544.4444444444445" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO87 — 3 QSO</title></rect><rect x="611.1111111111111" y="306.66830167736094" width="5.555555555555543" height="3.1316778114170916" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL07 — 3 QSO</title></rect><rect x="861.1111111111111" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM52 — 3 QSO</title></rect><rect x="283.3333333333333" y="280.42632676704864" width="5.5555555555556" height="3.4121065763444562" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM15 — 3 QSO</title></rect><rect x="688.8888888888889" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MO43 — 3 QSO</title></rect><rect x="572.2222222222222" y="154.43404479952437" width="5.555555555555657" height="6.226155039310498" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP33 — 3 QSO</title></rect><rect x="316.6666666666667" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN73 — 3 QSO</title></rect><rect x="338.8888888888889" y="488.27211416945613" width="5.555555555555543" height="3.37065656116107" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF15 — 3 QSO</title></rect><rect x="616.6666666666666" y="312.9039284305809" width="5.555555555555543" height="3.0776361264195202" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL15 — 3 QSO</title></rect><rect x="694.4444444444445" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MO52 — 3 QSO</title></rect><rect x="477.77777777777777" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM69 — 3 QSO</title></rect><rect x="500" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO03 — 3 QSO</title></rect><rect x="250" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM57 — 3 QSO</title></rect><rect x="188.88888888888889" y="290.54029407566946" width="5.555555555555571" height="3.293656426517259" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM42 — 3 QSO</title></rect><rect x="555.5555555555555" y="188.9305155053868" width="5.555555555555543" height="5.170275130241407" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO07 — 3 QSO</title></rect><rect x="294.44444444444446" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN33 — 3 QSO</title></rect><rect x="605.5555555555555" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN91 — 3 QSO</title></rect><rect x="566.6666666666666" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO28 — 3 QSO</title></rect><rect x="338.8888888888889" y="478.389326450181" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF18 — 3 QSO</title></rect><rect x="838.8888888888889" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PN11 — 3 QSO</title></rect><rect x="811.1111111111111" y="303.5074235107419" width="5.555555555555543" height="3.1608781666190566" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL68 — 3 QSO</title></rect><rect x="244.44444444444446" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.26" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN45 — 3 QSO</title></rect><rect x="438.8888888888889" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HP93 — 2 QSO</title></rect><rect x="577.7777777777778" y="429.891554907744" width="5.555555555555543" height="2.8826594772441467" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KH44 — 2 QSO</title></rect><rect x="550" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM99 — 2 QSO</title></rect><rect x="783.3333333333334" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM10 — 2 QSO</title></rect><rect x="338.8888888888889" y="484.9409099983408" width="5.555555555555543" height="3.331204171115303" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF16 — 2 QSO</title></rect><rect x="700" y="342.7069896890221" width="5.555555555555543" height="2.8826594772441467" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MK65 — 2 QSO</title></rect><rect x="355.55555555555554" y="415.66048997208884" width="5.555555555555543" height="2.825122393013089" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GH49 — 2 QSO</title></rect><rect x="250" y="336.8972409290898" width="5.555555555555543" height="2.912625222066083" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EK57 — 2 QSO</title></rect><rect x="266.6666666666667" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM80 — 2 QSO</title></rect><rect x="544.4444444444445" y="194.10079063562821" width="5.555555555555543" height="5.033136190639567" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO86 — 2 QSO</title></rect><rect x="777.7777777777778" y="373.834051188952" width="5.555555555555543" height="2.7864030224779412" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OJ04 — 2 QSO</title></rect><rect x="261.1111111111111" y="297.0918776238293" width="5.5555555555556" height="3.223936271660932" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM70 — 2 QSO</title></rect><rect x="538.8888888888889" y="160.66019983883487" width="5.555555555555543" height="6.016419366348401" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP72 — 2 QSO</title></rect><rect x="555.5555555555555" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN00 — 2 QSO</title></rect><rect x="883.3333333333334" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM98 — 2 QSO</title></rect><rect x="527.7777777777778" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM53 — 2 QSO</title></rect><rect x="527.7777777777778" y="194.10079063562821" width="5.555555555555543" height="5.033136190639567" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO56 — 2 QSO</title></rect><rect x="633.3333333333334" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL49 — 2 QSO</title></rect><rect x="811.1111111111111" y="410.035383796489" width="5.555555555555543" height="2.808665374380098" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI61 — 2 QSO</title></rect><rect x="811.1111111111111" y="309.79997948877804" width="5.555555555555543" height="3.103948941802855" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL66 — 2 QSO</title></rect><rect x="500" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JN04 — 2 QSO</title></rect><rect x="555.5555555555555" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN02 — 2 QSO</title></rect><rect x="244.44444444444446" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN43 — 2 QSO</title></rect><rect x="261.1111111111111" y="356.9955917089084" width="5.5555555555556" height="2.8251223930130323" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EK70 — 2 QSO</title></rect><rect x="588.8888888888889" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM65 — 2 QSO</title></rect><rect x="266.6666666666667" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM88 — 2 QSO</title></rect><rect x="816.6666666666666" y="410.035383796489" width="5.555555555555543" height="2.808665374380098" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI71 — 2 QSO</title></rect><rect x="488.8888888888889" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN81 — 2 QSO</title></rect><rect x="494.44444444444446" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN90 — 2 QSO</title></rect><rect x="300" y="333.96805012534554" width="5.555555555555543" height="2.929190803744234" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FK48 — 2 QSO</title></rect><rect x="183.33333333333334" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN32 — 2 QSO</title></rect><rect x="433.3333333333333" y="141.28166795129303" width="5.5555555555556" height="6.699295672601835" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HP85 — 2 QSO</title></rect><rect x="272.22222222222223" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN92 — 2 QSO</title></rect><rect x="272.22222222222223" y="315.9815645570004" width="5.555555555555543" height="3.0526878116381795" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL94 — 2 QSO</title></rect><rect x="255.55555555555554" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM66 — 2 QSO</title></rect><rect x="383.3333333333333" y="450.4111993957211" width="5.5555555555556" height="3.0066962588208526" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG97 — 2 QSO</title></rect><rect x="416.6666666666667" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HM58 — 2 QSO</title></rect><rect x="572.2222222222222" y="231.1627160379042" width="5.555555555555657" height="4.192301663643832" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN38 — 2 QSO</title></rect><rect x="700" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MO60 — 2 QSO</title></rect><rect x="361.1111111111111" y="465.68122458523226" width="5.5555555555556" height="3.1316778114171484" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG52 — 2 QSO</title></rect><rect x="300" y="484.9409099983408" width="5.555555555555543" height="3.331204171115303" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FF46 — 2 QSO</title></rect><rect x="922.2222222222222" y="465.68122458523226" width="5.555555555555657" height="3.1316778114171484" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QG62 — 2 QSO</title></rect><rect x="966.6666666666666" y="531.9788257065785" width="5.555555555555543" height="4.035552959182041" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RE43 — 2 QSO</title></rect><rect x="900" y="502.01194093124604" width="5.555555555555543" height="3.5494872235748858" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QF21 — 2 QSO</title></rect><rect x="311.1111111111111" y="356.9955917089084" width="5.5555555555556" height="2.8251223930130323" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FK60 — 2 QSO</title></rect><rect x="566.6666666666666" y="134.31441379097154" width="5.555555555555543" height="6.967254160321488" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP26 — 2 QSO</title></rect><rect x="577.7777777777778" y="459.4996395170099" width="5.555555555555543" height="3.0776361264195202" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KG44 — 2 QSO</title></rect><rect x="511.1111111111111" y="178.1402428975139" width="5.555555555555543" height="5.473509982643179" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO29 — 2 QSO</title></rect><rect x="738.8888888888889" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NN33 — 2 QSO</title></rect><rect x="372.22222222222223" y="450.4111993957211" width="5.555555555555543" height="3.0066962588208526" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG77 — 2 QSO</title></rect><rect x="344.44444444444446" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GN28 — 2 QSO</title></rect><rect x="272.22222222222223" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM98 — 2 QSO</title></rect><rect x="227.77777777777777" y="262.66662631858026" width="5.555555555555571" height="3.6531334595057956" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN10 — 2 QSO</title></rect><rect x="227.77777777777777" y="255.18989373356848" width="5.555555555555571" height="3.767743980753579" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN12 — 2 QSO</title></rect><rect x="277.77777777777777" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM09 — 2 QSO</title></rect><rect x="233.33333333333334" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM23 — 2 QSO</title></rect><rect x="233.33333333333334" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM24 — 2 QSO</title></rect><rect x="250" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM58 — 2 QSO</title></rect><rect x="188.88888888888889" y="293.8339505021867" width="5.555555555555571" height="3.257927121642581" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM41 — 2 QSO</title></rect><rect x="233.33333333333334" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL29 — 2 QSO</title></rect><rect x="277.77777777777777" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM06 — 2 QSO</title></rect><rect x="238.88888888888889" y="258.95763771432206" width="5.555555555555571" height="3.708988604258195" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN31 — 2 QSO</title></rect><rect x="205.55555555555554" y="262.66662631858026" width="5.555555555555571" height="3.6531334595057956" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN70 — 2 QSO</title></rect><rect x="544.4444444444445" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO88 — 2 QSO</title></rect><rect x="816.6666666666666" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM74 — 2 QSO</title></rect><rect x="183.33333333333334" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN31 — 2 QSO</title></rect><rect x="811.1111111111111" y="407.2335998894394" width="5.555555555555543" height="2.8017839070495825" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI62 — 2 QSO</title></rect><rect x="816.6666666666666" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL79 — 2 QSO</title></rect><rect x="283.3333333333333" y="255.18989373356848" width="5.5555555555556" height="3.767743980753579" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN12 — 2 QSO</title></rect><rect x="266.6666666666667" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL89 — 2 QSO</title></rect><rect x="155.55555555555554" y="255.18989373356848" width="5.555555555555571" height="3.767743980753579" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CN82 — 2 QSO</title></rect><rect x="733.3333333333334" y="312.9039284305809" width="5.555555555555543" height="3.0776361264195202" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NL25 — 2 QSO</title></rect><rect x="266.6666666666667" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM86 — 2 QSO</title></rect><rect x="583.3333333333334" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN50 — 2 QSO</title></rect><rect x="244.44444444444446" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM48 — 2 QSO</title></rect><rect x="477.77777777777777" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO62 — 2 QSO</title></rect><rect x="255.55555555555554" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM69 — 2 QSO</title></rect><rect x="183.33333333333334" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DO33 — 2 QSO</title></rect><rect x="377.77777777777777" y="450.4111993957211" width="5.555555555555543" height="3.0066962588208526" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG87 — 2 QSO</title></rect><rect x="572.2222222222222" y="218.0556956588022" width="5.555555555555657" height="4.462424384254746" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO31 — 2 QSO</title></rect><rect x="827.7777777777778" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM91 — 2 QSO</title></rect><rect x="533.3333333333334" y="410.035383796489" width="5.555555555555543" height="2.808665374380098" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JI61 — 2 QSO</title></rect><rect x="572.2222222222222" y="262.66662631858026" width="5.555555555555657" height="3.6531334595057956" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN30 — 2 QSO</title></rect><rect x="327.77777777777777" y="478.389326450181" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FF98 — 2 QSO</title></rect><rect x="288.8888888888889" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN24 — 2 QSO</title></rect><rect x="272.22222222222223" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM97 — 2 QSO</title></rect><rect x="261.1111111111111" y="290.54029407566946" width="5.5555555555556" height="3.293656426517259" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM72 — 2 QSO</title></rect><rect x="822.2222222222222" y="396.07774569993455" width="5.555555555555657" height="2.7830041626458524" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI86 — 2 QSO</title></rect><rect x="850" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM38 — 2 QSO</title></rect><rect x="827.7777777777778" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM96 — 2 QSO</title></rect><rect x="255.55555555555554" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN63 — 2 QSO</title></rect><rect x="833.3333333333334" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM05 — 2 QSO</title></rect><rect x="505.55555555555554" y="368.2476041845709" width="5.555555555555543" height="2.7957856642470915" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JJ16 — 2 QSO</title></rect><rect x="300" y="438.5839631449206" width="5.555555555555543" height="2.929190803744177" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FH41 — 2 QSO</title></rect><rect x="366.6666666666667" y="450.4111993957211" width="5.555555555555543" height="3.0066962588208526" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG67 — 2 QSO</title></rect><rect x="244.44444444444446" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN41 — 2 QSO</title></rect><rect x="261.1111111111111" y="280.42632676704864" width="5.5555555555556" height="3.4121065763444562" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM75 — 2 QSO</title></rect><rect x="800" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM44 — 2 QSO</title></rect><rect x="788.8888888888889" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL29 — 2 QSO</title></rect><rect x="327.77777777777777" y="356.9955917089084" width="5.555555555555543" height="2.8251223930130323" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FK90 — 2 QSO</title></rect><rect x="811.1111111111111" y="393.2972861490215" width="5.555555555555543" height="2.780459550913065" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI67 — 2 QSO</title></rect><rect x="700" y="322.0633084194684" width="5.555555555555543" height="3.0066962588207957" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>ML62 — 2 QSO</title></rect><rect x="827.7777777777778" y="398.8607498625804" width="5.555555555555543" height="2.7864030224779412" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI95 — 2 QSO</title></rect><rect x="761.1111111111111" y="371.043389848818" width="5.555555555555543" height="2.7906613401340223" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NJ75 — 2 QSO</title></rect><rect x="227.77777777777777" y="258.95763771432206" width="5.555555555555571" height="3.708988604258195" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN11 — 2 QSO</title></rect><rect x="238.88888888888889" y="247.46563895221013" width="5.555555555555571" height="3.894678425061784" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN34 — 2 QSO</title></rect><rect x="227.77777777777777" y="280.42632676704864" width="5.555555555555571" height="3.4121065763444562" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM15 — 2 QSO</title></rect><rect x="583.3333333333334" y="471.9737805632684" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KG50 — 2 QSO</title></rect><rect x="488.8888888888889" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM88 — 2 QSO</title></rect><rect x="538.8888888888889" y="398.8607498625804" width="5.555555555555543" height="2.7864030224779412" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JI75 — 2 QSO</title></rect><rect x="161.11111111111111" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CM97 — 2 QSO</title></rect><rect x="166.66666666666666" y="266.31975977808605" width="5.555555555555571" height="3.6000161411033673" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM09 — 2 QSO</title></rect><rect x="172.22222222222223" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM13 — 2 QSO</title></rect><rect x="172.22222222222223" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM14 — 2 QSO</title></rect><rect x="155.55555555555554" y="226.8853766582236" width="5.555555555555571" height="4.277339379680598" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CN89 — 2 QSO</title></rect><rect x="250" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN57 — 2 QSO</title></rect><rect x="222.22222222222223" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM09 — 2 QSO</title></rect><rect x="411.1111111111111" y="266.31975977808605" width="5.5555555555556" height="3.6000161411033673" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HM49 — 2 QSO</title></rect><rect x="794.4444444444445" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>ON37 — 2 QSO</title></rect><rect x="244.44444444444446" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM47 — 2 QSO</title></rect><rect x="805.5555555555555" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM56 — 2 QSO</title></rect><rect x="483.3333333333333" y="258.95763771432206" width="5.5555555555556" height="3.708988604258195" fill-opacity="0.25" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN71 — 2 QSO</title></rect><rect x="261.1111111111111" y="127.05456423095183" width="5.5555555555556" height="7.259849560019717" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EP77 — 1 QSO</title></rect><rect x="783.3333333333334" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM16 — 1 QSO</title></rect><rect x="550" y="119.47405036096598" width="5.555555555555543" height="7.58051386998585" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP98 — 1 QSO</title></rect><rect x="316.6666666666667" y="516.5235663596882" width="5.555555555555543" height="3.767743980753721" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FE77 — 1 QSO</title></rect><rect x="638.8888888888889" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LM56 — 1 QSO</title></rect><rect x="550" y="172.49869040212596" width="5.555555555555543" height="5.641552495387941" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP90 — 1 QSO</title></rect><rect x="466.6666666666667" y="303.5074235107419" width="5.555555555555543" height="3.1608781666190566" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IL48 — 1 QSO</title></rect><rect x="477.77777777777777" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM64 — 1 QSO</title></rect><rect x="800" y="387.74060203700515" width="5.555555555555543" height="2.7779188151017706" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI49 — 1 QSO</title></rect><rect x="150" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CO70 — 1 QSO</title></rect><rect x="583.3333333333334" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO52 — 1 QSO</title></rect><rect x="872.2222222222222" y="287.2090899045542" width="5.555555555555657" height="3.331204171115246" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM73 — 1 QSO</title></rect><rect x="538.8888888888889" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM76 — 1 QSO</title></rect><rect x="555.5555555555555" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO04 — 1 QSO</title></rect><rect x="177.77777777777777" y="239.4668254082498" width="5.555555555555571" height="4.03555295918207" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN26 — 1 QSO</title></rect><rect x="472.22222222222223" y="204.03846734268703" width="5.555555555555543" height="4.78377390470871" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO54 — 1 QSO</title></rect><rect x="483.3333333333333" y="235.35501770154804" width="5.5555555555556" height="4.111807706701768" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN77 — 1 QSO</title></rect><rect x="500" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM08 — 1 QSO</title></rect><rect x="338.8888888888889" y="498.51053189328036" width="5.555555555555543" height="3.5014090379656864" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF12 — 1 QSO</title></rect><rect x="333.3333333333333" y="465.68122458523226" width="5.5555555555556" height="3.1316778114171484" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG02 — 1 QSO</title></rect><rect x="372.22222222222223" y="447.4256324066884" width="5.555555555555543" height="2.985566989032691" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG78 — 1 QSO</title></rect><rect x="550" y="0" width="5.555555555555543" height="0" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JR92 — 1 QSO</title></rect><rect x="572.2222222222222" y="199.13392682626778" width="5.555555555555657" height="4.904540516419246" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO35 — 1 QSO</title></rect><rect x="577.7777777777778" y="141.28166795129303" width="5.555555555555543" height="6.699295672601835" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP45 — 1 QSO</title></rect><rect x="288.8888888888889" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN22 — 1 QSO</title></rect><rect x="600" y="222.51812004305694" width="5.555555555555543" height="4.367256615166667" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO80 — 1 QSO</title></rect><rect x="983.3333333333334" y="495.0548773069617" width="5.555555555555543" height="3.4556545863186443" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RF73 — 1 QSO</title></rect><rect x="972.2222222222222" y="528.0155651218001" width="5.555555555555657" height="3.963260584778368" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RE54 — 1 QSO</title></rect><rect x="194.44444444444446" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM57 — 1 QSO</title></rect><rect x="711.1111111111111" y="351.3156072994284" width="5.555555555555543" height="2.845260536408489" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MK82 — 1 QSO</title></rect><rect x="577.7777777777778" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP43 — 1 QSO</title></rect><rect x="594.4444444444445" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM78 — 1 QSO</title></rect><rect x="588.8888888888889" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN66 — 1 QSO</title></rect><rect x="794.4444444444445" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL39 — 1 QSO</title></rect><rect x="372.22222222222223" y="393.2972861490215" width="5.555555555555543" height="2.780459550913065" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GI77 — 1 QSO</title></rect><rect x="850" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM34 — 1 QSO</title></rect><rect x="711.1111111111111" y="359.82071410192145" width="5.555555555555543" height="2.8164408012198123" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MJ89 — 1 QSO</title></rect><rect x="255.55555555555554" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM60 — 1 QSO</title></rect><rect x="250" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM59 — 1 QSO</title></rect><rect x="227.77777777777777" y="297.0918776238293" width="5.555555555555571" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM10 — 1 QSO</title></rect><rect x="244.44444444444446" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM40 — 1 QSO</title></rect><rect x="272.22222222222223" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM91 — 1 QSO</title></rect><rect x="138.88888888888889" y="204.03846734268703" width="5.555555555555571" height="4.78377390470871" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CO54 — 1 QSO</title></rect><rect x="272.22222222222223" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM92 — 1 QSO</title></rect><rect x="572.2222222222222" y="134.31441379097154" width="5.555555555555657" height="6.967254160321488" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP36 — 1 QSO</title></rect><rect x="511.1111111111111" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JM29 — 1 QSO</title></rect><rect x="794.4444444444445" y="348.45885798902407" width="5.555555555555543" height="2.856749310404325" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OK33 — 1 QSO</title></rect><rect x="272.22222222222223" y="319.0342523686386" width="5.555555555555543" height="3.0290560508298086" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL93 — 1 QSO</title></rect><rect x="372.22222222222223" y="441.51315394866475" width="5.555555555555543" height="2.946848726935002" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GH70 — 1 QSO</title></rect><rect x="361.1111111111111" y="432.77421438498817" width="5.5555555555556" height="2.897123537866321" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GH53 — 1 QSO</title></rect><rect x="361.1111111111111" y="450.4111993957211" width="5.5555555555556" height="3.0066962588208526" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG57 — 1 QSO</title></rect><rect x="505.55555555555554" y="418.48561236510193" width="5.555555555555543" height="2.834723873071539" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JH18 — 1 QSO</title></rect><rect x="355.55555555555554" y="435.6713379228545" width="5.555555555555543" height="2.912625222066083" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GH42 — 1 QSO</title></rect><rect x="338.8888888888889" y="491.6427707306172" width="5.555555555555543" height="3.412106576344513" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF14 — 1 QSO</title></rect><rect x="316.6666666666667" y="484.9409099983408" width="5.555555555555543" height="3.331204171115303" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FF76 — 1 QSO</title></rect><rect x="300" y="512.81457775543" width="5.555555555555543" height="3.7089886042581384" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FE48 — 1 QSO</title></rect><rect x="261.1111111111111" y="359.82071410192145" width="5.5555555555556" height="2.8164408012198123" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EJ79 — 1 QSO</title></rect><rect x="605.5555555555555" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN90 — 1 QSO</title></rect><rect x="672.2222222222222" y="441.51315394866475" width="5.555555555555657" height="2.946848726935002" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MH10 — 1 QSO</title></rect><rect x="577.7777777777778" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN46 — 1 QSO</title></rect><rect x="777.7777777777778" y="382.1839179249888" width="5.555555555555543" height="2.778765296914571" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OJ01 — 1 QSO</title></rect><rect x="316.6666666666667" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN74 — 1 QSO</title></rect><rect x="550" y="111.54070058162506" width="5.555555555555543" height="7.933349779340915" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP99 — 1 QSO</title></rect><rect x="327.77777777777777" y="379.40345837407574" width="5.555555555555543" height="2.780459550913065" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FJ92 — 1 QSO</title></rect><rect x="327.77777777777777" y="415.66048997208884" width="5.555555555555543" height="2.825122393013089" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FH99 — 1 QSO</title></rect><rect x="244.44444444444446" y="322.0633084194684" width="5.555555555555543" height="3.0066962588207957" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL42 — 1 QSO</title></rect><rect x="300" y="356.9955917089084" width="5.555555555555543" height="2.8251223930130323" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FK40 — 1 QSO</title></rect><rect x="272.22222222222223" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM93 — 1 QSO</title></rect><rect x="288.8888888888889" y="371.043389848818" width="5.555555555555543" height="2.7906613401340223" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FJ25 — 1 QSO</title></rect><rect x="305.55555555555554" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN59 — 1 QSO</title></rect><rect x="316.6666666666667" y="456.4469517053717" width="5.555555555555543" height="3.0526878116381795" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FG75 — 1 QSO</title></rect><rect x="572.2222222222222" y="276.97067218073005" width="5.555555555555657" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM36 — 1 QSO</title></rect><rect x="350" y="453.41789565454195" width="5.555555555555543" height="3.0290560508297517" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG36 — 1 QSO</title></rect><rect x="172.22222222222223" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN17 — 1 QSO</title></rect><rect x="277.77777777777777" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN01 — 1 QSO</title></rect><rect x="322.22222222222223" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN84 — 1 QSO</title></rect><rect x="238.88888888888889" y="255.18989373356848" width="5.555555555555571" height="3.767743980753579" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN32 — 1 QSO</title></rect><rect x="238.88888888888889" y="273.46926314276425" width="5.555555555555571" height="3.5014090379658" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM37 — 1 QSO</title></rect><rect x="172.22222222222223" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN13 — 1 QSO</title></rect><rect x="200" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM62 — 1 QSO</title></rect><rect x="233.33333333333334" y="303.5074235107419" width="5.555555555555543" height="3.1608781666190566" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL28 — 1 QSO</title></rect><rect x="172.22222222222223" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM12 — 1 QSO</title></rect><rect x="166.66666666666666" y="287.2090899045542" width="5.555555555555571" height="3.331204171115246" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM03 — 1 QSO</title></rect><rect x="183.33333333333334" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM32 — 1 QSO</title></rect><rect x="233.33333333333334" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM29 — 1 QSO</title></rect><rect x="172.22222222222223" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN19 — 1 QSO</title></rect><rect x="166.66666666666666" y="269.9197759191894" width="5.555555555555571" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM08 — 1 QSO</title></rect><rect x="838.8888888888889" y="488.27211416945613" width="5.555555555555543" height="3.37065656116107" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PF15 — 1 QSO</title></rect><rect x="483.3333333333333" y="266.31975977808605" width="5.5555555555556" height="3.6000161411033673" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM79 — 1 QSO</title></rect><rect x="655.5555555555555" y="312.9039284305809" width="5.555555555555543" height="3.0776361264195202" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL85 — 1 QSO</title></rect><rect x="700" y="331.02120139841054" width="5.555555555555543" height="2.946848726935002" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MK69 — 1 QSO</title></rect><rect x="572.2222222222222" y="166.67661920518327" width="5.555555555555657" height="5.822071196942687" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP31 — 1 QSO</title></rect><rect x="538.8888888888889" y="351.3156072994284" width="5.555555555555543" height="2.845260536408489" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JK72 — 1 QSO</title></rect><rect x="277.77777777777777" y="393.2972861490215" width="5.555555555555543" height="2.780459550913065" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FI07 — 1 QSO</title></rect><rect x="811.1111111111111" y="322.0633084194684" width="5.555555555555543" height="3.0066962588207957" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL62 — 1 QSO</title></rect><rect x="738.8888888888889" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NN34 — 1 QSO</title></rect><rect x="672.2222222222222" y="0" width="5.555555555555657" height="0" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MR14 — 1 QSO</title></rect><rect x="83.33333333333333" y="166.67661920518327" width="5.555555555555557" height="5.822071196942687" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>BP51 — 1 QSO</title></rect><rect x="822.2222222222222" y="293.8339505021867" width="5.555555555555657" height="3.257927121642581" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM81 — 1 QSO</title></rect><rect x="527.7777777777778" y="166.67661920518327" width="5.555555555555543" height="5.822071196942687" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP51 — 1 QSO</title></rect><rect x="205.55555555555554" y="269.9197759191894" width="5.555555555555571" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM78 — 1 QSO</title></rect><rect x="272.22222222222223" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM96 — 1 QSO</title></rect><rect x="316.6666666666667" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN75 — 1 QSO</title></rect><rect x="161.11111111111111" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CN97 — 1 QSO</title></rect><rect x="255.55555555555554" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM67 — 1 QSO</title></rect><rect x="166.66666666666666" y="276.97067218073005" width="5.555555555555571" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM06 — 1 QSO</title></rect><rect x="88.88888888888889" y="147.98096362389487" width="5.555555555555557" height="6.453081175629507" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>BP64 — 1 QSO</title></rect><rect x="555.5555555555555" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP03 — 1 QSO</title></rect><rect x="827.7777777777778" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM99 — 1 QSO</title></rect><rect x="533.3333333333334" y="178.1402428975139" width="5.555555555555543" height="5.473509982643179" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO69 — 1 QSO</title></rect><rect x="783.3333333333334" y="315.9815645570004" width="5.555555555555543" height="3.0526878116381795" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL14 — 1 QSO</title></rect><rect x="711.1111111111111" y="362.63715490314127" width="5.555555555555543" height="2.808665374380041" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MJ88 — 1 QSO</title></rect><rect x="777.7777777777778" y="345.58964916626627" width="5.555555555555543" height="2.8692088227577983" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OK04 — 1 QSO</title></rect><rect x="477.77777777777777" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO68 — 1 QSO</title></rect><rect x="494.44444444444446" y="356.9955917089084" width="5.555555555555543" height="2.8251223930130323" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IK90 — 1 QSO</title></rect><rect x="577.7777777777778" y="208.82224124739574" width="5.555555555555543" height="4.670200765693323" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO43 — 1 QSO</title></rect><rect x="466.6666666666667" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IL49 — 1 QSO</title></rect><rect x="583.3333333333334" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP53 — 1 QSO</title></rect><rect x="888.8888888888889" y="502.01194093124604" width="5.555555555555543" height="3.5494872235748858" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QF01 — 1 QSO</title></rect><rect x="855.5555555555555" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM48 — 1 QSO</title></rect><rect x="622.2222222222222" y="262.66662631858026" width="5.555555555555657" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LN20 — 1 QSO</title></rect><rect x="666.6666666666666" y="471.9737805632684" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MG00 — 1 QSO</title></rect><rect x="572.2222222222222" y="147.98096362389487" width="5.555555555555657" height="6.453081175629507" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP34 — 1 QSO</title></rect><rect x="550" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP93 — 1 QSO</title></rect><rect x="450" y="306.66830167736094" width="5.555555555555543" height="3.1316778114170916" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IL17 — 1 QSO</title></rect><rect x="572.2222222222222" y="194.10079063562821" width="5.555555555555657" height="5.033136190639567" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO36 — 1 QSO</title></rect><rect x="150" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CN72 — 1 QSO</title></rect><rect x="366.6666666666667" y="438.5839631449206" width="5.555555555555543" height="2.929190803744177" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GH61 — 1 QSO</title></rect><rect x="366.6666666666667" y="429.891554907744" width="5.555555555555543" height="2.8826594772441467" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GH64 — 1 QSO</title></rect><rect x="255.55555555555554" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM62 — 1 QSO</title></rect><rect x="555.5555555555555" y="127.05456423095183" width="5.555555555555543" height="7.259849560019717" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP07 — 1 QSO</title></rect><rect x="527.7777777777778" y="127.05456423095183" width="5.555555555555543" height="7.259849560019717" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP57 — 1 QSO</title></rect><rect x="577.7777777777778" y="166.67661920518327" width="5.555555555555543" height="5.822071196942687" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP41 — 1 QSO</title></rect><rect x="833.3333333333334" y="315.9815645570004" width="5.555555555555543" height="3.0526878116381795" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PL04 — 1 QSO</title></rect><rect x="400" y="410.035383796489" width="5.555555555555543" height="2.808665374380098" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HI21 — 1 QSO</title></rect><rect x="983.3333333333334" y="498.51053189328036" width="5.555555555555543" height="3.5014090379656864" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RF72 — 1 QSO</title></rect><rect x="922.2222222222222" y="462.5772756434294" width="5.555555555555657" height="3.103948941802855" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QG63 — 1 QSO</title></rect><rect x="833.3333333333334" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>PM08 — 1 QSO</title></rect><rect x="611.1111111111111" y="266.31975977808605" width="5.555555555555543" height="3.6000161411033673" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LM09 — 1 QSO</title></rect><rect x="288.8888888888889" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FM28 — 1 QSO</title></rect><rect x="816.6666666666666" y="481.64725357182357" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OF77 — 1 QSO</title></rect><rect x="905.5555555555555" y="441.51315394866475" width="5.555555555555543" height="2.946848726935002" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QH30 — 1 QSO</title></rect><rect x="561.1111111111111" y="178.1402428975139" width="5.555555555555543" height="5.473509982643179" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO19 — 1 QSO</title></rect><rect x="566.6666666666666" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN20 — 1 QSO</title></rect><rect x="600" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN81 — 1 QSO</title></rect><rect x="533.3333333333334" y="401.64715288505835" width="5.555555555555543" height="2.7906613401339655" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JI64 — 1 QSO</title></rect><rect x="705.5555555555555" y="354.1608678358369" width="5.555555555555543" height="2.834723873071539" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MK71 — 1 QSO</title></rect><rect x="350" y="478.389326450181" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF38 — 1 QSO</title></rect><rect x="783.3333333333334" y="333.96805012534554" width="5.555555555555543" height="2.929190803744234" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OK18 — 1 QSO</title></rect><rect x="377.77777777777777" y="444.46000267559975" width="5.555555555555543" height="2.9656297310886544" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG89 — 1 QSO</title></rect><rect x="916.6666666666666" y="475.16539017852006" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QF59 — 1 QSO</title></rect><rect x="233.33333333333334" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM22 — 1 QSO</title></rect><rect x="300" y="561.9887620609212" width="5.555555555555543" height="4.67020076569338" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FD46 — 1 QSO</title></rect><rect x="350" y="471.9737805632684" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG30 — 1 QSO</title></rect><rect x="605.5555555555555" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN98 — 1 QSO</title></rect><rect x="266.6666666666667" y="309.79997948877804" width="5.555555555555543" height="3.103948941802855" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL86 — 1 QSO</title></rect><rect x="905.5555555555555" y="502.01194093124604" width="5.555555555555543" height="3.5494872235748858" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QF31 — 1 QSO</title></rect><rect x="33.333333333333336" y="208.82224124739574" width="5.55555555555555" height="4.670200765693323" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>AO63 — 1 QSO</title></rect><rect x="538.8888888888889" y="127.05456423095183" width="5.555555555555543" height="7.259849560019717" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP77 — 1 QSO</title></rect><rect x="705.5555555555555" y="342.7069896890221" width="5.555555555555543" height="2.8826594772441467" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MK75 — 1 QSO</title></rect><rect x="588.8888888888889" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM66 — 1 QSO</title></rect><rect x="355.55555555555554" y="465.68122458523226" width="5.555555555555543" height="3.1316778114171484" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG42 — 1 QSO</title></rect><rect x="800" y="576.3472772477426" width="5.555555555555543" height="0" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OB41 — 1 QSO</title></rect><rect x="744.4444444444445" y="441.51315394866475" width="5.555555555555543" height="2.946848726935002" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NH40 — 1 QSO</title></rect><rect x="222.22222222222223" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN08 — 1 QSO</title></rect><rect x="605.5555555555555" y="325.0700046782892" width="5.555555555555543" height="2.985566989032691" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KL91 — 1 QSO</title></rect><rect x="255.55555555555554" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM68 — 1 QSO</title></rect><rect x="477.77777777777777" y="269.9197759191894" width="5.555555555555543" height="3.549487223574829" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IM68 — 1 QSO</title></rect><rect x="294.44444444444446" y="495.0548773069617" width="5.555555555555543" height="3.4556545863186443" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FF33 — 1 QSO</title></rect><rect x="533.3333333333334" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP63 — 1 QSO</title></rect><rect x="488.8888888888889" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IN86 — 1 QSO</title></rect><rect x="516.6666666666666" y="576.3472772477426" width="5.555555555555543" height="0" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JA31 — 1 QSO</title></rect><rect x="644.4444444444445" y="218.0556956588022" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LO61 — 1 QSO</title></rect><rect x="983.3333333333334" y="509.16144429592424" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RE79 — 1 QSO</title></rect><rect x="566.6666666666666" y="576.3472772477426" width="5.555555555555543" height="0" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KB20 — 1 QSO</title></rect><rect x="516.6666666666666" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP33 — 1 QSO</title></rect><rect x="272.22222222222223" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN95 — 1 QSO</title></rect><rect x="255.55555555555554" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN65 — 1 QSO</title></rect><rect x="916.6666666666666" y="484.9409099983408" width="5.555555555555543" height="3.331204171115303" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QF56 — 1 QSO</title></rect><rect x="266.6666666666667" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM81 — 1 QSO</title></rect><rect x="983.3333333333334" y="512.81457775543" width="5.555555555555543" height="3.7089886042581384" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RE78 — 1 QSO</title></rect><rect x="583.3333333333334" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KM56 — 1 QSO</title></rect><rect x="555.5555555555555" y="94.4610082304232" width="5.555555555555543" height="8.756389518048536" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KQ01 — 1 QSO</title></rect><rect x="822.2222222222222" y="410.035383796489" width="5.555555555555657" height="2.808665374380098" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI81 — 1 QSO</title></rect><rect x="788.8888888888889" y="384.9626832219034" width="5.555555555555543" height="2.7779188151017706" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OJ20 — 1 QSO</title></rect><rect x="305.55555555555554" y="481.64725357182357" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FF57 — 1 QSO</title></rect><rect x="550" y="373.834051188952" width="5.555555555555543" height="2.7864030224779412" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JJ94 — 1 QSO</title></rect><rect x="294.44444444444446" y="552.9630840309534" width="5.555555555555543" height="4.462424384254746" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FD38 — 1 QSO</title></rect><rect x="261.1111111111111" y="273.46926314276425" width="5.5555555555556" height="3.5014090379658" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM77 — 1 QSO</title></rect><rect x="550" y="103.21739774847174" width="5.555555555555543" height="8.32330283315332" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JQ90 — 1 QSO</title></rect><rect x="577.7777777777778" y="199.13392682626778" width="5.555555555555543" height="4.904540516419246" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO45 — 1 QSO</title></rect><rect x="216.66666666666666" y="226.8853766582236" width="5.555555555555571" height="4.277339379680598" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN99 — 1 QSO</title></rect><rect x="788.8888888888889" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM20 — 1 QSO</title></rect><rect x="811.1111111111111" y="287.2090899045542" width="5.555555555555543" height="3.331204171115246" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM63 — 1 QSO</title></rect><rect x="805.5555555555555" y="322.0633084194684" width="5.555555555555543" height="3.0066962588207957" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL52 — 1 QSO</title></rect><rect x="800" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>ON40 — 1 QSO</title></rect><rect x="816.6666666666666" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM70 — 1 QSO</title></rect><rect x="811.1111111111111" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM62 — 1 QSO</title></rect><rect x="561.1111111111111" y="484.9409099983408" width="5.555555555555543" height="3.331204171115303" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KF16 — 1 QSO</title></rect><rect x="33.333333333333336" y="459.4996395170099" width="5.55555555555555" height="3.0776361264195202" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>AG64 — 1 QSO</title></rect><rect x="227.77777777777777" y="251.3603173772719" width="5.555555555555571" height="3.8295763562965703" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN13 — 1 QSO</title></rect><rect x="177.77777777777777" y="280.42632676704864" width="5.555555555555571" height="3.4121065763444562" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM25 — 1 QSO</title></rect><rect x="188.88888888888889" y="262.66662631858026" width="5.555555555555571" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN40 — 1 QSO</title></rect><rect x="200" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM64 — 1 QSO</title></rect><rect x="261.1111111111111" y="293.8339505021867" width="5.5555555555556" height="3.257927121642581" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM71 — 1 QSO</title></rect><rect x="577.7777777777778" y="453.41789565454195" width="5.555555555555543" height="3.0290560508297517" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KG46 — 1 QSO</title></rect><rect x="222.22222222222223" y="331.02120139841054" width="5.555555555555543" height="2.946848726935002" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EK09 — 1 QSO</title></rect><rect x="311.1111111111111" y="213.49244201308906" width="5.5555555555556" height="4.563253645713132" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FO62 — 1 QSO</title></rect><rect x="283.3333333333333" y="258.95763771432206" width="5.5555555555556" height="3.708988604258195" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN11 — 1 QSO</title></rect><rect x="227.77777777777777" y="273.46926314276425" width="5.555555555555571" height="3.5014090379658" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM17 — 1 QSO</title></rect><rect x="227.77777777777777" y="312.9039284305809" width="5.555555555555571" height="3.0776361264195202" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL15 — 1 QSO</title></rect><rect x="244.44444444444446" y="290.54029407566946" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM42 — 1 QSO</title></rect><rect x="250" y="280.42632676704864" width="5.555555555555543" height="3.4121065763444562" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM55 — 1 QSO</title></rect><rect x="244.44444444444446" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM41 — 1 QSO</title></rect><rect x="827.7777777777778" y="273.46926314276425" width="5.555555555555543" height="3.5014090379658" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM97 — 1 QSO</title></rect><rect x="783.3333333333334" y="342.7069896890221" width="5.555555555555543" height="2.8826594772441467" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OK15 — 1 QSO</title></rect><rect x="894.4444444444445" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN14 — 1 QSO</title></rect><rect x="538.8888888888889" y="119.47405036096598" width="5.555555555555543" height="7.58051386998585" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP78 — 1 QSO</title></rect><rect x="822.2222222222222" y="297.0918776238293" width="5.555555555555657" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OM80 — 1 QSO</title></rect><rect x="788.8888888888889" y="398.8607498625804" width="5.555555555555543" height="2.7864030224779412" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI25 — 1 QSO</title></rect><rect x="711.1111111111111" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MO82 — 1 QSO</title></rect><rect x="311.1111111111111" y="235.35501770154804" width="5.5555555555556" height="4.111807706701768" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN67 — 1 QSO</title></rect><rect x="238.88888888888889" y="290.54029407566946" width="5.555555555555571" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM32 — 1 QSO</title></rect><rect x="222.22222222222223" y="297.0918776238293" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM00 — 1 QSO</title></rect><rect x="527.7777777777778" y="183.61375288015708" width="5.555555555555543" height="5.316762625229728" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JO58 — 1 QSO</title></rect><rect x="605.5555555555555" y="315.9815645570004" width="5.555555555555543" height="3.0526878116381795" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KL94 — 1 QSO</title></rect><rect x="572.2222222222222" y="178.1402428975139" width="5.555555555555657" height="5.473509982643179" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KO39 — 1 QSO</title></rect><rect x="355.55555555555554" y="475.16539017852006" width="5.555555555555543" height="3.223936271660932" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF49 — 1 QSO</title></rect><rect x="400" y="412.8440491708691" width="5.555555555555543" height="2.8164408012197555" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>HI20 — 1 QSO</title></rect><rect x="777.7777777777778" y="331.02120139841054" width="5.555555555555543" height="2.946848726935002" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OK09 — 1 QSO</title></rect><rect x="61.111111111111114" y="362.63715490314127" width="5.555555555555557" height="2.808665374380041" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>BJ18 — 1 QSO</title></rect><rect x="783.3333333333334" y="312.9039284305809" width="5.555555555555543" height="3.0776361264195202" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL15 — 1 QSO</title></rect><rect x="261.1111111111111" y="239.4668254082498" width="5.5555555555556" height="4.03555295918207" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN76 — 1 QSO</title></rect><rect x="722.2222222222222" y="258.95763771432206" width="5.555555555555657" height="3.708988604258195" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NN01 — 1 QSO</title></rect><rect x="777.7777777777778" y="351.3156072994284" width="5.555555555555543" height="2.845260536408489" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OK02 — 1 QSO</title></rect><rect x="233.33333333333334" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN22 — 1 QSO</title></rect><rect x="550" y="484.9409099983408" width="5.555555555555543" height="3.331204171115303" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JF96 — 1 QSO</title></rect><rect x="366.6666666666667" y="447.4256324066884" width="5.555555555555543" height="2.985566989032691" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG68 — 1 QSO</title></rect><rect x="250" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN51 — 1 QSO</title></rect><rect x="250" y="239.4668254082498" width="5.555555555555543" height="4.03555295918207" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN56 — 1 QSO</title></rect><rect x="188.88888888888889" y="280.42632676704864" width="5.555555555555571" height="3.4121065763444562" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM45 — 1 QSO</title></rect><rect x="177.77777777777777" y="276.97067218073005" width="5.555555555555571" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM26 — 1 QSO</title></rect><rect x="366.6666666666667" y="456.4469517053717" width="5.555555555555543" height="3.0526878116381795" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG65 — 1 QSO</title></rect><rect x="233.33333333333334" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN21 — 1 QSO</title></rect><rect x="188.88888888888889" y="258.95763771432206" width="5.555555555555571" height="3.708988604258195" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN41 — 1 QSO</title></rect><rect x="211.11111111111111" y="258.95763771432206" width="5.555555555555543" height="3.708988604258195" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN81 — 1 QSO</title></rect><rect x="172.22222222222223" y="276.97067218073005" width="5.555555555555543" height="3.4556545863185875" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM16 — 1 QSO</title></rect><rect x="116.66666666666667" y="465.68122458523226" width="5.555555555555557" height="3.1316778114171484" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CG12 — 1 QSO</title></rect><rect x="155.55555555555554" y="247.46563895221013" width="5.555555555555571" height="3.894678425061784" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>CN84 — 1 QSO</title></rect><rect x="350" y="226.8853766582236" width="5.555555555555543" height="4.277339379680598" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GN39 — 1 QSO</title></rect><rect x="166.66666666666666" y="222.51812004305694" width="5.555555555555571" height="4.367256615166667" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DO00 — 1 QSO</title></rect><rect x="172.22222222222223" y="231.1627160379042" width="5.555555555555543" height="4.192301663643832" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN18 — 1 QSO</title></rect><rect x="244.44444444444446" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EL49 — 1 QSO</title></rect><rect x="627.7777777777778" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL39 — 1 QSO</title></rect><rect x="900" y="255.18989373356848" width="5.555555555555543" height="3.767743980753579" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QN22 — 1 QSO</title></rect><rect x="211.11111111111111" y="293.8339505021867" width="5.555555555555543" height="3.257927121642581" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DM81 — 1 QSO</title></rect><rect x="250" y="283.8384333433931" width="5.555555555555543" height="3.3706565611611268" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EM54 — 1 QSO</title></rect><rect x="233.33333333333334" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN20 — 1 QSO</title></rect><rect x="827.7777777777778" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>ON93 — 1 QSO</title></rect><rect x="600" y="235.35501770154804" width="5.555555555555543" height="4.111807706701768" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KN87 — 1 QSO</title></rect><rect x="772.2222222222222" y="376.62045421142994" width="5.555555555555657" height="2.7830041626457955" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NJ93 — 1 QSO</title></rect><rect x="105.55555555555556" y="548.5958274157867" width="5.555555555555557" height="4.367256615166639" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>BD99 — 1 QSO</title></rect><rect x="905.5555555555555" y="345.58964916626627" width="5.555555555555543" height="2.8692088227577983" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QK34 — 1 QSO</title></rect><rect x="250" y="247.46563895221013" width="5.555555555555543" height="3.894678425061784" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN54 — 1 QSO</title></rect><rect x="244.44444444444446" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EN40 — 1 QSO</title></rect><rect x="922.2222222222222" y="471.9737805632684" width="5.555555555555657" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QG60 — 1 QSO</title></rect><rect x="538.8888888888889" y="134.31441379097154" width="5.555555555555543" height="6.967254160321488" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP76 — 1 QSO</title></rect><rect x="827.7777777777778" y="516.5235663596882" width="5.555555555555543" height="3.767743980753721" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OE97 — 1 QSO</title></rect><rect x="294.44444444444446" y="373.834051188952" width="5.555555555555543" height="2.7864030224779412" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FJ34 — 1 QSO</title></rect><rect x="977.7777777777778" y="512.81457775543" width="5.555555555555543" height="3.7089886042581384" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RE68 — 1 QSO</title></rect><rect x="688.8888888888889" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MN43 — 1 QSO</title></rect><rect x="744.4444444444445" y="300.31581389549024" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NL49 — 1 QSO</title></rect><rect x="105.55555555555556" y="309.79997948877804" width="5.555555555555557" height="3.103948941802855" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>BL96 — 1 QSO</title></rect><rect x="650" y="312.9039284305809" width="5.555555555555543" height="3.0776361264195202" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LL75 — 1 QSO</title></rect><rect x="538.8888888888889" y="154.43404479952437" width="5.555555555555543" height="6.226155039310498" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP73 — 1 QSO</title></rect><rect x="761.1111111111111" y="251.3603173772719" width="5.555555555555543" height="3.8295763562965703" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>NN73 — 1 QSO</title></rect><rect x="977.7777777777778" y="520.2913103404419" width="5.555555555555543" height="3.8295763562964567" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RE66 — 1 QSO</title></rect><rect x="900" y="495.0548773069617" width="5.555555555555543" height="3.4556545863186443" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>QF23 — 1 QSO</title></rect><rect x="622.2222222222222" y="255.18989373356848" width="5.555555555555657" height="3.767743980753579" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LN22 — 1 QSO</title></rect><rect x="455.55555555555554" y="213.49244201308906" width="5.555555555555543" height="4.563253645713132" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO22 — 1 QSO</title></rect><rect x="33.333333333333336" y="415.66048997208884" width="5.55555555555555" height="2.825122393013089" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>AH69 — 1 QSO</title></rect><rect x="988.8888888888889" y="435.6713379228545" width="5.555555555555543" height="2.912625222066083" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>RH82 — 1 QSO</title></rect><rect x="622.2222222222222" y="85.22100455285738" width="5.555555555555657" height="9.240003677565824" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LQ22 — 1 QSO</title></rect><rect x="522.2222222222222" y="172.49869040212596" width="5.555555555555657" height="5.641552495387941" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>JP40 — 1 QSO</title></rect><rect x="361.1111111111111" y="447.4256324066884" width="5.5555555555556" height="2.985566989032691" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GG58 — 1 QSO</title></rect><rect x="655.5555555555555" y="444.46000267559975" width="5.555555555555543" height="2.9656297310886544" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>LG89 — 1 QSO</title></rect><rect x="794.4444444444445" y="407.2335998894394" width="5.555555555555543" height="2.8017839070495825" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI32 — 1 QSO</title></rect><rect x="788.8888888888889" y="401.64715288505835" width="5.555555555555543" height="2.7906613401339655" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OI24 — 1 QSO</title></rect><rect x="800" y="322.0633084194684" width="5.555555555555543" height="3.0066962588207957" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>OL42 — 1 QSO</title></rect><rect x="688.8888888888889" y="262.66662631858026" width="5.555555555555543" height="3.6531334595057956" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>MN40 — 1 QSO</title></rect><rect x="250" y="471.9737805632684" width="5.555555555555543" height="3.19160961525165" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>EG50 — 1 QSO</title></rect><rect x="344.44444444444446" y="481.64725357182357" width="5.555555555555543" height="3.293656426517259" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>GF27 — 1 QSO</title></rect><rect x="166.66666666666666" y="235.35501770154804" width="5.555555555555571" height="4.111807706701768" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>DN07 — 1 QSO</title></rect><rect x="277.77777777777777" y="243.50237836743187" width="5.555555555555543" height="3.9632605847782543" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>FN05 — 1 QSO</title></rect><rect x="561.1111111111111" y="134.31441379097154" width="5.555555555555543" height="6.967254160321488" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>KP16 — 1 QSO</title></rect><rect x="483.3333333333333" y="188.9305155053868" width="5.5555555555556" height="5.170275130241407" fill-opacity="0.24" stroke-width="0" style="fill:var(--rp-square);stroke:none"><title>IO77 — 1 QSO</title></rect><text x="205.55555555555554" y="199.13392682626778" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">77</text><text x="227.77777777777777" y="268.1262423796122" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">841</text><text x="686.1111111111111" y="235.35501770154804" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">42</text><text x="679.4444444444445" y="261.1898921217511" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">9</text><text x="827.7777777777778" y="394.6872510712005" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">76</text><text x="323.3333333333333" y="503.42583215215114" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">25</text><text x="525" y="172.49869040212596" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">92</text><text x="563.6111111111111" y="477.09576783910734" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">7</text><text x="215.27777777777777" y="320.2486384060429" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">1</text><text x="353.05555555555554" y="417.91984941463915" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">68</text><text x="506.94444444444446" y="241.49387989760046" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">799</text><text x="788.3333333333334" y="239.87374470471013" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">2</text><text x="716.6666666666666" y="328.0555716673219" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">28</text><text x="587.5" y="231.1627160379042" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">3443</text><text x="597.7777777777778" y="269.9197759191894" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">90</text><text x="871.6666666666666" y="460.42024965533136" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">19</text><text x="789.4444444444445" y="283.8384333433931" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">178</text><text x="783.0555555555555" y="376.0634729349326" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">2</text><text x="884.1666666666666" y="279.73874868142497" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">827</text><text x="625.2777777777778" y="319.3382000767074" text-anchor="middle" font-size="11.00" font-weight="700" paint-order="stroke" stroke-width="2.60" style="fill:var(--rp-ink);stroke:var(--rp-surface)">12</text></svg></div><div class="rp-legend"><span><i style="background:var(--rp-square);opacity:0.7"></i>locator square</span><span>country by callsign:</span><span><i style="background:var(--rp-q1)"></i>1–2</span><span><i style="background:var(--rp-q2)"></i>3–9</span><span><i style="background:var(--rp-q3)"></i>10–49</span><span><i style="background:var(--rp-q4)"></i>50–249</span><span><i style="background:var(--rp-q5)"></i>250 +</span><span><i style="background:var(--rp-land)"></i>not in the log</span></div></div>
<p>The leading locator fields confirm the geography without any statistics at all: Ukrainians sit in fields KN and KO, Germans in JO and JN, Poles in JO, Italians in JN, Britons in IO, Japanese in PM.</p>
<p>The small defects in the data are worth naming out loud as well: five callsigns — <code>489LGE</code>, <code>D01JAR/P</code>, <code>Y03FLP</code>, <code>Z50AF</code>, <code>Z62NS</code> — match nothing in the prefix table and are assigned to no country. They are either mistypings made on the air or special callsigns absent from the reference.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="propagation-the-bands-day-by-day">Propagation: the bands day by day<a href="https://cyberdev.space/en/blog/award-35-analysis/#propagation-the-bands-day-by-day" class="hash-link" aria-label="Direct link to Propagation: the bands day by day" title="Direct link to Propagation: the bands day by day" translate="no">​</a></h2>
<p>The award ran for 31 days (all times UTC) and gathered 17,387 contacts, of which 262 went through a geostationary satellite. Those are set aside in a section of their own and take no part in the propagation figures: the path to a geostationary satellite is the same by day and by night, in a storm and in quiet, so it says nothing about the ionosphere.</p>
<p>All correlations below are Spearman rank correlations.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="volume-is-governed-by-the-calendar-not-by-the-sun">Volume is governed by the calendar, not by the Sun<a href="https://cyberdev.space/en/blog/award-35-analysis/#volume-is-governed-by-the-calendar-not-by-the-sun" class="hash-link" aria-label="Direct link to Volume is governed by the calendar, not by the Sun" title="Direct link to Volume is governed by the calendar, not by the Sun" translate="no">​</a></h3>
<p>The correlation between the daily number of contacts and the SFI (the solar flux at 10.7 cm) is only <strong>0.12</strong>, and with the sunspot number it is actually negative. Meanwhile weekends average <strong>615</strong> contacts against <strong>523</strong> on weekdays, and three of the month's four biggest days are a Saturday or a Sunday: the 22nd (941), the 23rd (994) and the 16th (770). Sunday the 9th produced 736 contacts at an SFI of 94 — one of the lowest of the month.</p>
<p>This sounds banal until you notice how often, in amateur conversations about “a bad day”, the Sun is named as the culprit. On the scale of a month the deciding factor is when people have a free evening.</p>
<figure class="rp rp-chart"><h4>Daily contacts and the SFI</h4><p>bars — contacts per day<!-- --> (<span class="rp-sq" style="background:var(--rp-bar-alt)"></span>weekend<!-- -->);<!-- -->line — the solar flux index, right axis</p><svg viewBox="0 0 680 300" role="img" aria-label="Daily contacts and the SFI"><g><line x1="40" x2="622" y1="256" y2="256" style="stroke:var(--rp-grid)"></line><text x="34" y="259" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">0</text></g><g><line x1="40" x2="622" y1="201" y2="201" style="stroke:var(--rp-grid)"></line><text x="34" y="204" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">250</text></g><g><line x1="40" x2="622" y1="146" y2="146" style="stroke:var(--rp-grid)"></line><text x="34" y="149" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">500</text></g><g><line x1="40" x2="622" y1="91.00000000000001" y2="91.00000000000001" style="stroke:var(--rp-grid)"></line><text x="34" y="94.00000000000001" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">750</text></g><g><line x1="40" x2="622" y1="36.00000000000001" y2="36.00000000000001" style="stroke:var(--rp-grid)"></line><text x="34" y="39.00000000000001" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">1000</text></g><rect x="43.56709677419355" y="197.48" width="11.639999999999999" height="58.52" rx="2" style="fill:var(--rp-bar-alt)"><title>08-01 — 266 QSO · SFI 140</title></rect><rect x="62.34129032258065" y="206.94" width="11.639999999999999" height="49.06" rx="2" style="fill:var(--rp-bar-alt)"><title>08-02 — 223 QSO · SFI 127</title></rect><rect x="81.11548387096774" y="163.6" width="11.639999999999999" height="92.4" rx="2" style="fill:var(--rp-bar)"><title>08-03 — 420 QSO · SFI 126</title></rect><rect x="99.88967741935483" y="175.92000000000002" width="11.639999999999999" height="80.08" rx="2" style="fill:var(--rp-bar)"><title>08-04 — 364 QSO · SFI 118</title></rect><rect x="118.66387096774193" y="169.54" width="11.639999999999999" height="86.46000000000001" rx="2" style="fill:var(--rp-bar)"><title>08-05 — 393 QSO · SFI 108</title></rect><rect x="137.43806451612903" y="166.24" width="11.639999999999999" height="89.76" rx="2" style="fill:var(--rp-bar)"><title>08-06 — 408 QSO · SFI 101</title></rect><rect x="156.2122580645161" y="121.58000000000001" width="11.639999999999999" height="134.42" rx="2" style="fill:var(--rp-bar)"><title>08-07 — 611 QSO · SFI 97</title></rect><rect x="174.9864516129032" y="122.02000000000001" width="11.639999999999999" height="133.98" rx="2" style="fill:var(--rp-bar-alt)"><title>08-08 — 609 QSO · SFI 94</title></rect><rect x="193.7606451612903" y="94.08000000000001" width="11.639999999999999" height="161.92" rx="2" style="fill:var(--rp-bar-alt)"><title>08-09 — 736 QSO · SFI 94</title></rect><rect x="212.53483870967742" y="138.74" width="11.639999999999999" height="117.26" rx="2" style="fill:var(--rp-bar)"><title>08-10 — 533 QSO · SFI 95</title></rect><rect x="231.30903225806452" y="143.36" width="11.639999999999999" height="112.64" rx="2" style="fill:var(--rp-bar)"><title>08-11 — 512 QSO · SFI 96</title></rect><rect x="250.0832258064516" y="168.88" width="11.639999999999999" height="87.11999999999999" rx="2" style="fill:var(--rp-bar)"><title>08-12 — 396 QSO · SFI 100</title></rect><rect x="268.85741935483867" y="131.26" width="11.639999999999999" height="124.74000000000001" rx="2" style="fill:var(--rp-bar)"><title>08-13 — 567 QSO · SFI 108</title></rect><rect x="287.6316129032258" y="114.53999999999999" width="11.639999999999999" height="141.46" rx="2" style="fill:var(--rp-bar)"><title>08-14 — 643 QSO · SFI 114</title></rect><rect x="306.4058064516129" y="150.18" width="11.639999999999999" height="105.82" rx="2" style="fill:var(--rp-bar-alt)"><title>08-15 — 481 QSO · SFI 117</title></rect><rect x="325.18" y="86.60000000000002" width="11.639999999999999" height="169.39999999999998" rx="2" style="fill:var(--rp-bar-alt)"><title>08-16 — 770 QSO · SFI 129</title></rect><rect x="343.9541935483871" y="131.26" width="11.639999999999999" height="124.74000000000001" rx="2" style="fill:var(--rp-bar)"><title>08-17 — 567 QSO · SFI 124</title></rect><rect x="362.72838709677416" y="142.92000000000002" width="11.639999999999999" height="113.08" rx="2" style="fill:var(--rp-bar)"><title>08-18 — 514 QSO · SFI 125</title></rect><rect x="381.5025806451613" y="142.92000000000002" width="11.639999999999999" height="113.08" rx="2" style="fill:var(--rp-bar)"><title>08-19 — 514 QSO · SFI 126</title></rect><rect x="400.27677419354836" y="138.08" width="11.639999999999999" height="117.91999999999999" rx="2" style="fill:var(--rp-bar)"><title>08-20 — 536 QSO · SFI 125</title></rect><rect x="419.0509677419355" y="111.24000000000001" width="11.639999999999999" height="144.76" rx="2" style="fill:var(--rp-bar)"><title>08-21 — 658 QSO · SFI 126</title></rect><rect x="437.82516129032257" y="48.97999999999999" width="11.639999999999999" height="207.02" rx="2" style="fill:var(--rp-bar-alt)"><title>08-22 — 941 QSO · SFI 124</title></rect><rect x="456.59935483870964" y="37.31999999999999" width="11.639999999999999" height="218.68" rx="2" style="fill:var(--rp-bar-alt)"><title>08-23 — 994 QSO · SFI 128</title></rect><rect x="475.3735483870968" y="73.17999999999998" width="11.639999999999999" height="182.82000000000002" rx="2" style="fill:var(--rp-bar)"><title>08-24 — 831 QSO · SFI 143</title></rect><rect x="494.14774193548385" y="91.66" width="11.639999999999999" height="164.34" rx="2" style="fill:var(--rp-bar)"><title>08-25 — 747 QSO · SFI 132</title></rect><rect x="512.9219354838709" y="130.16" width="11.639999999999999" height="125.84" rx="2" style="fill:var(--rp-bar)"><title>08-26 — 572 QSO · SFI 131</title></rect><rect x="531.6961290322581" y="177.01999999999998" width="11.639999999999999" height="78.98" rx="2" style="fill:var(--rp-bar)"><title>08-27 — 359 QSO · SFI 122</title></rect><rect x="550.4703225806452" y="191.32" width="11.639999999999999" height="64.68" rx="2" style="fill:var(--rp-bar)"><title>08-28 — 294 QSO · SFI 116</title></rect><rect x="569.2445161290323" y="144.89999999999998" width="11.639999999999999" height="111.10000000000001" rx="2" style="fill:var(--rp-bar-alt)"><title>08-29 — 505 QSO · SFI 111</title></rect><rect x="588.0187096774193" y="120.47999999999999" width="11.639999999999999" height="135.52" rx="2" style="fill:var(--rp-bar-alt)"><title>08-30 — 616 QSO · SFI 107</title></rect><rect x="606.7929032258065" y="136.1" width="11.639999999999999" height="119.9" rx="2" style="fill:var(--rp-bar)"><title>08-31 — 545 QSO · SFI 107</title></rect><polyline points="49.4,48.6 68.2,93.5 86.9,97.0 105.7,124.6 124.5,159.2 143.3,183.4 162.0,197.2 180.8,207.6 199.6,207.6 218.4,204.1 237.1,200.7 255.9,186.9 274.7,159.2 293.5,138.5 312.2,128.1 331.0,86.6 349.8,103.9 368.5,100.4 387.3,97.0 406.1,100.4 424.9,97.0 443.6,103.9 462.4,90.1 481.2,38.2 500.0,76.2 518.7,79.7 537.5,110.8 556.3,131.5 575.1,148.8 593.8,162.7 612.6,162.7" fill="none" stroke-width="2" opacity=".9" style="stroke:var(--rp-gold)"></polyline><circle cx="49.38709677419355" cy="48.571428571428584" r="2.6" style="fill:var(--rp-gold)"><title>08-01 SFI 140</title></circle><circle cx="68.16129032258064" cy="93.51428571428573" r="2.6" style="fill:var(--rp-gold)"><title>08-02 SFI 127</title></circle><circle cx="86.93548387096774" cy="96.97142857142858" r="2.6" style="fill:var(--rp-gold)"><title>08-03 SFI 126</title></circle><circle cx="105.70967741935483" cy="124.62857142857143" r="2.6" style="fill:var(--rp-gold)"><title>08-04 SFI 118</title></circle><circle cx="124.48387096774194" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-05 SFI 108</title></circle><circle cx="143.25806451612902" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-06 SFI 101</title></circle><circle cx="162.0322580645161" cy="197.22857142857143" r="2.6" style="fill:var(--rp-gold)"><title>08-07 SFI 97</title></circle><circle cx="180.8064516129032" cy="207.60000000000002" r="2.6" style="fill:var(--rp-gold)"><title>08-08 SFI 94</title></circle><circle cx="199.5806451612903" cy="207.60000000000002" r="2.6" style="fill:var(--rp-gold)"><title>08-09 SFI 94</title></circle><circle cx="218.3548387096774" cy="204.14285714285714" r="2.6" style="fill:var(--rp-gold)"><title>08-10 SFI 95</title></circle><circle cx="237.1290322580645" cy="200.68571428571428" r="2.6" style="fill:var(--rp-gold)"><title>08-11 SFI 96</title></circle><circle cx="255.9032258064516" cy="186.85714285714286" r="2.6" style="fill:var(--rp-gold)"><title>08-12 SFI 100</title></circle><circle cx="274.67741935483866" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-13 SFI 108</title></circle><circle cx="293.4516129032258" cy="138.45714285714286" r="2.6" style="fill:var(--rp-gold)"><title>08-14 SFI 114</title></circle><circle cx="312.22580645161287" cy="128.0857142857143" r="2.6" style="fill:var(--rp-gold)"><title>08-15 SFI 117</title></circle><circle cx="331" cy="86.60000000000001" r="2.6" style="fill:var(--rp-gold)"><title>08-16 SFI 129</title></circle><circle cx="349.7741935483871" cy="103.88571428571429" r="2.6" style="fill:var(--rp-gold)"><title>08-17 SFI 124</title></circle><circle cx="368.54838709677415" cy="100.42857142857142" r="2.6" style="fill:var(--rp-gold)"><title>08-18 SFI 125</title></circle><circle cx="387.3225806451613" cy="96.97142857142858" r="2.6" style="fill:var(--rp-gold)"><title>08-19 SFI 126</title></circle><circle cx="406.09677419354836" cy="100.42857142857142" r="2.6" style="fill:var(--rp-gold)"><title>08-20 SFI 125</title></circle><circle cx="424.8709677419355" cy="96.97142857142858" r="2.6" style="fill:var(--rp-gold)"><title>08-21 SFI 126</title></circle><circle cx="443.64516129032256" cy="103.88571428571429" r="2.6" style="fill:var(--rp-gold)"><title>08-22 SFI 124</title></circle><circle cx="462.41935483870964" cy="90.05714285714285" r="2.6" style="fill:var(--rp-gold)"><title>08-23 SFI 128</title></circle><circle cx="481.19354838709677" cy="38.199999999999996" r="2.6" style="fill:var(--rp-gold)"><title>08-24 SFI 143</title></circle><circle cx="499.96774193548384" cy="76.22857142857143" r="2.6" style="fill:var(--rp-gold)"><title>08-25 SFI 132</title></circle><circle cx="518.741935483871" cy="79.6857142857143" r="2.6" style="fill:var(--rp-gold)"><title>08-26 SFI 131</title></circle><circle cx="537.516129032258" cy="110.80000000000001" r="2.6" style="fill:var(--rp-gold)"><title>08-27 SFI 122</title></circle><circle cx="556.2903225806451" cy="131.54285714285714" r="2.6" style="fill:var(--rp-gold)"><title>08-28 SFI 116</title></circle><circle cx="575.0645161290322" cy="148.82857142857142" r="2.6" style="fill:var(--rp-gold)"><title>08-29 SFI 111</title></circle><circle cx="593.8387096774193" cy="162.65714285714287" r="2.6" style="fill:var(--rp-gold)"><title>08-30 SFI 107</title></circle><circle cx="612.6129032258065" cy="162.65714285714287" r="2.6" style="fill:var(--rp-gold)"><title>08-31 SFI 107</title></circle><text x="626" y="224.42857142857144" font-size="10" style="fill:var(--rp-gold)">90</text><text x="626" y="120.71428571428572" font-size="10" style="fill:var(--rp-gold)">120</text><text x="626" y="17" font-size="10" style="fill:var(--rp-gold)">150</text><text x="49.38709677419355" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 49.4 272)">08-01</text><text x="105.70967741935483" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 105.7 272)">08-04</text><text x="162.0322580645161" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 162.0 272)">08-07</text><text x="218.3548387096774" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 218.4 272)">08-10</text><text x="274.67741935483866" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 274.7 272)">08-13</text><text x="331" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 331.0 272)">08-16</text><text x="387.3225806451613" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 387.3 272)">08-19</text><text x="443.64516129032256" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 443.6 272)">08-22</text><text x="499.96774193548384" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 500.0 272)">08-25</text><text x="556.2903225806451" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 556.3 272)">08-28</text><text x="612.6129032258065" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 612.6 272)">08-31</text><text x="622" y="294" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">contacts per day · SFI (right axis)</text></svg></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-high-bands-though-do-obey-the-sun">The high bands, though, do obey the Sun<a href="https://cyberdev.space/en/blog/award-35-analysis/#the-high-bands-though-do-obey-the-sun" class="hash-link" aria-label="Direct link to The high bands, though, do obey the Sun" title="Direct link to The high bands, though, do obey the Sun" translate="no">​</a></h3>
<p>Move from the overall volume to individual bands and the Sun comes back into the picture. For 10–17 m against SFI, r&nbsp;=&nbsp;<strong>0.35</strong>. When the SFI rose in the second half of the month from about 94 to a peak of 143 (on the 24th), 12 m gave more than 50 contacts in a day for the first time (55 on the 17th, 67 on the 25th), and 10 m reached 99 contacts on the 25th.</p>
<p>That said, 59 contacts on 10 m on the 10th at an SFI of 95 are a reminder that in summer 10 m is opened by sporadic E, which has no need of a high flux.</p>
<figure class="rp rp-chart"><h4>High bands by day</h4><p>stacked from the bottom up:<!-- --> <span class="rp-sq" style="background:var(--rp-bar)"></span>17 m<span class="rp-sq" style="background:var(--rp-blue-soft)"></span>15 m<span class="rp-sq" style="background:var(--rp-gold-soft)"></span>12 m<span class="rp-sq" style="background:var(--rp-gold)"></span>10 m</p><svg viewBox="0 0 680 270" role="img" aria-label="High bands by day"><g><line x1="40" x2="666" y1="226" y2="226" style="stroke:var(--rp-grid)"></line><text x="34" y="229" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">0</text></g><g><line x1="40" x2="666" y1="154.66666666666669" y2="154.66666666666669" style="stroke:var(--rp-grid)"></line><text x="34" y="157.66666666666669" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">150</text></g><g><line x1="40" x2="666" y1="83.33333333333334" y2="83.33333333333334" style="stroke:var(--rp-grid)"></line><text x="34" y="86.33333333333334" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">300</text></g><g><line x1="40" x2="666" y1="12" y2="12" style="stroke:var(--rp-grid)"></line><text x="34" y="15" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">450</text></g><rect x="43.836774193548386" y="226" width="12.520000000000001" height="0" rx="1" style="fill:var(--rp-bar)"><title>08-01 — 10m 12 · 12m 0 · 15m 140 · 17m 0</title></rect><rect x="43.836774193548386" y="159.42222222222222" width="12.520000000000001" height="66.57777777777778" rx="1" style="fill:var(--rp-blue-soft)"><title>08-01 — 10m 12 · 12m 0 · 15m 140 · 17m 0</title></rect><rect x="43.836774193548386" y="159.42222222222222" width="12.520000000000001" height="0" rx="1" style="fill:var(--rp-gold-soft)"><title>08-01 — 10m 12 · 12m 0 · 15m 140 · 17m 0</title></rect><rect x="43.836774193548386" y="153.71555555555554" width="12.520000000000001" height="5.706666666666667" rx="1" style="fill:var(--rp-gold)"><title>08-01 — 10m 12 · 12m 0 · 15m 140 · 17m 0</title></rect><rect x="64.03032258064516" y="223.14666666666668" width="12.520000000000001" height="2.8533333333333335" rx="1" style="fill:var(--rp-bar)"><title>08-02 — 10m 10 · 12m 2 · 15m 36 · 17m 6</title></rect><rect x="64.03032258064516" y="206.02666666666667" width="12.520000000000001" height="17.12" rx="1" style="fill:var(--rp-blue-soft)"><title>08-02 — 10m 10 · 12m 2 · 15m 36 · 17m 6</title></rect><rect x="64.03032258064516" y="205.07555555555555" width="12.520000000000001" height="0.9511111111111111" rx="1" style="fill:var(--rp-gold-soft)"><title>08-02 — 10m 10 · 12m 2 · 15m 36 · 17m 6</title></rect><rect x="64.03032258064516" y="200.32" width="12.520000000000001" height="4.7555555555555555" rx="1" style="fill:var(--rp-gold)"><title>08-02 — 10m 10 · 12m 2 · 15m 36 · 17m 6</title></rect><rect x="84.22387096774195" y="205.5511111111111" width="12.520000000000001" height="20.44888888888889" rx="1" style="fill:var(--rp-bar)"><title>08-03 — 10m 9 · 12m 15 · 15m 68 · 17m 43</title></rect><rect x="84.22387096774195" y="173.21333333333334" width="12.520000000000001" height="32.33777777777778" rx="1" style="fill:var(--rp-blue-soft)"><title>08-03 — 10m 9 · 12m 15 · 15m 68 · 17m 43</title></rect><rect x="84.22387096774195" y="166.07999999999998" width="12.520000000000001" height="7.133333333333333" rx="1" style="fill:var(--rp-gold-soft)"><title>08-03 — 10m 9 · 12m 15 · 15m 68 · 17m 43</title></rect><rect x="84.22387096774195" y="161.79999999999998" width="12.520000000000001" height="4.28" rx="1" style="fill:var(--rp-gold)"><title>08-03 — 10m 9 · 12m 15 · 15m 68 · 17m 43</title></rect><rect x="104.41741935483873" y="213.16" width="12.520000000000001" height="12.84" rx="1" style="fill:var(--rp-bar)"><title>08-04 — 10m 10 · 12m 15 · 15m 33 · 17m 27</title></rect><rect x="104.41741935483873" y="197.46666666666667" width="12.520000000000001" height="15.693333333333333" rx="1" style="fill:var(--rp-blue-soft)"><title>08-04 — 10m 10 · 12m 15 · 15m 33 · 17m 27</title></rect><rect x="104.41741935483873" y="190.33333333333334" width="12.520000000000001" height="7.133333333333333" rx="1" style="fill:var(--rp-gold-soft)"><title>08-04 — 10m 10 · 12m 15 · 15m 33 · 17m 27</title></rect><rect x="104.41741935483873" y="185.57777777777778" width="12.520000000000001" height="4.7555555555555555" rx="1" style="fill:var(--rp-gold)"><title>08-04 — 10m 10 · 12m 15 · 15m 33 · 17m 27</title></rect><rect x="124.6109677419355" y="226" width="12.520000000000001" height="0" rx="1" style="fill:var(--rp-bar)"><title>08-05 — 10m 3 · 12m 1 · 15m 26 · 17m 0</title></rect><rect x="124.6109677419355" y="213.63555555555556" width="12.520000000000001" height="12.364444444444445" rx="1" style="fill:var(--rp-blue-soft)"><title>08-05 — 10m 3 · 12m 1 · 15m 26 · 17m 0</title></rect><rect x="124.6109677419355" y="213.16" width="12.520000000000001" height="0.47555555555555556" rx="1" style="fill:var(--rp-gold-soft)"><title>08-05 — 10m 3 · 12m 1 · 15m 26 · 17m 0</title></rect><rect x="124.6109677419355" y="211.73333333333332" width="12.520000000000001" height="1.4266666666666667" rx="1" style="fill:var(--rp-gold)"><title>08-05 — 10m 3 · 12m 1 · 15m 26 · 17m 0</title></rect><rect x="144.80451612903227" y="187.95555555555555" width="12.520000000000001" height="38.044444444444444" rx="1" style="fill:var(--rp-bar)"><title>08-06 — 10m 16 · 12m 7 · 15m 49 · 17m 80</title></rect><rect x="144.80451612903227" y="164.65333333333334" width="12.520000000000001" height="23.30222222222222" rx="1" style="fill:var(--rp-blue-soft)"><title>08-06 — 10m 16 · 12m 7 · 15m 49 · 17m 80</title></rect><rect x="144.80451612903227" y="161.32444444444445" width="12.520000000000001" height="3.328888888888889" rx="1" style="fill:var(--rp-gold-soft)"><title>08-06 — 10m 16 · 12m 7 · 15m 49 · 17m 80</title></rect><rect x="144.80451612903227" y="153.71555555555557" width="12.520000000000001" height="7.608888888888889" rx="1" style="fill:var(--rp-gold)"><title>08-06 — 10m 16 · 12m 7 · 15m 49 · 17m 80</title></rect><rect x="164.99806451612906" y="209.35555555555555" width="12.520000000000001" height="16.644444444444446" rx="1" style="fill:var(--rp-bar)"><title>08-07 — 10m 43 · 12m 1 · 15m 125 · 17m 35</title></rect><rect x="164.99806451612906" y="149.9111111111111" width="12.520000000000001" height="59.44444444444445" rx="1" style="fill:var(--rp-blue-soft)"><title>08-07 — 10m 43 · 12m 1 · 15m 125 · 17m 35</title></rect><rect x="164.99806451612906" y="149.43555555555554" width="12.520000000000001" height="0.47555555555555556" rx="1" style="fill:var(--rp-gold-soft)"><title>08-07 — 10m 43 · 12m 1 · 15m 125 · 17m 35</title></rect><rect x="164.99806451612906" y="128.98666666666665" width="12.520000000000001" height="20.44888888888889" rx="1" style="fill:var(--rp-gold)"><title>08-07 — 10m 43 · 12m 1 · 15m 125 · 17m 35</title></rect><rect x="185.19161290322583" y="211.2577777777778" width="12.520000000000001" height="14.742222222222223" rx="1" style="fill:var(--rp-bar)"><title>08-08 — 10m 3 · 12m 8 · 15m 195 · 17m 31</title></rect><rect x="185.19161290322583" y="118.52444444444446" width="12.520000000000001" height="92.73333333333333" rx="1" style="fill:var(--rp-blue-soft)"><title>08-08 — 10m 3 · 12m 8 · 15m 195 · 17m 31</title></rect><rect x="185.19161290322583" y="114.72" width="12.520000000000001" height="3.8044444444444445" rx="1" style="fill:var(--rp-gold-soft)"><title>08-08 — 10m 3 · 12m 8 · 15m 195 · 17m 31</title></rect><rect x="185.19161290322583" y="113.29333333333334" width="12.520000000000001" height="1.4266666666666667" rx="1" style="fill:var(--rp-gold)"><title>08-08 — 10m 3 · 12m 8 · 15m 195 · 17m 31</title></rect><rect x="205.3851612903226" y="214.11111111111111" width="12.520000000000001" height="11.888888888888888" rx="1" style="fill:var(--rp-bar)"><title>08-09 — 10m 31 · 12m 1 · 15m 96 · 17m 25</title></rect><rect x="205.3851612903226" y="168.45777777777778" width="12.520000000000001" height="45.653333333333336" rx="1" style="fill:var(--rp-blue-soft)"><title>08-09 — 10m 31 · 12m 1 · 15m 96 · 17m 25</title></rect><rect x="205.3851612903226" y="167.98222222222222" width="12.520000000000001" height="0.47555555555555556" rx="1" style="fill:var(--rp-gold-soft)"><title>08-09 — 10m 31 · 12m 1 · 15m 96 · 17m 25</title></rect><rect x="205.3851612903226" y="153.24" width="12.520000000000001" height="14.742222222222223" rx="1" style="fill:var(--rp-gold)"><title>08-09 — 10m 31 · 12m 1 · 15m 96 · 17m 25</title></rect><rect x="225.57870967741937" y="219.8177777777778" width="12.520000000000001" height="6.182222222222222" rx="1" style="fill:var(--rp-bar)"><title>08-10 — 10m 59 · 12m 27 · 15m 58 · 17m 13</title></rect><rect x="225.57870967741937" y="192.23555555555558" width="12.520000000000001" height="27.58222222222222" rx="1" style="fill:var(--rp-blue-soft)"><title>08-10 — 10m 59 · 12m 27 · 15m 58 · 17m 13</title></rect><rect x="225.57870967741937" y="179.39555555555555" width="12.520000000000001" height="12.84" rx="1" style="fill:var(--rp-gold-soft)"><title>08-10 — 10m 59 · 12m 27 · 15m 58 · 17m 13</title></rect><rect x="225.57870967741937" y="151.3377777777778" width="12.520000000000001" height="28.05777777777778" rx="1" style="fill:var(--rp-gold)"><title>08-10 — 10m 59 · 12m 27 · 15m 58 · 17m 13</title></rect><rect x="245.77225806451614" y="222.67111111111112" width="12.520000000000001" height="3.328888888888889" rx="1" style="fill:var(--rp-bar)"><title>08-11 — 10m 32 · 12m 25 · 15m 80 · 17m 7</title></rect><rect x="245.77225806451614" y="184.62666666666667" width="12.520000000000001" height="38.044444444444444" rx="1" style="fill:var(--rp-blue-soft)"><title>08-11 — 10m 32 · 12m 25 · 15m 80 · 17m 7</title></rect><rect x="245.77225806451614" y="172.73777777777778" width="12.520000000000001" height="11.888888888888888" rx="1" style="fill:var(--rp-gold-soft)"><title>08-11 — 10m 32 · 12m 25 · 15m 80 · 17m 7</title></rect><rect x="245.77225806451614" y="157.52" width="12.520000000000001" height="15.217777777777778" rx="1" style="fill:var(--rp-gold)"><title>08-11 — 10m 32 · 12m 25 · 15m 80 · 17m 7</title></rect><rect x="265.9658064516129" y="212.68444444444444" width="12.520000000000001" height="13.315555555555555" rx="1" style="fill:var(--rp-bar)"><title>08-12 — 10m 25 · 12m 10 · 15m 69 · 17m 28</title></rect><rect x="265.9658064516129" y="179.8711111111111" width="12.520000000000001" height="32.81333333333333" rx="1" style="fill:var(--rp-blue-soft)"><title>08-12 — 10m 25 · 12m 10 · 15m 69 · 17m 28</title></rect><rect x="265.9658064516129" y="175.11555555555555" width="12.520000000000001" height="4.7555555555555555" rx="1" style="fill:var(--rp-gold-soft)"><title>08-12 — 10m 25 · 12m 10 · 15m 69 · 17m 28</title></rect><rect x="265.9658064516129" y="163.22666666666666" width="12.520000000000001" height="11.888888888888888" rx="1" style="fill:var(--rp-gold)"><title>08-12 — 10m 25 · 12m 10 · 15m 69 · 17m 28</title></rect><rect x="286.1593548387097" y="220.29333333333332" width="12.520000000000001" height="5.706666666666667" rx="1" style="fill:var(--rp-bar)"><title>08-13 — 10m 31 · 12m 19 · 15m 84 · 17m 12</title></rect><rect x="286.1593548387097" y="180.34666666666666" width="12.520000000000001" height="39.946666666666665" rx="1" style="fill:var(--rp-blue-soft)"><title>08-13 — 10m 31 · 12m 19 · 15m 84 · 17m 12</title></rect><rect x="286.1593548387097" y="171.3111111111111" width="12.520000000000001" height="9.035555555555556" rx="1" style="fill:var(--rp-gold-soft)"><title>08-13 — 10m 31 · 12m 19 · 15m 84 · 17m 12</title></rect><rect x="286.1593548387097" y="156.5688888888889" width="12.520000000000001" height="14.742222222222223" rx="1" style="fill:var(--rp-gold)"><title>08-13 — 10m 31 · 12m 19 · 15m 84 · 17m 12</title></rect><rect x="306.3529032258065" y="210.30666666666667" width="12.520000000000001" height="15.693333333333333" rx="1" style="fill:var(--rp-bar)"><title>08-14 — 10m 13 · 12m 18 · 15m 56 · 17m 33</title></rect><rect x="306.3529032258065" y="183.67555555555555" width="12.520000000000001" height="26.63111111111111" rx="1" style="fill:var(--rp-blue-soft)"><title>08-14 — 10m 13 · 12m 18 · 15m 56 · 17m 33</title></rect><rect x="306.3529032258065" y="175.11555555555555" width="12.520000000000001" height="8.56" rx="1" style="fill:var(--rp-gold-soft)"><title>08-14 — 10m 13 · 12m 18 · 15m 56 · 17m 33</title></rect><rect x="306.3529032258065" y="168.93333333333334" width="12.520000000000001" height="6.182222222222222" rx="1" style="fill:var(--rp-gold)"><title>08-14 — 10m 13 · 12m 18 · 15m 56 · 17m 33</title></rect><rect x="326.54645161290324" y="157.04444444444442" width="12.520000000000001" height="68.95555555555556" rx="1" style="fill:var(--rp-bar)"><title>08-15 — 10m 16 · 12m 13 · 15m 31 · 17m 145</title></rect><rect x="326.54645161290324" y="142.3022222222222" width="12.520000000000001" height="14.742222222222223" rx="1" style="fill:var(--rp-blue-soft)"><title>08-15 — 10m 16 · 12m 13 · 15m 31 · 17m 145</title></rect><rect x="326.54645161290324" y="136.12" width="12.520000000000001" height="6.182222222222222" rx="1" style="fill:var(--rp-gold-soft)"><title>08-15 — 10m 16 · 12m 13 · 15m 31 · 17m 145</title></rect><rect x="326.54645161290324" y="128.51111111111112" width="12.520000000000001" height="7.608888888888889" rx="1" style="fill:var(--rp-gold)"><title>08-15 — 10m 16 · 12m 13 · 15m 31 · 17m 145</title></rect><rect x="346.74" y="117.0977777777778" width="12.520000000000001" height="108.9022222222222" rx="1" style="fill:var(--rp-bar)"><title>08-16 — 10m 21 · 12m 20 · 15m 72 · 17m 229</title></rect><rect x="346.74" y="82.85777777777778" width="12.520000000000001" height="34.24" rx="1" style="fill:var(--rp-blue-soft)"><title>08-16 — 10m 21 · 12m 20 · 15m 72 · 17m 229</title></rect><rect x="346.74" y="73.34666666666668" width="12.520000000000001" height="9.511111111111111" rx="1" style="fill:var(--rp-gold-soft)"><title>08-16 — 10m 21 · 12m 20 · 15m 72 · 17m 229</title></rect><rect x="346.74" y="63.36" width="12.520000000000001" height="9.986666666666666" rx="1" style="fill:var(--rp-gold)"><title>08-16 — 10m 21 · 12m 20 · 15m 72 · 17m 229</title></rect><rect x="366.9335483870968" y="153.24" width="12.520000000000001" height="72.76" rx="1" style="fill:var(--rp-bar)"><title>08-17 — 10m 12 · 12m 55 · 15m 107 · 17m 153</title></rect><rect x="366.9335483870968" y="102.35555555555555" width="12.520000000000001" height="50.88444444444445" rx="1" style="fill:var(--rp-blue-soft)"><title>08-17 — 10m 12 · 12m 55 · 15m 107 · 17m 153</title></rect><rect x="366.9335483870968" y="76.2" width="12.520000000000001" height="26.155555555555555" rx="1" style="fill:var(--rp-gold-soft)"><title>08-17 — 10m 12 · 12m 55 · 15m 107 · 17m 153</title></rect><rect x="366.9335483870968" y="70.49333333333333" width="12.520000000000001" height="5.706666666666667" rx="1" style="fill:var(--rp-gold)"><title>08-17 — 10m 12 · 12m 55 · 15m 107 · 17m 153</title></rect><rect x="387.12709677419355" y="151.33777777777777" width="12.520000000000001" height="74.66222222222223" rx="1" style="fill:var(--rp-bar)"><title>08-18 — 10m 16 · 12m 19 · 15m 13 · 17m 157</title></rect><rect x="387.12709677419355" y="145.15555555555557" width="12.520000000000001" height="6.182222222222222" rx="1" style="fill:var(--rp-blue-soft)"><title>08-18 — 10m 16 · 12m 19 · 15m 13 · 17m 157</title></rect><rect x="387.12709677419355" y="136.12" width="12.520000000000001" height="9.035555555555556" rx="1" style="fill:var(--rp-gold-soft)"><title>08-18 — 10m 16 · 12m 19 · 15m 13 · 17m 157</title></rect><rect x="387.12709677419355" y="128.51111111111112" width="12.520000000000001" height="7.608888888888889" rx="1" style="fill:var(--rp-gold)"><title>08-18 — 10m 16 · 12m 19 · 15m 13 · 17m 157</title></rect><rect x="407.3206451612903" y="177.01777777777778" width="12.520000000000001" height="48.98222222222222" rx="1" style="fill:var(--rp-bar)"><title>08-19 — 10m 26 · 12m 15 · 15m 66 · 17m 103</title></rect><rect x="407.3206451612903" y="145.63111111111112" width="12.520000000000001" height="31.386666666666667" rx="1" style="fill:var(--rp-blue-soft)"><title>08-19 — 10m 26 · 12m 15 · 15m 66 · 17m 103</title></rect><rect x="407.3206451612903" y="138.4977777777778" width="12.520000000000001" height="7.133333333333333" rx="1" style="fill:var(--rp-gold-soft)"><title>08-19 — 10m 26 · 12m 15 · 15m 66 · 17m 103</title></rect><rect x="407.3206451612903" y="126.13333333333333" width="12.520000000000001" height="12.364444444444445" rx="1" style="fill:var(--rp-gold)"><title>08-19 — 10m 26 · 12m 15 · 15m 66 · 17m 103</title></rect><rect x="427.5141935483871" y="206.02666666666667" width="12.520000000000001" height="19.973333333333333" rx="1" style="fill:var(--rp-bar)"><title>08-20 — 10m 13 · 12m 32 · 15m 149 · 17m 42</title></rect><rect x="427.5141935483871" y="135.1688888888889" width="12.520000000000001" height="70.85777777777778" rx="1" style="fill:var(--rp-blue-soft)"><title>08-20 — 10m 13 · 12m 32 · 15m 149 · 17m 42</title></rect><rect x="427.5141935483871" y="119.9511111111111" width="12.520000000000001" height="15.217777777777778" rx="1" style="fill:var(--rp-gold-soft)"><title>08-20 — 10m 13 · 12m 32 · 15m 149 · 17m 42</title></rect><rect x="427.5141935483871" y="113.76888888888888" width="12.520000000000001" height="6.182222222222222" rx="1" style="fill:var(--rp-gold)"><title>08-20 — 10m 13 · 12m 32 · 15m 149 · 17m 42</title></rect><rect x="447.70774193548385" y="206.02666666666667" width="12.520000000000001" height="19.973333333333333" rx="1" style="fill:var(--rp-bar)"><title>08-21 — 10m 26 · 12m 30 · 15m 147 · 17m 42</title></rect><rect x="447.70774193548385" y="136.12" width="12.520000000000001" height="69.90666666666667" rx="1" style="fill:var(--rp-blue-soft)"><title>08-21 — 10m 26 · 12m 30 · 15m 147 · 17m 42</title></rect><rect x="447.70774193548385" y="121.85333333333334" width="12.520000000000001" height="14.266666666666666" rx="1" style="fill:var(--rp-gold-soft)"><title>08-21 — 10m 26 · 12m 30 · 15m 147 · 17m 42</title></rect><rect x="447.70774193548385" y="109.4888888888889" width="12.520000000000001" height="12.364444444444445" rx="1" style="fill:var(--rp-gold)"><title>08-21 — 10m 26 · 12m 30 · 15m 147 · 17m 42</title></rect><rect x="467.9012903225807" y="161.8" width="12.520000000000001" height="64.2" rx="1" style="fill:var(--rp-bar)"><title>08-22 — 10m 56 · 12m 4 · 15m 194 · 17m 135</title></rect><rect x="467.9012903225807" y="69.54222222222224" width="12.520000000000001" height="92.25777777777778" rx="1" style="fill:var(--rp-blue-soft)"><title>08-22 — 10m 56 · 12m 4 · 15m 194 · 17m 135</title></rect><rect x="467.9012903225807" y="67.64" width="12.520000000000001" height="1.9022222222222223" rx="1" style="fill:var(--rp-gold-soft)"><title>08-22 — 10m 56 · 12m 4 · 15m 194 · 17m 135</title></rect><rect x="467.9012903225807" y="41.008888888888876" width="12.520000000000001" height="26.63111111111111" rx="1" style="fill:var(--rp-gold)"><title>08-22 — 10m 56 · 12m 4 · 15m 194 · 17m 135</title></rect><rect x="488.09483870967745" y="192.7111111111111" width="12.520000000000001" height="33.28888888888889" rx="1" style="fill:var(--rp-bar)"><title>08-23 — 10m 49 · 12m 20 · 15m 197 · 17m 70</title></rect><rect x="488.09483870967745" y="99.02666666666667" width="12.520000000000001" height="93.68444444444444" rx="1" style="fill:var(--rp-blue-soft)"><title>08-23 — 10m 49 · 12m 20 · 15m 197 · 17m 70</title></rect><rect x="488.09483870967745" y="89.51555555555557" width="12.520000000000001" height="9.511111111111111" rx="1" style="fill:var(--rp-gold-soft)"><title>08-23 — 10m 49 · 12m 20 · 15m 197 · 17m 70</title></rect><rect x="488.09483870967745" y="66.21333333333334" width="12.520000000000001" height="23.30222222222222" rx="1" style="fill:var(--rp-gold)"><title>08-23 — 10m 49 · 12m 20 · 15m 197 · 17m 70</title></rect><rect x="508.2883870967742" y="190.33333333333334" width="12.520000000000001" height="35.666666666666664" rx="1" style="fill:var(--rp-bar)"><title>08-24 — 10m 2 · 12m 4 · 15m 136 · 17m 75</title></rect><rect x="508.2883870967742" y="125.65777777777778" width="12.520000000000001" height="64.67555555555556" rx="1" style="fill:var(--rp-blue-soft)"><title>08-24 — 10m 2 · 12m 4 · 15m 136 · 17m 75</title></rect><rect x="508.2883870967742" y="123.75555555555555" width="12.520000000000001" height="1.9022222222222223" rx="1" style="fill:var(--rp-gold-soft)"><title>08-24 — 10m 2 · 12m 4 · 15m 136 · 17m 75</title></rect><rect x="508.2883870967742" y="122.80444444444443" width="12.520000000000001" height="0.9511111111111111" rx="1" style="fill:var(--rp-gold)"><title>08-24 — 10m 2 · 12m 4 · 15m 136 · 17m 75</title></rect><rect x="528.4819354838711" y="151.33777777777777" width="12.520000000000001" height="74.66222222222223" rx="1" style="fill:var(--rp-bar)"><title>08-25 — 10m 99 · 12m 67 · 15m 93 · 17m 157</title></rect><rect x="528.4819354838711" y="107.11111111111111" width="12.520000000000001" height="44.22666666666667" rx="1" style="fill:var(--rp-blue-soft)"><title>08-25 — 10m 99 · 12m 67 · 15m 93 · 17m 157</title></rect><rect x="528.4819354838711" y="75.2488888888889" width="12.520000000000001" height="31.86222222222222" rx="1" style="fill:var(--rp-gold-soft)"><title>08-25 — 10m 99 · 12m 67 · 15m 93 · 17m 157</title></rect><rect x="528.4819354838711" y="28.1688888888889" width="12.520000000000001" height="47.08" rx="1" style="fill:var(--rp-gold)"><title>08-25 — 10m 99 · 12m 67 · 15m 93 · 17m 157</title></rect><rect x="548.6754838709678" y="207.45333333333332" width="12.520000000000001" height="18.546666666666667" rx="1" style="fill:var(--rp-bar)"><title>08-26 — 10m 7 · 12m 28 · 15m 250 · 17m 39</title></rect><rect x="548.6754838709678" y="88.56444444444442" width="12.520000000000001" height="118.8888888888889" rx="1" style="fill:var(--rp-blue-soft)"><title>08-26 — 10m 7 · 12m 28 · 15m 250 · 17m 39</title></rect><rect x="548.6754838709678" y="75.24888888888887" width="12.520000000000001" height="13.315555555555555" rx="1" style="fill:var(--rp-gold-soft)"><title>08-26 — 10m 7 · 12m 28 · 15m 250 · 17m 39</title></rect><rect x="548.6754838709678" y="71.91999999999999" width="12.520000000000001" height="3.328888888888889" rx="1" style="fill:var(--rp-gold)"><title>08-26 — 10m 7 · 12m 28 · 15m 250 · 17m 39</title></rect><rect x="568.8690322580646" y="166.07999999999998" width="12.520000000000001" height="59.92000000000001" rx="1" style="fill:var(--rp-bar)"><title>08-27 — 10m 7 · 12m 0 · 15m 56 · 17m 126</title></rect><rect x="568.8690322580646" y="139.44888888888886" width="12.520000000000001" height="26.63111111111111" rx="1" style="fill:var(--rp-blue-soft)"><title>08-27 — 10m 7 · 12m 0 · 15m 56 · 17m 126</title></rect><rect x="568.8690322580646" y="139.4488888888889" width="12.520000000000001" height="0" rx="1" style="fill:var(--rp-gold-soft)"><title>08-27 — 10m 7 · 12m 0 · 15m 56 · 17m 126</title></rect><rect x="568.8690322580646" y="136.12" width="12.520000000000001" height="3.328888888888889" rx="1" style="fill:var(--rp-gold)"><title>08-27 — 10m 7 · 12m 0 · 15m 56 · 17m 126</title></rect><rect x="589.0625806451613" y="220.76888888888888" width="12.520000000000001" height="5.231111111111112" rx="1" style="fill:var(--rp-bar)"><title>08-28 — 10m 3 · 12m 12 · 15m 50 · 17m 11</title></rect><rect x="589.0625806451613" y="196.9911111111111" width="12.520000000000001" height="23.777777777777775" rx="1" style="fill:var(--rp-blue-soft)"><title>08-28 — 10m 3 · 12m 12 · 15m 50 · 17m 11</title></rect><rect x="589.0625806451613" y="191.28444444444443" width="12.520000000000001" height="5.706666666666667" rx="1" style="fill:var(--rp-gold-soft)"><title>08-28 — 10m 3 · 12m 12 · 15m 50 · 17m 11</title></rect><rect x="589.0625806451613" y="189.85777777777776" width="12.520000000000001" height="1.4266666666666667" rx="1" style="fill:var(--rp-gold)"><title>08-28 — 10m 3 · 12m 12 · 15m 50 · 17m 11</title></rect><rect x="609.2561290322582" y="175.5911111111111" width="12.520000000000001" height="50.40888888888889" rx="1" style="fill:var(--rp-bar)"><title>08-29 — 10m 0 · 12m 0 · 15m 19 · 17m 106</title></rect><rect x="609.2561290322582" y="166.55555555555554" width="12.520000000000001" height="9.035555555555556" rx="1" style="fill:var(--rp-blue-soft)"><title>08-29 — 10m 0 · 12m 0 · 15m 19 · 17m 106</title></rect><rect x="609.2561290322582" y="166.55555555555554" width="12.520000000000001" height="0" rx="1" style="fill:var(--rp-gold-soft)"><title>08-29 — 10m 0 · 12m 0 · 15m 19 · 17m 106</title></rect><rect x="609.2561290322582" y="166.55555555555554" width="12.520000000000001" height="0" rx="1" style="fill:var(--rp-gold)"><title>08-29 — 10m 0 · 12m 0 · 15m 19 · 17m 106</title></rect><rect x="629.4496774193549" y="142.3022222222222" width="12.520000000000001" height="83.69777777777779" rx="1" style="fill:var(--rp-bar)"><title>08-30 — 10m 0 · 12m 6 · 15m 34 · 17m 176</title></rect><rect x="629.4496774193549" y="126.13333333333333" width="12.520000000000001" height="16.16888888888889" rx="1" style="fill:var(--rp-blue-soft)"><title>08-30 — 10m 0 · 12m 6 · 15m 34 · 17m 176</title></rect><rect x="629.4496774193549" y="123.27999999999999" width="12.520000000000001" height="2.8533333333333335" rx="1" style="fill:var(--rp-gold-soft)"><title>08-30 — 10m 0 · 12m 6 · 15m 34 · 17m 176</title></rect><rect x="629.4496774193549" y="123.27999999999999" width="12.520000000000001" height="0" rx="1" style="fill:var(--rp-gold)"><title>08-30 — 10m 0 · 12m 6 · 15m 34 · 17m 176</title></rect><rect x="649.6432258064517" y="154.19111111111113" width="12.520000000000001" height="71.80888888888889" rx="1" style="fill:var(--rp-bar)"><title>08-31 — 10m 19 · 12m 18 · 15m 72 · 17m 151</title></rect><rect x="649.6432258064517" y="119.95111111111112" width="12.520000000000001" height="34.24" rx="1" style="fill:var(--rp-blue-soft)"><title>08-31 — 10m 19 · 12m 18 · 15m 72 · 17m 151</title></rect><rect x="649.6432258064517" y="111.39111111111112" width="12.520000000000001" height="8.56" rx="1" style="fill:var(--rp-gold-soft)"><title>08-31 — 10m 19 · 12m 18 · 15m 72 · 17m 151</title></rect><rect x="649.6432258064517" y="102.35555555555555" width="12.520000000000001" height="9.035555555555556" rx="1" style="fill:var(--rp-gold)"><title>08-31 — 10m 19 · 12m 18 · 15m 72 · 17m 151</title></rect><text x="50.096774193548384" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 50.1 242)">08-01</text><text x="110.67741935483872" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 110.7 242)">08-04</text><text x="171.25806451612905" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 171.3 242)">08-07</text><text x="231.83870967741936" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 231.8 242)">08-10</text><text x="292.41935483870975" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 292.4 242)">08-13</text><text x="353.00000000000006" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 353.0 242)">08-16</text><text x="413.58064516129036" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 413.6 242)">08-19</text><text x="474.1612903225807" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 474.2 242)">08-22</text><text x="534.7419354838711" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 534.7 242)">08-25</text><text x="595.3225806451613" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 595.3 242)">08-28</text><text x="655.9032258064517" y="242" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 655.9 242)">08-31</text></svg></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="magnetic-storms-pressed-on-the-low-bands">Magnetic storms pressed on the low bands<a href="https://cyberdev.space/en/blog/award-35-analysis/#magnetic-storms-pressed-on-the-low-bands" class="hash-link" aria-label="Direct link to Magnetic storms pressed on the low bands" title="Direct link to Magnetic storms pressed on the low bands" translate="no">​</a></h3>
<p>2–3 August (A&nbsp;=&nbsp;15 and 17, Kp up to 5.7) produced the month's minima — 223 and 420 contacts — and the correlation of 40/80 m with the A index is r&nbsp;=&nbsp;<strong>−0.20</strong>.</p>
<p>Signal quality in the digital modes, however, the storms barely touched: the median FT8/FT4 SNR stayed all month in a corridor of −12…−6 dB and is only weakly related to the SFI (r&nbsp;=&nbsp;0.12). The best day by the share of strong signals (≥&nbsp;−7 dB) was the 25th (55.7 %): a high SFI of 132 and a quiet magnetic background. The worst were the 27th and 29th (27.0 and 28.2 %), when the flux was already falling.</p>
<figure class="rp rp-chart"><h4>Signal quality and magnetic storms</h4><p><span class="rp-sq" style="background:var(--rp-gold)"></span>median SNR, dB (left axis)<!-- -->;<span class="rp-sq" style="background:var(--rp-quiet)"></span>A index (right axis)<!-- -->;<span class="rp-sq" style="background:var(--rp-storm)"></span>storm (A ≥ 13)</p><svg viewBox="0 0 680 300" role="img" aria-label="Signal quality and magnetic storms"><g><line x1="46" x2="626" y1="256" y2="256" style="stroke:var(--rp-grid)"></line><text x="40" y="259" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">−14</text></g><g><line x1="46" x2="626" y1="207.60000000000002" y2="207.60000000000002" style="stroke:var(--rp-grid)"></line><text x="40" y="210.60000000000002" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">−12</text></g><g><line x1="46" x2="626" y1="159.2" y2="159.2" style="stroke:var(--rp-grid)"></line><text x="40" y="162.2" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">−10</text></g><g><line x1="46" x2="626" y1="110.80000000000001" y2="110.80000000000001" style="stroke:var(--rp-grid)"></line><text x="40" y="113.80000000000001" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">−8</text></g><g><line x1="46" x2="626" y1="62.39999999999999" y2="62.39999999999999" style="stroke:var(--rp-grid)"></line><text x="40" y="65.39999999999999" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">−6</text></g><g><line x1="46" x2="626" y1="14" y2="14" style="stroke:var(--rp-grid)"></line><text x="40" y="17" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">−4</text></g><rect x="49" y="207.60000000000002" width="12.70967741935484" height="48.39999999999998" opacity=".55" style="fill:var(--rp-quiet)"><title>08-01 A = 5 · Kp 1,3</title></rect><rect x="67.70967741935485" y="110.80000000000001" width="12.70967741935484" height="145.2" opacity=".55" style="fill:var(--rp-storm)"><title>08-02 A = 15 · Kp 5,7</title></rect><rect x="86.41935483870968" y="91.43999999999998" width="12.70967741935484" height="164.56" opacity=".55" style="fill:var(--rp-storm)"><title>08-03 A = 17 · Kp 4,3</title></rect><rect x="105.12903225806451" y="149.52" width="12.70967741935484" height="106.47999999999999" opacity=".55" style="fill:var(--rp-quiet)"><title>08-04 A = 11 · Kp 4,0</title></rect><rect x="123.83870967741936" y="226.96" width="12.70967741935484" height="29.039999999999992" opacity=".55" style="fill:var(--rp-quiet)"><title>08-05 A = 3 · Kp 1,3</title></rect><rect x="142.5483870967742" y="207.60000000000002" width="12.70967741935484" height="48.39999999999998" opacity=".55" style="fill:var(--rp-quiet)"><title>08-06 A = 5 · Kp 1,3</title></rect><rect x="161.25806451612902" y="207.60000000000002" width="12.70967741935484" height="48.39999999999998" opacity=".55" style="fill:var(--rp-quiet)"><title>08-07 A = 5 · Kp 1,7</title></rect><rect x="179.96774193548387" y="130.16" width="12.70967741935484" height="125.84" opacity=".55" style="fill:var(--rp-storm)"><title>08-08 A = 13 · Kp 5,7</title></rect><rect x="198.67741935483872" y="168.88" width="12.70967741935484" height="87.12" opacity=".55" style="fill:var(--rp-quiet)"><title>08-09 A = 9 · Kp 2,7</title></rect><rect x="217.38709677419357" y="207.60000000000002" width="12.70967741935484" height="48.39999999999998" opacity=".55" style="fill:var(--rp-quiet)"><title>08-10 A = 5 · Kp 2,0</title></rect><rect x="236.0967741935484" y="197.92000000000002" width="12.70967741935484" height="58.079999999999984" opacity=".55" style="fill:var(--rp-quiet)"><title>08-11 A = 6 · Kp 3,3</title></rect><rect x="254.80645161290323" y="178.55999999999997" width="12.70967741935484" height="77.44000000000003" opacity=".55" style="fill:var(--rp-quiet)"><title>08-12 A = 8 · Kp 2,7</title></rect><rect x="273.51612903225805" y="178.55999999999997" width="12.70967741935484" height="77.44000000000003" opacity=".55" style="fill:var(--rp-quiet)"><title>08-13 A = 8 · Kp 3,0</title></rect><rect x="292.2258064516129" y="139.84" width="12.70967741935484" height="116.16" opacity=".55" style="fill:var(--rp-quiet)"><title>08-14 A = 12 · Kp 2,7</title></rect><rect x="310.93548387096774" y="197.92000000000002" width="12.70967741935484" height="58.079999999999984" opacity=".55" style="fill:var(--rp-quiet)"><title>08-15 A = 6 · Kp 2,7</title></rect><rect x="348.35483870967744" y="72.08" width="12.70967741935484" height="183.92000000000002" opacity=".55" style="fill:var(--rp-storm)"><title>08-17 A = 19 · Kp 3,7</title></rect><rect x="367.06451612903226" y="62.39999999999999" width="12.70967741935484" height="193.60000000000002" opacity=".55" style="fill:var(--rp-storm)"><title>08-18 A = 20 · Kp 5,3</title></rect><rect x="385.77419354838713" y="110.80000000000001" width="12.70967741935484" height="145.2" opacity=".55" style="fill:var(--rp-storm)"><title>08-19 A = 15 · Kp 5,0</title></rect><rect x="404.48387096774195" y="149.52" width="12.70967741935484" height="106.47999999999999" opacity=".55" style="fill:var(--rp-quiet)"><title>08-20 A = 11 · Kp 3,3</title></rect><rect x="423.1935483870968" y="168.88" width="12.70967741935484" height="87.12" opacity=".55" style="fill:var(--rp-quiet)"><title>08-21 A = 9 · Kp 3,3</title></rect><rect x="441.90322580645164" y="207.60000000000002" width="12.70967741935484" height="48.39999999999998" opacity=".55" style="fill:var(--rp-quiet)"><title>08-22 A = 5 · Kp 1,3</title></rect><rect x="460.61290322580646" y="197.92000000000002" width="12.70967741935484" height="58.079999999999984" opacity=".55" style="fill:var(--rp-quiet)"><title>08-23 A = 6 · Kp 2,0</title></rect><rect x="479.32258064516134" y="178.55999999999997" width="12.70967741935484" height="77.44000000000003" opacity=".55" style="fill:var(--rp-quiet)"><title>08-24 A = 8 · Kp 3,0</title></rect><rect x="498.03225806451616" y="197.92000000000002" width="12.70967741935484" height="58.079999999999984" opacity=".55" style="fill:var(--rp-quiet)"><title>08-25 A = 6 · Kp 1,7</title></rect><rect x="516.741935483871" y="217.28" width="12.70967741935484" height="38.72" opacity=".55" style="fill:var(--rp-quiet)"><title>08-26 A = 4 · Kp 1,0</title></rect><rect x="535.4516129032259" y="217.28" width="12.70967741935484" height="38.72" opacity=".55" style="fill:var(--rp-quiet)"><title>08-27 A = 4 · Kp 1,3</title></rect><rect x="554.1612903225807" y="120.47999999999999" width="12.70967741935484" height="135.52" opacity=".55" style="fill:var(--rp-storm)"><title>08-28 A = 14 · Kp 4,3</title></rect><rect x="572.8709677419355" y="110.80000000000001" width="12.70967741935484" height="145.2" opacity=".55" style="fill:var(--rp-storm)"><title>08-29 A = 15 · Kp 4,3</title></rect><rect x="591.5806451612904" y="130.16" width="12.70967741935484" height="125.84" opacity=".55" style="fill:var(--rp-storm)"><title>08-30 A = 13 · Kp 3,7</title></rect><rect x="610.2903225806452" y="130.16" width="12.70967741935484" height="125.84" opacity=".55" style="fill:var(--rp-storm)"><title>08-31 A = 13 · Kp 3,3</title></rect><polyline points="55.4,183.4 74.1,183.4 92.8,110.8 111.5,183.4 130.2,110.8 148.9,159.2 167.6,159.2 186.3,183.4 205.0,183.4 223.7,159.2 242.5,135.0 261.2,183.4 279.9,171.3 298.6,183.4 317.3,159.2 336.0,135.0 354.7,159.2 373.4,171.3 392.1,159.2 410.8,183.4 429.5,183.4 448.3,135.0 467.0,159.2 485.7,159.2 504.4,62.4 523.1,183.4 541.8,207.6 560.5,183.4 579.2,207.6 597.9,183.4 616.6,159.2" fill="none" stroke-width="2" opacity=".9" style="stroke:var(--rp-gold)"></polyline><circle cx="55.35483870967742" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-01 SNR −11 dB</title></circle><circle cx="74.06451612903227" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-02 SNR −11 dB</title></circle><circle cx="92.7741935483871" cy="110.80000000000001" r="2.6" style="fill:var(--rp-gold)"><title>08-03 SNR −8 dB</title></circle><circle cx="111.48387096774194" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-04 SNR −11 dB</title></circle><circle cx="130.19354838709677" cy="110.80000000000001" r="2.6" style="fill:var(--rp-gold)"><title>08-05 SNR −8 dB</title></circle><circle cx="148.90322580645162" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-06 SNR −10 dB</title></circle><circle cx="167.61290322580643" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-07 SNR −10 dB</title></circle><circle cx="186.32258064516128" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-08 SNR −11 dB</title></circle><circle cx="205.03225806451613" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-09 SNR −11 dB</title></circle><circle cx="223.74193548387098" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-10 SNR −10 dB</title></circle><circle cx="242.45161290322582" cy="135" r="2.6" style="fill:var(--rp-gold)"><title>08-11 SNR −9 dB</title></circle><circle cx="261.16129032258067" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-12 SNR −11 dB</title></circle><circle cx="279.8709677419355" cy="171.3" r="2.6" style="fill:var(--rp-gold)"><title>08-13 SNR −11 dB</title></circle><circle cx="298.58064516129036" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-14 SNR −11 dB</title></circle><circle cx="317.2903225806452" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-15 SNR −10 dB</title></circle><circle cx="336.00000000000006" cy="135" r="2.6" style="fill:var(--rp-gold)"><title>08-16 SNR −9 dB</title></circle><circle cx="354.7096774193549" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-17 SNR −10 dB</title></circle><circle cx="373.4193548387097" cy="171.3" r="2.6" style="fill:var(--rp-gold)"><title>08-18 SNR −11 dB</title></circle><circle cx="392.12903225806457" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-19 SNR −10 dB</title></circle><circle cx="410.8387096774194" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-20 SNR −11 dB</title></circle><circle cx="429.54838709677426" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-21 SNR −11 dB</title></circle><circle cx="448.2580645161291" cy="135" r="2.6" style="fill:var(--rp-gold)"><title>08-22 SNR −9 dB</title></circle><circle cx="466.9677419354839" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-23 SNR −10 dB</title></circle><circle cx="485.6774193548388" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-24 SNR −10 dB</title></circle><circle cx="504.3870967741936" cy="62.39999999999999" r="2.6" style="fill:var(--rp-gold)"><title>08-25 SNR −6 dB</title></circle><circle cx="523.0967741935484" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-26 SNR −11 dB</title></circle><circle cx="541.8064516129033" cy="207.60000000000002" r="2.6" style="fill:var(--rp-gold)"><title>08-27 SNR −12 dB</title></circle><circle cx="560.5161290322582" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-28 SNR −11 dB</title></circle><circle cx="579.2258064516129" cy="207.60000000000002" r="2.6" style="fill:var(--rp-gold)"><title>08-29 SNR −12 dB</title></circle><circle cx="597.9354838709678" cy="183.39999999999998" r="2.6" style="fill:var(--rp-gold)"><title>08-30 SNR −11 dB</title></circle><circle cx="616.6451612903227" cy="159.2" r="2.6" style="fill:var(--rp-gold)"><title>08-31 SNR −10 dB</title></circle><text x="630" y="259" font-size="10" style="fill:var(--rp-axis)">0</text><text x="630" y="162.2" font-size="10" style="fill:var(--rp-axis)">10</text><text x="630" y="65.39999999999999" font-size="10" style="fill:var(--rp-axis)">20</text><text x="55.35483870967742" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 55.4 272)">08-01</text><text x="111.48387096774194" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 111.5 272)">08-04</text><text x="167.61290322580643" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 167.6 272)">08-07</text><text x="223.74193548387098" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 223.7 272)">08-10</text><text x="279.8709677419355" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 279.9 272)">08-13</text><text x="336.00000000000006" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 336.0 272)">08-16</text><text x="392.12903225806457" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 392.1 272)">08-19</text><text x="448.2580645161291" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 448.3 272)">08-22</text><text x="504.3870967741936" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 504.4 272)">08-25</text><text x="560.5161290322582" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 560.5 272)">08-28</text><text x="616.6451612903227" y="272" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 616.6 272)">08-31</text><text x="626" y="294" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">SNR, dB (left) · A (right)</text></svg></figure>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="distance-runs-against-the-sun--and-it-is-not-an-artefact">Distance runs against the Sun — and it is not an artefact<a href="https://cyberdev.space/en/blog/award-35-analysis/#distance-runs-against-the-sun--and-it-is-not-an-artefact" class="hash-link" aria-label="Direct link to Distance runs against the Sun — and it is not an artefact" title="Direct link to Distance runs against the Sun — and it is not an artefact" translate="no">​</a></h3>
<p>The daily median activator-to-hunter distance correlates negatively with the SFI: r&nbsp;=&nbsp;<strong>−0.55</strong>.</p>
<p>A simple and wrong explanation suggests itself: when the SFI is high the upper bands open, and what changes is not the physics but the composition of the log. Checking rules that out. The same correlation computed <strong>within a single band</strong> does not fall apart: on 20 m r&nbsp;=&nbsp;−0.59, on 30 m −0.49, on 17 m −0.40.</p>
<p>So the effect is real within a band as well. A higher flux raises the MUF, a shorter hop opens on the same band, and nearby Europeans come into the log who at a low SFI simply would not have been there. The long paths do not go anywhere — they merely stop being visible behind the near ones.</p>
<figure class="rp rp-chart"><h4>Band × day</h4><p>contacts per band per day; the darkest cell is 401 (20m · 08-09)</p><svg viewBox="0 0 680 360" role="img" aria-label="Band × day"><rect x="46.5" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-01 — 12</title></rect><rect x="46.5" y="36" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>12m · 08-01 — 0</title></rect><rect x="46.5" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.34" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-01 — 140</title></rect><rect x="46.5" y="87" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>17m · 08-01 — 0</title></rect><rect x="46.5" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-01 — 50</title></rect><rect x="46.5" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-01 — 1</title></rect><rect x="46.5" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-01 — 35</title></rect><rect x="46.5" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-01 — 28</title></rect><rect x="46.5" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-01 — 0</title></rect><rect x="46.5" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-01 — 0</title></rect><rect x="46.5" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>2m · 08-01 — 0</title></rect><rect x="46.5" y="291" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>70cm · 08-01 — 0</title></rect><rect x="66.56451612903226" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-02 — 10</title></rect><rect x="66.56451612903226" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-02 — 2</title></rect><rect x="66.56451612903226" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-02 — 36</title></rect><rect x="66.56451612903226" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-02 — 6</title></rect><rect x="66.56451612903226" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.25" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-02 — 93</title></rect><rect x="66.56451612903226" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-02 — 21</title></rect><rect x="66.56451612903226" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-02 — 13</title></rect><rect x="66.56451612903226" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-02 — 39</title></rect><rect x="66.56451612903226" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-02 — 0</title></rect><rect x="66.56451612903226" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-02 — 0</title></rect><rect x="66.56451612903226" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-02 — 3</title></rect><rect x="66.56451612903226" y="291" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>70cm · 08-02 — 0</title></rect><rect x="86.62903225806451" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-03 — 9</title></rect><rect x="86.62903225806451" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-03 — 15</title></rect><rect x="86.62903225806451" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-03 — 68</title></rect><rect x="86.62903225806451" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-03 — 43</title></rect><rect x="86.62903225806451" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.33" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-03 — 132</title></rect><rect x="86.62903225806451" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-03 — 41</title></rect><rect x="86.62903225806451" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.23" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-03 — 82</title></rect><rect x="86.62903225806451" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-03 — 30</title></rect><rect x="86.62903225806451" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-03 — 0</title></rect><rect x="86.62903225806451" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-03 — 0</title></rect><rect x="86.62903225806451" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>2m · 08-03 — 0</title></rect><rect x="86.62903225806451" y="291" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>70cm · 08-03 — 0</title></rect><rect x="106.69354838709678" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-04 — 10</title></rect><rect x="106.69354838709678" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-04 — 15</title></rect><rect x="106.69354838709678" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-04 — 33</title></rect><rect x="106.69354838709678" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-04 — 27</title></rect><rect x="106.69354838709678" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.35" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-04 — 146</title></rect><rect x="106.69354838709678" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-04 — 19</title></rect><rect x="106.69354838709678" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.24" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-04 — 86</title></rect><rect x="106.69354838709678" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-04 — 23</title></rect><rect x="106.69354838709678" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-04 — 0</title></rect><rect x="106.69354838709678" y="240" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>6m · 08-04 — 5</title></rect><rect x="106.69354838709678" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>2m · 08-04 — 0</title></rect><rect x="106.69354838709678" y="291" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>70cm · 08-04 — 0</title></rect><rect x="126.75806451612904" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-05 — 3</title></rect><rect x="126.75806451612904" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-05 — 1</title></rect><rect x="126.75806451612904" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-05 — 26</title></rect><rect x="126.75806451612904" y="87" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>17m · 08-05 — 0</title></rect><rect x="126.75806451612904" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.50" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-05 — 220</title></rect><rect x="126.75806451612904" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-05 — 22</title></rect><rect x="126.75806451612904" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.26" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-05 — 98</title></rect><rect x="126.75806451612904" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-05 — 23</title></rect><rect x="126.75806451612904" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-05 — 0</title></rect><rect x="126.75806451612904" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-05 — 0</title></rect><rect x="126.75806451612904" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>2m · 08-05 — 0</title></rect><rect x="126.75806451612904" y="291" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>70cm · 08-05 — 0</title></rect><rect x="146.82258064516128" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-06 — 16</title></rect><rect x="146.82258064516128" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-06 — 7</title></rect><rect x="146.82258064516128" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-06 — 49</title></rect><rect x="146.82258064516128" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.23" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-06 — 80</title></rect><rect x="146.82258064516128" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.39" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-06 — 164</title></rect><rect x="146.82258064516128" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-06 — 23</title></rect><rect x="146.82258064516128" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-06 — 52</title></rect><rect x="146.82258064516128" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-06 — 4</title></rect><rect x="146.82258064516128" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-06 — 0</title></rect><rect x="146.82258064516128" y="240" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>6m · 08-06 — 13</title></rect><rect x="146.82258064516128" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>2m · 08-06 — 0</title></rect><rect x="146.82258064516128" y="291" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>70cm · 08-06 — 0</title></rect><rect x="166.88709677419357" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-07 — 43</title></rect><rect x="166.88709677419357" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-07 — 1</title></rect><rect x="166.88709677419357" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.31" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-07 — 125</title></rect><rect x="166.88709677419357" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-07 — 35</title></rect><rect x="166.88709677419357" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.31" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-07 — 124</title></rect><rect x="166.88709677419357" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.32" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-07 — 128</title></rect><rect x="166.88709677419357" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.23" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-07 — 84</title></rect><rect x="166.88709677419357" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-07 — 32</title></rect><rect x="166.88709677419357" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>160m · 08-07 — 1</title></rect><rect x="166.88709677419357" y="240" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>6m · 08-07 — 36</title></rect><rect x="166.88709677419357" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-07 — 2</title></rect><rect x="166.88709677419357" y="291" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>70cm · 08-07 — 0</title></rect><rect x="186.95161290322582" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-08 — 3</title></rect><rect x="186.95161290322582" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-08 — 8</title></rect><rect x="186.95161290322582" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.45" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-08 — 195</title></rect><rect x="186.95161290322582" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-08 — 31</title></rect><rect x="186.95161290322582" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.42" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-08 — 181</title></rect><rect x="186.95161290322582" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.21" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-08 — 72</title></rect><rect x="186.95161290322582" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-08 — 49</title></rect><rect x="186.95161290322582" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-08 — 65</title></rect><rect x="186.95161290322582" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-08 — 0</title></rect><rect x="186.95161290322582" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-08 — 0</title></rect><rect x="186.95161290322582" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-08 — 3</title></rect><rect x="186.95161290322582" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-08 — 2</title></rect><rect x="207.01612903225808" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-09 — 31</title></rect><rect x="207.01612903225808" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-09 — 1</title></rect><rect x="207.01612903225808" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.26" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-09 — 96</title></rect><rect x="207.01612903225808" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-09 — 25</title></rect><rect x="207.01612903225808" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.85" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-09 — 401</title></rect><rect x="207.01612903225808" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-09 — 19</title></rect><rect x="207.01612903225808" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.31" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-09 — 125</title></rect><rect x="207.01612903225808" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-09 — 18</title></rect><rect x="207.01612903225808" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-09 — 0</title></rect><rect x="207.01612903225808" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-09 — 0</title></rect><rect x="207.01612903225808" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-09 — 15</title></rect><rect x="207.01612903225808" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-09 — 5</title></rect><rect x="227.08064516129033" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-10 — 59</title></rect><rect x="227.08064516129033" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-10 — 27</title></rect><rect x="227.08064516129033" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-10 — 58</title></rect><rect x="227.08064516129033" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-10 — 13</title></rect><rect x="227.08064516129033" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.53" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-10 — 237</title></rect><rect x="227.08064516129033" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-10 — 27</title></rect><rect x="227.08064516129033" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-10 — 68</title></rect><rect x="227.08064516129033" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-10 — 21</title></rect><rect x="227.08064516129033" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-10 — 0</title></rect><rect x="227.08064516129033" y="240" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>6m · 08-10 — 5</title></rect><rect x="227.08064516129033" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-10 — 12</title></rect><rect x="227.08064516129033" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-10 — 6</title></rect><rect x="247.1451612903226" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-11 — 32</title></rect><rect x="247.1451612903226" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-11 — 25</title></rect><rect x="247.1451612903226" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.23" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-11 — 80</title></rect><rect x="247.1451612903226" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-11 — 7</title></rect><rect x="247.1451612903226" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.55" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-11 — 249</title></rect><rect x="247.1451612903226" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-11 — 58</title></rect><rect x="247.1451612903226" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-11 — 39</title></rect><rect x="247.1451612903226" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-11 — 15</title></rect><rect x="247.1451612903226" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-11 — 0</title></rect><rect x="247.1451612903226" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-11 — 0</title></rect><rect x="247.1451612903226" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-11 — 5</title></rect><rect x="247.1451612903226" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-11 — 2</title></rect><rect x="267.2096774193549" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-12 — 25</title></rect><rect x="267.2096774193549" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-12 — 10</title></rect><rect x="267.2096774193549" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-12 — 69</title></rect><rect x="267.2096774193549" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-12 — 28</title></rect><rect x="267.2096774193549" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.29" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-12 — 113</title></rect><rect x="267.2096774193549" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.19" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-12 — 63</title></rect><rect x="267.2096774193549" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-12 — 53</title></rect><rect x="267.2096774193549" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-12 — 30</title></rect><rect x="267.2096774193549" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-12 — 0</title></rect><rect x="267.2096774193549" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-12 — 0</title></rect><rect x="267.2096774193549" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-12 — 3</title></rect><rect x="267.2096774193549" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-12 — 2</title></rect><rect x="287.27419354838713" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-13 — 31</title></rect><rect x="287.27419354838713" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-13 — 19</title></rect><rect x="287.27419354838713" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.23" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-13 — 84</title></rect><rect x="287.27419354838713" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-13 — 12</title></rect><rect x="287.27419354838713" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.71" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-13 — 331</title></rect><rect x="287.27419354838713" y="138" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>30m · 08-13 — 0</title></rect><rect x="287.27419354838713" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-13 — 29</title></rect><rect x="287.27419354838713" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-13 — 54</title></rect><rect x="287.27419354838713" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-13 — 0</title></rect><rect x="287.27419354838713" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-13 — 0</title></rect><rect x="287.27419354838713" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-13 — 4</title></rect><rect x="287.27419354838713" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-13 — 3</title></rect><rect x="307.3387096774194" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-14 — 13</title></rect><rect x="307.3387096774194" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-14 — 18</title></rect><rect x="307.3387096774194" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-14 — 56</title></rect><rect x="307.3387096774194" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-14 — 33</title></rect><rect x="307.3387096774194" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.70" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-14 — 322</title></rect><rect x="307.3387096774194" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.32" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-14 — 128</title></rect><rect x="307.3387096774194" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-14 — 15</title></rect><rect x="307.3387096774194" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.16" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-14 — 47</title></rect><rect x="307.3387096774194" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-14 — 0</title></rect><rect x="307.3387096774194" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-14 — 0</title></rect><rect x="307.3387096774194" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-14 — 8</title></rect><rect x="307.3387096774194" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-14 — 3</title></rect><rect x="327.40322580645164" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-15 — 16</title></rect><rect x="327.40322580645164" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-15 — 13</title></rect><rect x="327.40322580645164" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-15 — 31</title></rect><rect x="327.40322580645164" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.35" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-15 — 145</title></rect><rect x="327.40322580645164" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.24" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-15 — 86</title></rect><rect x="327.40322580645164" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.23" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-15 — 83</title></rect><rect x="327.40322580645164" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-15 — 35</title></rect><rect x="327.40322580645164" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-15 — 52</title></rect><rect x="327.40322580645164" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-15 — 0</title></rect><rect x="327.40322580645164" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-15 — 0</title></rect><rect x="327.40322580645164" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-15 — 12</title></rect><rect x="327.40322580645164" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-15 — 8</title></rect><rect x="347.4677419354839" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-16 — 21</title></rect><rect x="347.4677419354839" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-16 — 20</title></rect><rect x="347.4677419354839" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.21" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-16 — 72</title></rect><rect x="347.4677419354839" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.52" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-16 — 229</title></rect><rect x="347.4677419354839" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.33" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-16 — 134</title></rect><rect x="347.4677419354839" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.34" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-16 — 140</title></rect><rect x="347.4677419354839" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.26" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-16 — 99</title></rect><rect x="347.4677419354839" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-16 — 25</title></rect><rect x="347.4677419354839" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-16 — 0</title></rect><rect x="347.4677419354839" y="240" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>6m · 08-16 — 17</title></rect><rect x="347.4677419354839" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-16 — 9</title></rect><rect x="347.4677419354839" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-16 — 4</title></rect><rect x="367.53225806451616" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-17 — 12</title></rect><rect x="367.53225806451616" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-17 — 55</title></rect><rect x="367.53225806451616" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.28" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-17 — 107</title></rect><rect x="367.53225806451616" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.37" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-17 — 153</title></rect><rect x="367.53225806451616" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.26" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-17 — 99</title></rect><rect x="367.53225806451616" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.21" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-17 — 71</title></rect><rect x="367.53225806451616" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-17 — 22</title></rect><rect x="367.53225806451616" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-17 — 40</title></rect><rect x="367.53225806451616" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-17 — 0</title></rect><rect x="367.53225806451616" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-17 — 0</title></rect><rect x="367.53225806451616" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-17 — 4</title></rect><rect x="367.53225806451616" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-17 — 4</title></rect><rect x="387.5967741935484" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-18 — 16</title></rect><rect x="387.5967741935484" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-18 — 19</title></rect><rect x="387.5967741935484" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-18 — 13</title></rect><rect x="387.5967741935484" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.38" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-18 — 157</title></rect><rect x="387.5967741935484" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.32" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-18 — 127</title></rect><rect x="387.5967741935484" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.25" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-18 — 95</title></rect><rect x="387.5967741935484" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.16" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-18 — 46</title></rect><rect x="387.5967741935484" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-18 — 33</title></rect><rect x="387.5967741935484" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-18 — 0</title></rect><rect x="387.5967741935484" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-18 — 0</title></rect><rect x="387.5967741935484" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-18 — 6</title></rect><rect x="387.5967741935484" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-18 — 2</title></rect><rect x="407.66129032258067" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-19 — 26</title></rect><rect x="407.66129032258067" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-19 — 15</title></rect><rect x="407.66129032258067" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-19 — 66</title></rect><rect x="407.66129032258067" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.27" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-19 — 103</title></rect><rect x="407.66129032258067" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.27" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-19 — 105</title></rect><rect x="407.66129032258067" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.31" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-19 — 121</title></rect><rect x="407.66129032258067" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-19 — 25</title></rect><rect x="407.66129032258067" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.16" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-19 — 44</title></rect><rect x="407.66129032258067" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-19 — 0</title></rect><rect x="407.66129032258067" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-19 — 0</title></rect><rect x="407.66129032258067" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-19 — 5</title></rect><rect x="407.66129032258067" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-19 — 4</title></rect><rect x="427.7258064516129" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-20 — 13</title></rect><rect x="427.7258064516129" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-20 — 32</title></rect><rect x="427.7258064516129" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.36" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-20 — 149</title></rect><rect x="427.7258064516129" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-20 — 42</title></rect><rect x="427.7258064516129" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.33" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-20 — 133</title></rect><rect x="427.7258064516129" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.21" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-20 — 72</title></rect><rect x="427.7258064516129" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-20 — 66</title></rect><rect x="427.7258064516129" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-20 — 23</title></rect><rect x="427.7258064516129" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-20 — 0</title></rect><rect x="427.7258064516129" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-20 — 0</title></rect><rect x="427.7258064516129" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-20 — 3</title></rect><rect x="427.7258064516129" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-20 — 3</title></rect><rect x="447.7903225806452" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-21 — 26</title></rect><rect x="447.7903225806452" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-21 — 30</title></rect><rect x="447.7903225806452" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.36" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-21 — 147</title></rect><rect x="447.7903225806452" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-21 — 42</title></rect><rect x="447.7903225806452" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.55" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-21 — 246</title></rect><rect x="447.7903225806452" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-21 — 49</title></rect><rect x="447.7903225806452" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.21" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-21 — 70</title></rect><rect x="447.7903225806452" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-21 — 38</title></rect><rect x="447.7903225806452" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-21 — 0</title></rect><rect x="447.7903225806452" y="240" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>6m · 08-21 — 5</title></rect><rect x="447.7903225806452" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-21 — 3</title></rect><rect x="447.7903225806452" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-21 — 2</title></rect><rect x="467.85483870967744" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-22 — 56</title></rect><rect x="467.85483870967744" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-22 — 4</title></rect><rect x="467.85483870967744" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.45" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-22 — 194</title></rect><rect x="467.85483870967744" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.33" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-22 — 135</title></rect><rect x="467.85483870967744" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.74" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-22 — 346</title></rect><rect x="467.85483870967744" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-22 — 34</title></rect><rect x="467.85483870967744" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.22" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-22 — 79</title></rect><rect x="467.85483870967744" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.19" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-22 — 62</title></rect><rect x="467.85483870967744" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-22 — 0</title></rect><rect x="467.85483870967744" y="240" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>6m · 08-22 — 1</title></rect><rect x="467.85483870967744" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-22 — 23</title></rect><rect x="467.85483870967744" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-22 — 7</title></rect><rect x="487.9193548387097" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-23 — 49</title></rect><rect x="487.9193548387097" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-23 — 20</title></rect><rect x="487.9193548387097" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.45" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-23 — 197</title></rect><rect x="487.9193548387097" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.21" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-23 — 70</title></rect><rect x="487.9193548387097" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.72" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-23 — 336</title></rect><rect x="487.9193548387097" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.30" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-23 — 116</title></rect><rect x="487.9193548387097" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.30" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-23 — 119</title></rect><rect x="487.9193548387097" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-23 — 52</title></rect><rect x="487.9193548387097" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-23 — 0</title></rect><rect x="487.9193548387097" y="240" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>6m · 08-23 — 8</title></rect><rect x="487.9193548387097" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-23 — 16</title></rect><rect x="487.9193548387097" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-23 — 11</title></rect><rect x="507.98387096774195" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-24 — 2</title></rect><rect x="507.98387096774195" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-24 — 4</title></rect><rect x="507.98387096774195" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.33" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-24 — 136</title></rect><rect x="507.98387096774195" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.22" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-24 — 75</title></rect><rect x="507.98387096774195" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.58" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-24 — 260</title></rect><rect x="507.98387096774195" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.23" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-24 — 83</title></rect><rect x="507.98387096774195" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.39" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-24 — 164</title></rect><rect x="507.98387096774195" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.24" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-24 — 85</title></rect><rect x="507.98387096774195" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-24 — 0</title></rect><rect x="507.98387096774195" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-24 — 0</title></rect><rect x="507.98387096774195" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-24 — 14</title></rect><rect x="507.98387096774195" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-24 — 8</title></rect><rect x="528.0483870967743" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.26" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-25 — 99</title></rect><rect x="528.0483870967743" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-25 — 67</title></rect><rect x="528.0483870967743" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.25" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-25 — 93</title></rect><rect x="528.0483870967743" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.38" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-25 — 157</title></rect><rect x="528.0483870967743" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.29" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-25 — 111</title></rect><rect x="528.0483870967743" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-25 — 49</title></rect><rect x="528.0483870967743" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.30" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-25 — 118</title></rect><rect x="528.0483870967743" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-25 — 37</title></rect><rect x="528.0483870967743" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-25 — 0</title></rect><rect x="528.0483870967743" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-25 — 0</title></rect><rect x="528.0483870967743" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-25 — 11</title></rect><rect x="528.0483870967743" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-25 — 5</title></rect><rect x="548.1129032258066" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-26 — 7</title></rect><rect x="548.1129032258066" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-26 — 28</title></rect><rect x="548.1129032258066" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.56" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-26 — 250</title></rect><rect x="548.1129032258066" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-26 — 39</title></rect><rect x="548.1129032258066" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.28" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-26 — 106</title></rect><rect x="548.1129032258066" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-26 — 53</title></rect><rect x="548.1129032258066" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-26 — 31</title></rect><rect x="548.1129032258066" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-26 — 26</title></rect><rect x="548.1129032258066" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-26 — 0</title></rect><rect x="548.1129032258066" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-26 — 0</title></rect><rect x="548.1129032258066" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-26 — 20</title></rect><rect x="548.1129032258066" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-26 — 12</title></rect><rect x="568.1774193548388" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-27 — 7</title></rect><rect x="568.1774193548388" y="36" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>12m · 08-27 — 0</title></rect><rect x="568.1774193548388" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-27 — 56</title></rect><rect x="568.1774193548388" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.32" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-27 — 126</title></rect><rect x="568.1774193548388" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.16" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-27 — 44</title></rect><rect x="568.1774193548388" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-27 — 31</title></rect><rect x="568.1774193548388" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.18" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-27 — 55</title></rect><rect x="568.1774193548388" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.13" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-27 — 31</title></rect><rect x="568.1774193548388" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-27 — 0</title></rect><rect x="568.1774193548388" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-27 — 0</title></rect><rect x="568.1774193548388" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-27 — 8</title></rect><rect x="568.1774193548388" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-27 — 1</title></rect><rect x="588.241935483871" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-28 — 3</title></rect><rect x="588.241935483871" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-28 — 12</title></rect><rect x="588.241935483871" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-28 — 50</title></rect><rect x="588.241935483871" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-28 — 11</title></rect><rect x="588.241935483871" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.32" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-28 — 128</title></rect><rect x="588.241935483871" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.12" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-28 — 27</title></rect><rect x="588.241935483871" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.10" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-28 — 15</title></rect><rect x="588.241935483871" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-28 — 36</title></rect><rect x="588.241935483871" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-28 — 0</title></rect><rect x="588.241935483871" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-28 — 0</title></rect><rect x="588.241935483871" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-28 — 7</title></rect><rect x="588.241935483871" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-28 — 5</title></rect><rect x="608.3064516129033" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>10m · 08-29 — 0</title></rect><rect x="608.3064516129033" y="36" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>12m · 08-29 — 0</title></rect><rect x="608.3064516129033" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-29 — 19</title></rect><rect x="608.3064516129033" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.28" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-29 — 106</title></rect><rect x="608.3064516129033" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.51" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-29 — 224</title></rect><rect x="608.3064516129033" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.15" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-29 — 43</title></rect><rect x="608.3064516129033" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.21" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-29 — 72</title></rect><rect x="608.3064516129033" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-29 — 35</title></rect><rect x="608.3064516129033" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-29 — 0</title></rect><rect x="608.3064516129033" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-29 — 0</title></rect><rect x="608.3064516129033" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-29 — 4</title></rect><rect x="608.3064516129033" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.07" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-29 — 2</title></rect><rect x="628.3709677419355" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>10m · 08-30 — 0</title></rect><rect x="628.3709677419355" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-30 — 6</title></rect><rect x="628.3709677419355" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-30 — 34</title></rect><rect x="628.3709677419355" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.41" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-30 — 176</title></rect><rect x="628.3709677419355" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.54" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-30 — 241</title></rect><rect x="628.3709677419355" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.16" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-30 — 45</title></rect><rect x="628.3709677419355" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-30 — 65</title></rect><rect x="628.3709677419355" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.14" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-30 — 34</title></rect><rect x="628.3709677419355" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-30 — 0</title></rect><rect x="628.3709677419355" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-30 — 0</title></rect><rect x="628.3709677419355" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-30 — 12</title></rect><rect x="628.3709677419355" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-30 — 3</title></rect><rect x="648.4354838709678" y="10.5" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>10m · 08-31 — 19</title></rect><rect x="648.4354838709678" y="36" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>12m · 08-31 — 18</title></rect><rect x="648.4354838709678" y="61.5" width="19.06451612903226" height="24.5" fill-opacity="0.21" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>15m · 08-31 — 72</title></rect><rect x="648.4354838709678" y="87" width="19.06451612903226" height="24.5" fill-opacity="0.36" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>17m · 08-31 — 151</title></rect><rect x="648.4354838709678" y="112.5" width="19.06451612903226" height="24.5" fill-opacity="0.31" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>20m · 08-31 — 125</title></rect><rect x="648.4354838709678" y="138" width="19.06451612903226" height="24.5" fill-opacity="0.20" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>30m · 08-31 — 68</title></rect><rect x="648.4354838709678" y="163.5" width="19.06451612903226" height="24.5" fill-opacity="0.17" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>40m · 08-31 — 52</title></rect><rect x="648.4354838709678" y="189" width="19.06451612903226" height="24.5" fill-opacity="0.11" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>80m · 08-31 — 23</title></rect><rect x="648.4354838709678" y="214.5" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>160m · 08-31 — 0</title></rect><rect x="648.4354838709678" y="240" width="19.06451612903226" height="24.5" fill-opacity="0" stroke-width=".5" style="fill:none;stroke:var(--rp-grid)"><title>6m · 08-31 — 0</title></rect><rect x="648.4354838709678" y="265.5" width="19.06451612903226" height="24.5" fill-opacity="0.09" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>2m · 08-31 — 11</title></rect><rect x="648.4354838709678" y="291" width="19.06451612903226" height="24.5" fill-opacity="0.08" stroke-width=".5" style="fill:var(--rp-bar);stroke:var(--rp-grid)"><title>70cm · 08-31 — 6</title></rect><text x="40" y="25.75" text-anchor="end" font-size="10" style="fill:var(--rp-ink)">10m</text><text x="40" y="51.25" text-anchor="end" font-size="10" style="fill:var(--rp-ink)">12m</text><text x="40" y="76.75" text-anchor="end" font-size="10" style="fill:var(--rp-ink)">15m</text><text x="40" y="102.25" text-anchor="end" font-size="10" style="fill:var(--rp-ink)">17m</text><text x="40" y="127.75" text-anchor="end" font-size="10" style="fill:var(--rp-ink)">20m</text><text x="40" y="153.25" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">30m</text><text x="40" y="178.75" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">40m</text><text x="40" y="204.25" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">80m</text><text x="40" y="229.75" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">160m</text><text x="40" y="255.25" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">6m</text><text x="40" y="280.75" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">2m</text><text x="40" y="306.25" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">70cm</text><text x="56.03225806451613" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 56.0 332)">08-01</text><text x="116.22580645161291" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 116.2 332)">08-04</text><text x="176.4193548387097" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 176.4 332)">08-07</text><text x="236.61290322580646" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 236.6 332)">08-10</text><text x="296.8064516129033" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 296.8 332)">08-13</text><text x="357.00000000000006" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 357.0 332)">08-16</text><text x="417.1935483870968" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 417.2 332)">08-19</text><text x="477.3870967741936" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 477.4 332)">08-22</text><text x="537.5806451612904" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 537.6 332)">08-25</text><text x="597.7741935483871" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 597.8 332)">08-28</text><text x="657.9677419354839" y="332" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)" transform="rotate(-35 658.0 332)">08-31</text></svg></figure>
<div class="rp"><div class="rp-tablewrap"><table><thead><tr><th>Date</th><th class="rp-num">Contacts</th><th class="rp-num">Hunters</th><th class="rp-num">Locators</th><th class="rp-num">Median SNR, dB</th><th class="rp-num">Strong ≥ −7 dB</th><th class="rp-num">Median distance, km</th><th class="rp-num">SFI</th><th class="rp-num">SSN</th><th class="rp-num">A</th><th class="rp-num">Kp max</th></tr></thead><tbody><tr class="rp-wknd"><td><b>01<!-- -->.<!-- -->08</b><span class="rp-wd">Sat</span></td><td class="rp-num">266</td><td class="rp-num">230</td><td class="rp-num">149</td><td class="rp-num">−11</td><td class="rp-num">35,2 %</td><td class="rp-num">1&nbsp;315</td><td class="rp-num">140</td><td class="rp-num">102</td><td class="rp-num">5</td><td class="rp-num">1,3</td></tr><tr class="rp-wknd"><td><b>02<!-- -->.<!-- -->08</b><span class="rp-wd">Sun</span></td><td class="rp-num">223</td><td class="rp-num">198</td><td class="rp-num">132</td><td class="rp-num">−11</td><td class="rp-num">38,7 %</td><td class="rp-num">1&nbsp;506</td><td class="rp-num">127</td><td class="rp-num">105</td><td class="rp-num">15</td><td class="rp-num">5,7</td></tr><tr><td><b>03<!-- -->.<!-- -->08</b><span class="rp-wd">Mon</span></td><td class="rp-num">420</td><td class="rp-num">334</td><td class="rp-num">183</td><td class="rp-num">−8</td><td class="rp-num">47,1 %</td><td class="rp-num">1&nbsp;343</td><td class="rp-num">126</td><td class="rp-num">104</td><td class="rp-num">17</td><td class="rp-num">4,3</td></tr><tr><td><b>04<!-- -->.<!-- -->08</b><span class="rp-wd">Tue</span></td><td class="rp-num">364</td><td class="rp-num">308</td><td class="rp-num">168</td><td class="rp-num">−11</td><td class="rp-num">29,0 %</td><td class="rp-num">1&nbsp;390</td><td class="rp-num">118</td><td class="rp-num">100</td><td class="rp-num">11</td><td class="rp-num">4,0</td></tr><tr><td><b>05<!-- -->.<!-- -->08</b><span class="rp-wd">Wed</span></td><td class="rp-num">393</td><td class="rp-num">329</td><td class="rp-num">184</td><td class="rp-num">−8</td><td class="rp-num">47,0 %</td><td class="rp-num">1&nbsp;612</td><td class="rp-num">108</td><td class="rp-num">86</td><td class="rp-num">3</td><td class="rp-num">1,3</td></tr><tr><td><b>06<!-- -->.<!-- -->08</b><span class="rp-wd">Thu</span></td><td class="rp-num">408</td><td class="rp-num">344</td><td class="rp-num">206</td><td class="rp-num">−10</td><td class="rp-num">37,9 %</td><td class="rp-num">1&nbsp;860</td><td class="rp-num">101</td><td class="rp-num">71</td><td class="rp-num">5</td><td class="rp-num">1,3</td></tr><tr><td><b>07<!-- -->.<!-- -->08</b><span class="rp-wd">Fri</span></td><td class="rp-num">611</td><td class="rp-num">479</td><td class="rp-num">241</td><td class="rp-num">−10</td><td class="rp-num">43,6 %</td><td class="rp-num">1&nbsp;660</td><td class="rp-num">97</td><td class="rp-num">72</td><td class="rp-num">5</td><td class="rp-num">1,7</td></tr><tr class="rp-wknd"><td><b>08<!-- -->.<!-- -->08</b><span class="rp-wd">Sat</span></td><td class="rp-num">609</td><td class="rp-num">509</td><td class="rp-num">273</td><td class="rp-num">−11</td><td class="rp-num">35,0 %</td><td class="rp-num">1&nbsp;928</td><td class="rp-num">94</td><td class="rp-num">62</td><td class="rp-num">13</td><td class="rp-num">5,7</td></tr><tr class="rp-wknd"><td><b>09<!-- -->.<!-- -->08</b><span class="rp-wd">Sun</span></td><td class="rp-num">736</td><td class="rp-num">623</td><td class="rp-num">264</td><td class="rp-num">−11</td><td class="rp-num">30,1 %</td><td class="rp-num">1&nbsp;668</td><td class="rp-num">94</td><td class="rp-num">41</td><td class="rp-num">9</td><td class="rp-num">2,7</td></tr><tr><td><b>10<!-- -->.<!-- -->08</b><span class="rp-wd">Mon</span></td><td class="rp-num">533</td><td class="rp-num">416</td><td class="rp-num">223</td><td class="rp-num">−10</td><td class="rp-num">36,8 %</td><td class="rp-num">1&nbsp;582</td><td class="rp-num">95</td><td class="rp-num">55</td><td class="rp-num">5</td><td class="rp-num">2,0</td></tr><tr><td><b>11<!-- -->.<!-- -->08</b><span class="rp-wd">Tue</span></td><td class="rp-num">512</td><td class="rp-num">410</td><td class="rp-num">246</td><td class="rp-num">−9</td><td class="rp-num">42,7 %</td><td class="rp-num">1&nbsp;958</td><td class="rp-num">96</td><td class="rp-num">62</td><td class="rp-num">6</td><td class="rp-num">3,3</td></tr><tr><td><b>12<!-- -->.<!-- -->08</b><span class="rp-wd">Wed</span></td><td class="rp-num">396</td><td class="rp-num">286</td><td class="rp-num">176</td><td class="rp-num">−11</td><td class="rp-num">31,6 %</td><td class="rp-num">1&nbsp;739</td><td class="rp-num">100</td><td class="rp-num">82</td><td class="rp-num">8</td><td class="rp-num">2,7</td></tr><tr><td><b>13<!-- -->.<!-- -->08</b><span class="rp-wd">Thu</span></td><td class="rp-num">567</td><td class="rp-num">473</td><td class="rp-num">252</td><td class="rp-num">−11</td><td class="rp-num">38,5 %</td><td class="rp-num">1&nbsp;919</td><td class="rp-num">108</td><td class="rp-num">101</td><td class="rp-num">8</td><td class="rp-num">3,0</td></tr><tr><td><b>14<!-- -->.<!-- -->08</b><span class="rp-wd">Fri</span></td><td class="rp-num">643</td><td class="rp-num">492</td><td class="rp-num">237</td><td class="rp-num">−11</td><td class="rp-num">37,1 %</td><td class="rp-num">1&nbsp;796</td><td class="rp-num">114</td><td class="rp-num">106</td><td class="rp-num">12</td><td class="rp-num">2,7</td></tr><tr class="rp-wknd"><td><b>15<!-- -->.<!-- -->08</b><span class="rp-wd">Sat</span></td><td class="rp-num">481</td><td class="rp-num">357</td><td class="rp-num">202</td><td class="rp-num">−10</td><td class="rp-num">36,3 %</td><td class="rp-num">1&nbsp;954</td><td class="rp-num">117</td><td class="rp-num">111</td><td class="rp-num">6</td><td class="rp-num">2,7</td></tr><tr class="rp-wknd"><td><b>16<!-- -->.<!-- -->08</b><span class="rp-wd">Sun</span></td><td class="rp-num">770</td><td class="rp-num">557</td><td class="rp-num">256</td><td class="rp-num">−9</td><td class="rp-num">44,8 %</td><td class="rp-num">1&nbsp;312</td><td class="rp-num">129</td><td class="rp-num">83</td><td class="rp-num">—</td><td class="rp-num">2,0</td></tr><tr><td><b>17<!-- -->.<!-- -->08</b><span class="rp-wd">Mon</span></td><td class="rp-num">567</td><td class="rp-num">389</td><td class="rp-num">218</td><td class="rp-num">−10</td><td class="rp-num">36,4 %</td><td class="rp-num">1&nbsp;674</td><td class="rp-num">124</td><td class="rp-num">76</td><td class="rp-num">19</td><td class="rp-num">3,7</td></tr><tr><td><b>18<!-- -->.<!-- -->08</b><span class="rp-wd">Tue</span></td><td class="rp-num">514</td><td class="rp-num">400</td><td class="rp-num">207</td><td class="rp-num">−11</td><td class="rp-num">34,6 %</td><td class="rp-num">1&nbsp;721</td><td class="rp-num">125</td><td class="rp-num">71</td><td class="rp-num">20</td><td class="rp-num">5,3</td></tr><tr><td><b>19<!-- -->.<!-- -->08</b><span class="rp-wd">Wed</span></td><td class="rp-num">514</td><td class="rp-num">387</td><td class="rp-num">216</td><td class="rp-num">−10</td><td class="rp-num">37,0 %</td><td class="rp-num">1&nbsp;775</td><td class="rp-num">126</td><td class="rp-num">78</td><td class="rp-num">15</td><td class="rp-num">5,0</td></tr><tr><td><b>20<!-- -->.<!-- -->08</b><span class="rp-wd">Thu</span></td><td class="rp-num">536</td><td class="rp-num">392</td><td class="rp-num">224</td><td class="rp-num">−11</td><td class="rp-num">34,8 %</td><td class="rp-num">1&nbsp;780</td><td class="rp-num">125</td><td class="rp-num">72</td><td class="rp-num">11</td><td class="rp-num">3,3</td></tr><tr><td><b>21<!-- -->.<!-- -->08</b><span class="rp-wd">Fri</span></td><td class="rp-num">658</td><td class="rp-num">496</td><td class="rp-num">258</td><td class="rp-num">−11</td><td class="rp-num">31,6 %</td><td class="rp-num">1&nbsp;796</td><td class="rp-num">126</td><td class="rp-num">59</td><td class="rp-num">9</td><td class="rp-num">3,3</td></tr><tr class="rp-wknd"><td><b>22<!-- -->.<!-- -->08</b><span class="rp-wd">Sat</span></td><td class="rp-num">941</td><td class="rp-num">749</td><td class="rp-num">300</td><td class="rp-num">−9</td><td class="rp-num">40,9 %</td><td class="rp-num">1&nbsp;527</td><td class="rp-num">124</td><td class="rp-num">87</td><td class="rp-num">5</td><td class="rp-num">1,3</td></tr><tr class="rp-wknd"><td><b>23<!-- -->.<!-- -->08</b><span class="rp-wd">Sun</span></td><td class="rp-num">994</td><td class="rp-num">737</td><td class="rp-num">291</td><td class="rp-num">−10</td><td class="rp-num">42,0 %</td><td class="rp-num">1&nbsp;312</td><td class="rp-num">128</td><td class="rp-num">73</td><td class="rp-num">6</td><td class="rp-num">2,0</td></tr><tr><td><b>24<!-- -->.<!-- -->08</b><span class="rp-wd">Mon</span></td><td class="rp-num">831</td><td class="rp-num">652</td><td class="rp-num">329</td><td class="rp-num">−10</td><td class="rp-num">38,3 %</td><td class="rp-num">1&nbsp;293</td><td class="rp-num">143</td><td class="rp-num">84</td><td class="rp-num">8</td><td class="rp-num">3,0</td></tr><tr><td><b>25<!-- -->.<!-- -->08</b><span class="rp-wd">Tue</span></td><td class="rp-num">747</td><td class="rp-num">629</td><td class="rp-num">268</td><td class="rp-num">−6</td><td class="rp-num">55,7 %</td><td class="rp-num">1&nbsp;774</td><td class="rp-num">132</td><td class="rp-num">83</td><td class="rp-num">6</td><td class="rp-num">1,7</td></tr><tr><td><b>26<!-- -->.<!-- -->08</b><span class="rp-wd">Wed</span></td><td class="rp-num">572</td><td class="rp-num">479</td><td class="rp-num">260</td><td class="rp-num">−11</td><td class="rp-num">33,7 %</td><td class="rp-num">1&nbsp;354</td><td class="rp-num">131</td><td class="rp-num">99</td><td class="rp-num">4</td><td class="rp-num">1,0</td></tr><tr><td><b>27<!-- -->.<!-- -->08</b><span class="rp-wd">Thu</span></td><td class="rp-num">359</td><td class="rp-num">296</td><td class="rp-num">182</td><td class="rp-num">−12</td><td class="rp-num">27,0 %</td><td class="rp-num">1&nbsp;943</td><td class="rp-num">122</td><td class="rp-num">76</td><td class="rp-num">4</td><td class="rp-num">1,3</td></tr><tr><td><b>28<!-- -->.<!-- -->08</b><span class="rp-wd">Fri</span></td><td class="rp-num">294</td><td class="rp-num">237</td><td class="rp-num">156</td><td class="rp-num">−11</td><td class="rp-num">35,1 %</td><td class="rp-num">1&nbsp;432</td><td class="rp-num">116</td><td class="rp-num">92</td><td class="rp-num">14</td><td class="rp-num">4,3</td></tr><tr class="rp-wknd"><td><b>29<!-- -->.<!-- -->08</b><span class="rp-wd">Sat</span></td><td class="rp-num">505</td><td class="rp-num">429</td><td class="rp-num">213</td><td class="rp-num">−12</td><td class="rp-num">28,2 %</td><td class="rp-num">1&nbsp;919</td><td class="rp-num">111</td><td class="rp-num">73</td><td class="rp-num">15</td><td class="rp-num">4,3</td></tr><tr class="rp-wknd"><td><b>30<!-- -->.<!-- -->08</b><span class="rp-wd">Sun</span></td><td class="rp-num">616</td><td class="rp-num">519</td><td class="rp-num">237</td><td class="rp-num">−11</td><td class="rp-num">33,7 %</td><td class="rp-num">1&nbsp;919</td><td class="rp-num">107</td><td class="rp-num">74</td><td class="rp-num">13</td><td class="rp-num">3,7</td></tr><tr><td><b>31<!-- -->.<!-- -->08</b><span class="rp-wd">Mon</span></td><td class="rp-num">545</td><td class="rp-num">429</td><td class="rp-num">224</td><td class="rp-num">−10</td><td class="rp-num">38,4 %</td><td class="rp-num">1&nbsp;796</td><td class="rp-num">107</td><td class="rp-num">81</td><td class="rp-num">13</td><td class="rp-num">3,3</td></tr></tbody></table></div></div>
<p>The SNR is taken from the report sent to the correspondent: in digital modes a report is a signal-to-noise ratio in decibels, not the usual readability estimate. Distances are between the centres of locator squares (Maidenhead, 4 characters). The indices are NOAA SWPC daily tables; the A index for the 16th is missing from the source, and the table shows a dash there.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="through-the-satellite-qo-100">Through the satellite: QO-100<a href="https://cyberdev.space/en/blog/award-35-analysis/#through-the-satellite-qo-100" class="hash-link" aria-label="Direct link to Through the satellite: QO-100" title="Direct link to Through the satellite: QO-100" translate="no">​</a></h2>
<p>262 QSOs in this log — <strong>1.51 %</strong> — went not through the ionosphere but through the geostationary transponder <strong>QO-100</strong> (Es'hail-2). In the log they are marked with the band <code>3cm</code> and frequencies of 10,489,540–10,489,560 kHz — the satellite's narrowband downlink (10489.550–10489.800 MHz according to AMSAT-DL; a discrepancy of a few kilohertz comes from an uncalibrated LNB, an ordinary thing on this band).</p>
<p>Eight of them nearly went missing. Their frequency is recorded a thousand times too high — <code>10 489 540 000</code> instead of <code>10 489 540</code>, the decimal point in the wrong place. That is the commonest hand-logging error, and on 3 cm it is visible: with the point moved, the number lands in the downlink to the nearest kilohertz, and there is nothing else on this band anywhere in the log. So they are counted — discarding them would have meant missing eight genuine contacts through the satellite.</p>
<p>One activator gathered <strong>194 correspondents from 34 countries</strong> in 14 days. Half of Europe in the log from a single spot, with no dependence on propagation at all.</p>
<div class="rp"><div class="rp-tablewrap"><table><thead><tr><th>Country</th><th class="rp-num">Contacts</th></tr></thead><tbody><tr><td>🇩🇪 Germany</td><td class="rp-num">53</td></tr><tr><td>🇮🇹 Italy</td><td class="rp-num">27</td></tr><tr><td>🇪🇸 Spain</td><td class="rp-num">19</td></tr><tr><td>🇬🇧 United Kingdom</td><td class="rp-num">18</td></tr><tr><td>🇵🇱 Poland</td><td class="rp-num">16</td></tr><tr><td>🇧🇪 Belgium</td><td class="rp-num">16</td></tr><tr><td>🇺🇦 Ukraine</td><td class="rp-num">15</td></tr><tr><td>🇧🇷 Brazil</td><td class="rp-num">13</td></tr></tbody></table></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-far-it-reaches-distance-by-mode-and-band">How far it reaches: distance by mode and band<a href="https://cyberdev.space/en/blog/award-35-analysis/#how-far-it-reaches-distance-by-mode-and-band" class="hash-link" aria-label="Direct link to How far it reaches: distance by mode and band" title="Direct link to How far it reaches: distance by mode and band" translate="no">​</a></h2>
<p>The question “how far does a mode reach” only makes sense when the locator is known for the great majority of contacts. Here it is known for 96.8 %, and evenly across the modes — so a difference between modes means a difference between modes, not a difference in who bothered to give a square.</p>
<div class="rp"><div class="rp-tablewrap"><table><thead><tr><th>Mode / band</th><th class="rp-num">Contacts</th><th class="rp-num">Median</th><th class="rp-num">90th pct.</th><th class="rp-num">Maximum</th><th class="rp-num">Over 5000 km</th></tr></thead><tbody><tr><td>FT4</td><td class="rp-num">2&nbsp;135</td><td class="rp-num">1&nbsp;871<!-- --> <!-- -->km</td><td class="rp-num">8&nbsp;099<!-- --> <!-- -->km</td><td class="rp-num">15&nbsp;216<!-- --> <!-- -->km</td><td class="rp-num">16,0<!-- --> %</td></tr><tr><td>FT8</td><td class="rp-num">7&nbsp;053</td><td class="rp-num">1&nbsp;782<!-- --> <!-- -->km</td><td class="rp-num">7&nbsp;894<!-- --> <!-- -->km</td><td class="rp-num">16&nbsp;811<!-- --> <!-- -->km</td><td class="rp-num">13,9<!-- --> %</td></tr><tr><td>RTTY</td><td class="rp-num">43</td><td class="rp-num">1&nbsp;545<!-- --> <!-- -->km</td><td class="rp-num">2&nbsp;340<!-- --> <!-- -->km</td><td class="rp-num">8&nbsp;099<!-- --> <!-- -->km</td><td class="rp-num">2,3<!-- --> %</td></tr><tr><td>SSB</td><td class="rp-num">1&nbsp;015</td><td class="rp-num">1&nbsp;112<!-- --> <!-- -->km</td><td class="rp-num">2&nbsp;097<!-- --> <!-- -->km</td><td class="rp-num">15&nbsp;671<!-- --> <!-- -->km</td><td class="rp-num">2,7<!-- --> %</td></tr><tr><td>CW</td><td class="rp-num">352</td><td class="rp-num">841<!-- --> <!-- -->km</td><td class="rp-num">1&nbsp;639<!-- --> <!-- -->km</td><td class="rp-num">12&nbsp;815<!-- --> <!-- -->km</td><td class="rp-num">1,1<!-- --> %</td></tr><tr><td>FT2</td><td class="rp-num">173</td><td class="rp-num">672<!-- --> <!-- -->km</td><td class="rp-num">2&nbsp;143<!-- --> <!-- -->km</td><td class="rp-num">8&nbsp;018<!-- --> <!-- -->km</td><td class="rp-num">2,9<!-- --> %</td></tr><tr><td>FM</td><td class="rp-num">105</td><td class="rp-num">0<!-- --> <!-- -->km</td><td class="rp-num">479<!-- --> <!-- -->km</td><td class="rp-num">672<!-- --> <!-- -->km</td><td class="rp-num">0,0<!-- --> %</td></tr><tr class="rp-group"><td>17m</td><td class="rp-num">1&nbsp;950</td><td class="rp-num">2&nbsp;063<!-- --> <!-- -->km</td><td class="rp-num">8&nbsp;054<!-- --> <!-- -->km</td><td class="rp-num">14&nbsp;755<!-- --> <!-- -->km</td><td class="rp-num">19,1<!-- --> %</td></tr><tr><td>20m</td><td class="rp-num">3&nbsp;658</td><td class="rp-num">1&nbsp;839<!-- --> <!-- -->km</td><td class="rp-num">7&nbsp;926<!-- --> <!-- -->km</td><td class="rp-num">16&nbsp;661<!-- --> <!-- -->km</td><td class="rp-num">13,3<!-- --> %</td></tr><tr><td>15m</td><td class="rp-num">1&nbsp;026</td><td class="rp-num">1&nbsp;772<!-- --> <!-- -->km</td><td class="rp-num">7&nbsp;926<!-- --> <!-- -->km</td><td class="rp-num">13&nbsp;586<!-- --> <!-- -->km</td><td class="rp-num">14,2<!-- --> %</td></tr><tr><td>30m</td><td class="rp-num">1&nbsp;655</td><td class="rp-num">1&nbsp;639<!-- --> <!-- -->km</td><td class="rp-num">7&nbsp;906<!-- --> <!-- -->km</td><td class="rp-num">16&nbsp;811<!-- --> <!-- -->km</td><td class="rp-num">14,1<!-- --> %</td></tr><tr><td>10m</td><td class="rp-num">393</td><td class="rp-num">1&nbsp;426<!-- --> <!-- -->km</td><td class="rp-num">2&nbsp;602<!-- --> <!-- -->km</td><td class="rp-num">13&nbsp;985<!-- --> <!-- -->km</td><td class="rp-num">3,3<!-- --> %</td></tr><tr><td>12m</td><td class="rp-num">310</td><td class="rp-num">1&nbsp;396<!-- --> <!-- -->km</td><td class="rp-num">6&nbsp;555<!-- --> <!-- -->km</td><td class="rp-num">13&nbsp;742<!-- --> <!-- -->km</td><td class="rp-num">12,6<!-- --> %</td></tr><tr><td>40m</td><td class="rp-num">1&nbsp;588</td><td class="rp-num">866<!-- --> <!-- -->km</td><td class="rp-num">2&nbsp;293<!-- --> <!-- -->km</td><td class="rp-num">15&nbsp;563<!-- --> <!-- -->km</td><td class="rp-num">4,3<!-- --> %</td></tr><tr><td>80m</td><td class="rp-num">156</td><td class="rp-num">111<!-- --> <!-- -->km</td><td class="rp-num">1&nbsp;021<!-- --> <!-- -->km</td><td class="rp-num">1&nbsp;866<!-- --> <!-- -->km</td><td class="rp-num">0,0<!-- --> %</td></tr></tbody></table></div></div>
<p>These are the distances of <strong>this</strong> log, not a property of the modes as such. People work FT8 when the DX is already audible, and SSB when the other station can still be made out. What is being compared is not physics but habits along with physics. The telling line is FM: median 0 km, maximum 672. That is local operating, and there everything is as it should be.</p>
<p><strong>Radioteletype</strong> deserves pulling out separately. 44 QSOs is a quarter of a percent of the log, and in any mode summary it drowns in “other”. But it is the only classic digital mode outside the FT family, and UR3QCC ran it single-handed: 34 correspondents, 14 countries, 10 days on the air, all on 20 m in the 14,087–14,095 kHz segment, above the FT4 slot and clear of it. Median 1545 km, maximum 8099 — further than CW and closer than FT8. For a mode that machines rather than ears receive nowadays, that is exactly in the middle. One RTTY contact went through QO-100: teletype, on 3 cm.</p>
<div class="rp"><div class="rp-tablewrap"><table><thead><tr><th>Band</th><th>Peak, UTC</th><th>Busiest hours</th></tr></thead><tbody><tr><td>20m</td><td>16:00</td><td>16:00, 15:00, 19:00</td></tr><tr><td>15m</td><td>10:00</td><td>10:00, 13:00, 09:00</td></tr><tr><td>17m</td><td>12:00</td><td>12:00, 09:00, 18:00</td></tr><tr><td>40m</td><td>19:00</td><td>19:00, 20:00, 18:00</td></tr><tr><td>30m</td><td>19:00</td><td>19:00, 18:00, 20:00</td></tr><tr><td>80m</td><td>18:00</td><td>18:00, 19:00, 17:00</td></tr><tr><td>10m</td><td>08:00</td><td>08:00, 09:00, 10:00</td></tr><tr><td>12m</td><td>10:00</td><td>10:00, 07:00, 11:00</td></tr></tbody></table></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="who-turned-up-8226-callsigns">Who turned up: 8,226 callsigns<a href="https://cyberdev.space/en/blog/award-35-analysis/#who-turned-up-8226-callsigns" class="hash-link" aria-label="Direct link to Who turned up: 8,226 callsigns" title="Direct link to Who turned up: 8,226 callsigns" translate="no">​</a></h2>
<p>Over 31 days, 8,226 different stations worked the award — 2.11 contacts per callsign. But the average says almost nothing here, because the distribution is very uneven:</p>
<ul>
<li class="">the top 10 % of hunters account for <strong>44.1 %</strong> of all contacts;</li>
<li class=""><strong>67.8 %</strong> made contact exactly once;</li>
<li class=""><strong>70.5 %</strong> were on the air with the award on a single day;</li>
<li class="">and <strong>54</strong> stations came back on ten days or more.</li>
</ul>
<p>This is the portrait of a mass event with a small core: most participants looked in once, while the backbone of the log is held up by a few dozen who were on the air almost daily. Both halves are worth attention — the first says how many people the award reached, the second how many it held.</p>
<div class="rp"><div class="rp-tablewrap"><table><thead><tr><th>Callsign</th><th class="rp-num">Contacts</th></tr></thead><tbody><tr><td>UR3QQV</td><td class="rp-num">334</td></tr><tr><td>UR3QRP</td><td class="rp-num">250</td></tr><tr><td>UX0KR</td><td class="rp-num">219</td></tr><tr><td>US1MM</td><td class="rp-num">150</td></tr><tr><td>US0QV</td><td class="rp-num">146</td></tr><tr><td>UR5WAI</td><td class="rp-num">136</td></tr><tr><td>UR8MH</td><td class="rp-num">92</td></tr><tr><td>UR4UOY</td><td class="rp-num">90</td></tr><tr><td>SV4FGT</td><td class="rp-num">86</td></tr><tr><td>UR5TOC</td><td class="rp-num">68</td></tr></tbody></table></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="in-pictures">In pictures<a href="https://cyberdev.space/en/blog/award-35-analysis/#in-pictures" class="hash-link" aria-label="Direct link to In pictures" title="Direct link to In pictures" translate="no">​</a></h2>
<p>Four charts reduce 17,387 contacts to a picture: who worked whom, on which bands and in which modes.</p>
<figure class="rp rp-chart"><h4>Top 15 countries by contacts</h4><p>number of QSOs in the award log</p><svg viewBox="0 0 680 518" role="img" aria-label="Top 15 countries by contacts"><g><text x="150" y="20" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇺🇦<!-- --> <!-- -->Ukraine</text><rect x="158" y="5" width="438" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar-alt)"><title>Ukraine: 3&nbsp;443 QSO (19,8 %)</title></rect><text x="603" y="19" font-size="11" font-weight="600" style="fill:var(--rp-ink)">3&nbsp;443</text></g><g><text x="150" y="54" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇩🇪<!-- --> <!-- -->Germany</text><rect x="158" y="39" width="298.4455416787685" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Germany: 2&nbsp;346 QSO (13,49 %)</title></rect><text x="463.4455416787685" y="53" font-size="11" font-weight="600" style="fill:var(--rp-ink)">2&nbsp;346</text></g><g><text x="150" y="88" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇵🇱<!-- --> <!-- -->Poland</text><rect x="158" y="73" width="134.9747313389486" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Poland: 1&nbsp;061 QSO (6,1 %)</title></rect><text x="299.9747313389486" y="87" font-size="11" font-weight="600" style="fill:var(--rp-ink)">1&nbsp;061</text></g><g><text x="150" y="122" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇮🇹<!-- --> <!-- -->Italy</text><rect x="158" y="107" width="128.741214057508" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Italy: 1&nbsp;012 QSO (5,82 %)</title></rect><text x="293.741214057508" y="121" font-size="11" font-weight="600" style="fill:var(--rp-ink)">1&nbsp;012</text></g><g><text x="150" y="156" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇬🇧<!-- --> <!-- -->United Kingdom</text><rect x="158" y="141" width="116.40139413302353" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>United Kingdom: 915 QSO (5,26 %)</title></rect><text x="281.40139413302353" y="155" font-size="11" font-weight="600" style="fill:var(--rp-ink)">915</text></g><g><text x="150" y="190" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇺🇸<!-- --> <!-- -->United States</text><rect x="158" y="175" width="106.98751089166424" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>United States: 841 QSO (4,84 %)</title></rect><text x="271.9875108916642" y="189" font-size="11" font-weight="600" style="fill:var(--rp-ink)">841</text></g><g><text x="150" y="224" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇯🇵<!-- --> <!-- -->Japan</text><rect x="158" y="209" width="105.20650595410979" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Japan: 827 QSO (4,76 %)</title></rect><text x="270.2065059541098" y="223" font-size="11" font-weight="600" style="fill:var(--rp-ink)">827</text></g><g><text x="150" y="258" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇫🇷<!-- --> <!-- -->France</text><rect x="158" y="243" width="101.64449607900087" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>France: 799 QSO (4,6 %)</title></rect><text x="266.6444960790009" y="257" font-size="11" font-weight="600" style="fill:var(--rp-ink)">799</text></g><g><text x="150" y="292" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇪🇸<!-- --> <!-- -->Spain</text><rect x="158" y="277" width="96.81033981992448" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Spain: 761 QSO (4,38 %)</title></rect><text x="261.8103398199245" y="291" font-size="11" font-weight="600" style="fill:var(--rp-ink)">761</text></g><g><text x="150" y="326" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇳🇱<!-- --> <!-- -->Netherlands</text><rect x="158" y="311" width="89.43189079291315" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Netherlands: 703 QSO (4,04 %)</title></rect><text x="254.43189079291315" y="325" font-size="11" font-weight="600" style="fill:var(--rp-ink)">703</text></g><g><text x="150" y="360" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇬🇷<!-- --> <!-- -->Greece</text><rect x="158" y="345" width="52.66686029625327" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Greece: 414 QSO (2,38 %)</title></rect><text x="217.66686029625328" y="359" font-size="11" font-weight="600" style="fill:var(--rp-ink)">414</text></g><g><text x="150" y="394" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇧🇪<!-- --> <!-- -->Belgium</text><rect x="158" y="379" width="42.616903862910256" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Belgium: 335 QSO (1,93 %)</title></rect><text x="207.61690386291025" y="393" font-size="11" font-weight="600" style="fill:var(--rp-ink)">335</text></g><g><text x="150" y="428" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇷🇴<!-- --> <!-- -->Romania</text><rect x="158" y="413" width="38.16439151902411" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Romania: 300 QSO (1,73 %)</title></rect><text x="203.1643915190241" y="427" font-size="11" font-weight="600" style="fill:var(--rp-ink)">300</text></g><g><text x="150" y="462" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇨🇿<!-- --> <!-- -->Czechia</text><rect x="158" y="447" width="36.637815858263146" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Czechia: 288 QSO (1,66 %)</title></rect><text x="201.63781585826314" y="461" font-size="11" font-weight="600" style="fill:var(--rp-ink)">288</text></g><g><text x="150" y="496" text-anchor="end" font-size="11" style="fill:var(--rp-ink)">🇫🇮<!-- --> <!-- -->Finland</text><rect x="158" y="481" width="33.203020621550976" height="18" rx="3" opacity="0.92" style="fill:var(--rp-bar)"><title>Finland: 261 QSO (1,5 %)</title></rect><text x="198.203020621551" y="495" font-size="11" font-weight="600" style="fill:var(--rp-ink)">261</text></g></svg></figure>
<figure class="rp rp-chart"><h4>Bands and mode families</h4><p>stacked from the bottom up:<!-- --> <span class="rp-sq" style="background:var(--rp-gold)"></span>digital<!-- --> ·<span class="rp-sq" style="background:var(--rp-bar)"></span>CW · <span class="rp-sq" style="background:var(--rp-steel)"></span>voice<!-- --> (SSB + FM)</p><svg viewBox="0 0 680 300" role="img" aria-label="Bands and mode families"><g><line x1="44" y1="246" x2="670" y2="246" style="stroke:var(--rp-grid)"></line><text x="38" y="249.5" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">0</text></g><g><line x1="44" y1="187.5" x2="670" y2="187.5" style="stroke:var(--rp-grid)"></line><text x="38" y="191" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">1404</text></g><g><line x1="44" y1="129" x2="670" y2="129" style="stroke:var(--rp-grid)"></line><text x="38" y="132.5" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">2807</text></g><g><line x1="44" y1="70.5" x2="670" y2="70.5" style="stroke:var(--rp-grid)"></line><text x="38" y="74" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">4211</text></g><g><line x1="44" y1="12" x2="670" y2="12" style="stroke:var(--rp-grid)"></line><text x="38" y="15.5" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">5614</text></g><g><rect x="57.215555555555554" y="67.81154257214106" width="43.12444444444444" height="178.18845742785894" style="fill:var(--rp-gold)"><title>20m: 4275 digital</title></rect><rect x="57.215555555555554" y="35.17491984324901" width="43.12444444444444" height="32.63662272889206" style="fill:var(--rp-bar)"><title>20m: 783 CW</title></rect><rect x="57.215555555555554" y="12.000000000000007" width="43.12444444444444" height="23.17491984324902" style="fill:var(--rp-steel)"><title>20m: 556 voice</title></rect><text x="78.77777777777777" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">20m</text><text x="78.77777777777777" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">5&nbsp;614</text></g><g><rect x="126.77111111111111" y="144.5888849305308" width="43.12444444444444" height="101.41111506946919" style="fill:var(--rp-gold)"><title>15m: 2433 digital</title></rect><rect x="126.77111111111111" y="137.9198432490203" width="43.12444444444444" height="6.669041681510509" style="fill:var(--rp-bar)"><title>15m: 160 CW</title></rect><rect x="126.77111111111111" y="129.25008906305663" width="43.12444444444444" height="8.669754185963662" style="fill:var(--rp-steel)"><title>15m: 208 voice</title></rect><text x="148.33333333333334" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">15m</text><text x="148.33333333333334" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">2&nbsp;801</text></g><g><rect x="196.32666666666668" y="158.96900605628787" width="43.12444444444444" height="87.03099394371215" style="fill:var(--rp-gold)"><title>17m: 2088 digital</title></rect><rect x="196.32666666666668" y="153.17527609547562" width="43.12444444444444" height="5.793729960812255" style="fill:var(--rp-bar)"><title>17m: 139 CW</title></rect><rect x="196.32666666666668" y="151.92483078019237" width="43.12444444444444" height="1.2504453152832204" style="fill:var(--rp-steel)"><title>17m: 30 voice</title></rect><text x="217.8888888888889" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">17m</text><text x="217.8888888888889" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">2&nbsp;257</text></g><g><rect x="265.88222222222225" y="184.18631991449945" width="43.12444444444444" height="61.813680085500536" style="fill:var(--rp-gold)"><title>40m: 1483 digital</title></rect><rect x="265.88222222222225" y="177.43391521197006" width="43.12444444444444" height="6.7524047025293905" style="fill:var(--rp-bar)"><title>40m: 162 CW</title></rect><rect x="265.88222222222225" y="164.26255789098684" width="43.12444444444444" height="13.171357320983256" style="fill:var(--rp-steel)"><title>40m: 316 voice</title></rect><text x="287.44444444444446" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">40m</text><text x="287.44444444444446" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">1&nbsp;961</text></g><g><rect x="335.4377777777778" y="174.8913430708942" width="43.12444444444444" height="71.1086569291058" style="fill:var(--rp-gold)"><title>30m: 1706 digital</title></rect><rect x="335.4377777777778" y="170.8899180619879" width="43.12444444444444" height="4.001425008906305" style="fill:var(--rp-bar)"><title>30m: 96 CW</title></rect><text x="357" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">30m</text><text x="357" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">1&nbsp;802</text></g><g><rect x="404.99333333333334" y="207.2778767367296" width="43.12444444444444" height="38.7221232632704" style="fill:var(--rp-gold)"><title>80m: 929 digital</title></rect><rect x="404.99333333333334" y="205.11043819023868" width="43.12444444444444" height="2.1674385464909154" style="fill:var(--rp-bar)"><title>80m: 52 CW</title></rect><rect x="404.99333333333334" y="199.94193088706803" width="43.12444444444444" height="5.168507303170645" style="fill:var(--rp-steel)"><title>80m: 124 voice</title></rect><text x="426.55555555555554" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">80m</text><text x="426.55555555555554" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">1&nbsp;105</text></g><g><rect x="474.54888888888894" y="219.990737442109" width="43.12444444444444" height="26.009262557890988" style="fill:var(--rp-gold)"><title>10m: 624 digital</title></rect><rect x="474.54888888888894" y="218.5318845742786" width="43.12444444444444" height="1.458852867830424" style="fill:var(--rp-bar)"><title>10m: 35 CW</title></rect><rect x="474.54888888888894" y="218.1150694691842" width="43.12444444444444" height="0.41681510509440683" style="fill:var(--rp-steel)"><title>10m: 10 voice</title></rect><text x="496.11111111111114" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">10m</text><text x="496.11111111111114" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">669</text></g><g><rect x="544.1044444444444" y="225.65942287139293" width="43.12444444444444" height="20.340577128607055" style="fill:var(--rp-gold)"><title>12m: 488 digital</title></rect><rect x="544.1044444444444" y="225.49269682935517" width="43.12444444444444" height="0.16672604203776273" style="fill:var(--rp-bar)"><title>12m: 4 CW</title></rect><text x="565.6666666666666" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">12m</text><text x="565.6666666666666" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">492</text></g><g><rect x="613.66" y="231.28642679016744" width="43.12444444444444" height="14.713573209832562" style="fill:var(--rp-gold)"><title>other: 353 digital</title></rect><rect x="613.66" y="217.40648379052368" width="43.12444444444444" height="13.879942999643747" style="fill:var(--rp-steel)"><title>other: 333 voice</title></rect><text x="635.2222222222222" y="262" text-anchor="middle" font-size="10" style="fill:var(--rp-ink)">other</text><text x="635.2222222222222" y="277" text-anchor="middle" font-size="9" style="fill:var(--rp-axis)">686</text></g></svg></figure>
<figure class="rp rp-chart"><h4>Modes</h4><p>the share of each mode in the log; “other” = FM, FT2, MFSK, RTTY</p><svg viewBox="0 0 430 216" role="img" aria-label="Modes"><path fill="none" stroke-width="30" style="stroke:var(--rp-deep)" d="M 112.00 36.00 A 72 72 0 1 1 58.30 155.96"></path><path fill="none" stroke-width="30" style="stroke:var(--rp-bar)" d="M 58.30 155.96 A 72 72 0 0 1 45.07 81.46"></path><path fill="none" stroke-width="30" style="stroke:var(--rp-gold)" d="M 45.07 81.46 A 72 72 0 0 1 66.94 51.84"></path><path fill="none" stroke-width="30" style="stroke:var(--rp-steel)" d="M 66.94 51.84 A 72 72 0 0 1 96.64 37.66"></path><path fill="none" stroke-width="30" style="stroke:var(--rp-pale)" d="M 96.64 37.66 A 72 72 0 0 1 112.00 36.00"></path><text x="112" y="107" text-anchor="middle" font-size="16" font-weight="700" style="fill:var(--rp-ink)">17&nbsp;387</text><text x="112" y="122" text-anchor="middle" font-size="10" style="fill:var(--rp-axis)">QSO</text><g><rect x="240" y="25" width="11" height="11" rx="2" style="fill:var(--rp-deep)"></rect><text x="258" y="34" font-size="11" style="fill:var(--rp-text)">FT8</text><text x="360" y="34" text-anchor="end" font-size="11" font-weight="600" style="fill:var(--rp-ink)">63,4<!-- --> %</text><text x="424" y="34" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">11&nbsp;023</text></g><g><rect x="240" y="50" width="11" height="11" rx="2" style="fill:var(--rp-bar)"></rect><text x="258" y="59" font-size="11" style="fill:var(--rp-text)">FT4</text><text x="360" y="59" text-anchor="end" font-size="11" font-weight="600" style="fill:var(--rp-ink)">17,6<!-- --> %</text><text x="424" y="59" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">3&nbsp;062</text></g><g><rect x="240" y="75" width="11" height="11" rx="2" style="fill:var(--rp-gold)"></rect><text x="258" y="84" font-size="11" style="fill:var(--rp-text)">CW</text><text x="360" y="84" text-anchor="end" font-size="11" font-weight="600" style="fill:var(--rp-ink)">8,2<!-- --> %</text><text x="424" y="84" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">1&nbsp;431</text></g><g><rect x="240" y="100" width="11" height="11" rx="2" style="fill:var(--rp-steel)"></rect><text x="258" y="109" font-size="11" style="fill:var(--rp-text)">SSB</text><text x="360" y="109" text-anchor="end" font-size="11" font-weight="600" style="fill:var(--rp-ink)">7,3<!-- --> %</text><text x="424" y="109" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">1&nbsp;276</text></g><g><rect x="240" y="125" width="11" height="11" rx="2" style="fill:var(--rp-pale)"></rect><text x="258" y="134" font-size="11" style="fill:var(--rp-text)">other</text><text x="360" y="134" text-anchor="end" font-size="11" font-weight="600" style="fill:var(--rp-ink)">3,4<!-- --> %</text><text x="424" y="134" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">595</text></g></svg></figure>
<figure class="rp rp-chart"><h4>Locator coverage</h4><p>contacts that appear on the map</p><svg viewBox="0 0 430 216" role="img" aria-label="Locator coverage"><circle cx="112" cy="108" r="72" fill="none" stroke-width="30" style="stroke:var(--rp-pale)"></circle><path fill="none" stroke-width="30" style="stroke:var(--rp-bar)" d="M 112.00 36.00 A 72 72 0 1 1 97.62 37.45"></path><text x="112" y="107" text-anchor="middle" font-size="17" font-weight="700" style="fill:var(--rp-ink)">96,8<!-- --> %</text><text x="112" y="122" text-anchor="middle" font-size="10" style="fill:var(--rp-axis)">carry a locator</text><g><rect x="230" y="25" width="11" height="11" rx="2" style="fill:var(--rp-bar)"></rect><text x="248" y="34" font-size="11" style="fill:var(--rp-text)">with locator</text><text x="342" y="34" text-anchor="end" font-size="11" font-weight="600" style="fill:var(--rp-ink)">96,8<!-- --> %</text><text x="404" y="34" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">16&nbsp;823</text></g><g><rect x="230" y="52" width="11" height="11" rx="2" style="fill:var(--rp-pale)"></rect><text x="248" y="61" font-size="11" style="fill:var(--rp-text)">without locator</text><text x="342" y="61" text-anchor="end" font-size="11" font-weight="600" style="fill:var(--rp-ink)">3,2<!-- --> %</text><text x="404" y="61" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">564</text></g></svg></figure>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="amateur-radio-is-a-privilege-of-wealthy-countries">Amateur radio is a privilege of wealthy countries<a href="https://cyberdev.space/en/blog/award-35-analysis/#amateur-radio-is-a-privilege-of-wealthy-countries" class="hash-link" aria-label="Direct link to Amateur radio is a privilege of wealthy countries" title="Direct link to Amateur radio is a privilege of wealthy countries" translate="no">​</a></h2>
<p>The wealthier the country, the more of its operators appear in the log. Spearman rank correlation between a country's contact count and its development indicator:</p>
<table><thead><tr><th>Indicator</th><th>r</th></tr></thead><tbody><tr><td>GDP per capita (PPP)</td><td>0.52</td></tr><tr><td>Human Development Index (HDI)</td><td>0.60</td></tr><tr><td>Global Innovation Index (GII)</td><td>0.64</td></tr></tbody></table>
<p>These three figures are computed over all the countries in the log, and the tail of that series consists of countries with one or two contacts, where rank means almost nothing. So the same correlation was computed twice more: <strong>0.31</strong> among the 50 countries that produced ten contacts or more, and <strong>0.55</strong> with Ukraine excluded.</p>
<p>So the link with wealth is real but noticeably weaker than the full series suggests: to a large degree it is held up by countries that contribute a few lines to the log. Ukraine's home-field effect, on the contrary, was <em>lowering</em> the correlation rather than creating it.</p>
<p>At the same time, the 48 countries with a GDP per capita above $40,000 account for <strong>75.9 %</strong> of all contacts, while the 16 countries below $15,000 account for just <strong>0.5 %</strong>.</p>
<figure class="rp rp-chart"><h4>GDP per capita against contacts</h4><p>each country is a point; both axes are logarithmic; notable countries are labelled</p><svg viewBox="0 0 640 360" role="img" aria-label="GDP per capita against contacts"><g><line x1="126.8313398105489" y1="14" x2="126.8313398105489" y2="324" style="stroke:var(--rp-grid)"></line><text x="126.8313398105489" y="339" text-anchor="middle" font-size="9.5" style="fill:var(--rp-axis)">2<!-- -->k</text></g><g><line x1="225.75299028417675" y1="14" x2="225.75299028417675" y2="324" style="stroke:var(--rp-grid)"></line><text x="225.75299028417675" y="339" text-anchor="middle" font-size="9.5" style="fill:var(--rp-axis)">5<!-- -->k</text></g><g><line x1="300.58433009472566" y1="14" x2="300.58433009472566" y2="324" style="stroke:var(--rp-grid)"></line><text x="300.58433009472566" y="339" text-anchor="middle" font-size="9.5" style="fill:var(--rp-axis)">10<!-- -->k</text></g><g><line x1="375.41566990527434" y1="14" x2="375.41566990527434" y2="324" style="stroke:var(--rp-grid)"></line><text x="375.41566990527434" y="339" text-anchor="middle" font-size="9.5" style="fill:var(--rp-axis)">20<!-- -->k</text></g><g><line x1="474.3373203789022" y1="14" x2="474.3373203789022" y2="324" style="stroke:var(--rp-grid)"></line><text x="474.3373203789022" y="339" text-anchor="middle" font-size="9.5" style="fill:var(--rp-axis)">50<!-- -->k</text></g><g><line x1="549.1686601894511" y1="14" x2="549.1686601894511" y2="324" style="stroke:var(--rp-grid)"></line><text x="549.1686601894511" y="339" text-anchor="middle" font-size="9.5" style="fill:var(--rp-axis)">100<!-- -->k</text></g><g><line x1="624" y1="14" x2="624" y2="324" style="stroke:var(--rp-grid)"></line><text x="624" y="339" text-anchor="middle" font-size="9.5" style="fill:var(--rp-axis)">200<!-- -->k</text></g><g><line x1="52" y1="316.0856023121833" x2="624" y2="316.0856023121833" style="stroke:var(--rp-grid)"></line><text x="46" y="319.5856023121833" text-anchor="end" font-size="9.5" style="fill:var(--rp-axis)">1</text></g><g><line x1="52" y1="277.12030617867055" x2="624" y2="277.12030617867055" style="stroke:var(--rp-grid)"></line><text x="46" y="280.62030617867055" text-anchor="end" font-size="9.5" style="fill:var(--rp-axis)">3</text></g><g><line x1="52" y1="234.41811056229844" x2="624" y2="234.41811056229844" style="stroke:var(--rp-grid)"></line><text x="46" y="237.91811056229844" text-anchor="end" font-size="9.5" style="fill:var(--rp-axis)">10</text></g><g><line x1="52" y1="195.4528144287857" x2="624" y2="195.4528144287857" style="stroke:var(--rp-grid)"></line><text x="46" y="198.9528144287857" text-anchor="end" font-size="9.5" style="fill:var(--rp-axis)">30</text></g><g><line x1="52" y1="152.75061881241362" x2="624" y2="152.75061881241362" style="stroke:var(--rp-grid)"></line><text x="46" y="156.25061881241362" text-anchor="end" font-size="9.5" style="fill:var(--rp-axis)">100</text></g><g><line x1="52" y1="113.78532267890091" x2="624" y2="113.78532267890091" style="stroke:var(--rp-grid)"></line><text x="46" y="117.28532267890091" text-anchor="end" font-size="9.5" style="fill:var(--rp-axis)">300</text></g><g><line x1="52" y1="71.0831270625288" x2="624" y2="71.0831270625288" style="stroke:var(--rp-grid)"></line><text x="46" y="74.5831270625288" text-anchor="end" font-size="9.5" style="fill:var(--rp-axis)">1000</text></g><g><line x1="52" y1="32.11783092901611" x2="624" y2="32.11783092901611" style="stroke:var(--rp-grid)"></line><text x="46" y="35.61783092901611" text-anchor="end" font-size="9.5" style="fill:var(--rp-axis)">3000</text></g><text x="624" y="318" text-anchor="end" font-size="10" style="fill:var(--rp-axis)">GDP per capita, PPP $ (log) →</text><text x="56" y="24" font-size="10" style="fill:var(--rp-axis)">QSO (log) ↓</text><circle cx="367.7897753550572" cy="27.23282719058713" r="5" opacity="0.85" style="fill:var(--rp-bar-alt)"><title>🇺🇦 Ukraine — 3&nbsp;443 QSO · GDP 18&nbsp;636 $</title></circle><circle cx="516.5989637897749" cy="40.839367542444364" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇩🇪 Germany — 2&nbsp;346 QSO · GDP 73&nbsp;957 $</title></circle><circle cx="477.0304864726933" cy="68.98301615992095" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇵🇱 Poland — 1&nbsp;061 QSO · GDP 51&nbsp;263 $</title></circle><circle cx="498.06947805767203" cy="70.66004760036614" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇮🇹 Italy — 1&nbsp;012 QSO · GDP 62&nbsp;293 $</title></circle><circle cx="499.0116172459012" cy="74.23376954457673" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇬🇧 United Kingdom — 915 QSO · GDP 62&nbsp;839 $</title></circle><circle cx="533.0991978596207" cy="77.22484945526111" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇺🇸 United States — 841 QSO · GDP 86&nbsp;170 $</title></circle><circle cx="482.9573736028665" cy="77.82024518055715" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇯🇵 Japan — 827 QSO · GDP 54&nbsp;156 $</title></circle><circle cx="498.4708059287184" cy="79.04188715890312" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇫🇷 France — 799 QSO · GDP 62&nbsp;525 $</title></circle><circle cx="490.47962772808836" cy="80.7701446271278" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇪🇸 Spain — 761 QSO · GDP 58&nbsp;064 $</title></circle><circle cx="531.8998392422209" cy="83.58190179383614" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇳🇱 Netherlands — 703 QSO · GDP 85&nbsp;218 $</title></circle><circle cx="460.95533660324577" cy="102.3617485442465" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇬🇷 Greece — 414 QSO · GDP 44&nbsp;171 $</title></circle><circle cx="516.9894699337019" cy="109.87152636541222" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇧🇪 Belgium — 335 QSO · GDP 74&nbsp;225 $</title></circle><circle cx="472.3257766733576" cy="113.78532267890091" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇷🇴 Romania — 300 QSO · GDP 49&nbsp;077 $</title></circle><circle cx="489.6602906790395" cy="115.23318660837758" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇿 Czechia — 288 QSO · GDP 57&nbsp;625 $</title></circle><circle cx="502.889156759263" cy="118.72463361669674" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇫🇮 Finland — 261 QSO · GDP 65&nbsp;137 $</title></circle><circle cx="471.1379822944743" cy="122.90213182165405" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇭🇺 Hungary — 232 QSO · GDP 48&nbsp;540 $</title></circle><circle cx="519.2192732054286" cy="123.51897764800778" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇦🇹 Austria — 228 QSO · GDP 75&nbsp;774 $</title></circle><circle cx="512.5308511365879" cy="124.94740187241143" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇸🇪 Sweden — 219 QSO · GDP 71&nbsp;222 $</title></circle><circle cx="408.372942519831" cy="132.2994453398459" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇳 China — 178 QSO · GDP 27&nbsp;140 $</title></circle><circle cx="473.36347117254155" cy="136.75198556547724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇭🇷 Croatia — 157 QSO · GDP 49&nbsp;551 $</title></circle><circle cx="485.99030589817704" cy="140.31361170390676" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇱🇹 Lithuania — 142 QSO · GDP 55&nbsp;699 $</title></circle><circle cx="546.3999415001499" cy="143.99504950069095" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇭 Switzerland — 128 QSO · GDP 97&nbsp;468 $</title></circle><circle cx="489.55907577954997" cy="146.88019557377547" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇸🇮 Slovenia — 118 QSO · GDP 57&nbsp;571 $</title></circle><circle cx="460.22452368919" cy="147.4864965090101" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇱🇻 Latvia — 116 QSO · GDP 43&nbsp;873 $</title></circle><circle cx="526.3368031387856" cy="147.4864965090101" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇩🇰 Denmark — 116 QSO · GDP 80&nbsp;938 $</title></circle><circle cx="479.6313774401116" cy="147.7935784360992" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇵🇹 Portugal — 115 QSO · GDP 52&nbsp;513 $</title></circle><circle cx="555.1093969380224" cy="155.7079761239159" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇳🇴 Norway — 92 QSO · GDP 105&nbsp;657 $</title></circle><circle cx="455.4371964460626" cy="156.0956055671175" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇧🇬 Bulgaria — 91 QSO · GDP 41&nbsp;970 $</title></circle><circle cx="469.5855584291813" cy="156.0956055671175" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇸🇰 Slovakia — 91 QSO · GDP 47&nbsp;847 $</title></circle><circle cx="463.25741008277953" cy="156.487518295273" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇹🇷 Türkiye — 90 QSO · GDP 45&nbsp;123 $</title></circle><circle cx="503.46110337007843" cy="162.02063657792536" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇦 Canada — 77 QSO · GDP 65&nbsp;483 $</title></circle><circle cx="354.46407223564904" cy="162.4842737815205" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇮🇩 Indonesia — 76 QSO · GDP 16&nbsp;472 $</title></circle><circle cx="428.9277582635204" cy="163.43013626243078" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇷🇸 Serbia — 74 QSO · GDP 32&nbsp;832 $</title></circle><circle cx="387.51064045331003" cy="166.4291958021563" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇧🇷 Brazil — 68 QSO · GDP 22&nbsp;371 $</title></circle><circle cx="489.0082307942195" cy="168.02951571529687" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇮🇱 Israel — 65 QSO · GDP 57&nbsp;278 $</title></circle><circle cx="367.94028901952726" cy="168.579414188047" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇲🇩 Moldova — 64 QSO · GDP 18&nbsp;662 $</title></circle><circle cx="400.1432123307637" cy="178.05152789076695" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇧🇦 Bosnia and Herzegovina — 49 QSO · GDP 25&nbsp;148 $</title></circle><circle cx="475.18898593613454" cy="181.86894441392144" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇪🇪 Estonia — 44 QSO · GDP 50&nbsp;396 $</title></circle><circle cx="452.78105718958744" cy="183.5189042806064" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇰🇿 Kazakhstan — 42 QSO · GDP 40&nbsp;950 $</title></circle><circle cx="586.092848573744" cy="188.01450094978682" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇮🇪 Ireland — 37 QSO · GDP 140&nbsp;779 $</title></circle><circle cx="308.0802093313913" cy="197.89983572676303" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇮🇳 India — 28 QSO · GDP 10&nbsp;719 $</title></circle><circle cx="495.89524396183634" cy="199.1897139116451" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇰🇷 South Korea — 27 QSO · GDP 61&nbsp;051 $</title></circle><circle cx="420.8851541151628" cy="201.9193481871257" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇦🇷 Argentina — 25 QSO · GDP 30&nbsp;475 $</title></circle><circle cx="513.8805420428528" cy="211.65300315623261" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇦🇺 Australia — 19 QSO · GDP 72&nbsp;118 $</title></circle><circle cx="319.5182376871511" cy="215.59792517686844" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇱🇧 Lebanon — 17 QSO · GDP 11&nbsp;917 $</title></circle><circle cx="597.2310667028212" cy="217.74814356275908" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇱🇺 Luxembourg — 16 QSO · GDP 156&nbsp;079 $</title></circle><circle cx="440.6480487836563" cy="227.95157680395846" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇺🇾 Uruguay — 12 QSO · GDP 36&nbsp;597 $</title></circle><circle cx="513.6077483325396" cy="227.95157680395846" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇸🇦 Saudi Arabia — 12 QSO · GDP 71&nbsp;936 $</title></circle><circle cx="256.5405674851122" cy="231.03767378863353" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇰🇪 Kenya — 11 QSO · GDP 6&nbsp;650 $</title></circle><circle cx="439.08512364215073" cy="234.41811056229844" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇱 Chile — 10 QSO · GDP 36&nbsp;071 $</title></circle><circle cx="432.901516854535" cy="238.15501004515778" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇲🇪 Montenegro — 9 QSO · GDP 34&nbsp;063 $</title></circle><circle cx="324.8299896095568" cy="238.15501004515778" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇺🇿 Uzbekistan — 9 QSO · GDP 12&nbsp;518 $</title></circle><circle cx="407.7986073537582" cy="238.15501004515778" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇲🇰 North Macedonia — 9 QSO · GDP 26&nbsp;996 $</title></circle><circle cx="410.1169880085975" cy="238.15501004515778" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇩🇴 Dominican Republic — 9 QSO · GDP 27&nbsp;582 $</title></circle><circle cx="486.17428316585483" cy="238.15501004515778" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇳🇿 New Zealand — 9 QSO · GDP 55&nbsp;794 $</title></circle><circle cx="499.29985985436963" cy="238.15501004515778" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇾 Cyprus — 9 QSO · GDP 63&nbsp;007 $</title></circle><circle cx="529.7799844735664" cy="242.33250825011513" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇮🇸 Iceland — 8 QSO · GDP 83&nbsp;561 $</title></circle><circle cx="430.0204746485173" cy="242.33250825011513" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇧🇾 Belarus — 8 QSO · GDP 33&nbsp;166 $</title></circle><circle cx="387.838299646745" cy="242.33250825011513" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇴 Colombia — 8 QSO · GDP 22&nbsp;439 $</title></circle><circle cx="510.75957946149924" cy="247.06856510147512" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇲🇹 Malta — 7 QSO · GDP 70&nbsp;063 $</title></circle><circle cx="347.7514418415064" cy="247.06856510147512" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇿🇦 South Africa — 7 QSO · GDP 15&nbsp;479 $</title></circle><circle cx="518.6020211622479" cy="252.53594149131453" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇭🇰 Hong Kong — 6 QSO · GDP 75&nbsp;342 $</title></circle><circle cx="363.33101486780356" cy="252.53594149131453" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇵🇪 Peru — 6 QSO · GDP 17&nbsp;882 $</title></circle><circle cx="409.7445063421577" cy="252.53594149131453" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇬🇪 Georgia — 6 QSO · GDP 27&nbsp;487 $</title></circle><circle cx="279.26507864242257" cy="252.53594149131453" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇰🇬 Kyrgyzstan — 6 QSO · GDP 8&nbsp;208 $</title></circle><circle cx="234.34114314509654" cy="259.0024752496545" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇹🇯 Tajikistan — 5 QSO · GDP 5&nbsp;414 $</title></circle><circle cx="455.0016026860911" cy="266.91687293747117" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇴🇲 Oman — 4 QSO · GDP 41&nbsp;801 $</title></circle><circle cx="506.30355171708777" cy="266.91687293747117" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇧🇭 Bahrain — 4 QSO · GDP 67&nbsp;230 $</title></circle><circle cx="574.7283926487947" cy="266.91687293747117" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇶🇦 Qatar — 4 QSO · GDP 126&nbsp;713 $</title></circle><circle cx="518.677939042884" cy="277.12030617867055" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇦🇩 Andorra — 3 QSO · GDP 75&nbsp;395 $</title></circle><circle cx="480.8700882905011" cy="277.12030617867055" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇰🇼 Kuwait — 3 QSO · GDP 53&nbsp;119 $</title></circle><circle cx="424.6345960552925" cy="277.12030617867055" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇷 Costa Rica — 3 QSO · GDP 31&nbsp;552 $</title></circle><circle cx="399.1122935801932" cy="277.12030617867055" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇹🇭 Thailand — 3 QSO · GDP 24&nbsp;909 $</title></circle><circle cx="300.1949771479095" cy="277.12030617867055" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇦🇴 Angola — 3 QSO · GDP 9&nbsp;964 $</title></circle><circle cx="207.46845634626038" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇿🇲 Zambia — 2 QSO · GDP 4&nbsp;221 $</title></circle><circle cx="339.70307459507455" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇧🇿 Belize — 2 QSO · GDP 14&nbsp;367 $</title></circle><circle cx="447.05879166053927" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇲🇾 Malaysia — 2 QSO · GDP 38&nbsp;836 $</title></circle><circle cx="341.0101430703823" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇹🇳 Tunisia — 2 QSO · GDP 14&nbsp;542 $</title></circle><circle cx="425.12959372599653" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇲🇺 Mauritius — 2 QSO · GDP 31&nbsp;697 $</title></circle><circle cx="524.1894378035602" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇦🇪 United Arab Emirates — 2 QSO · GDP 79&nbsp;344 $</title></circle><circle cx="290.40266204325195" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇳🇬 Nigeria — 2 QSO · GDP 9&nbsp;100 $</title></circle><circle cx="440.0089748295794" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇹🇹 Trinidad and Tobago — 2 QSO · GDP 36&nbsp;381 $</title></circle><circle cx="262.1398032665787" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇬 Congo — 2 QSO · GDP 7&nbsp;004 $</title></circle><circle cx="370.85665233395014" cy="291.50123762482724" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇲🇳 Mongolia — 2 QSO · GDP 19&nbsp;173 $</title></circle><circle cx="353.9121209762099" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇻🇳 Vietnam — 1 QSO · GDP 16&nbsp;388 $</title></circle><circle cx="161.87655072078647" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇹🇩 Chad — 1 QSO · GDP 2&nbsp;767 $</title></circle><circle cx="350.2948478989204" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇪🇨 Ecuador — 1 QSO · GDP 15&nbsp;848 $</title></circle><circle cx="389.8261611205161" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇦🇲 Armenia — 1 QSO · GDP 22&nbsp;856 $</title></circle><circle cx="298.2930517113319" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇱🇦 Laos — 1 QSO · GDP 9&nbsp;790 $</title></circle><circle cx="319.50917808047893" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇯🇴 Jordan — 1 QSO · GDP 11&nbsp;916 $</title></circle><circle cx="77.37810489337846" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇨🇫 Central African Republic — 1 QSO · GDP 1&nbsp;265 $</title></circle><circle cx="402.9901955289978" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇲🇽 Mexico — 1 QSO · GDP 25&nbsp;820 $</title></circle><circle cx="400.134626113489" cy="316.0856023121833" r="3.2" opacity="0.85" style="fill:var(--rp-bar)"><title>🇦🇿 Azerbaijan — 1 QSO · GDP 25&nbsp;146 $</title></circle><text x="367.7897753550572" y="27.23282719058713" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Ukraine</text><text x="516.5989637897749" y="40.839367542444364" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Germany</text><text x="477.0304864726933" y="68.98301615992095" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Poland</text><text x="498.06947805767203" y="90.66004760036614" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Italy</text><text x="499.0116172459012" y="109.23376954457673" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">United Kingdom</text><text x="533.0991978596207" y="77.22484945526111" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">United States</text><text x="482.9573736028665" y="127.82024518055715" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Japan</text><text x="531.8998392422209" y="53.58190179383614" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Netherlands</text><text x="448.95533660324577" y="104.3617485442465" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Greece</text><text x="408.372942519831" y="132.2994453398459" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">China</text><text x="489.0082307942195" y="168.02951571529687" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Israel</text><text x="495.89524396183634" y="199.1897139116451" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">South Korea</text><text x="513.6077483325396" y="227.95157680395846" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Saudi Arabia</text><text x="506.30355171708777" y="266.91687293747117" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Bahrain</text><text x="574.7283926487947" y="266.91687293747117" font-size="10" font-weight="600" paint-order="stroke" stroke-width="3" style="fill:var(--rp-ink);stroke:var(--rp-surface)">Qatar</text></svg></figure>
<p>Short waves are an expensive hobby: transceivers, antennas, licences, education, free time. Among the twenty most active countries, most have a GDP per capita above $50,000.</p>
<p>There are counter-examples too. Ukraine accounts for 19.8 % of contacts at a GDP per capita of about $18,600: the award is a home one, and the home-field effect outweighs the economy. Poland holds a place in the top ten and Greece comes right behind it, despite a GDP below northern Europe's. Meanwhile the richest countries in the world are barely present: Luxembourg with 13 contacts at $156,000 per capita, Qatar with 4, Bahrain with 4, the UAE with 1. There are only a handful of radio amateurs there.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="top-20-countries">Top 20 countries<a href="https://cyberdev.space/en/blog/award-35-analysis/#top-20-countries" class="hash-link" aria-label="Direct link to Top 20 countries" title="Direct link to Top 20 countries" translate="no">​</a></h2>
<div class="rp"><div class="rp-tablewrap"><table><thead><tr><th class="rp-num">#</th><th>Country</th><th class="rp-num rp-sort" title="Click to sort">QSO<!-- --> ▼</th><th class="rp-num rp-sort" title="Click to sort">% of log</th><th class="rp-num rp-sort" title="Click to sort">Callsigns</th><th class="rp-num rp-sort" title="Click to sort">GDP per capita, PPP $</th><th class="rp-num rp-sort" title="Click to sort">HDI</th><th class="rp-num rp-sort" title="Click to sort">GII rank</th><th>Leading locator fields</th></tr></thead><tbody><tr><td class="rp-num">1</td><td>🇺🇦<!-- --> <!-- -->Ukraine</td><td class="rp-num">3&nbsp;443</td><td class="rp-num">19,8</td><td class="rp-num">479</td><td class="rp-num">18&nbsp;636</td><td class="rp-num">0,779</td><td class="rp-num">60</td><td><span class="rp-fld">KN×2183</span><span class="rp-fld">KO×959</span><span class="rp-fld">OB×1</span></td></tr><tr><td class="rp-num">2</td><td>🇩🇪<!-- --> <!-- -->Germany</td><td class="rp-num">2&nbsp;346</td><td class="rp-num">13,49</td><td class="rp-num">1&nbsp;329</td><td class="rp-num">73&nbsp;957</td><td class="rp-num">0,959</td><td class="rp-num">9</td><td><span class="rp-fld">JO×1623</span><span class="rp-fld">JN×675</span><span class="rp-fld">JR×1</span></td></tr><tr><td class="rp-num">3</td><td>🇵🇱<!-- --> <!-- -->Poland</td><td class="rp-num">1&nbsp;061</td><td class="rp-num">6,1</td><td class="rp-num">510</td><td class="rp-num">51&nbsp;263</td><td class="rp-num">0,906</td><td class="rp-num">40</td><td><span class="rp-fld">JO×733</span><span class="rp-fld">KO×253</span><span class="rp-fld">KN×32</span></td></tr><tr><td class="rp-num">4</td><td>🇮🇹<!-- --> <!-- -->Italy</td><td class="rp-num">1&nbsp;012</td><td class="rp-num">5,82</td><td class="rp-num">604</td><td class="rp-num">62&nbsp;293</td><td class="rp-num">0,915</td><td class="rp-num">26</td><td><span class="rp-fld">JN×899</span><span class="rp-fld">JM×87</span></td></tr><tr><td class="rp-num">5</td><td>🇬🇧<!-- --> <!-- -->United Kingdom</td><td class="rp-num">915</td><td class="rp-num">5,26</td><td class="rp-num">567</td><td class="rp-num">62&nbsp;839</td><td class="rp-num">0,946</td><td class="rp-num">5</td><td><span class="rp-fld">IO×758</span><span class="rp-fld">JO×129</span><span class="rp-fld">IN×9</span></td></tr><tr><td class="rp-num">6</td><td>🇺🇸<!-- --> <!-- -->United States</td><td class="rp-num">841</td><td class="rp-num">4,84</td><td class="rp-num">674</td><td class="rp-num">86&nbsp;170</td><td class="rp-num">0,938</td><td class="rp-num">3</td><td><span class="rp-fld">FN×201</span><span class="rp-fld">EM×178</span><span class="rp-fld">EN×170</span></td></tr><tr><td class="rp-num">7</td><td>🇯🇵<!-- --> <!-- -->Japan</td><td class="rp-num">827</td><td class="rp-num">4,76</td><td class="rp-num">495</td><td class="rp-num">54&nbsp;156</td><td class="rp-num">0,925</td><td class="rp-num">13</td><td><span class="rp-fld">PM×666</span><span class="rp-fld">QM×111</span><span class="rp-fld">QN×42</span></td></tr><tr><td class="rp-num">8</td><td>🇫🇷<!-- --> <!-- -->France</td><td class="rp-num">799</td><td class="rp-num">4,6</td><td class="rp-num">358</td><td class="rp-num">62&nbsp;525</td><td class="rp-num">0,920</td><td class="rp-num">12</td><td><span class="rp-fld">JN×559</span><span class="rp-fld">IN×157</span><span class="rp-fld">JO×56</span></td></tr><tr><td class="rp-num">9</td><td>🇪🇸<!-- --> <!-- -->Spain</td><td class="rp-num">761</td><td class="rp-num">4,38</td><td class="rp-num">424</td><td class="rp-num">58&nbsp;064</td><td class="rp-num">0,918</td><td class="rp-num">28</td><td><span class="rp-fld">IM×263</span><span class="rp-fld">JN×231</span><span class="rp-fld">IN×229</span></td></tr><tr><td class="rp-num">10</td><td>🇳🇱<!-- --> <!-- -->Netherlands</td><td class="rp-num">703</td><td class="rp-num">4,04</td><td class="rp-num">385</td><td class="rp-num">85&nbsp;218</td><td class="rp-num">0,955</td><td class="rp-num">8</td><td><span class="rp-fld">JO×695</span><span class="rp-fld">JA×1</span><span class="rp-fld">JP×1</span></td></tr><tr><td class="rp-num">11</td><td>🇬🇷<!-- --> <!-- -->Greece</td><td class="rp-num">414</td><td class="rp-num">2,38</td><td class="rp-num">87</td><td class="rp-num">44&nbsp;171</td><td class="rp-num">0,908</td><td class="rp-num">45</td><td><span class="rp-fld">KM×356</span><span class="rp-fld">KN×55</span></td></tr><tr><td class="rp-num">12</td><td>🇧🇪<!-- --> <!-- -->Belgium</td><td class="rp-num">335</td><td class="rp-num">1,93</td><td class="rp-num">175</td><td class="rp-num">74&nbsp;225</td><td class="rp-num">0,951</td><td class="rp-num">24</td><td><span class="rp-fld">JO×321</span><span class="rp-fld">JN×5</span></td></tr><tr><td class="rp-num">13</td><td>🇷🇴<!-- --> <!-- -->Romania</td><td class="rp-num">300</td><td class="rp-num">1,73</td><td class="rp-num">131</td><td class="rp-num">49&nbsp;077</td><td class="rp-num">0,845</td><td class="rp-num">48</td><td><span class="rp-fld">KN×293</span><span class="rp-fld">AA×1</span><span class="rp-fld">EG×1</span></td></tr><tr><td class="rp-num">14</td><td>🇨🇿<!-- --> <!-- -->Czechia</td><td class="rp-num">288</td><td class="rp-num">1,66</td><td class="rp-num">147</td><td class="rp-num">57&nbsp;625</td><td class="rp-num">0,915</td><td class="rp-num">30</td><td><span class="rp-fld">JN×199</span><span class="rp-fld">JO×77</span></td></tr><tr><td class="rp-num">15</td><td>🇫🇮<!-- --> <!-- -->Finland</td><td class="rp-num">261</td><td class="rp-num">1,5</td><td class="rp-num">141</td><td class="rp-num">65&nbsp;137</td><td class="rp-num">0,948</td><td class="rp-num">7</td><td><span class="rp-fld">KP×251</span><span class="rp-fld">JJ×3</span><span class="rp-fld">JP×1</span></td></tr><tr><td class="rp-num">16</td><td>🇭🇺<!-- --> <!-- -->Hungary</td><td class="rp-num">232</td><td class="rp-num">1,33</td><td class="rp-num">120</td><td class="rp-num">48&nbsp;540</td><td class="rp-num">0,870</td><td class="rp-num">36</td><td><span class="rp-fld">JN×174</span><span class="rp-fld">KN×45</span></td></tr><tr><td class="rp-num">17</td><td>🇦🇹<!-- --> <!-- -->Austria</td><td class="rp-num">228</td><td class="rp-num">1,31</td><td class="rp-num">115</td><td class="rp-num">75&nbsp;774</td><td class="rp-num">0,930</td><td class="rp-num">17</td><td><span class="rp-fld">JN×225</span></td></tr><tr><td class="rp-num">18</td><td>🇸🇪<!-- --> <!-- -->Sweden</td><td class="rp-num">219</td><td class="rp-num">1,26</td><td class="rp-num">128</td><td class="rp-num">71&nbsp;222</td><td class="rp-num">0,959</td><td class="rp-num">2</td><td><span class="rp-fld">JO×156</span><span class="rp-fld">JP×36</span><span class="rp-fld">KP×18</span></td></tr><tr><td class="rp-num">19</td><td>🇨🇳<!-- --> <!-- -->China</td><td class="rp-num">178</td><td class="rp-num">1,02</td><td class="rp-num">109</td><td class="rp-num">27&nbsp;140</td><td class="rp-num">0,797</td><td class="rp-num">11</td><td><span class="rp-fld">OM×61</span><span class="rp-fld">PM×46</span><span class="rp-fld">OL×31</span></td></tr><tr><td class="rp-num">20</td><td>🇭🇷<!-- --> <!-- -->Croatia</td><td class="rp-num">157</td><td class="rp-num">0,9</td><td class="rp-num">77</td><td class="rp-num">49&nbsp;551</td><td class="rp-num">0,889</td><td class="rp-num">43</td><td><span class="rp-fld">JN×153</span></td></tr></tbody></table></div></div>
<details class="details_lb9f alert alert--info details_b_Ee rp-details" data-collapsed="true"><summary>The full table — 99 countries</summary><div><div class="collapsibleContent_i85q"><div class="rp"><div class="rp-tablewrap"><table><thead><tr><th>Country</th><th class="rp-num rp-sort" title="Click to sort">QSO<!-- --> ▼</th><th class="rp-num rp-sort" title="Click to sort">% of log</th><th class="rp-num rp-sort" title="Click to sort">Callsigns</th><th class="rp-num rp-sort" title="Click to sort">GDP per capita, PPP $</th><th class="rp-num rp-sort" title="Click to sort">HDI</th><th class="rp-num rp-sort" title="Click to sort">HDI rank</th><th class="rp-num rp-sort" title="Click to sort">GII rank</th><th class="rp-num rp-sort" title="Click to sort">GII score</th><th>Locator fields</th></tr></thead><tbody><tr><td>🇺🇦<!-- --> <!-- -->Ukraine</td><td class="rp-num">3&nbsp;443</td><td class="rp-num">19,8</td><td class="rp-num">479</td><td class="rp-num">18&nbsp;636</td><td class="rp-num">0,779</td><td class="rp-num">87</td><td class="rp-num">60</td><td class="rp-num">29,5</td><td><span class="rp-fld">KN×2183</span><span class="rp-fld">KO×959</span></td></tr><tr><td>🇩🇪<!-- --> <!-- -->Germany</td><td class="rp-num">2&nbsp;346</td><td class="rp-num">13,49</td><td class="rp-num">1&nbsp;329</td><td class="rp-num">73&nbsp;957</td><td class="rp-num">0,959</td><td class="rp-num">5</td><td class="rp-num">9</td><td class="rp-num">58,1</td><td><span class="rp-fld">JO×1623</span><span class="rp-fld">JN×675</span></td></tr><tr><td>🇵🇱<!-- --> <!-- -->Poland</td><td class="rp-num">1&nbsp;061</td><td class="rp-num">6,1</td><td class="rp-num">510</td><td class="rp-num">51&nbsp;263</td><td class="rp-num">0,906</td><td class="rp-num">35</td><td class="rp-num">40</td><td class="rp-num">37,0</td><td><span class="rp-fld">JO×733</span><span class="rp-fld">KO×253</span></td></tr><tr><td>🇮🇹<!-- --> <!-- -->Italy</td><td class="rp-num">1&nbsp;012</td><td class="rp-num">5,82</td><td class="rp-num">604</td><td class="rp-num">62&nbsp;293</td><td class="rp-num">0,915</td><td class="rp-num">29</td><td class="rp-num">26</td><td class="rp-num">45,3</td><td><span class="rp-fld">JN×899</span><span class="rp-fld">JM×87</span></td></tr><tr><td>🇬🇧<!-- --> <!-- -->United Kingdom</td><td class="rp-num">915</td><td class="rp-num">5,26</td><td class="rp-num">567</td><td class="rp-num">62&nbsp;839</td><td class="rp-num">0,946</td><td class="rp-num">13</td><td class="rp-num">5</td><td class="rp-num">61,0</td><td><span class="rp-fld">IO×758</span><span class="rp-fld">JO×129</span></td></tr><tr><td>🇺🇸<!-- --> <!-- -->United States</td><td class="rp-num">841</td><td class="rp-num">4,84</td><td class="rp-num">674</td><td class="rp-num">86&nbsp;170</td><td class="rp-num">0,938</td><td class="rp-num">17</td><td class="rp-num">3</td><td class="rp-num">62,4</td><td><span class="rp-fld">FN×201</span><span class="rp-fld">EM×178</span></td></tr><tr><td>🇯🇵<!-- --> <!-- -->Japan</td><td class="rp-num">827</td><td class="rp-num">4,76</td><td class="rp-num">495</td><td class="rp-num">54&nbsp;156</td><td class="rp-num">0,925</td><td class="rp-num">23</td><td class="rp-num">13</td><td class="rp-num">54,1</td><td><span class="rp-fld">PM×666</span><span class="rp-fld">QM×111</span></td></tr><tr><td>🇫🇷<!-- --> <!-- -->France</td><td class="rp-num">799</td><td class="rp-num">4,6</td><td class="rp-num">358</td><td class="rp-num">62&nbsp;525</td><td class="rp-num">0,920</td><td class="rp-num">26</td><td class="rp-num">12</td><td class="rp-num">55,4</td><td><span class="rp-fld">JN×559</span><span class="rp-fld">IN×157</span></td></tr><tr><td>🇪🇸<!-- --> <!-- -->Spain</td><td class="rp-num">761</td><td class="rp-num">4,38</td><td class="rp-num">424</td><td class="rp-num">58&nbsp;064</td><td class="rp-num">0,918</td><td class="rp-num">28</td><td class="rp-num">28</td><td class="rp-num">44,9</td><td><span class="rp-fld">IM×263</span><span class="rp-fld">JN×231</span></td></tr><tr><td>🇳🇱<!-- --> <!-- -->Netherlands</td><td class="rp-num">703</td><td class="rp-num">4,04</td><td class="rp-num">385</td><td class="rp-num">85&nbsp;218</td><td class="rp-num">0,955</td><td class="rp-num">8</td><td class="rp-num">8</td><td class="rp-num">58,8</td><td><span class="rp-fld">JO×695</span><span class="rp-fld">JA×1</span></td></tr><tr><td>🇬🇷<!-- --> <!-- -->Greece</td><td class="rp-num">414</td><td class="rp-num">2,38</td><td class="rp-num">87</td><td class="rp-num">44&nbsp;171</td><td class="rp-num">0,908</td><td class="rp-num">34</td><td class="rp-num">45</td><td class="rp-num">36,2</td><td><span class="rp-fld">KM×356</span><span class="rp-fld">KN×55</span></td></tr><tr><td>🇧🇪<!-- --> <!-- -->Belgium</td><td class="rp-num">335</td><td class="rp-num">1,93</td><td class="rp-num">175</td><td class="rp-num">74&nbsp;225</td><td class="rp-num">0,951</td><td class="rp-num">10</td><td class="rp-num">24</td><td class="rp-num">47,7</td><td><span class="rp-fld">JO×321</span><span class="rp-fld">JN×5</span></td></tr><tr><td>🇷🇴<!-- --> <!-- -->Romania</td><td class="rp-num">300</td><td class="rp-num">1,73</td><td class="rp-num">131</td><td class="rp-num">49&nbsp;077</td><td class="rp-num">0,845</td><td class="rp-num">55</td><td class="rp-num">48</td><td class="rp-num">33,4</td><td><span class="rp-fld">KN×293</span><span class="rp-fld">AA×1</span></td></tr><tr><td>🇨🇿<!-- --> <!-- -->Czechia</td><td class="rp-num">288</td><td class="rp-num">1,66</td><td class="rp-num">147</td><td class="rp-num">57&nbsp;625</td><td class="rp-num">0,915</td><td class="rp-num">29</td><td class="rp-num">30</td><td class="rp-num">44,0</td><td><span class="rp-fld">JN×199</span><span class="rp-fld">JO×77</span></td></tr><tr><td>🇫🇮<!-- --> <!-- -->Finland</td><td class="rp-num">261</td><td class="rp-num">1,5</td><td class="rp-num">141</td><td class="rp-num">65&nbsp;137</td><td class="rp-num">0,948</td><td class="rp-num">12</td><td class="rp-num">7</td><td class="rp-num">59,4</td><td><span class="rp-fld">KP×251</span><span class="rp-fld">JJ×3</span></td></tr><tr><td>🇭🇺<!-- --> <!-- -->Hungary</td><td class="rp-num">232</td><td class="rp-num">1,33</td><td class="rp-num">120</td><td class="rp-num">48&nbsp;540</td><td class="rp-num">0,870</td><td class="rp-num">46</td><td class="rp-num">36</td><td class="rp-num">39,6</td><td><span class="rp-fld">JN×174</span><span class="rp-fld">KN×45</span></td></tr><tr><td>🇦🇹<!-- --> <!-- -->Austria</td><td class="rp-num">228</td><td class="rp-num">1,31</td><td class="rp-num">115</td><td class="rp-num">75&nbsp;774</td><td class="rp-num">0,930</td><td class="rp-num">22</td><td class="rp-num">17</td><td class="rp-num">50,3</td><td><span class="rp-fld">JN×225</span></td></tr><tr><td>🇸🇪<!-- --> <!-- -->Sweden</td><td class="rp-num">219</td><td class="rp-num">1,26</td><td class="rp-num">128</td><td class="rp-num">71&nbsp;222</td><td class="rp-num">0,959</td><td class="rp-num">5</td><td class="rp-num">2</td><td class="rp-num">64,5</td><td><span class="rp-fld">JO×156</span><span class="rp-fld">JP×36</span></td></tr><tr><td>🇨🇳<!-- --> <!-- -->China</td><td class="rp-num">178</td><td class="rp-num">1,02</td><td class="rp-num">109</td><td class="rp-num">27&nbsp;140</td><td class="rp-num">0,797</td><td class="rp-num">78</td><td class="rp-num">11</td><td class="rp-num">56,3</td><td><span class="rp-fld">OM×61</span><span class="rp-fld">PM×46</span></td></tr><tr><td>🇭🇷<!-- --> <!-- -->Croatia</td><td class="rp-num">157</td><td class="rp-num">0,9</td><td class="rp-num">77</td><td class="rp-num">49&nbsp;551</td><td class="rp-num">0,889</td><td class="rp-num">41</td><td class="rp-num">43</td><td class="rp-num">36,3</td><td><span class="rp-fld">JN×153</span></td></tr><tr><td>🇱🇹<!-- --> <!-- -->Lithuania</td><td class="rp-num">142</td><td class="rp-num">0,82</td><td class="rp-num">58</td><td class="rp-num">55&nbsp;699</td><td class="rp-num">0,895</td><td class="rp-num">39</td><td class="rp-num">35</td><td class="rp-num">40,1</td><td><span class="rp-fld">KO×141</span><span class="rp-fld">AA×1</span></td></tr><tr><td>🇨🇭<!-- --> <!-- -->Switzerland</td><td class="rp-num">128</td><td class="rp-num">0,74</td><td class="rp-num">90</td><td class="rp-num">97&nbsp;468</td><td class="rp-num">0,970</td><td class="rp-num">2</td><td class="rp-num">1</td><td class="rp-num">67,5</td><td><span class="rp-fld">JN×122</span></td></tr><tr><td>🇸🇮<!-- --> <!-- -->Slovenia</td><td class="rp-num">118</td><td class="rp-num">0,68</td><td class="rp-num">65</td><td class="rp-num">57&nbsp;571</td><td class="rp-num">0,931</td><td class="rp-num">21</td><td class="rp-num">34</td><td class="rp-num">40,2</td><td><span class="rp-fld">JN×115</span></td></tr><tr><td>🇱🇻<!-- --> <!-- -->Latvia</td><td class="rp-num">116</td><td class="rp-num">0,67</td><td class="rp-num">40</td><td class="rp-num">43&nbsp;873</td><td class="rp-num">0,889</td><td class="rp-num">41</td><td class="rp-num">42</td><td class="rp-num">36,4</td><td><span class="rp-fld">KO×115</span></td></tr><tr><td>🇩🇰<!-- --> <!-- -->Denmark</td><td class="rp-num">116</td><td class="rp-num">0,67</td><td class="rp-num">68</td><td class="rp-num">80&nbsp;938</td><td class="rp-num">0,962</td><td class="rp-num">4</td><td class="rp-num">10</td><td class="rp-num">57,1</td><td><span class="rp-fld">JO×108</span><span class="rp-fld">IP×4</span></td></tr><tr><td>🇵🇹<!-- --> <!-- -->Portugal</td><td class="rp-num">115</td><td class="rp-num">0,66</td><td class="rp-num">50</td><td class="rp-num">52&nbsp;513</td><td class="rp-num">0,890</td><td class="rp-num">40</td><td class="rp-num">31</td><td class="rp-num">43,7</td><td><span class="rp-fld">IM×87</span><span class="rp-fld">HM×14</span></td></tr><tr><td>🇳🇴<!-- --> <!-- -->Norway</td><td class="rp-num">92</td><td class="rp-num">0,53</td><td class="rp-num">61</td><td class="rp-num">105&nbsp;657</td><td class="rp-num">0,970</td><td class="rp-num">2</td><td class="rp-num">21</td><td class="rp-num">49,1</td><td><span class="rp-fld">JO×52</span><span class="rp-fld">JP×37</span></td></tr><tr><td>🇧🇬<!-- --> <!-- -->Bulgaria</td><td class="rp-num">91</td><td class="rp-num">0,52</td><td class="rp-num">49</td><td class="rp-num">41&nbsp;970</td><td class="rp-num">0,845</td><td class="rp-num">55</td><td class="rp-num">38</td><td class="rp-num">38,5</td><td><span class="rp-fld">KN×89</span></td></tr><tr><td>🇸🇰<!-- --> <!-- -->Slovakia</td><td class="rp-num">91</td><td class="rp-num">0,52</td><td class="rp-num">49</td><td class="rp-num">47&nbsp;847</td><td class="rp-num">0,880</td><td class="rp-num">44</td><td class="rp-num">46</td><td class="rp-num">34,3</td><td><span class="rp-fld">JN×63</span><span class="rp-fld">KN×24</span></td></tr><tr><td>🇹🇷<!-- --> <!-- -->Türkiye</td><td class="rp-num">90</td><td class="rp-num">0,52</td><td class="rp-num">40</td><td class="rp-num">45&nbsp;123</td><td class="rp-num">0,853</td><td class="rp-num">51</td><td class="rp-num">37</td><td class="rp-num">39,0</td><td><span class="rp-fld">KM×49</span><span class="rp-fld">KN×37</span></td></tr><tr><td>🇨🇦<!-- --> <!-- -->Canada</td><td class="rp-num">77</td><td class="rp-num">0,44</td><td class="rp-num">60</td><td class="rp-num">65&nbsp;483</td><td class="rp-num">0,939</td><td class="rp-num">16</td><td class="rp-num">14</td><td class="rp-num">52,9</td><td><span class="rp-fld">FN×52</span><span class="rp-fld">EN×11</span></td></tr><tr><td>🇮🇩<!-- --> <!-- -->Indonesia</td><td class="rp-num">76</td><td class="rp-num">0,44</td><td class="rp-num">49</td><td class="rp-num">16&nbsp;472</td><td class="rp-num">0,728</td><td class="rp-num">113</td><td class="rp-num">54</td><td class="rp-num">30,6</td><td><span class="rp-fld">OI×67</span><span class="rp-fld">OJ×6</span></td></tr><tr><td>🇷🇸<!-- --> <!-- -->Serbia</td><td class="rp-num">74</td><td class="rp-num">0,43</td><td class="rp-num">45</td><td class="rp-num">32&nbsp;832</td><td class="rp-num">0,833</td><td class="rp-num">62</td><td class="rp-num">52</td><td class="rp-num">32,3</td><td><span class="rp-fld">KN×61</span><span class="rp-fld">JN×12</span></td></tr><tr><td>🇧🇷<!-- --> <!-- -->Brazil</td><td class="rp-num">68</td><td class="rp-num">0,39</td><td class="rp-num">55</td><td class="rp-num">22&nbsp;371</td><td class="rp-num">0,786</td><td class="rp-num">84</td><td class="rp-num">50</td><td class="rp-num">32,7</td><td><span class="rp-fld">GG×42</span><span class="rp-fld">GH×11</span></td></tr><tr><td>🇮🇱<!-- --> <!-- -->Israel</td><td class="rp-num">65</td><td class="rp-num">0,37</td><td class="rp-num">23</td><td class="rp-num">57&nbsp;278</td><td class="rp-num">0,919</td><td class="rp-num">27</td><td class="rp-num">15</td><td class="rp-num">52,7</td><td><span class="rp-fld">KM×65</span></td></tr><tr><td>🇲🇩<!-- --> <!-- -->Moldova</td><td class="rp-num">64</td><td class="rp-num">0,37</td><td class="rp-num">14</td><td class="rp-num">18&nbsp;662</td><td class="rp-num">0,785</td><td class="rp-num">86</td><td class="rp-num">68</td><td class="rp-num">28,7</td><td><span class="rp-fld">KN×61</span></td></tr><tr><td>🇧🇦<!-- --> <!-- -->Bosnia and Herzegovina</td><td class="rp-num">49</td><td class="rp-num">0,28</td><td class="rp-num">27</td><td class="rp-num">25&nbsp;148</td><td class="rp-num">0,804</td><td class="rp-num">74</td><td class="rp-num">80</td><td class="rp-num">25,5</td><td><span class="rp-fld">JN×47</span></td></tr><tr><td>🇪🇪<!-- --> <!-- -->Estonia</td><td class="rp-num">44</td><td class="rp-num">0,25</td><td class="rp-num">21</td><td class="rp-num">50&nbsp;396</td><td class="rp-num">0,905</td><td class="rp-num">36</td><td class="rp-num">16</td><td class="rp-num">52,3</td><td><span class="rp-fld">KO×44</span></td></tr><tr><td>🇰🇿<!-- --> <!-- -->Kazakhstan</td><td class="rp-num">42</td><td class="rp-num">0,24</td><td class="rp-num">28</td><td class="rp-num">40&nbsp;950</td><td class="rp-num">0,837</td><td class="rp-num">60</td><td class="rp-num">78</td><td class="rp-num">25,7</td><td><span class="rp-fld">MN×15</span><span class="rp-fld">MO×14</span></td></tr><tr><td>🇮🇪<!-- --> <!-- -->Ireland</td><td class="rp-num">37</td><td class="rp-num">0,21</td><td class="rp-num">26</td><td class="rp-num">140&nbsp;779</td><td class="rp-num">0,949</td><td class="rp-num">11</td><td class="rp-num">19</td><td class="rp-num">50,0</td><td><span class="rp-fld">IO×35</span></td></tr><tr><td>🇮🇳<!-- --> <!-- -->India</td><td class="rp-num">28</td><td class="rp-num">0,16</td><td class="rp-num">12</td><td class="rp-num">10&nbsp;719</td><td class="rp-num">0,685</td><td class="rp-num">130</td><td class="rp-num">39</td><td class="rp-num">38,3</td><td><span class="rp-fld">ML×7</span><span class="rp-fld">MK×6</span></td></tr><tr><td>🇰🇷<!-- --> <!-- -->South Korea</td><td class="rp-num">27</td><td class="rp-num">0,16</td><td class="rp-num">22</td><td class="rp-num">61&nbsp;051</td><td class="rp-num">0,937</td><td class="rp-num">20</td><td class="rp-num">6</td><td class="rp-num">60,9</td><td><span class="rp-fld">PM×27</span></td></tr><tr><td>🇦🇷<!-- --> <!-- -->Argentina</td><td class="rp-num">25</td><td class="rp-num">0,14</td><td class="rp-num">21</td><td class="rp-num">30&nbsp;475</td><td class="rp-num">0,865</td><td class="rp-num">47</td><td class="rp-num">76</td><td class="rp-num">26,4</td><td><span class="rp-fld">GF×11</span><span class="rp-fld">FF×10</span></td></tr><tr><td>🇦🇺<!-- --> <!-- -->Australia</td><td class="rp-num">19</td><td class="rp-num">0,11</td><td class="rp-num">17</td><td class="rp-num">72&nbsp;118</td><td class="rp-num">0,958</td><td class="rp-num">7</td><td class="rp-num">23</td><td class="rp-num">48,1</td><td><span class="rp-fld">QF×10</span><span class="rp-fld">QG×4</span></td></tr><tr><td>🇱🇧<!-- --> <!-- -->Lebanon</td><td class="rp-num">17</td><td class="rp-num">0,1</td><td class="rp-num">7</td><td class="rp-num">11&nbsp;917</td><td class="rp-num">0,752</td><td class="rp-num">102</td><td class="rp-num">94</td><td class="rp-num">21,5</td><td><span class="rp-fld">KM×17</span></td></tr><tr><td>🇱🇺<!-- --> <!-- -->Luxembourg</td><td class="rp-num">16</td><td class="rp-num">0,09</td><td class="rp-num">11</td><td class="rp-num">156&nbsp;079</td><td class="rp-num">0,922</td><td class="rp-num">25</td><td class="rp-num">20</td><td class="rp-num">49,1</td><td><span class="rp-fld">JN×14</span><span class="rp-fld">JO×1</span></td></tr><tr><td>🇺🇾<!-- --> <!-- -->Uruguay</td><td class="rp-num">12</td><td class="rp-num">0,07</td><td class="rp-num">9</td><td class="rp-num">36&nbsp;597</td><td class="rp-num">0,862</td><td class="rp-num">48</td><td class="rp-num">62</td><td class="rp-num">29,1</td><td><span class="rp-fld">GF×12</span></td></tr><tr><td>🇸🇦<!-- --> <!-- -->Saudi Arabia</td><td class="rp-num">12</td><td class="rp-num">0,07</td><td class="rp-num">6</td><td class="rp-num">71&nbsp;936</td><td class="rp-num">0,900</td><td class="rp-num">37</td><td class="rp-num">47</td><td class="rp-num">33,9</td><td><span class="rp-fld">LL×10</span><span class="rp-fld">KL×2</span></td></tr><tr><td>🇰🇪<!-- --> <!-- -->Kenya</td><td class="rp-num">11</td><td class="rp-num">0,06</td><td class="rp-num">1</td><td class="rp-num">6&nbsp;650</td><td class="rp-num">0,628</td><td class="rp-num">143</td><td class="rp-num">96</td><td class="rp-num">21,0</td><td><span class="rp-fld">KI×11</span></td></tr><tr><td>🇨🇱<!-- --> <!-- -->Chile</td><td class="rp-num">10</td><td class="rp-num">0,06</td><td class="rp-num">7</td><td class="rp-num">36&nbsp;071</td><td class="rp-num">0,878</td><td class="rp-num">45</td><td class="rp-num">51</td><td class="rp-num">32,6</td><td><span class="rp-fld">FF×6</span><span class="rp-fld">FD×2</span></td></tr><tr><td>🇲🇪<!-- --> <!-- -->Montenegro</td><td class="rp-num">9</td><td class="rp-num">0,05</td><td class="rp-num">4</td><td class="rp-num">34&nbsp;063</td><td class="rp-num">0,862</td><td class="rp-num">48</td><td class="rp-num">65</td><td class="rp-num">28,9</td><td><span class="rp-fld">JN×8</span></td></tr><tr><td>🇺🇿<!-- --> <!-- -->Uzbekistan</td><td class="rp-num">9</td><td class="rp-num">0,05</td><td class="rp-num">2</td><td class="rp-num">12&nbsp;518</td><td class="rp-num">0,740</td><td class="rp-num">107</td><td class="rp-num">83</td><td class="rp-num">24,7</td><td><span class="rp-fld">MN×9</span></td></tr><tr><td>🇲🇰<!-- --> <!-- -->North Macedonia</td><td class="rp-num">9</td><td class="rp-num">0,05</td><td class="rp-num">9</td><td class="rp-num">26&nbsp;996</td><td class="rp-num">0,815</td><td class="rp-num">68</td><td class="rp-num">58</td><td class="rp-num">29,9</td><td><span class="rp-fld">KN×9</span></td></tr><tr><td>🇩🇴<!-- --> <!-- -->Dominican Republic</td><td class="rp-num">9</td><td class="rp-num">0,05</td><td class="rp-num">7</td><td class="rp-num">27&nbsp;582</td><td class="rp-num">0,776</td><td class="rp-num">89</td><td class="rp-num">97</td><td class="rp-num">20,8</td><td><span class="rp-fld">FK×9</span></td></tr><tr><td>🇳🇿<!-- --> <!-- -->New Zealand</td><td class="rp-num">9</td><td class="rp-num">0,05</td><td class="rp-num">9</td><td class="rp-num">55&nbsp;794</td><td class="rp-num">0,938</td><td class="rp-num">17</td><td class="rp-num">25</td><td class="rp-num">45,9</td><td><span class="rp-fld">RE×7</span><span class="rp-fld">RF×2</span></td></tr><tr><td>🇨🇾<!-- --> <!-- -->Cyprus</td><td class="rp-num">9</td><td class="rp-num">0,05</td><td class="rp-num">5</td><td class="rp-num">63&nbsp;007</td><td class="rp-num">0,913</td><td class="rp-num">32</td><td class="rp-num">27</td><td class="rp-num">45,1</td><td><span class="rp-fld">KM×9</span></td></tr><tr><td>🇮🇸<!-- --> <!-- -->Iceland</td><td class="rp-num">8</td><td class="rp-num">0,05</td><td class="rp-num">6</td><td class="rp-num">83&nbsp;561</td><td class="rp-num">0,972</td><td class="rp-num">1</td><td class="rp-num">22</td><td class="rp-num">48,5</td><td><span class="rp-fld">HP×7</span></td></tr><tr><td>🇧🇾<!-- --> <!-- -->Belarus</td><td class="rp-num">8</td><td class="rp-num">0,05</td><td class="rp-num">7</td><td class="rp-num">33&nbsp;166</td><td class="rp-num">0,824</td><td class="rp-num">65</td><td class="rp-num">85</td><td class="rp-num">24,2</td><td><span class="rp-fld">KO×7</span></td></tr><tr><td>🇨🇴<!-- --> <!-- -->Colombia</td><td class="rp-num">8</td><td class="rp-num">0,05</td><td class="rp-num">8</td><td class="rp-num">22&nbsp;439</td><td class="rp-num">0,788</td><td class="rp-num">83</td><td class="rp-num">61</td><td class="rp-num">29,2</td><td><span class="rp-fld">FJ×8</span></td></tr><tr><td>🇲🇹<!-- --> <!-- -->Malta</td><td class="rp-num">7</td><td class="rp-num">0,04</td><td class="rp-num">6</td><td class="rp-num">70&nbsp;063</td><td class="rp-num">0,924</td><td class="rp-num">24</td><td class="rp-num">29</td><td class="rp-num">44,8</td><td><span class="rp-fld">JM×7</span></td></tr><tr><td>🇿🇦<!-- --> <!-- -->South Africa</td><td class="rp-num">7</td><td class="rp-num">0,04</td><td class="rp-num">5</td><td class="rp-num">15&nbsp;479</td><td class="rp-num">0,741</td><td class="rp-num">106</td><td class="rp-num">69</td><td class="rp-num">28,3</td><td><span class="rp-fld">KG×5</span><span class="rp-fld">KF×1</span></td></tr><tr><td>🇭🇰<!-- --> <!-- -->Hong Kong</td><td class="rp-num">6</td><td class="rp-num">0,03</td><td class="rp-num">2</td><td class="rp-num">75&nbsp;342</td><td class="rp-num">0,955</td><td class="rp-num">8</td><td class="rp-num">18</td><td class="rp-num">50,1</td><td><span class="rp-fld">OL×6</span></td></tr><tr><td>🇵🇪<!-- --> <!-- -->Peru</td><td class="rp-num">6</td><td class="rp-num">0,03</td><td class="rp-num">5</td><td class="rp-num">17&nbsp;882</td><td class="rp-num">0,794</td><td class="rp-num">79</td><td class="rp-num">75</td><td class="rp-num">26,7</td><td><span class="rp-fld">FH×4</span></td></tr><tr><td>🇬🇪<!-- --> <!-- -->Georgia</td><td class="rp-num">6</td><td class="rp-num">0,03</td><td class="rp-num">5</td><td class="rp-num">27&nbsp;487</td><td class="rp-num">0,844</td><td class="rp-num">57</td><td class="rp-num">57</td><td class="rp-num">30,4</td><td><span class="rp-fld">LN×6</span></td></tr><tr><td>🇰🇬<!-- --> <!-- -->Kyrgyzstan</td><td class="rp-num">6</td><td class="rp-num">0,03</td><td class="rp-num">3</td><td class="rp-num">8&nbsp;208</td><td class="rp-num">0,720</td><td class="rp-num">117</td><td class="rp-num">99</td><td class="rp-num">20,4</td><td><span class="rp-fld">MN×6</span></td></tr><tr><td>🇲🇨<!-- --> <!-- -->Monaco</td><td class="rp-num">5</td><td class="rp-num">0,03</td><td class="rp-num">1</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">JN×5</span></td></tr><tr><td>🇹🇯<!-- --> <!-- -->Tajikistan</td><td class="rp-num">5</td><td class="rp-num">0,03</td><td class="rp-num">3</td><td class="rp-num">5&nbsp;414</td><td class="rp-num">0,691</td><td class="rp-num">128</td><td class="rp-num">107</td><td class="rp-num">18,6</td><td><span class="rp-fld">MM×4</span><span class="rp-fld">MN×1</span></td></tr><tr><td>🇴🇲<!-- --> <!-- -->Oman</td><td class="rp-num">4</td><td class="rp-num">0,02</td><td class="rp-num">3</td><td class="rp-num">41&nbsp;801</td><td class="rp-num">0,858</td><td class="rp-num">50</td><td class="rp-num">74</td><td class="rp-num">27,1</td><td><span class="rp-fld">LL×3</span></td></tr><tr><td>🇧🇭<!-- --> <!-- -->Bahrain</td><td class="rp-num">4</td><td class="rp-num">0,02</td><td class="rp-num">1</td><td class="rp-num">67&nbsp;230</td><td class="rp-num">0,899</td><td class="rp-num">38</td><td class="rp-num">72</td><td class="rp-num">27,6</td><td><span class="rp-fld">LL×4</span></td></tr><tr><td>🇶🇦<!-- --> <!-- -->Qatar</td><td class="rp-num">4</td><td class="rp-num">0,02</td><td class="rp-num">3</td><td class="rp-num">126&nbsp;713</td><td class="rp-num">0,886</td><td class="rp-num">43</td><td class="rp-num">49</td><td class="rp-num">32,9</td><td><span class="rp-fld">LL×4</span></td></tr><tr><td>🇦🇩<!-- --> <!-- -->Andorra</td><td class="rp-num">3</td><td class="rp-num">0,02</td><td class="rp-num">2</td><td class="rp-num">75&nbsp;395</td><td class="rp-num">0,913</td><td class="rp-num">32</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">JN×3</span></td></tr><tr><td>🇰🇼<!-- --> <!-- -->Kuwait</td><td class="rp-num">3</td><td class="rp-num">0,02</td><td class="rp-num">2</td><td class="rp-num">53&nbsp;119</td><td class="rp-num">0,852</td><td class="rp-num">52</td><td class="rp-num">71</td><td class="rp-num">28,1</td><td><span class="rp-fld">LL×3</span></td></tr><tr><td>🇨🇷<!-- --> <!-- -->Costa Rica</td><td class="rp-num">3</td><td class="rp-num">0,02</td><td class="rp-num">2</td><td class="rp-num">31&nbsp;552</td><td class="rp-num">0,833</td><td class="rp-num">62</td><td class="rp-num">70</td><td class="rp-num">28,3</td><td><span class="rp-fld">EK×2</span><span class="rp-fld">EJ×1</span></td></tr><tr><td>🇻🇪<!-- --> <!-- -->Venezuela</td><td class="rp-num">3</td><td class="rp-num">0,02</td><td class="rp-num">3</td><td class="rp-num">—</td><td class="rp-num">0,709</td><td class="rp-num">121</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">FK×3</span></td></tr><tr><td>🇹🇭<!-- --> <!-- -->Thailand</td><td class="rp-num">3</td><td class="rp-num">0,02</td><td class="rp-num">3</td><td class="rp-num">24&nbsp;909</td><td class="rp-num">0,798</td><td class="rp-num">76</td><td class="rp-num">41</td><td class="rp-num">36,9</td><td><span class="rp-fld">OK×3</span></td></tr><tr><td>🇦🇴<!-- --> <!-- -->Angola</td><td class="rp-num">3</td><td class="rp-num">0,02</td><td class="rp-num">2</td><td class="rp-num">9&nbsp;964</td><td class="rp-num">0,616</td><td class="rp-num">148</td><td class="rp-num">133</td><td class="rp-num">10,2</td><td><span class="rp-fld">JI×3</span></td></tr><tr><td>🇿🇲<!-- --> <!-- -->Zambia</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">4&nbsp;221</td><td class="rp-num">0,595</td><td class="rp-num">154</td><td class="rp-num">116</td><td class="rp-num">15,7</td><td><span class="rp-fld">KH×2</span></td></tr><tr><td>🇧🇿<!-- --> <!-- -->Belize</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">2</td><td class="rp-num">14&nbsp;367</td><td class="rp-num">0,721</td><td class="rp-num">115</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">EK×2</span></td></tr><tr><td>🇲🇾<!-- --> <!-- -->Malaysia</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">38&nbsp;836</td><td class="rp-num">0,819</td><td class="rp-num">67</td><td class="rp-num">33</td><td class="rp-num">40,5</td><td><span class="rp-fld">OJ×2</span></td></tr><tr><td>🇹🇳<!-- --> <!-- -->Tunisia</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">14&nbsp;542</td><td class="rp-num">0,746</td><td class="rp-num">105</td><td class="rp-num">81</td><td class="rp-num">25,4</td><td><span class="rp-fld">JM×2</span></td></tr><tr><td>🇨🇺<!-- --> <!-- -->Cuba</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">2</td><td class="rp-num">—</td><td class="rp-num">0,762</td><td class="rp-num">97</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">EL×1</span></td></tr><tr><td>🇲🇺<!-- --> <!-- -->Mauritius</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">2</td><td class="rp-num">31&nbsp;697</td><td class="rp-num">0,806</td><td class="rp-num">73</td><td class="rp-num">55</td><td class="rp-num">30,6</td><td><span class="rp-fld">MH×1</span><span class="rp-fld">LG×1</span></td></tr><tr><td>🇦🇪<!-- --> <!-- -->United Arab Emirates</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">2</td><td class="rp-num">79&nbsp;344</td><td class="rp-num">0,940</td><td class="rp-num">15</td><td class="rp-num">32</td><td class="rp-num">42,8</td><td><span class="rp-fld">LL×2</span></td></tr><tr><td>🇳🇬<!-- --> <!-- -->Nigeria</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">9&nbsp;100</td><td class="rp-num">0,560</td><td class="rp-num">164</td><td class="rp-num">113</td><td class="rp-num">17,1</td><td><span class="rp-fld">JJ×2</span></td></tr><tr><td>🇹🇹<!-- --> <!-- -->Trinidad and Tobago</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">36&nbsp;381</td><td class="rp-num">0,807</td><td class="rp-num">72</td><td class="rp-num">108</td><td class="rp-num">18,4</td><td><span class="rp-fld">FK×2</span></td></tr><tr><td>🇨🇬<!-- --> <!-- -->Congo</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">7&nbsp;004</td><td class="rp-num">0,649</td><td class="rp-num">138</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">JI×2</span></td></tr><tr><td>🇲🇳<!-- --> <!-- -->Mongolia</td><td class="rp-num">2</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">19&nbsp;173</td><td class="rp-num">0,747</td><td class="rp-num">104</td><td class="rp-num">67</td><td class="rp-num">28,7</td><td><span class="rp-fld">ON×2</span></td></tr><tr><td>🇻🇳<!-- --> <!-- -->Vietnam</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">16&nbsp;388</td><td class="rp-num">0,766</td><td class="rp-num">93</td><td class="rp-num">44</td><td class="rp-num">36,2</td><td><span class="rp-fld">OK×1</span></td></tr><tr><td>🇹🇩<!-- --> <!-- -->Chad</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">2&nbsp;767</td><td class="rp-num">0,416</td><td class="rp-num">190</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">JK×1</span></td></tr><tr><td>🇪🇨<!-- --> <!-- -->Ecuador</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">15&nbsp;848</td><td class="rp-num">0,777</td><td class="rp-num">88</td><td class="rp-num">105</td><td class="rp-num">19,3</td><td><span class="rp-fld">FI×1</span></td></tr><tr><td>🇦🇲<!-- --> <!-- -->Armenia</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">22&nbsp;856</td><td class="rp-num">0,811</td><td class="rp-num">69</td><td class="rp-num">63</td><td class="rp-num">29,0</td><td><span class="rp-fld">LN×1</span></td></tr><tr><td>🇹🇼<!-- --> <!-- -->Taiwan</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">PL×1</span></td></tr><tr><td>🇱🇦<!-- --> <!-- -->Laos</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">9&nbsp;790</td><td class="rp-num">0,617</td><td class="rp-num">147</td><td class="rp-num">111</td><td class="rp-num">17,8</td><td><span class="rp-fld">OK×1</span></td></tr><tr><td>🇯🇴<!-- --> <!-- -->Jordan</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">11&nbsp;916</td><td class="rp-num">0,754</td><td class="rp-num">100</td><td class="rp-num">73</td><td class="rp-num">27,5</td><td><span class="rp-fld">KM×1</span></td></tr><tr><td>🇨🇫<!-- --> <!-- -->Central African Republic</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">1&nbsp;265</td><td class="rp-num">0,414</td><td class="rp-num">191</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">JJ×1</span></td></tr><tr><td>🇲🇽<!-- --> <!-- -->Mexico</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">25&nbsp;820</td><td class="rp-num">0,789</td><td class="rp-num">81</td><td class="rp-num">56</td><td class="rp-num">30,4</td><td><span class="rp-fld">EK×1</span></td></tr><tr><td>🇦🇿<!-- --> <!-- -->Azerbaijan</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">25&nbsp;146</td><td class="rp-num">0,789</td><td class="rp-num">81</td><td class="rp-num">95</td><td class="rp-num">21,3</td><td>—</td></tr><tr><td> <!-- -->SM</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">JN×1</span></td></tr><tr><td> <!-- -->FJ</td><td class="rp-num">1</td><td class="rp-num">0,01</td><td class="rp-num">1</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td class="rp-num">—</td><td><span class="rp-fld">RH×1</span></td></tr></tbody></table></div></div><p>“—” means the source has no data (World Bank, UNDP, WIPO).</p></div></div></details>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="method-and-sources">Method and sources<a href="https://cyberdev.space/en/blog/award-35-analysis/#method-and-sources" class="hash-link" aria-label="Direct link to Method and sources" title="Direct link to Method and sources" translate="no">​</a></h2>
<ul>
<li class="">A contact's country is determined from the callsign: the longest match against the ITU prefix table, from three characters down to one. Callsigns with no match are set aside and assigned to no country.</li>
<li class="">Distances are the haversine between the centres of locator squares (Maidenhead, 4 characters): the activator's locator from their profile, the correspondent's from the log. Contacts without a locator are excluded from the calculation.</li>
<li class="">Daily solar (SFI at 10.7 cm, SSN) and geomagnetic (A, Kp) indices: NOAA Space Weather Prediction Center, daily tables.</li>
<li class="">GDP per capita, PPP (current international $): World Bank, 2024 (2023 for countries without 2024 data).</li>
<li class="">Human Development Index (HDI) and rank: UNDP, Human Development Report 2025 (2023 values).</li>
<li class="">Global Innovation Index (GII), rank and score: WIPO, GII 2024, 133 economies.</li>
<li class=""><code>MFSK</code> is not shown in the mode breakdown: it is not a mode people operate but the parent name of FT4 in ADIF. All 47 such contacts fall between 2 and 9 August and lie on 14,080–14,085 kHz, that is, in the FT4 segment. They are counted as they stand in the overall totals.</li>
<li class="">Correlations are Spearman rank correlations; countries without data are excluded from the relevant calculation.</li>
<li class="">Log data: 17,387 contacts of the “35th anniversary of Ukraine's independence” award, 1–31 August 2026.</li>
</ul>
<p>The award's own map and statistics are at
<a href="https://uahamaward.com/awards/019f95c0-1e60-7209-9248-c12a3911bbc1/stats" target="_blank" rel="noopener noreferrer" class="">uahamaward.com</a>.</p>]]></content:encoded>
            <category>radio</category>
            <category>analysis</category>
            <category>data</category>
            <category>propagation</category>
        </item>
    </channel>
</rss>