from dataclasses import dataclass


@dataclass(frozen=True)
class CountryData:
    """Represents all available data for a country."""

    country_name: str
    country_code: str
    irena_name: str
    region: str
    ssp_region: str
    gem_country: str | None = None
    ws_region: str | None = None


COUNTRY_MASTER_DATA: dict[str, CountryData] = {
    "Afghanistan": CountryData(
        country_name="Afghanistan",
        country_code="AFG",
        irena_name="Afghanistan",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Angola": CountryData(
        country_name="Angola",
        country_code="AGO",
        irena_name="Angola",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country="Angola",
        ws_region="Other Africa",
    ),
    "Albania": CountryData(
        country_name="Albania",
        country_code="ALB",
        irena_name="Albania",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country="Albania",
        ws_region="Other Europe",
    ),
    "United Arab Emirates": CountryData(
        country_name="United Arab Emirates",
        country_code="ARE",
        irena_name="United Arab Emirates (the)",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="United Arab Emirates",
        ws_region="Other Middle East",
    ),
    "Argentina": CountryData(
        country_name="Argentina",
        country_code="ARG",
        irena_name="Argentina",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country="Argentina",
        ws_region="Argentina",
    ),
    "Armenia": CountryData(
        country_name="Armenia",
        country_code="ARM",
        irena_name="Armenia",
        region="Other Europe",
        ssp_region="R5.2REF",
        gem_country=None,
        ws_region=None,
    ),
    "Australia": CountryData(
        country_name="Australia",
        country_code="AUS",
        irena_name="Australia",
        region="Oceania",
        ssp_region="R5.2OECD",
        gem_country="Australia",
        ws_region="Australia",
    ),
    "Austria": CountryData(
        country_name="Austria",
        country_code="AUT",
        irena_name="Austria",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Austria",
        ws_region="Austria",
    ),
    "Azerbaijan": CountryData(
        country_name="Azerbaijan",
        country_code="AZE",
        irena_name="Azerbaijan",
        region="Other Europe",
        ssp_region="R5.2REF",
        gem_country="Azerbaijan",
        ws_region="Other CIS",
    ),
    "Burundi": CountryData(
        country_name="Burundi",
        country_code="BDI",
        irena_name="Burundi",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Belgium": CountryData(
        country_name="Belgium",
        country_code="BEL",
        irena_name="Belgium",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Belgium",
        ws_region="Belgium",
    ),
    "Benin": CountryData(
        country_name="Benin",
        country_code="BEN",
        irena_name="Benin",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Burkina Faso": CountryData(
        country_name="Burkina Faso",
        country_code="BFA",
        irena_name="Burkina Faso",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Bangladesh": CountryData(
        country_name="Bangladesh",
        country_code="BGD",
        irena_name="Bangladesh",
        region="India",
        ssp_region="R5.2ASIA",
        gem_country="Bangladesh",
        ws_region="Other Asia",
    ),
    "Bulgaria": CountryData(
        country_name="Bulgaria",
        country_code="BGR",
        irena_name="Bulgaria",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country="Bulgaria",
        ws_region="Bulgaria",
    ),
    "Bahamas": CountryData(
        country_name="Bahamas",
        country_code="BHS",
        irena_name="Bahamas (the)",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Bahrain": CountryData(
        country_name="Bahrain",
        country_code="BHR",
        irena_name="Bahrain",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="Bahrain",
        ws_region="Other Middle East",
    ),
    "Bosnia and Herz.": CountryData(
        country_name="Bosnia and Herz.",
        country_code="BIH",
        irena_name="Bosnia and Herzegovina",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country="Bosnia and Herzegovina",
        ws_region="Other Europe",
    ),
    "Belarus": CountryData(
        country_name="Belarus",
        country_code="BLR",
        irena_name="Belarus",
        region="Other Europe",
        ssp_region="R5.2REF",
        gem_country="Belarus",
        ws_region="Other CIS",
    ),
    "Belize": CountryData(
        country_name="Belize",
        country_code="BLZ",
        irena_name="Belize",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Bolivia": CountryData(
        country_name="Bolivia",
        country_code="BOL",
        irena_name="Bolivia (Plurinational State of)",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country="Bolivia",
        ws_region="Other Central & South America",
    ),
    "Brazil": CountryData(
        country_name="Brazil",
        country_code="BRA",
        irena_name="Brazil",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country="Brazil",
        ws_region="Brazil",
    ),
    "Brunei": CountryData(
        country_name="Brunei",
        country_code="BRN",
        irena_name="Brunei Darussalam",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Bhutan": CountryData(
        country_name="Bhutan",
        country_code="BTN",
        irena_name="Bhutan",
        region="India",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Botswana": CountryData(
        country_name="Botswana",
        country_code="BWA",
        irena_name="Botswana",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Central African Rep.": CountryData(
        country_name="Central African Rep.",
        country_code="CAF",
        irena_name="Central African Republic (the)",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Canada": CountryData(
        country_name="Canada",
        country_code="CAN",
        irena_name="Canada",
        region="North America",
        ssp_region="R5.2OECD",
        gem_country="Canada",
        ws_region="Canada",
    ),
    "Switzerland": CountryData(
        country_name="Switzerland",
        country_code="CHE",
        irena_name="Switzerland",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Switzerland",
        ws_region="Other Europe",
    ),
    "Chile": CountryData(
        country_name="Chile",
        country_code="CHL",
        irena_name="Chile",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country="Chile",
        ws_region="Chile",
    ),
    "China": CountryData(
        country_name="China",
        country_code="CHN",
        irena_name="China",
        region="China",
        ssp_region="R5.2ASIA",
        gem_country="China",
        ws_region="China",
    ),
    "Côte d'Ivoire": CountryData(
        country_name="Côte d'Ivoire",
        country_code="CIV",
        irena_name="Côte d'Ivoire",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Cameroon": CountryData(
        country_name="Cameroon",
        country_code="CMR",
        irena_name="Cameroon",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Dem. Rep. Congo": CountryData(
        country_name="Dem. Rep. Congo",
        country_code="COD",
        irena_name="Democratic Republic of the Congo (the)",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Congo": CountryData(
        country_name="Congo",
        country_code="COG",
        irena_name="Congo (the)",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Colombia": CountryData(
        country_name="Colombia",
        country_code="COL",
        irena_name="Colombia",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Costa Rica": CountryData(
        country_name="Costa Rica",
        country_code="CRI",
        irena_name="Costa Rica",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Cuba": CountryData(
        country_name="Cuba",
        country_code="CUB",
        irena_name="Cuba",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "N. Cyprus": CountryData(
        country_name="N. Cyprus",
        country_code="CYP",
        irena_name="Cyprus",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Cyprus": CountryData(
        country_name="Cyprus",
        country_code="CYP",
        irena_name="Cyprus",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Czechia": CountryData(
        country_name="Czechia",
        country_code="CZE",
        irena_name="Czechia",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Czech Republic",
        ws_region="Czechia",
    ),
    "Germany": CountryData(
        country_name="Germany",
        country_code="DEU",
        irena_name="Germany",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Germany",
        ws_region="Germany",
    ),
    "Djibouti": CountryData(
        country_name="Djibouti",
        country_code="DJI",
        irena_name="Djibouti",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Denmark": CountryData(
        country_name="Denmark",
        country_code="DNK",
        irena_name="Denmark",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Dominican Rep.": CountryData(
        country_name="Dominican Rep.",
        country_code="DOM",
        irena_name="Dominican Republic (the)",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Algeria": CountryData(
        country_name="Algeria",
        country_code="DZA",
        irena_name="Algeria",
        region="North Africa",
        ssp_region="R5.2MAF",
        gem_country="Algeria",
        ws_region="Other Africa",
    ),
    "Ecuador": CountryData(
        country_name="Ecuador",
        country_code="ECU",
        irena_name="Ecuador",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Egypt": CountryData(
        country_name="Egypt",
        country_code="EGY",
        irena_name="Egypt",
        region="North Africa",
        ssp_region="R5.2MAF",
        gem_country="Egypt",
        ws_region="Egypt",
    ),
    "Eritrea": CountryData(
        country_name="Eritrea",
        country_code="ERI",
        irena_name="Eritrea",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Spain": CountryData(
        country_name="Spain",
        country_code="ESP",
        irena_name="Spain",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Spain",
        ws_region="Spain",
    ),
    "Estonia": CountryData(
        country_name="Estonia",
        country_code="EST",
        irena_name="Estonia",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Ethiopia": CountryData(
        country_name="Ethiopia",
        country_code="ETH",
        irena_name="Ethiopia",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country="Ethiopia",
        ws_region="Other Africa",
    ),
    "Finland": CountryData(
        country_name="Finland",
        country_code="FIN",
        irena_name="Finland",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Finland",
        ws_region="Finland",
    ),
    "Fiji": CountryData(
        country_name="Fiji",
        country_code="FJI",
        irena_name="Fiji",
        region="Oceania",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Falkland Is.": CountryData(
        country_name="Falkland Is.",
        country_code="FLK",
        irena_name="Falkland Islands (Malvinas)",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "France": CountryData(
        country_name="France",
        country_code="FRA",
        irena_name="France",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="France",
        ws_region="France",
    ),
    "Gabon": CountryData(
        country_name="Gabon",
        country_code="GAB",
        irena_name="Gabon",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "United Kingdom": CountryData(
        country_name="United Kingdom",
        country_code="GBR",
        irena_name="United Kingdom of Great Britain and Northern Ireland (the)",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country="United Kingdom",
        ws_region="United Kingdom",
    ),
    "Georgia": CountryData(
        country_name="Georgia",
        country_code="GEO",
        irena_name="Georgia",
        region="Other Europe",
        ssp_region="R5.2REF",
        gem_country=None,
        ws_region=None,
    ),
    "Ghana": CountryData(
        country_name="Ghana",
        country_code="GHA",
        irena_name="Ghana",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country="Ghana",
        ws_region="Other Africa",
    ),
    "Guinea": CountryData(
        country_name="Guinea",
        country_code="GIN",
        irena_name="Guinea",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Gambia": CountryData(
        country_name="Gambia",
        country_code="GMB",
        irena_name="Gambia (the)",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Guinea-Bissau": CountryData(
        country_name="Guinea-Bissau",
        country_code="GNB",
        irena_name="Guinea-Bissau",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Eq. Guinea": CountryData(
        country_name="Eq. Guinea",
        country_code="GNQ",
        irena_name="Guinea",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Greece": CountryData(
        country_name="Greece",
        country_code="GRC",
        irena_name="Greece",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Greece",
        ws_region="Greece",
    ),
    "Greenland": CountryData(
        country_name="Greenland",
        country_code="GRL",
        irena_name="Greenland",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Guatemala": CountryData(
        country_name="Guatemala",
        country_code="GTM",
        irena_name="Guatemala",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country="Guatemala",
        ws_region="Other Central & South America",
    ),
    "Guyana": CountryData(
        country_name="Guyana",
        country_code="GUY",
        irena_name="Guyana",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Honduras": CountryData(
        country_name="Honduras",
        country_code="HND",
        irena_name="Honduras",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Croatia": CountryData(
        country_name="Croatia",
        country_code="HRV",
        irena_name="Croatia",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Haiti": CountryData(
        country_name="Haiti",
        country_code="HTI",
        irena_name="Haiti",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Hong Kong": CountryData(
        country_name="Hong Kong",
        country_code="HKG",
        irena_name="Hong Kong",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Hong Kong",
        ws_region="China & Taiwan",
    ),
    "Hungary": CountryData(
        country_name="Hungary",
        country_code="HUN",
        irena_name="Hungary",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Hungary",
        ws_region="Hungary",
    ),
    "Indonesia": CountryData(
        country_name="Indonesia",
        country_code="IDN",
        irena_name="Indonesia",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Indonesia",
        ws_region="Other Asia",
    ),
    "India": CountryData(
        country_name="India",
        country_code="IND",
        irena_name="India",
        region="India",
        ssp_region="R5.2ASIA",
        gem_country="India",
        ws_region="India",
    ),
    "Ireland": CountryData(
        country_name="Ireland",
        country_code="IRL",
        irena_name="Ireland",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Iran": CountryData(
        country_name="Iran",
        country_code="IRN",
        irena_name="Iran (Islamic Republic of)",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="Iran",
        ws_region="Iran",
    ),
    "Iraq": CountryData(
        country_name="Iraq",
        country_code="IRQ",
        irena_name="Iraq",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="Iraq",
        ws_region="Other Middle East",
    ),
    "Iceland": CountryData(
        country_name="Iceland",
        country_code="ISL",
        irena_name="Iceland",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Israel": CountryData(
        country_name="Israel",
        country_code="ISR",
        irena_name="Israel",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Italy": CountryData(
        country_name="Italy",
        country_code="ITA",
        irena_name="Italy",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Italy",
        ws_region="Italy",
    ),
    "Jamaica": CountryData(
        country_name="Jamaica",
        country_code="JAM",
        irena_name="Jamaica",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Jordan": CountryData(
        country_name="Jordan",
        country_code="JOR",
        irena_name="Jordan",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Japan": CountryData(
        country_name="Japan",
        country_code="JPN",
        irena_name="Japan",
        region="South + East Asia",
        ssp_region="R5.2OECD",
        gem_country="Japan",
        ws_region="Japan",
    ),
    "Kazakhstan": CountryData(
        country_name="Kazakhstan",
        country_code="KAZ",
        irena_name="Kazakhstan",
        region="Russia + CIS",
        ssp_region="R5.2REF",
        gem_country="Kazakhstan",
        ws_region="Other CIS",
    ),
    "Kenya": CountryData(
        country_name="Kenya",
        country_code="KEN",
        irena_name="Kenya",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country="Kenya",
        ws_region="Other Africa",
    ),
    "Kyrgyzstan": CountryData(
        country_name="Kyrgyzstan",
        country_code="KGZ",
        irena_name="Kyrgyzstan",
        region="Russia + CIS",
        ssp_region="R5.2REF",
        gem_country=None,
        ws_region=None,
    ),
    "Cambodia": CountryData(
        country_name="Cambodia",
        country_code="KHM",
        irena_name="Cambodia",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Cambodia",
        ws_region="Other Asia",
    ),
    "South Korea": CountryData(
        country_name="South Korea",
        country_code="KOR",
        irena_name="Democratic People's Republic of Korea (the)",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="South Korea",
        ws_region="South Korea",
    ),
    "Kosovo": CountryData(
        country_name="Kosovo",
        country_code="KOS",
        irena_name="Kosovo",
        region="Other Europe",
        ssp_region="R5.2REF",
        gem_country=None,
        ws_region=None,
    ),
    "Kuwait": CountryData(
        country_name="Kuwait",
        country_code="KWT",
        irena_name="Kuwait",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="Kuwait",
        ws_region="Other Middle East",
    ),
    "Laos": CountryData(
        country_name="Laos",
        country_code="LAO",
        irena_name="Lao People's Democratic Republic (the)",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Lebanon": CountryData(
        country_name="Lebanon",
        country_code="LBN",
        irena_name="Lebanon",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Liberia": CountryData(
        country_name="Liberia",
        country_code="LBR",
        irena_name="Liberia",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Libya": CountryData(
        country_name="Libya",
        country_code="LBY",
        irena_name="Libya",
        region="North Africa",
        ssp_region="R5.2MAF",
        gem_country="Libya",
        ws_region="Other Africa",
    ),
    "Sri Lanka": CountryData(
        country_name="Sri Lanka",
        country_code="LKA",
        irena_name="Sri Lanka",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Sri Lanka",
        ws_region="Other Asia",
    ),
    "Lesotho": CountryData(
        country_name="Lesotho",
        country_code="LSO",
        irena_name="Lesotho",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Lithuania": CountryData(
        country_name="Lithuania",
        country_code="LTU",
        irena_name="Lithuania",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Luxembourg": CountryData(
        country_name="Luxembourg",
        country_code="LUX",
        irena_name="Luxembourg",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Luxembourg",
        ws_region="Luxembourg",
    ),
    "Latvia": CountryData(
        country_name="Latvia",
        country_code="LVA",
        irena_name="Latvia",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Latvia",
        ws_region="Other Europe",
    ),
    "Morocco": CountryData(
        country_name="Morocco",
        country_code="MAR",
        irena_name="Morocco",
        region="North Africa",
        ssp_region="R5.2MAF",
        gem_country="Morocco",
        ws_region="Other Africa",
    ),
    "Moldova": CountryData(
        country_name="Moldova",
        country_code="MDA",
        irena_name="Republic of Moldova (the)",
        region="Other Europe",
        ssp_region="R5.2REF",
        gem_country="Moldova",
        ws_region="Other CIS",
    ),
    "Madagascar": CountryData(
        country_name="Madagascar",
        country_code="MDG",
        irena_name="Madagascar",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Mexico": CountryData(
        country_name="Mexico",
        country_code="MEX",
        irena_name="Mexico",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country="Mexico",
        ws_region="Mexico",
    ),
    "North Macedonia": CountryData(
        country_name="North Macedonia",
        country_code="MKD",
        irena_name="North Macedonia",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country="North Macedonia",
        ws_region="Other Europe",
    ),
    "Mali": CountryData(
        country_name="Mali",
        country_code="MLI",
        irena_name="Mali",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Myanmar": CountryData(
        country_name="Myanmar",
        country_code="MMR",
        irena_name="Myanmar",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Myanmar",
        ws_region="Other Asia",
    ),
    "Montenegro": CountryData(
        country_name="Montenegro",
        country_code="MNE",
        irena_name="Montenegro",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country=None,
        ws_region=None,
    ),
    "Mongolia": CountryData(
        country_name="Mongolia",
        country_code="MNG",
        irena_name="Mongolia",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Mozambique": CountryData(
        country_name="Mozambique",
        country_code="MOZ",
        irena_name="Mozambique",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country="Mozambique",
        ws_region="Other Africa",
    ),
    "Mauritania": CountryData(
        country_name="Mauritania",
        country_code="MRT",
        irena_name="Mauritania",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Malawi": CountryData(
        country_name="Malawi",
        country_code="MWI",
        irena_name="Malawi",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Malaysia": CountryData(
        country_name="Malaysia",
        country_code="MYS",
        irena_name="Malaysia",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Malaysia",
        ws_region="Other Asia",
    ),
    "Namibia": CountryData(
        country_name="Namibia",
        country_code="NAM",
        irena_name="Namibia",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country="Namibia",
        ws_region="Other Africa",
    ),
    "New Caledonia": CountryData(
        country_name="New Caledonia",
        country_code="NCL",
        irena_name="New Caledonia",
        region="Oceania",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Niger": CountryData(
        country_name="Niger",
        country_code="NER",
        irena_name="Niger (the)",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Nigeria": CountryData(
        country_name="Nigeria",
        country_code="NGA",
        irena_name="Nigeria",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country="Nigeria",
        ws_region="Other Africa",
    ),
    "Nicaragua": CountryData(
        country_name="Nicaragua",
        country_code="NIC",
        irena_name="Nicaragua",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Netherlands": CountryData(
        country_name="Netherlands",
        country_code="NLD",
        irena_name="Netherlands (Kingdom of the)",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Netherlands",
        ws_region="Netherlands",
    ),
    "Norway": CountryData(
        country_name="Norway",
        country_code="NOR",
        irena_name="Norway",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Norway",
        ws_region="Other Europe",
    ),
    "Nepal": CountryData(
        country_name="Nepal",
        country_code="NPL",
        irena_name="Nepal",
        region="India",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "New Zealand": CountryData(
        country_name="New Zealand",
        country_code="NZL",
        irena_name="New Zealand",
        region="Oceania",
        ssp_region="R5.2OECD",
        gem_country="New Zealand",
        ws_region="New Zealand",
    ),
    "Oman": CountryData(
        country_name="Oman",
        country_code="OMN",
        irena_name="Oman",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="Oman",
        ws_region="Other Middle East",
    ),
    "Pakistan": CountryData(
        country_name="Pakistan",
        country_code="PAK",
        irena_name="Pakistan",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Pakistan",
        ws_region="Other Asia",
    ),
    "Panama": CountryData(
        country_name="Panama",
        country_code="PAN",
        irena_name="Panama",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Peru": CountryData(
        country_name="Peru",
        country_code="PER",
        irena_name="Peru",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country="Peru",
        ws_region="Other Central & South America",
    ),
    "Philippines": CountryData(
        country_name="Philippines",
        country_code="PHL",
        irena_name="Philippines (the)",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Philippines",
        ws_region="Other Asia",
    ),
    "Papua New Guinea": CountryData(
        country_name="Papua New Guinea",
        country_code="PNG",
        irena_name="Papua New Guinea",
        region="Oceania",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Poland": CountryData(
        country_name="Poland",
        country_code="POL",
        irena_name="Poland",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Poland",
        ws_region="Poland",
    ),
    "Puerto Rico": CountryData(
        country_name="Puerto Rico",
        country_code="PRI",
        irena_name="Puerto Rico",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "North Korea": CountryData(
        country_name="North Korea",
        country_code="PRK",
        irena_name="Republic of Korea (the)",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="North Korea",
        ws_region="Other Asia",
    ),
    "Portugal": CountryData(
        country_name="Portugal",
        country_code="PRT",
        irena_name="Portugal",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Portugal",
        ws_region="Portugal",
    ),
    "Paraguay": CountryData(
        country_name="Paraguay",
        country_code="PRY",
        irena_name="Paraguay",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Palestine": CountryData(
        country_name="Palestine",
        country_code="PSE",
        irena_name="State of Palestine (the)",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Qatar": CountryData(
        country_name="Qatar",
        country_code="QAT",
        irena_name="Qatar",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="Qatar",
        ws_region="Other Middle East",
    ),
    "Romania": CountryData(
        country_name="Romania",
        country_code="ROU",
        irena_name="Romania",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Romania",
        ws_region="Romania",
    ),
    "Russia": CountryData(
        country_name="Russia",
        country_code="RUS",
        irena_name="Russian Federation (the)",
        region="Russia + CIS",
        ssp_region="R5.2REF",
        gem_country="Russia",
        ws_region="Russia",
    ),
    "Rwanda": CountryData(
        country_name="Rwanda",
        country_code="RWA",
        irena_name="Rwanda",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Saudi Arabia": CountryData(
        country_name="Saudi Arabia",
        country_code="SAU",
        irena_name="Saudi Arabia",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="Saudi Arabia",
        ws_region="Saudi Arabia",
    ),
    "Sudan": CountryData(
        country_name="Sudan",
        country_code="SDN",
        irena_name="Sudan (the)",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Senegal": CountryData(
        country_name="Senegal",
        country_code="SEN",
        irena_name="Senegal",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Singapore": CountryData(
        country_name="Singapore",
        country_code="SGP",
        irena_name="Singapore",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Singapore",
        ws_region="Other Asia",
    ),
    "Solomon Is.": CountryData(
        country_name="Solomon Is.",
        country_code="SLB",
        irena_name="Solomon Islands",
        region="Oceania",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Sierra Leone": CountryData(
        country_name="Sierra Leone",
        country_code="SLE",
        irena_name="Sierra Leone",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "El Salvador": CountryData(
        country_name="El Salvador",
        country_code="SLV",
        irena_name="El Salvador",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Somalia": CountryData(
        country_name="Somalia",
        country_code="SOM",
        irena_name="Somalia",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Somaliland": CountryData(
        country_name="Somaliland",
        country_code="SOM",
        irena_name="Somalia",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Serbia": CountryData(
        country_name="Serbia",
        country_code="SRB",
        irena_name="Serbia",
        region="Other Europe",
        ssp_region="R5.2OECD",
        gem_country="Serbia",
        ws_region="Other Europe",
    ),
    "S. Sudan": CountryData(
        country_name="S. Sudan",
        country_code="SSD",
        irena_name="South Sudan",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Suriname": CountryData(
        country_name="Suriname",
        country_code="SUR",
        irena_name="Suriname",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "Slovakia": CountryData(
        country_name="Slovakia",
        country_code="SVK",
        irena_name="Slovakia",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Slovakia",
        ws_region="Slovakia",
    ),
    "Slovenia": CountryData(
        country_name="Slovenia",
        country_code="SVN",
        irena_name="Slovenia",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Slovenia",
        ws_region="Slovenia",
    ),
    "Sweden": CountryData(
        country_name="Sweden",
        country_code="SWE",
        irena_name="Sweden",
        region="EU + Schengen",
        ssp_region="R5.2OECD",
        gem_country="Sweden",
        ws_region="Sweden",
    ),
    "eSwatini": CountryData(
        country_name="eSwatini",
        country_code="SWZ",
        irena_name="Eswatini",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Syria": CountryData(
        country_name="Syria",
        country_code="SYR",
        irena_name="Syrian Arab Republic (the)",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country="Syria",
        ws_region="Other Middle East",
    ),
    "Chad": CountryData(
        country_name="Chad",
        country_code="TCD",
        irena_name="Chad",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Togo": CountryData(
        country_name="Togo",
        country_code="TGO",
        irena_name="Togo",
        region="West Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Thailand": CountryData(
        country_name="Thailand",
        country_code="THA",
        irena_name="Thailand",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Thailand",
        ws_region="Other Asia",
    ),
    "Tajikistan": CountryData(
        country_name="Tajikistan",
        country_code="TJK",
        irena_name="Tajikistan",
        region="Russia + CIS",
        ssp_region="R5.2REF",
        gem_country=None,
        ws_region=None,
    ),
    "Turkmenistan": CountryData(
        country_name="Turkmenistan",
        country_code="TKM",
        irena_name="Turkmenistan",
        region="Russia + CIS",
        ssp_region="R5.2REF",
        gem_country=None,
        ws_region=None,
    ),
    "Timor-Leste": CountryData(
        country_name="Timor-Leste",
        country_code="TLS",
        irena_name="Timor-Leste",
        region="Oceania",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "Trinidad and Tobago": CountryData(
        country_name="Trinidad and Tobago",
        country_code="TTO",
        irena_name="Trinidad and Tobago",
        region="Central America",
        ssp_region="R5.2LAM",
        gem_country="Trinidad and Tobago",
        ws_region="Other North America",
    ),
    "Tunisia": CountryData(
        country_name="Tunisia",
        country_code="TUN",
        irena_name="Tunisia",
        region="North Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Turkey": CountryData(
        country_name="Turkey",
        country_code="TUR",
        irena_name="Türkiye",
        region="Middle East",
        ssp_region="R5.2OECD",
        gem_country="Türkiye",
        ws_region="Turkey",
    ),
    "Taiwan": CountryData(
        country_name="Taiwan",
        country_code="TWN",
        irena_name="Chinese Taipei",
        region="China",
        ssp_region="R5.2ASIA",
        gem_country="Taiwan",
        ws_region="China & Taiwan",
    ),
    "Tanzania": CountryData(
        country_name="Tanzania",
        country_code="TZA",
        irena_name="United Republic of Tanzania (the)",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Uganda": CountryData(
        country_name="Uganda",
        country_code="UGA",
        irena_name="Uganda",
        region="East Africa",
        ssp_region="R5.2MAF",
        gem_country="Uganda",
        ws_region="Other Africa",
    ),
    "Ukraine": CountryData(
        country_name="Ukraine",
        country_code="UKR",
        irena_name="Ukraine",
        region="Other Europe",
        ssp_region="R5.2REF",
        gem_country="Ukraine",
        ws_region="Ukraine",
    ),
    "Uruguay": CountryData(
        country_name="Uruguay",
        country_code="URY",
        irena_name="Uruguay",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country=None,
        ws_region=None,
    ),
    "United States of America": CountryData(
        country_name="United States of America",
        country_code="USA",
        irena_name="United States of America (the)",
        region="North America",
        ssp_region="R5.2OECD",
        gem_country="United States",
        ws_region="United States",
    ),
    "Uzbekistan": CountryData(
        country_name="Uzbekistan",
        country_code="UZB",
        irena_name="Uzbekistan",
        region="Russia + CIS",
        ssp_region="R5.2ASIA",
        gem_country="Uzbekistan",
        ws_region="Other CIS",
    ),
    "Venezuela": CountryData(
        country_name="Venezuela",
        country_code="VEN",
        irena_name="Venezuela (Bolivarian Republic of)",
        region="South America",
        ssp_region="R5.2LAM",
        gem_country="Venezuela",
        ws_region="Venezuela",
    ),
    "Vietnam": CountryData(
        country_name="Vietnam",
        country_code="VNM",
        irena_name="Viet Nam",
        region="South + East Asia",
        ssp_region="R5.2ASIA",
        gem_country="Vietnam",
        ws_region="Other Asia",
    ),
    "Vanuatu": CountryData(
        country_name="Vanuatu",
        country_code="VUT",
        irena_name="Vanuatu",
        region="Oceania",
        ssp_region="R5.2ASIA",
        gem_country=None,
        ws_region=None,
    ),
    "W. Sahara": CountryData(
        country_name="W. Sahara",
        country_code="WES",
        irena_name="Morocco",
        region="North Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Yemen": CountryData(
        country_name="Yemen",
        country_code="YEM",
        irena_name="Yemen",
        region="Middle East",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "South Africa": CountryData(
        country_name="South Africa",
        country_code="ZAF",
        irena_name="South Africa",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country="South Africa",
        ws_region="South Africa",
    ),
    "Zambia": CountryData(
        country_name="Zambia",
        country_code="ZMB",
        irena_name="Zambia",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country=None,
        ws_region=None,
    ),
    "Zimbabwe": CountryData(
        country_name="Zimbabwe",
        country_code="ZWE",
        irena_name="Zimbabwe",
        region="Southern Africa",
        ssp_region="R5.2MAF",
        gem_country="Zimbabwe",
        ws_region="Other Africa",
    ),
    # Add any additional countries here if needed
}

COUNTRY_TO_CODE_MAP: dict[str, str] = {country: data.country_code for country, data in COUNTRY_MASTER_DATA.items()}

COUNTRY_TO_IRENA_MAP: dict[str, str] = {country: data.irena_name for country, data in COUNTRY_MASTER_DATA.items()}

COUNTRY_TO_REGION_MAP: dict[str, str] = {country: data.region for country, data in COUNTRY_MASTER_DATA.items()}

COUNTRY_TO_SSP_REGION_MAP: dict[str, str] = {country: data.ssp_region for country, data in COUNTRY_MASTER_DATA.items()}

# For GEM country map, only include entries where gem_country is not None
GEM_COUNTRY_WS_REGION_MAP: dict[str, str] = {
    data.gem_country: data.ws_region
    for data in COUNTRY_MASTER_DATA.values()
    if data.gem_country is not None and data.ws_region is not None
}
