From 2673f6666311a36d1bec4852798009c845072223 Mon Sep 17 00:00:00 2001 From: Triyan Mukherjee Date: Sun, 30 Aug 2026 22:43:00 +0530 Subject: [PATCH 1/8] feat: Audit and add all divergent/regional evolution lines --- data/v2/build.py | 64 +- data/v2/csv/evolution_trigger_prose.csv | 6 +- data/v2/csv/evolution_triggers.csv | 3 +- data/v2/csv/evolution_variable_prose.csv | 5 + data/v2/csv/evolution_variables.csv | 3 + data/v2/csv/pokemon_evolution.csv | 1119 +++++++++-------- data/v2/csv/pokemon_species.csv | 2 +- openapi.yml | 171 +++ pokemon_v2/api.py | 17 + ...evolution_condition_expression_and_more.py | 150 +++ pokemon_v2/models.py | 56 +- pokemon_v2/serializers.py | 72 +- pokemon_v2/test_models.py | 72 ++ pokemon_v2/urls.py | 1 + pyproject.toml | 6 + uv.lock | 129 +- 16 files changed, 1205 insertions(+), 671 deletions(-) create mode 100644 data/v2/csv/evolution_variable_prose.csv create mode 100644 data/v2/csv/evolution_variables.csv create mode 100644 pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py diff --git a/data/v2/build.py b/data/v2/build.py index 07bab11ac..7be60bb0b 100644 --- a/data/v2/build.py +++ b/data/v2/build.py @@ -1084,6 +1084,35 @@ def csv_record_to_objects(info): build_generic((EvolutionTriggerName,), "evolution_trigger_prose.csv", csv_record_to_objects) + def csv_record_to_objects(info): + yield EvolutionVariable( + id=int(info[0]), + name=info[1], + symbol=info[2], + data_type=info[3], + version_group_id=int(info[4]), + ) + + build_generic((EvolutionVariable,), "evolution_variables.csv", csv_record_to_objects) + + def csv_record_to_objects(info): + yield EvolutionVariableName( + evolution_variable_id=int(info[0]), + language_id=int(info[1]), + name=info[2], + ) + yield EvolutionVariableDescription( + evolution_variable_id=int(info[0]), + language_id=int(info[1]), + description=info[3], + ) + + build_generic( + (EvolutionVariableName, EvolutionVariableDescription), + "evolution_variable_prose.csv", + csv_record_to_objects, + ) + ############# # POKEDEX # @@ -1793,6 +1822,22 @@ def csv_record_to_objects(info): build_generic((PokemonEggGroup,), "pokemon_egg_groups.csv", csv_record_to_objects) + def csv_record_to_objects(info): + yield PokemonForm( + id=int(info[0]), + name=info[1], + form_name=info[2], + pokemon_id=int(info[3]), + version_group_id=int(info[4]), + is_default=bool(int(info[5])), + is_battle_only=bool(int(info[6])), + is_mega=bool(int(info[7])), + form_order=int(info[8]), + order=int(info[9]), + ) + + build_generic((PokemonForm,), "pokemon_forms.csv", csv_record_to_objects) + def csv_record_to_objects(info): yield PokemonEvolution( id=int(info[0]), @@ -1826,26 +1871,13 @@ def csv_record_to_objects(info): min_move_count=int(info[28]) if info[28] != "" else None, min_steps=int(info[29]) if info[29] != "" else None, min_damage_taken=int(info[30]) if info[30] != "" else None, + needs_one_of_natures=int(info[31]) if len(info) > 31 and info[31] != "" else None, + condition_expression=info[32] if len(info) > 32 else "", + required_form_id=int(info[33]) if len(info) > 33 and info[33] != "" else None, ) build_generic((PokemonEvolution,), "pokemon_evolution.csv", csv_record_to_objects) - def csv_record_to_objects(info): - yield PokemonForm( - id=int(info[0]), - name=info[1], - form_name=info[2], - pokemon_id=int(info[3]), - version_group_id=int(info[4]), - is_default=bool(int(info[5])), - is_battle_only=bool(int(info[6])), - is_mega=bool(int(info[7])), - form_order=int(info[8]), - order=int(info[9]), - ) - - build_generic((PokemonForm,), "pokemon_forms.csv", csv_record_to_objects) - def try_form_image_names(path, info, extension): form_identifier = info[2] pokemon_id = info[3] diff --git a/data/v2/csv/evolution_trigger_prose.csv b/data/v2/csv/evolution_trigger_prose.csv index f1a1bc05d..62ce2615b 100644 --- a/data/v2/csv/evolution_trigger_prose.csv +++ b/data/v2/csv/evolution_trigger_prose.csv @@ -21,8 +21,8 @@ evolution_trigger_id,local_language_id,name 8,9,Land three critical hits in a battle 9,5,Aller quelque part après avoir encaissé des dommages 9,9,Go somewhere after taking damage -10,5,Autre -10,9,Other +10,5,Montée de niveau en combat +10,9,Level up in battle 11,5,Utiliser une capacité sous style agile 11,9,Use move in agile style 12,5,Utiliser une capacité sous style puissant @@ -35,3 +35,5 @@ evolution_trigger_id,local_language_id,name 15,9,Defeat three Bisharp that hold a Leader's Crest 16,5,Collectionner 999 Pièces Mordudor 16,9,Collect 999 Gimmighoul Coins +17,5,Donner 400 Bonbons Meltan dans Pokémon GO +17,9,Feed 400 Meltan Candies in Pokémon GO diff --git a/data/v2/csv/evolution_triggers.csv b/data/v2/csv/evolution_triggers.csv index 1cbc2cf04..4e07bd769 100644 --- a/data/v2/csv/evolution_triggers.csv +++ b/data/v2/csv/evolution_triggers.csv @@ -8,10 +8,11 @@ id,identifier 7,tower-of-waters 8,three-critical-hits 9,take-damage -10,other +10,in-battle-level-up 11,agile-style-move 12,strong-style-move 13,recoil-damage 14,use-move 15,three-defeated-bisharp 16,gimmighoul-coins +17,meltan-candies diff --git a/data/v2/csv/evolution_variable_prose.csv b/data/v2/csv/evolution_variable_prose.csv new file mode 100644 index 000000000..aa8c0df61 --- /dev/null +++ b/data/v2/csv/evolution_variable_prose.csv @@ -0,0 +1,5 @@ +evolution_variable_id,local_language_id,name,description +1,5,Constante de Chiffrement,"Un entier non signé de 32 bits introduit en 6e génération, généré en même temps que la valeur de personnalité. Il est utilisé pour déterminer les variations de forme et d'évolution (comme Insolourdo, Compagnol et Chenipotte), les motifs de Spinda, le départage des caractéristiques et la structuration des données du Pokémon." +1,9,Encryption Constant,"An unsigned 32-bit integer introduced in Generation VI that is generated alongside a Pokémon's personality value. It is used to calculate internal form variations (such as Dudunsparce, Maushold, and Wurmple), determine Spinda spot patterns, break ties in characteristic calculations, and structure Pokémon data." +2,5,Valeur de Personnalité,"Un entier non signé de 32 bits généré lors de la création d'un Pokémon. Introduite en 3e génération, cette valeur détermine plusieurs attributs intrinsèques, tels que la Nature (en 3G et 4G), le sexe, le talent, le caractère chromatique (Shiny), les motifs de Spinda ou encore la branche d'évolution de certains Pokémon (comme Chenipotte)." +2,9,Personality Value,"An unsigned 32-bit integer generated when a Pokémon is first created by the game. Introduced in Generation III, it dictates various internal characteristics of a Pokémon, including its Nature (in Gens III–IV), gender, ability, shininess, Unown letter, Spinda spots, and evolution branch (such as Wurmple)." diff --git a/data/v2/csv/evolution_variables.csv b/data/v2/csv/evolution_variables.csv new file mode 100644 index 000000000..cfcd03f94 --- /dev/null +++ b/data/v2/csv/evolution_variables.csv @@ -0,0 +1,3 @@ +id,identifier,symbol,data_type,version_group_id +1,encryption-constant,EC,uint32,15 +2,personality-value,PID,uint32,5 diff --git a/data/v2/csv/pokemon_evolution.csv b/data/v2/csv/pokemon_evolution.csv index 00c084a65..402e288ce 100644 --- a/data/v2/csv/pokemon_evolution.csv +++ b/data/v2/csv/pokemon_evolution.csv @@ -1,554 +1,565 @@ -id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_item_id,minimum_level,gender_id,location_id,held_item_id,time_of_day,known_move_id,known_move_type_id,minimum_happiness,minimum_beauty,minimum_affection,relative_physical_stats,party_species_id,party_type_id,trade_species_id,needs_overworld_rain,turn_upside_down,needs_multiplayer,near_special_rock,region_id,base_form_id,evolved_form_id,used_move_id,minimum_move_count,minimum_steps,minimum_damage_taken -1,2,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -2,3,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -3,5,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -4,6,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -5,8,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -6,9,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -7,11,1,1,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,, -8,12,1,1,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,, -9,14,1,1,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,, -10,15,1,1,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,, -11,17,1,1,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -12,18,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -13,20,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -14,22,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -15,24,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -16,25,1,1,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,, -17,26,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,25,,,,, -18,28,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -19,30,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -20,31,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -21,33,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -22,34,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -23,35,1,1,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -24,36,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -25,38,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -26,39,1,1,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -27,40,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -28,42,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -29,44,1,1,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,, -30,45,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -31,47,1,1,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -32,49,1,1,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,, -33,51,1,1,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,, -34,53,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -35,55,1,1,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,, -36,57,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -37,59,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -38,61,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -39,62,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -40,64,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -41,65,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -42,67,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -43,68,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -44,70,1,1,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,, -45,71,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -46,73,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -47,75,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -48,76,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -49,78,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -50,80,1,1,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -51,82,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -52,85,1,1,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,, -53,87,1,1,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -54,89,1,1,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -55,91,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -56,93,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -57,94,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -58,97,1,1,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,, -59,99,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -60,101,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -61,103,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -62,105,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -63,106,1,1,1,,20,,,,,,,,,,1,,,,0,0,0,0,,,,,,, -64,107,1,1,1,,20,,,,,,,,,,-1,,,,0,0,0,0,,,,,,, -65,110,1,1,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -66,112,1,1,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,, -67,113,1,8,1,,,,,110,day,,,,,,,,,,0,0,0,0,,,,,,, -68,117,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -69,119,1,1,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,, -70,121,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -71,122,1,8,1,,,,,,,102,,,,,,,,,0,0,0,0,,,,,,, -72,124,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -73,125,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -74,126,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -75,130,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -76,134,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,133,,,,, -77,135,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,133,,,,, -78,136,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,133,,,,, -79,139,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -80,141,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -81,143,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -82,148,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -83,149,1,1,1,,55,,,,,,,,,,,,,,0,0,0,0,,,,,,, -84,153,1,3,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -85,154,1,3,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -86,156,1,3,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,, -87,157,1,3,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -88,159,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -89,160,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -90,162,1,3,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,, -91,164,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -92,166,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -93,168,1,3,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -94,169,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -95,171,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,, -96,176,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -97,178,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -98,180,1,3,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,, -99,181,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -100,182,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -101,183,1,5,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -102,184,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -103,185,1,8,1,,,,,,,102,,,,,,,,,0,0,0,0,,,,,,, -104,186,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,, -105,188,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -106,189,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,, -107,192,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -108,195,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -109,196,1,3,1,,,,,,day,,,160,,,,,,,0,0,0,0,,133,,,,, -110,197,1,3,1,,,,,,night,,,160,,,,,,,0,0,0,0,,133,,,,, -111,199,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,, -112,202,1,5,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,, -113,205,1,3,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,, -114,208,2,3,1,,,,,210,,,,,,,,,,,0,0,0,0,,,,,,, -115,210,1,3,1,,23,,,,,,,,,,,,,,0,0,0,0,,,,,,, -116,212,2,3,1,,,,,210,,,,,,,,,,,0,0,0,0,,,,,,, -117,217,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -118,219,1,3,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -119,221,1,3,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,, -120,224,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -121,226,1,8,1,,,,,,,,,,,,,223,,,0,0,0,0,,,,,,, -122,229,1,3,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -123,230,2,3,1,,,,,212,,,,,,,,,,,0,0,0,0,,,,,,, -124,232,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -125,233,2,3,1,,,,,229,,,,,,,,,,,0,0,0,0,,,,,,, -126,237,1,3,1,,20,,,,,,,,,,0,,,,0,0,0,0,,,,,,, -127,242,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -128,247,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -129,248,1,3,1,,55,,,,,,,,,,,,,,0,0,0,0,,,,,,, -130,253,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -131,254,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -132,256,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -133,257,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -134,259,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -135,260,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -136,262,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -137,264,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -138,266,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,, -139,267,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,, -140,268,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,, -141,269,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,, -142,271,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,, -143,272,3,5,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -144,274,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,, -145,275,3,5,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -146,277,1,5,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -147,279,1,5,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -148,281,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -149,282,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -150,284,1,5,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -151,286,1,5,1,,23,,,,,,,,,,,,,,0,0,0,0,,,,,,, -152,288,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -153,289,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -154,291,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -155,292,4,5,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -156,294,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -157,295,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -158,297,1,5,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -159,301,3,5,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -160,305,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -161,306,1,5,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,, -162,308,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -163,310,1,5,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,, -164,315,1,8,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,, -165,317,1,5,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,, -166,319,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -167,321,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -168,323,1,5,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,, -169,326,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -170,329,1,5,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -171,330,1,5,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,, -172,332,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -173,334,1,5,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -174,340,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -175,342,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -176,344,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -177,346,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -178,348,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -179,350,1,5,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,, -180,354,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -181,356,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -182,358,1,8,1,,,,,,night,,,220,,,,,,,0,0,0,0,,,,,,, -183,362,1,5,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,, -184,364,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -185,365,1,5,1,,44,,,,,,,,,,,,,,0,0,0,0,,,,,,, -186,367,2,5,1,,,,,203,,,,,,,,,,,0,0,0,0,,,,,,, -187,368,2,5,1,,,,,204,,,,,,,,,,,0,0,0,0,,,,,,, -188,372,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -189,373,1,5,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,, -190,375,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -191,376,1,5,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,, -192,388,1,8,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -193,389,1,8,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -194,391,1,8,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,, -195,392,1,8,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -196,394,1,8,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -197,395,1,8,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -198,397,1,8,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,, -199,398,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -200,400,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,, -201,402,1,8,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,, -202,404,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,, -203,405,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -204,407,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -205,409,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -206,411,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -207,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,,,,,, -208,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,,,,,, -209,416,1,8,1,,21,1,,,,,,,,,,,,,0,0,0,0,,,,,,, -210,419,1,8,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,, -211,421,1,8,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -212,423,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -213,424,1,8,1,,,,,,,458,,,,,,,,,0,0,0,0,,,,,,, -214,426,1,8,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -215,428,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -216,429,3,8,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -217,430,3,8,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -218,432,1,8,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -219,435,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -220,437,1,8,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,, -221,444,1,8,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -222,445,1,8,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,, -223,448,1,8,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,, -224,450,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -225,452,1,8,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -226,454,1,8,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -227,457,1,8,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,, -228,460,1,8,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -229,461,1,8,1,,,,,303,night,,,,,,,,,,0,0,0,0,,,,,,, -230,462,1,8,0,,,,10,,,,,,,,,,,,0,0,0,0,,,,,,, -231,463,1,8,1,,,,,,,205,,,,,,,,,0,0,0,0,,,,,,, -232,464,2,8,1,,,,,298,,,,,,,,,,,0,0,0,0,,,,,,, -233,465,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,, -234,466,2,8,1,,,,,299,,,,,,,,,,,0,0,0,0,,,,,,, -235,467,2,8,1,,,,,300,,,,,,,,,,,0,0,0,0,,,,,,, -236,468,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -237,469,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,, -238,470,1,8,0,,,,8,,,,,,,,,,,,0,0,0,1,,133,,,,, -239,471,1,8,0,,,,48,,,,,,,,,,,,0,0,0,1,,133,,,,, -240,472,1,8,1,,,,,304,night,,,,,,,,,,0,0,0,0,,,,,,, -241,473,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,, -242,474,2,8,1,,,,,301,,,,,,,,,,,0,0,0,0,,,,,,, -243,475,3,8,1,109,,2,,,,,,,,,,,,,0,0,0,0,,,,,,, -244,476,1,8,0,,,,10,,,,,,,,,,,,0,0,0,0,,,,,,, -245,477,2,8,1,,,,,302,,,,,,,,,,,0,0,0,0,,,,,,, -246,478,3,8,1,109,,1,,,,,,,,,,,,,0,0,0,0,,,,,,, -247,496,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,, -248,497,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -249,499,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,, -250,500,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -251,502,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,, -252,503,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -253,505,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -254,507,1,11,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -255,508,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -256,510,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -257,512,3,11,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -258,514,3,11,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -259,516,3,11,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -260,518,3,11,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -261,520,1,11,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,, -262,521,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -263,523,1,11,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,, -264,525,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -265,526,2,11,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -266,528,1,11,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -267,530,1,11,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,, -268,533,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -269,534,2,11,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -270,536,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -271,537,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -272,541,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -273,542,1,11,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,, -274,544,1,11,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -275,545,1,11,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -276,547,3,11,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -277,549,3,11,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -278,552,1,11,1,,29,,,,,,,,,,,,,,0,0,0,0,,,,,,, -279,553,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -280,555,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -281,558,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -282,560,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,, -283,563,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -284,565,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -285,567,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -286,569,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -287,571,1,11,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -288,573,3,11,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -289,575,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -290,576,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,, -291,578,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -292,579,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,, -293,581,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -294,583,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -295,584,1,11,1,,47,,,,,,,,,,,,,,0,0,0,0,,,,,,, -296,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -297,589,2,11,1,,,,,,,,,,,,,,,616,0,0,0,0,,,,,,, -298,591,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,, -299,593,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -300,596,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -301,598,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -302,600,1,11,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -303,601,1,11,1,,49,,,,,,,,,,,,,,0,0,0,0,,,,,,, -304,603,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,, -305,604,3,11,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -306,606,1,11,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,, -307,608,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,, -308,609,3,11,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -309,611,1,11,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -310,612,1,11,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,, -311,614,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -312,617,2,11,1,,,,,,,,,,,,,,,588,0,0,0,0,,,,,,, -313,620,1,11,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,, -314,623,1,11,1,,43,,,,,,,,,,,,,,0,0,0,0,,,,,,, -315,625,1,11,1,,52,,,,,,,,,,,,,,0,0,0,0,,,,,,, -316,628,1,11,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,, -317,630,1,11,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,, -318,634,1,11,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,, -319,635,1,11,1,,64,,,,,,,,,,,,,,0,0,0,0,,,,,,, -320,637,1,11,1,,59,,,,,,,,,,,,,,0,0,0,0,,,,,,, -321,350,2,11,1,,,,,580,,,,,,,,,,,0,0,0,0,,,,,,, -322,462,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,, -323,476,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,, -324,470,1,11,0,,,,375,,,,,,,,,,,,0,0,0,1,,133,,,,, -325,471,1,11,0,,,,380,,,,,,,,,,,,0,0,0,1,,133,,,,, -327,683,2,11,1,,,,,687,,,,,,,,,,,0,0,0,0,,,,,,, -328,662,1,15,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,, -329,709,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -330,663,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -331,654,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -332,687,1,15,1,,30,,,,,,,,,,,,,,0,1,0,0,,,,,,, -333,655,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -334,651,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -335,693,1,15,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -336,652,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -337,657,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -338,658,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -339,680,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -340,705,1,15,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -341,666,1,15,1,,12,,,,,,,,,,,,,,0,0,0,0,,,,,,, -342,665,1,15,1,,9,,,,,,,,,,,,,,0,0,0,0,,,,,,, -343,689,1,15,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,, -344,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,710,711,,,, -345,660,1,15,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -346,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,,,,,, -347,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,670,,,,, -348,681,3,15,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -349,675,1,15,1,,32,,,,,,,,,,,,17,,0,0,0,0,,,,,,, -350,685,2,15,1,,,,,686,,,,,,,,,,,0,0,0,0,,,,,,, -351,691,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,, -352,697,1,15,1,,39,,,,day,,,,,,,,,,0,0,0,0,,,,,,, -353,699,1,15,1,,39,,,,night,,,,,,,,,,0,0,0,0,,,,,,, -354,713,1,15,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,, -355,695,3,15,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -356,668,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -357,673,1,15,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -358,706,1,15,1,,50,,,,,,,,,,,,,,1,0,0,0,,,,,,, -359,715,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,, -360,678,1,15,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -361,700,1,15,0,,,,,,,,18,,,2,,,,,0,0,0,0,,133,,,,, -362,462,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,, -363,470,1,15,0,,,,650,,,,,,,,,,,,0,0,0,1,,133,,,,, -364,471,1,15,0,,,,640,,,,,,,,,,,,0,0,0,1,,133,,,,, -365,476,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,, -366,462,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,, -367,105,1,17,1,,28,,,,night,,,,,,,,,,0,0,0,0,7,,10115,,,, -368,462,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,, -369,476,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,, -370,476,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,, -371,738,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,, -373,723,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,, -374,724,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -375,726,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,, -376,727,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -377,729,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,, -378,730,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -379,732,1,17,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,, -380,733,1,17,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -381,735,1,17,1,,20,,,,day,,,,,,,,,,0,0,0,0,,,,,,, -382,737,1,17,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -383,738,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,, -384,740,1,17,0,,,,775,,,,,,,,,,,,0,0,0,0,,,,,,, -385,743,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -386,745,1,17,1,,25,,,,day,,,,,,,,,,0,0,0,0,,744,745,,,, -387,745,1,17,1,,25,,,,night,,,,,,,,,,0,0,0,0,,744,10126,,,, -388,748,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -389,750,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -390,752,1,17,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -391,754,1,17,1,,34,,,,day,,,,,,,,,,0,0,0,0,,,,,,, -392,756,1,17,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -393,758,1,17,1,,33,1,,,,,,,,,,,,,0,0,0,0,,,,,,, -394,760,1,17,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,, -395,762,1,17,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -396,763,1,17,1,,,,,,,23,,,,,,,,,0,0,0,0,,,,,,, -397,768,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -398,770,1,17,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,, -399,773,1,17,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,, -400,783,1,17,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -401,784,1,17,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,, -402,790,1,17,1,,43,,,,,,,,,,,,,,0,0,0,0,,,,,,, -403,791,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,, -404,792,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,, -405,804,1,18,1,,,,,,,406,,,,,,,,,0,0,0,0,,,,,,, -406,462,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -407,470,3,20,1,85,,,,,,,,,,,,,,,0,0,0,0,,133,,,,, -408,471,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,133,,,,, -409,700,1,20,1,,,,,,,,18,160,,,,,,,0,0,0,0,,133,,,,, -410,738,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -411,811,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -412,812,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -413,814,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -414,815,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -415,817,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -416,818,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -417,820,1,20,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -418,822,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -419,823,1,20,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -420,825,1,20,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,, -421,826,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -422,828,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -423,830,1,20,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,, -424,832,1,20,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -425,834,1,20,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,, -426,836,1,20,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -427,838,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -428,839,1,20,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -429,841,3,20,1,1175,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -430,842,3,20,1,1174,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -431,844,1,20,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -432,847,1,20,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,, -433,849,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -434,851,1,20,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -435,853,1,20,1,,,,,,,269,,,,,,,,,0,0,0,0,,,,,,, -436,855,3,20,1,1311,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -437,857,1,20,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -438,858,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,, -439,860,1,20,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,, -440,861,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,, -441,869,5,20,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -442,873,1,20,1,,,,,,night,,,160,,,,,,,0,0,0,0,,,,,,, -443,879,1,20,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,, -444,886,1,20,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,, -445,887,1,20,1,,60,,,,,,,,,,,,,,0,0,0,0,,,,,,, -446,892,6,21,0,,,,,,,,,,,,,,,,0,0,0,0,,,892,,,, -447,892,7,21,0,,,,,,,,,,,,,,,,0,0,0,0,,,10191,,,, -448,28,3,21,1,885,,,,,,,,,,,,,,,0,0,0,0,,10101,10102,,,, -449,38,3,21,1,885,,,,,,,,,,,,,,,0,0,0,0,,10103,10104,,,, -450,53,1,17,1,,,,,,,,,160,,,,,,,0,0,0,0,,10107,10108,,,, -451,863,1,20,1,,28,,,,,,,,,,,,,,0,0,0,0,,10161,,,,, -452,80,3,21,1,1633,,,,,,,,,,,,,,,0,0,0,0,,10164,10165,,,, -453,199,3,21,1,1643,,,,,,,,,,,,,,,0,0,0,0,,10164,10172,,,, -454,865,8,20,1,,,,,,,,,,,,,,,,0,0,0,0,,10166,,,,, -455,866,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,10168,,,,, -456,864,1,20,1,,38,,,,,,,,,,,,,,0,0,0,0,,10173,,,,, -457,862,1,20,1,,35,,,,night,,,,,,,,,,0,0,0,0,,10175,,,,, -458,555,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,10176,10177,,,, -459,867,9,20,1,,,,,,,,,,,,,,,,0,0,0,0,,10179,,,,,49 -460,745,1,17,1,,25,,,,dusk,,,,,,,,,,0,0,0,0,,10151,10152,,,, -461,20,1,17,1,,20,,,,night,,,,,,,,,,0,0,0,0,,10091,10092,,,, -462,899,11,24,1,,,,,,,,,,,,,,,,0,0,0,0,,,,828,20,, -463,900,3,24,1,2230,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -464,901,3,24,1,2231,,,,,full-moon,,,,,,,,,,0,0,0,0,,,,,,, -465,902,13,24,1,,,,,,,,,,,,,,,,0,0,0,0,,10247,,,,,294 -466,903,1,24,1,,,,,303,day,,,,,,,,,,0,0,0,0,,10235,,,,, -467,904,12,24,0,,,,,,,,,,,,,,,,0,0,0,0,,10234,,839,20,, -468,907,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -469,908,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -470,910,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -471,911,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -472,913,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,, -473,914,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,, -474,916,1,25,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -475,918,1,25,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,, -476,920,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -477,922,1,25,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,, -478,923,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000, -479,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -480,927,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,, -481,929,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -482,930,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -483,933,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -484,934,1,25,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -485,936,3,25,1,2045,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -486,937,3,25,1,1677,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -487,939,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -488,941,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,, -489,943,1,25,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -490,945,1,25,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,, -491,947,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000, -492,949,1,25,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,, -493,952,3,25,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -494,954,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000, -495,956,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -496,958,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,, -497,959,1,25,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,, -498,961,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,, -499,964,1,25,1,,38,,,,,,,,,,,,,,0,0,1,0,,,,,,, -500,966,1,25,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,, -501,970,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -502,972,1,25,1,,30,,,,night,,,,,,,,,,0,0,0,0,,,,,,, -503,975,3,25,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -504,979,14,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,889,20,, -505,980,1,25,1,,20,,,,,,,,,,,,,,0,0,0,0,,10253,,,,, -506,981,1,25,1,,,,,,,888,,,,,,,,,0,0,0,0,,,,,,, -507,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,,,,, -508,983,15,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -509,997,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,, -510,998,1,25,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,, -511,1000,16,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -512,740,3,25,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -514,476,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -515,904,1,25,1,,,,,,,839,,,,,,,,,0,0,0,0,,10234,,,,, -516,904,14,30,0,,,,,,,,,,,,,,,,0,0,0,0,,10234,,839,20,, -517,26,3,17,1,83,,,,,,,,,,,,,,,0,0,0,0,7,25,10100,,,, -518,51,1,17,1,,26,,,,,,,,,,,,,,0,0,0,0,,10105,10106,,,, -519,75,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,10109,10110,,,, -520,76,2,17,1,,,,,,,,,,,,,,,,0,0,0,0,,10110,10111,,,, -521,89,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,10112,10113,,,, -522,103,3,17,1,85,,,,,,,,,,,,,,,0,0,0,0,7,,10114,,,, -523,59,3,24,1,82,,,,,,,,,,,,,,,0,0,0,0,,10229,10230,,,, -524,101,3,24,1,85,,,,,,,,,,,,,,,0,0,0,0,,10231,10232,,,, -525,156,1,24,0,,17,,,,,,,,,,,,,,0,0,0,0,9,,,,,, -526,157,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10233,,,, -527,503,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10236,,,, -528,549,3,24,1,80,,,,,,,,,,,,,,,0,0,0,0,9,,10237,,,, -529,571,1,24,1,,30,,,,,,,,,,,,,,0,0,0,0,,10238,10239,,,, -530,628,1,24,1,,54,,,,,,,,,,,,,,0,0,0,0,9,,10240,,,, -531,705,1,24,1,,40,,,,,,,,,,,,,,0,0,0,0,9,,10241,,,, -532,706,1,24,1,,50,,,,,,,,,,,,,,1,0,0,0,,10241,10242,,,, -533,713,1,24,1,,37,,,,,,,,,,,,,,0,0,0,0,9,,10243,,,, -534,724,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10244,,,, -535,78,1,20,1,,40,,,,,,,,,,,,,,0,0,0,0,,10162,10163,,,, -536,110,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,8,,10167,,,, -537,122,1,20,1,,,,,,,102,,,,,,,,,0,0,0,0,8,,10168,,,, -538,264,1,20,1,,20,,,,,,,,,,,,,,0,0,0,0,,10174,10175,,,, -539,892,3,25,1,1675,,,,,,,,,,,,,,,0,0,0,0,,,892,,,, -540,892,3,25,1,1676,,,,,,,,,,,,,,,0,0,0,0,,,10191,,,, -541,1011,3,26,1,2109,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -542,1018,3,27,1,2232,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -543,1019,1,27,1,,,,,,,913,,,,,,,,,0,0,0,0,,,,,,, -544,1013,3,26,1,2110,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -545,1013,3,26,1,2111,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -546,462,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,, -547,476,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,, -548,470,1,16,0,,,,438,,,,,,,,,,,,0,0,0,1,,133,,,,, -549,471,1,16,0,,,,445,,,,,,,,,,,,0,0,0,1,,133,,,,, -550,470,1,17,0,,,,750,,,,,,,,,,,,0,0,0,1,,133,,,,, -551,471,1,17,0,,,,775,,,,,,,,,,,,0,0,0,1,,133,,,,, -552,855,3,20,1,1312,,,,,,,,,,,,,,,0,0,0,0,,,,,,, -553,350,1,16,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,, -554,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10027,10030,,,, -555,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10028,10031,,,, -556,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10029,10032,,,, +id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_item_id,minimum_level,gender_id,location_id,held_item_id,time_of_day,known_move_id,known_move_type_id,minimum_happiness,minimum_beauty,minimum_affection,relative_physical_stats,party_species_id,party_type_id,trade_species_id,needs_overworld_rain,turn_upside_down,needs_multiplayer,near_special_rock,region_id,base_form_id,evolved_form_id,used_move_id,minimum_move_count,minimum_steps,minimum_damage_taken,needs_one_of_natures,condition_expression,required_form_id +1,2,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +2,3,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +3,5,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +4,6,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +5,8,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +6,9,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +7,11,1,1,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +8,12,1,1,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +9,14,1,1,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +10,15,1,1,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +11,17,1,1,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +12,18,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +13,20,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +14,22,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +15,24,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +16,25,1,1,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,,,,, +17,26,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,25,,,,,,,, +18,28,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +19,30,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +20,31,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +21,33,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +22,34,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +23,35,1,1,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +24,36,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +25,38,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +26,39,1,1,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +27,40,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +28,42,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +29,44,1,1,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +30,45,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +31,47,1,1,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +32,49,1,1,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +33,51,1,1,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +34,53,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +35,55,1,1,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +36,57,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +37,59,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +38,61,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +39,62,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +40,64,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +41,65,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +42,67,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +43,68,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +44,70,1,1,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +45,71,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +46,73,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +47,75,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +48,76,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +49,78,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +50,80,1,1,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +51,82,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +52,85,1,1,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +53,87,1,1,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +54,89,1,1,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +55,91,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +56,93,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +57,94,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +58,97,1,1,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +59,99,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +60,101,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +61,103,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +62,105,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +63,106,1,1,1,,20,,,,,,,,,,1,,,,0,0,0,0,,,,,,,,,, +64,107,1,1,1,,20,,,,,,,,,,-1,,,,0,0,0,0,,,,,,,,,, +65,110,1,1,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +66,112,1,1,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +67,113,1,8,1,,,,,110,day,,,,,,,,,,0,0,0,0,,,,,,,,,, +68,117,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +69,119,1,1,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +70,121,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +71,122,1,8,1,,,,,,,102,,,,,,,,,0,0,0,0,,,,,,,,,, +72,124,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +73,125,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +74,126,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +75,130,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +76,134,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, +77,135,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, +78,136,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, +79,139,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +80,141,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +81,143,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +82,148,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +83,149,1,1,1,,55,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +84,153,1,3,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +85,154,1,3,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +86,156,1,3,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +87,157,1,3,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +88,159,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +89,160,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +90,162,1,3,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +91,164,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +92,166,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +93,168,1,3,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +94,169,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +95,171,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +96,176,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +97,178,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +98,180,1,3,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +99,181,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +100,182,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +101,183,1,5,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +102,184,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +103,185,1,8,1,,,,,,,102,,,,,,,,,0,0,0,0,,,,,,,,,, +104,186,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,,,,, +105,188,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +106,189,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +107,192,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +108,195,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +109,196,1,3,1,,,,,,day,,,160,,,,,,,0,0,0,0,,133,,,,,,,, +110,197,1,3,1,,,,,,night,,,160,,,,,,,0,0,0,0,,133,,,,,,,, +111,199,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,,,,, +112,202,1,5,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +113,205,1,3,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +114,208,2,3,1,,,,,210,,,,,,,,,,,0,0,0,0,,,,,,,,,, +115,210,1,3,1,,23,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +116,212,2,3,1,,,,,210,,,,,,,,,,,0,0,0,0,,,,,,,,,, +117,217,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +118,219,1,3,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +119,221,1,3,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +120,224,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +121,226,1,8,1,,,,,,,,,,,,,223,,,0,0,0,0,,,,,,,,,, +122,229,1,3,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +123,230,2,3,1,,,,,212,,,,,,,,,,,0,0,0,0,,,,,,,,,, +124,232,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +125,233,2,3,1,,,,,229,,,,,,,,,,,0,0,0,0,,,,,,,,,, +126,237,1,3,1,,20,,,,,,,,,,0,,,,0,0,0,0,,,,,,,,,, +127,242,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +128,247,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +129,248,1,3,1,,55,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +130,253,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +131,254,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +132,256,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +133,257,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +134,259,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +135,260,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +136,262,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +137,264,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +138,266,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 4 <=, +139,267,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +140,268,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 5 >=, +141,269,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +142,271,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +143,272,3,5,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +144,274,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +145,275,3,5,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +146,277,1,5,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +147,279,1,5,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +148,281,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +149,282,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +150,284,1,5,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +151,286,1,5,1,,23,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +152,288,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +153,289,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +154,291,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +155,292,4,5,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +156,294,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +157,295,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +158,297,1,5,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +159,301,3,5,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +160,305,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +161,306,1,5,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +162,308,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +163,310,1,5,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +164,315,1,8,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,,,,, +165,317,1,5,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +166,319,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +167,321,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +168,323,1,5,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +169,326,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +170,329,1,5,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +171,330,1,5,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +172,332,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +173,334,1,5,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +174,340,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +175,342,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +176,344,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +177,346,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +178,348,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +179,350,1,5,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,,,,, +180,354,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +181,356,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +182,358,1,8,1,,,,,,night,,,220,,,,,,,0,0,0,0,,,,,,,,,, +183,362,1,5,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +184,364,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +185,365,1,5,1,,44,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +186,367,2,5,1,,,,,203,,,,,,,,,,,0,0,0,0,,,,,,,,,, +187,368,2,5,1,,,,,204,,,,,,,,,,,0,0,0,0,,,,,,,,,, +188,372,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +189,373,1,5,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +190,375,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +191,376,1,5,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +192,388,1,8,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +193,389,1,8,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +194,391,1,8,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +195,392,1,8,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +196,394,1,8,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +197,395,1,8,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +198,397,1,8,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +199,398,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +200,400,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +201,402,1,8,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +202,404,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +203,405,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +204,407,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +205,409,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +206,411,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +207,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,412,413,,,,,,,412 +208,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,412,414,,,,,,, +209,416,1,8,1,,21,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +210,419,1,8,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +211,421,1,8,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +212,423,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +213,424,1,8,1,,,,,,,458,,,,,,,,,0,0,0,0,,,,,,,,,, +214,426,1,8,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +215,428,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +216,429,3,8,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +217,430,3,8,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +218,432,1,8,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +219,435,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +220,437,1,8,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +221,444,1,8,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +222,445,1,8,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +223,448,1,8,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,,,,, +224,450,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +225,452,1,8,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +226,454,1,8,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +227,457,1,8,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +228,460,1,8,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +229,461,1,8,1,,,,,303,night,,,,,,,,,,0,0,0,0,,,,,,,,,, +230,462,1,8,0,,,,10,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +231,463,1,8,1,,,,,,,205,,,,,,,,,0,0,0,0,,,,,,,,,, +232,464,2,8,1,,,,,298,,,,,,,,,,,0,0,0,0,,,,,,,,,, +233,465,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,,, +234,466,2,8,1,,,,,299,,,,,,,,,,,0,0,0,0,,,,,,,,,, +235,467,2,8,1,,,,,300,,,,,,,,,,,0,0,0,0,,,,,,,,,, +236,468,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +237,469,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,,, +238,470,1,8,0,,,,8,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +239,471,1,8,0,,,,48,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +240,472,1,8,1,,,,,304,night,,,,,,,,,,0,0,0,0,,,,,,,,,, +241,473,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,,, +242,474,2,8,1,,,,,301,,,,,,,,,,,0,0,0,0,,,,,,,,,, +243,475,3,8,1,109,,2,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +244,476,1,8,0,,,,10,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +245,477,2,8,1,,,,,302,,,,,,,,,,,0,0,0,0,,,,,,,,,, +246,478,3,8,1,109,,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +247,496,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +248,497,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +249,499,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +250,500,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +251,502,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +252,503,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +253,505,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +254,507,1,11,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +255,508,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +256,510,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +257,512,3,11,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +258,514,3,11,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +259,516,3,11,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +260,518,3,11,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +261,520,1,11,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +262,521,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +263,523,1,11,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +264,525,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +265,526,2,11,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +266,528,1,11,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +267,530,1,11,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +268,533,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +269,534,2,11,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +270,536,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +271,537,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +272,541,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +273,542,1,11,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,,,,, +274,544,1,11,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +275,545,1,11,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +276,547,3,11,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +277,549,3,11,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +278,552,1,11,1,,29,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +279,553,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +280,555,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +281,558,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +282,560,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +283,563,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +284,565,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +285,567,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +286,569,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +287,571,1,11,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +288,573,3,11,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +289,575,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +290,576,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +291,578,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +292,579,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +293,581,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +294,583,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +295,584,1,11,1,,47,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +296,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +297,589,2,11,1,,,,,,,,,,,,,,,616,0,0,0,0,,,,,,,,,, +298,591,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +299,593,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +300,596,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +301,598,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +302,600,1,11,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +303,601,1,11,1,,49,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +304,603,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +305,604,3,11,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +306,606,1,11,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +307,608,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +308,609,3,11,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +309,611,1,11,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +310,612,1,11,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +311,614,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +312,617,2,11,1,,,,,,,,,,,,,,,588,0,0,0,0,,,,,,,,,, +313,620,1,11,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +314,623,1,11,1,,43,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +315,625,1,11,1,,52,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +316,628,1,11,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +317,630,1,11,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +318,634,1,11,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +319,635,1,11,1,,64,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +320,637,1,11,1,,59,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +321,350,2,11,1,,,,,580,,,,,,,,,,,0,0,0,0,,,,,,,,,, +322,462,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +323,476,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +324,470,1,11,0,,,,375,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +325,471,1,11,0,,,,380,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +327,683,2,11,1,,,,,687,,,,,,,,,,,0,0,0,0,,,,,,,,,, +328,662,1,15,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +329,709,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +330,663,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +331,654,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +332,687,1,15,1,,30,,,,,,,,,,,,,,0,1,0,0,,,,,,,,,, +333,655,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +334,651,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +335,693,1,15,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +336,652,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +337,657,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +338,658,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +339,680,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +340,705,1,15,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +341,666,1,15,1,,12,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +342,665,1,15,1,,9,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +343,689,1,15,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +344,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,710,711,,,,,,, +345,660,1,15,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +346,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +347,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,670,,,,,,,, +348,681,3,15,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +349,675,1,15,1,,32,,,,,,,,,,,,17,,0,0,0,0,,,,,,,,,, +350,685,2,15,1,,,,,686,,,,,,,,,,,0,0,0,0,,,,,,,,,, +351,691,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +352,697,1,15,1,,39,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,,, +353,699,1,15,1,,39,,,,night,,,,,,,,,,0,0,0,0,,,,,,,,,, +354,713,1,15,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +355,695,3,15,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +356,668,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +357,673,1,15,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +358,706,1,15,1,,50,,,,,,,,,,,,,,1,0,0,0,,,,,,,,,, +359,715,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +360,678,1,15,1,,25,2,,,,,,,,,,,,,0,0,0,0,,677,678,,,,,,, +361,700,1,15,0,,,,,,,,18,,,2,,,,,0,0,0,0,,133,,,,,,,, +362,462,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +363,470,1,15,0,,,,650,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +364,471,1,15,0,,,,640,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +365,476,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +366,462,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +367,105,1,17,1,,28,,,,night,,,,,,,,,,0,0,0,0,7,,10115,,,,,,, +368,462,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +369,476,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +370,476,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +371,738,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +373,723,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +374,724,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +375,726,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +376,727,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +377,729,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +378,730,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +379,732,1,17,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +380,733,1,17,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +381,735,1,17,1,,20,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,,, +382,737,1,17,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +383,738,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +384,740,1,17,0,,,,775,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +385,743,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +386,745,1,17,1,,25,,,,day,,,,,,,,,,0,0,0,0,,744,745,,,,,,, +387,745,1,17,1,,25,,,,night,,,,,,,,,,0,0,0,0,,744,10126,,,,,,, +388,748,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +389,750,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +390,752,1,17,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +391,754,1,17,1,,34,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,,, +392,756,1,17,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +393,758,1,17,1,,33,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +394,760,1,17,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +395,762,1,17,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +396,763,1,17,1,,,,,,,23,,,,,,,,,0,0,0,0,,,,,,,,,, +397,768,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +398,770,1,17,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +399,773,1,17,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, +400,783,1,17,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +401,784,1,17,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +402,790,1,17,1,,43,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +403,791,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +404,792,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +405,804,1,18,1,,,,,,,406,,,,,,,,,0,0,0,0,,,,,,,,,, +406,462,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +407,470,3,20,1,85,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, +408,471,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, +409,700,1,20,1,,,,,,,,18,160,,,,,,,0,0,0,0,,133,,,,,,,, +410,738,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +411,811,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +412,812,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +413,814,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +414,815,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +415,817,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +416,818,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +417,820,1,20,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +418,822,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +419,823,1,20,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +420,825,1,20,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +421,826,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +422,828,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +423,830,1,20,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +424,832,1,20,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +425,834,1,20,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +426,836,1,20,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +427,838,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +428,839,1,20,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +429,841,3,20,1,1175,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +430,842,3,20,1,1174,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +431,844,1,20,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +432,847,1,20,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +433,849,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,848,849,,,,,10473025,, +434,851,1,20,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +435,853,1,20,1,,,,,,,269,,,,,,,,,0,0,0,0,,,,,,,,,, +436,855,3,20,1,1311,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,,854 +437,857,1,20,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +438,858,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +439,860,1,20,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +440,861,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +441,869,5,20,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +442,873,1,20,1,,,,,,night,,,160,,,,,,,0,0,0,0,,,,,,,,,, +443,879,1,20,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +444,886,1,20,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +445,887,1,20,1,,60,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +446,892,6,21,0,,,,,,,,,,,,,,,,0,0,0,0,,,892,,,,,,, +447,892,7,21,0,,,,,,,,,,,,,,,,0,0,0,0,,,10191,,,,,,, +448,28,3,17,1,885,,,,,,,,,,,,,,,0,0,0,0,,10101,10102,,,,,,, +449,38,3,17,1,885,,,,,,,,,,,,,,,0,0,0,0,,10103,10104,,,,,,, +450,53,1,17,1,,,,,,,,,160,,,,,,,0,0,0,0,,10107,10108,,,,,,, +451,863,1,20,1,,28,,,,,,,,,,,,,,0,0,0,0,,10161,,,,,,,, +452,80,3,21,1,1633,,,,,,,,,,,,,,,0,0,0,0,,10164,10165,,,,,,, +453,199,3,21,1,1643,,,,,,,,,,,,,,,0,0,0,0,,10164,10172,,,,,,, +454,865,8,20,1,,,,,,,,,,,,,,,,0,0,0,0,,10166,,,,,,,, +455,866,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,10168,,,,,,,, +456,864,1,20,1,,38,,,,,,,,,,,,,,0,0,0,0,,10173,,,,,,,, +457,862,1,20,1,,35,,,,night,,,,,,,,,,0,0,0,0,,10175,,,,,,,, +458,555,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,10176,10177,,,,,,, +459,867,9,20,1,,,,890,,,,,,,,,,,,0,0,0,0,,10179,,,,,49,,, +460,745,1,17,1,,25,,,,dusk,,,,,,,,,,0,0,0,0,,10151,10152,,,,,,, +461,20,1,17,1,,20,,,,night,,,,,,,,,,0,0,0,0,,10091,10092,,,,,,, +462,899,11,24,1,,,,,,,,,,,,,,,,0,0,0,0,,,,828,20,,,,, +463,900,3,24,1,2230,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +464,901,3,24,1,2231,,,,,full-moon,,,,,,,,,,0,0,0,0,,,,,,,,,, +465,902,13,24,1,,,2,,,,,,,,,,,,,0,0,0,0,,10247,902,,,,294,,, +466,903,1,24,1,,,,,303,day,,,,,,,,,,0,0,0,0,,10235,,,,,,,, +467,904,12,24,0,,,,,,,,,,,,,,,,0,0,0,0,,10234,,839,20,,,,, +468,907,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +469,908,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +470,910,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +471,911,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +472,913,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +473,914,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +474,916,1,25,1,,18,2,,,,,,,,,,,,,0,0,0,0,,915,916,,,,,,, +475,918,1,25,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +476,920,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +477,922,1,25,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +478,923,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,,, +479,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,924,925,,,,,,EC 100 % 0 !=, +480,927,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +481,929,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +482,930,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +483,933,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +484,934,1,25,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +485,936,3,25,1,2045,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +486,937,3,25,1,1677,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +487,939,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +488,941,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +489,943,1,25,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +490,945,1,25,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +491,947,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,,, +492,949,1,25,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +493,952,3,25,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +494,954,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,,, +495,956,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +496,958,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +497,959,1,25,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +498,961,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +499,964,1,25,1,,38,,,,,,,,,,,,,,0,0,1,0,,,,,,,,,, +500,966,1,25,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +501,970,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +502,972,1,25,1,,30,,,,night,,,,,,,,,,0,0,0,0,,,,,,,,,, +503,975,3,25,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +504,979,14,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,889,20,,,,, +505,980,1,25,1,,20,,,,,,,,,,,,,,0,0,0,0,,10253,,,,,,,, +506,981,1,25,1,,,,,,,888,,,,,,,,,0,0,0,0,,,,,,,,,, +507,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,206,982,,,,,,EC 100 % 0 !=, +508,983,15,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +509,997,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +510,998,1,25,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +511,1000,16,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +512,740,3,25,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +514,476,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +515,904,1,25,1,,,,,,,839,,,,,,,,,0,0,0,0,,10234,,,,,,,, +516,904,14,30,0,,,,,,,,,,,,,,,,0,0,0,0,,10234,,839,20,,,,, +517,26,3,17,1,83,,,,,,,,,,,,,,,0,0,0,0,7,25,10100,,,,,,, +518,51,1,17,1,,26,,,,,,,,,,,,,,0,0,0,0,,10105,10106,,,,,,, +519,75,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,10109,10110,,,,,,, +520,76,2,17,1,,,,,,,,,,,,,,,,0,0,0,0,,10110,10111,,,,,,, +521,89,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,10112,10113,,,,,,, +522,103,3,17,1,85,,,,,,,,,,,,,,,0,0,0,0,7,,10114,,,,,,, +523,59,3,24,1,82,,,,,,,,,,,,,,,0,0,0,0,,10229,10230,,,,,,, +524,101,3,24,1,85,,,,,,,,,,,,,,,0,0,0,0,,10231,10232,,,,,,, +525,156,1,24,0,,17,,,,,,,,,,,,,,0,0,0,0,9,,,,,,,,, +526,157,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10233,,,,,,, +527,503,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10236,,,,,,, +528,549,3,24,1,80,,,,,,,,,,,,,,,0,0,0,0,9,,10237,,,,,,, +529,571,1,24,1,,30,,,,,,,,,,,,,,0,0,0,0,,10238,10239,,,,,,, +530,628,1,24,1,,54,,,,,,,,,,,,,,0,0,0,0,9,,10240,,,,,,, +531,705,1,24,1,,40,,,,,,,,,,,,,,0,0,0,0,9,,10241,,,,,,, +532,706,1,24,1,,50,,,,,,,,,,,,,,1,0,0,0,,10241,10242,,,,,,, +533,713,1,24,1,,37,,,,,,,,,,,,,,0,0,0,0,9,,10243,,,,,,, +534,724,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10244,,,,,,, +535,78,1,20,1,,40,,,,,,,,,,,,,,0,0,0,0,,10162,10163,,,,,,, +536,110,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,8,,10167,,,,,,, +537,122,1,20,1,,,,,,,102,,,,,,,,,0,0,0,0,8,,10168,,,,,,, +538,264,1,20,1,,20,,,,,,,,,,,,,,0,0,0,0,,10174,10175,,,,,,, +539,892,3,25,1,1675,,,,,,,,,,,,,,,0,0,0,0,,,892,,,,,,, +540,892,3,25,1,1676,,,,,,,,,,,,,,,0,0,0,0,,,10191,,,,,,, +541,1011,3,26,1,2109,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +542,1018,3,27,1,2232,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +543,1019,1,27,1,,,,,,,913,,,,,,,,,0,0,0,0,,,,,,,,,, +544,1013,3,26,1,2110,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,,1012 +545,1013,3,26,1,2111,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,,10447 +546,462,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +547,476,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +548,470,1,16,0,,,,438,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +549,471,1,16,0,,,,445,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +550,470,1,17,0,,,,750,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +551,471,1,17,0,,,,775,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, +552,855,3,20,1,1312,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,,10344 +553,350,1,16,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,,,,, +554,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10027,10030,,,,,,, +555,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10028,10031,,,,,,, +556,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10029,10032,,,,,,, +557,678,1,15,1,,25,1,,,,,,,,,,,,,0,0,0,0,,677,10025,,,,,,, +558,916,1,25,1,,18,1,,,,,,,,,,,,,0,0,0,0,,915,10254,,,,,,, +559,849,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,848,10184,,,,,23081406,, +560,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,924,10257,,,,,,EC 100 % 0 ==, +561,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,206,10255,,,,,,EC 100 % 0 ==, +562,902,13,24,1,,,1,,,,,,,,,,,,,0,0,0,0,,10247,10248,,,,294,,, +563,266,1,15,0,,7,,,,,,,,,,,,,,0,0,0,0,,265,266,,,,,,EC 16 >> 10 % 4 <=, +564,268,1,15,0,,7,,,,,,,,,,,,,,0,0,0,0,,265,268,,,,,,EC 16 >> 10 % 5 >=, +565,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,412,10004,,,,,,,10034 +566,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,412,10005,,,,,,,10035 +567,809,17,19,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, diff --git a/data/v2/csv/pokemon_species.csv b/data/v2/csv/pokemon_species.csv index f7fec73d0..67f0da856 100644 --- a/data/v2/csv/pokemon_species.csv +++ b/data/v2/csv/pokemon_species.csv @@ -807,7 +807,7 @@ id,identifier,generation_id,evolves_from_species_id,evolution_chain_id,color_id, 806,blacephalon,7,,426,9,12,,-1,30,0,0,120,0,1,0,0,0,806, 807,zeraora,7,,427,10,12,,-1,3,0,0,120,0,1,0,0,1,807, 808,meltan,7,,428,4,1,,-1,3,0,0,120,0,1,0,0,1,808, -809,melmetal,7,808,429,4,12,,-1,3,0,0,120,0,1,0,0,1,809, +809,melmetal,7,808,428,4,12,,-1,3,0,0,120,0,1,0,0,1,809, 810,grookey,8,,430,5,6,,1,45,50,0,20,0,4,0,0,0,810, 811,thwackey,8,810,430,5,6,,1,45,50,0,20,0,4,0,0,0,811, 812,rillaboom,8,811,430,5,12,,1,45,50,0,20,0,4,0,0,0,812, diff --git a/openapi.yml b/openapi.yml index 8adb5c044..d87d98dd2 100644 --- a/openapi.yml +++ b/openapi.yml @@ -838,6 +838,70 @@ paths: schema: $ref: '#/components/schemas/EvolutionTriggerDetail' description: '' + /api/v2/evolution-variable/: + get: + operationId: evolution_variable_list + description: Evolution variables represent parameters (such as Encryption Constant + and Personality Value) used in boolean expressions for form-branching evolutions. + Check out [Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Personality_value) + for greater detail. + summary: List evolution variables + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\nCase-insensitive + query applied on the `name` property. " + tags: + - evolution + security: + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedEvolutionVariableSummaryList' + description: '' + /api/v2/evolution-variable/{id}/: + get: + operationId: evolution_variable_retrieve + description: Evolution variables represent parameters (such as Encryption Constant + and Personality Value) used in boolean expressions for form-branching evolutions. + Check out [Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Personality_value) + for greater detail. + summary: Get evolution variable + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - evolution + security: + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EvolutionVariableDetail' + description: '' /api/v2/generation/: get: operationId: generation_list @@ -3892,6 +3956,74 @@ components: required: - name - url + EvolutionVariableDescription: + type: object + properties: + description: + type: string + maxLength: 2000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + EvolutionVariableDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 200 + symbol: + type: string + maxLength: 10 + data_type: + type: string + maxLength: 20 + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + names: + type: array + items: + $ref: '#/components/schemas/EvolutionVariableName' + readOnly: true + descriptions: + type: array + items: + $ref: '#/components/schemas/EvolutionVariableDescription' + readOnly: true + required: + - descriptions + - id + - name + - names + - symbol + - version_group + EvolutionVariableName: + type: object + properties: + name: + type: string + maxLength: 200 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + EvolutionVariableSummary: + type: object + properties: + name: + type: string + maxLength: 200 + url: + type: string + format: uri + readOnly: true + required: + - name + - url Experience: type: object properties: @@ -5875,6 +6007,29 @@ components: type: array items: $ref: '#/components/schemas/EvolutionTriggerSummary' + PaginatedEvolutionVariableSummaryList: + type: object + required: + - count + - results + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/EvolutionVariableSummary' PaginatedGenderSummaryList: type: object required: @@ -7260,6 +7415,8 @@ components: $ref: '#/components/schemas/RegionSummary' base_form: $ref: '#/components/schemas/PokemonSummary' + required_form: + $ref: '#/components/schemas/PokemonFormSummary' evolved_form: $ref: '#/components/schemas/PokemonSummary' used_move: @@ -7282,17 +7439,31 @@ components: - 'null' maximum: 2147483647 minimum: -2147483648 + needs_one_of_natures: + type: array + items: + $ref: '#/components/schemas/NatureSummary' + readOnly: true + condition_expression: + type: + - object + - 'null' + additionalProperties: {} + readOnly: true required: - base_form + - condition_expression - evolved_form - held_item - item - known_move - known_move_type - location + - needs_one_of_natures - party_species - party_type - region + - required_form - trade_species - trigger - used_move diff --git a/pokemon_v2/api.py b/pokemon_v2/api.py index b04d577b1..505adc096 100644 --- a/pokemon_v2/api.py +++ b/pokemon_v2/api.py @@ -43,6 +43,7 @@ "EncounterMethodResource", "EvolutionChainResource", "EvolutionTriggerResource", + "EvolutionVariableResource", "GenderResource", "GenerationResource", "GrowthRateResource", @@ -393,6 +394,22 @@ class EvolutionTriggerResource(PokeapiCommonViewset): list_serializer_class = EvolutionTriggerSummarySerializer +@extend_schema( + description="Evolution variables represent parameters (such as Encryption Constant and Personality Value) used in boolean expressions for form-branching evolutions. Check out [Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Personality_value) for greater detail.", + summary="Get evolution variable", + tags=["evolution"], +) +@extend_schema_view( + list=extend_schema( + summary="List evolution variables", + ) +) +class EvolutionVariableResource(PokeapiCommonViewset): + queryset = EvolutionVariable.objects.all() + serializer_class = EvolutionVariableDetailSerializer + list_serializer_class = EvolutionVariableSummarySerializer + + @extend_schema( description="A generation is a grouping of the Pokémon games that separates them based on the Pokémon they include. In each generation, a new set of Pokémon, Moves, Abilities and Types that did not exist in the previous generation are released.", summary="Get genration", diff --git a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py new file mode 100644 index 000000000..50b967b8f --- /dev/null +++ b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py @@ -0,0 +1,150 @@ +# Generated by Django 5.2.10 on 2026-08-30 15:38 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("pokemon_v2", "0035_pokemonformflavortext"), + ] + + operations = [ + migrations.AddField( + model_name="pokemonevolution", + name="condition_expression", + field=models.CharField( + blank=True, + default="", + help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", + max_length=100, + ), + ), + migrations.AddField( + model_name="pokemonevolution", + name="needs_one_of_natures", + field=models.IntegerField( + blank=True, + help_text="25-bit bitmask of allowed nature IDs (1 << (nature_id - 1))", + null=True, + ), + ), + migrations.AddField( + model_name="pokemonevolution", + name="required_form", + field=models.ForeignKey( + blank=True, + help_text="Specific temporary form required for evolution (e.g. Burmy cloaks)", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="required_form_evolutions", + to="pokemon_v2.pokemonform", + ), + ), + migrations.CreateModel( + name="EvolutionVariable", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(db_index=True, max_length=200)), + ("symbol", models.CharField(max_length=10)), + ("data_type", models.CharField(default="uint32", max_length=20)), + ( + "version_group", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="%(class)s", + to="pokemon_v2.versiongroup", + ), + ), + ], + options={ + "abstract": False, + }, + ), + migrations.CreateModel( + name="EvolutionVariableDescription", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("description", models.CharField(default="", max_length=2000)), + ( + "evolution_variable", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="%(class)s", + to="pokemon_v2.evolutionvariable", + ), + ), + ( + "language", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="%(class)s_language", + to="pokemon_v2.language", + ), + ), + ], + options={ + "abstract": False, + }, + ), + migrations.CreateModel( + name="EvolutionVariableName", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(db_index=True, max_length=200)), + ( + "evolution_variable", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="%(class)s", + to="pokemon_v2.evolutionvariable", + ), + ), + ( + "language", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="%(class)s_language", + to="pokemon_v2.language", + ), + ), + ], + options={ + "abstract": False, + }, + ), + ] diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index 318192e0e..2190b551b 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -4,7 +4,7 @@ from typing import Any, ClassVar, TypeVar from django.db import models -from typing_extensions import Self, override +from typing_extensions import override _ModelT = TypeVar("_ModelT", bound=models.Model) @@ -46,6 +46,9 @@ "EvolutionChain", "EvolutionTrigger", "EvolutionTriggerName", + "EvolutionVariable", + "EvolutionVariableDescription", + "EvolutionVariableName", "Experience", "Gender", "Generation", @@ -62,6 +65,7 @@ "HasEncounterCondition", "HasEncounterMethod", "HasEvolutionTrigger", + "HasEvolutionVariable", "HasFlavorText", "HasFlingEffect", "HasGameIndex", @@ -250,7 +254,7 @@ def get_queryset(self) -> models.QuerySet[_ModelT]: class PokeApiModel(models.Model): - objects: ClassVar[PokeApiManager[Self]] = PokeApiManager() + objects: ClassVar[PokeApiManager[Any]] = PokeApiManager() class Meta: abstract = True @@ -422,6 +426,19 @@ class Meta: abstract = True +class HasEvolutionVariable(PokeApiModel): + evolution_variable = models.ForeignKey( + "EvolutionVariable", + blank=True, + null=True, + related_name="%(class)s", + on_delete=models.CASCADE, + ) + + class Meta: + abstract = True + + class HasFlavorText(PokeApiModel): flavor_text = models.CharField(max_length=500) @@ -1780,6 +1797,19 @@ class EvolutionTriggerName(HasEvolutionTrigger, IsName): pass +class EvolutionVariable(HasName, HasVersionGroup): + symbol = models.CharField(max_length=10) + data_type = models.CharField(max_length=20, default="uint32") + + +class EvolutionVariableName(HasEvolutionVariable, IsName): + pass + + +class EvolutionVariableDescription(HasEvolutionVariable, IsDescription): + pass + + #################### # POKEDEX MODELS # #################### @@ -2009,6 +2039,28 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): min_damage_taken = models.IntegerField(blank=True, null=True) + needs_one_of_natures = models.IntegerField( + blank=True, + null=True, + help_text="25-bit bitmask of allowed nature IDs (1 << (nature_id - 1))", + ) + + condition_expression = models.CharField( + max_length=100, + blank=True, + default="", + help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", + ) + + required_form = models.ForeignKey( + "PokemonForm", + blank=True, + null=True, + related_name="required_form_evolutions", + on_delete=models.CASCADE, + help_text="Specific temporary form required for evolution (e.g. Burmy cloaks)", + ) + class PokemonForm(HasName, HasPokemon, HasOrder): form_name = models.CharField(max_length=30) diff --git a/pokemon_v2/serializers.py b/pokemon_v2/serializers.py index 780a9fb86..510dc8ffc 100644 --- a/pokemon_v2/serializers.py +++ b/pokemon_v2/serializers.py @@ -81,6 +81,10 @@ class PokemonWithRelations(Protocol): "EvolutionTriggerDetailSerializer", "EvolutionTriggerNameSerializer", "EvolutionTriggerSummarySerializer", + "EvolutionVariableDescriptionSerializer", + "EvolutionVariableDetailSerializer", + "EvolutionVariableNameSerializer", + "EvolutionVariableSummarySerializer", "ExperienceSerializer", "GenderDetailSerializer", "GenderPokemonSpeciesSerializer", @@ -340,6 +344,12 @@ class Meta: fields = ("name", "url") +class EvolutionVariableSummarySerializer(serializers.HyperlinkedModelSerializer[EvolutionVariable]): + class Meta: + model = EvolutionVariable + fields = ("name", "url") + + class EvolutionChainSummarySerializer(serializers.HyperlinkedModelSerializer[EvolutionChain]): class Meta: model = EvolutionChain @@ -2957,7 +2967,7 @@ def get_pokemon_sprites(self, obj: Pokemon) -> dict[str, Any]: sprites_list = list(cast("PokemonWithRelations", obj).pokemonsprites.all()) if not sprites_list: return {} - sprites = sprites_list[0].sprites + sprites = cast("dict[str, Any]", sprites_list[0].sprites) if obj.pokemon_species and obj.pokemon_species.gender_rate == 8: self._fill_female_sprites(sprites) return sprites @@ -2968,7 +2978,7 @@ def _fill_female_sprites(self, sprites: dict[str, Any]) -> None: sprites[female_key] = sprites[default_key] for value in sprites.values(): if isinstance(value, dict): - self._fill_female_sprites(value) + self._fill_female_sprites(cast("dict[str, Any]", value)) @extend_schema_field(PokemonCriesSerializer) def get_pokemon_cries(self, obj: Pokemon) -> dict[str, str | None]: @@ -3188,6 +3198,34 @@ def get_species(self, obj: EvolutionTrigger) -> ReturnList[ReturnDict[str, Any]] ) +class EvolutionVariableNameSerializer(serializers.ModelSerializer[EvolutionVariableName]): + language = LanguageSummarySerializer() + + class Meta: + model = EvolutionVariableName + fields = ("name", "language") + + +class EvolutionVariableDescriptionSerializer(serializers.ModelSerializer[EvolutionVariableDescription]): + language = LanguageSummarySerializer() + + class Meta: + model = EvolutionVariableDescription + fields = ("description", "language") + + +class EvolutionVariableDetailSerializer(serializers.HyperlinkedModelSerializer[EvolutionVariable]): + version_group = VersionGroupSummarySerializer() + names = EvolutionVariableNameSerializer(many=True, read_only=True, source="evolutionvariablename") + descriptions = EvolutionVariableDescriptionSerializer( + many=True, read_only=True, source="evolutionvariabledescription" + ) + + class Meta: + model = EvolutionVariable + fields = ("id", "name", "symbol", "data_type", "version_group", "names", "descriptions") + + class PokemonSpeciesDescriptionSerializer(serializers.ModelSerializer[PokemonSpeciesDescription]): language = LanguageSummarySerializer() @@ -3334,8 +3372,11 @@ class PokemonEvolutionSerializer(serializers.ModelSerializer[PokemonEvolution]): trigger = EvolutionTriggerSummarySerializer(source="evolution_trigger") region = RegionSummarySerializer() base_form = PokemonSummarySerializer() + required_form = PokemonFormSummarySerializer() evolved_form = PokemonSummarySerializer() used_move = MoveSummarySerializer() + needs_one_of_natures = serializers.SerializerMethodField("get_needs_one_of_natures") + condition_expression = serializers.SerializerMethodField("get_condition_expression") class Meta: model = PokemonEvolution @@ -3364,13 +3405,40 @@ class Meta: "turn_upside_down", "region", "base_form", + "required_form", "evolved_form", "used_move", "min_move_count", "min_steps", "min_damage_taken", + "needs_one_of_natures", + "condition_expression", ) + @extend_schema_field(NatureSummarySerializer(many=True)) + def get_needs_one_of_natures(self, obj: PokemonEvolution) -> list[dict[str, Any]] | None: + if obj.needs_one_of_natures is None: + return None + nature_ids = [i for i in range(1, 26) if (obj.needs_one_of_natures & (1 << (i - 1)))] + if not nature_ids: + return None + natures = Nature.objects.filter(id__in=nature_ids).order_by("id") + return cast( + "list[dict[str, Any]]", + NatureSummarySerializer(natures, many=True, context=self.context).data, + ) + + @extend_schema_field(serializers.DictField(allow_null=True)) + def get_condition_expression(self, obj: PokemonEvolution) -> dict[str, Any] | None: + if not obj.condition_expression: + return None + tokens = obj.condition_expression.split() + variables = EvolutionVariable.objects.filter(symbol__in=tokens) + return { + "expression": obj.condition_expression, + "variables": EvolutionVariableSummarySerializer(variables, many=True, context=self.context).data, + } + class EvolutionChainLinkSerializer(serializers.Serializer[Any]): is_baby = serializers.BooleanField() diff --git a/pokemon_v2/test_models.py b/pokemon_v2/test_models.py index a6532ee1f..660f60147 100644 --- a/pokemon_v2/test_models.py +++ b/pokemon_v2/test_models.py @@ -37,6 +37,78 @@ def test_unique_encounter_pokemon_details(self): self.fail(f"Duplicate encounter ID(s) found in encounter_pokemon_details.csv: {duplicate_ids}") +class EvolutionCSVDataIntegrityTestCase(TestCase): + """Test data integrity of new evolution foreign keys and evolution variables.""" + + def test_required_form_foreign_keys(self): + csv_dir = os.path.join(settings.BASE_DIR, "data", "v2", "csv") + forms_path = os.path.join(csv_dir, "pokemon_forms.csv") + with open(forms_path, encoding="utf-8") as f: + valid_form_ids = {row["id"] for row in csv.DictReader(f)} + + evo_path = os.path.join(csv_dir, "pokemon_evolution.csv") + with open(evo_path, encoding="utf-8") as f: + for row in csv.DictReader(f): + req_form_id = row.get("required_form_id", "").strip() + if req_form_id: + self.assertIn( + req_form_id, + valid_form_ids, + f"Row {row['id']}: required_form_id '{req_form_id}' does not exist in pokemon_forms.csv", + ) + + def test_base_and_evolved_form_foreign_keys(self): + csv_dir = os.path.join(settings.BASE_DIR, "data", "v2", "csv") + pokemon_path = os.path.join(csv_dir, "pokemon.csv") + with open(pokemon_path, encoding="utf-8") as f: + valid_pokemon_ids = {row["id"] for row in csv.DictReader(f)} + + evo_path = os.path.join(csv_dir, "pokemon_evolution.csv") + with open(evo_path, encoding="utf-8") as f: + for row in csv.DictReader(f): + base_id = row.get("base_form_id", "").strip() + evolved_id = row.get("evolved_form_id", "").strip() + if base_id: + self.assertIn( + base_id, + valid_pokemon_ids, + f"Row {row['id']}: base_form_id '{base_id}' does not exist in pokemon.csv", + ) + if evolved_id: + self.assertIn( + evolved_id, + valid_pokemon_ids, + f"Row {row['id']}: evolved_form_id '{evolved_id}' does not exist in pokemon.csv", + ) + + def test_evolution_triggers_foreign_keys(self): + csv_dir = os.path.join(settings.BASE_DIR, "data", "v2", "csv") + triggers_path = os.path.join(csv_dir, "evolution_triggers.csv") + with open(triggers_path, encoding="utf-8") as f: + valid_trigger_ids = {row["id"] for row in csv.DictReader(f)} + + evo_path = os.path.join(csv_dir, "pokemon_evolution.csv") + with open(evo_path, encoding="utf-8") as f: + for row in csv.DictReader(f): + trigger_id = row.get("evolution_trigger_id", "").strip() + if trigger_id: + self.assertIn( + trigger_id, + valid_trigger_ids, + f"Row {row['id']}: evolution_trigger_id '{trigger_id}' doesn't exist in evolution_triggers.csv", + ) + + def test_evolution_variables_integrity(self): + csv_dir = os.path.join(settings.BASE_DIR, "data", "v2", "csv") + var_path = os.path.join(csv_dir, "evolution_variables.csv") + with open(var_path, encoding="utf-8") as f: + var_rows = list(csv.DictReader(f)) + self.assertTrue(len(var_rows) >= 2, "Expected at least 2 evolution variables (EC, PID)") + symbols = {r["symbol"] for r in var_rows} + self.assertIn("EC", symbols) + self.assertIn("PID", symbols) + + class CSVResourceNameValidationTestCase(TestCase): """ Test that all resource identifiers in CSV files follow ASCII slug format. diff --git a/pokemon_v2/urls.py b/pokemon_v2/urls.py index 05034625b..b3b928265 100644 --- a/pokemon_v2/urls.py +++ b/pokemon_v2/urls.py @@ -50,6 +50,7 @@ class PokeAPIRouter(routers.DefaultRouter): router.register(r"encounter-condition-value", EncounterConditionValueResource) router.register(r"evolution-chain", EvolutionChainResource) router.register(r"evolution-trigger", EvolutionTriggerResource) +router.register(r"evolution-variable", EvolutionVariableResource) router.register(r"generation", GenerationResource) router.register(r"gender", GenderResource) router.register(r"growth-rate", GrowthRateResource) diff --git a/pyproject.toml b/pyproject.toml index 3918e6630..bbb3f0b29 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,3 +27,9 @@ dev = [ "ruff>=0.15.21", "ty>=0.0.65", ] + +[tool.uv] +exclude-dependencies = [ + "django-stubs", + "django-stubs-ext", +] diff --git a/uv.lock b/uv.lock index 14efaac51..5e9a78219 100644 --- a/uv.lock +++ b/uv.lock @@ -7,6 +7,12 @@ resolution-markers = [ "python_full_version < '3.11'", ] +[manifest] +excludes = [ + "django-stubs", + "django-stubs-ext", +] + [[package]] name = "asgiref" version = "3.11.1" @@ -206,35 +212,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7e/79/055dfcc508cfe9f439d9f453741188d633efa9eab90fc78a67b0ab50b137/django_redis-6.0.0-py3-none-any.whl", hash = "sha256:20bf0063a8abee567eb5f77f375143c32810c8700c0674ced34737f8de4e36c0", size = 33687, upload-time = "2025-06-17T18:15:34.165Z" }, ] -[[package]] -name = "django-stubs" -version = "6.0.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, - { name = "django-stubs-ext" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "types-pyyaml" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8a/90/087c6e424e705e05182e543ef6b366a59eb5c92ab008b0dbbba55f357a40/django_stubs-6.0.7.tar.gz", hash = "sha256:bc55431c0af745a64e39cf33a8d36c87dccbedeae2fe26fab47dd355270e8538", size = 282293, upload-time = "2026-07-14T10:08:27.122Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/02/86/230ae6056221b543d63f7710d73967fe1c6840693540e99ea3c54f45859c/django_stubs-6.0.7-py3-none-any.whl", hash = "sha256:7ed9a14c438e589272ca04e966dee82a4d1ff7ca5c2171bc986c50a0d03ec35b", size = 547460, upload-time = "2026-07-14T10:08:25.626Z" }, -] - -[[package]] -name = "django-stubs-ext" -version = "6.0.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/36/50/917f7224ea470e89cdcdc93d3dfe75b8391adf976cf12f2ecdb5f5d122be/django_stubs_ext-6.0.7.tar.gz", hash = "sha256:c3172c5126614fd2a44d0196b313b44c21f717cb09477ba52b447d41f4ce613e", size = 6665, upload-time = "2026-07-14T10:07:56.933Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/65/4d73fce956b5ebf26449259664360e539fbe95f0e86be396c28b636ba72a/django_stubs_ext-6.0.7-py3-none-any.whl", hash = "sha256:53a9c7c5a7c7e718cc6308cfce1e7470f2cac0b9d38dbcd60fbfa82704f1d592", size = 10362, upload-time = "2026-07-14T10:07:55.653Z" }, -] - [[package]] name = "django-types" version = "0.24.0" @@ -261,16 +238,35 @@ wheels = [ [[package]] name = "djangorestframework-stubs" -version = "3.17.1" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "types-pyyaml", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/f1/f3650bfe36dde8a9aaed2997d25d1aa5dd87da39eb3be5ffda2d12edd9b0/djangorestframework_stubs-3.18.0.tar.gz", hash = "sha256:072adaf1a6f507e2ccca2e4ba5611a2259d6c9d171eb6256c103acecdd33a40d", size = 32520, upload-time = "2026-08-12T18:33:34.557Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/f9/96c49ee155839c3ae5bb4d7afea6738fd270dfdc34413b632d30b16d0964/djangorestframework_stubs-3.18.0-py3-none-any.whl", hash = "sha256:dd04de8100689851e13843eebdc03a84d336f34aab6d30c726bca0f2f11aaf6b", size = 55750, upload-time = "2026-08-12T18:33:32.727Z" }, +] + +[[package]] +name = "djangorestframework-stubs" +version = "3.18.1" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.13'", + "python_full_version >= '3.11' and python_full_version < '3.13'", +] dependencies = [ - { name = "django-stubs" }, - { name = "types-pyyaml" }, - { name = "typing-extensions" }, + { name = "types-pyyaml", marker = "python_full_version >= '3.11'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/4b/1bee065c6c87ee04b905732deb53acdfc43d0e5673f43a5f75ec4deb7f6f/djangorestframework_stubs-3.17.1.tar.gz", hash = "sha256:5b67655090e2976b778bad572840b732a87ab2911402530d0dca2fbf72f891c5", size = 33470, upload-time = "2026-07-28T21:27:52.071Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/71/a7727b07e0433da02fb1ea22994f492ecb437a1fe7be5bf952dbb545a0f5/djangorestframework_stubs-3.18.1.tar.gz", hash = "sha256:65ed4a9ea094616759a2cba4fe0ad85efe25b471b28281b790bfefb46704c64a", size = 32439, upload-time = "2026-08-25T22:49:27.506Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/86/38/6a04ffca56e24220bf37494fe9f75ce9abe8115776a90c924732bb37823a/djangorestframework_stubs-3.17.1-py3-none-any.whl", hash = "sha256:40f1f22ec1965d1caff17c66794b87799eb8f42e0628ea46b501dcd565d8a803", size = 57562, upload-time = "2026-07-28T21:27:50.58Z" }, + { url = "https://files.pythonhosted.org/packages/f7/1c/e266828fe2b78484651667976f8539e47b4e511a266424b890f613c6b7ad/djangorestframework_stubs-3.18.1-py3-none-any.whl", hash = "sha256:a2021f45f7759b493504c2a721f112ec4fd677753590c1ba346f4ebfb49a7f03", size = 55685, upload-time = "2026-08-25T22:49:26.178Z" }, ] [[package]] @@ -414,7 +410,8 @@ dependencies = [ dev = [ { name = "coverage" }, { name = "django-types" }, - { name = "djangorestframework-stubs" }, + { name = "djangorestframework-stubs", version = "3.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "djangorestframework-stubs", version = "3.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pre-commit" }, { name = "ruff" }, { name = "ty" }, @@ -915,60 +912,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/49/4b/359f28a903c13438ef59ebeee215fb25da53066db67b305c125f1c6d2a25/sqlparse-0.5.5-py3-none-any.whl", hash = "sha256:12a08b3bf3eec877c519589833aed092e2444e68240a3577e8e26148acc7b1ba", size = 46138, upload-time = "2025-12-19T07:17:46.573Z" }, ] -[[package]] -name = "tomli" -version = "2.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, - { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, - { url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size = 237561, upload-time = "2026-03-25T20:21:13.098Z" }, - { url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size = 243824, upload-time = "2026-03-25T20:21:14.569Z" }, - { url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size = 242227, upload-time = "2026-03-25T20:21:15.712Z" }, - { url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size = 247859, upload-time = "2026-03-25T20:21:17.001Z" }, - { url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = 97204, upload-time = "2026-03-25T20:21:18.079Z" }, - { url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size = 108084, upload-time = "2026-03-25T20:21:18.978Z" }, - { url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size = 95285, upload-time = "2026-03-25T20:21:20.309Z" }, - { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, - { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, - { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, - { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, - { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, - { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, - { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, - { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, - { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, - { url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size = 155866, upload-time = "2026-03-25T20:21:31.65Z" }, - { url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size = 149887, upload-time = "2026-03-25T20:21:33.028Z" }, - { url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size = 243704, upload-time = "2026-03-25T20:21:34.51Z" }, - { url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size = 251628, upload-time = "2026-03-25T20:21:36.012Z" }, - { url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size = 247180, upload-time = "2026-03-25T20:21:37.136Z" }, - { url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size = 251674, upload-time = "2026-03-25T20:21:38.298Z" }, - { url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = 97976, upload-time = "2026-03-25T20:21:39.316Z" }, - { url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size = 108755, upload-time = "2026-03-25T20:21:40.248Z" }, - { url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size = 95265, upload-time = "2026-03-25T20:21:41.219Z" }, - { url = "https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", size = 155726, upload-time = "2026-03-25T20:21:42.23Z" }, - { url = "https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", size = 149859, upload-time = "2026-03-25T20:21:43.386Z" }, - { url = "https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", size = 244713, upload-time = "2026-03-25T20:21:44.474Z" }, - { url = "https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", size = 252084, upload-time = "2026-03-25T20:21:45.62Z" }, - { url = "https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", size = 247973, upload-time = "2026-03-25T20:21:46.937Z" }, - { url = "https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", size = 256223, upload-time = "2026-03-25T20:21:48.467Z" }, - { url = "https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size = 98973, upload-time = "2026-03-25T20:21:49.526Z" }, - { url = "https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", size = 109082, upload-time = "2026-03-25T20:21:50.506Z" }, - { url = "https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", size = 96490, upload-time = "2026-03-25T20:21:51.474Z" }, - { url = "https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", size = 164263, upload-time = "2026-03-25T20:21:52.543Z" }, - { url = "https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", size = 160736, upload-time = "2026-03-25T20:21:53.674Z" }, - { url = "https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", size = 270717, upload-time = "2026-03-25T20:21:55.129Z" }, - { url = "https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", size = 278461, upload-time = "2026-03-25T20:21:56.228Z" }, - { url = "https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", size = 274855, upload-time = "2026-03-25T20:21:57.653Z" }, - { url = "https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", size = 283144, upload-time = "2026-03-25T20:21:59.089Z" }, - { url = "https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size = 108683, upload-time = "2026-03-25T20:22:00.214Z" }, - { url = "https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", size = 121196, upload-time = "2026-03-25T20:22:01.169Z" }, - { url = "https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", size = 100393, upload-time = "2026-03-25T20:22:02.137Z" }, - { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, -] - [[package]] name = "ty" version = "0.0.65" @@ -1005,11 +948,11 @@ wheels = [ [[package]] name = "types-pyyaml" -version = "6.0.12.20260724" +version = "6.0.12.20260815" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/6f/a28f44bcd56bebed42b028a2894c79853e2f5e6b5279e633cb3f287a05e7/types_pyyaml-6.0.12.20260724.tar.gz", hash = "sha256:3c1ce1bb73cd5ec02e90390c2b1f00e810d241d8825fd73ff359696839271b6b", size = 17893, upload-time = "2026-07-24T04:58:43.453Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/72/b56089aeee6c496d969bac42376bedb6e3eeab4682e1018fa3137122f94b/types_pyyaml-6.0.12.20260815.tar.gz", hash = "sha256:28764110c9cf35846e733da32d8d734df7473c5dde9ef67c3b7332ec0e819858", size = 18545, upload-time = "2026-08-15T02:41:51.532Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/42/0337fefc615e20ee55d1c8f71b774a9b2b734a04669139c20753b27a2a3a/types_pyyaml-6.0.12.20260724-py3-none-any.whl", hash = "sha256:d57db930a4b2efbc57cf430ec8882765d246929432fa253092f383902329a453", size = 20312, upload-time = "2026-07-24T04:58:42.486Z" }, + { url = "https://files.pythonhosted.org/packages/08/52/eefeba09be4ef2a1eb989eb92934561e8e502a6ee3c32654996e4be7e399/types_pyyaml-6.0.12.20260815-py3-none-any.whl", hash = "sha256:6f332212b7e191f3afd5016a713c510b6340593b7ebec573c7d5d20aa5386d3b", size = 21148, upload-time = "2026-08-15T02:41:50.555Z" }, ] [[package]] From 98b163fbb421f5c99e479b45646bd75b956f47f1 Mon Sep 17 00:00:00 2001 From: Triyan Mukherjee Date: Mon, 31 Aug 2026 00:05:41 +0530 Subject: [PATCH 2/8] refactor: move pokemon refs from evolutions to pokemon form refs --- data/v2/build.py | 5 +- data/v2/csv/pokemon_evolution.csv | 1132 +++++++++-------- openapi.yml | 13 +- ...evolution_condition_expression_and_more.py | 26 +- pokemon_v2/models.py | 25 +- pokemon_v2/serializers.py | 10 +- pokemon_v2/test_models.py | 37 +- 7 files changed, 619 insertions(+), 629 deletions(-) diff --git a/data/v2/build.py b/data/v2/build.py index 7be60bb0b..0a91e88c8 100644 --- a/data/v2/build.py +++ b/data/v2/build.py @@ -1865,15 +1865,14 @@ def csv_record_to_objects(info): needs_multiplayer=bool(int(info[22])), near_special_rock=bool(int(info[23])), region_id=int(info[24]) if info[24] != "" else None, - base_form_id=int(info[25]) if info[25] != "" else None, - evolved_form_id=int(info[26]) if info[26] != "" else None, + required_pokemon_form_id=int(info[25]) if info[25] != "" else None, + evolved_pokemon_form_id=int(info[26]) if info[26] != "" else None, used_move_id=int(info[27]) if info[27] != "" else None, min_move_count=int(info[28]) if info[28] != "" else None, min_steps=int(info[29]) if info[29] != "" else None, min_damage_taken=int(info[30]) if info[30] != "" else None, needs_one_of_natures=int(info[31]) if len(info) > 31 and info[31] != "" else None, condition_expression=info[32] if len(info) > 32 else "", - required_form_id=int(info[33]) if len(info) > 33 and info[33] != "" else None, ) build_generic((PokemonEvolution,), "pokemon_evolution.csv", csv_record_to_objects) diff --git a/data/v2/csv/pokemon_evolution.csv b/data/v2/csv/pokemon_evolution.csv index 402e288ce..eda247424 100644 --- a/data/v2/csv/pokemon_evolution.csv +++ b/data/v2/csv/pokemon_evolution.csv @@ -1,565 +1,567 @@ -id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_item_id,minimum_level,gender_id,location_id,held_item_id,time_of_day,known_move_id,known_move_type_id,minimum_happiness,minimum_beauty,minimum_affection,relative_physical_stats,party_species_id,party_type_id,trade_species_id,needs_overworld_rain,turn_upside_down,needs_multiplayer,near_special_rock,region_id,base_form_id,evolved_form_id,used_move_id,minimum_move_count,minimum_steps,minimum_damage_taken,needs_one_of_natures,condition_expression,required_form_id -1,2,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -2,3,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -3,5,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -4,6,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -5,8,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -6,9,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -7,11,1,1,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -8,12,1,1,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -9,14,1,1,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -10,15,1,1,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -11,17,1,1,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -12,18,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -13,20,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -14,22,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -15,24,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -16,25,1,1,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,,,,, -17,26,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,25,,,,,,,, -18,28,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -19,30,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -20,31,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -21,33,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -22,34,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -23,35,1,1,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -24,36,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -25,38,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -26,39,1,1,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -27,40,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -28,42,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -29,44,1,1,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -30,45,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -31,47,1,1,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -32,49,1,1,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -33,51,1,1,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -34,53,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -35,55,1,1,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -36,57,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -37,59,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -38,61,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -39,62,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -40,64,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -41,65,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -42,67,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -43,68,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -44,70,1,1,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -45,71,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -46,73,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -47,75,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -48,76,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -49,78,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -50,80,1,1,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -51,82,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -52,85,1,1,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -53,87,1,1,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -54,89,1,1,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -55,91,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -56,93,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -57,94,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -58,97,1,1,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -59,99,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -60,101,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -61,103,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -62,105,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -63,106,1,1,1,,20,,,,,,,,,,1,,,,0,0,0,0,,,,,,,,,, -64,107,1,1,1,,20,,,,,,,,,,-1,,,,0,0,0,0,,,,,,,,,, -65,110,1,1,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -66,112,1,1,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -67,113,1,8,1,,,,,110,day,,,,,,,,,,0,0,0,0,,,,,,,,,, -68,117,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -69,119,1,1,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -70,121,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -71,122,1,8,1,,,,,,,102,,,,,,,,,0,0,0,0,,,,,,,,,, -72,124,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -73,125,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -74,126,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -75,130,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -76,134,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, -77,135,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, -78,136,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, -79,139,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -80,141,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -81,143,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -82,148,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -83,149,1,1,1,,55,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -84,153,1,3,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -85,154,1,3,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -86,156,1,3,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -87,157,1,3,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -88,159,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -89,160,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -90,162,1,3,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -91,164,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -92,166,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -93,168,1,3,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -94,169,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -95,171,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -96,176,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -97,178,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -98,180,1,3,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -99,181,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -100,182,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -101,183,1,5,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -102,184,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -103,185,1,8,1,,,,,,,102,,,,,,,,,0,0,0,0,,,,,,,,,, -104,186,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,,,,, -105,188,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -106,189,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -107,192,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -108,195,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -109,196,1,3,1,,,,,,day,,,160,,,,,,,0,0,0,0,,133,,,,,,,, -110,197,1,3,1,,,,,,night,,,160,,,,,,,0,0,0,0,,133,,,,,,,, -111,199,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,,,,, -112,202,1,5,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -113,205,1,3,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -114,208,2,3,1,,,,,210,,,,,,,,,,,0,0,0,0,,,,,,,,,, -115,210,1,3,1,,23,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -116,212,2,3,1,,,,,210,,,,,,,,,,,0,0,0,0,,,,,,,,,, -117,217,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -118,219,1,3,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -119,221,1,3,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -120,224,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -121,226,1,8,1,,,,,,,,,,,,,223,,,0,0,0,0,,,,,,,,,, -122,229,1,3,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -123,230,2,3,1,,,,,212,,,,,,,,,,,0,0,0,0,,,,,,,,,, -124,232,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -125,233,2,3,1,,,,,229,,,,,,,,,,,0,0,0,0,,,,,,,,,, -126,237,1,3,1,,20,,,,,,,,,,0,,,,0,0,0,0,,,,,,,,,, -127,242,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -128,247,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -129,248,1,3,1,,55,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -130,253,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -131,254,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -132,256,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -133,257,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -134,259,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -135,260,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -136,262,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -137,264,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -138,266,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 4 <=, -139,267,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -140,268,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 5 >=, -141,269,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -142,271,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -143,272,3,5,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -144,274,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -145,275,3,5,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -146,277,1,5,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -147,279,1,5,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -148,281,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -149,282,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -150,284,1,5,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -151,286,1,5,1,,23,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -152,288,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -153,289,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -154,291,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -155,292,4,5,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -156,294,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -157,295,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -158,297,1,5,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -159,301,3,5,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -160,305,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -161,306,1,5,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -162,308,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -163,310,1,5,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -164,315,1,8,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,,,,, -165,317,1,5,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -166,319,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -167,321,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -168,323,1,5,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -169,326,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -170,329,1,5,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -171,330,1,5,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -172,332,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -173,334,1,5,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -174,340,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -175,342,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -176,344,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -177,346,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -178,348,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -179,350,1,5,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,,,,, -180,354,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -181,356,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -182,358,1,8,1,,,,,,night,,,220,,,,,,,0,0,0,0,,,,,,,,,, -183,362,1,5,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -184,364,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -185,365,1,5,1,,44,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -186,367,2,5,1,,,,,203,,,,,,,,,,,0,0,0,0,,,,,,,,,, -187,368,2,5,1,,,,,204,,,,,,,,,,,0,0,0,0,,,,,,,,,, -188,372,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -189,373,1,5,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -190,375,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -191,376,1,5,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -192,388,1,8,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -193,389,1,8,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -194,391,1,8,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -195,392,1,8,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -196,394,1,8,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -197,395,1,8,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -198,397,1,8,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -199,398,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -200,400,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -201,402,1,8,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -202,404,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -203,405,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -204,407,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -205,409,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -206,411,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -207,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,412,413,,,,,,,412 -208,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,412,414,,,,,,, -209,416,1,8,1,,21,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -210,419,1,8,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -211,421,1,8,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -212,423,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -213,424,1,8,1,,,,,,,458,,,,,,,,,0,0,0,0,,,,,,,,,, -214,426,1,8,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -215,428,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -216,429,3,8,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -217,430,3,8,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -218,432,1,8,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -219,435,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -220,437,1,8,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -221,444,1,8,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -222,445,1,8,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -223,448,1,8,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,,,,, -224,450,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -225,452,1,8,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -226,454,1,8,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -227,457,1,8,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -228,460,1,8,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -229,461,1,8,1,,,,,303,night,,,,,,,,,,0,0,0,0,,,,,,,,,, -230,462,1,8,0,,,,10,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -231,463,1,8,1,,,,,,,205,,,,,,,,,0,0,0,0,,,,,,,,,, -232,464,2,8,1,,,,,298,,,,,,,,,,,0,0,0,0,,,,,,,,,, -233,465,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,,, -234,466,2,8,1,,,,,299,,,,,,,,,,,0,0,0,0,,,,,,,,,, -235,467,2,8,1,,,,,300,,,,,,,,,,,0,0,0,0,,,,,,,,,, -236,468,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -237,469,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,,, -238,470,1,8,0,,,,8,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -239,471,1,8,0,,,,48,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -240,472,1,8,1,,,,,304,night,,,,,,,,,,0,0,0,0,,,,,,,,,, -241,473,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,,, -242,474,2,8,1,,,,,301,,,,,,,,,,,0,0,0,0,,,,,,,,,, -243,475,3,8,1,109,,2,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -244,476,1,8,0,,,,10,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -245,477,2,8,1,,,,,302,,,,,,,,,,,0,0,0,0,,,,,,,,,, -246,478,3,8,1,109,,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -247,496,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -248,497,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -249,499,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -250,500,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -251,502,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -252,503,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -253,505,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -254,507,1,11,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -255,508,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -256,510,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -257,512,3,11,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -258,514,3,11,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -259,516,3,11,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -260,518,3,11,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -261,520,1,11,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -262,521,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -263,523,1,11,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -264,525,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -265,526,2,11,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -266,528,1,11,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -267,530,1,11,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -268,533,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -269,534,2,11,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -270,536,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -271,537,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -272,541,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -273,542,1,11,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,,,,, -274,544,1,11,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -275,545,1,11,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -276,547,3,11,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -277,549,3,11,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -278,552,1,11,1,,29,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -279,553,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -280,555,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -281,558,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -282,560,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -283,563,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -284,565,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -285,567,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -286,569,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -287,571,1,11,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -288,573,3,11,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -289,575,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -290,576,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -291,578,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -292,579,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -293,581,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -294,583,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -295,584,1,11,1,,47,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -296,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -297,589,2,11,1,,,,,,,,,,,,,,,616,0,0,0,0,,,,,,,,,, -298,591,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -299,593,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -300,596,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -301,598,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -302,600,1,11,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -303,601,1,11,1,,49,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -304,603,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -305,604,3,11,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -306,606,1,11,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -307,608,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -308,609,3,11,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -309,611,1,11,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -310,612,1,11,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -311,614,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -312,617,2,11,1,,,,,,,,,,,,,,,588,0,0,0,0,,,,,,,,,, -313,620,1,11,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -314,623,1,11,1,,43,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -315,625,1,11,1,,52,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -316,628,1,11,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -317,630,1,11,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -318,634,1,11,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -319,635,1,11,1,,64,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -320,637,1,11,1,,59,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -321,350,2,11,1,,,,,580,,,,,,,,,,,0,0,0,0,,,,,,,,,, -322,462,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -323,476,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -324,470,1,11,0,,,,375,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -325,471,1,11,0,,,,380,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -327,683,2,11,1,,,,,687,,,,,,,,,,,0,0,0,0,,,,,,,,,, -328,662,1,15,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -329,709,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -330,663,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -331,654,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -332,687,1,15,1,,30,,,,,,,,,,,,,,0,1,0,0,,,,,,,,,, -333,655,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -334,651,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -335,693,1,15,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -336,652,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -337,657,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -338,658,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -339,680,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -340,705,1,15,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -341,666,1,15,1,,12,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -342,665,1,15,1,,9,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -343,689,1,15,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -344,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,710,711,,,,,,, -345,660,1,15,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -346,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -347,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,670,,,,,,,, -348,681,3,15,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -349,675,1,15,1,,32,,,,,,,,,,,,17,,0,0,0,0,,,,,,,,,, -350,685,2,15,1,,,,,686,,,,,,,,,,,0,0,0,0,,,,,,,,,, -351,691,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -352,697,1,15,1,,39,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,,, -353,699,1,15,1,,39,,,,night,,,,,,,,,,0,0,0,0,,,,,,,,,, -354,713,1,15,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -355,695,3,15,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -356,668,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -357,673,1,15,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -358,706,1,15,1,,50,,,,,,,,,,,,,,1,0,0,0,,,,,,,,,, -359,715,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -360,678,1,15,1,,25,2,,,,,,,,,,,,,0,0,0,0,,677,678,,,,,,, -361,700,1,15,0,,,,,,,,18,,,2,,,,,0,0,0,0,,133,,,,,,,, -362,462,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -363,470,1,15,0,,,,650,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -364,471,1,15,0,,,,640,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -365,476,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -366,462,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -367,105,1,17,1,,28,,,,night,,,,,,,,,,0,0,0,0,7,,10115,,,,,,, -368,462,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -369,476,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -370,476,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -371,738,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -373,723,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -374,724,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -375,726,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -376,727,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -377,729,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -378,730,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -379,732,1,17,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -380,733,1,17,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -381,735,1,17,1,,20,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,,, -382,737,1,17,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -383,738,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -384,740,1,17,0,,,,775,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -385,743,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -386,745,1,17,1,,25,,,,day,,,,,,,,,,0,0,0,0,,744,745,,,,,,, -387,745,1,17,1,,25,,,,night,,,,,,,,,,0,0,0,0,,744,10126,,,,,,, -388,748,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -389,750,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -390,752,1,17,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -391,754,1,17,1,,34,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,,, -392,756,1,17,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -393,758,1,17,1,,33,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -394,760,1,17,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -395,762,1,17,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -396,763,1,17,1,,,,,,,23,,,,,,,,,0,0,0,0,,,,,,,,,, -397,768,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -398,770,1,17,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -399,773,1,17,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,,, -400,783,1,17,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -401,784,1,17,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -402,790,1,17,1,,43,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -403,791,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -404,792,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -405,804,1,18,1,,,,,,,406,,,,,,,,,0,0,0,0,,,,,,,,,, -406,462,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -407,470,3,20,1,85,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, -408,471,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,,, -409,700,1,20,1,,,,,,,,18,160,,,,,,,0,0,0,0,,133,,,,,,,, -410,738,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -411,811,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -412,812,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -413,814,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -414,815,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -415,817,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -416,818,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -417,820,1,20,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -418,822,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -419,823,1,20,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -420,825,1,20,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -421,826,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -422,828,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -423,830,1,20,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -424,832,1,20,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -425,834,1,20,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -426,836,1,20,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -427,838,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -428,839,1,20,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -429,841,3,20,1,1175,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -430,842,3,20,1,1174,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -431,844,1,20,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -432,847,1,20,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -433,849,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,848,849,,,,,10473025,, -434,851,1,20,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -435,853,1,20,1,,,,,,,269,,,,,,,,,0,0,0,0,,,,,,,,,, -436,855,3,20,1,1311,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,,854 -437,857,1,20,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -438,858,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -439,860,1,20,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -440,861,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -441,869,5,20,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -442,873,1,20,1,,,,,,night,,,160,,,,,,,0,0,0,0,,,,,,,,,, -443,879,1,20,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -444,886,1,20,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -445,887,1,20,1,,60,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -446,892,6,21,0,,,,,,,,,,,,,,,,0,0,0,0,,,892,,,,,,, -447,892,7,21,0,,,,,,,,,,,,,,,,0,0,0,0,,,10191,,,,,,, -448,28,3,17,1,885,,,,,,,,,,,,,,,0,0,0,0,,10101,10102,,,,,,, -449,38,3,17,1,885,,,,,,,,,,,,,,,0,0,0,0,,10103,10104,,,,,,, -450,53,1,17,1,,,,,,,,,160,,,,,,,0,0,0,0,,10107,10108,,,,,,, -451,863,1,20,1,,28,,,,,,,,,,,,,,0,0,0,0,,10161,,,,,,,, -452,80,3,21,1,1633,,,,,,,,,,,,,,,0,0,0,0,,10164,10165,,,,,,, -453,199,3,21,1,1643,,,,,,,,,,,,,,,0,0,0,0,,10164,10172,,,,,,, -454,865,8,20,1,,,,,,,,,,,,,,,,0,0,0,0,,10166,,,,,,,, -455,866,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,10168,,,,,,,, -456,864,1,20,1,,38,,,,,,,,,,,,,,0,0,0,0,,10173,,,,,,,, -457,862,1,20,1,,35,,,,night,,,,,,,,,,0,0,0,0,,10175,,,,,,,, -458,555,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,10176,10177,,,,,,, -459,867,9,20,1,,,,890,,,,,,,,,,,,0,0,0,0,,10179,,,,,49,,, -460,745,1,17,1,,25,,,,dusk,,,,,,,,,,0,0,0,0,,10151,10152,,,,,,, -461,20,1,17,1,,20,,,,night,,,,,,,,,,0,0,0,0,,10091,10092,,,,,,, -462,899,11,24,1,,,,,,,,,,,,,,,,0,0,0,0,,,,828,20,,,,, -463,900,3,24,1,2230,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -464,901,3,24,1,2231,,,,,full-moon,,,,,,,,,,0,0,0,0,,,,,,,,,, -465,902,13,24,1,,,2,,,,,,,,,,,,,0,0,0,0,,10247,902,,,,294,,, -466,903,1,24,1,,,,,303,day,,,,,,,,,,0,0,0,0,,10235,,,,,,,, -467,904,12,24,0,,,,,,,,,,,,,,,,0,0,0,0,,10234,,839,20,,,,, -468,907,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -469,908,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -470,910,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -471,911,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -472,913,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -473,914,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -474,916,1,25,1,,18,2,,,,,,,,,,,,,0,0,0,0,,915,916,,,,,,, -475,918,1,25,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -476,920,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -477,922,1,25,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -478,923,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,,, -479,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,924,925,,,,,,EC 100 % 0 !=, -480,927,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -481,929,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -482,930,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -483,933,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -484,934,1,25,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -485,936,3,25,1,2045,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -486,937,3,25,1,1677,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -487,939,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -488,941,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -489,943,1,25,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -490,945,1,25,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -491,947,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,,, -492,949,1,25,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -493,952,3,25,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -494,954,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,,, -495,956,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -496,958,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -497,959,1,25,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -498,961,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -499,964,1,25,1,,38,,,,,,,,,,,,,,0,0,1,0,,,,,,,,,, -500,966,1,25,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -501,970,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -502,972,1,25,1,,30,,,,night,,,,,,,,,,0,0,0,0,,,,,,,,,, -503,975,3,25,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -504,979,14,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,889,20,,,,, -505,980,1,25,1,,20,,,,,,,,,,,,,,0,0,0,0,,10253,,,,,,,, -506,981,1,25,1,,,,,,,888,,,,,,,,,0,0,0,0,,,,,,,,,, -507,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,206,982,,,,,,EC 100 % 0 !=, -508,983,15,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -509,997,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -510,998,1,25,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -511,1000,16,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -512,740,3,25,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -514,476,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -515,904,1,25,1,,,,,,,839,,,,,,,,,0,0,0,0,,10234,,,,,,,, -516,904,14,30,0,,,,,,,,,,,,,,,,0,0,0,0,,10234,,839,20,,,,, -517,26,3,17,1,83,,,,,,,,,,,,,,,0,0,0,0,7,25,10100,,,,,,, -518,51,1,17,1,,26,,,,,,,,,,,,,,0,0,0,0,,10105,10106,,,,,,, -519,75,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,10109,10110,,,,,,, -520,76,2,17,1,,,,,,,,,,,,,,,,0,0,0,0,,10110,10111,,,,,,, -521,89,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,10112,10113,,,,,,, -522,103,3,17,1,85,,,,,,,,,,,,,,,0,0,0,0,7,,10114,,,,,,, -523,59,3,24,1,82,,,,,,,,,,,,,,,0,0,0,0,,10229,10230,,,,,,, -524,101,3,24,1,85,,,,,,,,,,,,,,,0,0,0,0,,10231,10232,,,,,,, -525,156,1,24,0,,17,,,,,,,,,,,,,,0,0,0,0,9,,,,,,,,, -526,157,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10233,,,,,,, -527,503,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10236,,,,,,, -528,549,3,24,1,80,,,,,,,,,,,,,,,0,0,0,0,9,,10237,,,,,,, -529,571,1,24,1,,30,,,,,,,,,,,,,,0,0,0,0,,10238,10239,,,,,,, -530,628,1,24,1,,54,,,,,,,,,,,,,,0,0,0,0,9,,10240,,,,,,, -531,705,1,24,1,,40,,,,,,,,,,,,,,0,0,0,0,9,,10241,,,,,,, -532,706,1,24,1,,50,,,,,,,,,,,,,,1,0,0,0,,10241,10242,,,,,,, -533,713,1,24,1,,37,,,,,,,,,,,,,,0,0,0,0,9,,10243,,,,,,, -534,724,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10244,,,,,,, -535,78,1,20,1,,40,,,,,,,,,,,,,,0,0,0,0,,10162,10163,,,,,,, -536,110,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,8,,10167,,,,,,, -537,122,1,20,1,,,,,,,102,,,,,,,,,0,0,0,0,8,,10168,,,,,,, -538,264,1,20,1,,20,,,,,,,,,,,,,,0,0,0,0,,10174,10175,,,,,,, -539,892,3,25,1,1675,,,,,,,,,,,,,,,0,0,0,0,,,892,,,,,,, -540,892,3,25,1,1676,,,,,,,,,,,,,,,0,0,0,0,,,10191,,,,,,, -541,1011,3,26,1,2109,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -542,1018,3,27,1,2232,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -543,1019,1,27,1,,,,,,,913,,,,,,,,,0,0,0,0,,,,,,,,,, -544,1013,3,26,1,2110,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,,1012 -545,1013,3,26,1,2111,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,,10447 -546,462,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -547,476,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,,,,, -548,470,1,16,0,,,,438,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -549,471,1,16,0,,,,445,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -550,470,1,17,0,,,,750,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -551,471,1,17,0,,,,775,,,,,,,,,,,,0,0,0,1,,133,,,,,,,, -552,855,3,20,1,1312,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,,10344 -553,350,1,16,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,,,,, -554,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10027,10030,,,,,,, -555,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10028,10031,,,,,,, -556,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10029,10032,,,,,,, -557,678,1,15,1,,25,1,,,,,,,,,,,,,0,0,0,0,,677,10025,,,,,,, -558,916,1,25,1,,18,1,,,,,,,,,,,,,0,0,0,0,,915,10254,,,,,,, -559,849,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,848,10184,,,,,23081406,, -560,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,924,10257,,,,,,EC 100 % 0 ==, -561,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,206,10255,,,,,,EC 100 % 0 ==, -562,902,13,24,1,,,1,,,,,,,,,,,,,0,0,0,0,,10247,10248,,,,294,,, -563,266,1,15,0,,7,,,,,,,,,,,,,,0,0,0,0,,265,266,,,,,,EC 16 >> 10 % 4 <=, -564,268,1,15,0,,7,,,,,,,,,,,,,,0,0,0,0,,265,268,,,,,,EC 16 >> 10 % 5 >=, -565,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,412,10004,,,,,,,10034 -566,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,412,10005,,,,,,,10035 -567,809,17,19,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,, +id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_item_id,minimum_level,gender_id,location_id,held_item_id,time_of_day,known_move_id,known_move_type_id,minimum_happiness,minimum_beauty,minimum_affection,relative_physical_stats,party_species_id,party_type_id,trade_species_id,needs_overworld_rain,turn_upside_down,needs_multiplayer,near_special_rock,region_id,required_pokemon_form_id,evolved_pokemon_form_id,used_move_id,minimum_move_count,minimum_steps,minimum_damage_taken,needs_one_of_natures,condition_expression +1,2,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +2,3,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +3,5,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +4,6,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +5,8,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +6,9,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +7,11,1,1,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +8,12,1,1,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +9,14,1,1,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +10,15,1,1,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +11,17,1,1,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +12,18,1,1,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +13,20,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +14,22,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +15,24,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +16,25,1,1,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,,,, +17,26,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +18,28,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +19,30,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +20,31,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +21,33,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +22,34,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +23,35,1,1,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +24,36,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +25,38,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +26,39,1,1,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +27,40,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +28,42,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +29,44,1,1,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +30,45,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +31,47,1,1,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +32,49,1,1,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +33,51,1,1,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +34,53,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +35,55,1,1,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +36,57,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +37,59,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +38,61,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +39,62,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +40,64,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +41,65,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +42,67,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +43,68,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +44,70,1,1,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +45,71,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +46,73,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +47,75,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +48,76,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +49,78,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +50,80,1,1,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +51,82,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +52,85,1,1,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +53,87,1,1,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +54,89,1,1,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +55,91,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +56,93,1,1,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +57,94,2,1,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +58,97,1,1,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +59,99,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +60,101,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +61,103,3,1,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +62,105,1,1,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +63,106,1,1,1,,20,,,,,,,,,,1,,,,0,0,0,0,,,,,,,,, +64,107,1,1,1,,20,,,,,,,,,,-1,,,,0,0,0,0,,,,,,,,, +65,110,1,1,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +66,112,1,1,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +67,113,1,8,1,,,,,110,day,,,,,,,,,,0,0,0,0,,,,,,,,, +68,117,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +69,119,1,1,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +70,121,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +71,122,1,8,1,,,,,,,102,,,,,,,,,0,0,0,0,,,,,,,,, +72,124,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +73,125,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +74,126,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +75,130,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +76,134,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +77,135,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +78,136,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +79,139,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +80,141,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +81,143,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +82,148,1,1,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +83,149,1,1,1,,55,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +84,153,1,3,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +85,154,1,3,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +86,156,1,3,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +87,157,1,3,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +88,159,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +89,160,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +90,162,1,3,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +91,164,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +92,166,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +93,168,1,3,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +94,169,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +95,171,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +96,176,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +97,178,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +98,180,1,3,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +99,181,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +100,182,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +101,183,1,5,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +102,184,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +103,185,1,8,1,,,,,,,102,,,,,,,,,0,0,0,0,,,,,,,,, +104,186,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,,,, +105,188,1,3,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +106,189,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +107,192,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +108,195,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +109,196,1,3,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,,,, +110,197,1,3,1,,,,,,night,,,160,,,,,,,0,0,0,0,,,,,,,,, +111,199,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,,,, +112,202,1,5,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +113,205,1,3,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +114,208,2,3,1,,,,,210,,,,,,,,,,,0,0,0,0,,,,,,,,, +115,210,1,3,1,,23,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +116,212,2,3,1,,,,,210,,,,,,,,,,,0,0,0,0,,,,,,,,, +117,217,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +118,219,1,3,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +119,221,1,3,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +120,224,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +121,226,1,8,1,,,,,,,,,,,,,223,,,0,0,0,0,,,,,,,,, +122,229,1,3,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +123,230,2,3,1,,,,,212,,,,,,,,,,,0,0,0,0,,,,,,,,, +124,232,1,3,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +125,233,2,3,1,,,,,229,,,,,,,,,,,0,0,0,0,,,,,,,,, +126,237,1,3,1,,20,,,,,,,,,,0,,,,0,0,0,0,,,,,,,,, +127,242,1,3,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +128,247,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +129,248,1,3,1,,55,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +130,253,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +131,254,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +132,256,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +133,257,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +134,259,1,5,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +135,260,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +136,262,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +137,264,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +138,266,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 4 <= +139,267,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +140,268,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 5 >= +141,269,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +142,271,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +143,272,3,5,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +144,274,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +145,275,3,5,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +146,277,1,5,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +147,279,1,5,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +148,281,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +149,282,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +150,284,1,5,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +151,286,1,5,1,,23,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +152,288,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +153,289,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +154,291,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +155,292,4,5,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +156,294,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +157,295,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +158,297,1,5,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +159,301,3,5,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +160,305,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +161,306,1,5,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +162,308,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +163,310,1,5,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +164,315,1,8,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,,,, +165,317,1,5,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +166,319,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +167,321,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +168,323,1,5,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +169,326,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +170,329,1,5,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +171,330,1,5,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +172,332,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +173,334,1,5,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +174,340,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +175,342,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +176,344,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +177,346,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +178,348,1,5,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +179,350,1,5,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,,,, +180,354,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +181,356,1,5,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +182,358,1,8,1,,,,,,night,,,220,,,,,,,0,0,0,0,,,,,,,,, +183,362,1,5,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +184,364,1,5,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +185,365,1,5,1,,44,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +186,367,2,5,1,,,,,203,,,,,,,,,,,0,0,0,0,,,,,,,,, +187,368,2,5,1,,,,,204,,,,,,,,,,,0,0,0,0,,,,,,,,, +188,372,1,5,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +189,373,1,5,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +190,375,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +191,376,1,5,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +192,388,1,8,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +193,389,1,8,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +194,391,1,8,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +195,392,1,8,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +196,394,1,8,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +197,395,1,8,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +198,397,1,8,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +199,398,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +200,400,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +201,402,1,8,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +202,404,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +203,405,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +204,407,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,412,413,,,,,, +205,409,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +206,411,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +207,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,412,413,,,,,, +208,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,412,,,,,,, +209,416,1,8,1,,21,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +210,419,1,8,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +211,421,1,8,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +212,423,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +213,424,1,8,1,,,,,,,458,,,,,,,,,0,0,0,0,,,,,,,,, +214,426,1,8,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +215,428,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +216,429,3,8,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +217,430,3,8,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +218,432,1,8,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +219,435,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +220,437,1,8,1,,33,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +221,444,1,8,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +222,445,1,8,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +223,448,1,8,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,,,, +224,450,1,8,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +225,452,1,8,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +226,454,1,8,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +227,457,1,8,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +228,460,1,8,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +229,461,1,8,1,,,,,303,night,,,,,,,,,,0,0,0,0,,,,,,,,, +230,462,1,8,0,,,,10,,,,,,,,,,,,0,0,0,0,,,,,,,,, +231,463,1,8,1,,,,,,,205,,,,,,,,,0,0,0,0,,,,,,,,, +232,464,2,8,1,,,,,298,,,,,,,,,,,0,0,0,0,,,,,,,,, +233,465,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,, +234,466,2,8,1,,,,,299,,,,,,,,,,,0,0,0,0,,,,,,,,, +235,467,2,8,1,,,,,300,,,,,,,,,,,0,0,0,0,,,,,,,,, +236,468,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +237,469,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,, +238,470,1,8,0,,,,8,,,,,,,,,,,,0,0,0,1,,,,,,,,, +239,471,1,8,0,,,,48,,,,,,,,,,,,0,0,0,1,,,,,,,,, +240,472,1,8,1,,,,,304,night,,,,,,,,,,0,0,0,0,,,,,,,,, +241,473,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,, +242,474,2,8,1,,,,,301,,,,,,,,,,,0,0,0,0,,,,,,,,, +243,475,3,8,1,109,,2,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +244,476,1,8,0,,,,10,,,,,,,,,,,,0,0,0,0,,,,,,,,, +245,477,2,8,1,,,,,302,,,,,,,,,,,0,0,0,0,,,,,,,,, +246,478,3,8,1,109,,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +247,496,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +248,497,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +249,499,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +250,500,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +251,502,1,11,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +252,503,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +253,505,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +254,507,1,11,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +255,508,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +256,510,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +257,512,3,11,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +258,514,3,11,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +259,516,3,11,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +260,518,3,11,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +261,520,1,11,1,,21,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +262,521,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +263,523,1,11,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +264,525,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +265,526,2,11,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +266,528,1,11,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +267,530,1,11,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +268,533,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +269,534,2,11,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +270,536,1,11,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +271,537,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +272,541,1,11,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +273,542,1,11,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,,,, +274,544,1,11,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +275,545,1,11,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +276,547,3,11,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +277,549,3,11,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +278,552,1,11,1,,29,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +279,553,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +280,555,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +281,558,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +282,560,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +283,563,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +284,565,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +285,567,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +286,569,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +287,571,1,11,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +288,573,3,11,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +289,575,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +290,576,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +291,578,1,11,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +292,579,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +293,581,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +294,583,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +295,584,1,11,1,,47,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +296,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +297,589,2,11,1,,,,,,,,,,,,,,,616,0,0,0,0,,,,,,,,, +298,591,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +299,593,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +300,596,1,11,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +301,598,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +302,600,1,11,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +303,601,1,11,1,,49,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +304,603,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +305,604,3,11,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +306,606,1,11,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +307,608,1,11,1,,41,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +308,609,3,11,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +309,611,1,11,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +310,612,1,11,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +311,614,1,11,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +312,617,2,11,1,,,,,,,,,,,,,,,588,0,0,0,0,,,,,,,,, +313,620,1,11,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +314,623,1,11,1,,43,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +315,625,1,11,1,,52,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +316,628,1,11,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +317,630,1,11,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +318,634,1,11,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +319,635,1,11,1,,64,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +320,637,1,11,1,,59,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +321,350,2,11,1,,,,,580,,,,,,,,,,,0,0,0,0,,,,,,,,, +322,462,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,,,, +323,476,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,,,, +324,470,1,11,0,,,,375,,,,,,,,,,,,0,0,0,1,,,,,,,,, +325,471,1,11,0,,,,380,,,,,,,,,,,,0,0,0,1,,,,,,,,, +327,683,2,11,1,,,,,687,,,,,,,,,,,0,0,0,0,,,,,,,,, +328,662,1,15,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +329,709,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +330,663,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +331,654,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +332,687,1,15,1,,30,,,,,,,,,,,,,,0,1,0,0,,,,,,,,, +333,655,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +334,651,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +335,693,1,15,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +336,652,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +337,657,1,15,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +338,658,1,15,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +339,680,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +340,705,1,15,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +341,666,1,15,1,,12,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +342,665,1,15,1,,9,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +343,689,1,15,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +344,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,710,711,,,,,, +345,660,1,15,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +346,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +347,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +348,681,3,15,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +349,675,1,15,1,,32,,,,,,,,,,,,17,,0,0,0,0,,,,,,,,, +350,685,2,15,1,,,,,686,,,,,,,,,,,0,0,0,0,,,,,,,,, +351,691,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +352,697,1,15,1,,39,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,, +353,699,1,15,1,,39,,,,night,,,,,,,,,,0,0,0,0,,,,,,,,, +354,713,1,15,1,,37,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +355,695,3,15,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +356,668,1,15,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +357,673,1,15,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +358,706,1,15,1,,50,,,,,,,,,,,,,,1,0,0,0,,,,,,,,, +359,715,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +360,678,1,15,1,,25,2,,,,,,,,,,,,,0,0,0,0,,,678,,,,,, +361,700,1,15,0,,,,,,,,18,,,2,,,,,0,0,0,0,,,,,,,,, +362,462,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,,,, +363,470,1,15,0,,,,650,,,,,,,,,,,,0,0,0,1,,,,,,,,, +364,471,1,15,0,,,,640,,,,,,,,,,,,0,0,0,1,,,,,,,,, +365,476,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,,,, +366,462,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,, +367,105,1,17,1,,28,,,,night,,,,,,,,,,0,0,0,0,7,,10217,,,,,, +368,462,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,, +369,476,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,, +370,476,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,, +371,738,1,17,0,,,,789,,,,,,,,,,,,0,0,0,0,,,,,,,,, +373,723,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +374,724,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +375,726,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +376,727,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +377,729,1,17,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +378,730,1,17,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +379,732,1,17,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +380,733,1,17,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +381,735,1,17,1,,20,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,, +382,737,1,17,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +383,738,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,, +384,740,1,17,0,,,,775,,,,,,,,,,,,0,0,0,0,,,,,,,,, +385,743,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +386,745,1,17,1,,25,,,,day,,,,,,,,,,0,0,0,0,,,745,,,,,, +387,745,1,17,1,,25,,,,night,,,,,,,,,,0,0,0,0,,,10228,,,,,, +388,748,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +389,750,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +390,752,1,17,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +391,754,1,17,1,,34,,,,day,,,,,,,,,,0,0,0,0,,,,,,,,, +392,756,1,17,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +393,758,1,17,1,,33,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +394,760,1,17,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +395,762,1,17,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +396,763,1,17,1,,,,,,,23,,,,,,,,,0,0,0,0,,,,,,,,, +397,768,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +398,770,1,17,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +399,773,1,17,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, +400,783,1,17,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +401,784,1,17,1,,45,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +402,790,1,17,1,,43,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +403,791,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +404,792,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +405,804,1,18,1,,,,,,,406,,,,,,,,,0,0,0,0,,,,,,,,, +406,462,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +407,470,3,20,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +408,471,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +409,700,1,20,1,,,,,,,,18,160,,,,,,,0,0,0,0,,,,,,,,, +410,738,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +411,811,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +412,812,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +413,814,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +414,815,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +415,817,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +416,818,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +417,820,1,20,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +418,822,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +419,823,1,20,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +420,825,1,20,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +421,826,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +422,828,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +423,830,1,20,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +424,832,1,20,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +425,834,1,20,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +426,836,1,20,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +427,838,1,20,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +428,839,1,20,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +429,841,3,20,1,1175,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +430,842,3,20,1,1174,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +431,844,1,20,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +432,847,1,20,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +433,849,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,,849,,,,,10473025, +434,851,1,20,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +435,853,1,20,1,,,,,,,269,,,,,,,,,0,0,0,0,,,,,,,,, +436,855,3,20,1,1311,,,,,,,,,,,,,,,0,0,0,0,,854,855,,,,,, +437,857,1,20,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +438,858,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +439,860,1,20,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +440,861,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +441,869,5,20,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +442,873,1,20,1,,,,,,night,,,160,,,,,,,0,0,0,0,,,,,,,,, +443,879,1,20,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +444,886,1,20,1,,50,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +445,887,1,20,1,,60,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +446,892,6,21,0,,,,,,,,,,,,,,,,0,0,0,0,,,892,,,,,, +447,892,7,21,0,,,,,,,,,,,,,,,,0,0,0,0,,,10360,,,,,, +448,28,3,17,1,885,,,,,,,,,,,,,,,0,0,0,0,,10203,10204,,,,,, +449,38,3,17,1,885,,,,,,,,,,,,,,,0,0,0,0,,10205,10206,,,,,, +450,53,1,17,1,,,,,,,,,160,,,,,,,0,0,0,0,,10209,10210,,,,,, +451,863,1,20,1,,28,,,,,,,,,,,,,,0,0,0,0,,10320,,,,,,, +452,80,3,21,1,1633,,,,,,,,,,,,,,,0,0,0,0,,10323,10324,,,,,, +453,199,3,21,1,1643,,,,,,,,,,,,,,,0,0,0,0,,10323,10331,,,,,, +454,865,8,20,1,,,,,,,,,,,,,,,,0,0,0,0,,10325,,,,,,, +455,866,1,20,1,,42,,,,,,,,,,,,,,0,0,0,0,,10327,,,,,,, +456,864,1,20,1,,38,,,,,,,,,,,,,,0,0,0,0,,10332,,,,,,, +457,862,1,20,1,,35,,,,night,,,,,,,,,,0,0,0,0,,10334,,,,,,, +458,555,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,10335,10336,,,,,, +459,867,9,20,1,,,,890,,,,,,,,,,,,0,0,0,0,,10338,,,,,49,, +460,745,1,17,1,,25,,,,dusk,,,,,,,,,,0,0,0,0,,10310,10311,,,,,, +461,20,1,17,1,,20,,,,night,,,,,,,,,,0,0,0,0,,10193,10194,,,,,, +462,899,11,24,1,,,,,,,,,,,,,,,,0,0,0,0,,,,828,20,,,, +463,900,3,24,1,2230,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +464,901,3,24,1,2231,,,,,full-moon,,,,,,,,,,0,0,0,0,,,,,,,,, +465,902,13,24,1,,,2,,,,,,,,,,,,,0,0,0,0,,10416,902,,,,294,, +466,903,1,24,1,,,,,303,day,,,,,,,,,,0,0,0,0,,10404,,,,,,, +467,904,12,24,0,,,,,,,,,,,,,,,,0,0,0,0,,10403,,839,20,,,, +468,907,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +469,908,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +470,910,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +471,911,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +472,913,1,25,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +473,914,1,25,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +474,916,1,25,1,,18,2,,,,,,,,,,,,,0,0,0,0,,,916,,,,,, +475,918,1,25,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +476,920,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +477,922,1,25,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +478,923,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,, +479,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,925,,,,,,EC 100 % 0 != +480,927,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +481,929,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +482,930,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +483,933,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +484,934,1,25,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +485,936,3,25,1,2045,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +486,937,3,25,1,1677,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +487,939,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +488,941,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +489,943,1,25,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +490,945,1,25,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +491,947,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,, +492,949,1,25,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +493,952,3,25,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +494,954,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,, +495,956,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +496,958,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +497,959,1,25,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +498,961,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +499,964,1,25,1,,38,,,,,,,,,,,,,,0,0,1,0,,,,,,,,, +500,966,1,25,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +501,970,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +502,972,1,25,1,,30,,,,night,,,,,,,,,,0,0,0,0,,,,,,,,, +503,975,3,25,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +504,979,14,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,889,20,,,, +505,980,1,25,1,,20,,,,,,,,,,,,,,0,0,0,0,,10422,,,,,,, +506,981,1,25,1,,,,,,,888,,,,,,,,,0,0,0,0,,,,,,,,, +507,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,982,,,,,,EC 100 % 0 != +508,983,15,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +509,997,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +510,998,1,25,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +511,1000,16,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +512,740,3,25,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +514,476,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +515,904,1,25,1,,,,,,,839,,,,,,,,,0,0,0,0,,10403,,,,,,, +516,904,14,30,0,,,,,,,,,,,,,,,,0,0,0,0,,10403,,839,20,,,, +517,26,3,17,1,83,,,,,,,,,,,,,,,0,0,0,0,7,,10202,,,,,, +518,51,1,17,1,,26,,,,,,,,,,,,,,0,0,0,0,,10207,10208,,,,,, +519,75,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,10211,10212,,,,,, +520,76,2,17,1,,,,,,,,,,,,,,,,0,0,0,0,,10212,10213,,,,,, +521,89,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,10214,10215,,,,,, +522,103,3,17,1,85,,,,,,,,,,,,,,,0,0,0,0,7,,10216,,,,,, +523,59,3,24,1,82,,,,,,,,,,,,,,,0,0,0,0,,10398,10399,,,,,, +524,101,3,24,1,85,,,,,,,,,,,,,,,0,0,0,0,,10400,10401,,,,,, +525,156,1,24,0,,17,,,,,,,,,,,,,,0,0,0,0,9,,,,,,,, +526,157,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10402,,,,,, +527,503,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10405,,,,,, +528,549,3,24,1,80,,,,,,,,,,,,,,,0,0,0,0,9,,10406,,,,,, +529,571,1,24,1,,30,,,,,,,,,,,,,,0,0,0,0,,10407,10408,,,,,, +530,628,1,24,1,,54,,,,,,,,,,,,,,0,0,0,0,9,,10409,,,,,, +531,705,1,24,1,,40,,,,,,,,,,,,,,0,0,0,0,9,,10410,,,,,, +532,706,1,24,1,,50,,,,,,,,,,,,,,1,0,0,0,,10410,10411,,,,,, +533,713,1,24,1,,37,,,,,,,,,,,,,,0,0,0,0,9,,10412,,,,,, +534,724,1,24,1,,36,,,,,,,,,,,,,,0,0,0,0,9,,10413,,,,,, +535,78,1,20,1,,40,,,,,,,,,,,,,,0,0,0,0,,10321,10322,,,,,, +536,110,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,8,,10326,,,,,, +537,122,1,20,1,,,,,,,102,,,,,,,,,0,0,0,0,8,,10327,,,,,, +538,264,1,20,1,,20,,,,,,,,,,,,,,0,0,0,0,,10333,10334,,,,,, +539,892,3,25,1,1675,,,,,,,,,,,,,,,0,0,0,0,,,892,,,,,, +540,892,3,25,1,1676,,,,,,,,,,,,,,,0,0,0,0,,,10360,,,,,, +541,1011,3,26,1,2109,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +542,1018,3,27,1,2232,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +543,1019,1,27,1,,,,,,,913,,,,,,,,,0,0,0,0,,,,,,,,, +544,1013,3,26,1,2110,,,,,,,,,,,,,,,0,0,0,0,,1012,1013,,,,,, +545,1013,3,26,1,2111,,,,,,,,,,,,,,,0,0,0,0,,10447,10448,,,,,, +546,462,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,,,, +547,476,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,,,, +548,470,1,16,0,,,,438,,,,,,,,,,,,0,0,0,1,,,,,,,,, +549,471,1,16,0,,,,445,,,,,,,,,,,,0,0,0,1,,,,,,,,, +550,470,1,17,0,,,,750,,,,,,,,,,,,0,0,0,1,,,,,,,,, +551,471,1,17,0,,,,775,,,,,,,,,,,,0,0,0,1,,,,,,,,, +552,855,3,20,1,1312,,,,,,,,,,,,,,,0,0,0,0,,10344,10345,,,,,, +553,350,1,16,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,,,, +554,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10126,10129,,,,,, +555,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10127,10130,,,,,, +556,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10128,10131,,,,,, +557,678,1,15,1,,25,1,,,,,,,,,,,,,0,0,0,0,,,10124,,,,,, +558,916,1,25,1,,18,1,,,,,,,,,,,,,0,0,0,0,,,10423,,,,,, +559,849,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,,10343,,,,,23081406, +560,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,10426,,,,,,EC 100 % 0 == +561,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,10424,,,,,,EC 100 % 0 == +562,902,13,24,1,,,1,,,,,,,,,,,,,0,0,0,0,,10416,10417,,,,294,, +563,266,1,15,0,,7,,,,,,,,,,,,,,0,0,0,0,,,266,,,,,,EC 16 >> 10 % 4 <= +564,268,1,15,0,,7,,,,,,,,,,,,,,0,0,0,0,,,268,,,,,,EC 16 >> 10 % 5 >= +565,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10034,10036,,,,,, +566,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10035,10037,,,,,, +567,809,17,19,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +568,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,10034,,,,,,, +569,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,10035,,,,,,, diff --git a/openapi.yml b/openapi.yml index d87d98dd2..3258f3759 100644 --- a/openapi.yml +++ b/openapi.yml @@ -7413,12 +7413,10 @@ components: type: boolean region: $ref: '#/components/schemas/RegionSummary' - base_form: - $ref: '#/components/schemas/PokemonSummary' - required_form: + required_pokemon_form: + $ref: '#/components/schemas/PokemonFormSummary' + evolved_pokemon_form: $ref: '#/components/schemas/PokemonFormSummary' - evolved_form: - $ref: '#/components/schemas/PokemonSummary' used_move: $ref: '#/components/schemas/MoveSummary' min_move_count: @@ -7451,9 +7449,8 @@ components: additionalProperties: {} readOnly: true required: - - base_form - condition_expression - - evolved_form + - evolved_pokemon_form - held_item - item - known_move @@ -7463,7 +7460,7 @@ components: - party_species - party_type - region - - required_form + - required_pokemon_form - trade_species - trigger - used_move diff --git a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py index 50b967b8f..59c5ddda9 100644 --- a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py +++ b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py @@ -10,6 +10,14 @@ class Migration(migrations.Migration): ] operations = [ + migrations.RemoveField( + model_name="pokemonevolution", + name="base_form", + ), + migrations.RemoveField( + model_name="pokemonevolution", + name="evolved_form", + ), migrations.AddField( model_name="pokemonevolution", name="condition_expression", @@ -31,13 +39,25 @@ class Migration(migrations.Migration): ), migrations.AddField( model_name="pokemonevolution", - name="required_form", + name="required_pokemon_form", + field=models.ForeignKey( + blank=True, + help_text="Specific form required for evolution (e.g. burmy-plant, sinistea-antique)", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="required_in_evolutions", + to="pokemon_v2.pokemonform", + ), + ), + migrations.AddField( + model_name="pokemonevolution", + name="evolved_pokemon_form", field=models.ForeignKey( blank=True, - help_text="Specific temporary form required for evolution (e.g. Burmy cloaks)", + help_text="Specific form resulting from evolution (e.g. polteageist-antique, wormadam-sandy)", null=True, on_delete=django.db.models.deletion.CASCADE, - related_name="required_form_evolutions", + related_name="evolved_into_evolutions", to="pokemon_v2.pokemonform", ), ), diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index 2190b551b..08f1949bc 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -2013,22 +2013,22 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): help_text="Region where this evolution can occur (null = any region)", ) - base_form = models.ForeignKey( - "Pokemon", + required_pokemon_form = models.ForeignKey( + "PokemonForm", blank=True, null=True, - related_name="base_form_evolutions", + related_name="required_in_evolutions", on_delete=models.CASCADE, - help_text="Specific form required for evolution (null = any form)", + help_text="Specific form required for evolution (e.g. burmy-plant, sinistea-antique)", ) - evolved_form = models.ForeignKey( - "Pokemon", + evolved_pokemon_form = models.ForeignKey( + "PokemonForm", blank=True, null=True, - related_name="evolved_form", + related_name="evolved_into_evolutions", on_delete=models.CASCADE, - help_text="Specific form of the evolved species", + help_text="Specific form resulting from evolution (e.g. polteageist-antique, wormadam-sandy)", ) used_move = models.ForeignKey(Move, related_name="used_move", blank=True, null=True, on_delete=models.CASCADE) @@ -2052,15 +2052,6 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", ) - required_form = models.ForeignKey( - "PokemonForm", - blank=True, - null=True, - related_name="required_form_evolutions", - on_delete=models.CASCADE, - help_text="Specific temporary form required for evolution (e.g. Burmy cloaks)", - ) - class PokemonForm(HasName, HasPokemon, HasOrder): form_name = models.CharField(max_length=30) diff --git a/pokemon_v2/serializers.py b/pokemon_v2/serializers.py index 510dc8ffc..fdf88cae4 100644 --- a/pokemon_v2/serializers.py +++ b/pokemon_v2/serializers.py @@ -3371,9 +3371,8 @@ class PokemonEvolutionSerializer(serializers.ModelSerializer[PokemonEvolution]): location = LocationSummarySerializer() trigger = EvolutionTriggerSummarySerializer(source="evolution_trigger") region = RegionSummarySerializer() - base_form = PokemonSummarySerializer() - required_form = PokemonFormSummarySerializer() - evolved_form = PokemonSummarySerializer() + required_pokemon_form = PokemonFormSummarySerializer() + evolved_pokemon_form = PokemonFormSummarySerializer() used_move = MoveSummarySerializer() needs_one_of_natures = serializers.SerializerMethodField("get_needs_one_of_natures") condition_expression = serializers.SerializerMethodField("get_condition_expression") @@ -3404,9 +3403,8 @@ class Meta: "trade_species", "turn_upside_down", "region", - "base_form", - "required_form", - "evolved_form", + "required_pokemon_form", + "evolved_pokemon_form", "used_move", "min_move_count", "min_steps", diff --git a/pokemon_v2/test_models.py b/pokemon_v2/test_models.py index 660f60147..5b1fed0bd 100644 --- a/pokemon_v2/test_models.py +++ b/pokemon_v2/test_models.py @@ -40,7 +40,7 @@ def test_unique_encounter_pokemon_details(self): class EvolutionCSVDataIntegrityTestCase(TestCase): """Test data integrity of new evolution foreign keys and evolution variables.""" - def test_required_form_foreign_keys(self): + def test_required_and_evolved_pokemon_form_foreign_keys(self): csv_dir = os.path.join(settings.BASE_DIR, "data", "v2", "csv") forms_path = os.path.join(csv_dir, "pokemon_forms.csv") with open(forms_path, encoding="utf-8") as f: @@ -49,36 +49,19 @@ def test_required_form_foreign_keys(self): evo_path = os.path.join(csv_dir, "pokemon_evolution.csv") with open(evo_path, encoding="utf-8") as f: for row in csv.DictReader(f): - req_form_id = row.get("required_form_id", "").strip() - if req_form_id: + required_pokemon_form_id = row.get("required_pokemon_form_id", "").strip() + evolved_pokemon_form_id = row.get("evolved_pokemon_form_id", "").strip() + if required_pokemon_form_id: self.assertIn( - req_form_id, + required_pokemon_form_id, valid_form_ids, - f"Row {row['id']}: required_form_id '{req_form_id}' does not exist in pokemon_forms.csv", + f"Row {row['id']}: '{required_pokemon_form_id=}' doesn't exist in pokemon_forms.csv", ) - - def test_base_and_evolved_form_foreign_keys(self): - csv_dir = os.path.join(settings.BASE_DIR, "data", "v2", "csv") - pokemon_path = os.path.join(csv_dir, "pokemon.csv") - with open(pokemon_path, encoding="utf-8") as f: - valid_pokemon_ids = {row["id"] for row in csv.DictReader(f)} - - evo_path = os.path.join(csv_dir, "pokemon_evolution.csv") - with open(evo_path, encoding="utf-8") as f: - for row in csv.DictReader(f): - base_id = row.get("base_form_id", "").strip() - evolved_id = row.get("evolved_form_id", "").strip() - if base_id: - self.assertIn( - base_id, - valid_pokemon_ids, - f"Row {row['id']}: base_form_id '{base_id}' does not exist in pokemon.csv", - ) - if evolved_id: + if evolved_pokemon_form_id: self.assertIn( - evolved_id, - valid_pokemon_ids, - f"Row {row['id']}: evolved_form_id '{evolved_id}' does not exist in pokemon.csv", + evolved_pokemon_form_id, + valid_form_ids, + f"Row {row['id']}: '{evolved_pokemon_form_id=}' doesn't exist in pokemon_forms.csv", ) def test_evolution_triggers_foreign_keys(self): From 884a344e4bc0799cfcc19d99dc730c529fc81334 Mon Sep 17 00:00:00 2001 From: Triyan Mukherjee Date: Mon, 31 Aug 2026 00:29:21 +0530 Subject: [PATCH 3/8] tests: Update test fields --- pokemon_v2/tests.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pokemon_v2/tests.py b/pokemon_v2/tests.py index 49cc7545b..a6d8eac62 100644 --- a/pokemon_v2/tests.py +++ b/pokemon_v2/tests.py @@ -1703,8 +1703,8 @@ def setup_pokemon_evolution_data( needs_overworld_rain=False, turn_upside_down=False, region=None, - base_form=None, - evolved_form=None, + required_pokemon_form=None, + evolved_pokemon_form=None, needs_multiplayer=False, near_special_rock=False, used_move=None, @@ -1739,8 +1739,8 @@ def setup_pokemon_evolution_data( needs_overworld_rain=needs_overworld_rain, turn_upside_down=turn_upside_down, region=region, - base_form=base_form, - evolved_form=evolved_form, + required_pokemon_form=required_pokemon_form, + evolved_pokemon_form=evolved_pokemon_form, needs_multiplayer=needs_multiplayer, near_special_rock=near_special_rock, used_move=used_move, From f0efeb6e10f093a4f7098cb8e7f47e582d4c26d1 Mon Sep 17 00:00:00 2001 From: Triyan Mukherjee Date: Tue, 1 Sep 2026 20:31:58 +0530 Subject: [PATCH 4/8] fix: Update form locking records on evolutions --- data/v2/build.py | 4 +- data/v2/csv/pokemon_evolution.csv | 72 ++++++++++--------- ...evolution_condition_expression_and_more.py | 7 +- pokemon_v2/models.py | 8 ++- 4 files changed, 50 insertions(+), 41 deletions(-) diff --git a/data/v2/build.py b/data/v2/build.py index 0a91e88c8..877a8e138 100644 --- a/data/v2/build.py +++ b/data/v2/build.py @@ -1871,8 +1871,8 @@ def csv_record_to_objects(info): min_move_count=int(info[28]) if info[28] != "" else None, min_steps=int(info[29]) if info[29] != "" else None, min_damage_taken=int(info[30]) if info[30] != "" else None, - needs_one_of_natures=int(info[31]) if len(info) > 31 and info[31] != "" else None, - condition_expression=info[32] if len(info) > 32 else "", + needs_one_of_natures=int(info[31]) if info[31] != "" else None, + condition_expression=info[32] if info[32] != "" else None, ) build_generic((PokemonEvolution,), "pokemon_evolution.csv", csv_record_to_objects) diff --git a/data/v2/csv/pokemon_evolution.csv b/data/v2/csv/pokemon_evolution.csv index eda247424..c08ed6376 100644 --- a/data/v2/csv/pokemon_evolution.csv +++ b/data/v2/csv/pokemon_evolution.csv @@ -15,7 +15,7 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 14,22,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 15,24,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 16,25,1,1,1,,,,,,,,,220,,,,,,,0,0,0,0,,,,,,,,, -17,26,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +17,26,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,25,,,,,,, 18,28,1,1,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 19,30,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 20,31,3,1,1,81,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -74,9 +74,9 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 73,125,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 74,126,1,3,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 75,130,1,1,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -76,134,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -77,135,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -78,136,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +76,134,3,1,1,84,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,, +77,135,3,1,1,83,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,, +78,136,3,1,1,82,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,, 79,139,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 80,141,1,1,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 81,143,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, @@ -107,8 +107,8 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 106,189,1,3,1,,27,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 107,192,3,3,1,80,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 108,195,1,3,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -109,196,1,3,1,,,,,,day,,,160,,,,,,,0,0,0,0,,,,,,,,, -110,197,1,3,1,,,,,,night,,,160,,,,,,,0,0,0,0,,,,,,,,, +109,196,1,3,1,,,,,,day,,,160,,,,,,,0,0,0,0,,133,,,,,,, +110,197,1,3,1,,,,,,night,,,160,,,,,,,0,0,0,0,,133,,,,,,, 111,199,2,3,1,,,,,198,,,,,,,,,,,0,0,0,0,,,,,,,,, 112,202,1,5,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 113,205,1,3,1,,31,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -136,9 +136,9 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 135,260,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 136,262,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 137,264,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -138,266,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 4 <= +138,266,1,5,0,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 4 <= 139,267,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -140,268,1,5,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 5 >= +140,268,1,5,0,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 5 >= 141,269,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 142,271,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 143,272,3,5,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -202,11 +202,11 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 201,402,1,8,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 202,404,1,8,1,,15,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 203,405,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -204,407,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,412,413,,,,,, +204,407,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 205,409,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 206,411,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 207,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,412,413,,,,,, -208,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,412,,,,,,, +208,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 209,416,1,8,1,,21,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 210,419,1,8,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 211,421,1,8,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -236,8 +236,8 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 235,467,2,8,1,,,,,300,,,,,,,,,,,0,0,0,0,,,,,,,,, 236,468,3,8,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 237,469,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,, -238,470,1,8,0,,,,8,,,,,,,,,,,,0,0,0,1,,,,,,,,, -239,471,1,8,0,,,,48,,,,,,,,,,,,0,0,0,1,,,,,,,,, +238,470,1,8,0,,,,8,,,,,,,,,,,,0,0,0,1,,133,,,,,,, +239,471,1,8,0,,,,48,,,,,,,,,,,,0,0,0,1,,133,,,,,,, 240,472,1,8,1,,,,,304,night,,,,,,,,,,0,0,0,0,,,,,,,,, 241,473,1,8,1,,,,,,,246,,,,,,,,,0,0,0,0,,,,,,,,, 242,474,2,8,1,,,,,301,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -322,8 +322,8 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 321,350,2,11,1,,,,,580,,,,,,,,,,,0,0,0,0,,,,,,,,, 322,462,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,,,, 323,476,1,11,0,,,,379,,,,,,,,,,,,0,0,0,0,,,,,,,,, -324,470,1,11,0,,,,375,,,,,,,,,,,,0,0,0,1,,,,,,,,, -325,471,1,11,0,,,,380,,,,,,,,,,,,0,0,0,1,,,,,,,,, +324,470,1,11,0,,,,375,,,,,,,,,,,,0,0,0,1,,133,,,,,,, +325,471,1,11,0,,,,380,,,,,,,,,,,,0,0,0,1,,133,,,,,,, 327,683,2,11,1,,,,,687,,,,,,,,,,,0,0,0,0,,,,,,,,, 328,662,1,15,1,,17,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 329,709,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -343,8 +343,8 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 343,689,1,15,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 344,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,710,711,,,,,, 345,660,1,15,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -346,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -347,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +346,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,669,670,,,,,, +347,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,670,671,,,,,, 348,681,3,15,1,108,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 349,675,1,15,1,,32,,,,,,,,,,,,17,,0,0,0,0,,,,,,,,, 350,685,2,15,1,,,,,686,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -358,10 +358,10 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 358,706,1,15,1,,50,,,,,,,,,,,,,,1,0,0,0,,,,,,,,, 359,715,1,15,1,,48,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 360,678,1,15,1,,25,2,,,,,,,,,,,,,0,0,0,0,,,678,,,,,, -361,700,1,15,0,,,,,,,,18,,,2,,,,,0,0,0,0,,,,,,,,, +361,700,1,15,0,,,,,,,,18,,,2,,,,,0,0,0,0,,133,,,,,,, 362,462,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,,,, -363,470,1,15,0,,,,650,,,,,,,,,,,,0,0,0,1,,,,,,,,, -364,471,1,15,0,,,,640,,,,,,,,,,,,0,0,0,1,,,,,,,,, +363,470,1,15,0,,,,650,,,,,,,,,,,,0,0,0,1,,133,,,,,,, +364,471,1,15,0,,,,640,,,,,,,,,,,,0,0,0,1,,133,,,,,,, 365,476,1,15,0,,,,629,,,,,,,,,,,,0,0,0,0,,,,,,,,, 366,462,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,, 367,105,1,17,1,,28,,,,night,,,,,,,,,,0,0,0,0,7,,10217,,,,,, @@ -382,8 +382,8 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 383,738,1,17,0,,,,771,,,,,,,,,,,,0,0,0,0,,,,,,,,, 384,740,1,17,0,,,,775,,,,,,,,,,,,0,0,0,0,,,,,,,,, 385,743,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -386,745,1,17,1,,25,,,,day,,,,,,,,,,0,0,0,0,,,745,,,,,, -387,745,1,17,1,,25,,,,night,,,,,,,,,,0,0,0,0,,,10228,,,,,, +386,745,1,17,1,,25,,,,day,,,,,,,,,,0,0,0,0,,744,745,,,,,, +387,745,1,17,1,,25,,,,night,,,,,,,,,,0,0,0,0,,744,10228,,,,,, 388,748,1,17,1,,38,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 389,750,1,17,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 390,752,1,17,1,,22,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -403,9 +403,9 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 404,792,1,17,1,,53,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 405,804,1,18,1,,,,,,,406,,,,,,,,,0,0,0,0,,,,,,,,, 406,462,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -407,470,3,20,1,85,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -408,471,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -409,700,1,20,1,,,,,,,,18,160,,,,,,,0,0,0,0,,,,,,,,, +407,470,3,20,1,85,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,, +408,471,3,20,1,885,,,,,,,,,,,,,,,0,0,0,0,,133,,,,,,, +409,700,1,20,1,,,,,,,,18,160,,,,,,,0,0,0,0,,133,,,,,,, 410,738,3,20,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 411,811,1,20,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 412,812,1,20,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -512,7 +512,7 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 514,476,3,25,1,83,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 515,904,1,25,1,,,,,,,839,,,,,,,,,0,0,0,0,,10403,,,,,,, 516,904,14,30,0,,,,,,,,,,,,,,,,0,0,0,0,,10403,,839,20,,,, -517,26,3,17,1,83,,,,,,,,,,,,,,,0,0,0,0,7,,10202,,,,,, +517,26,3,17,1,83,,,,,,,,,,,,,,,0,0,0,0,7,25,10202,,,,,, 518,51,1,17,1,,26,,,,,,,,,,,,,,0,0,0,0,,10207,10208,,,,,, 519,75,1,17,1,,25,,,,,,,,,,,,,,0,0,0,0,,10211,10212,,,,,, 520,76,2,17,1,,,,,,,,,,,,,,,,0,0,0,0,,10212,10213,,,,,, @@ -543,10 +543,10 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 545,1013,3,26,1,2111,,,,,,,,,,,,,,,0,0,0,0,,10447,10448,,,,,, 546,462,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,,,, 547,476,1,16,0,,,,446,,,,,,,,,,,,0,0,0,0,,,,,,,,, -548,470,1,16,0,,,,438,,,,,,,,,,,,0,0,0,1,,,,,,,,, -549,471,1,16,0,,,,445,,,,,,,,,,,,0,0,0,1,,,,,,,,, -550,470,1,17,0,,,,750,,,,,,,,,,,,0,0,0,1,,,,,,,,, -551,471,1,17,0,,,,775,,,,,,,,,,,,0,0,0,1,,,,,,,,, +548,470,1,16,0,,,,438,,,,,,,,,,,,0,0,0,1,,133,,,,,,, +549,471,1,16,0,,,,445,,,,,,,,,,,,0,0,0,1,,133,,,,,,, +550,470,1,17,0,,,,750,,,,,,,,,,,,0,0,0,1,,133,,,,,,, +551,471,1,17,0,,,,775,,,,,,,,,,,,0,0,0,1,,133,,,,,,, 552,855,3,20,1,1312,,,,,,,,,,,,,,,0,0,0,0,,10344,10345,,,,,, 553,350,1,16,0,,,,,,,,,,170,,,,,,0,0,0,0,,,,,,,,, 554,711,2,15,1,,,,,,,,,,,,,,,,0,0,0,0,,10126,10129,,,,,, @@ -558,10 +558,16 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 560,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,10426,,,,,,EC 100 % 0 == 561,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,10424,,,,,,EC 100 % 0 == 562,902,13,24,1,,,1,,,,,,,,,,,,,0,0,0,0,,10416,10417,,,,294,, -563,266,1,15,0,,7,,,,,,,,,,,,,,0,0,0,0,,,266,,,,,,EC 16 >> 10 % 4 <= -564,268,1,15,0,,7,,,,,,,,,,,,,,0,0,0,0,,,268,,,,,,EC 16 >> 10 % 5 >= +563,266,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,266,,,,,,EC 16 >> 10 % 4 <= +564,268,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,268,,,,,,EC 16 >> 10 % 5 >= 565,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10034,10036,,,,,, 566,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10035,10037,,,,,, 567,809,17,19,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -568,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,10034,,,,,,, -569,414,1,8,1,,20,2,,,,,,,,,,,,,0,0,0,0,,10035,,,,,,, +570,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10103,10107,,,,,, +571,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10104,10108,,,,,, +572,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10105,10109,,,,,, +573,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10106,10110,,,,,, +574,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,10107,10111,,,,,, +575,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,10108,10112,,,,,, +576,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,10109,10113,,,,,, +577,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,10110,10114,,,,,, diff --git a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py index 59c5ddda9..7bd85e392 100644 --- a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py +++ b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py @@ -23,9 +23,10 @@ class Migration(migrations.Migration): name="condition_expression", field=models.CharField( blank=True, - default="", + default=None, help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", max_length=100, + null=True, ), ), migrations.AddField( @@ -42,7 +43,7 @@ class Migration(migrations.Migration): name="required_pokemon_form", field=models.ForeignKey( blank=True, - help_text="Specific form required for evolution (e.g. burmy-plant, sinistea-antique)", + help_text="Specific form required for evolution (null = any form; e.g. burmy-plant, sinistea-antique)", null=True, on_delete=django.db.models.deletion.CASCADE, related_name="required_in_evolutions", @@ -54,7 +55,7 @@ class Migration(migrations.Migration): name="evolved_pokemon_form", field=models.ForeignKey( blank=True, - help_text="Specific form resulting from evolution (e.g. polteageist-antique, wormadam-sandy)", + help_text="Specific form resulting from evolution (null = default form; e.g. polteageist-antique, wormadam-sandy)", null=True, on_delete=django.db.models.deletion.CASCADE, related_name="evolved_into_evolutions", diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index 08f1949bc..e67be2de4 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -1,4 +1,5 @@ # pyright: reportIncompatibleVariableOverride=false +# ruff: noqa: E501 from __future__ import annotations from typing import Any, ClassVar, TypeVar @@ -2019,7 +2020,7 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): null=True, related_name="required_in_evolutions", on_delete=models.CASCADE, - help_text="Specific form required for evolution (e.g. burmy-plant, sinistea-antique)", + help_text="Specific form required for evolution (null = any form; e.g. burmy-plant, sinistea-antique)", ) evolved_pokemon_form = models.ForeignKey( @@ -2028,7 +2029,7 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): null=True, related_name="evolved_into_evolutions", on_delete=models.CASCADE, - help_text="Specific form resulting from evolution (e.g. polteageist-antique, wormadam-sandy)", + help_text="Specific form resulting from evolution (null = default form; e.g. polteageist-antique, wormadam-sandy)", ) used_move = models.ForeignKey(Move, related_name="used_move", blank=True, null=True, on_delete=models.CASCADE) @@ -2048,7 +2049,8 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): condition_expression = models.CharField( max_length=100, blank=True, - default="", + null=True, + default=None, help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", ) From 502be446c965d8fcd6bfe84fb20177675faff9ab Mon Sep 17 00:00:00 2001 From: Triyan Mukherjee Date: Tue, 1 Sep 2026 21:12:50 +0530 Subject: [PATCH 5/8] fix: ignore migration files from line len rules, update condition_expr default --- data/v2/build.py | 2 +- .../0036_pokemonevolution_condition_expression_and_more.py | 3 +-- pokemon_v2/models.py | 3 +-- pokemon_v2/serializers.py | 2 +- ruff.toml | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/data/v2/build.py b/data/v2/build.py index 877a8e138..9c8a4c9a3 100644 --- a/data/v2/build.py +++ b/data/v2/build.py @@ -1872,7 +1872,7 @@ def csv_record_to_objects(info): min_steps=int(info[29]) if info[29] != "" else None, min_damage_taken=int(info[30]) if info[30] != "" else None, needs_one_of_natures=int(info[31]) if info[31] != "" else None, - condition_expression=info[32] if info[32] != "" else None, + condition_expression=info[32], ) build_generic((PokemonEvolution,), "pokemon_evolution.csv", csv_record_to_objects) diff --git a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py index 7bd85e392..bc49214aa 100644 --- a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py +++ b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py @@ -23,10 +23,9 @@ class Migration(migrations.Migration): name="condition_expression", field=models.CharField( blank=True, - default=None, + default="", help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", max_length=100, - null=True, ), ), migrations.AddField( diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index e67be2de4..8d2f8aaf6 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -2049,8 +2049,7 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): condition_expression = models.CharField( max_length=100, blank=True, - null=True, - default=None, + default="", help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", ) diff --git a/pokemon_v2/serializers.py b/pokemon_v2/serializers.py index fdf88cae4..329fa3392 100644 --- a/pokemon_v2/serializers.py +++ b/pokemon_v2/serializers.py @@ -2967,7 +2967,7 @@ def get_pokemon_sprites(self, obj: Pokemon) -> dict[str, Any]: sprites_list = list(cast("PokemonWithRelations", obj).pokemonsprites.all()) if not sprites_list: return {} - sprites = cast("dict[str, Any]", sprites_list[0].sprites) + sprites = sprites_list[0].sprites if obj.pokemon_species and obj.pokemon_species.gender_rate == 8: self._fill_female_sprites(sprites) return sprites diff --git a/ruff.toml b/ruff.toml index 0f30d9c3c..d32503079 100644 --- a/ruff.toml +++ b/ruff.toml @@ -38,4 +38,4 @@ preview = true "data/v2/build.py" = ["ANN", "ERA001", "F403", "F405"] "data/v2/__init__.py" = ["F403", "F405"] # Django migration generated code -"pokemon_v2/migrations/*.py" = ["RUF012", "ERA001"] +"pokemon_v2/migrations/*.py" = ["RUF012", "ERA001", "E501"] From 218f76dd8da103459e42f3580061000e3e841696 Mon Sep 17 00:00:00 2001 From: Triyan Mukherjee Date: Tue, 1 Sep 2026 22:09:27 +0530 Subject: [PATCH 6/8] feat: Add shellos, deerling, meltan candy item reference, remove redundant wurmple chain form references --- data/v2/csv/pokemon_evolution.csv | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/data/v2/csv/pokemon_evolution.csv b/data/v2/csv/pokemon_evolution.csv index c08ed6376..d0fb8b8b1 100644 --- a/data/v2/csv/pokemon_evolution.csv +++ b/data/v2/csv/pokemon_evolution.csv @@ -210,7 +210,7 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 209,416,1,8,1,,21,1,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 210,419,1,8,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 211,421,1,8,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -212,423,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +212,423,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,422,423,,,,,, 213,424,1,8,1,,,,,,,458,,,,,,,,,0,0,0,0,,,,,,,,, 214,426,1,8,1,,28,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 215,428,1,8,1,,,,,,,,,160,,,,,,,0,0,0,0,,,,,,,,, @@ -294,7 +294,7 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 293,581,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 294,583,1,11,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 295,584,1,11,1,,47,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -296,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +296,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,585,586,,,,,, 297,589,2,11,1,,,,,,,,,,,,,,,616,0,0,0,0,,,,,,,,, 298,591,1,11,1,,39,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 299,593,1,11,1,,40,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -558,11 +558,11 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 560,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,10426,,,,,,EC 100 % 0 == 561,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,10424,,,,,,EC 100 % 0 == 562,902,13,24,1,,,1,,,,,,,,,,,,,0,0,0,0,,10416,10417,,,,294,, -563,266,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,266,,,,,,EC 16 >> 10 % 4 <= -564,268,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,268,,,,,,EC 16 >> 10 % 5 >= +563,266,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,EC 16 >> 10 % 4 <= +564,268,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,EC 16 >> 10 % 5 >= 565,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10034,10036,,,,,, 566,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10035,10037,,,,,, -567,809,17,19,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +567,809,17,19,1,1136,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 570,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10103,10107,,,,,, 571,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10104,10108,,,,,, 572,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10105,10109,,,,,, @@ -571,3 +571,7 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 575,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,10108,10112,,,,,, 576,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,10109,10113,,,,,, 577,671,3,15,1,107,,,,,,,,,,,,,,,0,0,0,0,,10110,10114,,,,,, +578,423,1,8,1,,30,,,,,,,,,,,,,,0,0,0,0,,10039,10040,,,,,, +579,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,10068,10071,,,,,, +580,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,10069,10072,,,,,, +581,586,1,11,1,,34,,,,,,,,,,,,,,0,0,0,0,,10070,10073,,,,,, From cbbec24b07a4fa66b36f7681a090ddc0a9979ed0 Mon Sep 17 00:00:00 2001 From: Triyan Mukherjee Date: Tue, 1 Sep 2026 23:48:08 +0530 Subject: [PATCH 7/8] fix: rename nature bitmask field, remove meltan item --- data/v2/build.py | 2 +- data/v2/csv/evolution_trigger_prose.csv | 2 ++ data/v2/csv/evolution_triggers.csv | 1 + data/v2/csv/pokemon_evolution.csv | 4 ++-- openapi.yml | 4 ++-- ...6_pokemonevolution_condition_expression_and_more.py | 2 +- pokemon_v2/models.py | 2 +- pokemon_v2/serializers.py | 10 +++++----- 8 files changed, 15 insertions(+), 12 deletions(-) diff --git a/data/v2/build.py b/data/v2/build.py index 9c8a4c9a3..012118c12 100644 --- a/data/v2/build.py +++ b/data/v2/build.py @@ -1871,7 +1871,7 @@ def csv_record_to_objects(info): min_move_count=int(info[28]) if info[28] != "" else None, min_steps=int(info[29]) if info[29] != "" else None, min_damage_taken=int(info[30]) if info[30] != "" else None, - needs_one_of_natures=int(info[31]) if info[31] != "" else None, + nature_bitmask=int(info[31]) if info[31] != "" else None, condition_expression=info[32], ) diff --git a/data/v2/csv/evolution_trigger_prose.csv b/data/v2/csv/evolution_trigger_prose.csv index 62ce2615b..03accb5c7 100644 --- a/data/v2/csv/evolution_trigger_prose.csv +++ b/data/v2/csv/evolution_trigger_prose.csv @@ -37,3 +37,5 @@ evolution_trigger_id,local_language_id,name 16,9,Collect 999 Gimmighoul Coins 17,5,Donner 400 Bonbons Meltan dans Pokémon GO 17,9,Feed 400 Meltan Candies in Pokémon GO +18,5,Non classé +18,9,Unclassified diff --git a/data/v2/csv/evolution_triggers.csv b/data/v2/csv/evolution_triggers.csv index 4e07bd769..66d31b3db 100644 --- a/data/v2/csv/evolution_triggers.csv +++ b/data/v2/csv/evolution_triggers.csv @@ -16,3 +16,4 @@ id,identifier 15,three-defeated-bisharp 16,gimmighoul-coins 17,meltan-candies +18,unclassified diff --git a/data/v2/csv/pokemon_evolution.csv b/data/v2/csv/pokemon_evolution.csv index d0fb8b8b1..43b305cef 100644 --- a/data/v2/csv/pokemon_evolution.csv +++ b/data/v2/csv/pokemon_evolution.csv @@ -1,4 +1,4 @@ -id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_item_id,minimum_level,gender_id,location_id,held_item_id,time_of_day,known_move_id,known_move_type_id,minimum_happiness,minimum_beauty,minimum_affection,relative_physical_stats,party_species_id,party_type_id,trade_species_id,needs_overworld_rain,turn_upside_down,needs_multiplayer,near_special_rock,region_id,required_pokemon_form_id,evolved_pokemon_form_id,used_move_id,minimum_move_count,minimum_steps,minimum_damage_taken,needs_one_of_natures,condition_expression +id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_item_id,minimum_level,gender_id,location_id,held_item_id,time_of_day,known_move_id,known_move_type_id,minimum_happiness,minimum_beauty,minimum_affection,relative_physical_stats,party_species_id,party_type_id,trade_species_id,needs_overworld_rain,turn_upside_down,needs_multiplayer,near_special_rock,region_id,required_pokemon_form_id,evolved_pokemon_form_id,used_move_id,minimum_move_count,minimum_steps,minimum_damage_taken,nature_bitmask,condition_expression 1,2,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 2,3,1,1,1,,32,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 3,5,1,1,1,,16,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -562,7 +562,7 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 564,268,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,EC 16 >> 10 % 5 >= 565,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10034,10036,,,,,, 566,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10035,10037,,,,,, -567,809,17,19,1,1136,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, +567,809,17,19,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 570,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10103,10107,,,,,, 571,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10104,10108,,,,,, 572,670,1,15,1,,19,,,,,,,,,,,,,,0,0,0,0,,10105,10109,,,,,, diff --git a/openapi.yml b/openapi.yml index 3258f3759..963454107 100644 --- a/openapi.yml +++ b/openapi.yml @@ -7437,7 +7437,7 @@ components: - 'null' maximum: 2147483647 minimum: -2147483648 - needs_one_of_natures: + allowed_natures: type: array items: $ref: '#/components/schemas/NatureSummary' @@ -7449,6 +7449,7 @@ components: additionalProperties: {} readOnly: true required: + - allowed_natures - condition_expression - evolved_pokemon_form - held_item @@ -7456,7 +7457,6 @@ components: - known_move - known_move_type - location - - needs_one_of_natures - party_species - party_type - region diff --git a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py index bc49214aa..e35d517fb 100644 --- a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py +++ b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py @@ -30,7 +30,7 @@ class Migration(migrations.Migration): ), migrations.AddField( model_name="pokemonevolution", - name="needs_one_of_natures", + name="nature_bitmask", field=models.IntegerField( blank=True, help_text="25-bit bitmask of allowed nature IDs (1 << (nature_id - 1))", diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index 8d2f8aaf6..4e997bba7 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -2040,7 +2040,7 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): min_damage_taken = models.IntegerField(blank=True, null=True) - needs_one_of_natures = models.IntegerField( + nature_bitmask = models.IntegerField( blank=True, null=True, help_text="25-bit bitmask of allowed nature IDs (1 << (nature_id - 1))", diff --git a/pokemon_v2/serializers.py b/pokemon_v2/serializers.py index 329fa3392..6d4a4b564 100644 --- a/pokemon_v2/serializers.py +++ b/pokemon_v2/serializers.py @@ -3374,7 +3374,7 @@ class PokemonEvolutionSerializer(serializers.ModelSerializer[PokemonEvolution]): required_pokemon_form = PokemonFormSummarySerializer() evolved_pokemon_form = PokemonFormSummarySerializer() used_move = MoveSummarySerializer() - needs_one_of_natures = serializers.SerializerMethodField("get_needs_one_of_natures") + allowed_natures = serializers.SerializerMethodField("get_allowed_natures") condition_expression = serializers.SerializerMethodField("get_condition_expression") class Meta: @@ -3409,15 +3409,15 @@ class Meta: "min_move_count", "min_steps", "min_damage_taken", - "needs_one_of_natures", + "allowed_natures", "condition_expression", ) @extend_schema_field(NatureSummarySerializer(many=True)) - def get_needs_one_of_natures(self, obj: PokemonEvolution) -> list[dict[str, Any]] | None: - if obj.needs_one_of_natures is None: + def get_allowed_natures(self, obj: PokemonEvolution) -> list[dict[str, Any]] | None: + if obj.nature_bitmask is None: return None - nature_ids = [i for i in range(1, 26) if (obj.needs_one_of_natures & (1 << (i - 1)))] + nature_ids = [i for i in range(1, 26) if (obj.nature_bitmask & (1 << (i - 1)))] if not nature_ids: return None natures = Nature.objects.filter(id__in=nature_ids).order_by("id") From 4289d906dfbd41f7ca7475ec80acda51be304dc8 Mon Sep 17 00:00:00 2001 From: Triyan Mukherjee Date: Thu, 3 Sep 2026 01:00:54 +0530 Subject: [PATCH 8/8] fix: Refactor to infix expressions for condition expr --- data/v2/csv/pokemon_evolution.csv | 16 ++++++++-------- ...monevolution_condition_expression_and_more.py | 2 +- pokemon_v2/models.py | 2 +- pokemon_v2/serializers.py | 5 +++-- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/data/v2/csv/pokemon_evolution.csv b/data/v2/csv/pokemon_evolution.csv index 43b305cef..ab247dffd 100644 --- a/data/v2/csv/pokemon_evolution.csv +++ b/data/v2/csv/pokemon_evolution.csv @@ -136,9 +136,9 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 135,260,1,5,1,,36,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 136,262,1,5,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 137,264,1,5,1,,20,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -138,266,1,5,0,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 4 <= +138,266,1,5,0,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,(PID >> 16) % 10 <= 4 139,267,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, -140,268,1,5,0,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,PID 16 >> 10 % 5 >= +140,268,1,5,0,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,(PID >> 16) % 10 >= 5 141,269,1,5,1,,10,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 142,271,1,5,1,,14,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 143,272,3,5,1,84,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -475,7 +475,7 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 476,920,1,25,1,,24,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 477,922,1,25,1,,18,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 478,923,1,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,1000,,, -479,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,925,,,,,,EC 100 % 0 != +479,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,925,,,,,,EC % 100 != 0 480,927,1,25,1,,26,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 481,929,1,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 482,930,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -503,7 +503,7 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 504,979,14,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,889,20,,,, 505,980,1,25,1,,20,,,,,,,,,,,,,,0,0,0,0,,10422,,,,,,, 506,981,1,25,1,,,,,,,888,,,,,,,,,0,0,0,0,,,,,,,,, -507,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,982,,,,,,EC 100 % 0 != +507,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,982,,,,,,EC % 100 != 0 508,983,15,25,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 509,997,1,25,1,,35,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, 510,998,1,25,1,,54,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, @@ -555,11 +555,11 @@ id,evolved_species_id,evolution_trigger_id,version_group_id,is_default,trigger_i 557,678,1,15,1,,25,1,,,,,,,,,,,,,0,0,0,0,,,10124,,,,,, 558,916,1,25,1,,18,1,,,,,,,,,,,,,0,0,0,0,,,10423,,,,,, 559,849,1,20,1,,30,,,,,,,,,,,,,,0,0,0,0,,,10343,,,,,23081406, -560,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,10426,,,,,,EC 100 % 0 == -561,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,10424,,,,,,EC 100 % 0 == +560,925,10,25,1,,25,,,,,,,,,,,,,,0,0,0,0,,,10426,,,,,,EC % 100 == 0 +561,982,1,25,1,,,,,,,887,,,,,,,,,0,0,0,0,,,10424,,,,,,EC % 100 == 0 562,902,13,24,1,,,1,,,,,,,,,,,,,0,0,0,0,,10416,10417,,,,294,, -563,266,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,EC 16 >> 10 % 4 <= -564,268,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,EC 16 >> 10 % 5 >= +563,266,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,(EC >> 16) % 10 <= 4 +564,268,1,15,1,,7,,,,,,,,,,,,,,0,0,0,0,,,,,,,,,(EC >> 16) % 10 >= 5 565,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10034,10036,,,,,, 566,413,1,8,1,,20,1,,,,,,,,,,,,,0,0,0,0,,10035,10037,,,,,, 567,809,17,19,1,,,,,,,,,,,,,,,,0,0,0,0,,,,,,,,, diff --git a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py index e35d517fb..45d8774c3 100644 --- a/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py +++ b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py @@ -24,7 +24,7 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, default="", - help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", + help_text="Condition expression using evolution variables (e.g. 'EC % 100 == 0')", max_length=100, ), ), diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index 4e997bba7..573ca29de 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -2050,7 +2050,7 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): max_length=100, blank=True, default="", - help_text="Evaluatable RPN condition expression using evolution variables (e.g. 'EC 100 % 0 ==')", + help_text="Condition expression using evolution variables (e.g. 'EC % 100 == 0')", ) diff --git a/pokemon_v2/serializers.py b/pokemon_v2/serializers.py index 6d4a4b564..1c36ad576 100644 --- a/pokemon_v2/serializers.py +++ b/pokemon_v2/serializers.py @@ -3,6 +3,7 @@ from __future__ import annotations import itertools +import re from typing import TYPE_CHECKING, Any, ClassVar, Protocol, cast from django.db.models import Q @@ -3430,8 +3431,8 @@ def get_allowed_natures(self, obj: PokemonEvolution) -> list[dict[str, Any]] | N def get_condition_expression(self, obj: PokemonEvolution) -> dict[str, Any] | None: if not obj.condition_expression: return None - tokens = obj.condition_expression.split() - variables = EvolutionVariable.objects.filter(symbol__in=tokens) + symbols = re.findall(r"[A-Za-z_]+", obj.condition_expression) + variables = EvolutionVariable.objects.filter(symbol__in=symbols) return { "expression": obj.condition_expression, "variables": EvolutionVariableSummarySerializer(variables, many=True, context=self.context).data,