diff options
author | Tor Andersson <tor@ccxvii.net> | 2024-06-01 15:04:23 +0200 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2024-06-01 15:04:23 +0200 |
commit | 562e1822729e85834e54cc76d0bfbc8a584c572c (patch) | |
tree | e3cf66ad203b7bebcc0b0f31f64e5ab772cee746 | |
parent | e1a0ee4619c330f9da81f00dc4f1e50c5ee61d02 (diff) | |
download | maria-562e1822729e85834e54cc76d0bfbc8a584c572c.tar.gz |
setup
-rw-r--r-- | data.js | 2650 | ||||
-rw-r--r-- | play.css | 78 | ||||
-rw-r--r-- | play.js | 6 | ||||
-rw-r--r-- | rules.js | 134 | ||||
-rw-r--r-- | tools/layout.svg | 29 | ||||
-rw-r--r-- | tools/parse-layout.js | 137 |
6 files changed, 195 insertions, 2839 deletions
@@ -1,2650 +1,2 @@ -const data = { - type: { - major_fortress: [ 28, 70, 78, 131, 197, 332, 360, 377, 393, 405, 429, 471, 516, 547, 578 ], - minor_fortress: [ - 1, 6, 8, 11, 14, 17, 39, 50, 51, 52, 67, 72, 76, 97, 106, 118, 121, 138, 139, 144, 156, 160, 178, 188, 194, 196, - 208, 209, 265, 278, 322, 325, 328, 343, 345, 348, 349, 351, 358, 365, 367, 372, 376, 391, 399, 406, 407, 414, 433, - 473, 483, 492, 494, 497, 514, 540, 561, 563, 579, 581, 592, 598, 601, 605, - ], - box: [ 60, 364, 619, 620 ], - }, - suit: { - clubs: [ - [ 0, 3 ], - [ 21, 51 ], - [ 169, 176 ], - [ 200, 216 ], - [ 284, 285 ], - [ 322, 339 ], - [ 404, 419 ], - [ 434, 434 ], - [ 468, 488 ], - [ 527, 535 ], - [ 578, 591 ], - ], - diamonds: [ - [ 4, 9 ], - [ 52, 97 ], - [ 177, 187 ], - [ 217, 240 ], - [ 286, 299 ], - [ 340, 352 ], - [ 435, 454 ], - [ 489, 508 ], - [ 536, 545 ], - [ 592, 596 ], - [ 619, 619 ], - ], - hearts: [ - [ 10, 18 ], - [ 98, 134 ], - [ 188, 189 ], - [ 241, 266 ], - [ 300, 303 ], - [ 353, 376 ], - [ 420, 433 ], - [ 455, 466 ], - [ 509, 509 ], - [ 546, 562 ], - [ 597, 603 ], - [ 620, 620 ], - ], - spades: [ - [ 19, 20 ], - [ 135, 168 ], - [ 190, 199 ], - [ 267, 283 ], - [ 304, 321 ], - [ 377, 403 ], - [ 467, 467 ], - [ 510, 526 ], - [ 563, 577 ], - [ 604, 618 ], - ], - }, - map: { - Flanders: [ - [ 0, 20 ], - [ 200, 283 ], - [ 322, 433 ], - ], - Bohemia: [ - [ 21, 199 ], - [ 284, 321 ], - [ 434, 618 ], - ], - UNKNOWN: [ [ 619, 620 ] ], - }, - country: { - Austria: [ [ 0, 168 ] ], - Bavaria: [ [ 169, 199 ] ], - France: [ [ 322, 403 ] ], - Netherlands: [ [ 404, 433 ] ], - Poland: [ [ 434, 467 ] ], - Prussia: [ [ 468, 526 ] ], - Saxony: [ [ 527, 577 ] ], - Silesia: [ [ 578, 618 ] ], - Empire: [ [ 200, 321 ] ], - UNKNOWN: [ [ 619, 620 ] ], - }, - cities: { - name: [ - "Antwerpen", - "Brüssel", - "Geel", - "Mecheln", - "Bastogne", - "Löwen", - "Namur", - "Nivelles", - "Rochefort", - "Verviers", - "Arlon", - "Brügge", - "Eeklo", - "Gent", - "Luxembourg", - "Poperinge", - "Roeselare", - "Tournai", - "Wiltz", - "Ath", - "Mans", - "Aschach", - "Aussig", - "Austerlitz", - "Baden", - "Boskowitz", - "Braunau", - "Brod", - "Brünn", - "Brüx", - "Gloggnitz", - "Gols", - "Güns", - "Hlinsko", - "Kaaden", - "Karlsbad", - "Krieglach", - "Krummau", - "Laun", - "Olmütz", - "Proßnitz", - "Purb", - "Rohrbach", - "Saaz", - "Schlan", - "Schärding", - "Steinamanger", - "Teplitz", - "Trebitsch", - "Wels", - "Zwittau", - "Ödenburg", - "Budweis", - "Enns", - "Friedek Mistek", - "Friedland", - "Gmünd", - "Gran", - "Hohenelbe", - "Horn", - "Italy", - "Jitschin", - "Jungbunzlau", - "Kolin", - "Komorn", - "Krems", - "Kufstein", - "Königgrätz", - "Leipa", - "Leitmeritz", - "Linz", - "Luhatschowitz", - "Melk", - "Melnik", - "Neuhäusel", - "Neutitschein", - "Nimburg", - "Pardubitz", - "Prag", - "Prerau", - "Pápa", - "Raab", - "Raudnitz", - "Reichenberg", - "Rumburg", - "Sillein", - "St. Pölten", - "Sternberg", - "Stuhlweißenburg", - "Tatabanya", - "Tetschen", - "Turnau", - "Unter Haid", - "Vsetin", - "Waidhofen", - "Weißbrunn", - "Zliny", - "Zwettl", - "Abasdorf", - "Bad Ischl", - "Beraun", - "Freiwaldau", - "Gairing", - "Gmunden", - "Hollabrunn", - "Hostau", - "Klattau", - "Korneuburg", - "Kosteletz", - "Kulm", - "Lundenburg", - "Marienbad", - "Mies", - "Mistelbach", - "Nachod", - "Nikolsburg", - "Nürschan", - "Orth", - "Pilsen", - "Pisek", - "Prachatitz", - "Pressburg", - "Prestitz", - "Pribram", - "Rakonitz", - "Schneegattern", - "Schönberg", - "Schüttenhofen", - "Tepl", - "Trautenau", - "Trübau", - "Wien", - "Wildenschwert", - "Wostitz", - "Znaim", - "Amstetten", - "Beneschau", - "Bruck", - "Eger", - "Frankenfels", - "Fratres", - "Freudenthal", - "Galanta", - "Hieflau", - "Iglau", - "Kremnitz", - "Leoben", - "Levice", - "Liezen", - "Mariazell", - "Neutra", - "Orlik", - "Ostrau", - "Pilgram", - "Pistyan", - "Rohr", - "Schemnitz", - "Schiltern", - "Slapy", - "Steyr", - "Tabor", - "Teschen", - "Trentschin", - "Trieben", - "Troppau", - "Tschaslau", - "Tyrnau", - "Wittingau", - "Wotitz", - "Deggendorf", - "Falkenstein", - "Landau", - "Mühldorf", - "Pfarrkirchen", - "Regen", - "Straubing", - "Wasserburg", - "Amberg", - "Landsberg", - "Murnau", - "Neumarkt", - "Rosenheim", - "Schwandorf", - "Starnberg", - "Sulzbach", - "Tegernsee", - "Tirschenreuth", - "Tölz", - "Cham", - "Traunstein", - "Beilngries", - "Dachau", - "Ergoldsbach", - "Freising", - "Ingolstadt", - "Kelheim", - "Landshut", - "München", - "Pfaffenhofen", - "Schrobenhausen", - "Aschaffenburg", - "Bingen", - "Cochem", - "Darmstadt", - "Frankfurt", - "Idar Oberstein", - "Kaiserslautern", - "Lörrach", - "Mainz", - "Mannheim", - "Miltenberg", - "Mülheim", - "Nauheim", - "Wiesbaden", - "Wittlich", - "Worms", - "Zweibrücken", - "Aachen", - "Baden", - "Bruchsal", - "Charleroi", - "Genk", - "Givet", - "Göppingen", - "Heidelberg", - "Heilbronn", - "Karlsruhe", - "Landau", - "Lüttich", - "Maastricht", - "Malmedy", - "Offenburg", - "Pirmasens", - "Prüm", - "Reutlingen", - "Roermond", - "Speyer", - "Stuttgart", - "Tienen", - "Tübingen", - "Wolfach", - "Ahlen", - "Biberach", - "Bocholt", - "Coesfeld", - "Dortmund", - "Ehingen", - "Essen", - "Freiburg", - "Geldern", - "Hamm", - "Kleve", - "Krefeld", - "Lingen", - "Meppen", - "Münster", - "Pfullendorf", - "Ravensburg", - "Reichenbach", - "Rheine", - "Rottweil", - "Saarbrücken", - "Saarlouis", - "Stühlingen", - "Tecklenburg", - "Trier", - "Wesel", - "Barmen", - "Betzdorf", - "Bonn", - "Düsseldorf", - "Euskirchen", - "Gerolstein", - "Gimborn", - "Hagen", - "Iserlohn", - "Jülich", - "Koblenz", - "Köln", - "Limburg", - "Olpe", - "Siegen", - "Waldbröl", - "Wetzlar", - "Freyung", - "Passau", - "Bamberg", - "Bayreuth", - "Bernburg", - "Dessau", - "Erlangen", - "Füssen", - "Kulmbach", - "Köthen", - "Marktredwitz", - "Nürnberg", - "Partenkirchen", - "Quedlinburg", - "Schwabach", - "Weiden", - "Berchtesgaden", - "Hallein", - "Salzburg", - "Werfen", - "Altenburg", - "Arnstadt", - "Augsburg", - "Coburg", - "Donauwörth", - "Eichstätt", - "Erfurt", - "Gera", - "Greiz", - "Hof", - "Jena", - "Kronach", - "Naila", - "Regensburg", - "Rudolstadt", - "Saalfeld", - "Sonneberg", - "Weimar", - "Belfort", - "Châlons-en-Champ.", - "Château-Thierry", - "Colmar", - "Créspy-en-V.", - "Epernay", - "Meaux", - "Montbeliard", - "Mulhouse", - "Provins", - "Reims", - "Rethel", - "Romilly s. S.", - "Sezianne", - "Soissons", - "Valdahon", - "Valmy", - "Vesoul", - "Bar-s.-Aube", - "Bouillon", - "Chaource", - "Chaumont", - "Châtillon s. S.", - "Haguenau", - "Langres", - "Sens", - "St. Dizier", - "Strasbourg", - "Tonnere", - "Troyes", - "Vitry", - "Armientières", - "Autun", - "Avallon", - "Beaumont", - "Beaune", - "Besançon", - "Calais", - "Dijon", - "Dole", - "Dunkerque", - "Gray", - "Italy", - "Lille", - "Longuyon", - "Metz", - "Montbard", - "Montmédy", - "Omans", - "Perne", - "Sedan", - "St. Avold", - "St. Omer", - "Thionville", - "Verdun", - "Amiens", - "Arras", - "Bar-le-Duc", - "Cambrai", - "Charleville-Mézieres", - "Compiègne", - "Douai", - "Doullens", - "Epinal", - "Guise", - "Jussey", - "Laon", - "Lens", - "Lunéville", - "Maubeuge", - "Mondidier", - "Nancy", - "Noyon", - "Péronne", - "Sarrebourg", - "Sarreguemines", - "St. Die", - "St. Quentin", - "Toul", - "Valenciennes", - "Vervins", - "Vittel", - "Alkmaar", - "Amsterdam", - "Bergen", - "Breda", - "Den Haag", - "Dordrecht", - "Eindhoven", - "Haarlem", - "Hertogenbosch", - "Leiden", - "Nijmegen", - "Rotterdam", - "Terneuzen", - "Tilburg", - "Utrecht", - "Venlo", - "Almelo", - "Apeldoorn", - "Arnhem", - "Assen", - "Delfzijl", - "Deventer", - "Dokkum", - "Emmen", - "Enschede", - "Groningen", - "Heerenveen", - "Leeuwarden", - "Meppel", - "Zwolle", - "Krotoszyn", - "Aleksandrów", - "Bełchatów", - "Kalisz", - "Konin", - "Koło", - "Krzepice", - "Krzyż", - "Kępno", - "Lask", - "Miedzychód", - "Miedzyzecz", - "Ostrów", - "Pleszew", - "Sieradz", - "Skwierzyna", - "Turek", - "Warta", - "Wielun", - "Zduńska Wola", - "Złoczew", - "Gostýn", - "Grodzisk", - "Jarocin", - "Kościan", - "Leszno", - "Poznań", - "Rawicz", - "Srem", - "Szamotuły", - "Wolztyn", - "Wronki", - "Wschowa", - "Czestochowa", - "Angermünde", - "Barath", - "Beeskow", - "Berlin", - "Bernau", - "Brandenburg", - "Eberswalde", - "Fehrbellin", - "Freienwalde", - "Fürstenwalde", - "Königs Wusterhausen", - "Luckenwalde", - "Neuruppin", - "Oranienburg", - "Potsdam", - "Schwedt", - "Spandau", - "Templin", - "Treuenbrietzen", - "Zehdenick", - "Zossen", - "Berlinchen", - "Drossen", - "Eisleben", - "Frankfurt", - "Friedeberg", - "Halbenstadt", - "Halle", - "Krossen", - "Küstrin", - "Landsberg", - "Neudamm", - "Pyritz", - "Reppen", - "Schwiebus", - "Seelow", - "Soldin", - "Staßfurt", - "Woldenburg", - "Zielenzig", - "Züllichau", - "Jüterbog", - "Burg", - "Gardelegen", - "Genthin", - "Haldensleben", - "Havelberg", - "Kyritz", - "Magdeburg", - "Oebisfelde", - "Oschersleben", - "Pritzwalk", - "Rathenow", - "Salzwedel", - "Schönebeck", - "Schöningen", - "Stendal", - "Tangermünde", - "Wittenberge", - "Aue", - "Chemnitz", - "Deuben", - "Dippoldiswalde", - "Döbeln", - "Freiberg", - "Marienberg", - "Pirna", - "Rochlitz", - "Artern", - "Aschersleben", - "Bitterfeld", - "Borna", - "Leipzig", - "Merseburg", - "Naumburg", - "Querfurt", - "Sangerhausen", - "Zittau", - "Dahme", - "Dresden", - "Elsterwerda", - "Falkenberg", - "Finsterwalde", - "Grimma", - "Großenhain", - "Herzberg", - "Luckau", - "Lübben", - "Meißsen", - "Oschatz", - "Radeberg", - "Riesa", - "Senftenberg", - "Torgau", - "Wittenberg", - "Bautzen", - "Belzig", - "Cottbus", - "Forst", - "Guben", - "Görlitz", - "Hoyerswerda", - "Lauban", - "Muskau", - "Penzig", - "Plauen", - "Sorau", - "Spremberg", - "Weißwasser", - "Zwickau", - "Breslau", - "Glogau", - "Guhrau", - "Liegnitz", - "Militsch", - "Neumarkt", - "Oels", - "Ohlau", - "Schweidnitz", - "Steinau", - "Strehlen", - "Striegau", - "Trebnitz", - "Wohlau", - "Brieg", - "Kreuzburg", - "Lublinitz", - "Namslau", - "Rosenberg", - "Frankenstein", - "Glatz", - "Grottkau", - "Habelschwerdt", - "Neisse", - "Reichenbach", - "Waldenburg", - "Beuthen", - "Cosel", - "Gleiwitz", - "Groß Strehlitz", - "Grünberg", - "Hirschberg", - "Kattowitz", - "Löwenberg", - "Oppeln", - "Priebus", - "Ratibor", - "Rybnik", - "Sprottau", - "Tichan", - "Ziegenhals", - "East Prussia", - "England", - ], - country: [ - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Austria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Bavaria", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "Empire", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "France", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Netherlands", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Poland", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Prussia", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Saxony", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "Silesia", - "UNKNOWN", - "UNKNOWN", - ], - x: [ - 432, 397, 497, 448, 557, 462, 438, 396, 511, 589, 497, 283, 326, 324, 546, 225, 250, 281, 578, 310, 331, 1543, - 1568, 2134, 1963, 2043, 1438, 1909, 2051, 1481, 1931, 2144, 2060, 1917, 1410, 1375, 1923, 1568, 1531, 2138, 2134, - 2092, 1566, 1458, 1566, 1500, 2107, 1532, 1957, 1562, 2019, 2074, 1638, 1700, 2347, 1792, 1733, 2416, 1858, 1842, - 2282, 1846, 1696, 1756, 2307, 1858, 1277, 1855, 1661, 1619, 1627, 2253, 1792, 1675, 2323, 2261, 1760, 1851, 1641, - 2194, 2209, 2233, 1618, 1758, 1661, 2407, 1856, 2186, 2421, 2367, 1622, 1811, 1631, 2293, 1789, 2281, 2235, 1786, - 1916, 1553, 1568, 2112, 2122, 1565, 1950, 1353, 1452, 1979, 1939, 1530, 2088, 1341, 1384, 2007, 1930, 2017, 1433, - 2072, 1483, 1570, 1567, 2133, 1481, 1568, 1481, 1491, 2074, 1485, 1406, 1924, 2000, 2006, 1989, 1963, 1922, 1728, - 1696, 1849, 1282, 1786, 1783, 2188, 2240, 1686, 1854, 2379, 1764, 2411, 1621, 1797, 2320, 1625, 2302, 1796, 2247, - 1861, 2395, 1853, 1623, 1664, 1678, 2383, 2279, 1677, 2237, 1834, 2226, 1718, 1692, 1415, 1343, 1344, 1367, 1428, - 1435, 1357, 1335, 1207, 1073, 1100, 1146, 1255, 1276, 1149, 1194, 1218, 1274, 1157, 1379, 1331, 1171, 1127, 1276, - 1223, 1161, 1215, 1276, 1184, 1203, 1083, 961, 794, 750, 896, 928, 720, 776, 639, 862, 878, 961, 644, 949, 845, - 709, 837, 703, 642, 784, 893, 378, 549, 429, 956, 936, 947, 834, 793, 533, 590, 578, 719, 728, 625, 906, 625, 848, - 882, 516, 845, 759, 959, 949, 813, 860, 873, 932, 807, 705, 703, 912, 704, 724, 939, 931, 912, 877, 931, 833, 908, - 779, 643, 613, 739, 960, 634, 766, 803, 854, 765, 764, 709, 690, 858, 861, 935, 707, 795, 730, 891, 941, 907, 802, - 955, 1500, 1487, 1053, 1129, 1174, 1255, 1041, 1046, 1123, 1228, 1226, 1052, 1108, 1090, 1045, 1258, 1378, 1428, - 1422, 1444, 1267, 1044, 1047, 1059, 1041, 1092, 1049, 1223, 1252, 1207, 1169, 1118, 1183, 1259, 1095, 1096, 1050, - 1115, 510, 254, 152, 595, 72, 212, 77, 451, 576, 78, 245, 289, 117, 160, 145, 406, 323, 381, 235, 422, 131, 276, - 184, 744, 301, 71, 323, 697, 95, 142, 270, 154, 75, 75, 375, 145, 318, 72, 201, 238, 147, 288, 215, 195, 466, 514, - 136, 421, 318, 78, 384, 578, 80, 549, 389, 79, 139, 382, 182, 322, 69, 193, 71, 483, 229, 388, 193, 141, 542, 290, - 74, 482, 121, 136, 606, 636, 567, 180, 425, 237, 259, 408, 592, 596, 467, 540, 473, 559, 596, 539, 633, 514, 637, - 521, 382, 570, 599, 647, 813, 695, 700, 903, 935, 756, 801, 878, 831, 861, 730, 713, 769, 766, 2144, 2380, 2417, - 2239, 2197, 2296, 2385, 1844, 2234, 2406, 1859, 1859, 2218, 2192, 2316, 1812, 2267, 2318, 2353, 2366, 2335, 2093, - 1938, 2138, 1997, 2005, 2020, 2041, 2068, 1979, 1918, 1911, 1945, 2430, 1552, 1477, 1561, 1445, 1490, 1336, 1514, - 1337, 1561, 1555, 1499, 1413, 1340, 1418, 1395, 1562, 1390, 1450, 1361, 1393, 1450, 1730, 1691, 1168, 1646, 1762, - 1062, 1219, 1758, 1652, 1712, 1636, 1666, 1711, 1770, 1617, 1671, 1145, 1790, 1742, 1816, 1405, 1226, 1158, 1275, - 1119, 1215, 1277, 1175, 1060, 1103, 1241, 1291, 1086, 1197, 1044, 1201, 1231, 1148, 1336, 1351, 1469, 1494, 1407, - 1414, 1414, 1556, 1336, 1092, 1121, 1281, 1281, 1276, 1212, 1185, 1151, 1094, 1729, 1452, 1510, 1444, 1409, 1502, - 1336, 1513, 1406, 1496, 1550, 1453, 1354, 1564, 1400, 1551, 1352, 1334, 1641, 1288, 1623, 1681, 1694, 1728, 1616, - 1782, 1680, 1779, 1269, 1760, 1619, 1687, 1286, 2075, 1925, 1988, 1923, 2122, 2041, 2134, 2137, 1994, 1992, 2082, - 1930, 2066, 1990, 2190, 2259, 2336, 2205, 2287, 2069, 2036, 2137, 2047, 2131, 2022, 1932, 2351, 2262, 2327, 2286, - 1845, 1853, 2405, 1849, 2246, 1759, 2294, 2357, 1855, 2404, 2190, 1875, 935, - ], - y: [ - 528, 587, 573, 563, 832, 641, 705, 662, 803, 719, 909, 474, 491, 538, 941, 479, 532, 582, 887, 647, 691, 1268, - 718, 1097, 1388, 940, 1339, 950, 1056, 758, 1461, 1397, 1518, 896, 802, 844, 1524, 1169, 794, 932, 1011, 1401, - 1229, 841, 839, 1293, 1581, 741, 1036, 1334, 892, 1465, 1156, 1328, 924, 643, 1185, 1422, 687, 1200, 1579, 748, - 746, 845, 1439, 1258, 1529, 795, 716, 747, 1320, 1088, 1323, 798, 1387, 940, 782, 847, 841, 1003, 1525, 1469, 791, - 687, 645, 1022, 1334, 899, 1522, 1482, 680, 722, 1232, 1028, 1161, 1522, 1046, 1228, 1260, 1478, 907, 782, 1249, - 1423, 1210, 994, 1047, 1260, 799, 1568, 1192, 898, 933, 1206, 740, 1164, 958, 1330, 939, 1032, 1089, 1321, 1003, - 961, 889, 1393, 834, 1093, 891, 685, 844, 1327, 805, 1134, 1161, 1390, 908, 1568, 842, 1407, 1089, 790, 1332, - 1479, 1038, 1168, 1596, 1326, 1520, 1468, 1310, 1001, 848, 980, 1196, 1408, 1234, 1092, 947, 1393, 1043, 843, - 1137, 1573, 832, 906, 1268, 1087, 961, 1190, 1138, 1236, 1307, 1270, 1140, 1184, 1340, 1045, 1393, 1473, 1095, - 1425, 1040, 1383, 959, 1470, 926, 1452, 1086, 1421, 1137, 1312, 1187, 1294, 1198, 1169, 1260, 1331, 1246, 1257, - 979, 950, 895, 1013, 943, 1007, 1071, 1493, 960, 1077, 1061, 1437, 901, 906, 942, 1028, 1087, 685, 1248, 1196, - 750, 642, 782, 1284, 1136, 1213, 1195, 1136, 718, 667, 771, 1302, 1134, 833, 1335, 644, 1144, 1261, 675, 1330, - 1340, 545, 1441, 465, 490, 575, 1397, 588, 1387, 547, 594, 491, 594, 391, 332, 504, 1461, 1498, 1418, 440, 1390, - 1072, 1038, 1476, 458, 984, 556, 666, 772, 775, 641, 776, 847, 701, 642, 644, 679, 839, 722, 838, 715, 768, 718, - 831, 1177, 1223, 924, 951, 429, 406, 996, 1473, 898, 435, 884, 1039, 1536, 447, 1091, 973, 1508, 1498, 1440, 1540, - 648, 710, 1303, 847, 1182, 1156, 646, 694, 751, 827, 698, 848, 791, 1136, 724, 771, 800, 654, 1433, 1067, 973, - 1388, 908, 1025, 993, 1469, 1449, 1059, 938, 894, 1086, 1043, 892, 1538, 1054, 1403, 1205, 847, 1235, 1273, 1292, - 1187, 1331, 1160, 1186, 1246, 1304, 1173, 1142, 539, 1496, 1390, 957, 1500, 1499, 475, 1419, 1515, 474, 1407, - 1577, 588, 990, 1078, 1387, 957, 1580, 593, 896, 1098, 536, 1020, 1033, 731, 686, 1142, 707, 840, 840, 649, 659, - 1299, 781, 1331, 845, 642, 1208, 738, 791, 1156, 814, 755, 1226, 1140, 1299, 778, 1168, 663, 831, 1248, 232, 312, - 446, 461, 346, 416, 535, 289, 497, 327, 446, 384, 478, 501, 390, 578, 355, 346, 405, 237, 171, 397, 156, 295, 402, - 191, 213, 174, 262, 316, 395, 320, 496, 378, 268, 285, 581, 131, 469, 436, 177, 237, 427, 351, 430, 202, 325, 354, - 538, 402, 479, 336, 232, 286, 280, 322, 213, 353, 248, 175, 281, 155, 331, 645, 113, 349, 336, 209, 184, 259, 152, - 141, 176, 273, 275, 330, 75, 145, 246, 65, 188, 57, 347, 71, 297, 76, 237, 525, 277, 122, 398, 506, 335, 196, 147, - 141, 64, 277, 276, 229, 103, 396, 81, 218, 311, 392, 297, 153, 282, 260, 119, 121, 300, 250, 340, 63, 214, 168, - 356, 320, 192, 230, 104, 770, 721, 653, 689, 637, 693, 745, 642, 646, 582, 484, 480, 591, 543, 556, 600, 562, 527, - 636, 420, 581, 523, 492, 455, 589, 528, 449, 411, 393, 569, 549, 591, 559, 486, 486, 417, 589, 354, 426, 436, 394, - 585, 533, 570, 479, 533, 795, 430, 474, 541, 729, 528, 408, 394, 502, 436, 471, 499, 564, 588, 441, 593, 571, 435, - 519, 591, 539, 596, 536, 576, 655, 703, 644, 757, 685, 642, 641, 651, 733, 703, 674, 404, 579, 725, 525, 643, 474, - 778, 780, 456, 774, 705, 80, 109, - ], - main_roads: [ - [], - [ 3, 7, 19 ], - [ 407, 3 ], - [ 2, 1 ], - [ 18, 230 ], - [], - [ 220, 222, 228 ], - [ 1, 220 ], - [], - [ 228, 217, 230 ], - [], - [], - [], - [], - [ 375, 18 ], - [], - [], - [ 19, 365 ], - [ 14, 4 ], - [ 1, 17 ], - [], - [ 285, 70 ], - [], - [], - [], - [], - [], - [ 144, 48, 165 ], - [ 133, 48, 40 ], - [], - [], - [], - [ 46, 51 ], - [], - [], - [], - [], - [], - [], - [ 40, 87 ], - [ 28, 39 ], - [ 51, 117 ], - [], - [], - [], - [], - [ 32 ], - [], - [ 28, 27 ], - [], - [], - [ 32, 41 ], - [ 92, 160 ], - [ 72, 70 ], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [ 77, 78, 165 ], - [ 74 ], - [], - [], - [ 114, 77 ], - [], - [], - [ 21, 53, 92 ], - [], - [ 86, 53 ], - [], - [ 64, 142 ], - [], - [], - [ 67, 63 ], - [ 136, 100, 63 ], - [], - [], - [], - [], - [], - [], - [], - [ 131, 72 ], - [ 39, 141 ], - [], - [], - [ 534 ], - [], - [ 70, 52 ], - [], - [], - [], - [], - [], - [], - [], - [ 78, 118 ], - [], - [], - [], - [ 107, 134 ], - [], - [], - [ 131, 104 ], - [], - [], - [], - [ 112, 138 ], - [ 116, 111 ], - [], - [ 598, 67 ], - [], - [ 118, 112 ], - [ 41, 121, 131 ], - [ 100, 116 ], - [], - [], - [ 142, 117 ], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [ 117, 86, 107 ], - [], - [ 134, 28 ], - [ 104, 133, 157 ], - [], - [ 168, 78 ], - [], - [ 294, 111 ], - [], - [], - [ 87, 164 ], - [ 74, 121 ], - [], - [ 157, 27 ], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [ 134, 144 ], - [], - [], - [ 52, 168 ], - [], - [], - [], - [ 141, 614 ], - [ 63, 27 ], - [], - [], - [ 160, 136 ], - [], - [], - [ 196, 173 ], - [], - [ 171, 285 ], - [], - [], - [], - [], - [ 306, 191 ], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [ 178, 197 ], - [], - [ 197, 198, 196 ], - [ 198, 309 ], - [], - [ 193, 171 ], - [ 191, 193 ], - [ 193, 194 ], - [], - [], - [], - [], - [], - [], - [], - [ 215, 232 ], - [], - [ 213, 215 ], - [ 215, 224 ], - [], - [ 330, 248 ], - [], - [ 279, 208 ], - [], - [ 208, 209, 206 ], - [ 261, 232 ], - [ 9, 276 ], - [ 231, 226 ], - [ 226, 225 ], - [ 7, 6 ], - [], - [ 6, 381 ], - [ 237, 306 ], - [ 308, 209 ], - [ 219, 308 ], - [ 227, 218, 219, 237 ], - [ 232, 226 ], - [ 6, 9 ], - [], - [ 4, 9 ], - [ 248, 349, 218 ], - [ 206, 216, 227 ], - [], - [], - [], - [], - [ 226, 223 ], - [], - [], - [], - [], - [], - [], - [ 428, 245 ], - [ 244, 247 ], - [ 258, 306 ], - [ 245, 270 ], - [ 211, 231 ], - [], - [], - [], - [ 270, 419 ], - [], - [], - [], - [], - [], - [ 263, 246 ], - [], - [], - [ 373, 216 ], - [], - [ 258 ], - [], - [], - [], - [], - [], - [ 278, 277 ], - [ 278, 252, 247 ], - [], - [], - [], - [], - [], - [ 217, 278 ], - [ 269, 279 ], - [ 276, 270, 269 ], - [ 277, 213 ], - [], - [], - [], - [], - [], - [ 173, 21 ], - [], - [ 295, 294 ], - [], - [], - [], - [], - [], - [ 495, 522 ], - [ 287, 138 ], - [ 298, 287 ], - [], - [], - [ 309, 295 ], - [], - [], - [], - [], - [], - [], - [], - [ 223, 246, 178 ], - [], - [ 225, 224, 309 ], - [ 308, 194, 298 ], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [ 329, 330 ], - [ 327, 352 ], - [], - [], - [ 328, 382 ], - [ 332, 323 ], - [ 331, 326 ], - [ 358, 322 ], - [ 322, 211 ], - [ 334, 328 ], - [ 388, 333, 327 ], - [ 332, 381 ], - [ 351, 331 ], - [], - [], - [], - [], - [], - [ 348, 351, 344 ], - [], - [], - [], - [ 340, 360 ], - [], - [ 403, 360 ], - [], - [ 352, 340, 379 ], - [ 231, 396 ], - [], - [ 340, 334 ], - [ 323, 348 ], - [], - [], - [], - [], - [], - [ 361, 370, 329 ], - [], - [ 344, 361, 346 ], - [ 360, 358 ], - [], - [], - [], - [ 17, 389 ], - [], - [ 393, 373, 375 ], - [], - [], - [ 358 ], - [], - [], - [ 367, 261 ], - [], - [ 367, 14 ], - [], - [], - [ 389, 395 ], - [ 348, 400 ], - [], - [ 333, 222 ], - [ 326, 394 ], - [], - [], - [], - [], - [], - [ 399, 332 ], - [ 365, 378 ], - [ 396, 393 ], - [], - [], - [ 390, 367, 400, 403 ], - [ 382, 399 ], - [ 378, 399 ], - [ 349, 390 ], - [], - [], - [ 395, 388, 394 ], - [ 379, 393 ], - [], - [], - [ 393, 346 ], - [], - [ 418, 413 ], - [], - [ 409, 2, 417 ], - [ 415, 413 ], - [ 418, 407, 415 ], - [ 419, 417 ], - [], - [], - [ 408, 405 ], - [], - [ 409, 408 ], - [], - [ 410, 407 ], - [ 421, 405, 409 ], - [ 252, 410 ], - [ 433, 428 ], - [ 433, 418 ], - [], - [], - [ 429 ], - [], - [], - [], - [ 420, 244 ], - [ 424, 432 ], - [], - [], - [ 429, 433 ], - [ 432, 420, 421 ], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [ 474, 483 ], - [ 555, 488 ], - [], - [ 482, 484, 478, 472 ], - [ 471, 474 ], - [ 512, 482 ], - [ 472, 468 ], - [ 515, 484 ], - [], - [ 478, 492 ], - [ 471, 477 ], - [], - [], - [], - [ 473, 488, 471 ], - [ 468, 500 ], - [ 471, 475 ], - [], - [], - [], - [ 482, 469 ], - [ 493, 504 ], - [ 501, 497 ], - [], - [ 477, 496 ], - [ 498, 506, 489 ], - [ 518 ], - [ 538, 293 ], - [ 492, 501, 608 ], - [ 490, 498 ], - [ 497, 493 ], - [], - [ 504, 483 ], - [ 496, 490 ], - [], - [], - [ 489, 500 ], - [], - [ 493 ], - [], - [], - [], - [ 516, 512 ], - [], - [ 510, 473 ], - [ 517, 516 ], - [ 515 ], - [ 514, 475 ], - [ 522, 518, 513, 510 ], - [ 513 ], - [ 516, 494 ], - [], - [], - [], - [ 293, 516 ], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [ 90, 547 ], - [], - [], - [], - [ 561, 495 ], - [], - [], - [], - [], - [], - [], - [], - [], - [ 534, 558, 556 ], - [], - [], - [], - [], - [], - [], - [], - [ 565, 469 ], - [ 547, 559 ], - [ 559, 561 ], - [ 547, 563 ], - [ 556, 557 ], - [], - [ 557, 538 ], - [], - [ 558, 568 ], - [], - [ 555 ], - [], - [], - [ 563 ], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [ 585, 586, 583 ], - [ 608, 587 ], - [], - [], - [], - [ 587, 578 ], - [], - [ 592, 578 ], - [ 578, 602 ], - [ 579, 583 ], - [], - [], - [], - [], - [ 612, 585 ], - [], - [], - [], - [], - [], - [ 602, 114 ], - [], - [], - [], - [ 586, 598 ], - [], - [], - [ 614, 606 ], - [ 605, 607 ], - [ 606, 612 ], - [ 496, 579 ], - [], - [], - [], - [ 607, 592 ], - [], - [ 164, 605 ], - [], - [], - [], - [], - [], - [], - ], - roads: [ - [ 13, 3, 406 ], - [ 5 ], - [ 221 ], - [ 0 ], - [ 8 ], - [ 238, 1 ], - [], - [], - [ 341, 222, 4, 228 ], - [], - [ 14, 341 ], - [ 15, 12 ], - [ 11, 13, 416 ], - [ 17, 12, 0 ], - [ 366, 10, 265 ], - [ 16, 11, 362 ], - [ 365, 17, 15 ], - [ 401, 16, 13 ], - [ 233 ], - [ 20 ], - [ 391, 19 ], - [ 42 ], - [ 47, 69, 90 ], - [ 96, 110, 28 ], - [ 155, 30, 131 ], - [ 48, 50, 39 ], - [ 172, 189, 45, 49 ], - [ 33, 153 ], - [ 23 ], - [ 38, 34, 47 ], - [ 36, 24 ], - [ 142, 41, 81 ], - [ 36 ], - [ 77, 130, 27 ], - [ 533, 35, 43, 29 ], - [ 34, 138, 128 ], - [ 137, 32, 30 ], - [ 42, 52 ], - [ 43, 29, 44, 82 ], - [ 25 ], - [ 79 ], - [ 31 ], - [ 284, 21, 37 ], - [ 34, 124, 38 ], - [ 38, 78 ], - [ 26, 285 ], - [ 80 ], - [ 29, 22, 530 ], - [ 25 ], - [ 26, 70, 125 ], - [ 25, 130 ], - [], - [ 120, 167, 37, 56 ], - [ 92, 97 ], - [ 161, 75, 85 ], - [ 609, 83, 545 ], - [ 52, 97 ], - [ 64, 147, 89 ], - [ 91, 129 ], - [ 94, 65 ], - [], - [ 67, 91 ], - [ 73, 68, 83, 76 ], - [ 76 ], - [ 81, 57 ], - [ 59, 97, 86, 98, 134 ], - [ 181 ], - [ 61, 108 ], - [ 62, 90 ], - [ 82, 22 ], - [ 49, 159 ], - [ 96, 162 ], - [], - [ 78, 62 ], - [ 147, 150 ], - [ 54, 152, 79 ], - [ 62, 63, 91 ], - [ 33 ], - [ 44, 82, 73 ], - [ 75, 40, 96 ], - [ 95, 81, 46 ], - [ 31, 64, 80 ], - [ 78, 38, 69 ], - [ 62, 91, 55 ], - [ 90, 545 ], - [ 93, 54, 145 ], - [ 139, 65 ], - [ 126 ], - [ 89 ], - [ 57, 88, 95 ], - [ 22, 84, 68 ], - [ 76, 61, 83, 58 ], - [ 53 ], - [ 96, 85 ], - [ 157, 97, 59 ], - [ 89, 80 ], - [ 79, 93, 71, 23 ], - [ 53, 56, 94, 65 ], - [ 65, 131 ], - [ 125, 103, 109 ], - [ 158 ], - [ 601, 126 ], - [ 110, 121 ], - [ 99, 159 ], - [], - [ 116, 182 ], - [ 122, 188, 127 ], - [ 113 ], - [ 67, 132 ], - [ 99, 148 ], - [ 154, 23, 113, 115, 102 ], - [ 186 ], - [ 128 ], - [ 107, 110 ], - [], - [ 134, 110 ], - [ 105 ], - [], - [ 124, 123, 122 ], - [ 160, 122 ], - [ 52, 127 ], - [ 102, 166 ], - [ 119, 106, 118 ], - [ 151, 118 ], - [ 43, 118 ], - [ 49, 302, 99 ], - [ 130, 101, 87 ], - [ 106, 120 ], - [ 35, 112 ], - [ 58, 598, 603 ], - [ 132, 33, 126, 50 ], - [ 98, 24 ], - [ 108, 130, 600 ], - [], - [ 65, 115 ], - [ 159, 139 ], - [ 165, 153 ], - [ 146, 36 ], - [ 573, 527, 35 ], - [ 135, 149, 143, 155, 86 ], - [ 167, 157 ], - [ 618 ], - [ 31 ], - [ 148, 139 ], - [], - [ 85, 162, 156 ], - [ 163, 137 ], - [ 156, 74, 57 ], - [ 109, 163, 143 ], - [ 139 ], - [ 156, 74 ], - [ 160, 158, 123 ], - [ 164, 161, 75 ], - [ 27, 136, 160 ], - [ 162, 156, 110, 166 ], - [ 139, 24 ], - [ 145, 154, 150, 147 ], - [ 140, 94 ], - [ 151, 100 ], - [ 103, 135, 70 ], - [ 153, 151, 119 ], - [ 152, 617, 54 ], - [ 71, 145, 154 ], - [ 148, 146 ], - [ 152 ], - [ 136 ], - [ 121, 154 ], - [ 52, 140 ], - [], - [ 285, 174, 175 ], - [ 188, 175, 317 ], - [ 175 ], - [ 176, 26, 173 ], - [ 172 ], - [ 188, 169 ], - [ 169, 171, 170 ], - [ 181, 197, 172, 196 ], - [ 317, 180, 184 ], - [ 183, 291 ], - [ 291, 187, 296 ], - [ 177, 298, 190 ], - [ 197, 185, 66, 189, 176 ], - [ 105, 188, 299, 317 ], - [ 178, 197, 187 ], - [ 177, 299, 287 ], - [ 187, 181 ], - [ 111, 299 ], - [ 183, 179, 185 ], - [ 182, 106, 170, 174 ], - [ 181, 26, 300, 302 ], - [ 180, 195, 194 ], - [ 199 ], - [ 196, 317 ], - [], - [ 199, 190 ], - [ 317, 190 ], - [ 176, 192 ], - [ 183, 181, 176 ], - [], - [ 306, 308, 194, 191 ], - [ 204, 210 ], - [ 205, 208 ], - [ 272, 277, 214 ], - [ 204, 209 ], - [ 208, 203, 212, 200 ], - [ 261, 214, 201 ], - [], - [ 211, 263 ], - [ 201, 204 ], - [ 203, 236 ], - [ 200, 224 ], - [ 207 ], - [ 204, 283 ], - [], - [ 265, 202, 205 ], - [], - [], - [ 271, 235 ], - [], - [ 224 ], - [ 391 ], - [ 238, 2, 410 ], - [ 8 ], - [ 225, 234 ], - [ 210, 219 ], - [ 223 ], - [], - [ 236, 345 ], - [ 8, 229, 238 ], - [ 228, 235 ], - [ 233 ], - [ 240 ], - [], - [ 265, 18, 230, 272, 271 ], - [ 223, 239, 246 ], - [ 229, 217, 419 ], - [ 209, 227 ], - [ 239 ], - [ 228, 221, 5 ], - [ 234, 237, 240 ], - [ 239, 231, 260 ], - [ 264, 250 ], - [ 257, 246 ], - [ 422, 266, 244 ], - [ 243, 259, 255 ], - [ 274 ], - [ 242, 234 ], - [ 266 ], - [], - [ 251, 252 ], - [ 241, 274, 275 ], - [ 414, 249, 266 ], - [ 249 ], - [ 254, 264, 259 ], - [ 427, 253 ], - [ 244, 264 ], - [ 258, 257 ], - [ 256, 242, 291 ], - [ 260, 256 ], - [ 253, 244 ], - [ 240, 258 ], - [ 262, 205 ], - [ 261, 265 ], - [ 207 ], - [ 253, 255, 241 ], - [ 262, 14, 214, 233 ], - [ 247, 251, 243 ], - [ 274, 278 ], - [ 281, 269 ], - [ 282, 268, 271 ], - [], - [ 233, 217, 269 ], - [ 233, 202 ], - [ 282, 280, 274 ], - [ 245, 250, 267, 273 ], - [ 250, 280 ], - [], - [ 202 ], - [ 267 ], - [ 283 ], - [ 273, 275, 281 ], - [ 280, 268, 283 ], - [ 269, 273 ], - [ 212, 279, 281 ], - [ 285, 42 ], - [ 45, 169, 284 ], - [ 307, 292, 290 ], - [ 184, 292 ], - [ 537, 293 ], - [ 522, 512, 564, 538 ], - [ 286, 295 ], - [ 257, 178, 179, 296 ], - [ 315, 313, 287, 286 ], - [ 288 ], - [ 313, 299 ], - [ 290 ], - [ 291, 179 ], - [ 494, 537 ], - [ 180 ], - [ 186, 182, 184, 294 ], - [ 189 ], - [ 302, 303 ], - [ 189, 301, 125 ], - [ 301 ], - [ 539, 577, 311 ], - [ 318, 310 ], - [ 199 ], - [ 286, 315, 320 ], - [ 199 ], - [], - [ 536, 305, 321 ], - [ 542, 314, 312, 304 ], - [ 573, 311 ], - [ 292, 294, 573, 316 ], - [ 318, 311, 321 ], - [ 307, 292 ], - [ 313, 319 ], - [ 182, 177, 170, 192, 195 ], - [ 319, 305, 314 ], - [ 316, 320, 318 ], - [ 319, 307 ], - [ 542, 314, 310 ], - [ 339, 385 ], - [ 338 ], - [ 328, 327, 336 ], - [ 330, 349 ], - [], - [ 335, 324 ], - [ 324 ], - [ 337 ], - [ 325 ], - [], - [], - [ 356 ], - [ 347, 335 ], - [ 334, 327 ], - [ 324, 388, 394 ], - [ 370, 329 ], - [ 323, 348, 356 ], - [ 363, 358, 387, 322 ], - [ 343 ], - [ 10, 372, 8 ], - [ 350, 344, 351, 347 ], - [ 346, 340, 348 ], - [ 342 ], - [ 397, 349, 227 ], - [ 343, 387 ], - [ 342, 334 ], - [ 343, 338 ], - [ 325, 345 ], - [ 355, 342 ], - [ 342 ], - [], - [ 374, 389, 362 ], - [ 357, 355 ], - [ 368, 354, 350 ], - [ 338, 333, 376, 372 ], - [ 361, 354, 360 ], - [ 339 ], - [ 362, 374 ], - [ 357, 368, 363 ], - [ 357 ], - [ 15, 353, 359 ], - [ 360, 339 ], - [], - [ 16 ], - [ 376, 369, 14 ], - [], - [ 360, 355 ], - [ 366, 372 ], - [ 337 ], - [ 384, 374 ], - [ 381, 369, 356, 341 ], - [ 397 ], - [ 371, 353, 359 ], - [], - [ 379, 356, 366 ], - [ 392, 395, 384 ], - [ 383, 384 ], - [ 376 ], - [ 395, 391, 383 ], - [ 402, 372 ], - [], - [ 380, 401, 378 ], - [ 377, 378, 371 ], - [ 322, 398, 387, 390 ], - [ 399, 402 ], - [ 346, 339, 385 ], - [ 336 ], - [ 353 ], - [ 398, 385 ], - [ 380, 402, 220, 20, 401 ], - [ 394, 377 ], - [], - [ 336, 392 ], - [ 377, 380 ], - [ 397 ], - [ 396, 345, 373 ], - [ 385, 390 ], - [ 386 ], - [], - [ 391, 383, 17 ], - [ 386, 381, 391 ], - [], - [ 411 ], - [ 411 ], - [ 407, 0, 416 ], - [ 406 ], - [], - [ 414 ], - [ 221, 412 ], - [ 405, 404 ], - [ 410, 414 ], - [], - [ 412, 251, 409, 422 ], - [], - [ 12, 406 ], - [], - [], - [ 235 ], - [ 425, 427 ], - [ 422 ], - [ 414, 421, 425, 243 ], - [ 427, 429 ], - [], - [ 422, 420 ], - [ 429, 431 ], - [ 432, 423, 420, 254 ], - [], - [ 426, 423 ], - [ 431, 432 ], - [ 426, 430 ], - [ 430, 427 ], - [], - [ 455, 446, 582 ], - [ 439, 453 ], - [ 443, 440 ], - [ 448, 450, 446, 447 ], - [ 457, 439, 450 ], - [ 438, 435 ], - [ 436, 467, 452 ], - [ 465, 493 ], - [ 584, 454, 446 ], - [ 453, 436 ], - [ 449, 465, 445 ], - [ 502, 444, 456 ], - [ 437, 442, 434 ], - [ 457, 437 ], - [ 454, 453, 451, 437 ], - [ 507, 444 ], - [ 451, 437, 438 ], - [ 448, 450 ], - [ 440, 596, 454 ], - [ 435, 443, 448 ], - [ 442, 452, 448 ], - [ 457, 434, 459 ], - [ 445, 463, 464 ], - [ 462, 438, 447, 455 ], - [ 464, 462, 459 ], - [ 455, 461, 458, 466 ], - [ 462, 463 ], - [ 459, 580, 582 ], - [ 458, 460, 457 ], - [ 465, 456, 460 ], - [ 508, 456, 458 ], - [ 444, 441, 463 ], - [ 459, 579 ], - [ 440, 610 ], - [ 485, 499 ], - [], - [ 555, 492, 567 ], - [], - [], - [ 564 ], - [ 476, 481 ], - [ 480 ], - [ 503, 497, 474 ], - [], - [ 488 ], - [ 486, 488, 509 ], - [ 519, 475, 487 ], - [ 484, 474, 487 ], - [ 484 ], - [ 499 ], - [ 520, 482, 481 ], - [ 487, 468 ], - [ 564, 479, 562 ], - [ 481, 480, 485 ], - [ 479, 478 ], - [], - [ 507 ], - [ 544, 495 ], - [ 470, 503, 501 ], - [ 441 ], - [ 297 ], - [ 540, 541, 491 ], - [], - [ 476, 499 ], - [], - [ 468, 483, 504, 497 ], - [], - [ 492, 502 ], - [ 501, 508, 445 ], - [ 492, 476 ], - [ 499 ], - [ 522, 537 ], - [], - [ 490, 449 ], - [ 502, 464, 608 ], - [ 479, 546, 553 ], - [], - [ 521, 524 ], - [ 525, 289 ], - [ 524 ], - [ 524, 519 ], - [], - [], - [ 523, 521 ], - [ 523 ], - [ 514, 526, 480 ], - [ 525, 484 ], - [ 517, 511, 526 ], - [ 289, 505 ], - [ 518, 517 ], - [ 513, 525, 511, 514 ], - [ 524, 512, 520 ], - [ 519, 521 ], - [ 138, 528 ], - [ 577, 535, 527, 531, 532 ], - [ 547, 531, 532, 530 ], - [ 47, 529 ], - [ 556, 551, 529, 528 ], - [ 528, 529, 533 ], - [ 532, 34 ], - [], - [ 539, 528 ], - [ 542, 310, 543, 544 ], - [ 544, 288, 505, 297 ], - [ 562, 289 ], - [ 535, 304, 540 ], - [ 557, 551, 539, 541, 495 ], - [ 540, 495, 542, 543 ], - [ 541, 311, 321, 536 ], - [ 536, 541 ], - [ 536, 491, 537 ], - [ 568, 84, 55 ], - [ 554, 509 ], - [ 529 ], - [ 552, 559, 549 ], - [ 548, 550, 553, 561 ], - [ 560, 549, 554 ], - [ 540, 531 ], - [ 558, 560, 556, 548 ], - [ 509, 549, 562 ], - [ 555, 550, 546 ], - [ 470, 554 ], - [ 552, 531 ], - [ 540 ], - [ 569, 552 ], - [ 548 ], - [ 569, 565, 552, 550 ], - [ 549 ], - [ 486, 553, 538 ], - [ 569, 576 ], - [ 473, 289, 486 ], - [ 566, 575, 560 ], - [ 567, 565, 571 ], - [ 470, 574, 566 ], - [ 572, 570, 545 ], - [ 575, 560, 558, 563 ], - [ 568, 609 ], - [ 566, 576, 613 ], - [ 568, 611, 616 ], - [ 138, 313, 312, 577 ], - [ 608, 567 ], - [ 565, 569 ], - [ 563, 571 ], - [ 573, 528, 304 ], - [ 584, 588, 591 ], - [ 466, 616, 580 ], - [ 461, 579 ], - [ 609, 611, 591, 616 ], - [ 461, 434, 584, 590 ], - [], - [ 595, 442, 582, 578 ], - [], - [ 603, 589 ], - [ 591, 590 ], - [ 578, 599, 602 ], - [ 586, 609 ], - [ 587, 582 ], - [ 581, 578, 587 ], - [ 595, 599 ], - [ 596, 595 ], - [ 596, 604, 612 ], - [ 593, 592, 584 ], - [ 452, 594, 593 ], - [ 602, 601 ], - [ 600, 129, 601 ], - [ 592, 588, 601 ], - [ 132, 598 ], - [ 597, 598, 101, 618, 599 ], - [ 588, 603, 597 ], - [ 586, 609, 129, 602 ], - [ 594, 606 ], - [ 618 ], - [ 615, 610, 604 ], - [], - [ 508, 616, 574 ], - [ 589, 581, 603, 570, 55 ], - [ 606, 617, 467 ], - [ 581, 572 ], - [ 594, 618 ], - [ 571, 616 ], - [ 615 ], - [ 617, 614, 606 ], - [ 579, 581, 608, 572, 613 ], - [ 161, 615, 610 ], - [ 601, 612, 605, 141 ], - [], - [], - ], - }, -} +const data = {"type":{"major_fortress":[0,1,2,86,87,212,213,292,293,402,403,500,501,573,574],"minor_fortress":[3,4,5,6,7,8,9,88,89,90,91,92,93,94,95,96,97,98,214,215,216,217,218,219,220,294,295,296,297,298,299,300,301,302,303,404,405,406,407,408,409,410,411,412,457,458,459,460,461,462,463,502,503,504,505,506,507,508,509,510,511,575,576,577],"box":[211,572,619,620]},"suit":{"clubs":[[0,85],[402,456]],"diamonds":[[86,211],[457,499],[619,619]],"hearts":[[212,291],[500,572],[620,620]],"spades":[[292,401],[573,618]]},"country":{"Austria":[2,6,8,9,11,13,14,15,19,20,21,22,35,36,38,39,40,41,42,44,47,61,62,65,66,67,69,71,77,78,82,86,87,89,92,96,97,98,113,116,117,119,120,122,123,124,125,127,128,131,136,142,143,145,147,155,157,160,163,165,168,169,170,174,181,184,187,188,190,192,195,197,198,199,202,208,211,213,216,218,219,221,222,223,230,231,232,241,242,245,246,248,251,253,255,256,257,258,259,260,262,264,265,266,268,273,274,275,279,281,282,285,288,291,296,297,299,302,303,305,310,312,323,325,326,337,344,348,349,350,352,355,358,360,363,364,371,376,380,386,388,390,391,392,393,394,398,399,407,414,427,434,459,460,467,481,485,497,503,505,508,515,533,540,557,561,571,579,604],"Bavaria":[24,29,46,51,58,63,73,81,94,100,151,156,173,177,185,189,191,193,196,214,280,293,300,301,308,317,321,324,343,362,377],"Empire":[33,57,103,104,106,110,114,118,137,138,146,158,161,166,176,201,224,239,272,284,304,306,307,314,318,319,320,329,331,339,341,345,354,370,372,374,381,395,409,410,415,416,419,421,426,430,431,433,435,438,439,453,454,455,456,464,465,469,471,473,474,475,476,477,478,479,482,483,484,486,487,488,489,490,492,493,494,496,499,509,512,523,524,526,531,534,537,538,539,542,544,545,547,550,553,556,558,559,560,562,563,564,567,568,570,575,581,582,583,589,591,592,593,595,596,598,599,602,607,611,617,618],"France":[403,404,408,411,417,418,420,425,436,437,440,441,442,444,445,449,450,452,457,458,461,462,463,466,468,470,472,480,491,495,498,500,502,504,506,507,510,516,519,520,521,522,525,530,532,541,548,551,552,554,555,565,566,569,572,573,574,576,577,578,580,584,585,586,587,588,590,594,597,600,601,603,605,606,608,609,610,612,613,614,615,616],"Netherlands":[402,405,406,412,413,422,423,424,428,429,432,443,446,447,448,451,501,511,513,514,517,518,527,528,529,535,536,543,546,549],"Poland":[43,99,107,126,129,130,134,135,139,141,149,150,159,162,180,182,194,200,203,205,210,233,235,243,247,249,263,269,277,278,287,289,290,316],"Prussia":[0,3,7,10,16,17,18,28,30,32,34,45,48,53,56,60,70,76,80,84,85,90,91,93,105,111,112,115,121,133,140,154,164,171,178,179,183,186,204,206,209,244,292,298,313,327,328,336,346,356,359,367,368,375,378,379,385,387,397],"Saxony":[12,23,25,26,27,31,49,59,64,95,101,102,108,109,148,153,167,175,207,212,220,225,226,227,228,234,237,240,250,252,254,261,267,271,276,286,294,309,315,322,334,335,340,347,353,361,365,382,383,396,401],"Silesia":[1,4,5,37,50,52,54,55,68,72,74,75,79,83,88,132,144,152,172,215,217,229,236,238,270,283,295,311,330,332,333,338,342,351,357,366,369,373,384,389,400],"UNKNOWN":[619,620]},"map":{"Bohemia":[[0,401]],"Flanders":[[402,618]],"UNKNOWN":[[619,620]]},"cities":{"name":["Berlin","Breslau","Brünn","Brandenburg","Glogau","Liegnitz","Olmütz","Schwedt","Zwittau","Ödenburg","Angermünde","Aschach","Aue","Aussig","Austerlitz","Baden","Barath","Beeskow","Bernau","Boskowitz","Braunau","Brod","Brüx","Chemnitz","Deggendorf","Deuben","Dippoldiswalde","Döbeln","Eberswalde","Falkenstein","Fehrbellin","Freiberg","Freienwalde","Freyung","Fürstenwalde","Gloggnitz","Gols","Guhrau","Güns","Hlinsko","Kaaden","Karlsbad","Krieglach","Krotoszyn","Krummau","Königs Wusterhausen","Landau","Laun","Luckenwalde","Marienberg","Militsch","Mühldorf","Neumarkt","Neuruppin","Oels","Ohlau","Oranienburg","Passau","Pfarrkirchen","Pirna","Potsdam","Proßnitz","Purb","Regen","Rochlitz","Rohrbach","Saaz","Schlan","Schweidnitz","Schärding","Spandau","Steinamanger","Steinau","Straubing","Strehlen","Striegau","Templin","Teplitz","Trebitsch","Trebnitz","Treuenbrietzen","Wasserburg","Wels","Wohlau","Zehdenick","Zossen","Linz","Prag","Brieg","Budweis","Frankfurt","Halbenstadt","Königgrätz","Küstrin","Landsberg","Leipzig","Melk","Nimburg","Zwettl","Aleksandrów","Amberg","Artern","Aschersleben","Bamberg","Bayreuth","Berlinchen","Bernburg","Bełchatów","Bitterfeld","Borna","Dessau","Drossen","Eisleben","Enns","Erlangen","Friedeberg","Friedek Mistek","Friedland","Füssen","Gmünd","Gran","Halle","Hohenelbe","Horn","Jitschin","Jungbunzlau","Kalisz","Kolin","Komorn","Konin","Koło","Krems","Kreuzburg","Krossen","Krzepice","Krzyż","Kufstein","Kulmbach","Köthen","Kępno","Landsberg","Lask","Leipa","Leitmeritz","Lublinitz","Luhatschowitz","Marktredwitz","Melnik","Merseburg","Miedzychód","Miedzyzecz","Murnau","Namslau","Naumburg","Neudamm","Neuhäusel","Neumarkt","Neutitschein","Nürnberg","Ostrów","Pardubitz","Partenkirchen","Pleszew","Prerau","Pyritz","Pápa","Quedlinburg","Querfurt","Raab","Raudnitz","Reichenberg","Reppen","Rosenberg","Rosenheim","Rumburg","Sangerhausen","Schwabach","Schwandorf","Schwiebus","Seelow","Sieradz","Sillein","Skwierzyna","Soldin","St. Pölten","Starnberg","Staßfurt","Sternberg","Stuhlweißenburg","Sulzbach","Tatabanya","Tegernsee","Tetschen","Tirschenreuth","Turek","Turnau","Tölz","Unter Haid","Vsetin","Waidhofen","Warta","Weiden","Weißbrunn","Wielun","Woldenburg","Zduńska Wola","Zielenzig","Zittau","Zliny","Züllichau","Złoczew","Italy","Dresden","Wien","Cham","Glatz","Klattau","Neisse","Pilsen","Pressburg","Torgau","Abasdorf","Bad Ischl","Beraun","Berchtesgaden","Dahme","Elsterwerda","Falkenberg","Finsterwalde","Frankenstein","Freiwaldau","Gairing","Gmunden","Gostýn","Grimma","Grodzisk","Grottkau","Großenhain","Habelschwerdt","Hallein","Herzberg","Hollabrunn","Hostau","Jarocin","Jüterbog","Korneuburg","Kosteletz","Kościan","Kulm","Leszno","Luckau","Lundenburg","Lübben","Marienbad","Meißen","Mies","Mistelbach","Nachod","Nikolsburg","Nürschan","Orth","Oschatz","Pisek","Poznań","Prachatitz","Prestitz","Pribram","Radeberg","Rakonitz","Rawicz","Reichenbach","Riesa","Salzburg","Schneegattern","Schönberg","Schüttenhofen","Senftenberg","Srem","Szamotuły","Tepl","Traunstein","Trautenau","Trübau","Waldenburg","Werfen","Wildenschwert","Wittenberg","Wolztyn","Wostitz","Wronki","Wschowa","Znaim","Magdeburg","München","Bautzen","Cosel","Eger","Frankenfels","Havelberg","Iglau","Ingolstadt","Landshut","Schemnitz","Tabor","Altenburg","Amstetten","Arnstadt","Augsburg","Beilngries","Belzig","Beneschau","Beuthen","Bruck","Burg","Coburg","Cottbus","Czestochowa","Dachau","Donauwörth","Eichstätt","Erfurt","Ergoldsbach","Forst","Fratres","Freising","Freudenthal","Galanta","Gardelegen","Genthin","Gera","Gleiwitz","Greiz","Groß Strehlitz","Grünberg","Guben","Görlitz","Haldensleben","Hieflau","Hirschberg","Hof","Hoyerswerda","Jena","Kattowitz","Kelheim","Kremnitz","Kronach","Kyritz","Lauban","Leoben","Levice","Liezen","Löwenberg","Mariazell","Muskau","Naila","Neutra","Oebisfelde","Oppeln","Orlik","Oschersleben","Ostrau","Penzig","Pfaffenhofen","Pilgram","Pistyan","Plauen","Priebus","Pritzwalk","Rathenow","Ratibor","Regensburg","Rohr","Rudolstadt","Rybnik","Saalfeld","Salzwedel","Schiltern","Schrobenhausen","Schönebeck","Schöningen","Slapy","Sonneberg","Sorau","Spremberg","Sprottau","Stendal","Steyr","Tangermünde","Teschen","Tichan","Trentschin","Trieben","Troppau","Tschaslau","Tyrnau","Weimar","Weißwasser","Wittenberge","Wittingau","Wotitz","Ziegenhals","Zwickau","Amsterdam","Reims","Belfort","Bergen","Breda","Brüssel","Colmar","Mainz","Mannheim","Meaux","Nijmegen","Alkmaar","Antwerpen","Aschaffenburg","Bingen","Châlons-en-Champ.","Château-Thierry","Cochem","Créspy-en-V.","Darmstadt","Den Haag","Dordrecht","Eindhoven","Epernay","Frankfurt","Geel","Haarlem","Hertogenbosch","Idar Oberstein","Kaiserslautern","Leiden","Lörrach","Mecheln","Miltenberg","Montbeliard","Mulhouse","Mülheim","Nauheim","Provins","Rethel","Romilly s. S.","Rotterdam","Sezianne","Soissons","Terneuzen","Tilburg","Utrecht","Valdahon","Valmy","Venlo","Vesoul","Wiesbaden","Wittlich","Worms","Zweibrücken","Chaumont","Haguenau","Namur","Rochefort","St. Dizier","Strasbourg","Troyes","Aachen","Baden","Bar-s.-Aube","Bastogne","Bouillon","Bruchsal","Chaource","Charleroi","Châtillon s. S.","Genk","Givet","Göppingen","Heidelberg","Heilbronn","Karlsruhe","Landau","Langres","Löwen","Lüttich","Maastricht","Malmedy","Nivelles","Offenburg","Pirmasens","Prüm","Reutlingen","Roermond","Sens","Speyer","Stuttgart","Tienen","Tonnere","Tübingen","Verviers","Vitry","Wolfach","Dijon","Groningen","Besançon","Brügge","Lille","Luxembourg","Metz","Sedan","Tournai","Trier","Verdun","Zwolle","Ahlen","Almelo","Apeldoorn","Arlon","Armientières","Arnhem","Assen","Autun","Avallon","Beaumont","Beaune","Biberach","Bocholt","Calais","Coesfeld","Delfzijl","Deventer","Dokkum","Dole","Dortmund","Dunkerque","Eeklo","Ehingen","Emmen","Enschede","Essen","Freiburg","Geldern","Gent","Gray","Hamm","Heerenveen","Kleve","Krefeld","Leeuwarden","Lingen","Longuyon","Meppel","Meppen","Montbard","Montmédy","Münster","Omans","Perne","Pfullendorf","Poperinge","Ravensburg","Reichenbach","Rheine","Roeselare","Rottweil","Saarbrücken","Saarlouis","St. Avold","St. Omer","Stühlingen","Tecklenburg","Thionville","Wesel","Wiltz","Italy","Amiens","Nancy","Köln","Maubeuge","St. Quentin","Arras","Ath","Bar-le-Duc","Barmen","Betzdorf","Bonn","Cambrai","Charleville-Mézieres","Compiègne","Douai","Doullens","Düsseldorf","Epinal","Euskirchen","Gerolstein","Gimborn","Guise","Hagen","Iserlohn","Jussey","Jülich","Koblenz","Laon","Lens","Limburg","Lunéville","Mans","Mondidier","Noyon","Olpe","Péronne","Sarrebourg","Sarreguemines","Siegen","St. Die","Toul","Valenciennes","Vervins","Vittel","Waldbröl","Wetzlar","East Prussia","England"],"x":[1445,2075,2051,1336,1925,1923,2138,1562,2019,2074,1552,1543,1336,1568,2134,1963,1477,1561,1490,2043,1438,1909,1481,1351,1415,1469,1494,1407,1514,1343,1337,1414,1561,1500,1555,1931,2144,1988,2060,1917,1410,1375,1923,2144,1568,1499,1344,1531,1413,1414,2122,1367,2041,1340,2134,2137,1418,1487,1428,1556,1395,2134,2092,1435,1336,1566,1458,1566,1994,1500,1390,2107,1992,1357,2082,1930,1450,1532,1957,2066,1361,1335,1562,1990,1393,1450,1627,1641,2190,1638,1646,1062,1855,1652,1073,1276,1792,1760,1786,2380,1207,1092,1121,1053,1129,1730,1174,2417,1281,1281,1255,1691,1168,1700,1041,1762,2347,1792,1046,1733,2416,1219,1858,1842,1846,1696,2239,1756,2307,2197,2296,1858,2259,1758,2385,1844,1277,1123,1228,2234,1712,2406,1661,1619,2336,2253,1226,1675,1212,1859,1859,1100,2205,1185,1636,2323,1146,2261,1052,2218,1851,1108,2192,2194,1666,2209,1090,1151,2233,1618,1758,1711,2287,1255,1661,1094,1045,1276,1770,1617,2316,2407,1812,1671,1856,1149,1145,2186,2421,1194,2367,1218,1622,1274,2267,1811,1157,1631,2293,1789,2318,1258,2281,2353,1790,2366,1742,1729,2235,1816,2335,2282,1510,2006,1379,2036,1452,2131,1483,2133,1352,1916,1553,1568,1378,1452,1444,1409,1502,2069,2112,2122,1565,2093,1336,1938,2137,1513,2047,1428,1406,1950,1353,2138,1405,1979,1939,1997,1530,2005,1496,2088,1550,1341,1453,1384,2007,1930,2017,1433,2072,1354,1570,2020,1567,1481,1568,1564,1481,2041,2022,1400,1422,1491,2074,1485,1551,2068,1979,1406,1331,1924,2000,1932,1444,1989,1334,1918,1963,1911,1945,1922,1175,1184,1641,2262,1282,1786,1215,1854,1161,1276,2395,1678,1267,1728,1044,1047,1171,1288,1696,2351,1849,1226,1059,1623,2430,1127,1041,1092,1049,1276,1681,1783,1223,2188,2240,1158,1275,1223,2327,1252,2286,1845,1694,1728,1119,1686,1853,1207,1616,1169,2405,1215,2379,1118,1277,1782,1764,2411,1621,1849,1797,1680,1183,2320,1060,2246,1625,1103,2302,1779,1203,1796,2247,1269,1759,1241,1291,2294,1259,1861,1095,2357,1096,1086,1853,1083,1197,1044,1623,1050,1760,1619,1855,1201,1664,1231,2383,2404,2279,1677,2237,1834,2226,1115,1687,1148,1718,1692,2190,1286,596,245,510,467,540,397,595,862,878,77,637,592,432,961,794,254,152,750,72,896,473,559,596,212,928,497,539,633,720,776,514,639,448,961,451,576,644,949,78,289,117,521,160,145,382,570,599,406,323,647,381,845,709,837,703,276,744,438,511,323,697,142,642,784,235,557,422,893,131,378,184,549,429,956,936,947,834,793,301,462,533,590,578,396,719,728,625,906,625,71,848,882,516,95,845,589,270,759,201,861,318,283,195,546,514,384,281,634,389,766,959,813,695,497,154,700,903,75,75,375,145,949,813,72,860,935,756,801,238,873,147,326,932,878,831,807,705,703,324,288,912,730,704,724,713,939,466,769,931,136,421,912,318,78,877,225,931,833,908,250,779,643,613,578,80,739,960,549,766,578,215,79,482,730,290,180,139,310,382,803,854,765,182,322,69,193,71,764,483,709,690,858,229,861,935,388,707,795,193,141,891,542,331,74,121,941,136,606,636,907,567,425,237,259,408,802,955,1875,935],"y":[209,528,1056,259,408,502,932,65,892,1465,113,1268,770,718,1097,1388,349,336,184,940,1339,950,758,721,1190,653,689,637,152,1138,141,693,176,1177,273,1461,1397,394,1518,896,802,844,1524,395,1169,275,1236,794,330,745,436,1307,471,75,499,564,145,1223,1270,642,246,1011,1401,1140,646,1229,841,839,588,1293,188,1581,441,1184,593,571,57,741,1036,435,347,1340,1334,519,71,297,1320,841,591,1156,277,398,795,196,1393,543,1323,782,1228,320,1045,582,484,924,951,76,429,496,480,591,406,237,525,1328,996,122,924,643,1473,1185,1422,506,687,1200,748,746,378,845,1439,268,285,1258,539,335,581,131,1529,898,435,469,147,436,716,747,596,1088,884,798,556,177,237,1473,536,600,141,1387,1095,940,1039,427,847,1536,351,1003,64,1525,447,562,1469,791,687,277,576,1425,645,527,1091,1040,276,229,430,1022,202,103,1334,1383,396,899,1522,959,1482,1470,680,926,325,722,1452,1232,1028,1161,354,973,1522,538,81,402,218,636,1046,311,479,1579,581,1327,1086,703,1047,685,939,1321,486,1260,1478,907,1508,420,523,492,455,655,782,1249,1423,336,589,232,644,528,757,1498,449,1210,994,286,392,1260,799,280,1568,322,411,1192,393,898,569,933,1206,740,1164,958,1330,549,1032,213,1089,1003,961,591,889,353,642,559,1440,1393,834,1093,486,248,175,891,1421,685,844,641,1540,805,417,281,1134,155,331,1161,300,1331,589,733,842,1407,119,1038,1198,1260,1234,1043,648,1390,710,1303,1137,354,908,651,1568,297,847,426,645,1312,1182,1156,646,1187,436,1089,1294,790,1332,153,282,694,703,751,674,404,394,585,260,1479,579,827,533,698,725,1169,1168,848,121,570,1596,1326,1520,525,1468,479,791,1310,250,643,1001,340,848,533,1246,980,1196,795,474,63,214,778,1136,1408,724,780,771,168,1092,1257,356,320,947,800,430,474,456,192,1393,230,843,774,1137,1573,832,906,1268,654,541,104,1087,961,705,729,312,938,1433,446,461,587,1388,960,1077,993,446,232,528,979,950,1067,973,895,908,1013,346,416,535,1025,943,573,289,497,1007,1071,327,1493,563,1061,1469,1449,1437,901,1059,894,1086,384,1043,892,478,501,390,1538,1054,578,1403,906,942,1028,1087,1273,1187,705,803,1186,1246,1173,685,1248,1205,832,847,1196,1235,750,1292,642,782,1284,1136,1213,1195,1136,1331,641,718,667,771,662,1302,1134,833,1335,644,1160,1144,1261,675,1304,1330,719,1142,1340,1419,191,1499,474,588,941,1078,896,582,984,1033,316,545,355,346,909,539,405,237,1496,1390,957,1500,1441,465,475,490,171,397,156,1515,575,474,491,1397,295,402,588,1387,547,538,1407,594,213,491,594,174,391,990,262,332,1387,957,504,1580,593,1461,479,1498,1418,440,532,1390,1072,1038,1098,536,1476,458,1020,556,887,1577,731,1156,722,738,778,686,647,1142,666,772,775,707,840,840,649,659,641,1299,776,847,701,781,642,644,1331,679,839,845,642,838,1208,691,791,814,715,755,1226,1140,768,1299,1168,663,831,1248,718,831,80,109],"adjacent":[[18,45,60,70],[52,54,55,68,74,83],[14,61,78,288],[60,309,328],[37,72,290,333,384],[83,338,351,384],[19,61,187],[10,154,164],[19,282],[38,62],[7,28,76,154],[57,65,86],[23,296],[77,143,192],[2,208,251],[35,213,371],[85,252],[90,252,334],[0,28],[6,8,78],[51,69,82,280],[39,78,299,363,393],[40,47,77],[12,27,31,64,401],[57,63,73],[26,27,31,212],[25,77],[23,25,234,254],[10,18,32,56],[73,214,370],[53,70,346],[23,25,49],[28,93,179],[57,65],[45,90],[15,42],[62,168,326],[4,269],[9,42,71],[21,160,282],[22,41,49,66],[40,279,296],[35,38,312],[50,159,233],[65,89],[0,34,85],[58,73,301],[22,66,67,169],[80,85,244],[31,40],[43,54,79,269],[20,58,81],[1,72],[30,84,367],[1,50,139,152],[1,88],[28,70,84],[11,24,33,58,69],[46,51,57],[192,212],[0,3,70,85],[2,6,163],[9,36,260],[24,214],[23,109],[11,33,44],[40,47,268],[47,87],[1,75,270,283],[20,57],[0,30,56,60,368],[38,165],[4,52,79,83],[24,29,46],[1,236,270],[68,338],[10,84],[13,22,26],[2,19,21],[50,72],[48,286,309],[51,173,293,301],[20,86,273],[1,5,72],[53,56,76],[16,45,48,60],[11,82,113,197,386],[67,127,147,169,223,310],[55,152,236,357],[44,119,197,264,303,398],[17,34,133,171,179],[166,359],[124,160,246,257],[32,111,140,154],[118,185,307,317],[109,121,148,234,261],[113,184],[125,127,195],[113,119,131,199],[130,205],[156,189,370],[153,167,175,320],[106,166,175,186],[114,137,314],[137,146,158,189],[115,183],[102,138],[134,141],[110,121,220,286],[64,95,304],[108,309,328,378],[93,171,206],[121,175],[86,96,98,197],[103,158],[105,135,140,204],[157,181,388],[170,207,338],[94,151,161,558],[89,98],[128,190,349],[95,108,112,138,148],[195,281],[131,199],[92,195],[97,142,147,170],[159,162,180,194],[87,97,160,393],[120,155,168],[130,194,243],[99,129],[98,123,184,221,291],[152,172],[90,171,333],[107,203,316],[115,289],[173],[103,104,339,345],[106,121,378],[54,159,210],[93,115],[107,205],[125,192],[13,169],[172,311,357],[208,390],[104,201,296,339],[87,125],[95,121,153,167],[150,182,289],[149,178,235],[118,161,196],[54,88,132],[101,148,329,395],[7,10,93,183],[128,326,349,355],[100,176,308],[116,163,360],[104,114,176],[43,126,139],[39,92,127],[118,151],[126,243],[61,157,208],[7,183],[71,168,202],[91,102],[101,148],[36,128,165],[47,87,143],[117,125,195],[90,111,133,178],[132,144,203],[81,136,191,280,293],[192,207],[101,102,112],[156,158,319],[201,214,242,370],[150,171,209],[32,90],[126,200,205,210],[116,198,344],[149,206],[105,154,164],[96,131,213,297],[94,196,293],[102,378],[6,274,325],[190],[100,104,201],[120,188,202],[173,196],[13,59,142,174],[201,253],[126,129,200],[97,122,124,170],[151,185,191],[86,89,113],[181,208],[98,123,376],[180,194],[146,177,189,193],[165,190],[134,172,210],[115],[99,141,180],[111,182],[117,174,335],[14,145,163,198],[178,287,333],[139,180,203],[],[25,59,254,267],[15,184,221,245,260],[29,63,177,216],[217,238,257,270,281],[214,265,275],[215,229,230,236,400],[223,259,265,266,268],[231,260,326,394],[108,227,261],[131,213],[232,248,273],[87,218,380],[280],[244,250],[227,237,271],[220,226,228,240],[227,250,276],[217,270],[217,274],[219,251],[222,386],[43,243,249],[27,95],[150,278,287],[74,88,217],[226,254,267,276],[215,285],[272,284],[227,244,286],[245,291],[177,259],[129,162,233,277],[48,225,240],[213,241,256],[92,285],[249,277,287],[222,350],[233,247,269,290],[225,228,252],[14,231,256,258,364],[16,17,250,315],[193,255,296],[27,212,237,271],[253,259,279],[245,251],[92,215],[251,291],[218,242,255],[62,213,219],[95,220,271],[265,303],[277,278],[89,275],[216,218,262],[218,358],[212,237,294,340],[66,218],[37,50,249],[68,74,215,229,283],[226,254,261],[239,273,280],[82,222,272],[187,230,282],[216,264],[228,237,315,340],[243,247,263],[235,263,289],[41,255],[20,173,224,272],[122,215,283],[8,39,274,285],[68,270,281,338],[239],[238,246,282],[80,108,240],[209,235,247],[2,291],[135,149,278],[4,249],[131,241,258,288,376],[313,336,359,378],[81,173,185,317,324],[267,335,340,396],[330,369,400],[12,41,146,253,365],[184,305,337,352,371],[346,367,385],[21,376],[308,319,362,377],[46,81,321,324],[344,349,355,364],[89,262,358,363,399],[109,329,401],[297,386],[320,372],[94,377,475,534],[156,300,343],[3,80,110],[87,363,393,399],[144,330],[42,348],[292,328],[103,345,381],[252,276,322,383],[134,342],[94,293,377],[319,377,476,477],[176,300,318],[101,306,395],[301,370],[315,334,353],[376,398],[293,301,362],[187,392,400],[36,155,219],[375,385],[3,110,313,387],[153,304,331,341],[295,311,332,342,373],[329,365],[330,357],[4,133,209,382,384],[17,322,382],[207,294,347,361],[292,356,385],[297,350],[5,75,117,283,347],[137,146,354,365],[267,276,294,383],[329,372,395],[316,330,389],[308,370],[181,302,390],[137,314],[30,298],[335,338],[312,391],[120,155,302],[248,337,391],[5,361],[297],[322,366,396],[339,374],[155,302],[336,375,379],[88,144,332,400],[266,303,380],[91,292,379],[157,388,392],[335,351,384],[300,324],[21,303,310],[251,302,390,394],[296,331,339,401],[353,384],[53,298,397],[70,387],[295,373,392],[29,100,177,321,343],[15,297],[306,341,374],[330,369,389],[354,372,381],[327,356,397],[199,291,299,323],[300,307,317,318],[110,138,186,292],[356,359],[223,358],[314,374],[333,334],[315,340],[4,5,333,361,366],[298,327,336,387],[86,232,305],[328,368,385],[116,360,389],[342,373,388],[145,344,364],[348,350],[325,360,369],[21,127,310],[219,364],[153,320,341],[294,353],[367,375],[89,323],[303,310],[217,295,325,357],[23,304,365],[428,432,448],[425,441,600],[436,437,452,590],[406,414,446],[405,423,427,447],[434,481,485,579],[437,462],[416,426,453,455],[421,455,476,492],[418,420,440],[423,429,517,544],[428],[405,434,540],[426,435],[409,430],[425,450,498],[411,425,445],[454,592,599],[411,586],[410,426],[432,443],[406,412,443,448],[429,447,451,473],[403,417,418,444],[409,415,421,439],[406,434,473],[402,413],[412,424],[416,454,563],[455,487],[402,422],[438,567],[407,414,427],[415,476],[404,449,502],[404,408,438],[433,437,538],[426,618],[411,442],[403,521,585],[440,444,463,491],[422,423],[425,442],[418,600,606],[405,533],[406,424],[402,423,514],[436,554],[417,461,521],[424,490,545],[404,502,541,597],[409,602],[419,430,509],[409,410,431],[487,563],[461,466,480],[462,479,610],[471,474,482],[467,468,474,482],[450,457,466,498,580],[408,458,486,609],[442,466,470],[490,497,591,598],[478,486],[457,461,463,472],[460,484,571],[460,507,515],[476,477,478],[463,472,491,495],[459,485,576],[466,470,500],[424,427,494],[459,460,585],[307,477,489,493],[318,410,435,469],[318,469,475],[465,469,479,493],[458,478,487,492],[457,500,597,616],[407,494],[459,460,483,494,497],[482,490],[467,488,497],[407,471],[462,465,499,538],[431,456,479],[484,509,571,591,592],[475,496,534],[451,464,483],[442,470],[410,479],[475,478,496],[473,481,482],[470,520],[489,493,499],[464,482,484],[417,461],[486,496,562],[472,480,522,530,541,551],[518,527,529,549],[436,452,530,554],[533,557],[508,561,601],[509,515,548,569,571],[565,569,574],[468,521,552,585],[504,540,561,579,614],[454,488,505,564],[521,548,580],[513,514,549],[542,568],[511,528,535,536],[448,511,517],[468,505],[532,566,601],[412,514,524,528],[501,535],[520,522],[495,519,551],[441,450,507,510],[500,519,530],[534,558],[517,526,570],[532,566],[524,531,536,553,560],[501],[513,517],[501,546],[500,502,522],[526,537,595],[516,525,557],[446,503,540],[307,489,523,559],[513,518,549,550],[513,526],[531,570,589],[438,486],[544,545],[414,508,533],[452,500],[512,595,596],[546,549],[412,539,570],[451,539,589],[529,543],[550,560,568],[505,510,552],[501,511,535,543],[535,547],[500,520],[507,548],[526,568],[449,502],[566,588],[558,559],[503,532,561],[118,523,556],[534,556,562,567],[526,547],[504,508,557],[499,559],[430,456,564,565],[509,563],[506,563,610],[516,525,555],[433,559],[512,547,553],[505,506],[524,537,544],[467,488,505],[],[588,605,608],[506,603,613,616],[581,583,589,598],[471,584,604,614,615],[594,600,606,608],[587,588,601,608],[407,508,604],[461,510,613],[575,595],[583,611],[575,582,591,599,617],[576,587,608],[441,474,507,615],[420,606],[578,584,614],[555,573,578],[537,545,575],[404,597,603,612],[464,488,583],[419,488],[595,607,617],[577,615],[531,542,581,593],[542,607],[452,480,590],[464,575],[419,583,602],[403,445,577],[504,516,578],[453,599,618],[574,590,609,612],[576,579],[573,606],[445,577,586,605],[593,596,611],[573,577,578,584],[462,603,610],[458,565,609],[582,607,618],[590,603],[574,580],[508,576,587],[576,585,594],[480,574],[583,593],[439,602,611],[],[]],"main_roads":[[18,45,60,70],[52,55,68],[61,78,288],[60,328],[72,333],[],[61,187],[10,164],[],[38,62],[7,28],[57,86],[],[],[],[],[85,252],[],[0,28],[],[],[78,299,393],[],[],[],[],[],[],[10,18],[],[70,346],[],[],[],[45,90],[],[],[],[9,71],[],[],[],[],[],[],[0,34],[58,301],[],[],[],[],[],[1,72],[],[],[1,88],[],[11,58],[46,57],[192,212],[0,3,85],[2,6],[9,260],[],[],[],[],[],[1,270],[],[0,30],[38],[4,52],[],[],[],[],[],[2,21],[],[],[],[],[],[],[16,60],[11,113,197],[127,223,310],[55,357],[197,303],[34,133],[359],[160,257],[111,140],[307,317],[],[113,184],[],[],[],[],[],[],[],[146,158],[115,183],[],[],[121,220],[],[],[93,171],[],[86,96],[],[105,140,204],[],[],[],[],[],[108,138],[],[],[],[],[],[87,160,393],[155],[],[],[],[],[90,171,333],[],[],[],[],[121,378],[],[93,115],[],[],[],[],[],[104,296],[],[],[],[],[],[],[],[],[128,326],[],[],[104,176],[],[92,127],[],[],[],[7,183],[],[],[],[],[],[],[111,133],[],[],[],[],[158,319],[],[],[],[],[],[],[105,164],[96,213],[],[],[6,325],[],[],[],[],[59],[],[],[],[],[86,89],[],[],[],[],[],[],[115],[],[],[],[],[],[],[],[59,254,267],[184,245,260],[],[257,270],[],[],[223,259],[260,326],[108,261],[],[],[87,218],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[245,291],[],[],[],[213,241],[],[],[],[],[],[],[16,315],[255,296],[212,271],[253,259],[],[92,215],[],[218,255],[62,213,219],[220,271],[],[],[],[],[],[212,294],[],[],[68,215],[254,261],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[2,291],[],[],[241,288,376],[313,336,359,378],[317,324],[267,335],[330,369],[146,253],[],[346],[21,376],[319,362],[46,324],[],[89,399],[],[],[],[94,475,534],[],[],[87,399],[],[],[292,328],[],[252],[],[94,293],[319,476,477],[176,300,318],[],[],[],[],[293,301,362],[187,392],[155,219],[],[3,313],[],[295,332],[],[330,357],[4,133],[],[294],[292,356],[],[],[],[],[],[],[],[],[],[30,298],[],[],[],[],[],[],[],[],[],[336],[88,332],[],[91,292],[],[],[300,324],[],[],[],[],[],[],[295,392],[],[],[],[],[],[],[291,299],[],[138,292],[],[],[],[],[],[],[],[],[],[],[],[],[],[325,369],[21,127],[],[],[],[],[],[303,310],[],[],[432,448],[425,441,600],[436,437],[],[423,427,447],[434,485,579],[],[453,455],[455,476],[420,440],[],[],[],[],[],[425,498],[],[],[411,586],[],[432,443],[406,443,448],[447,451],[403,417],[],[406,434],[],[],[],[455,487],[402,422],[],[407,427],[],[404,502],[404,438],[437,538],[],[411,442],[403,585],[440,463],[422,423],[],[],[],[406,424],[402,423,514],[],[],[424,545],[],[409,602],[],[409,410,431],[487,563],[],[],[471,474,482],[],[466,498,580],[486,609],[442,466],[497,598],[478,486],[461,463,472],[484,571],[],[477,478],[],[459,485],[466,500],[],[459,585],[307,493],[318,410],[318,469],[465,469,479,493],[478,487],[500,616],[],[459,497],[],[467,497],[407,471],[462,465,538],[431,456,479],[],[],[],[],[],[475,478],[],[],[],[464,482,484],[417,461],[],[472,480,530],[527,549],[436,530,554],[],[508,601],[569,571],[565,569,574],[],[504,579],[],[],[513,514,549],[],[511,536],[448,511],[],[],[],[],[],[],[],[],[],[],[],[531,536],[501],[],[],[500,502],[526,537],[],[],[307,559],[],[513,526],[531,589],[438,486],[],[],[],[],[],[],[451,589],[],[],[],[501,511],[],[],[],[],[502],[],[],[],[],[534,567],[],[],[],[456,565],[],[506,563],[],[559],[],[505,506],[],[467,505],[],[],[506,603,613,616],[583,589,598],[],[600,606,608],[601,608],[407,508],[461,613],[],[],[575,599],[],[441,474],[420,606],[],[],[537,545,575],[],[],[],[],[],[],[],[],[464,575],[583,602],[403,577],[504,578],[453,599],[574,609],[],[],[577,586],[],[577,578],[462,603],[],[],[],[574,580],[],[],[480,574],[],[],[],[]],"roads":[[],[54,74,83],[14],[309],[37,290,384],[83,338,351,384],[19],[154],[19,282],[],[76,154],[65],[23,296],[77,143,192],[2,208,251],[35,213,371],[],[90,252,334],[],[6,8,78],[51,69,82,280],[39,363],[40,47,77],[12,27,31,64,401],[57,63,73],[26,27,31,212],[25,77],[23,25,234,254],[32,56],[73,214,370],[53],[23,25,49],[28,93,179],[57,65],[],[15,42],[62,168,326],[4,269],[42],[21,160,282],[22,41,49,66],[40,279,296],[35,38,312],[50,159,233],[65,89],[85],[73],[22,66,67,169],[80,85,244],[31,40],[43,54,79,269],[20,58,81],[],[30,84,367],[1,50,139,152],[],[28,70,84],[24,33,69],[51],[],[70],[163],[36],[24,214],[23,109],[11,33,44],[40,47,268],[47,87],[75,283],[20,57],[56,60,368],[165],[79,83],[24,29,46],[1,236,270],[68,338],[10,84],[13,22,26],[19],[50,72],[48,286,309],[51,173,293,301],[20,86,273],[1,5,72],[53,56,76],[45,48],[82,386],[67,147,169],[152,236],[44,119,264,398],[17,171,179],[166],[124,246],[32,154],[118,185],[109,121,148,234,261],[],[125,127,195],[113,119,131,199],[130,205],[156,189,370],[153,167,175,320],[106,166,175,186],[114,137,314],[137,189],[],[102,138],[134,141],[110,286],[64,95,304],[108,309,328,378],[206],[121,175],[98,197],[103,158],[135],[157,181,388],[170,207,338],[94,151,161,558],[89,98],[128,190,349],[95,112,148],[195,281],[131,199],[92,195],[97,142,147,170],[159,162,180,194],[97],[120,168],[130,194,243],[99,129],[98,123,184,221,291],[152,172],[],[107,203,316],[115,289],[173],[103,104,339,345],[106],[54,159,210],[],[107,205],[125,192],[13,169],[172,311,357],[208,390],[201,339],[87,125],[95,121,153,167],[150,182,289],[149,178,235],[118,161,196],[54,88,132],[101,148,329,395],[7,10,93,183],[349,355],[100,176,308],[116,163,360],[114],[43,126,139],[39],[118,151],[126,243],[61,157,208],[],[71,168,202],[91,102],[101,148],[36,128,165],[47,87,143],[117,125,195],[90,178],[132,144,203],[81,136,191,280,293],[192,207],[101,102,112],[156],[201,214,242,370],[150,171,209],[32,90],[126,200,205,210],[116,198,344],[149,206],[154],[131,297],[94,196,293],[102,378],[274],[190],[100,104,201],[120,188,202],[173,196],[13,142,174],[201,253],[126,129,200],[97,122,124,170],[151,185,191],[113],[181,208],[98,123,376],[180,194],[146,177,189,193],[165,190],[134,172,210],[],[99,141,180],[111,182],[117,174,335],[14,145,163,198],[178,287,333],[139,180,203],[],[25],[15,221],[29,63,177,216],[217,238,281],[214,265,275],[215,229,230,236,400],[265,266,268],[231,394],[227],[131,213],[232,248,273],[380],[280],[244,250],[227,237,271],[220,226,228,240],[227,250,276],[217,270],[217,274],[219,251],[222,386],[43,243,249],[27,95],[150,278,287],[74,88,217],[226,254,267,276],[215,285],[272,284],[227,244,286],[],[177,259],[129,162,233,277],[48,225,240],[256],[92,285],[249,277,287],[222,350],[233,247,269,290],[225,228,252],[14,231,256,258,364],[17,250],[193],[27,237],[279],[245,251],[],[251,291],[242],[],[95],[265,303],[277,278],[89,275],[216,218,262],[218,358],[237,340],[66,218],[37,50,249],[74,229,283],[226],[239,273,280],[82,222,272],[187,230,282],[216,264],[228,237,315,340],[243,247,263],[235,263,289],[41,255],[20,173,224,272],[122,215,283],[8,39,274,285],[68,270,281,338],[239],[238,246,282],[80,108,240],[209,235,247],[],[135,149,278],[4,249],[131,258],[],[81,173,185],[340,396],[400],[12,41,365],[184,305,337,352,371],[367,385],[],[308,377],[81,321],[344,349,355,364],[262,358,363],[109,329,401],[297,386],[320,372],[377],[156,300,343],[3,80,110],[363,393],[144,330],[42,348],[],[103,345,381],[276,322,383],[134,342],[377],[377],[],[101,306,395],[301,370],[315,334,353],[376,398],[],[400],[36],[375,385],[110,387],[153,304,331,341],[311,342,373],[329,365],[],[209,382,384],[17,322,382],[207,347,361],[385],[297,350],[5,75,117,283,347],[137,146,354,365],[267,276,294,383],[329,372,395],[316,330,389],[308,370],[181,302,390],[137,314],[],[335,338],[312,391],[120,155,302],[248,337,391],[5,361],[297],[322,366,396],[339,374],[155,302],[375,379],[144,400],[266,303,380],[379],[157,388,392],[335,351,384],[],[21,303,310],[251,302,390,394],[296,331,339,401],[353,384],[53,298,397],[70,387],[373],[29,100,177,321,343],[15,297],[306,341,374],[330,369,389],[354,372,381],[327,356,397],[199,323],[300,307,317,318],[110,186],[356,359],[223,358],[314,374],[333,334],[315,340],[4,5,333,361,366],[298,327,336,387],[86,232,305],[328,368,385],[116,360,389],[342,373,388],[145,344,364],[348,350],[360],[310],[219,364],[153,320,341],[294,353],[367,375],[89,323],[],[217,295,325,357],[23,304,365],[428],[],[452,590],[406,414,446],[405],[481],[437,462],[416,426],[421,492],[418],[423,429,517,544],[428],[405,434,540],[426,435],[409,430],[450],[411,425,445],[454,592,599],[],[410,426],[],[412],[429,473],[418,444],[409,415,421,439],[473],[402,413],[412,424],[416,454,563],[],[],[438,567],[414],[415,476],[449],[408],[433],[426,618],[],[521],[444,491],[],[425,442],[418,600,606],[405,533],[],[],[436,554],[417,461,521],[490],[404,502,541,597],[],[419,430,509],[],[],[461,466,480],[462,479,610],[],[467,468,474,482],[450,457],[408,458],[470],[490,591],[],[457],[460],[460,507,515],[476],[463,472,491,495],[576],[470],[424,427,494],[460],[477,489],[435,469],[475],[],[458,492],[457,597],[407,494],[460,483,494],[482,490],[488],[],[499],[],[484,509,571,591,592],[475,496,534],[451,464,483],[442,470],[410,479],[496],[473,481,482],[470,520],[489,493,499],[],[],[486,496,562],[522,541,551],[518,529],[452],[533,557],[561],[509,515,548],[],[468,521,552,585],[540,561,614],[454,488,505,564],[521,548,580],[],[542,568],[528,535],[517],[468,505],[532,566,601],[412,514,524,528],[501,535],[520,522],[495,519,551],[441,450,507,510],[500,519,530],[534,558],[517,526,570],[532,566],[524,553,560],[],[513,517],[501,546],[522],[595],[516,525,557],[446,503,540],[489,523],[513,518,549,550],[],[570],[],[544,545],[414,508,533],[452,500],[512,595,596],[546,549],[412,539,570],[539],[529,543],[550,560,568],[505,510,552],[535,543],[535,547],[500,520],[507,548],[526,568],[449],[566,588],[558,559],[503,532,561],[118,523,556],[556,562],[526,547],[504,508,557],[499,559],[430,564],[509,563],[610],[516,525,555],[433],[512,547,553],[],[524,537,544],[488],[],[588,605,608],[],[581],[471,584,604,614,615],[594],[587,588],[604],[510],[575,595],[583,611],[582,591,617],[576,587,608],[507,615],[],[578,584,614],[555,573,578],[],[404,597,603,612],[464,488,583],[419,488],[595,607,617],[577,615],[531,542,581,593],[542,607],[452,480,590],[],[419],[445],[516],[618],[590,612],[576,579],[573,606],[445,605],[593,596,611],[573,584],[610],[458,565,609],[582,607,618],[590,603],[],[508,576,587],[576,585,594],[],[583,593],[439,602,611],[],[]]},"sectors":{"EastPrussia":[619],"ItalyA":[211],"England":[620],"ItalyF":[572]}} if (typeof module === 'object') module.exports = data @@ -49,6 +49,8 @@ body { border: 1px solid #0008; } +header { background-color: hsl(44, 35%, 80%); color: #000c; } +header.your_turn { color: black; } header.your_turn.france { background-color: var(--color-light-france); } header.your_turn.bavaria { background-color: var(--color-light-bavaria); } header.your_turn.prussia { background-color: var(--color-light-prussia); } @@ -446,44 +448,44 @@ span.suit.reserve { color: var(--color-reserve); font-weight: bold; font-family: .card.tc { margin-right: -145px; } .panel_body { padding-right: calc(18px + 145px); } -.card.tc.c01 { background-image: url(cards/Maria.TC.01.075.jpg) } -.card.tc.c02 { background-image: url(cards/Maria.TC.02.075.jpg) } -.card.tc.c03 { background-image: url(cards/Maria.TC.03.075.jpg) } -.card.tc.c04 { background-image: url(cards/Maria.TC.04.075.jpg) } -.card.tc.c05 { background-image: url(cards/Maria.TC.05.075.jpg) } -.card.tc.c06 { background-image: url(cards/Maria.TC.06.075.jpg) } -.card.tc.c07 { background-image: url(cards/Maria.TC.07.075.jpg) } -.card.tc.c08 { background-image: url(cards/Maria.TC.08.075.jpg) } -.card.tc.c09 { background-image: url(cards/Maria.TC.09.075.jpg) } -.card.tc.c10 { background-image: url(cards/Maria.TC.10.075.jpg) } -.card.tc.c11 { background-image: url(cards/Maria.TC.11.075.jpg) } -.card.tc.c12 { background-image: url(cards/Maria.TC.12.075.jpg) } -.card.tc.c13 { background-image: url(cards/Maria.TC.13.075.jpg) } -.card.tc.c14 { background-image: url(cards/Maria.TC.14.075.jpg) } -.card.tc.c15 { background-image: url(cards/Maria.TC.15.075.jpg) } -.card.tc.c16 { background-image: url(cards/Maria.TC.16.075.jpg) } -.card.tc.c17 { background-image: url(cards/Maria.TC.17.075.jpg) } -.card.tc.c18 { background-image: url(cards/Maria.TC.18.075.jpg) } -.card.tc.c19 { background-image: url(cards/Maria.TC.19.075.jpg) } -.card.tc.c20 { background-image: url(cards/Maria.TC.20.075.jpg) } -.card.tc.c21 { background-image: url(cards/Maria.TC.21.075.jpg) } -.card.tc.c22 { background-image: url(cards/Maria.TC.22.075.jpg) } -.card.tc.c23 { background-image: url(cards/Maria.TC.23.075.jpg) } -.card.tc.c24 { background-image: url(cards/Maria.TC.24.075.jpg) } -.card.tc.c25 { background-image: url(cards/Maria.TC.25.075.jpg) } -.card.tc.c26 { background-image: url(cards/Maria.TC.26.075.jpg) } -.card.tc.c27 { background-image: url(cards/Maria.TC.27.075.jpg) } -.card.tc.c28 { background-image: url(cards/Maria.TC.28.075.jpg) } -.card.tc.c29 { background-image: url(cards/Maria.TC.29.075.jpg) } -.card.tc.c30 { background-image: url(cards/Maria.TC.30.075.jpg) } -.card.tc.c31 { background-image: url(cards/Maria.TC.31.075.jpg) } -.card.tc.c32 { background-image: url(cards/Maria.TC.32.075.jpg) } -.card.tc.c33 { background-image: url(cards/Maria.TC.33.075.jpg) } -.card.tc.c34 { background-image: url(cards/Maria.TC.34.075.jpg) } -.card.tc.c35 { background-image: url(cards/Maria.TC.35.075.jpg) } -.card.tc.c36 { background-image: url(cards/Maria.TC.36.075.jpg) } -.card.tc.c37 { background-image: url(cards/Maria.TC.37.075.jpg) } -.card.tc.c38 { background-image: url(cards/Maria.TC.38.075.jpg) } +.card.tc.H10 { background-image: url(cards/Maria.TC.01.075.jpg) } +.card.tc.H9 { background-image: url(cards/Maria.TC.02.075.jpg) } +.card.tc.H8 { background-image: url(cards/Maria.TC.03.075.jpg) } +.card.tc.H7 { background-image: url(cards/Maria.TC.04.075.jpg) } +.card.tc.H6 { background-image: url(cards/Maria.TC.05.075.jpg) } +.card.tc.H5 { background-image: url(cards/Maria.TC.06.075.jpg) } +.card.tc.H4 { background-image: url(cards/Maria.TC.07.075.jpg) } +.card.tc.H3 { background-image: url(cards/Maria.TC.08.075.jpg) } +.card.tc.H2 { background-image: url(cards/Maria.TC.09.075.jpg) } +.card.tc.R { background-image: url(cards/Maria.TC.10.075.jpg) } +.card.tc.S10 { background-image: url(cards/Maria.TC.11.075.jpg) } +.card.tc.S9 { background-image: url(cards/Maria.TC.12.075.jpg) } +.card.tc.S8 { background-image: url(cards/Maria.TC.13.075.jpg) } +.card.tc.S7 { background-image: url(cards/Maria.TC.14.075.jpg) } +.card.tc.S6 { background-image: url(cards/Maria.TC.15.075.jpg) } +.card.tc.S5 { background-image: url(cards/Maria.TC.16.075.jpg) } +.card.tc.S4 { background-image: url(cards/Maria.TC.17.075.jpg) } +.card.tc.S3 { background-image: url(cards/Maria.TC.18.075.jpg) } +.card.tc.S2 { background-image: url(cards/Maria.TC.19.075.jpg) } +.card.tc.D10 { background-image: url(cards/Maria.TC.21.075.jpg) } +.card.tc.D9 { background-image: url(cards/Maria.TC.22.075.jpg) } +.card.tc.D8 { background-image: url(cards/Maria.TC.23.075.jpg) } +.card.tc.D7 { background-image: url(cards/Maria.TC.24.075.jpg) } +.card.tc.D6 { background-image: url(cards/Maria.TC.25.075.jpg) } +.card.tc.D5 { background-image: url(cards/Maria.TC.26.075.jpg) } +.card.tc.D4 { background-image: url(cards/Maria.TC.27.075.jpg) } +.card.tc.D3 { background-image: url(cards/Maria.TC.28.075.jpg) } +.card.tc.D2 { background-image: url(cards/Maria.TC.29.075.jpg) } +.card.tc.C10 { background-image: url(cards/Maria.TC.30.075.jpg) } +.card.tc.C9 { background-image: url(cards/Maria.TC.31.075.jpg) } +.card.tc.C8 { background-image: url(cards/Maria.TC.32.075.jpg) } +.card.tc.C7 { background-image: url(cards/Maria.TC.33.075.jpg) } +.card.tc.C6 { background-image: url(cards/Maria.TC.34.075.jpg) } +.card.tc.C5 { background-image: url(cards/Maria.TC.35.075.jpg) } +.card.tc.C4 { background-image: url(cards/Maria.TC.36.075.jpg) } +.card.tc.C3 { background-image: url(cards/Maria.TC.37.075.jpg) } +.card.tc.C2 { background-image: url(cards/Maria.TC.38.075.jpg) } + .card.tc.reverse.deck_1 { background-image: url(cards/Maria.TC.reverse.deck_1.075.jpg) } .card.tc.reverse.deck_2 { background-image: url(cards/Maria.TC.reverse.deck_2.075.jpg) } .card.tc.reverse.deck_3 { background-image: url(cards/Maria.TC.reverse.deck_3.075.jpg) } @@ -645,7 +645,7 @@ function layout_general(id, s) { // e.style.top = (y + 7 - 15 * n) + "px" e.style.top = (y + 2 - 15 * n) + "px" e.style.zIndex = y + n + 1 - e.className = power_class[GENERAL_POWER[id]] + " piece number n" + view.troops[id] + e.className = power_class[piece_power[id]] + " piece number n" + view.troops[id] } function layout_train(id, s) { @@ -762,18 +762,16 @@ function on_update() { ui.header.classList.toggle("prussia", view.power === P_PRUSSIA) ui.header.classList.toggle("saxony", view.power === P_SAXONY) ui.header.classList.toggle("pragmatic", view.power === P_PRAGMATIC) - ui.header.classList.toggle("austira", view.power === P_AUSTRIA) + ui.header.classList.toggle("austria", view.power === P_AUSTRIA) sort_power_panel(true) -/* for (let p = 0; p < 20; ++p) layout_general(p, view.pos[p]) for (let p = 20; p < 30; ++p) layout_train(p, view.pos[p]) for (let p = 30; p < 32; ++p) layout_hussar(p, view.pos[p]) -*/ let back = [ 0, 0, 0, 0 ] @@ -95,66 +95,6 @@ const COOPERATE = [ [ P_AUSTRIA, P_PRAGMATIC ], ] -exports.setup = function (seed, _scenario, _options) { - game = { - seed: seed, - log: [], - undo: [], - active: 0, // player - power: 0, // power - state: "setup", - - turn: 1, - step: 0, - ctl: [], - loc: [], - str: [], - } - - Austria 6 Malmedy - Austria T Geel - - Austria 1 Austerlitz - Austria 2 Steinamanger - Austria 3 Stuhlweißenburg - Austria 4 Stuhlweißenburg - Austria 5 Trübau - Austria T Hlinsko - Austria T Bruck - Austria H1 Off-map - Austria H2 Off-map - - Prussia 1 Steinau - Prussia 2 Steinau - Prussia 3 Sprottau - Prussia 4 Ostpreussen Box - Prussia T Grünberg - Prussia T Silesia Box - - Saxony 1 Radeberg - Saxony T Meißen - - Bavaria 1 Ergoldsbach - Bavaria T Falkenstein - - France 1 Beaune - France T Bar-le-Duc - France 5 Sarreguemines - France 4 Créspy-en-V. - - France 2 Schwandorf - France 3 Ergoldsbach - France T Regensburg - - Pragmatic T Tilburg - Pragmatic 3 Dordecht - Pragmatic 1 Delfzijl - Pragmatic 2 Delfzijl - - - return game -} - */ @@ -555,14 +495,6 @@ function count_unused_troops_on_map() { return n } -function count_unused_generals() { - let n = 0 - for (let p of all_power_generals[game.power]) - if (game.pos[p] !== REMOVED && game.troops[p] === 0) - ++n - return n -} - function has_any_piece(to) { for (let s of game.pos) if (s === to) @@ -1338,7 +1270,7 @@ function sum_card_values(list) { } function find_largest_card(list) { - for (let v = 13; v >= 2; --v) { + for (let v = 10; v >= 2; --v) { for (let c of list) if (to_value(c) === v) return c @@ -2439,7 +2371,7 @@ const POWER_FROM_SETUP_STEP = [ P_BAVARIA, P_PRUSSIA, P_SAXONY, - P_PRUSSIA, + P_PRAGMATIC, P_AUSTRIA, ] @@ -2452,13 +2384,22 @@ const setup_initial_tcs = [ 2, 5, 9, 3, 3, 5 ] const setup_total_troops = [ 26, 5, 16+6, 5, 14, 28 ] -const setup_troops = [ - 0, 0, 0, 0, 0, +const setup_min_troops = [ + 1, 1, 1, 1, 1, 5, - 0, 0, 4, 6, + 1, 1, 4, 6, 5, - 0, 0, 0, - 0, 0, 6, 2, 0, 4, + 1, 1, 1, + 1, 1, 6, 2, 1, 4, +] + +const setup_max_troops = [ + 8, 8, 8, 8, 8, + 5, + 8, 8, 8, 6, + 8, + 8, 8, 8, + 8, 8, 8, 8, 8, 8, ] const setup_piece_position = [ @@ -2536,7 +2477,7 @@ function make_political_deck() { function make_tactics_deck(n) { let deck = [] for (let suit = 0; suit <= 3; ++suit) - for (let value = 2; value <= 13; ++value) + for (let value = 2; value <= 10; ++value) deck.push((n << 7) | (suit << 4) | value) deck.push((n << 7) | (RESERVE << 4) | 2) deck.push((n << 7) | (RESERVE << 4) | 3) @@ -2570,11 +2511,11 @@ exports.setup = function (seed, _scenario, _options) { step: 0, pol_deck: null, deck: null, - hand: [], + hand: [ [], [], [], [], [], [] ], pos: setup_piece_position.slice(), oos: 0, - troops: setup_troops.slice(), + troops: setup_min_troops.map(n => 0), conquest: [], moved: [], @@ -2634,21 +2575,41 @@ states.setup = { }, } +function count_unsetup_min() { + let n = 0 + for (let p of all_power_generals[game.power]) + if (game.troops[p] === 0) + n += setup_min_troops[p] + return n +} + +function count_unsetup_max() { + let n = 0 + for (let p of all_power_generals[game.power]) + if (game.troops[p] === 0) + n += setup_max_troops[p] + return n +} + states.setup_general = { inactive: "setup troops", prompt() { prompt("Add troops to " + format_selected() + ".") view.selected = game.selected - let n_selected = game.selected.length - let n_other = count_unused_generals() - game.selected.length + let who = game.selected[0] + + let n_self_min = setup_min_troops[who] + let n_self_max = setup_max_troops[who] + let n_other_min = count_unsetup_min() - n_self_min + let n_other_max = count_unsetup_max() - n_self_max let n_troops = setup_total_troops[game.power] - count_used_troops() // leave at least 1 for each remaining general - let take_max = Math.min(8 * n_selected, n_troops - n_other) + let take_max = Math.min(n_self_max, n_troops - n_other_min) // leave no more than 8 for each remaining general - let take_min = Math.max(1 * n_selected, n_troops - n_other * 8) + let take_min = Math.max(n_self_min, n_troops - n_other_max) view.actions.value = [] for (let i = take_min; i <= take_max; ++i) @@ -2658,7 +2619,7 @@ states.setup_general = { let save = game.selected.length - 1 for (let p of game.selected) { let n = Math.min(8, v - save) - game.troops[p] = n + game.troops[p] += n v -= n --save } @@ -2668,12 +2629,10 @@ states.setup_general = { } function end_setup() { - if (++game.step === 7) { + if (++game.step === 6) { goto_start_turn() } else { set_active_setup_power() - if (count_unused_generals() === 0) - end_setup() } } @@ -2727,13 +2686,12 @@ exports.view = function (state, player) { actions: null, log: game.log, - fate: game.turn <= 5 ? game.turn : game.fate, + turn: game.turn, pos: game.pos, oos: game.oos, conquest: game.conquest, troops: mask_troops(player), hand: mask_hand(player), - oo: game.oo, pt: total_troops_list(), power: game.power, diff --git a/tools/layout.svg b/tools/layout.svg index 841fb90..aa73244 100644 --- a/tools/layout.svg +++ b/tools/layout.svg @@ -40,10 +40,10 @@ inkscape:window-height="480" id="namedview6" showgrid="false" - inkscape:zoom="8.3661045" - inkscape:cx="236.64652" - inkscape:cy="1572.9559" - inkscape:current-layer="g3013" + inkscape:zoom="6.1864511" + inkscape:cx="1511.6937" + inkscape:cy="597.4918" + inkscape:current-layer="g5174" inkscape:document-rotation="0" showguides="false"> <inkscape:grid @@ -63,7 +63,8 @@ style="display:inline" /> <g id="g3013" - inkscape:label="box"> + inkscape:label="box" + style="display:none"> <rect style="fill:#ffffff;fill-opacity:0.54878;stroke-width:1.01529" id="rect3008" @@ -100,7 +101,7 @@ <g id="g2467" inkscape:label="major_fortress" - style="fill:#ffffff" + style="display:none;fill:#ffffff" sodipodi:insensitive="true"> <circle style="fill:#ffffff;fill-opacity:0.809893;stroke:none" @@ -196,7 +197,8 @@ <g id="g2403" inkscape:label="minor_fortress" - sodipodi:insensitive="true"> + sodipodi:insensitive="true" + style="display:none"> <rect style="fill:#ffffff;fill-opacity:0.809893;stroke:none" id="rect2211" @@ -649,7 +651,8 @@ <g id="g1382" inkscape:label="city" - sodipodi:insensitive="true"> + sodipodi:insensitive="true" + style="display:none"> <circle style="fill:#ff2f2f;fill-opacity:0.54878;stroke:none;stroke-opacity:1" id="circle846" @@ -4063,9 +4066,9 @@ </g> <g id="g3273" - inkscape:label="major_road" + inkscape:label="main_road" sodipodi:insensitive="true" - style="stroke:#b3b3b3"> + style="display:none;stroke:#b3b3b3"> <path style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#b3b3b3;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" d="m 927.46646,172.09164 -51.03383,15.29644" @@ -5082,7 +5085,7 @@ id="g5326" inkscape:label="road" sodipodi:insensitive="true" - style="stroke:#cccccc"> + style="display:none;stroke:#cccccc"> <path style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#cccccc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" d="m 153.3132,1503.4258 75.96726,11.8004" @@ -9464,9 +9467,9 @@ y="570.19531" id="text2119"><tspan sodipodi:role="line" - id="tspan2117" x="1452.9949" - y="570.19531">Meißsen</tspan></text> + y="570.19531" + id="tspan2983">Meißen</tspan></text> <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" diff --git a/tools/parse-layout.js b/tools/parse-layout.js index 9006560..785bc8c 100644 --- a/tools/parse-layout.js +++ b/tools/parse-layout.js @@ -1,10 +1,35 @@ +"use strict" + const fs = require("fs") let points = {} let rects = {} let edges = {} -let mode, name, x, y, w, h, cx, cy, rx, ry, x2, y2 +let mode, name, subname, x, y, w, h, cx, cy, rx, ry, x2, y2 let labels = [] +let sectors = {} + +function array_insert(array, index, item) { + for (let i = array.length; i > index; --i) + array[i] = array[i - 1] + array[index] = item +} + +function set_add(set, item) { + let a = 0 + let b = set.length - 1 + while (a <= b) { + let m = (a + b) >> 1 + let x = set[m] + if (item < x) + b = m - 1 + else if (item > x) + a = m + 1 + else + return + } + array_insert(set, a, item) +} function add_point(x, y) { if (name in points) @@ -32,6 +57,8 @@ function flush() { add_edge(x, y, x2, y2) } if (mode === 'rect') { + if (subname && subname.startsWith("#")) + sectors[subname.slice(1)] = [x, y, x+w, y+h] if (name.startsWith("$")) add_rect(x, y, w, h) else @@ -41,6 +68,7 @@ function flush() { add_point( cx, cy ) } x = y = x2 = y2 = w = h = cx = cy = rx = ry = 0 + subname = null } function parse_path_data(path) { @@ -85,6 +113,7 @@ function parse_path_data(path) { x2 = cx = cx + Number(path[i+5]) y2 = cy = cy + Number(path[i+6]) i += 7 + abs = false break case 'l': i += 1 @@ -154,6 +183,8 @@ for (let line of fs.readFileSync("tools/layout.svg", "utf-8").split("\n")) { ry = (Number(line.split('"')[1])) else if (line.startsWith('inkscape:label="') && mode === "g") name = line.split('"')[1] + else if (line.startsWith('inkscape:label="') && mode !== "g") + subname = line.split('"')[1] else if (line.startsWith('d="')) parse_path_data(line.split('"')[1].split(/[ ,]/)) if (line.includes("</tspan>")) { @@ -300,7 +331,7 @@ for (let key in points) { } if (country === "UNKNOWN") - console.log("no country:", node) + console.warn("no country:", node) cities.push({ name: node.name, @@ -310,6 +341,7 @@ for (let key in points) { type: key, x: Math.round(x), y: Math.round(y), + adjacent: [], main_roads: [], roads: [], }) @@ -320,48 +352,65 @@ for (let key in points) { } } + cities.sort((a,b) => { - if (a.country < b.country) return -1 - if (a.country > b.country) return 1 + if (a.map < b.map) return -1 + if (a.map > b.map) return 1 + + //let a_obj = a.type.includes("fortress") + //let b_obj = b.type.includes("fortress") + //if (a_obj && !b_obj) return -1 + //if (!a_obj && b_obj) return 1 - if (a.map < b.map) return 1 - if (a.map > b.map) return -1 + // if (a.type === "depot" && b.type !== "depot") return -1 + // if (a.type !== "depot" && b.type === "depot") return 1 if (a.suit < b.suit) return -1 if (a.suit > b.suit) return 1 - //if (a.type === "major_fortress" && b.type !== "major_fortress") return -1 - //if (a.type !== "major_fortress" && b.type === "major_fortress") return 1 - //if (a.type === "minor_fortress" && b.type !== "minor_fortress") return -1 - //if (a.type !== "minor_fortress" && b.type === "minor_fortress") return 1 + // if (a.country < b.country) return -1 + // if (a.country > b.country) return 1 + + if (a.type === "major_fortress" && b.type !== "major_fortress") return -1 + if (a.type !== "major_fortress" && b.type === "major_fortress") return 1 + if (a.type === "minor_fortress" && b.type !== "minor_fortress") return -1 + if (a.type !== "minor_fortress" && b.type === "minor_fortress") return 1 + + if (a.type === "box" && b.type !== "box") return 1 + if (a.type !== "box" && b.type === "box") return -1 if (a.name < b.name) return -1 if (a.name > b.name) return 1 + return b.y - a.y }) -for (let e of edges.major_road) { +for (let e of edges.main_road) { let a = find_closest_city(e.x1, e.y1) let b = find_closest_city(e.x2, e.y2) - cities[a].main_roads.push(b) - cities[b].main_roads.push(a) + set_add(cities[a].main_roads, b) + set_add(cities[b].main_roads, a) + set_add(cities[a].adjacent, b) + set_add(cities[b].adjacent, a) } for (let e of edges.road) { let a = find_closest_city(e.x1, e.y1) let b = find_closest_city(e.x2, e.y2) - cities[a].roads.push(b) - cities[b].roads.push(a) + set_add(cities[a].roads, b) + set_add(cities[b].roads, a) + set_add(cities[a].adjacent, b) + set_add(cities[b].adjacent, a) } let arrays = { name: [], - // map: [], - country: [], + // country: [], // suit: [], // type: [], x: [], y: [], + adjacent: [], main_roads: [], roads: [], } @@ -379,21 +428,21 @@ let sets = { hearts: [], spades: [], }, - map: { - Flanders: [], - Bohemia: [], - UNKNOWN: [], - }, country: { Austria: [], Bavaria: [], + Empire: [], France: [], Netherlands: [], Poland: [], Prussia: [], Saxony: [], Silesia: [], - Empire: [], + UNKNOWN: [], + }, + map: { + Bohemia: [], + Flanders: [], UNKNOWN: [], }, } @@ -426,35 +475,29 @@ function remap_to_range(obj) { obj[key] = map_to_range(obj[key]) } -remap_to_range(sets.map) remap_to_range(sets.suit) -remap_to_range(sets.country) - -function object_group_by(items, callback) { - let groups = {} - if (typeof callback === "function") { - for (let item of items) { - let key = callback(item) - if (key in groups) - groups[key].push(item) - else - groups[key] = [ item ] - } - } else { - for (let item of items) { - let key = item[callback] - if (key in groups) - groups[key].push(item) - else - groups[key] = [ item ] - } - } - return groups -} +remap_to_range(sets.map) +//remap_to_range(sets.country) delete sets.type.city sets.cities = arrays +function list_cities_in_rect(rect) { + let [ x1, y1, x2, y2 ] = rect + let list = [] + for (let i = 0; i < sets.cities.name.length; ++i) { + let x = sets.cities.x[i] + let y = sets.cities.y[i] + if (x >= x1 && x <= x2 && y >= y1 && y <= y2) + list.push(i) + } + return list +} + +sets.sectors = {} +for (let key in sectors) + sets.sectors[key] = list_cities_in_rect(sectors[key]) + console.log("const data = " + JSON.stringify(sets)) console.log("if (typeof module === 'object') module.exports = data") |