diff --git a/data/v2/build.py b/data/v2/build.py index 07bab11ac..012118c12 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]), @@ -1820,32 +1865,18 @@ 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, + nature_bitmask=int(info[31]) if info[31] != "" else None, + condition_expression=info[32], ) 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..03accb5c7 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,7 @@ 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 +18,5,Non classé +18,9,Unclassified diff --git a/data/v2/csv/evolution_triggers.csv b/data/v2/csv/evolution_triggers.csv index 1cbc2cf04..66d31b3db 100644 --- a/data/v2/csv/evolution_triggers.csv +++ b/data/v2/csv/evolution_triggers.csv @@ -8,10 +8,12 @@ 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 +18,unclassified 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..ab247dffd 100644 --- a/data/v2/csv/pokemon_evolution.csv +++ b/data/v2/csv/pokemon_evolution.csv @@ -1,554 +1,577 @@ -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,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,,,,,,,,, +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,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 +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,,,,,, +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,,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,,,,,,,,, +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,,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,,,,,,,,, +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,,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,,,,,,,,, +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,,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,,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,,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,,,,,,,,, +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,,,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,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,,,,,, +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,,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,,,,,, +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,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,,,,,,,,, +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,,,,,, +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,,,,,, 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..963454107 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: @@ -7258,10 +7413,10 @@ components: type: boolean region: $ref: '#/components/schemas/RegionSummary' - base_form: - $ref: '#/components/schemas/PokemonSummary' - evolved_form: - $ref: '#/components/schemas/PokemonSummary' + required_pokemon_form: + $ref: '#/components/schemas/PokemonFormSummary' + evolved_pokemon_form: + $ref: '#/components/schemas/PokemonFormSummary' used_move: $ref: '#/components/schemas/MoveSummary' min_move_count: @@ -7282,9 +7437,21 @@ components: - 'null' maximum: 2147483647 minimum: -2147483648 + allowed_natures: + type: array + items: + $ref: '#/components/schemas/NatureSummary' + readOnly: true + condition_expression: + type: + - object + - 'null' + additionalProperties: {} + readOnly: true required: - - base_form - - evolved_form + - allowed_natures + - condition_expression + - evolved_pokemon_form - held_item - item - known_move @@ -7293,6 +7460,7 @@ components: - party_species - party_type - region + - required_pokemon_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..45d8774c3 --- /dev/null +++ b/pokemon_v2/migrations/0036_pokemonevolution_condition_expression_and_more.py @@ -0,0 +1,170 @@ +# 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.RemoveField( + model_name="pokemonevolution", + name="base_form", + ), + migrations.RemoveField( + model_name="pokemonevolution", + name="evolved_form", + ), + migrations.AddField( + model_name="pokemonevolution", + name="condition_expression", + field=models.CharField( + blank=True, + default="", + help_text="Condition expression using evolution variables (e.g. 'EC % 100 == 0')", + max_length=100, + ), + ), + migrations.AddField( + model_name="pokemonevolution", + name="nature_bitmask", + 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_pokemon_form", + field=models.ForeignKey( + blank=True, + 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", + to="pokemon_v2.pokemonform", + ), + ), + migrations.AddField( + model_name="pokemonevolution", + name="evolved_pokemon_form", + field=models.ForeignKey( + blank=True, + 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", + 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..573ca29de 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -1,10 +1,11 @@ # pyright: reportIncompatibleVariableOverride=false +# ruff: noqa: E501 from __future__ import annotations 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 +47,9 @@ "EvolutionChain", "EvolutionTrigger", "EvolutionTriggerName", + "EvolutionVariable", + "EvolutionVariableDescription", + "EvolutionVariableName", "Experience", "Gender", "Generation", @@ -62,6 +66,7 @@ "HasEncounterCondition", "HasEncounterMethod", "HasEvolutionTrigger", + "HasEvolutionVariable", "HasFlavorText", "HasFlingEffect", "HasGameIndex", @@ -250,7 +255,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 +427,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 +1798,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 # #################### @@ -1983,22 +2014,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 (null = any form; 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 (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) @@ -2009,6 +2040,19 @@ class PokemonEvolution(HasEvolutionTrigger, HasGender): min_damage_taken = models.IntegerField(blank=True, null=True) + nature_bitmask = 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="Condition expression using evolution variables (e.g. 'EC % 100 == 0')", + ) + 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..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 @@ -81,6 +82,10 @@ class PokemonWithRelations(Protocol): "EvolutionTriggerDetailSerializer", "EvolutionTriggerNameSerializer", "EvolutionTriggerSummarySerializer", + "EvolutionVariableDescriptionSerializer", + "EvolutionVariableDetailSerializer", + "EvolutionVariableNameSerializer", + "EvolutionVariableSummarySerializer", "ExperienceSerializer", "GenderDetailSerializer", "GenderPokemonSpeciesSerializer", @@ -340,6 +345,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 @@ -2968,7 +2979,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 +3199,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() @@ -3333,9 +3372,11 @@ class PokemonEvolutionSerializer(serializers.ModelSerializer[PokemonEvolution]): location = LocationSummarySerializer() trigger = EvolutionTriggerSummarySerializer(source="evolution_trigger") region = RegionSummarySerializer() - base_form = PokemonSummarySerializer() - evolved_form = PokemonSummarySerializer() + required_pokemon_form = PokemonFormSummarySerializer() + evolved_pokemon_form = PokemonFormSummarySerializer() used_move = MoveSummarySerializer() + allowed_natures = serializers.SerializerMethodField("get_allowed_natures") + condition_expression = serializers.SerializerMethodField("get_condition_expression") class Meta: model = PokemonEvolution @@ -3363,14 +3404,40 @@ class Meta: "trade_species", "turn_upside_down", "region", - "base_form", - "evolved_form", + "required_pokemon_form", + "evolved_pokemon_form", "used_move", "min_move_count", "min_steps", "min_damage_taken", + "allowed_natures", + "condition_expression", ) + @extend_schema_field(NatureSummarySerializer(many=True)) + 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.nature_bitmask & (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 + 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, + } + 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..5b1fed0bd 100644 --- a/pokemon_v2/test_models.py +++ b/pokemon_v2/test_models.py @@ -37,6 +37,61 @@ 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_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: + 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): + 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( + required_pokemon_form_id, + valid_form_ids, + f"Row {row['id']}: '{required_pokemon_form_id=}' doesn't exist in pokemon_forms.csv", + ) + if evolved_pokemon_form_id: + self.assertIn( + 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): + 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/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, 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/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"] 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]]