from __future__ import annotations

id_name_map: dict[int, str | None] = {
    1: "Gießen",
    3: "Neu-Isenburg",
    5: "Offenbach am Main",
    6: "Itzehoe",
    7: "Plattling",
    10: "Gelsenkirchen",
    11: "Nürnberg",
    12: "Memmingen",
    13: "Frankenthal/Pfalz",
    14: "Friedrichshafen",
    # 15: "Regensburg",  # Uncertain due to duplicate number  # Possibly retired
    16: "Pforzheim",
    # 17: "Neumünster",  # Uncertain due to duplicate number
    # 18: "Gelnhausen",  # Probably retired -> 166
    19: "Osnabrück",
    20: "Lüneburg",
    # 53: "Neumünster",  # Uncertain due to duplicate number
    58: "Gütersloh",
    60: "Mühlheim an der Ruhr",
    61: "Bebra",
    63: None,
    64: None,
    65: None,
    68: "Crailsheim",
    # 69: "Worms",  # Probably retired -> 169
    70: None,
    72: "Aschaffenburg",
    73: "Basel",  # Possible duplicate number -> 173
    74: "Zürich",
    75: None,
    76: "Interlaken",
    77: None,
    # 81: "Regensburg",  # Uncertain due to duplicate number  # Possibly retired
    90: None,
    102: "Jever",
    104: "Fulda",
    108: "Lichtenfels",
    # 115: "Regensburg",  # Uncertain due to duplicate number  # Possibly retired
    152: "Hanau",
    154: "Flensburg",
    155: "Rosenheim",
    156: "Heppenheim/Bergstraße",
    157: "Landshut",
    166: "Gelnhausen",
    169: "Worms",
    171: "Heusenstamm",
    # 173: "Basel",  # Probably retired -> 73
    178: "Bremerhaven",
    179: None,
    180: "Castrop Rauxel",
    182: "Rüdesheim am Rhein",
    183: "Timmendorfer Strand",
    185: "Freilassing",
    186: "Chur",
    187: "Mühldorf a. Inn",
    188: "Hildesheim",
    189: None,
    201: "Rheinsberg",
    202: "Wuppertal",
    203: "Cottbus/Chóśebuz",
    204: "Bielefeld",
    # 205: "Zwickau", # number changed to 225
    206: "Magdeburg",
    207: "Stendal",
    208: "Bonn",
    210: "Fontanestadt Neuruppin",
    211: "Uelzen",
    212: "Potsdam",
    213: "Nauen",
    214: "Hamm (Westf.)",
    215: "Bitterfeld-Wolfen",
    216: "Dessau",
    217: "Bergen auf Rügen",
    218: "Braunschweig",
    219: "Hagen",
    220: "Meiningen",
    221: "Lübbenau/Spreewald",
    222: "Eberswalde",
    224: "Saalfeld (Saale)",
    225: "Zwickau",  # previously Oldenburg (Oldb)
    226: "Lutherstadt Wittenberg",
    227: "Ludwigslust",
    228: "Altenburg",
    229: "Templin",
    230: "Delitzsch",
    231: "Brandenburg an der Havel",
    232: "Frankfurt (Oder)",
    233: "Ulm",
    234: "Minden",
    235: "Görlitz",
    236: "Jüterbog",
    237: "Neustrelitz",
    238: "Saarbrücken",
    239: "Essen",
    240: "Bochum",
    241: "Bad Hersfeld ",
    242: "Quedlinburg",
    243: "Bautzen/Budyšin",
    244: "Koblenz",
    302: "Hansestadt Lübeck",  # previously Wiesbaden
    303: "Dortmund",
    304: "München",
    305: "Baden-Baden",
    308: "Murnau am Staffelsee",
    309: "Aalen",
    310: "Wolfsburg",  # possibly "München / Wolfsburg"
    # 311: "Hansestadt Lübeck", # number changed to 302
    312: "Montabaur",
    313: "Treuchtlingen",
    314: "Bergisch Gladbach",
    315: "Singen (Hohentwiel)",
    319: "Duisburg",
    320: "Weil am Rhein",
    323: "Schaffhausen",
    324: "Fürth",
    327: "Siegen",
    328: "Aachen",
    329: None,
    330: "Göttingen",
    331: "Westerland/Sylt",
    332: "Augsburg",
    333: "Goslar",
    334: "Offenburg",
    335: "Konstanz",
    336: "Ingolstadt",
    337: "Stuttgart",
    352: "Mönchengladbach",
    354: "Mittenwald",
    355: "Tuttlingen",
    356: None,
    357: "Esslingen am Neckar",
    358: "St. Ingbert",
    360: "Linz am Rhein",
    361: "Celle",
    363: "Weilheim i.OB",
    701: None,
    702: None,
    703: None,
    704: None,
    705: None,
    707: None,
    708: None,
    710: "Ansbach",
    711: None,
    712: "Dillingen a.d.Donau",
    713: None,
    717: "Paris",
    1101: "Neustadt an der Weinstraße",
    1102: "Neubrandenburg",
    1103: "Paderborn",
    1104: "Erfurt",
    1105: "Dresden",
    1107: "Pirna",
    1108: "Berlin",
    1109: "Güstrow",
    1111: "Hansestadt Wismar",
    1112: "Freie und Hansestadt Hamburg",
    1113: "Hansestadt Stralsund",
    1117: "Erlangen",
    1118: "Plauen/Vogtland",
    1125: "Arnstadt",
    1126: "Leipzig",
    1127: "Weimar",
    1128: "Reutlingen",
    1129: "Kiel",
    1130: "Jena",
    1131: "Trier",
    1132: "Wittenberge",
    1151: "Elsterwerda",
    1152: "Travemünde",
    1153: "Ilmenau",
    1154: "Sonneberg",
    1155: "Mühlhausen/Thüringen",
    1156: "Waren (Müritz)",
    1157: "Innsbruck",
    1158: "Falkenberg/Elster",
    1159: "Passau",
    1160: "Markt Holzkirchen",
    1161: "Andernach",
    1162: "Vaihingen an der Enz",
    1164: "Rödental",
    1165: "Bad Oeynhausen",
    1166: "Bingen am Rhein",
    1167: "Traunstein",
    1168: "Ellwangen",
    1169: "Tutzing",
    1170: "Prenzlau",
    1171: "Oschatz",
    1172: "Bamberg",
    1173: "Halle (Saale)",
    1174: "Hansestadt Warburg",
    1175: "Villingen-Schwenningen",
    1176: "Coburg",
    1177: "Rathenow",
    1178: "Ostseebad Warnemünde",
    1180: "Darmstadt",
    1182: "Mainz",
    1183: "Oberursel (Taunus)",
    1184: "Kaiserslautern",
    1190: "Wien",
    1191: "Salzburg",
    1192: "Linz",
    1501: "Eisenach",
    1502: "Karlsruhe",
    1503: "Altenbeken",
    1504: "Heidelberg",
    1505: "Marburg/Lahn",
    1506: "Kassel",
    1520: "Gotha",
    1521: "Homburg/Saar",
    1522: "Torgau",
    1523: "Hansestadt Greifswald",
    1524: "Hansestadt Rostock",
    4602: "Euregio Maas-Rhein",
    4603: "Mannheim",
    4610: "Frankfurt am Main",
    4685: "Schwäbisch Hall",
    8006: None,
    8008: None,
    8009: None,
    8011: None,
    8012: None,
    8015: None,
    8016: None,
    9001: None,
    9002: None,
    9003: None,
    9004: None,
    9005: None,
    9006: "Martin Luther",
    9007: None,
    9008: None,
    9009: None,
    9010: None,
    9011: None,
    9012: None,
    9013: None,
    9014: None,
    9015: None,
    9016: None,
    9017: None,
    9018: "Freistaat Bayern",
    9019: None,
    9020: None,
    9021: None,
    9022: None,
    9023: None,
    9024: None,
    9025: "Nordrhein-Westfalen",
    9026: "Zürichsee",
    9027: None,
    9028: "Freistaat Sachsen",
    9029: None,
    9030: None,
    9031: None,
    9032: None,
    9033: None,
    9034: None,
    9035: None,
    9036: None,
    9037: None,
    9038: None,
    9039: None,
    9040: None,
    9041: "Baden-Württemberg",
    9042: None,
    9043: None,
    9044: None,
    9045: None,
    9046: None,
    9047: None,
    9048: None,
    9049: None,
    9050: "Metropole Ruhr",
    9201: None,
    9202: "Schleswig-Holstein",
    9204: None,
    9205: None,
    9206: None,
    9209: None,
    9210: None,
    9211: None,
    9212: None,
    9213: None,
    9214: None,
    9215: None,
    9216: None,
    9217: None,
    9218: None,
    9219: None,
    9220: None,
    9221: None,
    9224: None,
    9225: None,
    9226: None,
    9228: None,
    9229: None,
    9230: None,
    9234: None,
    9235: None,
    9237: "Spree",
    9451: None,
    9452: None,
    9453: None,
    9454: None,
    9455: None,
    9456: None,
    9457: "Bundesrepublik Deutschland / Wendlingen-Ulm",
    9458: None,
    9459: None,
    9460: None,
    9461: None,
    9462: None,
    9463: None,
    9464: None,
    9465: None,
    9466: None,
    9467: None,
    9468: None,
    9469: None,
    9470: None,
    9471: None,
    9472: None,
    9473: None,
    9474: None,
    9475: None,
    9477: None,
    9478: None,
    9479: None,
    9480: None,
    9481: "Rheinland-Pfalz",
    9482: None,
    9483: None,
    9484: None,
    9485: None,
    9486: None,
    9487: None,
    9488: None,
    9490: None,
    9491: None,
    9492: None,
    9494: None,
    9495: None,
    9496: None,
    9497: None,
    9498: None,
    9500: None,
}
"""
A dict containing the train ID and its corresponding name that is printed on the side of the trains first and last coach
"""
