Last active
July 27, 2026 09:17
-
-
Save tonusoo/d1662ff5f08458cd0f58221f22e11296 to your computer and use it in GitHub Desktop.
RPKI ASPA objects for AS numbers registered in a country || discussion on CERT-EE channel
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python3 | |
| """RPKI ASPA objects for ASes registered in a country. | |
| Script finds all the AS numbers from RIR statistics files | |
| for a country in which the AS number holder is legally based. | |
| AS numbers are checked against the RPKI ASPA dataset and ASNs | |
| are categorized into two groups: ones with an ASPA object and | |
| ones without it. | |
| """ | |
| import sys | |
| import time | |
| import json | |
| import logging | |
| import datetime | |
| import requests | |
| import matplotlib.pyplot as plt | |
| TARGET_COUNTRY = "EE" | |
| RPKI_JSON_PATH = "/var/lib/rpki-client/json" | |
| GRAPH_FILE_PATH = "ee_aspa_objects_simplistic.png" | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| # level=logging.DEBUG, | |
| format="{asctime} - [{funcName}] - {levelname} - {message}", | |
| style="{", | |
| datefmt="%Y-%m-%d %H:%M:%S %z", | |
| handlers=[logging.StreamHandler(sys.stderr)], | |
| ) | |
| logging.getLogger("urllib3").setLevel(logging.WARNING) | |
| def get_as_numbers(target_country): | |
| """Fetch the AS numbers registered in the queried country.""" | |
| as_numbers = [] | |
| session = requests.Session() | |
| logging.info(f"Fetching registered ASNs for {target_country}...") | |
| try: | |
| # Country Resource List API endpoint returns Internet resources | |
| # from the RIR Statistics files. | |
| # API conveniently returns results from all the RIR Statistics | |
| # files. For example, this means that a query for FR(France) also | |
| # returns ASNs registered in France overseas territories like | |
| # Saint Barthelemy or Saint Martin under ARIN: | |
| # | |
| # martin@lab-svr:~$ curl -s 'https://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest' | \ | |
| # > awk -F '|' '$2 == "FR" && $3 == "asn"' | |
| # arin|FR|asn|886|1|20220607|assigned|dcd83ca27d875308f8e04a78c681fdaf | |
| # arin|FR|asn|887|1|20220607|assigned|dcd83ca27d875308f8e04a78c681fdaf | |
| # arin|FR|asn|21538|1|20120717|assigned|9e04751fb2c886118f0c6ce364ade121 | |
| # arin|FR|asn|29774|1|20240318|assigned|65d33fbe60bb683859f484a10f9c1906 | |
| # arin|FR|asn|33392|1|20041208|assigned|93762c53aecac441080d7523d57ceaf2 | |
| # arin|FR|asn|36511|1|20130419|assigned|e9f0b1dcd41273feef963585ab70ec6d | |
| # arin|FR|asn|394485|1|20150923|assigned|5a8043d76c523baa462a8b136a914853 | |
| # arin|FR|asn|396950|1|20180703|assigned|dcd83ca27d875308f8e04a78c681fdaf | |
| # martin@lab-svr:~$ | |
| resp = session.get( | |
| "https://stat.ripe.net/data/country-resource-list/data.json?" | |
| f"resource={target_country}", | |
| timeout=20, | |
| ) | |
| resp.raise_for_status() | |
| data = resp.json().get("data", {}) | |
| resources = data.get("resources", {}) | |
| as_numbers_str = resources.get("asn", []) | |
| as_numbers = [int(asn) for asn in as_numbers_str] | |
| except (requests.exceptions.RequestException, ValueError) as err: | |
| logging.error(f"Failed to fetch ASNs for {target_country}: {err!r}") | |
| return as_numbers | |
| def get_as_names(asns): | |
| """Fetch the descriptive name of the AS number holder.""" | |
| asn_names = {} | |
| session = requests.Session() | |
| logging.info(f"Fetching names for {len(asns)} unique ASNs...") | |
| for asn in asns: | |
| holder = None | |
| try: | |
| resp = session.get( | |
| "https://stat.ripe.net/data/as-overview/data.json?" | |
| f"resource=AS{asn}", | |
| timeout=20, | |
| ) | |
| resp.raise_for_status() | |
| data = resp.json().get("data", {}) | |
| holder = data.get("holder") | |
| # Occasionally the "AS Overview" API returns an empty name | |
| # for the ASN. Fallback to whois database. | |
| if not holder: | |
| resp = session.get( | |
| "https://stat.ripe.net/data/whois/data.json?" | |
| f"resource=AS{asn}", | |
| timeout=20, | |
| ) | |
| resp.raise_for_status() | |
| data = resp.json().get("data", {}).get("records", []) | |
| for record in data: | |
| for item in record: | |
| if isinstance(item, dict): | |
| key = item.get("key", "").lower() | |
| # While for example RIPE and APNIC use | |
| # "as-name" attribute, then the ARIN | |
| # registry uses "ASName". | |
| if key in ("as-name", "asname"): | |
| holder = item.get("value") | |
| if not holder: | |
| holder = "Unknown AS name" | |
| except requests.exceptions.RequestException as err: | |
| logging.warning(f"Failed to fetch AS name for AS{asn}: {err!r}") | |
| holder = "Unknown AS name" | |
| asn_names[asn] = holder | |
| time.sleep(0.2) | |
| return asn_names | |
| def get_aspas(rpki_json_path): | |
| """Load ASPAs from rpki-client JSON output into a dictionary.""" | |
| logging.info(f'Loading RPKI ASPAs from "{rpki_json_path}"...') | |
| aspa_dict = {} | |
| with open(rpki_json_path, "r", encoding="utf-8") as f: | |
| rpki_data = json.load(f) | |
| for aspa in rpki_data.get("aspas", []): | |
| try: | |
| aspa_dict[aspa["customer_asid"]] = aspa["providers"] | |
| except KeyError: | |
| continue | |
| logging.info(f"Loaded {len(aspa_dict)} validated ASPA payloads") | |
| return aspa_dict | |
| def generate_graph(stats, target_country, graph_file_path): | |
| """Plot the results to donut chart.""" | |
| labels = [ | |
| "ASPA object exists", | |
| "ASPA object missing", | |
| ] | |
| sizes = [ | |
| stats.get("aspa_obj_exists"), | |
| stats.get("aspa_obj_missing"), | |
| ] | |
| if sum(sizes) == 0: | |
| logging.warning( | |
| f"Skipping graph generation for {target_country}. " | |
| "No ASPA objects were found." | |
| ) | |
| return | |
| total_asns = sum(sizes) | |
| # Green, gray. | |
| colors = ["#228B22", "#808080"] | |
| filtered_sizes = [size for size in sizes if size > 0] | |
| filtered_colors = [color for size, color in zip(sizes, colors) if size > 0] | |
| filtered_labels = [label for size, label in zip(sizes, labels) if size > 0] | |
| # Avoid overlapping labels. Do not show a label if | |
| # a slice is very narrow, that is, 5% or below. | |
| clean_labels = [ | |
| label if (size / total_asns * 100) > 5 else "" | |
| for label, size in zip(filtered_labels, filtered_sizes) | |
| ] | |
| def hide_small_percentages(pct): | |
| return f"{pct:.0f}%" if pct > 5 else "" | |
| fig, ax = plt.subplots(figsize=(6, 6)) | |
| ax.pie( | |
| filtered_sizes, | |
| labels=clean_labels, | |
| colors=filtered_colors, | |
| autopct=hide_small_percentages, | |
| startangle=90, | |
| counterclock=False, | |
| pctdistance=0.8, | |
| labeldistance=1.05, | |
| wedgeprops={"width": 0.4, "edgecolor": "white"}, | |
| ) | |
| ax.text( | |
| 0, | |
| 0, | |
| f"Total AS numbers analyzed:\n{total_asns}", | |
| ha="center", | |
| va="center", | |
| fontsize=11, | |
| fontweight="bold", | |
| ) | |
| ax.axis("equal") | |
| fig.suptitle( | |
| f"ASPA objects for AS numbers registered in {target_country}", | |
| fontsize=16, | |
| y=1.0, | |
| ) | |
| legend_labels = [ | |
| f'{label}: {size} {"ASN" if size == 1 else "ASNs"}' | |
| for label, size in zip(filtered_labels, filtered_sizes) | |
| ] | |
| ax.legend(legend_labels, loc="center left", bbox_to_anchor=(1.2, 0.5)) | |
| current_date = datetime.datetime.now().strftime("%d.%m.%Y") | |
| fig.text( | |
| 0.5, | |
| 0.02, | |
| f"Generated on {current_date}", | |
| ha="center", | |
| va="bottom", | |
| fontsize=9, | |
| color="gray", | |
| alpha=0.5, | |
| ) | |
| try: | |
| plt.savefig(graph_file_path, bbox_inches="tight") | |
| logging.info(f'Graph successfully saved to "{graph_file_path}"') | |
| except OSError as err: | |
| logging.error(f'Failed to save "{graph_file_path}": {err!r}') | |
| def main(): | |
| """Main function calling other functions.""" | |
| asn_list = get_as_numbers(TARGET_COUNTRY) | |
| if not asn_list: | |
| logging.error(f"No ASNs found for country {TARGET_COUNTRY}. Exiting.") | |
| sys.exit(1) | |
| asn_names_dict = get_as_names(asn_list) | |
| aspa_dict = get_aspas(RPKI_JSON_PATH) | |
| logging.info( | |
| f"Starting to compare {len(asn_list)} AS numbers " | |
| f"associated with {TARGET_COUNTRY} against RPKI ASPAs" | |
| ) | |
| stats = { | |
| "aspa_obj_exists": 0, | |
| "aspa_obj_missing": 0, | |
| } | |
| for asn in asn_list: | |
| as_name = asn_names_dict.get(asn, "Unknown AS name") | |
| if asn in aspa_dict: | |
| stats["aspa_obj_exists"] += 1 | |
| logging.info( | |
| f"AS {asn} ({as_name}) has an ASPA object " | |
| "with following set of provider ASes: " | |
| f'{", ".join(map(str, aspa_dict[asn]))}' | |
| ) | |
| else: | |
| stats["aspa_obj_missing"] += 1 | |
| logging.info(f"AS {asn} ({as_name}) does not have an ASPA object") | |
| print( | |
| "country", | |
| "as_numbers_with_aspa_obj", | |
| "as_numbers_without_aspa_obj", | |
| sep=",", | |
| ) | |
| print( | |
| TARGET_COUNTRY, | |
| stats.get("aspa_obj_exists", 0), | |
| stats.get("aspa_obj_missing", 0), | |
| sep=",", | |
| ) | |
| if GRAPH_FILE_PATH: | |
| generate_graph(stats, TARGET_COUNTRY, GRAPH_FILE_PATH) | |
| if __name__ == "__main__": | |
| try: | |
| main() | |
| except KeyboardInterrupt: | |
| logging.warning("Interrupted") | |
| sys.exit(1) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 2026-07-26 18:21:49 +0300 - [get_as_numbers] - INFO - Fetching registered ASNs for EE... | |
| 2026-07-26 18:21:50 +0300 - [get_as_names] - INFO - Fetching names for 233 unique ASNs... | |
| 2026-07-26 18:23:12 +0300 - [get_aspas] - INFO - Loading RPKI ASPAs from "/var/lib/rpki-client/json"... | |
| 2026-07-26 18:23:14 +0300 - [get_aspas] - INFO - Loaded 2488 validated ASPA payloads | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - Starting to compare 233 AS numbers associated with EE against RPKI ASPAs | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 2586 (ELISAEE-AS Elisa Eesti AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 2876 (AS_G-ENTERPRISES Gheorghiu Enterprises OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 3130 (RGNET-SEA RGnet OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 3204 (XTOM-V-PS xTom OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 3221 (EENet-AS Haridus- ja Teadusministeerium) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 3249 (ESTPAK Telia Eesti AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 3332 (SWEDBANK-AS Swedbank AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 3920 (PUSHPKT PUSHPKT OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 3927 (RGNET-IAD RGnet OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 3970 (RGNET-TE-EX RGnet OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 4128 (RGNET-DFW RGnet OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 5608 (FVNN Magnus McKay Moeller) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 8240 (AS8240 Information System Authority) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 8728 (AS INFONET) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 8756 (RADIO-MSU Windmill Telecom OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 9204 (AS_G-ENTERPRISES Gheorghiu Enterprises OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 11967 (HOP179 Hop179 OU) has an ASPA object with following set of provider ASes: 835, 1299, 6939, 34927, 213449, 213753, 214809, 215828 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 12293 (XVID Xvid Services OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 12757 (IPTRON IPTRON.NET OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 13272 (Starman Elisa Eesti AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 16014 (ESTPAK-GRX Telia Eesti AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 16255 (IRIDIUM-AS IridiumProvider OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 20948 (SKYLINK-AS Skylink Networking Ltd) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 21147 (IF-NOC-AS If P&C Insurance AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 24984 (LuminorLT Luminor Bank AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 31081 (RIIGIKONTROLL-AS National Audit Office of Estonia) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 31365 (NGI2-TR NGI2 Technologies OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 31605 (ALLOY-NETWORKS Titanium OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 34702 (WAVECOM-AS Aktsiaselts WaveCom) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 34729 (SILBERAUTO Veho Baltics OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 35713 (SERTY-AS Careerum OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 39038 (KERNEL-AS Kernel AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 39632 (EESTIPANK Eesti Pank) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 39823 (COMPIC Compic OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 42012 (ETV-AS Estonian Public Broadcasting) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 42016 (TLL-AERO-AS AS Tallinna Lennujaam) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 42300 (TOPCONNECT-AS TOP CONNECT OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 42380 (ERGOLT-AS Ergo Insurance SE) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 42472 (SMARTEN-AS AS Smarten Logistics) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 42474 (IL SmartApe OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 43682 (EE-SEB-AS AS SEB Pank) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 43881 (SMARTLINK-AS Revnetek Systems OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 43883 (CITY-AS Citynet OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 43937 (PTNET Playtech Estonia OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 43958 (TALLINK-AS AS Tallink Grupp) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 43993 (ITel-AS IronTelecom OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 44794 (DNSCALE DNScale OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 44839 (TELEGRUPP-AS Telegrupp AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 44929 (NORD_CONNECT Nord Connect OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 47105 (as-vd Vault Dweller OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 47143 (TDHN Todayhost Limited) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 47294 (NOMD-AS Nomadl OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 47416 (IIX-EE AS INFONET) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 47525 (TBB-AS AS TBB pank) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 47713 (EE-EUROPEANNETWORKS EUROPEAN NETWORKS OY) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 47736 (SMIT IT and Development Center of Ministry of Interior, Estonia) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 48539 (bifrost-systems Bifrost Systems OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 48924 (SOFTERIUM-AS Global Software Investment OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 49191 (SOFTERIUM-AS Global Software Investment OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 49604 (ZONE Zone Media OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 50535 (EUSKILL-AS Theta Sigma Industries OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 50747 (It-HostingGroup It Hosting Group) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 50794 (levira Levira AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 51103 (EDS-EE EDS SYSTEMS OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 51349 (EIS-AS Foundation Eesti Interneti Sihtasutus) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 51504 (Telset AS Telset) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 56588 (EE-CERT Information System Authority) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 57063 (PUZL-AS GPU Computing OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 57196 (CLONOTH Clonoth OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 57201 (EDF-AS Estonian Defence Forces) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 57873 (SONICTEST SONICTEST Ltd.) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 57934 (WJY-AS WJY OU) has an ASPA object with following set of provider ASes: 3204 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 59435 (BLAZELYNK CSpace Hostings OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 59725 (Solifinance-AS Solifinance OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 60320 (EDOMREG European Domain Registry OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 60415 (LOGINET-AS Loginet Solutions LLC) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 60608 (Olympic Olympic Entertainment Group AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 61189 (ELKDATA Elkdata OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 61254 (ESTOXY-OU ESTOXY OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 61307 (EE-AS-STV AS STV) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 61328 (METROTEC OU Metrotec) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 62005 (BV-EU-AS BlueVPS OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 62024 (PACS SIHTASUTUS EESTI TERVISHOIU PILDIPANK) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 62212 (EE SmartApe OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 62248 (MODIRUM MODIRUM MDPAY OU) has an ASPA object with following set of provider ASes: 1299, 2116, 13335, 50304, 208367 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 62303 (DNSCALE DNScale OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 62406 (DNSCALE DNScale OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 64451 (XVID-SERVICES Xvid Services OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 64467 (CROABH Magnus McKay Moeller) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 196743 (interframe OU Interframe) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 196785 (EE-ERGO-AS ERGO Insurance SE) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197060 (IP-KONEKESKUSTEOU Prominion OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197289 (HELMES-AS AS HELMES) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197338 (SERDNA Andres Ivanov) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197354 (DigitalEra-AS DigitalEra Tech OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197517 (SALVA-AS Salva Kindlustuse AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197611 (LHV-AS AS LHV Pank) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197666 (STUDIO-TEN-OU STUDIO TEN OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197683 (ANONSYS Anon City Systems OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 197974 (PLYM-AS Vladislav Nitsenko) has an ASPA object with following set of provider ASes: 49581, 62255, 137409, 213520, 214762 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 198006 (bearmetal Bear Metal OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 198068 (PAGM-AS P.A.G.M. OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 198379 (EE-ATEA AS Atea) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 198632 (EE-ESTPAK-IPT Telia Eesti AS) has an ASPA object with following set of provider ASes: 3249 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 198702 (Tenios-DE SmartTel Plus OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 198776 (Edelaraudtee EDELARAUDTEE AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 198780 (two7363SecuritiesOU 27363 Securities OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 198966 (FILL Reintiler OU) has an ASPA object with following set of provider ASes: 3249, 3327 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 199328 (EKSPRESS-DIGITAL Ekspress Grupp AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 199650 (One-OT 1oT OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 199800 (VORGUVARA OIXIO IT AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 199867 (PAGM-AS-2 P.A.G.M. OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 200326 (RANDHOST Randhost OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 200396 (ROUTE179-AS EpicQuestGames OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 200774 (atlasnode Atlasnode OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 200804 (NSS OU NORTHSIDE SOLUTIONS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 201256 (MurphyHolding MurphyHolding OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 201273 (CUBE2 cubequadrat OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 201344 (PUSHPKT-OU PUSHPKT OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 201601 (Astrec-Data Astrec Data OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 201613 (CENTURY-AS 22nd Century Dev OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 201906 (EESTIPOST-AS Eesti Post AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 201908 (DATALIGHT-AS DATALIGHT OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202063 (Admiral-Markets Admiral Markets AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202225 (bighost-nl Helionet OU) has an ASPA object with following set of provider ASes: 8315, 49981 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202376 (ARVID-LOGICUM Arvid Logicum OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202413 (PRONKIN-AS Pronkin Timofei) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202480 (EE-TallinnaSadam AS Tallinna Sadam) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202635 (SERVERFARM Server Farm LLC) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202652 (ELEVI-AS Elevi AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202705 (PAVALI-TECHNOLOGY Pavali Technology OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202759 (FairyHosting RJ Network OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 202952 (IRIDIUM-AS IridiumProvider OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 203021 (TERVISEKASSA Tervisekassa) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 203065 (eu-LISA eu-LISA) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 203081 (GEENET Geenet OY) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 203273 (NetCraftersOU NetCrafters OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 203311 (CCDCOE NATO Cooperative Cyber Defence Centre of Excellence) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 203676 (ARJOM-AS Arjom Arinenko) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 203701 (ROCKET-AS RocketConnect OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 203906 (PERH Sihtasutus Pohja-Eesti Regionaalhaigla) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 204023 (DNSDOT Brainoza OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 204072 (QUICKPORT Quickport OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 204411 (BIGBANK Bigbank AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 204472 (WELCOMEHOST Welcomehost OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 204595 (UUSPROGRAMM UUS PROGRAMM) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 204671 (HABR-AS Habr Europe OU) has an ASPA object with following set of provider ASes: 174, 3223, 6939, 8728, 9002 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 205346 (EANS Lennuliiklusteeninduse AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 205504 (FAL-AS Skylink Networking Ltd) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 205621 (ZENTRIAOU Zentria OU) has an ASPA object with following set of provider ASes: 20473, 212895, 214132 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 205646 (NEWTEL-AS Newtel Company OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 205696 (EE-APOLLOTV AS Postimees Grupp) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 205930 (VIRTUAALCOM Virtuaal.com OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 205950 (INFONET-DC INFONET DC OY) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 206151 (prolinkas Elevi AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 206714 (SKIDSOLUTIONS SK ID Solutions AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 206804 (EstNOC-GLOBAL EstNOC OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 206844 (RIKS Riigi Info- ja Kommunikatsioonitehnoloogia Keskus) has an ASPA object with following set of provider ASes: 8240 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 206919 (AGL-DIVISION-AS Carizma Invest OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207037 (RV Information System Authority) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207083 (HostSlim-Global-Network HOSTSLIM OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207213 (TAMONE-OU TAMONE OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207254 (EE-emeedia AS Postimees Grupp) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207428 (REDNET Rednet LLC) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207522 (mygaru_au Mygaru OU Private Limited Company) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207568 (teleone Teleone OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207800 (RTIX Information System Authority) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207819 (novametro NOVAMETRO OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 207872 (CTE1 OU CSC Telecom Estonia) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208076 (INFRA1-AS-EE Infra1 OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208283 (Cybernetica2-EE Cybernetica AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208338 (Cybernetica-EE Cybernetica AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208367 (CSPACEHOSTINGS CSpace Hostings OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208440 (GMHOST-EE GmhostGrupp OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208446 (SPACEBEAR-AS Spacebear OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208550 (Transferwise-est Wise Payments Limited Eesti filiaal) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208673 (ESTOXY-EE ESTOXY OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208832 (TWINSERVERS-AS Twinservers OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 208834 (COOPPANK Coop Pank AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 209153 (ARVID Arvid Logicum OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 209537 (Vying-Technologies Vying Technologies OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 209554 (ISIF-AS ISIF OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 209587 (eestiloto AS Eesti Loto) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 209722 (Tryware Tryware OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 209798 (EASA Eesti Avaliku Sektori Andmeside MTU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 209842 (CYBEXER CybExer Technologies OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210002 (STP SmartTel Plus OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210009 (unknown MadCats OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210283 (ASDIGIFINANCE DIGIFINANCE OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210284 (novametroTallin NOVAMETRO OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210302 (PIPEDRIVE-M3 Pipedrive OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210434 (AS-NETS360 nets360 OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210661 (ZMTO ZMTO Technologies OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210671 (Virtuaalinfra-AS Virtuaalinfra OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210734 (IPHOSTER IPHOSTER OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 210978 (office NOVAMETRO OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 211156 (ELEKS-PL Eleks Holding OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 211230 (SEANCONSULTING Sean Consulting OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 211328 (nets-ee-as Nets Estonia AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 211451 (EEMCF MCF Group Estonia OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 211494 (NARAYANA Narayana OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 211924 (PRINTLAB-AS PrintLab OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 212159 (HOOD-VPS Martin Soovares) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 213172 (ee-tehik Health and Welfare Information Systems) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 213267 (LuminorLV Luminor Bank AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 213410 (OakHost OakHost OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 213459 (SNOWD Snowd Security OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 213728 (itcycle ITCYCLE OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 213757 (IMPRESSIVE-SOLUTIONS-AS Impressive Solutions OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214132 (EE-3NV-AS 3NV OU) has an ASPA object with following set of provider ASes: 174, 1257 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214246 (Impressive-Solutions-OU Impressive Solutions OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214279 (DASABO DASABO OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214322 (hostander-as HostAnder OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214630 (KYBERORG-IT-AS Kyberorg IT OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214639 (TAKEHOST-AS Raul Ghita trading as 'Ghita Telekom') does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214647 (YADDA Yadda OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214693 (FUSIORA Fusiora OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214712 (flokli FLOKLI OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214776 (TELIQON-AS Teliqon Communications OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214790 (BRAINOZA Brainoza OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214919 (KABAT-AS Kabat OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 214976 (APIVERSA API VERSA OU) has an ASPA object with following set of provider ASes: 0 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 215447 (PRIMEND Primend OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 215467 (Skhron Skhron OU) has an ASPA object with following set of provider ASes: 3399, 5511, 6939, 37988, 53667, 59711, 142064, 208453, 214354, 263702, 269070 | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 215709 (AS-YOLLA YOLLA CALLS INTERNATIONAL OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 215955 (ALTEASYSTEMS-AS ALTEASYSTEMS OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 216253 (Interhive-AS Interhive OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 216263 (RADICENTER Radicenter OU) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 216408 (TAVEX Tavid AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 219377 (Roman-AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 219395 (EDCS-AS) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 219436 (CrocNet) does not have an ASPA object | |
| 2026-07-26 18:23:14 +0300 - [main] - INFO - AS 219508 (RJNetwork) does not have an ASPA object | |
| 2026-07-26 18:23:15 +0300 - [generate_graph] - INFO - Graph successfully saved to "ee_aspa_objects_simplistic.png" | |
| country,as_numbers_with_aspa_obj,as_numbers_without_aspa_obj | |
| EE,13,220 |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Austria:
Belgium:
Bulgaria:
Croatia:
Cyprus:
Czech Republic:
Denmark:
Estonia:
Finland:
France:
Germany:
Greece:
Hungary:
Ireland:
Italy:
Latvia:
Lithuania:
Luxembourg:
Malta:
Netherlands:
Poland:
Portugal:
Romania:
Slovakia:
Slovenia:
Spain:
Sweden: